From c5d826a747e16acabd2b723a23ab98dc37da2e94 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Thu, 26 May 2016 13:46:57 +0800 Subject: [PATCH 01/31] api level --- .../src/com/fr/design/chart/fun/IndependentChartUIProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java b/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java index e2afed9948..a919143967 100644 --- a/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java +++ b/designer_chart/src/com/fr/design/chart/fun/IndependentChartUIProvider.java @@ -22,7 +22,7 @@ public interface IndependentChartUIProvider extends Level { String XML_TAG = "IndependentChartUIProvider"; - int CURRENT_API_LEVEL = 2; + int CURRENT_API_LEVEL = 3; /** * 图表的类型定义界面类型,就是属性表的第一个界面 From e9b6598f8704495794602f8575991368638e71aa Mon Sep 17 00:00:00 2001 From: fr_shine Date: Thu, 26 May 2016 19:12:34 +0800 Subject: [PATCH 02/31] APIlevel --- .../fun/impl/AbstractIndependentChartUIWithAPILevel.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java index b1361b21f6..ffe91cd0d0 100644 --- a/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java +++ b/designer_chart/src/com/fr/design/chart/fun/impl/AbstractIndependentChartUIWithAPILevel.java @@ -15,9 +15,13 @@ import com.fr.general.ComparatorUtils; * Created by Mitisky on 16/3/7. */ public abstract class AbstractIndependentChartUIWithAPILevel implements IndependentChartUIProvider { + private static final int OLD_PLUGIN_LEVEL = -2; + @Override + //以前的插件没有覆写这个方法,所以始终获取到-2,比当前level低,提示更新. + //新的插件编译进去的是当前LEVEL,当之后LEVEL增加,会比编译进去的LEVEL大,提示更新. public int currentAPILevel() { - return CURRENT_API_LEVEL; + return OLD_PLUGIN_LEVEL; } public AbstractChartAttrPane[] getAttrPaneArray(AttributeChangeListener listener){ From a0d9a7b1418ef1ff1097f5ef05edb9c094d2fe13 Mon Sep 17 00:00:00 2001 From: xiaohu Date: Thu, 26 May 2016 21:16:00 +0800 Subject: [PATCH 03/31] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E9=A1=AF=E7=A4=BA=E6=BB=BE=E5=8B=95=E6=A2=9D=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/dialog/BasicScrollPane.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/dialog/BasicScrollPane.java b/designer_base/src/com/fr/design/dialog/BasicScrollPane.java index 7ff1bab92a..d4fabca8b1 100644 --- a/designer_base/src/com/fr/design/dialog/BasicScrollPane.java +++ b/designer_base/src/com/fr/design/dialog/BasicScrollPane.java @@ -153,8 +153,9 @@ public abstract class BasicScrollPane extends BasicBeanPane{ scrollBar.setEnabled(false); scrollBar.setVisible(false); } else { - scrollBar.setEnabled(true); - scrollBar.setVisible(true); + boolean show = isShowScrollBar(); + scrollBar.setEnabled(show); + scrollBar.setVisible(show); } maxheight = getHeight() - DET_HEIGHT; if ((MAXVALUE - scrollBar.getVisibleAmount()) == 0) { @@ -179,7 +180,11 @@ public abstract class BasicScrollPane extends BasicBeanPane{ } leftcontentPane.validate(); } - } + } + + protected boolean isShowScrollBar() { + return true; + } @Override public T updateBean() { From 11d33dfd80714f11d9f6838b9e451c35b2ff73a4 Mon Sep 17 00:00:00 2001 From: xiaxiang <1438003374@qq.com> Date: Mon, 30 May 2016 16:03:56 +0800 Subject: [PATCH 04/31] rt --- .../report/ReportMobileAttrAction.java | 2 +- .../report/mobile/AppFitBrowserPane.java | 89 +++++++++++++++++++ .../report/mobile/AppFitPreviewPane.java | 71 +++++++++++++++ .../report/mobile/ReportMobileAttrPane.java | 33 +++---- 4 files changed, 172 insertions(+), 23 deletions(-) create mode 100644 designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java create mode 100644 designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java diff --git a/designer/src/com/fr/design/actions/report/ReportMobileAttrAction.java b/designer/src/com/fr/design/actions/report/ReportMobileAttrAction.java index 3248370ef6..2bf3856908 100644 --- a/designer/src/com/fr/design/actions/report/ReportMobileAttrAction.java +++ b/designer/src/com/fr/design/actions/report/ReportMobileAttrAction.java @@ -45,7 +45,7 @@ public class ReportMobileAttrAction extends JWorkBookAction{ final ReportMobileAttrPane mobileAttrPane = new ReportMobileAttrPane(); mobileAttrPane.populateBean(mobileAttr); - BasicDialog dialog = mobileAttrPane.showMediumWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { + BasicDialog dialog = mobileAttrPane.showWindow(DesignerContext.getDesignerFrame(), new DialogActionAdapter() { @Override public void doOk() { wbTpl.setReportMobileAttr(mobileAttrPane.updateBean()); diff --git a/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java b/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java new file mode 100644 index 0000000000..7714a6bac5 --- /dev/null +++ b/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java @@ -0,0 +1,89 @@ +package com.fr.design.report.mobile; + +import com.fr.base.mobile.MobileFitAttrState; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.Inter; +import com.fr.report.mobile.ElementCaseMobileAttr; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * Created by 夏翔 on 2016/5/28. + */ +public class AppFitBrowserPane extends BasicBeanPane { + //横屏设置面板 + private MobileRadioGroupPane horizionPane; + //竖屏设置面板 + private MobileRadioGroupPane verticalPane; + //效果预览面板 + private AppFitPreviewPane appFitPreviewPane; + + + public AppFitBrowserPane(){ + initComponents(); + + } + + private void initComponents() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel borderPane = FRGUIPaneFactory.createTitledBorderPane(this.title4PopupWindow()); + JPanel fitOpsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + horizionPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Horizontal")); + verticalPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Vertical")); + fitOpsPane.add(horizionPane, BorderLayout.NORTH); + fitOpsPane.add(verticalPane, BorderLayout.SOUTH); + borderPane.add(fitOpsPane); + this.add(borderPane); + + } + + public void setAppFitPreviewPane(AppFitPreviewPane appFitPreviewPane) { + this.appFitPreviewPane = appFitPreviewPane; + } + + //纵向和横向独立设置 + public int[] getCurrentFitOptions() { + return new int[]{horizionPane.getSelectRadioIndex(), verticalPane.getSelectRadioIndex()}; + } + + @Override + public void populateBean(ElementCaseMobileAttr ob) { + if (ob == null) { + ob = new ElementCaseMobileAttr(); + } + ActionListener actionListener = getAppPreviewActionListener(); + horizionPane.addActionListener(actionListener); + verticalPane.addActionListener(actionListener); + horizionPane.populateBean(ob.getHorziontalAttr()); + verticalPane.populateBean(ob.getVerticalAttr()); + appFitPreviewPane.refreshPreview(getCurrentFitOptions()); + + } + + @Override + public ElementCaseMobileAttr updateBean() { + MobileFitAttrState horizonState = horizionPane.updateBean(); + MobileFitAttrState verticalState = verticalPane.updateBean(); + + return new ElementCaseMobileAttr(horizonState, verticalState); + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Designer_Fit-App"); + } + + private ActionListener getAppPreviewActionListener() { + return new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int[] fitOptions = getCurrentFitOptions(); + appFitPreviewPane.refreshPreview(fitOptions); + } + }; + } +} diff --git a/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java b/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java new file mode 100644 index 0000000000..86bcdf6adf --- /dev/null +++ b/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java @@ -0,0 +1,71 @@ +package com.fr.design.report.mobile; + +import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.IOUtils; +import com.fr.general.Inter; + +import javax.swing.*; +import java.util.ArrayList; + +/** + * Created by 夏翔 on 2016/5/28. + */ +public class AppFitPreviewPane extends BasicPane{ + + private UILabel horizontalImageLabel; + + private UILabel verticalImagelabel; + + private ArrayList cachedVerticalPreviewImage = new ArrayList(); + + private ArrayList cachedHorizonPreviewImage = new ArrayList(); + + + public AppFitPreviewPane() { + //初始化缓存图片 + initCacheImage(); + //初始化组件 + initComponents(); + } + + private void initCacheImage() { + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "V0.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "V1.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "V2.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "V3.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "H0.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "H1.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "H2.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "H3.png"))); + } + + private void initComponents() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + + JPanel outnorthPane = FRGUIPaneFactory.createTitledBorderPane(this.title4PopupWindow()); + this.add(outnorthPane); + + horizontalImageLabel = new UILabel(); + horizontalImageLabel.setIcon(cachedHorizonPreviewImage.get(1)); + outnorthPane.add(horizontalImageLabel); + + verticalImagelabel = new UILabel(); + verticalImagelabel.setIcon(cachedVerticalPreviewImage.get(0)); + outnorthPane.add(verticalImagelabel); + } + + public void refreshPreview(int[] index) { + ImageIcon newHorizonImageIcon = cachedHorizonPreviewImage.get(index[0]) ; + ImageIcon newVerticalImageIcon = cachedVerticalPreviewImage.get(index[1]); + horizontalImageLabel.setIcon(newHorizonImageIcon); + verticalImagelabel.setIcon(newVerticalImageIcon); + + } + + @Override + protected String title4PopupWindow() { + return Inter.getLocText("FR-Plugin_Preview"); + } +} diff --git a/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java b/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java index 67f0ab825b..1d2d399319 100644 --- a/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java +++ b/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java @@ -1,40 +1,33 @@ package com.fr.design.report.mobile; import com.fr.design.beans.BasicBeanPane; -import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.Inter; import com.fr.report.mobile.ElementCaseMobileAttr; -import com.fr.base.mobile.MobileFitAttrState; import javax.swing.*; -import java.awt.*; /** * Created by Administrator on 2016/5/12/0012. */ public class ReportMobileAttrPane extends BasicBeanPane{ - //横屏设置面板 - private MobileRadioGroupPane horizionPane; - //竖屏设置面板 - private MobileRadioGroupPane verticalPane; + + private AppFitBrowserPane appFitBrowserPane; public ReportMobileAttrPane() { initComponents(); } private void initComponents() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - JPanel borderPane = FRGUIPaneFactory.createTitledBorderPane(this.title4PopupWindow()); + this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + AppFitPreviewPane appFitPreviewPane = new AppFitPreviewPane(); - JPanel fitOpsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - horizionPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Horizontal")); - verticalPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Vertical")); - fitOpsPane.add(horizionPane, BorderLayout.NORTH); - fitOpsPane.add(verticalPane, BorderLayout.SOUTH); + appFitBrowserPane = new AppFitBrowserPane(); + appFitBrowserPane.setAppFitPreviewPane(appFitPreviewPane); + this.add(appFitBrowserPane); - borderPane.add(fitOpsPane); - this.add(borderPane); + this.add(appFitPreviewPane); } @Override @@ -42,17 +35,13 @@ public class ReportMobileAttrPane extends BasicBeanPane{ if (ob == null) { ob = new ElementCaseMobileAttr(); } + appFitBrowserPane.populateBean(ob); - horizionPane.populateBean(ob.getHorziontalAttr()); - verticalPane.populateBean(ob.getVerticalAttr()); } @Override public ElementCaseMobileAttr updateBean() { - MobileFitAttrState horizonState = horizionPane.updateBean(); - MobileFitAttrState verticalState = verticalPane.updateBean(); - - return new ElementCaseMobileAttr(horizonState, verticalState); + return appFitBrowserPane.updateBean(); } @Override From f2b3034ddbeb377a60999972d20185bd385dc3a3 Mon Sep 17 00:00:00 2001 From: xiaxiang <1438003374@qq.com> Date: Mon, 30 May 2016 16:13:51 +0800 Subject: [PATCH 05/31] rt --- .../src/com/fr/design/report/mobile/AppFitBrowserPane.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java b/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java index 7714a6bac5..8a28187a11 100644 --- a/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java +++ b/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java @@ -34,6 +34,9 @@ public class AppFitBrowserPane extends BasicBeanPane { JPanel fitOpsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); horizionPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Horizontal")); verticalPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Vertical")); + ActionListener actionListener = getAppPreviewActionListener(); + horizionPane.addActionListener(actionListener); + verticalPane.addActionListener(actionListener); fitOpsPane.add(horizionPane, BorderLayout.NORTH); fitOpsPane.add(verticalPane, BorderLayout.SOUTH); borderPane.add(fitOpsPane); @@ -55,9 +58,6 @@ public class AppFitBrowserPane extends BasicBeanPane { if (ob == null) { ob = new ElementCaseMobileAttr(); } - ActionListener actionListener = getAppPreviewActionListener(); - horizionPane.addActionListener(actionListener); - verticalPane.addActionListener(actionListener); horizionPane.populateBean(ob.getHorziontalAttr()); verticalPane.populateBean(ob.getVerticalAttr()); appFitPreviewPane.refreshPreview(getCurrentFitOptions()); From 4d5eb1708cdd0dec33f522743d08367b4705b599 Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 31 May 2016 09:46:44 +0800 Subject: [PATCH 06/31] =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=BF=A1=E6=81=AF=E8=8E=B7=E5=8F=96=E9=97=AE?= =?UTF-8?q?=E9=A2=981/3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 48 +++++++++++++++------ 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index b146e146f8..24ec3a4a30 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -28,6 +28,8 @@ import com.fr.json.JSONArray; import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.plugin.Plugin; +import com.fr.plugin.PluginLicense; +import com.fr.plugin.PluginLicenseManager; import com.fr.plugin.PluginLoader; import com.fr.stable.*; import com.fr.stable.file.XMLFileManagerProvider; @@ -2044,25 +2046,45 @@ public class RemoteEnv implements Env { } - public InputStream readPluginConfig() throws Exception { + private void readPlugins() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); HashMap para = new HashMap(); para.put("op", "fr_remote_design"); - para.put("cmd", "design_get_plugin_info"); + para.put("cmd", "design_plugins"); + + InputStream inputStream = postBytes2ServerB(out.toByteArray(), para); + String pluginsStr = IOUtils.inputStream2String(inputStream, EncodeConstants.ENCODING_UTF_8); + if(StringUtils.isNotBlank(pluginsStr) && pluginsStr.startsWith("[")){ + JSONArray jsonArray = new JSONArray(pluginsStr); + for (int i = 0; i < jsonArray.length(); i++) { + Plugin plugin = new Plugin(); + plugin.parseJSON(jsonArray.getJSONObject(i)); + PluginLoader.getLoader().addRemotePlugin(plugin); + } + } + } - return postBytes2ServerB(out.toByteArray(), para); + private void readPluginLicenses() throws Exception { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + HashMap para = new HashMap(); + para.put("op", "fr_remote_design"); + para.put("cmd", "design_plugin_licenses"); + + InputStream inputStream = postBytes2ServerB(out.toByteArray(), para); + String pluginsLicensesStr = IOUtils.inputStream2String(inputStream, EncodeConstants.ENCODING_UTF_8); + if(StringUtils.isNotBlank(pluginsLicensesStr) && pluginsLicensesStr.startsWith("[")) { + JSONArray jsonArray = new JSONArray(pluginsLicensesStr); + for (int i = 0; i < jsonArray.length(); i++) { + PluginLicense pluginLicense = new PluginLicense(); + pluginLicense.parseJSON(jsonArray.getJSONObject(i)); + PluginLicenseManager.getInstance().addRemotePluginLicense(pluginLicense); + } + } } - /** - * 远程设计先不需要检测MD5 - * - * @return 是否正确 - * @throws Exception MD5算法异常 - */ @Override - public boolean isTruePluginMD5(Plugin plugin, File file) throws Exception { - return true; + public void readPluginConfig() throws Exception { + readPlugins(); + readPluginLicenses(); } - - } \ No newline at end of file From 363c8ec7460cc3da3340dc225cb9dad22050a0f5 Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 31 May 2016 09:47:17 +0800 Subject: [PATCH 07/31] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 24ec3a4a30..6f7d1e3b7b 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2054,7 +2054,7 @@ public class RemoteEnv implements Env { InputStream inputStream = postBytes2ServerB(out.toByteArray(), para); String pluginsStr = IOUtils.inputStream2String(inputStream, EncodeConstants.ENCODING_UTF_8); - if(StringUtils.isNotBlank(pluginsStr) && pluginsStr.startsWith("[")){ + if (StringUtils.isNotBlank(pluginsStr) && pluginsStr.startsWith("[")) { JSONArray jsonArray = new JSONArray(pluginsStr); for (int i = 0; i < jsonArray.length(); i++) { Plugin plugin = new Plugin(); @@ -2072,7 +2072,7 @@ public class RemoteEnv implements Env { InputStream inputStream = postBytes2ServerB(out.toByteArray(), para); String pluginsLicensesStr = IOUtils.inputStream2String(inputStream, EncodeConstants.ENCODING_UTF_8); - if(StringUtils.isNotBlank(pluginsLicensesStr) && pluginsLicensesStr.startsWith("[")) { + if (StringUtils.isNotBlank(pluginsLicensesStr) && pluginsLicensesStr.startsWith("[")) { JSONArray jsonArray = new JSONArray(pluginsLicensesStr); for (int i = 0; i < jsonArray.length(); i++) { PluginLicense pluginLicense = new PluginLicense(); From c432e9c29593b16cccbbbbfd565528748e20e145 Mon Sep 17 00:00:00 2001 From: zhouping Date: Wed, 1 Jun 2016 10:15:37 +0800 Subject: [PATCH 08/31] =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E7=9A=84=E6=97=B6=E5=80=99=E9=9C=80=E8=A6=81=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E4=B8=80=E4=B8=8BfireServletStopListener=EF=BC=8C?= =?UTF-8?q?=E5=90=A6=E5=88=99=E6=9C=AC=E5=9C=B0=E7=9A=84=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E8=BF=98=E5=8E=9F=E5=8A=9F=E8=83=BD=E6=B2=A1=E6=B3=95=E4=BD=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/start/Designer.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/designer/src/com/fr/start/Designer.java b/designer/src/com/fr/start/Designer.java index cea1421269..09b7fa76e0 100644 --- a/designer/src/com/fr/start/Designer.java +++ b/designer/src/com/fr/start/Designer.java @@ -35,6 +35,7 @@ import com.fr.general.Inter; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; +import com.fr.stable.web.ServletContext; import com.fr.stable.xml.XMLTools; import javax.swing.*; @@ -431,6 +432,7 @@ public class Designer extends BaseDesigner { InformationCollector collector = InformationCollector.getInstance(); collector.collectStopTime(); collector.saveXMLFile(); + ServletContext.fireServletStopListener(); } } \ No newline at end of file From 19efd5e01c4846836086c002abb2505912470837 Mon Sep 17 00:00:00 2001 From: xiaxiang <1438003374@qq.com> Date: Thu, 2 Jun 2016 19:04:47 +0800 Subject: [PATCH 09/31] rt --- .../design/report/mobile/AppFitPreviewPane.java | 16 ++++++++-------- .../com/fr/design/images/dialog/appfit/H0.png | Bin 0 -> 745 bytes .../com/fr/design/images/dialog/appfit/H1.png | Bin 0 -> 810 bytes .../com/fr/design/images/dialog/appfit/H2.png | Bin 0 -> 837 bytes .../com/fr/design/images/dialog/appfit/H3.png | Bin 0 -> 779 bytes .../com/fr/design/images/dialog/appfit/V0.png | Bin 0 -> 815 bytes .../com/fr/design/images/dialog/appfit/V1.png | Bin 0 -> 818 bytes .../com/fr/design/images/dialog/appfit/V2.png | Bin 0 -> 890 bytes .../com/fr/design/images/dialog/appfit/V3.png | Bin 0 -> 842 bytes 9 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 designer_base/src/com/fr/design/images/dialog/appfit/H0.png create mode 100644 designer_base/src/com/fr/design/images/dialog/appfit/H1.png create mode 100644 designer_base/src/com/fr/design/images/dialog/appfit/H2.png create mode 100644 designer_base/src/com/fr/design/images/dialog/appfit/H3.png create mode 100644 designer_base/src/com/fr/design/images/dialog/appfit/V0.png create mode 100644 designer_base/src/com/fr/design/images/dialog/appfit/V1.png create mode 100644 designer_base/src/com/fr/design/images/dialog/appfit/V2.png create mode 100644 designer_base/src/com/fr/design/images/dialog/appfit/V3.png diff --git a/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java b/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java index 86bcdf6adf..f399f01400 100644 --- a/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java +++ b/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java @@ -31,14 +31,14 @@ public class AppFitPreviewPane extends BasicPane{ } private void initCacheImage() { - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "V0.png"))); - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "V1.png"))); - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "V2.png"))); - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "V3.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "H0.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "H1.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "H2.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/base/images/dialog/appfit/" + "H3.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "V0.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "V1.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "V2.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "V3.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "H0.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "H1.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "H2.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "H3.png"))); } private void initComponents() { diff --git a/designer_base/src/com/fr/design/images/dialog/appfit/H0.png b/designer_base/src/com/fr/design/images/dialog/appfit/H0.png new file mode 100644 index 0000000000000000000000000000000000000000..cc90692cca5b0cdcbddf02d95bc0886663d88ff0 GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP2NRIoyR*y)NO2Z;L>4nJa0`PlBg3pY53*g3ZaI(d5|QnLDbsb`-57xd1 zDwxE4{enV7G%paOhHf@TWpEG?Yqy<;>78Hu%sGmF2qrMFept4; UtBgerm`oWwUHx3vIVCg!01R<7lmGw# literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/dialog/appfit/H1.png b/designer_base/src/com/fr/design/images/dialog/appfit/H1.png new file mode 100644 index 0000000000000000000000000000000000000000..47165240ed080bf2612aac6c4efac51fa1fc3225 GIT binary patch literal 810 zcmeAS@N?(olHy`uVBq!ia0vp^AAooP2NRIoyR*y)NO2Z;L>4nJa0`PlBg3pY5~)xto}`%0Z;z z;;jvA;g7Upg#RaaKi0Z4xz$f4Q+Xct%xz^V||Nj+~ zpSsR+d-}qEWmjk4*PS=7IQIJGY{&l`hV^GJOJ0(Z>r=PbC*lA3QF>&_Il-k<{0vQe zi~n22$JqS&x>Tvd_(|n+ncORP=d6B^eKKOZR!dd6cIo7AKjtvs>)YYzuRito@|Oz5 zeU-{)ceP}nzj(B|diTp&hB5x%%fw&%PUv*Emf!Wj@;KM75I&pu+;esj3pJYDz+T{x zf_ed`Z`x*lVLv;A>FA5|+lp75zcgpgmRoajEjP47{EqHnHb-S(z<@)*XymVK4nJa0`PlBg3pY5~)xf__b%0Z$b zaBm^+nj@h*)b1sCA6857-+M>kq)XH~pXDcR6i+gn5%pW#E>TF{qFuo6&xTd2-n7)l z99w_;ZPFTKKv*(mu9d?|kv+Z$-Ah z3i|GZc;1?u5^qslxP71QbpxK|kHRY0(o%WfHjCctS^)I}%;9ivb4WqGjWYz=QvT;j zT`7%?bQU)^*v%GuO*gk|H+%o~`Ks)|u%IaTgqnfDclz_~-Ln5q#uzW(D^wyU2odGoPnt{knh>ey^5>)%}{fmihUt zpELh!TtBen;1n6xlm#s u?s>w2$mV$Xu4PMt{+})24nJa0`PlBg3pY5~)xs&L(+Cik@ z;F+v`>* zY)s4B_u|f#lHXk`~30C2QM$j@4s3V&E98SeBcHnv+%O_zrCltzJI4e)%r*Nll^Djq%HnX z{o?7(xqd$<`qz9olV!K>^AGOA*T0|c-zy&*_gwDy>E9QZXFplyb?DxM`32A3{8Lhl zKWxy#GB>QRexuThyG`E?ak&bbfL-l)fkO)Dfwu5pHTv$?ODlQj-aYU}YD@Se+rM{; z8j$@5Q8|-s?qjv{9n!)6m3g!N*iXupKU*?+`K)d(tK+`&Hm2E~HEVnMY{#WMdEN+z zSy{hdoVvSYTmQfNZx^5DPFZ!kZL0D4_4l`#O{?UW-FDJAS0K?i`u_Y@liTjo%{RSX zddp7gPtKM#h34D(rFLvtuy=z~AWJXU4FVw79)1{c%_Gt=JT&zBR(7WCG71?2Ch%AQ zt3ZhmsMkPoBM4LnjwWTW7Pz70>E>;614cVpcE5RZ=lfpw#-th!1BR8N+ZU(aOWh4j O$PAvYelF{r5}E+I>q!Ox literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/dialog/appfit/V0.png b/designer_base/src/com/fr/design/images/dialog/appfit/V0.png new file mode 100644 index 0000000000000000000000000000000000000000..51b49ea029c5179d7d2c3b2129ec053f9faf659b GIT binary patch literal 815 zcmeAS@N?(olHy`uVBq!ia0vp^3xN0o2NRIwQ2x;iq&N#aB8wRqxP?KOkzv*x380{4 ziEBhjaDG}zd16s2gJVj5QmTSyZen_BP-{iITS5H4zE>vv|`}1jrcVM19&tbp9*UQ#le)&c1 za@_js-zCk?{(fjGXMLc7H3Etlxj+2WubA}b7fLCw`gr;CHEYG+FSYc3Oa8c9ed*Iy z8+rZrp61sb51!1fd2s*7p52eOFP&DsI`Q(JdoMn?wKH&U03(Bh*3A6Rk#BPBxb4=f z-m-{@d%$R?e^9Vrsf;_lA3UyA9S)6=%p#-X2^1`Q0X2y{Ge2Pw(c= zezPsRp#0&fz3msv#P#%>boDlCKR>(veVKW~|CW++-714)W$$;NKO6mBzE5g(*uH0H zY$J|L^A7$O-kWcyZIr)P_0~J5-P})m`546#K!|OP!Oa@6J?{!EWcuCJl~NvCL@m18 zj1;;M*Kc58hNuUV2bgrA2ss{LD!C27CZnsI%S4toxKkhj1r1B6>%|ffW-{@h1}QY) z5$b1d{X|bQvUVz4KT4Yc)I$ztaD0e F0sx1XLl^)6 literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/dialog/appfit/V1.png b/designer_base/src/com/fr/design/images/dialog/appfit/V1.png new file mode 100644 index 0000000000000000000000000000000000000000..82a9e019d074972ea0aa8a8ae7fadd0553a0eec7 GIT binary patch literal 818 zcmeAS@N?(olHy`uVBq!ia0vp^3xN0o2NRIwQ2x;iq&N#aB8wRqxP?KOkzv*x380{4 ziEBhjaDG}zd16s2gJVj5QmTSyZen_BP-uksH3T(-Z}{_wJ<&D*{n ztGvA}R!*FKPQs<{Uv$)0y*&O?<#Y4TknsBGA5W!C^Vj{__rLFTjh(%nAA7j{zn=kt zNBN|!^ZOt$aYr}Go9wCd zkJ>kF`QxXyFJD=4%&|GXT#I{txp-Z)*3Nz@v$L;z`SMFRHZX955!~T-^Yf*b?%LcN z^z?JoqPxwk5e*Q;2vG+lnZ+K6PTij$GV`nO!NCfx$|{?r<|0Qg#;!O56nHK_O~@cWD5$4^UPJhc+W@P|xlCkfg9jX|1T2iPTY&Hql1fl0 u!(0PTNl=wvAISMb*3S0ioT#gPdFA67&waNYTr-tlPEzWB1)t)aFQ>QWMrU0= z`}Y3VsrgvseNn1hMHHV1gi?hz3>|V&vYy072MP z>Ks5(c~7Q7qAljU{jZ>tPiIyBSf%t}*@?K?I#9q(cexJ+Y(2@BcImA~zefUdf zjrq0oC-2JVe@HuJT3p*IVApr$``>?McXm|&xIevW&tm51b1f6!v@{l*`UX#~-MDw} z<@g%b-zU$A>Yl57ckuS&-sKOb`n!BObM@sttNUUT7RNvPdH(m!Z&nf8wtwHeJNw0j zNbld@E;bp9|Jik=a-Kiydx1>J9~W$Iu*=%L5TK%;U%h%So(v4v>ld!_#z^eAa@|bz zb(r}E)hJNNU<*C51XwsDhaRg0ES$LwV6H<}$;4A}+khu>o_)>NmgY02#kW>ZU8}k2 z`fbZsyYhDb{dIL|wSz-bd&OVyn^=wvUWm@Vn#g=~MueJO4%bLHF ztNR{g{r`8YJNr4)&&uvovLD3wUcQnNzv)r+pNZKe)r?c4(&Xn<*4ADxivFqj;hV+u z(wyfaQ*0eGjl+MrAJ)u08ofT;+nW19S!DG8YraGB5b&Q6zEp6Q!oJHHhR zzNCZfC6uHCO=PH^U$e`qU0_b@{dKvwgLeNDNnrRa_UF;wIf1u;`G&#M)z4*}Q$iB} Dq5Ef@ literal 0 HcmV?d00001 diff --git a/designer_base/src/com/fr/design/images/dialog/appfit/V3.png b/designer_base/src/com/fr/design/images/dialog/appfit/V3.png new file mode 100644 index 0000000000000000000000000000000000000000..2a0e75c1666d0130f55ba578c401d715741989f7 GIT binary patch literal 842 zcmeAS@N?(olHy`uVBq!ia0vp^3xN0o2NRIwQ2x;iq&N#aB8wRqxP?KOkzv*x380{4 ziEBhjaDG}zd16s2gJVj5QmTSyZen_BP-z*!-Ar-gY+)ea5WFXP- zFwx?$-yuy4;r|c3ZmYhSTas27DY0nv)L&pK<=g+3$7_PljZj`S@zryHelhpMQS* zSW)o#<@EBef3NZFcr(MeZLZ;ipxE`-Yd;<>t628`qv#v;WWFsH(|5Az*WW7S`uE8t zrQdSSy9;>{4%hb8*L|@C_2$v~7x<9}}(^Pc5K&9k|RoNTF zt@d0{Jiw#_Mm!O-U;f?tV&D5@UaLC|+RV3Wwmn?FSoM}E%vY=u8yL7ZC^5O;Ss7m7 zo+6z4JZ9_NR>AUDri|ZRuic6L;WKG||IV3j3p!O|%F7dvu^o=u&Aor;_Y3b1J$q(T z_fKf9?X#ah_nzf_FkkU*>~T3C$Ge=Tq>C@aOU>FNn!hj3*EWJ-`srJLcF)`JNK~@; zi0Z9(PP@6EPSs%)O8_CZHD^;k-@Mj%d)wNt^*d8KK|&CxgGr>|=LR_xgqR^Z!6eL| zI!F-(@e)|E0oV>Sl}tRSo<~=S Date: Thu, 2 Jun 2016 19:23:54 +0800 Subject: [PATCH 10/31] rt --- .../design/report/mobile/AppFitPreviewPane.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java b/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java index f399f01400..3625e4ba4e 100644 --- a/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java +++ b/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java @@ -31,14 +31,14 @@ public class AppFitPreviewPane extends BasicPane{ } private void initCacheImage() { - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "V0.png"))); - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "V1.png"))); - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "V2.png"))); - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "V3.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "H0.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "H1.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "H2.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/" + "H3.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/V0.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/V1.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/V2.png"))); + cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/V3.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/H0.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/H1.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/H2.png"))); + cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/H3.png"))); } private void initComponents() { From 809dccafaa0753dcadb8d9ad36f4f6abab8567e8 Mon Sep 17 00:00:00 2001 From: Lee Date: Sat, 4 Jun 2016 17:29:22 +0800 Subject: [PATCH 11/31] =?UTF-8?q?=20=E7=A7=BB=E5=8A=A8=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E6=96=B0=E9=9C=80=E6=B1=82=E6=94=B9=E5=8A=A8=EF=BC=9A=201.=20?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E7=AB=AF=E6=9C=80=E5=A4=A7=E9=AB=98=E5=BA=A6?= =?UTF-8?q?=E9=99=90=E5=88=B6=E5=B1=9E=E6=80=A7=E8=BF=81=E7=A7=BB=E5=88=B0?= =?UTF-8?q?=E2=80=9C=E7=A7=BB=E5=8A=A8=E7=AB=AF=E5=B1=9E=E6=80=A7=E2=80=9D?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E4=B8=AD=EF=BC=8C=E5=B9=B6=E8=BF=98=E5=8E=9F?= =?UTF-8?q?=E4=B9=8B=E5=89=8D=E7=9A=84=E6=9B=B4=E6=94=B9=EF=BC=9B=202.=20?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=AB=96=E5=B1=8F=E4=B8=BA=E2=80=9C=E7=BA=B5?= =?UTF-8?q?=E5=90=91=E8=87=AA=E9=80=82=E5=BA=94=E2=80=9D=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=EF=BC=8C=E6=89=8B=E6=9C=BA=E6=98=BE=E7=A4=BA=E9=99=90?= =?UTF-8?q?=E5=88=B6=E9=AB=98=E5=BA=A6=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=8B=BE=E9=80=89=EF=BC=8C=E5=88=99=E8=87=AA=E5=8A=A8=E5=8B=BE?= =?UTF-8?q?=E9=80=89=E4=B8=8A=E2=98=91=EF=B8=8F=EF=BC=8C=E5=B9=B6=E4=B8=94?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E4=BB=A5=E7=BC=96=E8=BE=91=EF=BC=88=E7=81=B0?= =?UTF-8?q?=E5=8C=96=E6=95=88=E6=9E=9C=E6=9A=82=E6=97=B6=E8=BF=98=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=81=9A=E5=87=BA=E6=9D=A5=EF=BC=8C=E6=99=9A=E7=82=B9?= =?UTF-8?q?=E7=A0=94=E7=A9=B6=E4=B8=80=E4=B8=8B=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/creator/XElementCase.java | 48 +++----------- .../mobile/ElementCasePropertyTable.java | 64 +++++++++++++++---- .../properties/mobile/MobileFitEditor.java | 2 +- 3 files changed, 63 insertions(+), 51 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index 022d8de06d..29310ca0c3 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -25,8 +25,6 @@ import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; -import java.util.ArrayList; -import java.util.List; public class XElementCase extends XBorderStyleWidgetCreator implements FormElementCaseContainerProvider{ private UILabel imageLable; @@ -56,23 +54,14 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme * @throws IntrospectionException 异常 */ public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { - CRPropertyDescriptor[] crp = ((ElementCaseEditor) data).isHeightRestrict() ? revealHeightLimit() : getDefault(); - FormElementCaseEditorProcessor processor = ExtraDesignClassManager.getInstance().getPropertyTableEditor(); - if (processor == null) { - return crp; - } - PropertyDescriptor[] extraEditor = processor.createPropertyDescriptor(this.data.getClass()); - return (CRPropertyDescriptor[]) ArrayUtils.addAll(crp, extraEditor); - } - protected List createNonListenerProperties() throws IntrospectionException { - CRPropertyDescriptor[] propertyTableEditor = { + CRPropertyDescriptor[] propertyTableEditor = new CRPropertyDescriptor[]{ new CRPropertyDescriptor("widgetName", this.data.getClass()) .setI18NName(Inter.getLocText("Form-Widget_Name")), new CRPropertyDescriptor("borderStyle", this.data.getClass()).setEditorClass( WLayoutBorderStyleEditor.class).setRendererClass(LayoutBorderStyleRenderer.class).setI18NName( - Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"). - setPropertyChangeListener(new PropertyChangeAdapter() { + Inter.getLocText("FR-Designer-Widget_Style")).putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") + .setPropertyChangeListener(new PropertyChangeAdapter() { @Override public void propertyChange() { @@ -85,34 +74,15 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme new CRPropertyDescriptor("showToolBar", this.data.getClass()).setEditorClass(BooleanEditor.class) .setI18NName(Inter.getLocText("Form-EC_toolbar")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"), - new CRPropertyDescriptor("heightRestrict", this.data.getClass()).setEditorClass(InChangeBooleanEditor.class) - .setI18NName(Inter.getLocText("Form-EC_heightrestrict")) - .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced") - }; - List defaultList = new ArrayList<>(); + }; - for (CRPropertyDescriptor propertyDescriptor : propertyTableEditor) { - defaultList.add(propertyDescriptor); + FormElementCaseEditorProcessor processor = ExtraDesignClassManager.getInstance().getPropertyTableEditor(); + if (processor == null){ + return propertyTableEditor; } - return defaultList; - } - - protected CRPropertyDescriptor[] revealHeightLimit() throws IntrospectionException { - CRPropertyDescriptor heightLimitProperty = new CRPropertyDescriptor("heightPercent", this.data.getClass()) - .setEditorClass(DoubleEditor.class) - .setI18NName(Inter.getLocText("Form-EC_heightpercent")) - .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"); - - ArrayList defaultList = (ArrayList) createNonListenerProperties(); - defaultList.add(heightLimitProperty); - - return defaultList.toArray(new CRPropertyDescriptor[defaultList.size()]); - } - - protected CRPropertyDescriptor[] getDefault() throws IntrospectionException { - ArrayList defaultList = (ArrayList) createNonListenerProperties(); - return defaultList.toArray(new CRPropertyDescriptor[defaultList.size()]); + PropertyDescriptor[] extraEditor = processor.createPropertyDescriptor(this.data.getClass()); + return (CRPropertyDescriptor[]) ArrayUtils.addAll(propertyTableEditor, extraEditor); } diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java index 7e37fefc3a..9d4a14d5b5 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java @@ -1,6 +1,7 @@ package com.fr.design.designer.properties.mobile; import com.fr.base.FRContext; +import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.CRPropertyDescriptor; import com.fr.design.designer.creator.XCreator; import com.fr.design.form.util.XCreatorConstants; @@ -9,11 +10,15 @@ import com.fr.design.gui.itable.PropertyGroup; import com.fr.design.gui.xtable.PropertyGroupModel; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetPropertyPane; +import com.fr.design.mainframe.widget.editors.DoubleEditor; +import com.fr.design.mainframe.widget.editors.InChangeBooleanEditor; +import com.fr.form.ui.ElementCaseEditor; import com.fr.general.Inter; import javax.swing.table.TableModel; import java.beans.IntrospectionException; import java.util.ArrayList; +import java.util.List; /** * Created by Administrator on 2016/5/16/0016. @@ -27,6 +32,52 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ this.xCreator = xCreator; } + public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { + if (((ElementCaseEditor ) xCreator.toData()).getVerticalAttr().getState() == 2 && !((ElementCaseEditor ) xCreator.toData()).isHeightRestrict()) { + ((ElementCaseEditor ) xCreator.toData()).setHeightRestrict(true); + return revealHeightLimit(); + } + CRPropertyDescriptor[] crp = ((ElementCaseEditor) xCreator.toData()).isHeightRestrict() ? revealHeightLimit() : getDefault(); + return crp; + } + + protected List createNonListenerProperties() throws IntrospectionException { + CRPropertyDescriptor[] propertyTableEditor = { + new CRPropertyDescriptor("horziontalAttr", this.xCreator.toData().getClass()).setEditorClass(MobileFitEditor.class) + .setRendererClass(MobileFitRender.class) + .setI18NName(Inter.getLocText("FR-Designer_Mobile-Horizontal")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, Inter.getLocText("FR-Designer_Fit-App")), + new CRPropertyDescriptor("verticalAttr", this.xCreator.toData().getClass()).setEditorClass(MobileFitEditor.class) + .setRendererClass(MobileFitRender.class) + .setI18NName(Inter.getLocText("FR-Designer_Mobile-Vertical")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, Inter.getLocText("FR-Designer_Fit-App")), + new CRPropertyDescriptor("heightRestrict", this.xCreator.toData().getClass()).setEditorClass(InChangeBooleanEditor.class) + .setI18NName(Inter.getLocText("Form-EC_heightrestrict")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, Inter.getLocText("FR-Designer_Fit-App")) + }; + List defaultList = new ArrayList<>(); + + for (CRPropertyDescriptor propertyDescriptor: propertyTableEditor) { + defaultList.add(propertyDescriptor); + } + return defaultList; + } + + protected CRPropertyDescriptor[] revealHeightLimit() throws IntrospectionException { + CRPropertyDescriptor heightLimitProperty = new CRPropertyDescriptor("heightPercent", this.xCreator.toData().getClass()) + .setEditorClass(DoubleEditor.class) + .setI18NName(Inter.getLocText("Form-EC_heightpercent")) + .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"); + ArrayList defaultList = (ArrayList) createNonListenerProperties(); + defaultList.add(heightLimitProperty); + return defaultList.toArray(new CRPropertyDescriptor[defaultList.size()]); + } + + protected CRPropertyDescriptor[] getDefault() throws IntrospectionException { + ArrayList defaultList = (ArrayList) createNonListenerProperties(); + return defaultList.toArray(new CRPropertyDescriptor[defaultList.size()]); + } + @Override public void initPropertyGroups(Object source) { this.designer = WidgetPropertyPane.getInstance().getEditingFormDesigner(); @@ -34,17 +85,7 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ groups = new ArrayList(); CRPropertyDescriptor[] propertyTableEditor = null; try { - propertyTableEditor = new CRPropertyDescriptor[]{ - new CRPropertyDescriptor("horziontalAttr", this.xCreator.toData().getClass()).setEditorClass(MobileFitEditor.class) - .setRendererClass(MobileFitRender.class) - .setI18NName(Inter.getLocText("FR-Designer_Mobile-Horizontal")) - .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, Inter.getLocText("FR-Designer_Fit-App")), - new CRPropertyDescriptor("verticalAttr", this.xCreator.toData().getClass()).setEditorClass(MobileFitEditor.class) - .setRendererClass(MobileFitRender.class) - .setI18NName(Inter.getLocText("FR-Designer_Mobile-Vertical")) - .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, Inter.getLocText("FR-Designer_Fit-App")) - - }; + propertyTableEditor = supportedDescriptor(); } catch (IntrospectionException e) { FRContext.getLogger().error(e.getMessage()); } @@ -59,6 +100,7 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ @Override public void firePropertyEdit() { + designer.getEditListenerTable().fireCreatorModified(DesignerEvent.CREATOR_EDITED); } public void populate(FormDesigner designer) { diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java index 6591b90592..0930a8e699 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/MobileFitEditor.java @@ -45,6 +45,6 @@ public class MobileFitEditor extends ComboEditor{ */ @Override public boolean refreshInTime() { - return false; + return true; } } From cf48cc3a1e4024057729ced6f6b403fd80612aec Mon Sep 17 00:00:00 2001 From: Lee Date: Tue, 7 Jun 2016 13:52:38 +0800 Subject: [PATCH 12/31] =?UTF-8?q?=E7=BC=A9=E6=94=BE=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/mobile/AppFitBrowserPane.java | 13 ++-- .../report/mobile/MobileRadioCheckPane.java | 71 +++++++++++++++++++ 2 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 designer/src/com/fr/design/report/mobile/MobileRadioCheckPane.java diff --git a/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java b/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java index 8a28187a11..5e75639cdb 100644 --- a/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java +++ b/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java @@ -19,6 +19,8 @@ public class AppFitBrowserPane extends BasicBeanPane { private MobileRadioGroupPane horizionPane; //竖屏设置面板 private MobileRadioGroupPane verticalPane; + //缩放选项面板 + private MobileRadioCheckPane radioCheckPane; //效果预览面板 private AppFitPreviewPane appFitPreviewPane; @@ -34,11 +36,13 @@ public class AppFitBrowserPane extends BasicBeanPane { JPanel fitOpsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); horizionPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Horizontal")); verticalPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Vertical")); + radioCheckPane = new MobileRadioCheckPane(Inter.getLocText("FR-Designer_Mobile-ZOOM")); ActionListener actionListener = getAppPreviewActionListener(); horizionPane.addActionListener(actionListener); verticalPane.addActionListener(actionListener); fitOpsPane.add(horizionPane, BorderLayout.NORTH); - fitOpsPane.add(verticalPane, BorderLayout.SOUTH); + fitOpsPane.add(verticalPane, BorderLayout.CENTER); + fitOpsPane.add(radioCheckPane, BorderLayout.SOUTH); borderPane.add(fitOpsPane); this.add(borderPane); @@ -50,7 +54,7 @@ public class AppFitBrowserPane extends BasicBeanPane { //纵向和横向独立设置 public int[] getCurrentFitOptions() { - return new int[]{horizionPane.getSelectRadioIndex(), verticalPane.getSelectRadioIndex()}; + return new int[]{horizionPane.getSelectRadioIndex(), verticalPane.getSelectRadioIndex(), radioCheckPane.getCurrentState()}; } @Override @@ -60,6 +64,7 @@ public class AppFitBrowserPane extends BasicBeanPane { } horizionPane.populateBean(ob.getHorziontalAttr()); verticalPane.populateBean(ob.getVerticalAttr()); + radioCheckPane.populateBean(ob.getZoom()); appFitPreviewPane.refreshPreview(getCurrentFitOptions()); } @@ -68,8 +73,8 @@ public class AppFitBrowserPane extends BasicBeanPane { public ElementCaseMobileAttr updateBean() { MobileFitAttrState horizonState = horizionPane.updateBean(); MobileFitAttrState verticalState = verticalPane.updateBean(); - - return new ElementCaseMobileAttr(horizonState, verticalState); + boolean isZoom = radioCheckPane.updateBean(); + return new ElementCaseMobileAttr(horizonState, verticalState, isZoom); } @Override diff --git a/designer/src/com/fr/design/report/mobile/MobileRadioCheckPane.java b/designer/src/com/fr/design/report/mobile/MobileRadioCheckPane.java new file mode 100644 index 0000000000..0a6b17155a --- /dev/null +++ b/designer/src/com/fr/design/report/mobile/MobileRadioCheckPane.java @@ -0,0 +1,71 @@ +package com.fr.design.report.mobile; + +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.general.Inter; +import com.fr.stable.StringUtils; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; + +public class MobileRadioCheckPane extends BasicBeanPane { + + private List checkBoxes = new ArrayList(); + + public MobileRadioCheckPane(String title) { + initComponents(title); + } + + private void initComponents(String title) { + double p = TableLayout.PREFERRED; + double[] rowSize = {p}; + double[] columnSize = {p,p}; + + UICheckBox checkBox = new UICheckBox(Inter.getLocText("FS-CPT_ZOOM")); + checkBox.setSelected(true); + + checkBoxes.add(checkBox); + + Component[][] components = new Component[][]{ + new Component[]{new UILabel(title), checkBox} + }; + JPanel fitOpsPane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); + fitOpsPane.setBorder(BorderFactory.createEmptyBorder(10, 13, 10, 10)); + + this.add(fitOpsPane); + } + + public int getCurrentState() { + return checkBoxes.get(0).isSelected() ? 0 : 1; + } + /** + * 设置按钮状态 + */ + public void setEnabled(boolean enabled) { + for (UICheckBox checkBox : checkBoxes) { + checkBox.setEnabled(enabled); + } + } + + @Override + protected String title4PopupWindow() { + return StringUtils.EMPTY; + } + + @Override + public void populateBean(Boolean ob) { + checkBoxes.get(0).setSelected(ob); + } + + @Override + public Boolean updateBean() { + int state = getCurrentState(); + return state == 0 ? true : false; + } +} \ No newline at end of file From a70fbedd26fd25153c0beb579e908f65e48d1544 Mon Sep 17 00:00:00 2001 From: Lee Date: Tue, 7 Jun 2016 17:21:01 +0800 Subject: [PATCH 13/31] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/report/mobile/AppFitBrowserPane.java | 4 ++-- .../src/com/fr/design/report/mobile/MobileRadioCheckPane.java | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java b/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java index 5e75639cdb..43471b751d 100644 --- a/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java +++ b/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java @@ -36,7 +36,7 @@ public class AppFitBrowserPane extends BasicBeanPane { JPanel fitOpsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); horizionPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Horizontal")); verticalPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Vertical")); - radioCheckPane = new MobileRadioCheckPane(Inter.getLocText("FR-Designer_Mobile-ZOOM")); + radioCheckPane = new MobileRadioCheckPane(Inter.getLocText("FR-Designer_Mobile-Zoom")); ActionListener actionListener = getAppPreviewActionListener(); horizionPane.addActionListener(actionListener); verticalPane.addActionListener(actionListener); @@ -64,7 +64,7 @@ public class AppFitBrowserPane extends BasicBeanPane { } horizionPane.populateBean(ob.getHorziontalAttr()); verticalPane.populateBean(ob.getVerticalAttr()); - radioCheckPane.populateBean(ob.getZoom()); + radioCheckPane.populateBean(ob.isZoom()); appFitPreviewPane.refreshPreview(getCurrentFitOptions()); } diff --git a/designer/src/com/fr/design/report/mobile/MobileRadioCheckPane.java b/designer/src/com/fr/design/report/mobile/MobileRadioCheckPane.java index 0a6b17155a..9264619d32 100644 --- a/designer/src/com/fr/design/report/mobile/MobileRadioCheckPane.java +++ b/designer/src/com/fr/design/report/mobile/MobileRadioCheckPane.java @@ -10,7 +10,6 @@ import com.fr.stable.StringUtils; import javax.swing.*; import java.awt.*; -import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; @@ -27,7 +26,7 @@ public class MobileRadioCheckPane extends BasicBeanPane { double[] rowSize = {p}; double[] columnSize = {p,p}; - UICheckBox checkBox = new UICheckBox(Inter.getLocText("FS-CPT_ZOOM")); + UICheckBox checkBox = new UICheckBox(Inter.getLocText("FR-Designer_Mobile-Open")); checkBox.setSelected(true); checkBoxes.add(checkBox); From 7b0d7935a3ca93d292908ebd642cd970a5cebb7e Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 8 Jun 2016 10:58:35 +0800 Subject: [PATCH 14/31] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/report/VerifierListPane.java | 2 +- .../fr/design/ExtraDesignClassManager.java | 19 +++++++++++++++ .../fr/design/fun/VerifyDefineProvider.java | 24 +++++++++++++++++++ .../impl/AbstractVerifyDefineProvider.java | 20 ++++++++++++++++ 4 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 designer_base/src/com/fr/design/fun/VerifyDefineProvider.java create mode 100644 designer_base/src/com/fr/design/fun/impl/AbstractVerifyDefineProvider.java diff --git a/designer/src/com/fr/design/report/VerifierListPane.java b/designer/src/com/fr/design/report/VerifierListPane.java index 38187d0a69..e489953244 100644 --- a/designer/src/com/fr/design/report/VerifierListPane.java +++ b/designer/src/com/fr/design/report/VerifierListPane.java @@ -1 +1 @@ -package com.fr.design.report; import com.fr.write.ReportWriteAttrProvider; import com.fr.write.ValueVerifierProvider; import com.fr.write.WClassVerifierProvider; import com.fr.general.NameObject; import com.fr.data.Verifier; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ObjectJControlPane; import com.fr.design.gui.ilist.JNameEdList; import com.fr.design.gui.ilist.ListModelElement; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.stable.Nameable; import com.fr.stable.bridge.StableFactory; import javax.swing.*; import java.awt.*; import java.util.*; /** * Author : Shockway * Date: 13-7-29 * Time: 下午5:11 */ public class VerifierListPane extends ObjectJControlPane { public VerifierListPane(ElementCasePane ePane) { super(ePane); } /** * 创建选项 * @return 选项 */ public NameableCreator[] createNameableCreators() { return new NameableCreator[] { new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), "/com/fr/web/images/reportlet.png", // ValueVerifier.class, // ReportWriteAttr.class, StableFactory.getRegisteredClass(ReportWriteAttrProvider.XML_TAG), BuildInVerifierPane.class), new NameObjectCreator( Inter.getLocText(new String[]{"Custom", "Verify"}), "/com/fr/web/images/reportlet.png", // WClassVerifier.class, StableFactory.getRegisteredClass(WClassVerifierProvider.TAG), CustomVerifierPane.class) }; } @Override protected String title4PopupWindow() { return null; } public void populate(ReportWriteAttrProvider reportWriteAttr) { if (reportWriteAttr == null) { return; } java.util.List nameObjectList = new ArrayList(); int verifierCount = reportWriteAttr.getVerifierCount(); boolean addedVVObject = false; for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); String name = reportWriteAttr.getVerifierNameList(i); // 内置的校验ValueVerifier只要加在一个面板中 if (verifier instanceof ValueVerifierProvider) { if (!addedVVObject) { nameObjectList.add(new NameObject(name, reportWriteAttr)); addedVVObject = true; } } else { nameObjectList.add(new NameObject(name, verifier)); } } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } private static String valueVerifyName = Inter.getLocText("Verify-Data_Verify"); /** * 更新报表填报属性 * @param reportWriteAttr 报表填报属性 */ public void updateReportWriteAttr(ReportWriteAttrProvider reportWriteAttr) { JNameEdList nameEdList = VerifierListPane.this.nameableList; DefaultListModel model = (DefaultListModel) nameEdList.getModel(); for (int i=0; i { private ValueVerifierEditPane valueVerifierEditPane; public BuildInVerifierPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); valueVerifierEditPane = new ValueVerifierEditPane(); this.add(valueVerifierEditPane, BorderLayout.CENTER); } @Override public void populateBean(ReportWriteAttrProvider ob) { valueVerifierEditPane.populate(ob); } @Override public ReportWriteAttrProvider updateBean() { ReportWriteAttrProvider ra = StableFactory.getMarkedInstanceObjectFromClass(ReportWriteAttrProvider.XML_TAG, ReportWriteAttrProvider.class); valueVerifierEditPane.update(ra, VerifierListPane.valueVerifyName); return ra; } @Override protected String title4PopupWindow() { return null; } } public static class CustomVerifierPane extends BasicBeanPane { private CustomVerifyJobPane pane; public CustomVerifierPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); pane = new CustomVerifyJobPane(); this.add(pane, BorderLayout.CENTER); } @Override public void populateBean(WClassVerifierProvider ob) { this.pane.populateBean(ob.getClassVerifyJob()); } @Override public WClassVerifierProvider updateBean() { WClassVerifierProvider cs = StableFactory.getMarkedInstanceObjectFromClass(WClassVerifierProvider.TAG, WClassVerifierProvider.class); cs.setClassVerifyJob(this.pane.updateBean()); return cs; } @Override protected String title4PopupWindow() { return "custom"; } } private boolean isBuildInVerifier(Object obj) { return obj instanceof ReportWriteAttrProvider; } } \ No newline at end of file +package com.fr.design.report; import com.fr.data.Verifier; import com.fr.design.ExtraDesignClassManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.fun.VerifyDefineProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ObjectJControlPane; import com.fr.design.gui.ilist.JNameEdList; import com.fr.design.gui.ilist.ListModelElement; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.stable.bridge.StableFactory; import com.fr.write.ReportWriteAttrProvider; import com.fr.write.ValueVerifierProvider; import com.fr.write.WClassVerifierProvider; import javax.swing.*; import java.awt.*; import java.util.ArrayList; /** * Author : Shockway * Date: 13-7-29 * Time: 下午5:11 */ public class VerifierListPane extends ObjectJControlPane { public VerifierListPane(ElementCasePane ePane) { super(ePane); } /** * 创建选项 * * @return 选项 */ public NameableCreator[] createNameableCreators() { NameableCreator[] creators = new NameableCreator[]{ new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), "/com/fr/web/images/reportlet.png", StableFactory.getRegisteredClass(ReportWriteAttrProvider.XML_TAG), BuildInVerifierPane.class) }; for (VerifyDefineProvider provider : ExtraDesignClassManager.getInstance().getVerifyDefineProviders()) { creators = ArrayUtils.add(creators, new NameObjectCreator( provider.nameForVerifier(), provider.iconPath(), provider.classForVerifier(), provider.appearanceForVerifier() ) { }); } creators = ArrayUtils.add(creators, new NameObjectCreator( Inter.getLocText(new String[]{"Custom", "Verify"}), "/com/fr/web/images/reportlet.png", StableFactory.getRegisteredClass(WClassVerifierProvider.TAG), CustomVerifierPane.class)); return creators; } @Override protected String title4PopupWindow() { return null; } public void populate(ReportWriteAttrProvider reportWriteAttr) { if (reportWriteAttr == null) { return; } java.util.List nameObjectList = new ArrayList(); int verifierCount = reportWriteAttr.getVerifierCount(); boolean addedVVObject = false; for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); String name = reportWriteAttr.getVerifierNameList(i); // 内置的校验ValueVerifier只要加在一个面板中 if (verifier instanceof ValueVerifierProvider) { if (!addedVVObject) { nameObjectList.add(new NameObject(name, reportWriteAttr)); addedVVObject = true; } } else { nameObjectList.add(new NameObject(name, verifier)); } } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } private static String valueVerifyName = Inter.getLocText("Verify-Data_Verify"); /** * 更新报表填报属性 * * @param reportWriteAttr 报表填报属性 */ public void updateReportWriteAttr(ReportWriteAttrProvider reportWriteAttr) { JNameEdList nameEdList = VerifierListPane.this.nameableList; DefaultListModel model = (DefaultListModel) nameEdList.getModel(); for (int i = 0; i < model.size(); i++) { NameObject no = (NameObject) ((ListModelElement) model.get(i)).wrapper; if (no.getObject() instanceof ReportWriteAttrProvider) { valueVerifyName = no.getName(); break; } } Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; java.util.Arrays.asList(res).toArray(res_array); reportWriteAttr.clearVerifiers(); for (int i = 0; i < res_array.length; i++) { NameObject nameObject = res_array[i]; if (nameObject.getObject() instanceof Verifier) { reportWriteAttr.addVerifier(nameObject.getName(), (Verifier) nameObject.getObject()); } else if (nameObject.getObject() instanceof ReportWriteAttrProvider) { ReportWriteAttrProvider ra = (ReportWriteAttrProvider) nameObject.getObject(); for (int k = 0; k < ra.getValueVerifierCount(); k++) { reportWriteAttr.addVerifier(nameObject.getName(), ra.getVerifier(k)); } } } } /** * 添加 * * @param nameable 添加的Nameable * @param index 序号 */ public void addNameable(Nameable nameable, int index) { JNameEdList nameEdList = VerifierListPane.this.nameableList; DefaultListModel model = (DefaultListModel) nameEdList.getModel(); // 内置的数据校验大框架只加一个 if (((NameObject) nameable).getObject() instanceof ReportWriteAttrProvider) { setToolbarDefEnable(0, 0, false); for (int i = 0; i < model.size(); i++) { if (isBuildInVerifier(((NameObject) ((ListModelElement) model.get(i)).wrapper).getObject())) { nameableList.setSelectedIndex(i); } } } ListModelElement el = new ListModelElement(nameable); model.add(index, el); nameableList.setSelectedIndex(index); nameableList.ensureIndexIsVisible(index); nameEdList.repaint(); } /** * 检查btn的状态 */ public void checkButtonEnabled() { super.checkButtonEnabled(); if (!hasBuildInVerifier()) { setToolbarDefEnable(0, 0, true); } } private boolean hasBuildInVerifier() { JNameEdList nameEdList = VerifierListPane.this.nameableList; DefaultListModel model = (DefaultListModel) nameEdList.getModel(); for (int i = 0; i < model.size(); i++) { if (isBuildInVerifier(((NameObject) ((ListModelElement) model.get(i)).wrapper).getObject())) { return true; } } return false; } public static class BuildInVerifierPane extends BasicBeanPane { private ValueVerifierEditPane valueVerifierEditPane; public BuildInVerifierPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); valueVerifierEditPane = new ValueVerifierEditPane(); this.add(valueVerifierEditPane, BorderLayout.CENTER); } @Override public void populateBean(ReportWriteAttrProvider ob) { valueVerifierEditPane.populate(ob); } @Override public ReportWriteAttrProvider updateBean() { ReportWriteAttrProvider ra = StableFactory.getMarkedInstanceObjectFromClass(ReportWriteAttrProvider.XML_TAG, ReportWriteAttrProvider.class); valueVerifierEditPane.update(ra, VerifierListPane.valueVerifyName); return ra; } @Override protected String title4PopupWindow() { return null; } } public static class CustomVerifierPane extends BasicBeanPane { private CustomVerifyJobPane pane; public CustomVerifierPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); pane = new CustomVerifyJobPane(); this.add(pane, BorderLayout.CENTER); } @Override public void populateBean(WClassVerifierProvider ob) { this.pane.populateBean(ob.getClassVerifyJob()); } @Override public WClassVerifierProvider updateBean() { WClassVerifierProvider cs = StableFactory.getMarkedInstanceObjectFromClass(WClassVerifierProvider.TAG, WClassVerifierProvider.class); cs.setClassVerifyJob(this.pane.updateBean()); return cs; } @Override protected String title4PopupWindow() { return "custom"; } } private boolean isBuildInVerifier(Object obj) { return obj instanceof ReportWriteAttrProvider; } } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/ExtraDesignClassManager.java b/designer_base/src/com/fr/design/ExtraDesignClassManager.java index d676381678..b0a6bb2a79 100644 --- a/designer_base/src/com/fr/design/ExtraDesignClassManager.java +++ b/designer_base/src/com/fr/design/ExtraDesignClassManager.java @@ -138,6 +138,8 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi private Set backgroundUIProviders; + private Set verifyDefineProviders; + public TableDataPaneProcessor getTableDataPaneProcessor() { return tableDataPaneProcessor; } @@ -804,6 +806,21 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi backgroundUIProviders.add((BackgroundUIProvider) level); } + public VerifyDefineProvider[] getVerifyDefineProviders() { + if (verifyDefineProviders == null) { + return new VerifyDefineProvider[0]; + } + return verifyDefineProviders.toArray(new VerifyDefineProvider[verifyDefineProviders.size()]); + } + + private void addVerifyDefineProvider(Level level, PluginSimplify simplify) throws Exception { + if (verifyDefineProviders == null) { + verifyDefineProviders = new HashSet<>(); + } + validAPILevel(level, VerifyDefineProvider.CURRENT_LEVEL, simplify.getPluginName()); + verifyDefineProviders.add((VerifyDefineProvider) level); + } + /** * 文件名 * @@ -902,6 +919,8 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi addWidgetAttrProvider(impl, simplify); } else if (tagName.equals(ExportAttrTabProvider.XML_TAG)) { addExportAttrTabProvider(impl, simplify); + } else if (tagName.equals(VerifyDefineProvider.MARK_STRING)) { + addVerifyDefineProvider(impl, simplify); } } catch (PluginInvalidLevelException e) { PluginMessage.remindUpdate(e.getMessage()); diff --git a/designer_base/src/com/fr/design/fun/VerifyDefineProvider.java b/designer_base/src/com/fr/design/fun/VerifyDefineProvider.java new file mode 100644 index 0000000000..4d695db603 --- /dev/null +++ b/designer_base/src/com/fr/design/fun/VerifyDefineProvider.java @@ -0,0 +1,24 @@ +package com.fr.design.fun; + +import com.fr.data.Verifier; +import com.fr.design.beans.BasicBeanPane; +import com.fr.stable.fun.Level; +import com.fr.stable.fun.Provider; + +/** + * Created by richie on 16/6/8. + */ +public interface VerifyDefineProvider extends Level, Provider { + + String MARK_STRING = "VerifyDefineProvider"; + + int CURRENT_LEVEL = 1; + + Class classForVerifier(); + + Class appearanceForVerifier(); + + String nameForVerifier(); + + String iconPath(); +} diff --git a/designer_base/src/com/fr/design/fun/impl/AbstractVerifyDefineProvider.java b/designer_base/src/com/fr/design/fun/impl/AbstractVerifyDefineProvider.java new file mode 100644 index 0000000000..04c6276104 --- /dev/null +++ b/designer_base/src/com/fr/design/fun/impl/AbstractVerifyDefineProvider.java @@ -0,0 +1,20 @@ +package com.fr.design.fun.impl; + +import com.fr.design.fun.VerifyDefineProvider; +import com.fr.stable.fun.impl.AbstractProvider; + +/** + * Created by richie on 16/6/8. + */ +public abstract class AbstractVerifyDefineProvider extends AbstractProvider implements VerifyDefineProvider { + + @Override + public int currentAPILevel() { + return CURRENT_LEVEL; + } + + @Override + public String mark4Provider() { + return getClass().getName(); + } +} From e9a3c2b1d362df67fce13ff56a32f8193c450705 Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 8 Jun 2016 11:02:23 +0800 Subject: [PATCH 15/31] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/fun/VerifyDefineProvider.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/designer_base/src/com/fr/design/fun/VerifyDefineProvider.java b/designer_base/src/com/fr/design/fun/VerifyDefineProvider.java index 4d695db603..35384bf0a5 100644 --- a/designer_base/src/com/fr/design/fun/VerifyDefineProvider.java +++ b/designer_base/src/com/fr/design/fun/VerifyDefineProvider.java @@ -14,11 +14,27 @@ public interface VerifyDefineProvider extends Level, Provider { int CURRENT_LEVEL = 1; + /** + * 对应的校验类 + * @return 校验类 + */ Class classForVerifier(); + /** + * 校验设置的界面 + * @return 界面 + */ Class appearanceForVerifier(); + /** + * 此种类型的校验的名字 + * @return 名字 + */ String nameForVerifier(); + /** + * 菜单图标 + * @return 图标路径 + */ String iconPath(); } From 3594600c0d11175ac1c646af5a11423b6ebb0d37 Mon Sep 17 00:00:00 2001 From: xiaohu Date: Thu, 9 Jun 2016 09:57:22 +0800 Subject: [PATCH 16/31] =?UTF-8?q?=E6=89=93=E9=96=8B=E5=A4=9A=E7=A8=AE?= =?UTF-8?q?=E4=BD=88=E5=B1=80=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/gui/ibutton/UIButtonGroup.java | 10 ++-------- .../src/com/fr/design/gui/ibutton/UITabGroup.java | 7 ++----- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/ibutton/UIButtonGroup.java b/designer_base/src/com/fr/design/gui/ibutton/UIButtonGroup.java index f12eec0cb2..8a266a2a1e 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UIButtonGroup.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UIButtonGroup.java @@ -1,12 +1,6 @@ package com.fr.design.gui.ibutton; -import java.awt.BorderLayout; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.GridLayout; -import java.awt.Insets; -import java.awt.RenderingHints; -import java.awt.Shape; +import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -174,7 +168,7 @@ public class UIButtonGroup extends JPanel implements GlobalNameObserver { return BorderFactory.createEmptyBorder(1, 1, 1, 1); } - protected GridLayout getGridLayout(int number) { + protected LayoutManager getGridLayout(int number) { return new GridLayout(0, number, 1, 0); } diff --git a/designer_base/src/com/fr/design/gui/ibutton/UITabGroup.java b/designer_base/src/com/fr/design/gui/ibutton/UITabGroup.java index 7f6ec850a2..406dc8bff7 100644 --- a/designer_base/src/com/fr/design/gui/ibutton/UITabGroup.java +++ b/designer_base/src/com/fr/design/gui/ibutton/UITabGroup.java @@ -1,9 +1,6 @@ package com.fr.design.gui.ibutton; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.GridLayout; -import java.awt.RenderingHints; +import java.awt.*; import javax.swing.BorderFactory; import javax.swing.Icon; @@ -38,7 +35,7 @@ public class UITabGroup extends UIButtonGroup { } @Override - protected GridLayout getGridLayout(int number) { + protected LayoutManager getGridLayout(int number) { if (number < BUTTON_NUMBER || isOneLineTab) { return super.getGridLayout(number); } else if (number == BUTTON_NUMBER || number == SEVEN_NUMBER) { From a5e2073f16d9158a4ac22bf8f9cb8f179723b6ac Mon Sep 17 00:00:00 2001 From: xiaohu Date: Sun, 12 Jun 2016 11:11:10 +0800 Subject: [PATCH 17/31] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E5=88=97=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/editor/editor/ColumnSelectedEditor.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java index b3997c1b19..da726b4646 100644 --- a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java @@ -13,6 +13,8 @@ import com.fr.stable.StringUtils; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.*; +import java.util.List; import java.util.regex.Pattern; /** @@ -35,6 +37,9 @@ public class ColumnSelectedEditor extends Editor { @Override public void itemStateChanged(ItemEvent e) { + //這邊需要重新初始化columnNames, 否則nameList長度和columnNames長度不同導致出錯。 + List nameList = tableDataComboBox.getSelectedItem().calculateColumnNameList(); + columnNames = new String[nameList.size()]; columnNames = tableDataComboBox.getSelectedItem().calculateColumnNameList().toArray(columnNames); columnNameComboBox.removeAllItems(); for (int i = 0; i < columnNames.length; i++) { From 30a159a114fe836d253066c7f80360a719d2156d Mon Sep 17 00:00:00 2001 From: xiaohu Date: Sun, 12 Jun 2016 11:18:35 +0800 Subject: [PATCH 18/31] update --- .../src/com/fr/design/editor/editor/ColumnSelectedEditor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java index da726b4646..62f829aaf1 100644 --- a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java @@ -37,7 +37,7 @@ public class ColumnSelectedEditor extends Editor { @Override public void itemStateChanged(ItemEvent e) { - //這邊需要重新初始化columnNames, 否則nameList長度和columnNames長度不同導致出錯。 + //这边需要重新初始化columnNames, 否则nameList长度和columnNames长度不同导致出錯。 List nameList = tableDataComboBox.getSelectedItem().calculateColumnNameList(); columnNames = new String[nameList.size()]; columnNames = tableDataComboBox.getSelectedItem().calculateColumnNameList().toArray(columnNames); From 9763c1be29837d7e3511cdcda861041c4c6e2bf4 Mon Sep 17 00:00:00 2001 From: richie Date: Sun, 12 Jun 2016 13:02:19 +0800 Subject: [PATCH 19/31] =?UTF-8?q?=E5=A1=AB=E6=8A=A5=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=94=B9=E8=BF=9B,designer=E6=9A=82=E6=97=B6=E4=BE=9D=E8=B5=96?= =?UTF-8?q?engine-write?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/designer.iml | 1 + .../fr/design/report/BuildInVerifierPane.java | 35 ++++++ .../fr/design/report/CustomVerifierPane.java | 37 ++++++ .../design/report/ValueVerifierEditPane.java | 113 +++--------------- .../fr/design/report/VerifierListPane.java | 2 +- 5 files changed, 92 insertions(+), 96 deletions(-) create mode 100644 designer/src/com/fr/design/report/BuildInVerifierPane.java create mode 100644 designer/src/com/fr/design/report/CustomVerifierPane.java diff --git a/designer/designer.iml b/designer/designer.iml index c798a6fe09..796f2413bf 100644 --- a/designer/designer.iml +++ b/designer/designer.iml @@ -17,5 +17,6 @@ + \ No newline at end of file diff --git a/designer/src/com/fr/design/report/BuildInVerifierPane.java b/designer/src/com/fr/design/report/BuildInVerifierPane.java new file mode 100644 index 0000000000..895b7fb34d --- /dev/null +++ b/designer/src/com/fr/design/report/BuildInVerifierPane.java @@ -0,0 +1,35 @@ +package com.fr.design.report; + +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.report.write.ValueVerifier; + +import java.awt.*; + +/** + * Created by richie on 16/6/12. + */ +public class BuildInVerifierPane extends BasicBeanPane { + private ValueVerifierEditPane valueVerifierEditPane; + + public BuildInVerifierPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + valueVerifierEditPane = new ValueVerifierEditPane(); + this.add(valueVerifierEditPane, BorderLayout.CENTER); + } + + @Override + public void populateBean(ValueVerifier ob) { + valueVerifierEditPane.populate(ob); + } + + @Override + public ValueVerifier updateBean() { + return valueVerifierEditPane.update(); + } + + @Override + protected String title4PopupWindow() { + return "BuiltIn"; + } +} diff --git a/designer/src/com/fr/design/report/CustomVerifierPane.java b/designer/src/com/fr/design/report/CustomVerifierPane.java new file mode 100644 index 0000000000..99cadedd53 --- /dev/null +++ b/designer/src/com/fr/design/report/CustomVerifierPane.java @@ -0,0 +1,37 @@ +package com.fr.design.report; + +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.report.write.WClassVerifier; + +import java.awt.*; + +/** + * Created by richie on 16/6/12. + */ +public class CustomVerifierPane extends BasicBeanPane { + private CustomVerifyJobPane pane; + + public CustomVerifierPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + pane = new CustomVerifyJobPane(); + this.add(pane, BorderLayout.CENTER); + } + + @Override + public void populateBean(WClassVerifier ob) { + this.pane.populateBean(ob.getClassVerifyJob()); + } + + @Override + public WClassVerifier updateBean() { + WClassVerifier verifier = new WClassVerifier(); + verifier.setClassVerifyJob(this.pane.updateBean()); + return verifier; + } + + @Override + protected String title4PopupWindow() { + return "custom"; + } +} diff --git a/designer/src/com/fr/design/report/ValueVerifierEditPane.java b/designer/src/com/fr/design/report/ValueVerifierEditPane.java index 497d7abdae..09da8b85f8 100644 --- a/designer/src/com/fr/design/report/ValueVerifierEditPane.java +++ b/designer/src/com/fr/design/report/ValueVerifierEditPane.java @@ -2,11 +2,15 @@ package com.fr.design.report; import com.fr.base.Formula; import com.fr.data.Verifier; +import com.fr.data.VerifyItem; import com.fr.design.gui.itableeditorpane.ActionStyle; import com.fr.design.gui.itableeditorpane.UIArrayTableModel; import com.fr.design.gui.itableeditorpane.UITableEditorPane; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.GeneralUtils; import com.fr.general.Inter; +import com.fr.report.write.ValueVerifier; +import com.fr.stable.FormulaProvider; import com.fr.stable.bridge.StableFactory; import com.fr.write.ReportWriteAttrProvider; import com.fr.write.ValueVerifierProvider; @@ -32,116 +36,35 @@ public class ValueVerifierEditPane extends JPanel { /** * populate */ - public void populate(ReportWriteAttrProvider reportWriteAttr) { - if (reportWriteAttr == null) { + public void populate(ValueVerifier valueVerifier) { + if (valueVerifier == null) { return; } - int rowCount = reportWriteAttr.getVerifierCount(); - Object[][] os = new Object[reportWriteAttr.getValueVerifierCount()][]; - int cnt = 0; - for (int i = 0; i < rowCount; i++) { - if (!(reportWriteAttr.getVerifier(i) instanceof ValueVerifierProvider)) { - continue; - } - Formula formula = ((ValueVerifierProvider)reportWriteAttr.getVerifier(i)).getFormula(); + int rowCount = valueVerifier.getVerifyItemsCount(); + Object[][] os = new Object[rowCount][]; + int tableDataCount = 0; + for (int i = 0; i < rowCount; i ++) { + VerifyItem item = valueVerifier.getVerifyItem(i); + FormulaProvider formula = item.getFormula(); if (formula == null) { continue; } - String formulaContent = formula.getContent().substring(1); - String message = reportWriteAttr.getVerifier(i).getMessage(); - os[cnt++] = new Object[] { formulaContent, message }; + os[tableDataCount++] = new Object[]{formula.getPureContent(), item.getMessage()}; } this.tableEditorPane.populate(os); } - /** - * update - */ - public void update(ReportWriteAttrProvider reportWriteAttr, String name) { + public ValueVerifier update() { + ValueVerifier valueVerifier = new ValueVerifier(); java.util.List list = tableEditorPane.update(); - reportWriteAttr.clearVerifiers(true); for (int i = 0; i < list.size(); i++) { Object[] o = list.get(i); if (o == null || o[0] == null) { continue; } - ValueVerifierProvider p = StableFactory.getMarkedInstanceObjectFromClass(ValueVerifierProvider.TAG, ValueVerifierProvider.class); - p.setFormula(new Formula(readValueVerifyObject(o[0]))); - p.setMessage(readValueVerifyObject(o[1])); - reportWriteAttr.addVerifier(name, (Verifier) p); -// reportWriteAttr.addVerifier(name, new ValueVerifier(readValueVerifyObject(o[0]), readValueVerifyObject(o[1]))); + VerifyItem item = new VerifyItem(new Formula(GeneralUtils.objectToString(o[0])), GeneralUtils.objectToString(o[1])); + valueVerifier.addVerifyItem(item); } - } - - private String readValueVerifyObject(Object obj) { - if (obj == null) { - return null; - } - return obj.toString(); + return valueVerifier; } } - - -//public class ValueVerifierEditPane extends BasicBeanPane { -// private ValueVerifier valueVerifier; -// private UITextArea formula = new UITextArea(); -// private UITextArea message = new UITextArea(); -// private int col = 60; -// private int row = 5; -// -// public ValueVerifierEditPane() { -// valueVerifier = new ValueVerifier(); -// -// this.setLayout(new FlowLayout()); -// -// JPanel formulaPane = new JPanel(); -// UIScrollPane formulaScrollPane = new UIScrollPane(formula); -// formula.setRows(row); -// formula.setColumns(col); -// formula.setLineWrap(true); -// formula.setToolTipText(Inter.getLocText("Verify-ToolTips")); -// UILabel fl = new UILabel(Inter.getLocText("Verify-Verify_Formula")); -// fl.setPreferredSize(new Dimension(80, 20)); -// formulaPane.add(fl); -// formulaPane.add(formulaScrollPane); -// -// JPanel messagePane = new JPanel(); -// UIScrollPane messageScrollPane = new UIScrollPane(message); -// message.setRows(row); -// message.setColumns(col); -// message.setLineWrap(true); -// UILabel ml = new UILabel(Inter.getLocText("Verify-Error_Information")); -// ml.setPreferredSize(new Dimension(80, 20)); -// messagePane.add(ml); -// messagePane.add(messageScrollPane); -// -// this.add(formulaPane); -// this.add(messagePane); -// } -// -// @Override -// public void populateBean(ValueVerifier ob) { -// valueVerifier = ob; -// if (ob != null) { -// if (ob.getFormula() != null) { -// String content = ob.getFormula().getContent(); -// formula.setText(content.startsWith("=") ? content.substring(1) : content); -// } else { -// formula.setText(""); -// } -// message.setText(ob.getMessage()); -// } -// } -// -// @Override -// public ValueVerifier updateBean() { -// valueVerifier.setFormula(new Formula(formula.getText())); -// valueVerifier.setMessage(message.getText()); -// return valueVerifier; -// } -// -// @Override -// protected String title4PopupWindow() { -// return "valueVerifierPane"; -// } -//} \ No newline at end of file diff --git a/designer/src/com/fr/design/report/VerifierListPane.java b/designer/src/com/fr/design/report/VerifierListPane.java index e489953244..939de1ff44 100644 --- a/designer/src/com/fr/design/report/VerifierListPane.java +++ b/designer/src/com/fr/design/report/VerifierListPane.java @@ -1 +1 @@ -package com.fr.design.report; import com.fr.data.Verifier; import com.fr.design.ExtraDesignClassManager; import com.fr.design.beans.BasicBeanPane; import com.fr.design.fun.VerifyDefineProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ObjectJControlPane; import com.fr.design.gui.ilist.JNameEdList; import com.fr.design.gui.ilist.ListModelElement; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.stable.bridge.StableFactory; import com.fr.write.ReportWriteAttrProvider; import com.fr.write.ValueVerifierProvider; import com.fr.write.WClassVerifierProvider; import javax.swing.*; import java.awt.*; import java.util.ArrayList; /** * Author : Shockway * Date: 13-7-29 * Time: 下午5:11 */ public class VerifierListPane extends ObjectJControlPane { public VerifierListPane(ElementCasePane ePane) { super(ePane); } /** * 创建选项 * * @return 选项 */ public NameableCreator[] createNameableCreators() { NameableCreator[] creators = new NameableCreator[]{ new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), "/com/fr/web/images/reportlet.png", StableFactory.getRegisteredClass(ReportWriteAttrProvider.XML_TAG), BuildInVerifierPane.class) }; for (VerifyDefineProvider provider : ExtraDesignClassManager.getInstance().getVerifyDefineProviders()) { creators = ArrayUtils.add(creators, new NameObjectCreator( provider.nameForVerifier(), provider.iconPath(), provider.classForVerifier(), provider.appearanceForVerifier() ) { }); } creators = ArrayUtils.add(creators, new NameObjectCreator( Inter.getLocText(new String[]{"Custom", "Verify"}), "/com/fr/web/images/reportlet.png", StableFactory.getRegisteredClass(WClassVerifierProvider.TAG), CustomVerifierPane.class)); return creators; } @Override protected String title4PopupWindow() { return null; } public void populate(ReportWriteAttrProvider reportWriteAttr) { if (reportWriteAttr == null) { return; } java.util.List nameObjectList = new ArrayList(); int verifierCount = reportWriteAttr.getVerifierCount(); boolean addedVVObject = false; for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); String name = reportWriteAttr.getVerifierNameList(i); // 内置的校验ValueVerifier只要加在一个面板中 if (verifier instanceof ValueVerifierProvider) { if (!addedVVObject) { nameObjectList.add(new NameObject(name, reportWriteAttr)); addedVVObject = true; } } else { nameObjectList.add(new NameObject(name, verifier)); } } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } private static String valueVerifyName = Inter.getLocText("Verify-Data_Verify"); /** * 更新报表填报属性 * * @param reportWriteAttr 报表填报属性 */ public void updateReportWriteAttr(ReportWriteAttrProvider reportWriteAttr) { JNameEdList nameEdList = VerifierListPane.this.nameableList; DefaultListModel model = (DefaultListModel) nameEdList.getModel(); for (int i = 0; i < model.size(); i++) { NameObject no = (NameObject) ((ListModelElement) model.get(i)).wrapper; if (no.getObject() instanceof ReportWriteAttrProvider) { valueVerifyName = no.getName(); break; } } Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; java.util.Arrays.asList(res).toArray(res_array); reportWriteAttr.clearVerifiers(); for (int i = 0; i < res_array.length; i++) { NameObject nameObject = res_array[i]; if (nameObject.getObject() instanceof Verifier) { reportWriteAttr.addVerifier(nameObject.getName(), (Verifier) nameObject.getObject()); } else if (nameObject.getObject() instanceof ReportWriteAttrProvider) { ReportWriteAttrProvider ra = (ReportWriteAttrProvider) nameObject.getObject(); for (int k = 0; k < ra.getValueVerifierCount(); k++) { reportWriteAttr.addVerifier(nameObject.getName(), ra.getVerifier(k)); } } } } /** * 添加 * * @param nameable 添加的Nameable * @param index 序号 */ public void addNameable(Nameable nameable, int index) { JNameEdList nameEdList = VerifierListPane.this.nameableList; DefaultListModel model = (DefaultListModel) nameEdList.getModel(); // 内置的数据校验大框架只加一个 if (((NameObject) nameable).getObject() instanceof ReportWriteAttrProvider) { setToolbarDefEnable(0, 0, false); for (int i = 0; i < model.size(); i++) { if (isBuildInVerifier(((NameObject) ((ListModelElement) model.get(i)).wrapper).getObject())) { nameableList.setSelectedIndex(i); } } } ListModelElement el = new ListModelElement(nameable); model.add(index, el); nameableList.setSelectedIndex(index); nameableList.ensureIndexIsVisible(index); nameEdList.repaint(); } /** * 检查btn的状态 */ public void checkButtonEnabled() { super.checkButtonEnabled(); if (!hasBuildInVerifier()) { setToolbarDefEnable(0, 0, true); } } private boolean hasBuildInVerifier() { JNameEdList nameEdList = VerifierListPane.this.nameableList; DefaultListModel model = (DefaultListModel) nameEdList.getModel(); for (int i = 0; i < model.size(); i++) { if (isBuildInVerifier(((NameObject) ((ListModelElement) model.get(i)).wrapper).getObject())) { return true; } } return false; } public static class BuildInVerifierPane extends BasicBeanPane { private ValueVerifierEditPane valueVerifierEditPane; public BuildInVerifierPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); valueVerifierEditPane = new ValueVerifierEditPane(); this.add(valueVerifierEditPane, BorderLayout.CENTER); } @Override public void populateBean(ReportWriteAttrProvider ob) { valueVerifierEditPane.populate(ob); } @Override public ReportWriteAttrProvider updateBean() { ReportWriteAttrProvider ra = StableFactory.getMarkedInstanceObjectFromClass(ReportWriteAttrProvider.XML_TAG, ReportWriteAttrProvider.class); valueVerifierEditPane.update(ra, VerifierListPane.valueVerifyName); return ra; } @Override protected String title4PopupWindow() { return null; } } public static class CustomVerifierPane extends BasicBeanPane { private CustomVerifyJobPane pane; public CustomVerifierPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); pane = new CustomVerifyJobPane(); this.add(pane, BorderLayout.CENTER); } @Override public void populateBean(WClassVerifierProvider ob) { this.pane.populateBean(ob.getClassVerifyJob()); } @Override public WClassVerifierProvider updateBean() { WClassVerifierProvider cs = StableFactory.getMarkedInstanceObjectFromClass(WClassVerifierProvider.TAG, WClassVerifierProvider.class); cs.setClassVerifyJob(this.pane.updateBean()); return cs; } @Override protected String title4PopupWindow() { return "custom"; } } private boolean isBuildInVerifier(Object obj) { return obj instanceof ReportWriteAttrProvider; } } \ No newline at end of file +package com.fr.design.report; import com.fr.data.Verifier; import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.VerifyDefineProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ObjectJControlPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.report.write.ValueVerifier; import com.fr.report.write.WClassVerifier; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.write.ReportWriteAttrProvider; import java.util.ArrayList; /** * 校验列表 */ public class VerifierListPane extends ObjectJControlPane { public VerifierListPane(ElementCasePane ePane) { super(ePane); } /** * 创建选项 * * @return 选项 */ public NameableCreator[] createNameableCreators() { NameableCreator[] creators = new NameableCreator[]{ new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), "/com/fr/web/images/reportlet.png", ValueVerifier.class, BuildInVerifierPane.class) }; for (VerifyDefineProvider provider : ExtraDesignClassManager.getInstance().getVerifyDefineProviders()) { creators = ArrayUtils.add(creators, new NameObjectCreator( provider.nameForVerifier(), provider.iconPath(), provider.classForVerifier(), provider.appearanceForVerifier() ) { }); } creators = ArrayUtils.add(creators, new NameObjectCreator( Inter.getLocText(new String[]{"Custom", "Verify"}), "/com/fr/web/images/reportlet.png", WClassVerifier.class, CustomVerifierPane.class)); return creators; } @Override protected String title4PopupWindow() { return "Verify Collections"; } public void populate(ReportWriteAttrProvider reportWriteAttr) { if (reportWriteAttr == null) { return; } java.util.List nameObjectList = new ArrayList<>(); int verifierCount = reportWriteAttr.getVerifierCount(); for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); nameObjectList.add(new NameObject(verifier.getName(), verifier)); } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } public void updateReportWriteAttr(ReportWriteAttrProvider reportWriteAttr) { // Nameable[]居然不能强转成NameObject[],一定要这么写... Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; java.util.Arrays.asList(res).toArray(res_array); reportWriteAttr.clearVerifiers(); for (int i = 0; i < res_array.length; i++) { NameObject nameObject = res_array[i]; if (nameObject.getObject() instanceof Verifier) { Verifier verifier = (Verifier) nameObject.getObject(); verifier.setName(nameObject.getName()); reportWriteAttr.addVerifier(nameObject.getName(), verifier); } } } } \ No newline at end of file From 7f35d16073b4c4d6975ef249316c92f327416126 Mon Sep 17 00:00:00 2001 From: richie Date: Sun, 12 Jun 2016 14:54:33 +0800 Subject: [PATCH 20/31] =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=BC=95=E6=93=8E?= =?UTF-8?q?=E9=83=A8=E5=88=86=E7=BB=A7=E7=BB=AD=E6=94=B9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer/src/com/fr/design/report/ValueVerifierEditPane.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/designer/src/com/fr/design/report/ValueVerifierEditPane.java b/designer/src/com/fr/design/report/ValueVerifierEditPane.java index 09da8b85f8..ebbc9901b5 100644 --- a/designer/src/com/fr/design/report/ValueVerifierEditPane.java +++ b/designer/src/com/fr/design/report/ValueVerifierEditPane.java @@ -1,7 +1,6 @@ package com.fr.design.report; import com.fr.base.Formula; -import com.fr.data.Verifier; import com.fr.data.VerifyItem; import com.fr.design.gui.itableeditorpane.ActionStyle; import com.fr.design.gui.itableeditorpane.UIArrayTableModel; @@ -11,9 +10,6 @@ import com.fr.general.GeneralUtils; import com.fr.general.Inter; import com.fr.report.write.ValueVerifier; import com.fr.stable.FormulaProvider; -import com.fr.stable.bridge.StableFactory; -import com.fr.write.ReportWriteAttrProvider; -import com.fr.write.ValueVerifierProvider; import javax.swing.*; import java.awt.*; From b7a6beeb203ac7a094e24177900407686959ba8c Mon Sep 17 00:00:00 2001 From: richie Date: Sun, 12 Jun 2016 16:56:20 +0800 Subject: [PATCH 21/31] =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=94=B9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/report/VerifierListPane.java | 2 +- .../design/webattr/ReportWriteAttrPane.java | 27 +- ...stPane.java => SubmitVisitorListPane.java} | 508 +++++++++--------- 3 files changed, 258 insertions(+), 279 deletions(-) rename designer/src/com/fr/design/write/submit/{SubmiterListPane.java => SubmitVisitorListPane.java} (86%) diff --git a/designer/src/com/fr/design/report/VerifierListPane.java b/designer/src/com/fr/design/report/VerifierListPane.java index 939de1ff44..af0bc3fbcb 100644 --- a/designer/src/com/fr/design/report/VerifierListPane.java +++ b/designer/src/com/fr/design/report/VerifierListPane.java @@ -1 +1 @@ -package com.fr.design.report; import com.fr.data.Verifier; import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.VerifyDefineProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ObjectJControlPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.report.write.ValueVerifier; import com.fr.report.write.WClassVerifier; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.write.ReportWriteAttrProvider; import java.util.ArrayList; /** * 校验列表 */ public class VerifierListPane extends ObjectJControlPane { public VerifierListPane(ElementCasePane ePane) { super(ePane); } /** * 创建选项 * * @return 选项 */ public NameableCreator[] createNameableCreators() { NameableCreator[] creators = new NameableCreator[]{ new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), "/com/fr/web/images/reportlet.png", ValueVerifier.class, BuildInVerifierPane.class) }; for (VerifyDefineProvider provider : ExtraDesignClassManager.getInstance().getVerifyDefineProviders()) { creators = ArrayUtils.add(creators, new NameObjectCreator( provider.nameForVerifier(), provider.iconPath(), provider.classForVerifier(), provider.appearanceForVerifier() ) { }); } creators = ArrayUtils.add(creators, new NameObjectCreator( Inter.getLocText(new String[]{"Custom", "Verify"}), "/com/fr/web/images/reportlet.png", WClassVerifier.class, CustomVerifierPane.class)); return creators; } @Override protected String title4PopupWindow() { return "Verify Collections"; } public void populate(ReportWriteAttrProvider reportWriteAttr) { if (reportWriteAttr == null) { return; } java.util.List nameObjectList = new ArrayList<>(); int verifierCount = reportWriteAttr.getVerifierCount(); for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); nameObjectList.add(new NameObject(verifier.getName(), verifier)); } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } public void updateReportWriteAttr(ReportWriteAttrProvider reportWriteAttr) { // Nameable[]居然不能强转成NameObject[],一定要这么写... Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; java.util.Arrays.asList(res).toArray(res_array); reportWriteAttr.clearVerifiers(); for (int i = 0; i < res_array.length; i++) { NameObject nameObject = res_array[i]; if (nameObject.getObject() instanceof Verifier) { Verifier verifier = (Verifier) nameObject.getObject(); verifier.setName(nameObject.getName()); reportWriteAttr.addVerifier(nameObject.getName(), verifier); } } } } \ No newline at end of file +package com.fr.design.report; import com.fr.data.Verifier; import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.VerifyDefineProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ObjectJControlPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.report.write.ReportWriteAttr; import com.fr.report.write.ValueVerifier; import com.fr.report.write.WClassVerifier; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.write.ReportWriteAttrProvider; import java.util.ArrayList; /** * 校验列表 */ public class VerifierListPane extends ObjectJControlPane { public VerifierListPane(ElementCasePane ePane) { super(ePane); } /** * 创建选项 * * @return 选项 */ public NameableCreator[] createNameableCreators() { NameableCreator[] creators = new NameableCreator[]{ new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), "/com/fr/web/images/reportlet.png", ValueVerifier.class, BuildInVerifierPane.class) }; for (VerifyDefineProvider provider : ExtraDesignClassManager.getInstance().getVerifyDefineProviders()) { creators = ArrayUtils.add(creators, new NameObjectCreator( provider.nameForVerifier(), provider.iconPath(), provider.classForVerifier(), provider.appearanceForVerifier() ) { }); } creators = ArrayUtils.add(creators, new NameObjectCreator( Inter.getLocText(new String[]{"Custom", "Verify"}), "/com/fr/web/images/reportlet.png", WClassVerifier.class, CustomVerifierPane.class)); return creators; } @Override protected String title4PopupWindow() { return "Verify Collections"; } public void populate(ReportWriteAttrProvider reportWriteAttr) { if (reportWriteAttr == null) { return; } java.util.List nameObjectList = new ArrayList<>(); int verifierCount = reportWriteAttr.getVerifierCount(); for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); nameObjectList.add(new NameObject(verifier.getName(), verifier)); } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } public void updateReportWriteAttr(ReportWriteAttrProvider reportWriteAttr) { // Nameable[]居然不能强转成NameObject[],一定要这么写... Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; java.util.Arrays.asList(res).toArray(res_array); reportWriteAttr.clearVerifiers(); for (int i = 0; i < res_array.length; i++) { NameObject nameObject = res_array[i]; if (nameObject.getObject() instanceof Verifier) { Verifier verifier = (Verifier) nameObject.getObject(); verifier.setName(nameObject.getName()); reportWriteAttr.addVerifier(verifier); } } } } \ No newline at end of file diff --git a/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java b/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java index f2c446b730..f84c9b0fca 100644 --- a/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java +++ b/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java @@ -6,7 +6,7 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.report.VerifierListPane; import com.fr.design.report.WriteShortCutsPane; -import com.fr.design.write.submit.SubmiterListPane; +import com.fr.design.write.submit.SubmitVisitorListPane; import com.fr.general.Inter; import com.fr.report.worksheet.WorkSheet; import com.fr.stable.bridge.StableFactory; @@ -16,7 +16,7 @@ import javax.swing.*; import java.awt.*; public class ReportWriteAttrPane extends LoadingBasicPane { - private SubmiterListPane submiterListPane; + private SubmitVisitorListPane submiterListPane; // private ValueVerifierEditPane valueVerifierEditPane; private VerifierListPane verifierListPane; private WriteShortCutsPane writeShortCutsPane; @@ -33,7 +33,7 @@ public class ReportWriteAttrPane extends LoadingBasicPane { // peter: writeSQLAttrList的编辑. if (submiterListPane == null) { - submiterListPane = new SubmiterListPane(ePane); + submiterListPane = new SubmitVisitorListPane(ePane); } // valueVerifierEditPane = new ValueVerifierEditPane(); if (verifierListPane == null) { @@ -44,27 +44,6 @@ public class ReportWriteAttrPane extends LoadingBasicPane { tabbedPane.addTab(Inter.getLocText("FR-Utils_Submit"), submiterListPane); tabbedPane.addTab(Inter.getLocText("Verify-Data_Verify"), verifierListPane); tabbedPane.addTab(Inter.getLocText("Writer-ShortCuts_Setting"), writeShortCutsPane); - -// tabbedPane.addChangeListener(new ChangeListener() { -// @Override -// public void stateChanged(ChangeEvent e) { -// // 切换的时候这里会先于UITabbedPaneUI的MousePressed事件 -// // 会导致弹窗两次 -// int idx = ReportWriteAttrPane.this.getInvalidIndex(); -// if (idx >= 0 && idx != tabbedPane.getSelectedIndex()) { -// try { -// if (idx == 0) { -// ReportWriteAttrPane.this.submiterListPane.checkValid(); -// } else { -// ReportWriteAttrPane.this.verifierListPane.checkValid(); -// } -// } catch (Exception exp) { -// JOptionPane.showMessageDialog(ReportWriteAttrPane.this, exp.getMessage()); -// tabbedPane.setSelectedIndex(idx); -// } -// } -// } -// }); } @Override diff --git a/designer/src/com/fr/design/write/submit/SubmiterListPane.java b/designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java similarity index 86% rename from designer/src/com/fr/design/write/submit/SubmiterListPane.java rename to designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java index 1102f3f8d5..527f5183d8 100644 --- a/designer/src/com/fr/design/write/submit/SubmiterListPane.java +++ b/designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java @@ -1,255 +1,255 @@ -package com.fr.design.write.submit; - -import com.fr.data.SubmitJob; -import com.fr.design.ExtraDesignClassManager; -import com.fr.design.beans.BasicBeanPane; -import com.fr.design.fun.SubmitProvider; -import com.fr.design.gui.controlpane.NameObjectCreator; -import com.fr.design.gui.controlpane.NameableCreator; -import com.fr.design.gui.controlpane.ObjectJControlPane; -import com.fr.design.gui.icombobox.UIComboBox; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.mainframe.ElementCasePane; -import com.fr.design.scrollruler.ModLineBorder; -import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.ComparatorUtils; -import com.fr.general.FRLogger; -import com.fr.general.Inter; -import com.fr.general.NameObject; -import com.fr.report.write.SubmitVisitor; -import com.fr.stable.ArrayUtils; -import com.fr.stable.Nameable; -import com.fr.stable.bridge.StableFactory; -import com.fr.write.BuiltInSQLSubmiterProvider; -import com.fr.write.DBManipulation; -import com.fr.write.ReportWriteAttrProvider; -import com.fr.write.WClassSubmiterProvider; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class SubmiterListPane extends ObjectJControlPane { - - public SubmiterListPane(ElementCasePane ePane) { - super(ePane); - } - - /** - * 创建选项 - * - * @return 选项 - */ - public NameableCreator[] createNameableCreators() { - return new NameableCreator[]{ - new NameObjectCreator(Inter.getLocText("RWA-BuildIn_SQL"), - "/com/fr/web/images/reportlet.png", -// BuiltInSQLSubmiter.class, - StableFactory.getRegisteredClass(BuiltInSQLSubmiterProvider.TAG), - BuildInSQLPane.class), - new NameObjectCreator( - Inter.getLocText(new String[]{"Custom", "RWA-Submit"}), - "/com/fr/web/images/reportlet.png", -// WClassSubmiter.class, - StableFactory.getRegisteredClass(WClassSubmiterProvider.TAG), - CustomPane.class) - }; - } - - @Override - protected String title4PopupWindow() { - return "write"; - } - - public void populate(ReportWriteAttrProvider reportWriteAttr) { - if (reportWriteAttr == null) { - return; - } - - List nameObjectList = new ArrayList(); - - int submiterCount = reportWriteAttr.getSubmitVisitorCount(); - for (int i = 0; i < submiterCount; i++) { - SubmitVisitor submiter = reportWriteAttr.getSubmitVisitor(i); - String name = reportWriteAttr.getSubmitVisitorNameList(i); - nameObjectList.add(new NameObject(name, submiter)); - } - - this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); - } - - /** - * 更新填报属性 - * - * @param reportWriteAttr 报表填报属性 - */ - public void updateReportWriteAttr(ReportWriteAttrProvider reportWriteAttr) { - // Nameable[]居然不能强转成NameObject[],一定要这么写... - Nameable[] res = this.update(); - NameObject[] res_array = new NameObject[res.length]; - java.util.Arrays.asList(res).toArray(res_array); - - reportWriteAttr.clearSubmitVisitors(); - - for (int i = 0; i < res_array.length; i++) { - NameObject nameObject = res_array[i]; - if (nameObject.getObject() instanceof SubmitVisitor) { - reportWriteAttr.addSubmitVisitor(nameObject.getName(), (SubmitVisitor) nameObject.getObject()); - } - } - } - - public static class BuildInSQLPane extends BasicBeanPane { - protected DBManipulationPane dbManipulationPane; - private BuiltInSQLSubmiterProvider editing; - - public BuildInSQLPane() { - - } - - public BuildInSQLPane(ElementCasePane ePane) { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - dbManipulationPane = new SmartInsertDBManipulationPane(ePane); - this.add(dbManipulationPane, BorderLayout.CENTER); - } - - @Override - protected String title4PopupWindow() { - return "builtinsql"; - } - - @Override - public void populateBean(BuiltInSQLSubmiterProvider ob) { - editing = ob; - - DBManipulation dbManipulation = ob.getDBManipulation(); - dbManipulationPane.populateBean(dbManipulation); - } - - @Override - public BuiltInSQLSubmiterProvider updateBean() { - DBManipulation dbManipulation = dbManipulationPane.updateBean(); - - //复制对象用于撤销 - try{ - editing = (BuiltInSQLSubmiterProvider)editing.clone(); - }catch (Exception e){ - FRLogger.getLogger().error(e.getMessage()); - } - editing.setDBManipulation(dbManipulation); - - return editing; - } - - /** - * 检查是否符合规范 - * - * @throws Exception - */ - public void checkValid() throws Exception { - this.dbManipulationPane.checkValid(); - } - } - - public static class CustomPane extends BasicBeanPane { - private UIComboBox csjConfigComboBox = null; - private JPanel customCardPane = null; - private Map customSubmitPanes = null; - private final Map comboItemsMap; - - private List configTypes = null; - - private WClassSubmiterProvider editing; - - private static final String DEFAULT_PANE_TYPE = "submitnormal"; - - public CustomPane() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - customCardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); - customSubmitPanes = new HashMap(); - comboItemsMap = new HashMap(); - - SubmitProvider[] providers = ExtraDesignClassManager.getInstance().getSubmitProviders(); - providers = (SubmitProvider[])ArrayUtils.add(providers, new DefaultSubmit()); - for (SubmitProvider provider : providers) { - customSubmitPanes.put(provider.keyForSubmit(), provider.appearanceForSubmit()); - comboItemsMap.put(provider.keyForSubmit(), provider.dataForSubmit()); - } - - configTypes = new ArrayList(); - for (Map.Entry entry : customSubmitPanes.entrySet()) { - String key = entry.getKey(); - configTypes.add(comboItemsMap.get(key)); - customCardPane.add(entry.getValue(), key); - } - csjConfigComboBox = new UIComboBox(configTypes.toArray()); - - JPanel typePane = GUICoreUtils.createFlowPane(new Component[]{new UILabel(Inter.getLocText(new String[]{"Choose", "Type"}) + ":"), csjConfigComboBox}, - FlowLayout.LEFT, 10); - typePane.setBorder(BorderFactory.createTitledBorder(new ModLineBorder(ModLineBorder.TOP), Inter.getLocText(new String[]{"Submit", "Type"}))); - this.add(typePane, BorderLayout.NORTH); - - this.add(customCardPane, BorderLayout.CENTER); - - csjConfigComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - Object ob = e.getItem(); - CardLayout c1 = (CardLayout) customCardPane.getLayout(); - for (String key : customSubmitPanes.keySet()) { - String item = comboItemsMap.get(key); - if ((ComparatorUtils.equals(ob, item))) { - c1.show(customCardPane, key); - } - } - } - } - }); - } - - @Override - public void populateBean(WClassSubmiterProvider ob) { - editing = ob; - SubmitJob submitJob = ob.getSubmitJob(); - if (submitJob == null) { - csjConfigComboBox.setSelectedItem(comboItemsMap.get(DEFAULT_PANE_TYPE)); - - for (Map.Entry entry : customSubmitPanes.entrySet()) { - entry.getValue().populateBean(submitJob); - } - return; - } - String pantype=submitJob.getJobType(); - BasicBeanPane pane = customSubmitPanes.get(pantype); - if (pane != null) { - csjConfigComboBox.setSelectedItem(comboItemsMap.get(pantype)); - pane.populateBean(submitJob); - } - - - } - - @Override - public WClassSubmiterProvider updateBean() { - for (Map.Entry entry : customSubmitPanes.entrySet()) { - BasicBeanPane pane = entry.getValue(); - if (pane != null && pane.isVisible()) { - editing.setSubmitJob((SubmitJob) pane.updateBean()); - } - } - return editing; - } - - @Override - protected String title4PopupWindow() { - return "custom"; - } - } +package com.fr.design.write.submit; + +import com.fr.data.SubmitJob; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.fun.SubmitProvider; +import com.fr.design.gui.controlpane.NameObjectCreator; +import com.fr.design.gui.controlpane.NameableCreator; +import com.fr.design.gui.controlpane.ObjectJControlPane; +import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.ElementCasePane; +import com.fr.design.scrollruler.ModLineBorder; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.ComparatorUtils; +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.general.NameObject; +import com.fr.report.write.BuiltInSQLSubmiter; +import com.fr.report.write.SubmitVisitor; +import com.fr.report.write.WClassSubmiter; +import com.fr.stable.ArrayUtils; +import com.fr.stable.Nameable; +import com.fr.write.BuiltInSQLSubmiterProvider; +import com.fr.write.DBManipulation; +import com.fr.write.ReportWriteAttrProvider; +import com.fr.write.WClassSubmiterProvider; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SubmitVisitorListPane extends ObjectJControlPane { + + public SubmitVisitorListPane(ElementCasePane ePane) { + super(ePane); + } + + /** + * 创建选项 + * + * @return 选项 + */ + public NameableCreator[] createNameableCreators() { + return new NameableCreator[]{ + new NameObjectCreator(Inter.getLocText("RWA-BuildIn_SQL"), + "/com/fr/web/images/reportlet.png", + BuiltInSQLSubmiter.class, + BuildInSQLPane.class), + new NameObjectCreator( + Inter.getLocText(new String[]{"Custom", "RWA-Submit"}), + "/com/fr/web/images/reportlet.png", + WClassSubmiter.class, + CustomPane.class) + }; + } + + @Override + protected String title4PopupWindow() { + return "write"; + } + + public void populate(ReportWriteAttrProvider reportWriteAttr) { + if (reportWriteAttr == null) { + return; + } + + List nameObjectList = new ArrayList<>(); + + int submiterCount = reportWriteAttr.getSubmitVisitorCount(); + for (int i = 0; i < submiterCount; i++) { + SubmitVisitor visitor = reportWriteAttr.getSubmitVisitor(i); + nameObjectList.add(new NameObject(visitor.getName(), visitor)); + } + + this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); + } + + /** + * 更新填报属性 + * + * @param reportWriteAttr 报表填报属性 + */ + public void updateReportWriteAttr(ReportWriteAttrProvider reportWriteAttr) { + // Nameable[]居然不能强转成NameObject[],一定要这么写... + Nameable[] res = this.update(); + NameObject[] res_array = new NameObject[res.length]; + java.util.Arrays.asList(res).toArray(res_array); + + reportWriteAttr.clearSubmitVisitors(); + + for (int i = 0; i < res_array.length; i++) { + NameObject nameObject = res_array[i]; + if (nameObject.getObject() instanceof SubmitVisitor) { + SubmitVisitor visitor = (SubmitVisitor) nameObject.getObject(); + visitor.setName(nameObject.getName()); + reportWriteAttr.addSubmitVisitor(visitor); + } + } + } + + public static class BuildInSQLPane extends BasicBeanPane { + protected DBManipulationPane dbManipulationPane; + private BuiltInSQLSubmiterProvider editing; + + public BuildInSQLPane() { + + } + + public BuildInSQLPane(ElementCasePane ePane) { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + dbManipulationPane = new SmartInsertDBManipulationPane(ePane); + this.add(dbManipulationPane, BorderLayout.CENTER); + } + + @Override + protected String title4PopupWindow() { + return "builtinsql"; + } + + @Override + public void populateBean(BuiltInSQLSubmiterProvider ob) { + editing = ob; + + DBManipulation dbManipulation = ob.getDBManipulation(); + dbManipulationPane.populateBean(dbManipulation); + } + + @Override + public BuiltInSQLSubmiterProvider updateBean() { + DBManipulation dbManipulation = dbManipulationPane.updateBean(); + + //复制对象用于撤销 + try { + editing = (BuiltInSQLSubmiterProvider) editing.clone(); + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage()); + } + editing.setDBManipulation(dbManipulation); + + return editing; + } + + /** + * 检查是否符合规范 + * + * @throws Exception + */ + public void checkValid() throws Exception { + this.dbManipulationPane.checkValid(); + } + } + + public static class CustomPane extends BasicBeanPane { + private UIComboBox csjConfigComboBox = null; + private JPanel customCardPane = null; + private Map customSubmitPanes = null; + private final Map comboItemsMap; + + private List configTypes = null; + + private WClassSubmiterProvider editing; + + private static final String DEFAULT_PANE_TYPE = "submitnormal"; + + public CustomPane() { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + customCardPane = FRGUIPaneFactory.createCardLayout_S_Pane(); + customSubmitPanes = new HashMap(); + comboItemsMap = new HashMap(); + + SubmitProvider[] providers = ExtraDesignClassManager.getInstance().getSubmitProviders(); + providers = (SubmitProvider[]) ArrayUtils.add(providers, new DefaultSubmit()); + for (SubmitProvider provider : providers) { + customSubmitPanes.put(provider.keyForSubmit(), provider.appearanceForSubmit()); + comboItemsMap.put(provider.keyForSubmit(), provider.dataForSubmit()); + } + + configTypes = new ArrayList(); + for (Map.Entry entry : customSubmitPanes.entrySet()) { + String key = entry.getKey(); + configTypes.add(comboItemsMap.get(key)); + customCardPane.add(entry.getValue(), key); + } + csjConfigComboBox = new UIComboBox(configTypes.toArray()); + + JPanel typePane = GUICoreUtils.createFlowPane(new Component[]{new UILabel(Inter.getLocText(new String[]{"Choose", "Type"}) + ":"), csjConfigComboBox}, + FlowLayout.LEFT, 10); + typePane.setBorder(BorderFactory.createTitledBorder(new ModLineBorder(ModLineBorder.TOP), Inter.getLocText(new String[]{"Submit", "Type"}))); + this.add(typePane, BorderLayout.NORTH); + + this.add(customCardPane, BorderLayout.CENTER); + + csjConfigComboBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + Object ob = e.getItem(); + CardLayout c1 = (CardLayout) customCardPane.getLayout(); + for (String key : customSubmitPanes.keySet()) { + String item = comboItemsMap.get(key); + if ((ComparatorUtils.equals(ob, item))) { + c1.show(customCardPane, key); + } + } + } + } + }); + } + + @Override + public void populateBean(WClassSubmiterProvider ob) { + editing = ob; + SubmitJob submitJob = ob.getSubmitJob(); + if (submitJob == null) { + csjConfigComboBox.setSelectedItem(comboItemsMap.get(DEFAULT_PANE_TYPE)); + + for (Map.Entry entry : customSubmitPanes.entrySet()) { + entry.getValue().populateBean(submitJob); + } + return; + } + String pantype = submitJob.getJobType(); + BasicBeanPane pane = customSubmitPanes.get(pantype); + if (pane != null) { + csjConfigComboBox.setSelectedItem(comboItemsMap.get(pantype)); + pane.populateBean(submitJob); + } + + + } + + @Override + public WClassSubmiterProvider updateBean() { + for (Map.Entry entry : customSubmitPanes.entrySet()) { + BasicBeanPane pane = entry.getValue(); + if (pane != null && pane.isVisible()) { + editing.setSubmitJob((SubmitJob) pane.updateBean()); + } + } + return editing; + } + + @Override + protected String title4PopupWindow() { + return "custom"; + } + } } \ No newline at end of file From 32b1444a8943e0f68c3efb98cc39b499a4d7bf8c Mon Sep 17 00:00:00 2001 From: richie Date: Sun, 12 Jun 2016 19:34:33 +0800 Subject: [PATCH 22/31] =?UTF-8?q?=E5=A1=AB=E6=8A=A5=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E6=8A=BD=E5=8F=96=E9=80=9A=E7=94=A8=E5=B1=9E=E6=80=A7=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3,=E5=AE=9A=E6=97=B6=E5=99=A8=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=A1=AB=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/report/ReportWriteAttrAction.java | 2 +- .../src/com/fr/design/report/VerifierListPane.java | 2 +- .../com/fr/design/webattr/ReportWriteAttrPane.java | 11 +++++------ .../fr/design/write/submit/SubmitVisitorListPane.java | 6 +++--- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/designer/src/com/fr/design/actions/report/ReportWriteAttrAction.java b/designer/src/com/fr/design/actions/report/ReportWriteAttrAction.java index 6f752fa366..2aca0c60a0 100644 --- a/designer/src/com/fr/design/actions/report/ReportWriteAttrAction.java +++ b/designer/src/com/fr/design/actions/report/ReportWriteAttrAction.java @@ -51,7 +51,7 @@ public class ReportWriteAttrAction extends ReportComponentAction nameObjectList = new ArrayList<>(); int verifierCount = reportWriteAttr.getVerifierCount(); for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); nameObjectList.add(new NameObject(verifier.getName(), verifier)); } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } public void updateReportWriteAttr(ReportWriteAttrProvider reportWriteAttr) { // Nameable[]居然不能强转成NameObject[],一定要这么写... Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; java.util.Arrays.asList(res).toArray(res_array); reportWriteAttr.clearVerifiers(); for (int i = 0; i < res_array.length; i++) { NameObject nameObject = res_array[i]; if (nameObject.getObject() instanceof Verifier) { Verifier verifier = (Verifier) nameObject.getObject(); verifier.setName(nameObject.getName()); reportWriteAttr.addVerifier(verifier); } } } } \ No newline at end of file +package com.fr.design.report; import com.fr.data.Verifier; import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.VerifyDefineProvider; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ObjectJControlPane; import com.fr.design.mainframe.ElementCasePane; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.report.write.ReportWriteAttr; import com.fr.report.write.ValueVerifier; import com.fr.report.write.WClassVerifier; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import java.util.ArrayList; /** * 校验列表 */ public class VerifierListPane extends ObjectJControlPane { public VerifierListPane(ElementCasePane ePane) { super(ePane); } /** * 创建选项 * * @return 选项 */ public NameableCreator[] createNameableCreators() { NameableCreator[] creators = new NameableCreator[]{ new NameObjectCreator(Inter.getLocText(new String[]{"BuildIn", "Verify"}), "/com/fr/web/images/reportlet.png", ValueVerifier.class, BuildInVerifierPane.class) }; for (VerifyDefineProvider provider : ExtraDesignClassManager.getInstance().getVerifyDefineProviders()) { creators = ArrayUtils.add(creators, new NameObjectCreator( provider.nameForVerifier(), provider.iconPath(), provider.classForVerifier(), provider.appearanceForVerifier() ) { }); } creators = ArrayUtils.add(creators, new NameObjectCreator( Inter.getLocText(new String[]{"Custom", "Verify"}), "/com/fr/web/images/reportlet.png", WClassVerifier.class, CustomVerifierPane.class)); return creators; } @Override protected String title4PopupWindow() { return "Verify Collections"; } public void populate(ReportWriteAttr reportWriteAttr) { if (reportWriteAttr == null) { return; } java.util.List nameObjectList = new ArrayList<>(); int verifierCount = reportWriteAttr.getVerifierCount(); for (int i = 0; i < verifierCount; i++) { Verifier verifier = reportWriteAttr.getVerifier(i); nameObjectList.add(new NameObject(verifier.getName(), verifier)); } this.populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); } public void updateReportWriteAttr(ReportWriteAttr reportWriteAttr) { // Nameable[]居然不能强转成NameObject[],一定要这么写... Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; java.util.Arrays.asList(res).toArray(res_array); reportWriteAttr.clearVerifiers(); for (int i = 0; i < res_array.length; i++) { NameObject nameObject = res_array[i]; if (nameObject.getObject() instanceof Verifier) { Verifier verifier = (Verifier) nameObject.getObject(); verifier.setName(nameObject.getName()); reportWriteAttr.addVerifier(verifier); } } } } \ No newline at end of file diff --git a/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java b/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java index f84c9b0fca..2b9d4fdd96 100644 --- a/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java +++ b/designer/src/com/fr/design/webattr/ReportWriteAttrPane.java @@ -9,8 +9,7 @@ import com.fr.design.report.WriteShortCutsPane; import com.fr.design.write.submit.SubmitVisitorListPane; import com.fr.general.Inter; import com.fr.report.worksheet.WorkSheet; -import com.fr.stable.bridge.StableFactory; -import com.fr.write.ReportWriteAttrProvider; +import com.fr.report.write.ReportWriteAttr; import javax.swing.*; import java.awt.*; @@ -56,9 +55,9 @@ public class ReportWriteAttrPane extends LoadingBasicPane { return; } - ReportWriteAttrProvider reportWriteAttr = report.getReportWriteAttr(); + ReportWriteAttr reportWriteAttr = report.getAttributeTarget(ReportWriteAttr.XML_TAG); if (reportWriteAttr == null) { - reportWriteAttr = StableFactory.getMarkedInstanceObjectFromClass(ReportWriteAttrProvider.XML_TAG, ReportWriteAttrProvider.class); + reportWriteAttr = new ReportWriteAttr(); } this.submiterListPane.populate(reportWriteAttr); @@ -66,8 +65,8 @@ public class ReportWriteAttrPane extends LoadingBasicPane { } - public ReportWriteAttrProvider update() { - ReportWriteAttrProvider reportWriteAttr = StableFactory.getMarkedInstanceObjectFromClass(ReportWriteAttrProvider.XML_TAG, ReportWriteAttrProvider.class); + public ReportWriteAttr update() { + ReportWriteAttr reportWriteAttr = new ReportWriteAttr(); this.submiterListPane.updateReportWriteAttr(reportWriteAttr); this.verifierListPane.updateReportWriteAttr(reportWriteAttr); diff --git a/designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java b/designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java index 527f5183d8..033a01e5e1 100644 --- a/designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java +++ b/designer/src/com/fr/design/write/submit/SubmitVisitorListPane.java @@ -18,13 +18,13 @@ import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.NameObject; import com.fr.report.write.BuiltInSQLSubmiter; +import com.fr.report.write.ReportWriteAttr; import com.fr.report.write.SubmitVisitor; import com.fr.report.write.WClassSubmiter; import com.fr.stable.ArrayUtils; import com.fr.stable.Nameable; import com.fr.write.BuiltInSQLSubmiterProvider; import com.fr.write.DBManipulation; -import com.fr.write.ReportWriteAttrProvider; import com.fr.write.WClassSubmiterProvider; import javax.swing.*; @@ -66,7 +66,7 @@ public class SubmitVisitorListPane extends ObjectJControlPane { return "write"; } - public void populate(ReportWriteAttrProvider reportWriteAttr) { + public void populate(ReportWriteAttr reportWriteAttr) { if (reportWriteAttr == null) { return; } @@ -87,7 +87,7 @@ public class SubmitVisitorListPane extends ObjectJControlPane { * * @param reportWriteAttr 报表填报属性 */ - public void updateReportWriteAttr(ReportWriteAttrProvider reportWriteAttr) { + public void updateReportWriteAttr(ReportWriteAttr reportWriteAttr) { // Nameable[]居然不能强转成NameObject[],一定要这么写... Nameable[] res = this.update(); NameObject[] res_array = new NameObject[res.length]; From ad277d320f4258f79f668be97da4fe8e03f1f543 Mon Sep 17 00:00:00 2001 From: zhouping Date: Tue, 14 Jun 2016 09:46:01 +0800 Subject: [PATCH 23/31] =?UTF-8?q?bug:96398=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/design/gui/style/AlignmentPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/gui/style/AlignmentPane.java b/designer_base/src/com/fr/design/gui/style/AlignmentPane.java index 9409cc5736..1985960f18 100644 --- a/designer_base/src/com/fr/design/gui/style/AlignmentPane.java +++ b/designer_base/src/com/fr/design/gui/style/AlignmentPane.java @@ -81,7 +81,7 @@ public class AlignmentPane extends AbstractBasicStylePane implements GlobalNameO BaseUtils.readIcon("/com/fr/design/images/m_format/cellstyle/defaultAlignment.png")}; Integer[] hAlignment = new Integer[]{Constants.LEFT, Constants.CENTER, Constants.RIGHT, Integer.valueOf(Constants.DISTRIBUTED), Constants.NULL}; hAlignmentPane = new UIButtonGroup(hAlignmentIconArray, hAlignment); - hAlignmentPane.setAllToolTips(new String[]{Inter.getLocText("FR-Designer-StyleAlignment_Tooltips_Left"), Inter.getLocText("FR-Designer-StyleAlignment_Tooltips_Center"), Inter.getLocText("StyleAlignment-Tooltips_Right"), + hAlignmentPane.setAllToolTips(new String[]{Inter.getLocText("FR-Designer-StyleAlignment_Tooltips_Left"), Inter.getLocText("FR-Designer-StyleAlignment_Tooltips_Center"), Inter.getLocText("FR-Designer-StyleAlignment_Tooltips_Right"), Inter.getLocText("FR-Designer-StyleAlignment_Tooltips_Distributed"),Inter.getLocText("FR-Designer-StyleAlignment_Tooltips_DEFAULT")}); hPaneContainer = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); vPaneContainer = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); From c29cf4f5f1fac4ae4f7ef978dad19b48ade054ba Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 14 Jun 2016 11:33:20 +0800 Subject: [PATCH 24/31] =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 6f7d1e3b7b..5cf1bd1563 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2046,24 +2046,6 @@ public class RemoteEnv implements Env { } - private void readPlugins() throws Exception { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - HashMap para = new HashMap(); - para.put("op", "fr_remote_design"); - para.put("cmd", "design_plugins"); - - InputStream inputStream = postBytes2ServerB(out.toByteArray(), para); - String pluginsStr = IOUtils.inputStream2String(inputStream, EncodeConstants.ENCODING_UTF_8); - if (StringUtils.isNotBlank(pluginsStr) && pluginsStr.startsWith("[")) { - JSONArray jsonArray = new JSONArray(pluginsStr); - for (int i = 0; i < jsonArray.length(); i++) { - Plugin plugin = new Plugin(); - plugin.parseJSON(jsonArray.getJSONObject(i)); - PluginLoader.getLoader().addRemotePlugin(plugin); - } - } - } - private void readPluginLicenses() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); HashMap para = new HashMap(); @@ -2084,7 +2066,7 @@ public class RemoteEnv implements Env { @Override public void readPluginConfig() throws Exception { - readPlugins(); + PluginLoader.getLoader().readFromRemoteEnv(); readPluginLicenses(); } } \ No newline at end of file From f741aad4a49b9988c848b3d22ee4dcd466677d81 Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 14 Jun 2016 12:12:11 +0800 Subject: [PATCH 25/31] =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=8A=A0=E8=BD=BD=E8=A7=A3=E8=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer_base/src/com/fr/env/RemoteEnv.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/designer_base/src/com/fr/env/RemoteEnv.java b/designer_base/src/com/fr/env/RemoteEnv.java index 5cf1bd1563..dab9ec17e9 100644 --- a/designer_base/src/com/fr/env/RemoteEnv.java +++ b/designer_base/src/com/fr/env/RemoteEnv.java @@ -2046,7 +2046,7 @@ public class RemoteEnv implements Env { } - private void readPluginLicenses() throws Exception { + public void readPluginLicenses() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); HashMap para = new HashMap(); para.put("op", "fr_remote_design"); @@ -2065,8 +2065,6 @@ public class RemoteEnv implements Env { } @Override - public void readPluginConfig() throws Exception { - PluginLoader.getLoader().readFromRemoteEnv(); - readPluginLicenses(); + public void checkAndRegisterLic(FileNode node, Plugin plugin) throws Exception { } } \ No newline at end of file From 8fbe2ac5c2f93e9b77bb5d89c64a2c16932bbdd7 Mon Sep 17 00:00:00 2001 From: fr_shine Date: Tue, 14 Jun 2016 15:21:55 +0800 Subject: [PATCH 26/31] =?UTF-8?q?=E6=BB=9A=E5=8A=A8=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/chart/gui/ChartTypePane.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java index 686c130c12..2203f4963b 100644 --- a/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java +++ b/designer_chart/src/com/fr/design/mainframe/chart/gui/ChartTypePane.java @@ -7,6 +7,7 @@ import com.fr.chart.chartattr.Plot; import com.fr.chart.charttypes.ChartTypeManager; import com.fr.design.ChartTypeInterfaceManager; import com.fr.design.beans.FurtherBasicBeanPane; +import com.fr.design.dialog.BasicScrollPane; import com.fr.design.gui.frpane.UIComboBoxPane; import com.fr.design.mainframe.chart.AbstractChartAttrPane; import com.fr.design.mainframe.chart.ChartEditPane; @@ -37,8 +38,28 @@ public class ChartTypePane extends AbstractChartAttrPane{ content.add(buttonPane, BorderLayout.NORTH); chartTypePane = new ComboBoxPane(); - chartTypePane.setBorder(BorderFactory.createEmptyBorder(0,0, 0, 10)); - content.add(chartTypePane, BorderLayout.CENTER); + BasicScrollPane scrollPane = new BasicScrollPane() { + @Override + protected JPanel createContentPane() { + return chartTypePane; + } + + @Override + protected void layoutContentPane() { + leftcontentPane = createContentPane(); + this.add(leftcontentPane); + } + + @Override + public void populateBean(Object ob) { + } + + @Override + protected String title4PopupWindow() { + return null; + } + }; + content.add(scrollPane, BorderLayout.CENTER); buttonPane.setEditingChartPane(chartTypePane); From 41c53ab8ca171ca6adc5e9852c6e346cfad9aafd Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 16 Jun 2016 16:03:46 +0800 Subject: [PATCH 27/31] =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/ExtraDesignClassManager.java | 5 +++-- .../com/fr/design/dialog/BasicScrollPane.java | 7 ++++--- .../editor/editor/ColumnSelectedEditor.java | 1 - .../mobile/ElementCasePropertyTable.java | 18 ++++++++++++++---- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/designer_base/src/com/fr/design/ExtraDesignClassManager.java b/designer_base/src/com/fr/design/ExtraDesignClassManager.java index b0a6bb2a79..bc84cd662e 100644 --- a/designer_base/src/com/fr/design/ExtraDesignClassManager.java +++ b/designer_base/src/com/fr/design/ExtraDesignClassManager.java @@ -134,12 +134,12 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi private Set exportAttrTabProviders; + private Set verifyDefineProviders; + private Set backgroundQuickUIProviders; private Set backgroundUIProviders; - private Set verifyDefineProviders; - public TableDataPaneProcessor getTableDataPaneProcessor() { return tableDataPaneProcessor; } @@ -970,4 +970,5 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi writer.startTAG(XML_TAG); writer.end(); } + } \ No newline at end of file diff --git a/designer_base/src/com/fr/design/dialog/BasicScrollPane.java b/designer_base/src/com/fr/design/dialog/BasicScrollPane.java index d4fabca8b1..bdb5a012f1 100644 --- a/designer_base/src/com/fr/design/dialog/BasicScrollPane.java +++ b/designer_base/src/com/fr/design/dialog/BasicScrollPane.java @@ -154,8 +154,8 @@ public abstract class BasicScrollPane extends BasicBeanPane{ scrollBar.setVisible(false); } else { boolean show = isShowScrollBar(); - scrollBar.setEnabled(show); - scrollBar.setVisible(show); + scrollBar.setEnabled(show); + scrollBar.setVisible(show); } maxheight = getHeight() - DET_HEIGHT; if ((MAXVALUE - scrollBar.getVisibleAmount()) == 0) { @@ -180,7 +180,8 @@ public abstract class BasicScrollPane extends BasicBeanPane{ } leftcontentPane.validate(); } - } + + } protected boolean isShowScrollBar() { return true; diff --git a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java index 62f829aaf1..0f1c50a5fd 100644 --- a/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java +++ b/designer_base/src/com/fr/design/editor/editor/ColumnSelectedEditor.java @@ -13,7 +13,6 @@ import com.fr.stable.StringUtils; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; -import java.util.*; import java.util.List; import java.util.regex.Pattern; diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java index 9d4a14d5b5..c4fdf396b0 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java @@ -7,19 +7,22 @@ import com.fr.design.designer.creator.XCreator; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.gui.itable.AbstractPropertyTable; import com.fr.design.gui.itable.PropertyGroup; -import com.fr.design.gui.xtable.PropertyGroupModel; +import com.fr.design.gui.xtable.ReportAppPropertyGroupModel; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetPropertyPane; -import com.fr.design.mainframe.widget.editors.DoubleEditor; import com.fr.design.mainframe.widget.editors.InChangeBooleanEditor; +import com.fr.design.mainframe.widget.editors.RefinedDoubleEditor; import com.fr.form.ui.ElementCaseEditor; import com.fr.general.Inter; +import com.fr.stable.fun.ReportFitAttrProvider; import javax.swing.table.TableModel; import java.beans.IntrospectionException; import java.util.ArrayList; import java.util.List; +; + /** * Created by Administrator on 2016/5/16/0016. */ @@ -42,6 +45,8 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ } protected List createNonListenerProperties() throws IntrospectionException { + ReportFitAttrProvider attr = designer.getTarget().getFitAttr(); + CRPropertyDescriptor[] propertyTableEditor = { new CRPropertyDescriptor("horziontalAttr", this.xCreator.toData().getClass()).setEditorClass(MobileFitEditor.class) .setRendererClass(MobileFitRender.class) @@ -65,7 +70,7 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ protected CRPropertyDescriptor[] revealHeightLimit() throws IntrospectionException { CRPropertyDescriptor heightLimitProperty = new CRPropertyDescriptor("heightPercent", this.xCreator.toData().getClass()) - .setEditorClass(DoubleEditor.class) + .setEditorClass(RefinedDoubleEditor.class) .setI18NName(Inter.getLocText("Form-EC_heightpercent")) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, "Advanced"); ArrayList defaultList = (ArrayList) createNonListenerProperties(); @@ -91,7 +96,7 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ } - groups.add(new PropertyGroup(new PropertyGroupModel(Inter.getLocText("FR-Designer_Fit-App"), xCreator, propertyTableEditor, designer))); + groups.add(new PropertyGroup(new ReportAppPropertyGroupModel(Inter.getLocText("FR-Designer_Fit-App"), xCreator, propertyTableEditor, designer))); TableModel model = new BeanTableModel(); setModel(model); @@ -107,4 +112,9 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ this.designer = designer; initPropertyGroups(this.designer.getTarget()); } + + @Override + public boolean isCellEditable(int row, int column) { + return false; + } } From c92548a5dd8c28af0c746079dad7085a62c03bb3 Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 16 Jun 2016 16:10:34 +0800 Subject: [PATCH 28/31] 1 --- .../properties/mobile/ElementCasePropertyTable.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java index c4fdf396b0..85c70f810c 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java @@ -9,20 +9,17 @@ import com.fr.design.gui.itable.AbstractPropertyTable; import com.fr.design.gui.itable.PropertyGroup; import com.fr.design.gui.xtable.ReportAppPropertyGroupModel; import com.fr.design.mainframe.FormDesigner; -import com.fr.design.mainframe.WidgetPropertyPane; +import com.fr.design.mainframe.WidgetPropertyPane;; import com.fr.design.mainframe.widget.editors.InChangeBooleanEditor; import com.fr.design.mainframe.widget.editors.RefinedDoubleEditor; import com.fr.form.ui.ElementCaseEditor; import com.fr.general.Inter; -import com.fr.stable.fun.ReportFitAttrProvider; import javax.swing.table.TableModel; import java.beans.IntrospectionException; import java.util.ArrayList; import java.util.List; -; - /** * Created by Administrator on 2016/5/16/0016. */ @@ -45,8 +42,6 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ } protected List createNonListenerProperties() throws IntrospectionException { - ReportFitAttrProvider attr = designer.getTarget().getFitAttr(); - CRPropertyDescriptor[] propertyTableEditor = { new CRPropertyDescriptor("horziontalAttr", this.xCreator.toData().getClass()).setEditorClass(MobileFitEditor.class) .setRendererClass(MobileFitRender.class) @@ -112,9 +107,4 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ this.designer = designer; initPropertyGroups(this.designer.getTarget()); } - - @Override - public boolean isCellEditable(int row, int column) { - return false; - } } From 2268279e67a0ef812cb20924cfc79e34d2dcd5f9 Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 16 Jun 2016 17:20:25 +0800 Subject: [PATCH 29/31] 1 --- .../com/fr/design/ExtraDesignClassManager.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/designer_base/src/com/fr/design/ExtraDesignClassManager.java b/designer_base/src/com/fr/design/ExtraDesignClassManager.java index bc84cd662e..d8fae1dcf5 100644 --- a/designer_base/src/com/fr/design/ExtraDesignClassManager.java +++ b/designer_base/src/com/fr/design/ExtraDesignClassManager.java @@ -130,16 +130,26 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi private Set elementUIProviders; + private Set verifyDefineProviders; + private Set widgetAttrProviders; private Set exportAttrTabProviders; - private Set verifyDefineProviders; + private WidgetDesignHandler widgetDesignHandler; private Set backgroundQuickUIProviders; private Set backgroundUIProviders; + public WidgetDesignHandler getWidgetDesignHandler() { + return widgetDesignHandler; + } + + public void setWidgetDesignHandler(Level level, PluginSimplify simplify) throws Exception { + widgetDesignHandler = (WidgetDesignHandler) level; + } + public TableDataPaneProcessor getTableDataPaneProcessor() { return tableDataPaneProcessor; } @@ -911,6 +921,8 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi addSupportDesignApps(impl, simplify); } else if (tagName.equals(DesignerEnvProcessor.XML_TAG)) { setEnvProcessor(impl, simplify); + } else if (tagName.equals(WidgetDesignHandler.XML_TAG)) { + setWidgetDesignHandler(impl, simplify); } else if (tagName.equals(TableDataPaneProcessor.XML_TAG)) { setTableDataPaneProcessor(impl, simplify); } else if (tagName.equals(ElementUIProvider.MARK_STRING)) { @@ -970,5 +982,4 @@ public class ExtraDesignClassManager extends XMLFileManager implements ExtraDesi writer.startTAG(XML_TAG); writer.end(); } - } \ No newline at end of file From 565b8edc829d8de086a64e5f34195d44404d8352 Mon Sep 17 00:00:00 2001 From: neil Date: Thu, 16 Jun 2016 17:25:15 +0800 Subject: [PATCH 30/31] =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/designer/creator/XElementCase.java | 20 ++++++++++++++++--- .../mobile/ElementCasePropertyTable.java | 15 +++++++++++++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index 29310ca0c3..952360f54e 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -9,7 +9,10 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.CoverReportPane; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; -import com.fr.design.mainframe.widget.editors.*; +import com.fr.design.mainframe.WidgetPropertyPane; +import com.fr.design.mainframe.widget.editors.BooleanEditor; +import com.fr.design.mainframe.widget.editors.PaddingMarginEditor; +import com.fr.design.mainframe.widget.editors.WLayoutBorderStyleEditor; import com.fr.design.mainframe.widget.renderer.LayoutBorderStyleRenderer; import com.fr.design.mainframe.widget.renderer.PaddingMarginCellRenderer; import com.fr.form.FormElementCaseContainerProvider; @@ -18,6 +21,8 @@ import com.fr.form.ui.ElementCaseEditor; import com.fr.general.Inter; import com.fr.stable.ArrayUtils; import com.fr.stable.core.PropertyChangeAdapter; +import com.fr.stable.fun.FitProvider; +import com.fr.stable.fun.ReportFitAttrProvider; import javax.swing.*; import java.awt.*; @@ -29,6 +34,7 @@ import java.beans.PropertyDescriptor; public class XElementCase extends XBorderStyleWidgetCreator implements FormElementCaseContainerProvider{ private UILabel imageLable; private JPanel coverPanel; + private FormDesigner designer; public XElementCase(ElementCaseEditor widget, Dimension initSize) { super(widget, initSize); @@ -78,10 +84,18 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme }; FormElementCaseEditorProcessor processor = ExtraDesignClassManager.getInstance().getPropertyTableEditor(); - if (processor == null){ + this.designer = WidgetPropertyPane.getInstance().getEditingFormDesigner(); + FitProvider wbTpl = (FitProvider) designer.getTarget(); + ReportFitAttrProvider fitAttr = wbTpl.getFitAttr(); + ElementCaseEditor editor = this.toData(); + ReportFitAttrProvider reportFitAttr = editor.getReportFitAttr() == null ? fitAttr : editor.getReportFitAttr(); + PropertyDescriptor[] extraEditor = processor.createPropertyDescriptor(this.data.getClass(), reportFitAttr); + if (processor == null) { return propertyTableEditor; } - PropertyDescriptor[] extraEditor = processor.createPropertyDescriptor(this.data.getClass()); + if (editor.getReportFitAttr() == null) { + editor.setReportFitInPc(processor.getFitStateInPC(fitAttr)); + } return (CRPropertyDescriptor[]) ArrayUtils.addAll(propertyTableEditor, extraEditor); } diff --git a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java index 85c70f810c..c846d48f50 100644 --- a/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java +++ b/designer_form/src/com/fr/design/designer/properties/mobile/ElementCasePropertyTable.java @@ -1,6 +1,7 @@ package com.fr.design.designer.properties.mobile; import com.fr.base.FRContext; +import com.fr.base.mobile.MobileFitAttrState; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.CRPropertyDescriptor; import com.fr.design.designer.creator.XCreator; @@ -27,17 +28,20 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ private XCreator xCreator; private FormDesigner designer; + private boolean cascade = false; public ElementCasePropertyTable(XCreator xCreator) { this.xCreator = xCreator; } public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { - if (((ElementCaseEditor ) xCreator.toData()).getVerticalAttr().getState() == 2 && !((ElementCaseEditor ) xCreator.toData()).isHeightRestrict()) { + if (((ElementCaseEditor ) xCreator.toData()).getVerticalAttr() == MobileFitAttrState.VERTICAL && !((ElementCaseEditor ) xCreator.toData()).isHeightRestrict()) { ((ElementCaseEditor ) xCreator.toData()).setHeightRestrict(true); + cascade = true; return revealHeightLimit(); } CRPropertyDescriptor[] crp = ((ElementCaseEditor) xCreator.toData()).isHeightRestrict() ? revealHeightLimit() : getDefault(); + cascade = ((ElementCaseEditor ) xCreator.toData()).getVerticalAttr() == MobileFitAttrState.VERTICAL; return crp; } @@ -53,6 +57,7 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, Inter.getLocText("FR-Designer_Fit-App")), new CRPropertyDescriptor("heightRestrict", this.xCreator.toData().getClass()).setEditorClass(InChangeBooleanEditor.class) .setI18NName(Inter.getLocText("Form-EC_heightrestrict")) + .setRendererClass(BooleanRender.class) .putKeyValue(XCreatorConstants.PROPERTY_CATEGORY, Inter.getLocText("FR-Designer_Fit-App")) }; List defaultList = new ArrayList<>(); @@ -103,6 +108,14 @@ public class ElementCasePropertyTable extends AbstractPropertyTable{ designer.getEditListenerTable().fireCreatorModified(DesignerEvent.CREATOR_EDITED); } + @Override + public boolean isCellEditable(int row, int column) { + if (cascade && row ==3 ) { + return false; + } + return super.isCellEditable(row, column); + } + public void populate(FormDesigner designer) { this.designer = designer; initPropertyGroups(this.designer.getTarget()); From ea3f19be1e9faf42e512fb6d285e11853590f24a Mon Sep 17 00:00:00 2001 From: neil Date: Fri, 17 Jun 2016 10:35:48 +0800 Subject: [PATCH 31/31] =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/mobile/AppFitBrowserPane.java | 94 ------------------- .../report/mobile/AppFitPreviewPane.java | 71 -------------- .../report/mobile/MobileRadioGroupPane.java | 4 +- .../report/mobile/ReportMobileAttrPane.java | 41 +++++--- 4 files changed, 30 insertions(+), 180 deletions(-) delete mode 100644 designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java delete mode 100644 designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java diff --git a/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java b/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java deleted file mode 100644 index 43471b751d..0000000000 --- a/designer/src/com/fr/design/report/mobile/AppFitBrowserPane.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.fr.design.report.mobile; - -import com.fr.base.mobile.MobileFitAttrState; -import com.fr.design.beans.BasicBeanPane; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.Inter; -import com.fr.report.mobile.ElementCaseMobileAttr; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -/** - * Created by 夏翔 on 2016/5/28. - */ -public class AppFitBrowserPane extends BasicBeanPane { - //横屏设置面板 - private MobileRadioGroupPane horizionPane; - //竖屏设置面板 - private MobileRadioGroupPane verticalPane; - //缩放选项面板 - private MobileRadioCheckPane radioCheckPane; - //效果预览面板 - private AppFitPreviewPane appFitPreviewPane; - - - public AppFitBrowserPane(){ - initComponents(); - - } - - private void initComponents() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - JPanel borderPane = FRGUIPaneFactory.createTitledBorderPane(this.title4PopupWindow()); - JPanel fitOpsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - horizionPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Horizontal")); - verticalPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Vertical")); - radioCheckPane = new MobileRadioCheckPane(Inter.getLocText("FR-Designer_Mobile-Zoom")); - ActionListener actionListener = getAppPreviewActionListener(); - horizionPane.addActionListener(actionListener); - verticalPane.addActionListener(actionListener); - fitOpsPane.add(horizionPane, BorderLayout.NORTH); - fitOpsPane.add(verticalPane, BorderLayout.CENTER); - fitOpsPane.add(radioCheckPane, BorderLayout.SOUTH); - borderPane.add(fitOpsPane); - this.add(borderPane); - - } - - public void setAppFitPreviewPane(AppFitPreviewPane appFitPreviewPane) { - this.appFitPreviewPane = appFitPreviewPane; - } - - //纵向和横向独立设置 - public int[] getCurrentFitOptions() { - return new int[]{horizionPane.getSelectRadioIndex(), verticalPane.getSelectRadioIndex(), radioCheckPane.getCurrentState()}; - } - - @Override - public void populateBean(ElementCaseMobileAttr ob) { - if (ob == null) { - ob = new ElementCaseMobileAttr(); - } - horizionPane.populateBean(ob.getHorziontalAttr()); - verticalPane.populateBean(ob.getVerticalAttr()); - radioCheckPane.populateBean(ob.isZoom()); - appFitPreviewPane.refreshPreview(getCurrentFitOptions()); - - } - - @Override - public ElementCaseMobileAttr updateBean() { - MobileFitAttrState horizonState = horizionPane.updateBean(); - MobileFitAttrState verticalState = verticalPane.updateBean(); - boolean isZoom = radioCheckPane.updateBean(); - return new ElementCaseMobileAttr(horizonState, verticalState, isZoom); - } - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Designer_Fit-App"); - } - - private ActionListener getAppPreviewActionListener() { - return new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - int[] fitOptions = getCurrentFitOptions(); - appFitPreviewPane.refreshPreview(fitOptions); - } - }; - } -} diff --git a/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java b/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java deleted file mode 100644 index 3625e4ba4e..0000000000 --- a/designer/src/com/fr/design/report/mobile/AppFitPreviewPane.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.fr.design.report.mobile; - -import com.fr.design.dialog.BasicPane; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.general.IOUtils; -import com.fr.general.Inter; - -import javax.swing.*; -import java.util.ArrayList; - -/** - * Created by 夏翔 on 2016/5/28. - */ -public class AppFitPreviewPane extends BasicPane{ - - private UILabel horizontalImageLabel; - - private UILabel verticalImagelabel; - - private ArrayList cachedVerticalPreviewImage = new ArrayList(); - - private ArrayList cachedHorizonPreviewImage = new ArrayList(); - - - public AppFitPreviewPane() { - //初始化缓存图片 - initCacheImage(); - //初始化组件 - initComponents(); - } - - private void initCacheImage() { - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/V0.png"))); - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/V1.png"))); - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/V2.png"))); - cachedVerticalPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/V3.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/H0.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/H1.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/H2.png"))); - cachedHorizonPreviewImage.add(new ImageIcon(IOUtils.readImage("/com/fr/design/images/dialog/appfit/H3.png"))); - } - - private void initComponents() { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - - JPanel outnorthPane = FRGUIPaneFactory.createTitledBorderPane(this.title4PopupWindow()); - this.add(outnorthPane); - - horizontalImageLabel = new UILabel(); - horizontalImageLabel.setIcon(cachedHorizonPreviewImage.get(1)); - outnorthPane.add(horizontalImageLabel); - - verticalImagelabel = new UILabel(); - verticalImagelabel.setIcon(cachedVerticalPreviewImage.get(0)); - outnorthPane.add(verticalImagelabel); - } - - public void refreshPreview(int[] index) { - ImageIcon newHorizonImageIcon = cachedHorizonPreviewImage.get(index[0]) ; - ImageIcon newVerticalImageIcon = cachedVerticalPreviewImage.get(index[1]); - horizontalImageLabel.setIcon(newHorizonImageIcon); - verticalImagelabel.setIcon(newVerticalImageIcon); - - } - - @Override - protected String title4PopupWindow() { - return Inter.getLocText("FR-Plugin_Preview"); - } -} diff --git a/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java b/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java index 85cee58e8f..9e66389264 100644 --- a/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java +++ b/designer/src/com/fr/design/report/mobile/MobileRadioGroupPane.java @@ -1,11 +1,11 @@ package com.fr.design.report.mobile; +import com.fr.base.mobile.MobileFitAttrState; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.base.mobile.MobileFitAttrState; import com.fr.stable.StringUtils; import javax.swing.*; @@ -17,7 +17,7 @@ import java.util.List; /** * Created by Administrator on 2016/5/16/0016. */ -public class MobileRadioGroupPane extends BasicBeanPane{ +public class MobileRadioGroupPane extends BasicBeanPane { private List radioButtons = new ArrayList(); diff --git a/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java b/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java index 1d2d399319..a4522c14a6 100644 --- a/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java +++ b/designer/src/com/fr/design/report/mobile/ReportMobileAttrPane.java @@ -1,33 +1,43 @@ package com.fr.design.report.mobile; +import com.fr.base.mobile.MobileFitAttrState; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.Inter; import com.fr.report.mobile.ElementCaseMobileAttr; import javax.swing.*; +import java.awt.*; /** * Created by Administrator on 2016/5/12/0012. */ -public class ReportMobileAttrPane extends BasicBeanPane{ +public class ReportMobileAttrPane extends BasicBeanPane { - - private AppFitBrowserPane appFitBrowserPane; + //横屏设置面板 + private MobileRadioGroupPane horizionPane; + //竖屏设置面板 + private MobileRadioGroupPane verticalPane; + //缩放设置面板 + private MobileRadioCheckPane radioCheckPane; public ReportMobileAttrPane() { initComponents(); } private void initComponents() { - this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); - this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); - AppFitPreviewPane appFitPreviewPane = new AppFitPreviewPane(); - - appFitBrowserPane = new AppFitBrowserPane(); - appFitBrowserPane.setAppFitPreviewPane(appFitPreviewPane); - this.add(appFitBrowserPane); + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel borderPane = FRGUIPaneFactory.createTitledBorderPane(this.title4PopupWindow()); - this.add(appFitPreviewPane); + JPanel fitOpsPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + horizionPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Horizontal")); + verticalPane = new MobileRadioGroupPane(Inter.getLocText("FR-Designer_Mobile-Vertical")); + radioCheckPane = new MobileRadioCheckPane(Inter.getLocText("FR-Designer_Mobile-Zoom")); + fitOpsPane.add(horizionPane, BorderLayout.NORTH); + fitOpsPane.add(verticalPane, BorderLayout.CENTER); + fitOpsPane.add(radioCheckPane, BorderLayout.SOUTH); + borderPane.add(fitOpsPane); + this.add(borderPane); } @Override @@ -35,13 +45,18 @@ public class ReportMobileAttrPane extends BasicBeanPane{ if (ob == null) { ob = new ElementCaseMobileAttr(); } - appFitBrowserPane.populateBean(ob); + horizionPane.populateBean(ob.getHorziontalAttr()); + verticalPane.populateBean(ob.getVerticalAttr()); + radioCheckPane.populateBean(ob.isZoom()); } @Override public ElementCaseMobileAttr updateBean() { - return appFitBrowserPane.updateBean(); + MobileFitAttrState horizonState = horizionPane.updateBean(); + MobileFitAttrState verticalState = verticalPane.updateBean(); + boolean isZoom = radioCheckPane.updateBean(); + return new ElementCaseMobileAttr(horizonState, verticalState, isZoom); } @Override