From a0883aed7f16bddc40d113e268aafac2d4f3ae0b Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 22 Jun 2018 14:11:41 +0800 Subject: [PATCH 01/13] =?UTF-8?q?REPORT-8813=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E5=A2=9E=E5=8A=A0=E5=8A=A0=E8=BD=BD=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B=E7=9A=84loading=20,=E5=8D=95=E4=BE=8B=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E8=A6=81=E6=94=BE=E5=88=B0=E5=9F=BA=E7=A1=80=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E4=B9=8B=E5=90=8E=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/iprogressbar/UIProgressBorder.java | 5 +- .../src/com/fr/start/Designer.java | 19 -------- .../com/fr/start/module/DesignerStartup.java | 46 +++++++++++++++---- 3 files changed, 42 insertions(+), 28 deletions(-) diff --git a/designer-base/src/com/fr/design/gui/iprogressbar/UIProgressBorder.java b/designer-base/src/com/fr/design/gui/iprogressbar/UIProgressBorder.java index fb0207078..c4df50e82 100644 --- a/designer-base/src/com/fr/design/gui/iprogressbar/UIProgressBorder.java +++ b/designer-base/src/com/fr/design/gui/iprogressbar/UIProgressBorder.java @@ -1,6 +1,7 @@ package com.fr.design.gui.iprogressbar; import com.fr.design.border.UIRoundedBorder; +import com.fr.stable.OperatingSystem; import java.awt.AlphaComposite; import java.awt.BasicStroke; @@ -62,7 +63,9 @@ public class UIProgressBorder extends UIRoundedBorder { g2d.fill(new RoundRectangle2D.Double(x, y, width, height, 0, 0)); g2d.setColor(oldColor); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); - paintBorderShadow(g2d, 7, x, y, width, height); + if(OperatingSystem.isWindows()){//mac下自带阴影 + paintBorderShadow(g2d, 7, x, y, width, height); + } g2d.setColor(oldColor); g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1f)); diff --git a/designer-realize/src/com/fr/start/Designer.java b/designer-realize/src/com/fr/start/Designer.java index a2ef7df4f..553b580d7 100644 --- a/designer-realize/src/com/fr/start/Designer.java +++ b/designer-realize/src/com/fr/start/Designer.java @@ -137,25 +137,6 @@ public class Designer extends BaseDesigner { TemplateInfoCollector.getInstance(); } }); - - service.submit(new Runnable() { - @Override - public void run() { - CellElementPropertyPane.getInstance(); - } - }); - service.submit(new Runnable() { - @Override - public void run() { - DesignerFrameFileDealerPane.getInstance();//这边会涉及到TemplateTreePane - } - }); - service.submit(new Runnable() { - @Override - public void run() { - WidgetInfoConfig.getInstance(); - } - }); service.shutdown(); } diff --git a/designer-realize/src/com/fr/start/module/DesignerStartup.java b/designer-realize/src/com/fr/start/module/DesignerStartup.java index c78905c7e..5a2ed7faa 100644 --- a/designer-realize/src/com/fr/start/module/DesignerStartup.java +++ b/designer-realize/src/com/fr/start/module/DesignerStartup.java @@ -1,8 +1,11 @@ package com.fr.start.module; +import com.fr.design.mainframe.CellElementPropertyPane; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.event.Event; import com.fr.event.Listener; +import com.fr.form.ui.WidgetInfoConfig; import com.fr.module.Activator; import com.fr.start.Designer; import com.fr.start.EnvSwitcher; @@ -26,6 +29,7 @@ public class DesignerStartup extends Activator { startSub(BasicActivator.class); final String[] args = getModule().upFindSingleton(StartupArgs.class).get(); final Designer designer = new Designer(args); + preLoadSomething(); //启动env startSub(DesignerWorkspaceProvider.class); startSub(EnvBasedModule.class); @@ -46,31 +50,57 @@ public class DesignerStartup extends Activator { DesignerContext.getDesignerFrame().getProgressDialog().setVisible(true); startSub(StartFinishActivator.class); } - + + /** + * 基础模块结束后可以提前加载一部分依赖基础模块(国际化,图标样式之类)的东西 + */ + private void preLoadSomething(){ + ExecutorService service = Executors.newCachedThreadPool(); + service.submit(new Runnable() { + @Override + public void run() { + CellElementPropertyPane.getInstance(); + } + }); + service.submit(new Runnable() { + @Override + public void run() { + DesignerFrameFileDealerPane.getInstance();//这边会涉及到TemplateTreePane + } + }); + service.submit(new Runnable() { + @Override + public void run() { + WidgetInfoConfig.getInstance(); + } + }); + service.shutdown(); + } + /** * 切换环境时,重新启动所有相关模块 */ private void registerEnvListener() { - + listenEvent(WorkspaceEvent.BeforeSwitch, new Listener() { - + @Override public void on(Event event, Workspace param) { - + getSub(EnvBasedModule.class).stop(); } }); listenEvent(WorkspaceEvent.AfterSwitch, new Listener() { - + @Override public void on(Event event, Workspace param) { - + getSub(EnvBasedModule.class).start(); } }); } - - + + @Override public void stop() { From 69fe19bec4befd685f62831069becd93f9d8e198 Mon Sep 17 00:00:00 2001 From: ju Date: Fri, 22 Jun 2018 16:06:40 +0800 Subject: [PATCH 02/13] =?UTF-8?q?CHART-2425=20=E3=80=90=E9=98=BB=E5=A1=9E?= =?UTF-8?q?=E3=80=91=E3=80=9010.0=E3=80=9110.0release=E9=87=8C=E7=9A=84?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=E6=8B=96=E5=88=B0=E8=A1=A8=E5=8D=95=E9=87=8C?= =?UTF-8?q?=E9=83=BD=E4=B8=8D=E8=83=BD=E7=94=A8=20socketio=E5=85=88?= =?UTF-8?q?=E4=B8=8D=E7=94=A8=EF=BC=8C=E6=97=A5=E5=BF=97=E7=9A=84=E5=86=8D?= =?UTF-8?q?=E6=83=B3=E6=96=B9=E6=A1=88=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../loghandler/socketio/DesignerSocketIO.java | 92 ------------------- .../start/module/DesignerModuleActivator.java | 2 - 2 files changed, 94 deletions(-) delete mode 100644 designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java diff --git a/designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java b/designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java deleted file mode 100644 index 85f9911f2..000000000 --- a/designer-base/src/com/fr/design/mainframe/loghandler/socketio/DesignerSocketIO.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.fr.design.mainframe.loghandler.socketio; - -import com.fr.design.mainframe.loghandler.DesignerLogHandler; -import com.fr.event.Event; -import com.fr.event.EventDispatcher; -import com.fr.event.Listener; -import com.fr.general.LogRecordTime; -import com.fr.general.LogUtils; -import com.fr.log.FineLoggerFactory; -import com.fr.third.guava.base.Optional; -import com.fr.workspace.WorkContext; -import com.fr.workspace.Workspace; -import com.fr.workspace.WorkspaceEvent; -import io.socket.client.Socket; -import io.socket.emitter.Emitter; - -import java.io.ByteArrayInputStream; - -public class DesignerSocketIO { - - private static Optional socketIO = Optional.absent(); - - private static final Emitter.Listener printLog = new Emitter.Listener() { - @Override - public void call(Object... objects) { - try { - LogRecordTime[] logRecordTimes = LogUtils.readXMLLogRecords(new ByteArrayInputStream((byte[]) objects[0])); - for (LogRecordTime logRecordTime : logRecordTimes) { - DesignerLogHandler.getInstance().printRemoteLog(logRecordTime); - } - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - } - }; - - static { - EventDispatcher.listen(WorkspaceEvent.BeforeSwitch, new Listener() { - @Override - public void on(Event event, Workspace param) { - if (socketIO.isPresent()) { - socketIO.get().close(); - socketIO = Optional.absent(); - } - } - }); - EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener() { - @Override - public void on(Event event, Workspace param) { - updateSocket(); - } - }); - } - - public static void init() { - updateSocket(); - } - - private static void updateSocket() { - - if (WorkContext.getCurrent().isLocal()) { - return; - } - try { -// RemoteEnvConfig config = ((RemoteEnv)env).getEnvConfig(); -// String uri = String.format("http://%s:%s%s?%s=%s", -// config.getHost(), -// WebSocketConfig.getInstance().getPort(), -// EnvConstants.WS_NAMESPACE, -// DecisionServiceConstants.WEB_SOCKET_TOKEN_NAME, -// EnvContext.currentToken()); -// -// socketIO = Optional.of(IO.socket(new URI(uri))); -// socketIO.get().on(EnvConstants.WS_LOGRECORD, printLog); -// socketIO.get().on(EnvConstants.CONFIG, new Emitter.Listener() { -// @Override -// public void call(Object... objects) { -// if (objects == null || objects.length != 1) { -// throw new IllegalArgumentException("config should have only one param"); -// } -// Object param = objects[0]; -// if (param instanceof Class) { -// EventDispatcher.fire(ConfigEvent.EDIT, (Class) param); -// } -// } -// }); -// socketIO.get().connect(); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - } -} \ No newline at end of file diff --git a/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java b/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java index fde57bb3a..08c488df2 100644 --- a/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java +++ b/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java @@ -1,6 +1,5 @@ package com.fr.start.module; -import com.fr.design.mainframe.loghandler.socketio.DesignerSocketIO; import com.fr.design.module.ChartDesignerModule; import com.fr.design.module.DesignerModule; import com.fr.general.ModuleContext; @@ -19,7 +18,6 @@ public class DesignerModuleActivator extends Activator implements Prepare { public void start() { ModuleContext.startModule(DesignerModule.class.getName()); - DesignerSocketIO.init(); ChartDesignerModule.register(); } From 430d184c69c32fbfe65ae2f4de7c59f073246b75 Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 22 Jun 2018 16:17:44 +0800 Subject: [PATCH 03/13] =?UTF-8?q?REPORT-8962=2010.0=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=95=86=E5=9F=8E=E6=9B=B4=E6=96=B0=E4=B8=8B=E8=BD=BD=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E9=80=82=E9=85=8D=E5=92=8C=E8=84=9A=E6=9C=AC=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0(=E4=BF=AE=E6=94=B9url=E7=94=9F=E6=88=90=E6=96=B9?= =?UTF-8?q?=E5=BC=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer-base/src/com/fr/design/extra/PluginUtils.java | 4 +++- designer-base/src/com/fr/design/extra/WebViewDlgHelper.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/designer-base/src/com/fr/design/extra/PluginUtils.java b/designer-base/src/com/fr/design/extra/PluginUtils.java index 124ef323f..a804ed820 100644 --- a/designer-base/src/com/fr/design/extra/PluginUtils.java +++ b/designer-base/src/com/fr/design/extra/PluginUtils.java @@ -15,6 +15,7 @@ import com.fr.plugin.error.PluginErrorCode; import com.fr.plugin.manage.PluginManager; import com.fr.plugin.view.PluginView; import com.fr.stable.EncodeConstants; +import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import java.io.File; @@ -35,6 +36,7 @@ import java.util.Map; public class PluginUtils { private static final String ERROR_CODE_I18N_PREFIX = "FR-Plugin_Error_"; + public static final String FR_VERSION = "fr_version"; public static PluginMarker createPluginMarker(String pluginInfo) { @@ -109,7 +111,7 @@ public class PluginUtils { private static String getDownloadPath(String id) throws Exception { HashMap map = new HashMap(); map.put("id", id); - HttpClient httpClient = new HttpClient(CloudCenter.getInstance().acquireUrlByKind("shop.plugin.scripts_10")); + HttpClient httpClient = new HttpClient(CloudCenter.getInstance().acquireUrlByKind("shop.script.download")+ "?" + FR_VERSION + "=" + ProductConstants.VERSION); httpClient.asGet(); String resText = httpClient.getResponseText(); JSONObject resultJSONObject = new JSONObject(resText); diff --git a/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java b/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java index 18afa06bb..dfca29ea8 100644 --- a/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java +++ b/designer-base/src/com/fr/design/extra/WebViewDlgHelper.java @@ -296,7 +296,7 @@ public class WebViewDlgHelper { new SwingWorker() { @Override protected Void doInBackground() throws Exception { - HttpClient httpClient = new HttpClient(CloudCenter.getInstance().acquireUrlByKind("shop.plugin.cv_10") + "&version=" + PluginStoreConstants.getInstance().getProps("VERSION")); + HttpClient httpClient = new HttpClient(CloudCenter.getInstance().acquireUrlByKind("shop.plugin.update") + "?" + PluginUtils.FR_VERSION + "=" + ProductConstants.VERSION + "&version=" + PluginStoreConstants.getInstance().getProps("VERSION")); httpClient.asGet(); if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { String text = httpClient.getResponseText(); From 6c71ebed2b059e8295c0c26a69a48aa614a8419d Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 22 Jun 2018 16:50:41 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=90=8D=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer-base/src/com/fr/design/extra/PluginWebBridge.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/com/fr/design/extra/PluginWebBridge.java b/designer-base/src/com/fr/design/extra/PluginWebBridge.java index 767a3ea2c..931f5d68a 100644 --- a/designer-base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer-base/src/com/fr/design/extra/PluginWebBridge.java @@ -559,7 +559,7 @@ public class PluginWebBridge { uiLabel.setText(Inter.getLocText("FR-Base_UnSignIn")); } - public void updatePluginStore(final JSObject callback){ + public void getPackInfo(final JSObject callback){ JSCallback jsCallback = new JSCallback(webEngine, callback); jsCallback.execute(StringUtils.EMPTY); } From c74810869de027b39e32860ff13fc00ca4831bda Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 22 Jun 2018 18:14:06 +0800 Subject: [PATCH 05/13] =?UTF-8?q?REPORT-9019=20=E7=BB=9D=E5=AF=B9=E5=B8=83?= =?UTF-8?q?=E5=B1=80=E9=80=82=E5=BA=94=E5=8C=BA=E5=9F=9F=EF=BC=8C=E5=87=8F?= =?UTF-8?q?=E5=B0=91=E4=B8=8D=E5=90=8C=E5=88=86=E8=BE=A8=E7=8E=87=E4=B8=8B?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=9D=90=E6=A0=87=E7=9A=84=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E8=AF=AF=E5=B7=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/designer/creator/XWAbsoluteLayout.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer-form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer-form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index 0122fc971..b66add8e6 100644 --- a/designer-form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer-form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -248,10 +248,10 @@ public class XWAbsoluteLayout extends XLayoutContainer { for (int i = 0; i < this.getComponentCount(); i++) { XCreator creator = getXCreator(i); Rectangle rec = new Rectangle(creator.getBounds()); - rec.x = (int) (rec.x / prevContainerPercent * containerPercent); - rec.y = (int) (rec.y / prevContainerPercent * containerPercent); - rec.height = (int) (rec.height / prevContainerPercent * containerPercent); - rec.width = (int) (rec.width / prevContainerPercent * containerPercent); + rec.x = (int)Math.round (rec.x / prevContainerPercent * containerPercent); + rec.y = (int)Math.round (rec.y / prevContainerPercent * containerPercent); + rec.height = (int)Math.round (rec.height / prevContainerPercent * containerPercent); + rec.width = (int)Math.round (rec.width / prevContainerPercent * containerPercent); BoundsWidget wgt = (BoundsWidget) toData().getBoundsWidget(creator.toData()); wgt.setBounds(rec); creator.setBounds(rec); From 694b6e266aaf87d8b49a15e6b5066db5d0168c1b Mon Sep 17 00:00:00 2001 From: zheng Date: Sat, 23 Jun 2018 17:00:46 +0800 Subject: [PATCH 06/13] =?UTF-8?q?CHART-2426=20=E6=B3=A8=E5=86=8C=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E7=BC=96=E8=BE=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/actions/core/ActionFactory.java | 25 ++----------------- .../com/fr/design/module/DesignerModule.java | 7 +++--- 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/designer-base/src/com/fr/design/actions/core/ActionFactory.java b/designer-base/src/com/fr/design/actions/core/ActionFactory.java index 00824285c..036b82a32 100644 --- a/designer-base/src/com/fr/design/actions/core/ActionFactory.java +++ b/designer-base/src/com/fr/design/actions/core/ActionFactory.java @@ -9,7 +9,8 @@ import com.fr.design.menu.MenuKeySet; import com.fr.design.selection.QuickEditor; import com.fr.log.FineLoggerFactory; -import javax.swing.*; +import javax.swing.Action; +import javax.swing.KeyStroke; import java.awt.event.KeyEvent; import java.lang.reflect.Constructor; import java.util.ArrayList; @@ -139,28 +140,6 @@ public class ActionFactory { chartPreStyleAction = action; } - /** - * kunsnat: 图表注册 悬浮元素编辑器 , 因为ChartCollection和ChartQuickEditor一个在Chart,一个在Designer, 所以分开注册. - * - * @param editorClass 悬浮元素图表编辑器类 - */ - public static void registerChartFloatEditorInEditor(Class editorClass) { - if (chartCollectionClass != null) { - registerFloatEditorClass(chartCollectionClass, editorClass); - } - } - - /** - * kunsnat: 图表注册 单元格元素编辑器 , 因为ChartCollecion和ChartQuickEditor一个在Chart,一个在Designer, 所以分开注册. - * - * @param editorClass 单元格元素图表编辑器类 - */ - public static void registerChartCellEditorInEditor(Class editorClass) { - if (chartCollectionClass != null) { - registerCellEditorClass(chartCollectionClass, editorClass); - } - } - /** * 图表预定义样式Action * diff --git a/designer-realize/src/com/fr/design/module/DesignerModule.java b/designer-realize/src/com/fr/design/module/DesignerModule.java index 5b95d034f..0b88782a2 100644 --- a/designer-realize/src/com/fr/design/module/DesignerModule.java +++ b/designer-realize/src/com/fr/design/module/DesignerModule.java @@ -13,6 +13,7 @@ import com.fr.base.frpx.exception.InvalidWorkBookException; import com.fr.base.io.XMLEncryptUtils; import com.fr.base.process.ProcessOperator; import com.fr.base.remote.RemoteDeziConstants; +import com.fr.chart.chartattr.ChartCollection; import com.fr.config.ServerPreferenceConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; @@ -49,13 +50,13 @@ import com.fr.design.parameter.WorkBookParameterReader; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.file.FILE; import com.fr.general.ComparatorUtils; -import com.fr.log.FineLoggerFactory; import com.fr.general.Inter; import com.fr.general.ModuleContext; import com.fr.general.xml.GeneralXMLTools; import com.fr.io.importer.Excel2007ReportImporter; import com.fr.io.importer.ExcelReportImporter; import com.fr.io.utils.ResourceIOUtils; +import com.fr.log.FineLoggerFactory; import com.fr.main.impl.WorkBook; import com.fr.main.impl.WorkBookAdapter; import com.fr.main.impl.WorkBookX; @@ -161,7 +162,7 @@ public class DesignerModule extends DesignModule { ActionFactory.registerCellEditor(BufferedImage.class, new CellImageQuickEditor()); ActionFactory.registerCellEditor(CellImagePainter.class, new CellImageQuickEditor()); //todo 图表编辑器populate没能实现刷新面板显示 - ActionFactory.registerChartCellEditorInEditor(BasicChartQuickEditor.class); + ActionFactory.registerCellEditorClass(ChartCollection.class, BasicChartQuickEditor.class); Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); for (ElementUIProvider provider : providers) { @@ -191,7 +192,7 @@ public class DesignerModule extends DesignModule { ActionFactory.registerFloatEditor(BufferedImage.class, new FloatImageQuickEditor()); ActionFactory.registerFloatEditor(CellImagePainter.class, new FloatImageQuickEditor()); //todo 图表编辑器populate没能实现刷新面板显示 - ActionFactory.registerChartFloatEditorInEditor(FloatChartQuickEditor.class); + ActionFactory.registerFloatEditorClass(ChartCollection.class, FloatChartQuickEditor.class); } /** From 4f20da587e7dfa481149d14e142f76f03ee41f88 Mon Sep 17 00:00:00 2001 From: zheng Date: Mon, 25 Jun 2018 09:15:45 +0800 Subject: [PATCH 07/13] update --- .../com/fr/design/module/DesignerModule.java | 20 ++++++++++--------- .../start/module/DesignerModuleActivator.java | 1 + 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/designer-realize/src/com/fr/design/module/DesignerModule.java b/designer-realize/src/com/fr/design/module/DesignerModule.java index 0b88782a2..08df15c2c 100644 --- a/designer-realize/src/com/fr/design/module/DesignerModule.java +++ b/designer-realize/src/com/fr/design/module/DesignerModule.java @@ -131,25 +131,27 @@ public class DesignerModule extends DesignModule { GeneralXMLTools.Object_XML_Writer_Finder = startObjectXMLWriterFinder(); addAdapterForPlate(); - registerCellEditor(); - registerFloatEditor(); - registerData4Form(); - registerOtherPane(); - InformationCollector.getInstance().collectStartTime(); ExtraDesignClassManager.getInstance().getFeedback().didFeedback(); StableFactory.registerMarkedObject(LogProvider.MARK_STRING, DesignerLogImpl.getInstance()); } - private void registerOtherPane() { + public static void register() { + registerCellEditor(); + registerFloatEditor(); + registerData4Form(); + registerOtherPane(); + } + + private static void registerOtherPane() { StableFactory.registerMarkedClass(BBSGuestPaneProvider.XML_TAG, BBSGuestPane.class); } /** * kunsnat:注册单元格选中Editor */ - private void registerCellEditor() { + private static void registerCellEditor() { ActionFactory.registerCellEditor(String.class, new CellStringQuickEditor()); ActionFactory.registerCellEditor(Number.class, new CellStringQuickEditor()); @@ -184,7 +186,7 @@ public class DesignerModule extends DesignModule { /** * kunnat: 注册悬浮选中Editor */ - private void registerFloatEditor() { + private static void registerFloatEditor() { ActionFactory.registerFloatEditor(String.class, new FloatStringQuickEditor()); ActionFactory.registerFloatEditor(Formula.class, new FloatStringQuickEditor()); @@ -494,7 +496,7 @@ public class DesignerModule extends DesignModule { } - private void registerData4Form() { + private static void registerData4Form() { StableFactory.registerMarkedClass(FormECDesignerProvider.XML_TAG, FormElementCaseDesigner.class); StableFactory.registerMarkedClass(FormECCompositeProvider.XML_TAG, FormReportComponentComposite.class); DesignModuleFactory.registerParameterReader(new WorkBookParameterReader()); diff --git a/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java b/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java index 08c488df2..e6b0e1ab0 100644 --- a/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java +++ b/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java @@ -19,6 +19,7 @@ public class DesignerModuleActivator extends Activator implements Prepare { ModuleContext.startModule(DesignerModule.class.getName()); + DesignerModule.register(); ChartDesignerModule.register(); } From 36abb23817fc9fb6538507203bd43ea6e98aaf01 Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 25 Jun 2018 09:17:09 +0800 Subject: [PATCH 08/13] =?UTF-8?q?REPORT-8754=20=E6=A8=A1=E6=9D=BF=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=8F=8C=E5=90=91=E8=87=AA=E9=80=82=E5=BA=94=E5=90=8E?= =?UTF-8?q?frm=E9=87=8C=E7=9A=84=E7=BD=91=E9=A1=B5=E6=A1=86=E9=87=8C?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98(10.0?= =?UTF-8?q?=E4=BC=A0=E4=B8=80=E4=BB=BD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapters/layout/FRBodyLayoutAdapter.java | 12 +-- .../fr/design/designer/creator/XCreator.java | 6 +- .../design/designer/creator/XWFitLayout.java | 3 +- .../cardlayout/XWCardMainBorderLayout.java | 88 +++++++++++-------- ...bsoluteBodyLayoutPropertiesGroupModel.java | 4 +- .../FRAbsoluteBodyLayoutDefinePane.java | 4 +- 6 files changed, 68 insertions(+), 49 deletions(-) diff --git a/designer-form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java b/designer-form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java index 75190ba3b..05da6975c 100644 --- a/designer-form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java +++ b/designer-form/src/com/fr/design/designer/beans/adapters/layout/FRBodyLayoutAdapter.java @@ -620,8 +620,8 @@ public class FRBodyLayoutAdapter extends AbstractLayoutAdapter { } else { currentCreator.setLocation(finalX, finalY); currentCreator.setSize(finalW, finalH); - currentCreator.recalculateChildWidth(finalW); - currentCreator.recalculateChildHeight(finalH); + currentCreator.recalculateChildWidth(finalW, false); + currentCreator.recalculateChildHeight(finalH, false); child.setLocation(xL, yL); child.setSize(dim); } @@ -1078,7 +1078,7 @@ public class FRBodyLayoutAdapter extends AbstractLayoutAdapter { int offset = comp.getHeight() - length; comp.setSize(comp.getWidth(), offset); XCreator creator = (XCreator) comp; - creator.recalculateChildHeight(offset); + creator.recalculateChildHeight(offset, false); } } @@ -1100,7 +1100,7 @@ public class FRBodyLayoutAdapter extends AbstractLayoutAdapter { int offset = comp.getHeight() - length; comp.setSize(comp.getWidth(), offset); XCreator creator = (XCreator) comp; - creator.recalculateChildHeight(offset); + creator.recalculateChildHeight(offset, false); } } childY += actualVal; @@ -1134,7 +1134,7 @@ public class FRBodyLayoutAdapter extends AbstractLayoutAdapter { int offset = comp.getWidth() - length; comp.setSize(offset, comp.getHeight()); XCreator creator = (XCreator) comp; - creator.recalculateChildWidth(offset); + creator.recalculateChildWidth(offset, false); } } childX += actualVal; @@ -1155,7 +1155,7 @@ public class FRBodyLayoutAdapter extends AbstractLayoutAdapter { int offset = comp.getWidth() - length; comp.setSize(offset, comp.getHeight()); XCreator creator = (XCreator) comp; - creator.recalculateChildWidth(offset); + creator.recalculateChildWidth(offset, false); } } diff --git a/designer-form/src/com/fr/design/designer/creator/XCreator.java b/designer-form/src/com/fr/design/designer/creator/XCreator.java index 8aa2f215e..d71f81387 100644 --- a/designer-form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer-form/src/com/fr/design/designer/creator/XCreator.java @@ -576,15 +576,17 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo /** * 重新调整子组件宽度 * @param width 宽度 + * @param actualSize 是否按照实际大小计算 */ - public void recalculateChildWidth(int width){ + public void recalculateChildWidth(int width, boolean actualSize){ return; } /** * 重新调整子组件高度 * @param height 高度 + * @param actualSize 是否按照实际大小计算 */ - public void recalculateChildHeight(int height){ + public void recalculateChildHeight(int height, boolean actualSize){ return; } diff --git a/designer-form/src/com/fr/design/designer/creator/XWFitLayout.java b/designer-form/src/com/fr/design/designer/creator/XWFitLayout.java index 722e86676..a5d4537ef 100644 --- a/designer-form/src/com/fr/design/designer/creator/XWFitLayout.java +++ b/designer-form/src/com/fr/design/designer/creator/XWFitLayout.java @@ -373,7 +373,7 @@ public class XWFitLayout extends XLayoutContainer { if (x == 0) { int width = notHasRightCreator(rec) ? this.getWidth() : rec.width+dw; creator.setBounds(0, rec.y, width, rec.height); - creator.recalculateChildWidth(width); + creator.recalculateChildWidth(width, true); } else { XCreator leftCreator = getCreatorAt(rec.x-1, rec.y); int posX = getPosX(leftCreator); @@ -502,6 +502,7 @@ public class XWFitLayout extends XLayoutContainer { if (y==0) { int height = notHasBottomCreator(rec) ? this.getHeight() : rec.height+dh; creator.setBounds(rec.x, 0, rec.width, height); + creator.recalculateChildHeight(height, true); } else { XCreator topCreator = getCreatorAt(rec.x, rec.y-1); int posY = getPosY(topCreator); diff --git a/designer-form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer-form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index 9a32c3987..fa43b57fe 100644 --- a/designer-form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer-form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -260,74 +260,90 @@ public class XWCardMainBorderLayout extends XWBorderLayout { return tabLayoutList; } - /** - * 重新调整子组件的宽度 - * @param width 宽度 - */ - @Override - public void recalculateChildWidth(int width){ + /** + * 重新调整子组件的宽度 + * @param width 宽度 + * @param actualSize 是否按照实际大小计算 + */ + @Override + public void recalculateChildWidth(int width, boolean actualSize){ ArrayList childrenList = this.getTargetChildrenList(); int size = childrenList.size(); if (size > 0) { for (int j = 0; j < size; j++) { XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList .get(j); - tabLayout.setBackupBound(tabLayout.getBounds()); - int refSize = tabLayout.getWidth(); + + + Dimension d = new Dimension(tabLayout.toData().getContainerWidth(), tabLayout.toData().getContainerHeight()); + Rectangle rec = actualSize? new Rectangle(d): tabLayout.getBounds(); + // 容器大小改变时,设下backupBound为其之前的实际大小 + tabLayout.setBackupBound(rec); + int refSize = rec.width; int offest = width - refSize; double percent = (double) offest / refSize; if (percent < 0 && !tabLayout.canReduce(percent)) { return; } - tabLayout.setSize(tabLayout.getWidth() + offest, - tabLayout.getHeight()); - for (int m = 0; m < tabLayout.getComponentCount(); m++) { - XCreator childCreator = tabLayout.getXCreator(m); - BoundsWidget wgt = (BoundsWidget) tabLayout.toData() - .getBoundsWidget(childCreator.toData()); - wgt.setBounds(tabLayout.getComponent(m).getBounds()); + tabLayout.setSize(rec.width + offest, rec.height); + if(!actualSize){ + updateChildWidgetBounds(tabLayout); } tabLayout.adjustCreatorsWidth(percent); } } - } + } - /** - * 重新调整子组件的高度 - * @param height 高度 - */ - @Override - public void recalculateChildHeight(int height){ + /** + * 重新调整子组件的高度 + * @param height 高度 + * @param actualSize 是否按照实际大小计算 + */ + @Override + public void recalculateChildHeight(int height, boolean actualSize){ ArrayList childrenList = this.getTargetChildrenList(); int size = childrenList.size(); if (size > 0) { for (int j = 0; j < size; j++) { XWTabFitLayout tabLayout = (XWTabFitLayout) childrenList .get(j); - tabLayout.setBackupBound(tabLayout.getBounds()); - int refSize = tabLayout.getHeight(); + Dimension d = new Dimension(tabLayout.toData().getContainerWidth(), tabLayout.toData().getContainerHeight()); + Rectangle rec = actualSize? new Rectangle(d): tabLayout.getBounds(); + // 容器大小改变时,设下backupBound为其之前的实际大小 + tabLayout.setBackupBound(rec); + int refSize = rec.height; int offset = height - refSize - WCardMainBorderLayout.TAB_HEIGHT; - if(offset < 0){ - // 缩放时需要备份原tab布局宽高 - tabLayout.setReferDim(new Dimension(tabLayout.getWidth(),tabLayout.getHeight())); - } + if(offset < 0){ + // 缩放时需要备份原tab布局宽高 + tabLayout.setReferDim(new Dimension(rec.width, rec.height)); + } double percent = (double) offset / refSize; if (percent < 0 && !tabLayout.canReduce(percent)) { return; } - tabLayout.setSize(tabLayout.getWidth(), - tabLayout.getHeight() + offset); - for (int m = 0; m < tabLayout.getComponentCount(); m++) { - XCreator childCreator = tabLayout.getXCreator(m); - BoundsWidget wgt = (BoundsWidget) tabLayout.toData() - .getBoundsWidget(childCreator.toData()); - wgt.setBounds(tabLayout.getComponent(m).getBounds()); + tabLayout.setSize(rec.width, rec.height + offset); + if(!actualSize){ + updateChildWidgetBounds(tabLayout); } tabLayout.adjustCreatorsHeight(percent); } } - } + } + + + /** + * 更新下子组件bounds + * @param tabLayout tabFit布局 + */ + private void updateChildWidgetBounds(XWTabFitLayout tabLayout){ + for (int m = 0; m < tabLayout.getComponentCount(); m++) { + XCreator childCreator = tabLayout.getXCreator(m); + BoundsWidget wgt = (BoundsWidget) tabLayout.toData() + .getBoundsWidget(childCreator.toData()); + wgt.setBounds(tabLayout.getComponent(m).getBounds()); + } + } @Override public void paint(Graphics g) { diff --git a/designer-form/src/com/fr/design/designer/properties/FRAbsoluteBodyLayoutPropertiesGroupModel.java b/designer-form/src/com/fr/design/designer/properties/FRAbsoluteBodyLayoutPropertiesGroupModel.java index b6f3a41a6..8e0b76bec 100644 --- a/designer-form/src/com/fr/design/designer/properties/FRAbsoluteBodyLayoutPropertiesGroupModel.java +++ b/designer-form/src/com/fr/design/designer/properties/FRAbsoluteBodyLayoutPropertiesGroupModel.java @@ -222,8 +222,8 @@ public class FRAbsoluteBodyLayoutPropertiesGroupModel extends FRAbsoluteLayoutPr } for (int i = 0;i < components.length;i++){ if (components[i] instanceof XWCardMainBorderLayout){ - ((XWCardMainBorderLayout)components[i]).recalculateChildWidth(components[i].getWidth()); - ((XWCardMainBorderLayout)components[i]).recalculateChildHeight(components[i].getHeight()); + ((XWCardMainBorderLayout)components[i]).recalculateChildWidth(components[i].getWidth(), false); + ((XWCardMainBorderLayout)components[i]).recalculateChildHeight(components[i].getHeight(), false); } xwFitLayout.dealDirections((XCreator)components[i], false); } diff --git a/designer-form/src/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java b/designer-form/src/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java index f895118f1..53d6de6d9 100644 --- a/designer-form/src/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java +++ b/designer-form/src/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java @@ -232,8 +232,8 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { } for (int i = 0; i < components.length; i++) { if (components[i] instanceof XWCardMainBorderLayout) { - ((XWCardMainBorderLayout) components[i]).recalculateChildWidth(components[i].getWidth()); - ((XWCardMainBorderLayout) components[i]).recalculateChildHeight(components[i].getHeight()); + ((XWCardMainBorderLayout) components[i]).recalculateChildWidth(components[i].getWidth(), false); + ((XWCardMainBorderLayout) components[i]).recalculateChildHeight(components[i].getHeight(), false); } xwFitLayout.dealDirections((XCreator) components[i], false); } From 671ab85cf4d5cc6f9c9e2fd23f8bc53b6e2e8c68 Mon Sep 17 00:00:00 2001 From: zheng Date: Mon, 25 Jun 2018 11:31:46 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E5=88=A0=E9=99=A4=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E7=9B=B8=E5=85=B3module?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/module/DesignModule.java | 102 --- .../src/com/fr/start/BaseDesigner.java | 3 - .../fr/design/module/ChartDesignerModule.java | 90 --- .../fr/design/module/FormDesignerModule.java | 105 --- .../src/com/fr/start/Designer4Form.java | 36 - .../com/fr/design/module/DesignerModule.java | 504 -------------- .../src/com/fr/start/Designer.java | 9 - .../start/module/DesignerModuleActivator.java | 613 +++++++++++++++++- 8 files changed, 606 insertions(+), 856 deletions(-) delete mode 100644 designer-base/src/com/fr/design/module/DesignModule.java delete mode 100644 designer-chart/src/com/fr/design/module/ChartDesignerModule.java delete mode 100644 designer-form/src/com/fr/design/module/FormDesignerModule.java delete mode 100644 designer-form/src/com/fr/start/Designer4Form.java delete mode 100644 designer-realize/src/com/fr/design/module/DesignerModule.java diff --git a/designer-base/src/com/fr/design/module/DesignModule.java b/designer-base/src/com/fr/design/module/DesignModule.java deleted file mode 100644 index 34f149ab7..000000000 --- a/designer-base/src/com/fr/design/module/DesignModule.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.fr.design.module; - -import com.fr.design.ExtraDesignClassManager; -import com.fr.design.actions.core.ActionFactory; -import com.fr.design.fun.ElementUIProvider; -import com.fr.design.gui.controlpane.NameObjectCreator; -import com.fr.design.gui.controlpane.NameableCreator; -import com.fr.design.hyperlink.ReportletHyperlinkPane; -import com.fr.design.hyperlink.WebHyperlinkPane; -import com.fr.design.javascript.EmailPane; -import com.fr.design.javascript.JavaScriptImplPane; -import com.fr.design.javascript.ParameterJavaScriptPane; -import com.fr.design.mainframe.App; -import com.fr.design.mainframe.DesignerFrame; -import com.fr.general.Inter; -import com.fr.general.ModuleContext; -import com.fr.js.EmailJavaScript; -import com.fr.js.JavaScriptImpl; -import com.fr.js.ParameterJavaScript; -import com.fr.js.ReportletHyperlink; -import com.fr.js.WebHyperlink; -import com.fr.module.TopModule; -import com.fr.stable.bridge.StableFactory; -import com.fr.stable.plugin.ExtraDesignClassManagerProvider; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -/** - * Created by IntelliJ IDEA. - * Author : Richer - * Version: 6.5.6 - * Date : 11-11-24 - * Time : 下午2:52 - * 所有设计器模块的父类 - */ -public abstract class DesignModule extends TopModule { - public static final String LOCALE_FILE_PATH = "com/fr/design/i18n/main"; - - public void start() { - super.start(); - App[] apps = apps4TemplateOpener(); - for (App app : apps) { - DesignerFrame.registApp(app); - } - ModuleContext.registerStartedModule(DesignModule.class.getName(), this); - StableFactory.registerMarkedClass(ExtraDesignClassManagerProvider.XML_TAG, ExtraDesignClassManager.class); - ActionFactory.registerCellInsertActionClass(actionsForInsertCellElement()); - ActionFactory.registerFloatInsertActionClass(actionsForInsertFloatElement()); - DesignModuleFactory.registerCreators4Hyperlink(hyperlinkTypes()); - } - - public boolean isStarted() { - return ModuleContext.isModuleStarted(DesignModule.class.getName()); - } - - /** - * 返回设计器能打开的模板类型的一个数组列表 - * - * @return 可以打开的模板类型的数组 - */ - public abstract App[] apps4TemplateOpener(); - - /** - * 国际化文件路径 - * - * @return 国际化文件路径 - */ - public String[] getLocaleFile() { - return new String[]{LOCALE_FILE_PATH}; - } - - public Class[] actionsForInsertCellElement() { - List> classes = new ArrayList<>(); - Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); - for (ElementUIProvider provider : providers) { - classes.add(provider.actionForInsertCellElement()); - } - return classes.toArray(new Class[classes.size()]); - } - - public Class[] actionsForInsertFloatElement() { - List> classes = new ArrayList<>(); - Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); - for (ElementUIProvider provider : providers) { - classes.add(provider.actionForInsertFloatElement()); - } - return classes.toArray(new Class[classes.size()]); - } - - public NameableCreator[] hyperlinkTypes() { - return new NameableCreator[]{ - new NameObjectCreator(Inter.getLocText("FR-Hyperlink_Reportlet"), ReportletHyperlink.class, ReportletHyperlinkPane.ChartNoRename.class), - new NameObjectCreator(Inter.getLocText("FR-Designer_Email"), EmailJavaScript.class, EmailPane.class), - new NameObjectCreator(Inter.getLocText("Hyperlink-Web_link"), WebHyperlink.class, WebHyperlinkPane.ChartNoRename.class), - new NameObjectCreator(Inter.getLocText("JavaScript-Dynamic_Parameters"), ParameterJavaScript.class, ParameterJavaScriptPane.ChartNoRename.class), - new NameObjectCreator(Inter.getLocText("FR-Designer_JavaScript"), JavaScriptImpl.class, JavaScriptImplPane.ChartNoRename.class) - }; - } - -} \ No newline at end of file diff --git a/designer-base/src/com/fr/start/BaseDesigner.java b/designer-base/src/com/fr/start/BaseDesigner.java index 8bc56e33d..1e15cbff5 100644 --- a/designer-base/src/com/fr/start/BaseDesigner.java +++ b/designer-base/src/com/fr/start/BaseDesigner.java @@ -190,9 +190,6 @@ public abstract class BaseDesigner extends ToolBarMenuDock { } } - - protected abstract String module2Start(); - // 收集用户信息码 protected void collectUserInformation() { diff --git a/designer-chart/src/com/fr/design/module/ChartDesignerModule.java b/designer-chart/src/com/fr/design/module/ChartDesignerModule.java deleted file mode 100644 index 3b086e275..000000000 --- a/designer-chart/src/com/fr/design/module/ChartDesignerModule.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.fr.design.module; - -import com.fr.chart.base.ChartInternationalNameContentBean; -import com.fr.chart.chartattr.Chart; -import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.charttypes.ChartTypeManager; -import com.fr.design.ChartTypeInterfaceManager; -import com.fr.design.actions.core.ActionFactory; -import com.fr.design.chart.ChartDialog; -import com.fr.design.chart.gui.ChartComponent; -import com.fr.design.chart.gui.ChartWidgetOption; -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.gui.core.WidgetOption; -import com.fr.design.mainframe.App; -import com.fr.design.mainframe.ChartPropertyPane; -import com.fr.form.ui.ChartEditor; -import com.fr.general.IOUtils; -import com.fr.general.Inter; -import com.fr.plugin.chart.vanchart.imgevent.design.DesignImageEvent; -import com.fr.stable.ArrayUtils; -import com.fr.stable.bridge.StableFactory; -import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider; -import com.fr.van.chart.DownloadOnlineSourcesHelper; -import com.fr.van.chart.map.server.ChartMapEditorAction; - -import javax.swing.Icon; - -/** - * Created by IntelliJ IDEA. - * Author : Richer - * Version: 7.0.3 - * Date: 13-7-8 - * Time: 上午9:13 - */ -public class ChartDesignerModule extends DesignModule { - - public static void register(){ - StableFactory.registerMarkedClass(ExtraChartDesignClassManagerProvider.XML_TAG, ChartTypeInterfaceManager.class); - StableFactory.getStaticMarkedInstanceObjectFromClass(ExtraChartDesignClassManagerProvider.XML_TAG, ExtraChartDesignClassManagerProvider.class); - - DesignModuleFactory.registerHyperlinkGroupType(new ChartHyperlinkGroup()); - - DesignModuleFactory.registerChartEditorClass(ChartEditor.class); - DesignModuleFactory.registerChartComponentClass(ChartComponent.class); - - DesignModuleFactory.registerChartDialogClass(ChartDialog.class); - - DesignModuleFactory.registerChartPropertyPaneClass(ChartPropertyPane.class); - - ActionFactory.registerChartPreStyleAction(new ChartPreStyleAction()); - ActionFactory.registerChartMapEditorAction(new ChartMapEditorAction()); - - ActionFactory.registerChartCollection(ChartCollection.class); - - DesignModuleFactory.registerExtraWidgetOptions(ChartTypeInterfaceManager.initWidgetOption()); - - DesignImageEvent.registerDefaultCallbackEvent(HistoryTemplateListPane.getInstance()); - DesignImageEvent.registerDownloadSourcesEvent(new DownloadOnlineSourcesHelper()); - } - - /** - * 返回设计器能打开的模板类型的一个数组列表 - * - * @return 可以打开的模板类型的数组 - */ - public App[] apps4TemplateOpener() { - return new App[0]; - } - protected WidgetOption[] options4Show() { - ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstance().getAllChartBaseNames(); - ChartWidgetOption[] child = new ChartWidgetOption[typeName.length]; - for (int i = 0; i < typeName.length; i++) { - String plotID = typeName[i].getPlotID(); - Chart[] rowChart = ChartTypeManager.getInstance().getChartTypes(plotID); - if (ArrayUtils.isEmpty(rowChart)) { - continue; - } - String iconPath = ChartTypeInterfaceManager.getInstance().getIconPath(plotID); - Icon icon = IOUtils.readIcon(iconPath); - child[i] = new ChartWidgetOption(Inter.getLocText(typeName[i].getName()), icon, ChartEditor.class, rowChart[0]); - } - return child; - } - - public String getInterNationalName() { - return Inter.getLocText("FR-Chart-Design_ChartModule"); - } - - -} diff --git a/designer-form/src/com/fr/design/module/FormDesignerModule.java b/designer-form/src/com/fr/design/module/FormDesignerModule.java deleted file mode 100644 index 648244200..000000000 --- a/designer-form/src/com/fr/design/module/FormDesignerModule.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.fr.design.module; - -import com.fr.base.FRContext; -import com.fr.base.io.XMLEncryptUtils; -import com.fr.design.DesignerEnvManager; -import com.fr.design.bridge.DesignToolbarProvider; -import com.fr.design.form.parameter.FormParaDesigner; -import com.fr.design.mainframe.*; -import com.fr.design.mainframe.actions.NewFormAction; -import com.fr.design.parameter.FormParameterReader; -import com.fr.design.parameter.ParameterPropertyPane; -import com.fr.design.widget.ui.btn.FormSubmitButtonDetailPane; -import com.fr.file.FILE; -import com.fr.form.main.Form; -import com.fr.form.stable.ElementCaseThumbnailProcessor; -import com.fr.general.Inter; -import com.fr.general.ModuleContext; -import com.fr.stable.Constants; -import com.fr.stable.bridge.StableFactory; - -import java.util.HashMap; - -/** - * Created by IntelliJ IDEA. Author : Richer Version: 6.5.6 Date : 11-11-24 Time - * : 下午3:43 - */ -public class FormDesignerModule extends DesignModule { - - public void start() { - super.start(); - ModuleContext.startModule(CHART_DESIGNER_MODULE); - - StableFactory.registerMarkedObject(DesignToolbarProvider.STRING_MARKED, WidgetToolBarPane.getInstance()); - - DesignModuleFactory.registerNewFormActionClass(NewFormAction.class); - DesignModuleFactory.registerFormParaDesignerClass(FormParaDesigner.class); - DesignModuleFactory.registerParaPropertyPaneClass(ParameterPropertyPane.class); - DesignModuleFactory.registerFormHierarchyPaneClass(FormHierarchyTreePane.class); - DesignModuleFactory.registerWidgetPropertyPaneClass(WidgetPropertyPane.class); - DesignModuleFactory.registerButtonDetailPaneClass(FormSubmitButtonDetailPane.class); - DesignModuleFactory.registerParameterReader(new FormParameterReader()); - - registerData4Designer(); - - StableFactory.registerMarkedObject(ElementCaseThumbnailProcessor.MARK_STRING, new ElementCaseThumbnail()); - } - - private void registerData4Designer(){ - StableFactory.registerMarkedClass(BaseJForm.XML_TAG, JForm.class); - } - - /** - *apps模板的Opener - * @return 返回app - */ - public App[] apps4TemplateOpener() { - return new App[]{new AbstractAppProvider
() { - - @Override - public String[] defaultExtensions() { - return new String[]{"frm", "form"}; - } - - @Override - public JTemplate openTemplate(FILE tplFile) { - HashMap classType = new HashMap(); - classType.put(Constants.ARG_0, Form.class); - classType.put(Constants.ARG_1, FILE.class); - - return (JTemplate) StableFactory.getMarkedInstanceObjectFromClass(BaseJForm.XML_TAG, - new Object[]{asIOFile(tplFile), tplFile}, classType, BaseJForm.class); - } - - @Override - public Form asIOFile(FILE file) { - if (XMLEncryptUtils.isCptEncoded() && - !XMLEncryptUtils.checkVaild(DesignerEnvManager.getEnvManager().getEncryptionKey())) { - if (!new DecodeDialog(file).isPwdRight()) { - FRContext.getLogger().error(Inter.getLocText("FR-Engine_ECP_error_pwd")); - return new Form(); - } - } - - - // peter:打开新报表. - Form tpl = new Form(); - // richer:打开报表通知 -// FRContext.getLogger().info(Inter.getLocText("LOG-Is_Being_Openned") + "\"" + file.getName() + "\"" + "," + Inter.getLocText("LOG-Please_Wait") + "..."); - FRContext.getLogger().info(Inter.getLocText(new String[]{"LOG-Is_Being_Openned", "LOG-Please_Wait"}, - new String[]{"\"" + file.getName() + "\"" + ",", "..."})); - try { - tpl.readStream(file.asInputStream()); - } catch (Exception exp) { - FRContext.getLogger().error("Failed to generate frm from " + file, exp); - return null; - } - return tpl; - } - }}; - } - - public String getInterNationalName() { - return Inter.getLocText("FR-Designer_formDesignerModule"); - } -} \ No newline at end of file diff --git a/designer-form/src/com/fr/start/Designer4Form.java b/designer-form/src/com/fr/start/Designer4Form.java deleted file mode 100644 index 276d45011..000000000 --- a/designer-form/src/com/fr/start/Designer4Form.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.fr.start; - -import com.fr.design.mainframe.actions.NewFormAction; -import com.fr.design.menu.ShortCut; -import com.fr.design.module.FormDesignerModule; - - -public class Designer4Form extends BaseDesigner { - - /** - * 主函数 - * @param args 入口参数 - */ - public static void main(String[] args) { - new Designer4Form(args); - } - - public Designer4Form(String[] args) { - super(args); - } - - @Override - protected String module2Start() { - return FormDesignerModule.class.getName(); - } - - /** - * 创建新建文件菜单 - * @return 菜单 - */ - public ShortCut[] createNewFileShortCuts() { - return new ShortCut[]{ - new NewFormAction() - }; - } -} \ No newline at end of file diff --git a/designer-realize/src/com/fr/design/module/DesignerModule.java b/designer-realize/src/com/fr/design/module/DesignerModule.java deleted file mode 100644 index 08df15c2c..000000000 --- a/designer-realize/src/com/fr/design/module/DesignerModule.java +++ /dev/null @@ -1,504 +0,0 @@ -package com.fr.design.module; - -import com.fr.base.BaseFormula; -import com.fr.base.BaseUtils; -import com.fr.base.FRContext; -import com.fr.base.Formula; -import com.fr.base.MultiFieldParameter; -import com.fr.base.Style; -import com.fr.base.TempNameStyle; -import com.fr.base.extension.FileExtension; -import com.fr.base.frpx.exception.FRPackageRunTimeException; -import com.fr.base.frpx.exception.InvalidWorkBookException; -import com.fr.base.io.XMLEncryptUtils; -import com.fr.base.process.ProcessOperator; -import com.fr.base.remote.RemoteDeziConstants; -import com.fr.chart.chartattr.ChartCollection; -import com.fr.config.ServerPreferenceConfig; -import com.fr.design.DesignerEnvManager; -import com.fr.design.ExtraDesignClassManager; -import com.fr.design.actions.core.ActionFactory; -import com.fr.design.actions.insert.cell.BiasCellAction; -import com.fr.design.actions.insert.cell.ChartCellAction; -import com.fr.design.actions.insert.cell.DSColumnCellAction; -import com.fr.design.actions.insert.cell.FormulaCellAction; -import com.fr.design.actions.insert.cell.GeneralCellAction; -import com.fr.design.actions.insert.cell.ImageCellAction; -import com.fr.design.actions.insert.cell.RichTextCellAction; -import com.fr.design.actions.insert.cell.SubReportCellAction; -import com.fr.design.actions.insert.flot.ChartFloatAction; -import com.fr.design.actions.insert.flot.FormulaFloatAction; -import com.fr.design.actions.insert.flot.ImageFloatAction; -import com.fr.design.actions.insert.flot.TextBoxFloatAction; -import com.fr.design.actions.server.StyleListAction; -import com.fr.design.fun.ElementUIProvider; -import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.javascript.ProcessTransitionAdapter; -import com.fr.design.mainframe.App; -import com.fr.design.mainframe.DecodeDialog; -import com.fr.design.mainframe.InformationCollector; -import com.fr.design.mainframe.JTemplate; -import com.fr.design.mainframe.JWorkBook; -import com.fr.design.mainframe.bbs.BBSGuestPane; -import com.fr.design.mainframe.form.FormECCompositeProvider; -import com.fr.design.mainframe.form.FormECDesignerProvider; -import com.fr.design.mainframe.form.FormElementCaseDesigner; -import com.fr.design.mainframe.form.FormReportComponentComposite; -import com.fr.design.mainframe.loghandler.DesignerLogImpl; -import com.fr.design.parameter.WorkBookParameterReader; -import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.file.FILE; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.general.ModuleContext; -import com.fr.general.xml.GeneralXMLTools; -import com.fr.io.importer.Excel2007ReportImporter; -import com.fr.io.importer.ExcelReportImporter; -import com.fr.io.utils.ResourceIOUtils; -import com.fr.log.FineLoggerFactory; -import com.fr.main.impl.WorkBook; -import com.fr.main.impl.WorkBookAdapter; -import com.fr.main.impl.WorkBookX; -import com.fr.quickeditor.cellquick.CellBiasTextPainterEditor; -import com.fr.quickeditor.cellquick.CellDSColumnEditor; -import com.fr.quickeditor.cellquick.CellFormulaQuickEditor; -import com.fr.quickeditor.cellquick.CellImageQuickEditor; -import com.fr.quickeditor.cellquick.CellRichTextEditor; -import com.fr.quickeditor.cellquick.CellStringQuickEditor; -import com.fr.quickeditor.cellquick.CellSubReportEditor; -import com.fr.quickeditor.chartquick.BasicChartQuickEditor; -import com.fr.quickeditor.chartquick.FloatChartQuickEditor; -import com.fr.quickeditor.floatquick.FloatImageQuickEditor; -import com.fr.quickeditor.floatquick.FloatStringQuickEditor; -import com.fr.report.cell.CellElementValueConverter; -import com.fr.report.cell.cellattr.core.RichText; -import com.fr.report.cell.cellattr.core.SubReport; -import com.fr.report.cell.cellattr.core.group.DSColumn; -import com.fr.report.cell.painter.BiasTextPainter; -import com.fr.report.cell.painter.CellImagePainter; -import com.fr.stable.ArrayUtils; -import com.fr.stable.ParameterProvider; -import com.fr.stable.StringUtils; -import com.fr.stable.bridge.StableFactory; -import com.fr.stable.fun.LogProvider; -import com.fr.stable.script.CalculatorProviderContext; -import com.fr.stable.script.ValueConverter; -import com.fr.stable.web.ServletContext; -import com.fr.stable.web.ServletContextAdapter; -import com.fr.stable.xml.ObjectTokenizer; -import com.fr.stable.xml.ObjectXMLWriterFinder; -import com.fr.start.BBSGuestPaneProvider; -import com.fr.xml.ReportXMLUtils; - -import javax.swing.JDialog; -import javax.swing.JPanel; -import javax.swing.SwingConstants; -import java.awt.BorderLayout; -import java.awt.Image; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.image.BufferedImage; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.Set; - -public class DesignerModule extends DesignModule { - - static { - ServletContext.addServletContextListener(new ServletContextAdapter() { - - @Override - public void onServletStart() { - ModuleContext.startModule(DesignerModule.class.getName()); - } - }); - } - - /** - * 启动设计器模块 - */ - @Override - public void start() { - super.start(); - - justStartModules4Engine(); - justStartModules4Designer(); - - CalculatorProviderContext.setValueConverter(valueConverter()); - GeneralXMLTools.Object_Tokenizer = startXMLReadObjectTokenizer(); - GeneralXMLTools.Object_XML_Writer_Finder = startObjectXMLWriterFinder(); - addAdapterForPlate(); - - InformationCollector.getInstance().collectStartTime(); - - ExtraDesignClassManager.getInstance().getFeedback().didFeedback(); - StableFactory.registerMarkedObject(LogProvider.MARK_STRING, DesignerLogImpl.getInstance()); - } - - public static void register() { - registerCellEditor(); - registerFloatEditor(); - registerData4Form(); - registerOtherPane(); - } - - private static void registerOtherPane() { - StableFactory.registerMarkedClass(BBSGuestPaneProvider.XML_TAG, BBSGuestPane.class); - } - - /** - * kunsnat:注册单元格选中Editor - */ - private static void registerCellEditor() { - - ActionFactory.registerCellEditor(String.class, new CellStringQuickEditor()); - ActionFactory.registerCellEditor(Number.class, new CellStringQuickEditor()); - ActionFactory.registerCellEditor(BaseFormula.class, new CellFormulaQuickEditor()); - ActionFactory.registerCellEditor(SubReport.class, new CellSubReportEditor()); - ActionFactory.registerCellEditor(RichText.class, new CellRichTextEditor()); - ActionFactory.registerCellEditor(DSColumn.class, new CellDSColumnEditor()); - ActionFactory.registerCellEditor(Image.class, new CellImageQuickEditor()); - ActionFactory.registerCellEditor(BiasTextPainter.class, new CellBiasTextPainterEditor()); - ActionFactory.registerCellEditor(BufferedImage.class, new CellImageQuickEditor()); - ActionFactory.registerCellEditor(CellImagePainter.class, new CellImageQuickEditor()); - //todo 图表编辑器populate没能实现刷新面板显示 - ActionFactory.registerCellEditorClass(ChartCollection.class, BasicChartQuickEditor.class); - - Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); - for (ElementUIProvider provider : providers) { - try { - ActionFactory.registerCellEditor(provider.targetObjectClass(), provider.quickEditor().newInstance()); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - } - } - - - @Override - public String getInterNationalName() { - return Inter.getLocText("FR-Module_Designer"); - } - - - /** - * kunnat: 注册悬浮选中Editor - */ - private static void registerFloatEditor() { - - ActionFactory.registerFloatEditor(String.class, new FloatStringQuickEditor()); - ActionFactory.registerFloatEditor(Formula.class, new FloatStringQuickEditor()); - ActionFactory.registerFloatEditor(Image.class, new FloatImageQuickEditor()); - ActionFactory.registerFloatEditor(BufferedImage.class, new FloatImageQuickEditor()); - ActionFactory.registerFloatEditor(CellImagePainter.class, new FloatImageQuickEditor()); - //todo 图表编辑器populate没能实现刷新面板显示 - ActionFactory.registerFloatEditorClass(ChartCollection.class, FloatChartQuickEditor.class); - } - - /** - * kunsnat: 一些模块信息 必须跟随设计器启动, - * 比如 读取CC.XML, 设计器启动之后, 马上会读取XML, 需要Chart_Module中的注册信息 - */ - private void justStartModules4Engine() { - ModuleContext.startModule(ENGINE_MODULE); - } - - private void justStartModules4Designer() { - ModuleContext.startModule(CHART_DESIGNER_MODULE); - ModuleContext.startModule(FORM_DESIGNER_MODULE); - } - - /** - * CellElementValueConverter用来处理设计器格子里的值,将公式/数组/其他元素转换成对应的值。 - * - * @return 返回处理格子值的转换器 - */ - @Override - public ValueConverter valueConverter() { - return new CellElementValueConverter(); - } - - @Override - /* - * 针对不同的对象,在读取Object对象的xml的时候需要使用不同的对象生成器 - * @return 返回对象生成器 - */ - public ObjectTokenizer startXMLReadObjectTokenizer() { - return new ReportXMLUtils.ReportObjectTokenizer(); - } - - /** - * 针对不同的对象,在写对象的XML时需要使用不同的XML生成器 - * - * @return 返回xml生成器 - */ - @Override - public ObjectXMLWriterFinder startObjectXMLWriterFinder() { - return new ReportXMLUtils.ReportObjectXMLWriterFinder(); - } - - //wei:fs的模块中可能有需要设计器界面做设置的地方,在这边添加 - private void addAdapterForPlate() { - - ProcessTransitionAdapter.setProcessTransitionAdapter(new ProcessTransitionAdapter() { - - @Override - protected String[] getTransitionNamesByBook(String book) { - return StableFactory.getMarkedObject(ProcessOperator.MARK_STRING, ProcessOperator.class, ProcessOperator.EMPTY).getTransitionNamesByBook(book); - } - - @Override - protected String[] getParaNames(String book) { - return StableFactory.getMarkedObject(ProcessOperator.MARK_STRING, ProcessOperator.class, ProcessOperator.EMPTY).getParaNames(book); - } - - @Override - protected ParameterProvider[] getParas(String book) { - return StableFactory.getMarkedObject(ProcessOperator.MARK_STRING, ProcessOperator.class, ProcessOperator.EMPTY).getParas(book); - } - - @Override - protected MultiFieldParameter[] getAllMultiFieldParas(String book) { - return StableFactory.getMarkedObject(ProcessOperator.MARK_STRING, ProcessOperator.class, ProcessOperator.EMPTY).getAllMultiFieldParas(book); - } - }); - } - - private static abstract class AbstractWorkBookApp implements App { - - @Override - public int currentAPILevel() { - return CURRENT_LEVEL; - } - - @Override - public JTemplate openTemplate(FILE tplFile) { - return new JWorkBook(asIOFile(tplFile), tplFile); - } - - @Override - public String mark4Provider() { - return getClass().getName(); - } - - @Override - public void process() { - - } - - @Override - public void undo() { - - } - } - - @Override - /* - * 返回设计器能打开的模板类型的一个数组列表 - * @return 可以打开的模板类型的数组 - */ - public App[] apps4TemplateOpener() { - return new App[]{getCptxApp(), getCptApp(), getXlsApp(), getXlsxApp()}; - } - - private AbstractWorkBookApp getXlsxApp() { - return new AbstractWorkBookApp() { - @Override - public String[] defaultExtensions() { - return new String[]{FileExtension.XLSX.getExtension()}; - } - - @Override - public WorkBook asIOFile(FILE tplFile) { - WorkBook workbook = null; - try { - workbook = new Excel2007ReportImporter().generateWorkBookByStream(tplFile.asInputStream()); - } catch (Exception exp) { - FRContext.getLogger().error("Failed to generate xlsx from " + tplFile, exp); - } - return workbook; - } - }; - } - - private AbstractWorkBookApp getXlsApp() { - return new AbstractWorkBookApp() { - @Override - public String[] defaultExtensions() { - return new String[]{FileExtension.XLS.getExtension()}; - } - - @Override - public WorkBook asIOFile(FILE tplFile) { - WorkBook workbook = null; - try { - workbook = new ExcelReportImporter().generateWorkBookByStream(tplFile.asInputStream()); - } catch (Exception exp) { - FRContext.getLogger().error("Failed to generate xls from " + tplFile, exp); - } - return workbook; - } - }; - } - - private AbstractWorkBookApp getCptApp() { - return new AbstractWorkBookApp() { - @Override - public String[] defaultExtensions() { - return new String[]{FileExtension.CPT.getExtension()}; - } - - @Override - public WorkBook asIOFile(FILE file) { - if (XMLEncryptUtils.isCptEncoded() && - !XMLEncryptUtils.checkVaild(DesignerEnvManager.getEnvManager().getEncryptionKey())) { - if (!new DecodeDialog(file).isPwdRight()) { - FRContext.getLogger().error(Inter.getLocText("ECP-error_pwd")); - return new WorkBook(); - } - } - - WorkBook tpl = new WorkBook(); - // richer:打开报表通知 - FRContext.getLogger().info(Inter.getLocText(new String[]{"LOG-Is_Being_Openned", "LOG-Please_Wait"}, new String[]{"\"" + file.getName() + "\"" + ",", "..."})); - TempNameStyle namestyle = TempNameStyle.getInstance(); - namestyle.clear(); - String checkStr = StringUtils.EMPTY; - try { - checkStr = ResourceIOUtils.inputStream2String(file.asInputStream()); - tpl.readStream(file.asInputStream()); - } catch (Exception exp) { - String errorMessage = StringUtils.EMPTY; - errorMessage = ComparatorUtils.equals(RemoteDeziConstants.INVALID_USER, checkStr) ? Inter.getLocText("FR-Designer_No-Privilege") - : Inter.getLocText("NS-exception_readError"); - FRContext.getLogger().error(errorMessage + file, exp); - } - checkNameStyle(namestyle); - return tpl; - } - }; - } - - private AbstractWorkBookApp getCptxApp() { - return new AbstractWorkBookApp() { - - @Override - public String[] defaultExtensions() { - return new String[]{FileExtension.CPTX.getExtension()}; - } - - @Override - public WorkBook asIOFile(FILE file) { - FRContext.getLogger().info(Inter.getLocText(new String[]{"LOG-Is_Being_Openned", "LOG-Please_Wait"}, new String[]{"\"" + file.getName() + "\"" + ",", "..."})); - WorkBookX tpl; - InputStream inputStream; - try { - inputStream = file.asInputStream(); - long time = System.currentTimeMillis(); - tpl = new WorkBookX(inputStream); - FRContext.getLogger().error("cost: " + (System.currentTimeMillis() - time) + " ms"); - } catch (Exception exp) { - if (exp instanceof FRPackageRunTimeException) { - throw (FRPackageRunTimeException) exp; - } - throw new InvalidWorkBookException(file + ":" + exp.getMessage(), exp); - } - - - return new WorkBookAdapter(tpl); - } - }; - } - - private static void checkNameStyle(TempNameStyle namestyle) { - Iterator it = namestyle.getIterator(); - ArrayList al = new ArrayList(); - while (it.hasNext()) { - al.add((String) it.next()); - } - if (!al.isEmpty()) { - showConfirmDialog(al); - } - } - - private static void showConfirmDialog(final ArrayList namelist) { - - final JDialog jd = new JDialog(); - // 模态一下,因为可能会多个样式丢失 - // jd.setModal(true); - jd.setAlwaysOnTop(true); - jd.setSize(450, 150); - jd.setResizable(false); - jd.setIconImage(BaseUtils.readImage("/com/fr/base/images/oem/logo.png")); - String message = namelist.toString().replaceAll("\\[", "").replaceAll("\\]", ""); - UILabel jl = new UILabel(Inter.getLocText(new String[]{"Current_custom_global", "Has_been_gone"}, new String[]{message})); - jl.setHorizontalAlignment(SwingConstants.CENTER); - jd.add(jl, BorderLayout.CENTER); - JPanel jp = new JPanel(); - - // ”是“按钮,点击之后将生成一个全局样式,并写入xml - UIButton confirmButton = new UIButton(Inter.getLocText("FR-Designer_Yes")); - confirmButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - try { - for (int i = 0; i < namelist.size(); i++) { - ServerPreferenceConfig.getInstance().putStyle(namelist.get(i), Style.DEFAULT_STYLE); - } - } catch (Exception ex) { - FineLoggerFactory.getLogger().error(ex.getMessage()); - } - jd.dispose(); - new StyleListAction().actionPerformed(e);// 弹窗 - } - }); - - UIButton noButton = new UIButton(Inter.getLocText("FR-Designer_No")); - noButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - jd.dispose(); - } - }); - - jp.add(confirmButton); - jp.add(noButton); - jd.setTitle(Inter.getLocText("FR-Custom_styles_lost")); - jd.add(jp, BorderLayout.SOUTH); - GUICoreUtils.centerWindow(jd); - jd.setVisible(true); - } - - @Override - public Class[] actionsForInsertCellElement() { - return (Class[]) ArrayUtils.addAll(new Class[]{ - DSColumnCellAction.class, - GeneralCellAction.class, - RichTextCellAction.class, - FormulaCellAction.class, - ChartCellAction.class, - ImageCellAction.class, - BiasCellAction.class, - SubReportCellAction.class - }, super.actionsForInsertCellElement()); - } - - @Override - public Class[] actionsForInsertFloatElement() { - return (Class[]) ArrayUtils.addAll(new Class[]{ - TextBoxFloatAction.class, - FormulaFloatAction.class, - ChartFloatAction.class, - ImageFloatAction.class - }, super.actionsForInsertFloatElement()); - } - - - private static void registerData4Form() { - StableFactory.registerMarkedClass(FormECDesignerProvider.XML_TAG, FormElementCaseDesigner.class); - StableFactory.registerMarkedClass(FormECCompositeProvider.XML_TAG, FormReportComponentComposite.class); - DesignModuleFactory.registerParameterReader(new WorkBookParameterReader()); - } -} \ No newline at end of file diff --git a/designer-realize/src/com/fr/start/Designer.java b/designer-realize/src/com/fr/start/Designer.java index 553b580d7..f164dcfa9 100644 --- a/designer-realize/src/com/fr/start/Designer.java +++ b/designer-realize/src/com/fr/start/Designer.java @@ -21,9 +21,7 @@ import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.gui.itoolbar.UILargeToolbar; import com.fr.design.mainframe.ActiveKeyGenerator; -import com.fr.design.mainframe.CellElementPropertyPane; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.DesignerFrameFileDealerPane; import com.fr.design.mainframe.InformationCollector; import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.JWorkBook; @@ -37,10 +35,8 @@ import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; import com.fr.design.menu.ShortCut; import com.fr.design.module.DesignModuleFactory; -import com.fr.design.module.DesignerModule; import com.fr.design.utils.concurrent.ThreadFactoryBuilder; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.form.ui.WidgetInfoConfig; import com.fr.general.CloudCenter; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; @@ -154,11 +150,6 @@ public class Designer extends BaseDesigner { super(args); } - @Override - protected String module2Start() { - return DesignerModule.class.getName(); - } - /** * 创建新建文件的快捷方式数组。 diff --git a/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java b/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java index e6b0e1ab0..a6dc7b6fb 100644 --- a/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java +++ b/designer-realize/src/com/fr/start/module/DesignerModuleActivator.java @@ -1,11 +1,154 @@ package com.fr.start.module; -import com.fr.design.module.ChartDesignerModule; -import com.fr.design.module.DesignerModule; +import com.fr.base.BaseFormula; +import com.fr.base.BaseUtils; +import com.fr.base.FRContext; +import com.fr.base.Formula; +import com.fr.base.MultiFieldParameter; +import com.fr.base.Style; +import com.fr.base.TempNameStyle; +import com.fr.base.extension.FileExtension; +import com.fr.base.frpx.exception.FRPackageRunTimeException; +import com.fr.base.frpx.exception.InvalidWorkBookException; +import com.fr.base.io.XMLEncryptUtils; +import com.fr.base.process.ProcessOperator; +import com.fr.base.remote.RemoteDeziConstants; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.config.ServerPreferenceConfig; +import com.fr.design.ChartTypeInterfaceManager; +import com.fr.design.DesignerEnvManager; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.actions.core.ActionFactory; +import com.fr.design.actions.insert.cell.BiasCellAction; +import com.fr.design.actions.insert.cell.ChartCellAction; +import com.fr.design.actions.insert.cell.DSColumnCellAction; +import com.fr.design.actions.insert.cell.FormulaCellAction; +import com.fr.design.actions.insert.cell.GeneralCellAction; +import com.fr.design.actions.insert.cell.ImageCellAction; +import com.fr.design.actions.insert.cell.RichTextCellAction; +import com.fr.design.actions.insert.cell.SubReportCellAction; +import com.fr.design.actions.insert.flot.ChartFloatAction; +import com.fr.design.actions.insert.flot.FormulaFloatAction; +import com.fr.design.actions.insert.flot.ImageFloatAction; +import com.fr.design.actions.insert.flot.TextBoxFloatAction; +import com.fr.design.actions.server.StyleListAction; +import com.fr.design.bridge.DesignToolbarProvider; +import com.fr.design.chart.ChartDialog; +import com.fr.design.chart.gui.ChartComponent; +import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.form.parameter.FormParaDesigner; +import com.fr.design.fun.ElementUIProvider; +import com.fr.design.gui.controlpane.NameObjectCreator; +import com.fr.design.gui.controlpane.NameableCreator; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.hyperlink.ReportletHyperlinkPane; +import com.fr.design.hyperlink.WebHyperlinkPane; +import com.fr.design.javascript.EmailPane; +import com.fr.design.javascript.JavaScriptImplPane; +import com.fr.design.javascript.ParameterJavaScriptPane; +import com.fr.design.javascript.ProcessTransitionAdapter; +import com.fr.design.mainframe.App; +import com.fr.design.mainframe.BaseJForm; +import com.fr.design.mainframe.ChartPropertyPane; +import com.fr.design.mainframe.DecodeDialog; +import com.fr.design.mainframe.DesignerFrame; +import com.fr.design.mainframe.ElementCaseThumbnail; +import com.fr.design.mainframe.FormHierarchyTreePane; +import com.fr.design.mainframe.InformationCollector; +import com.fr.design.mainframe.JForm; +import com.fr.design.mainframe.JTemplate; +import com.fr.design.mainframe.JWorkBook; +import com.fr.design.mainframe.WidgetPropertyPane; +import com.fr.design.mainframe.WidgetToolBarPane; +import com.fr.design.mainframe.actions.NewFormAction; +import com.fr.design.mainframe.bbs.BBSGuestPane; +import com.fr.design.mainframe.form.FormECCompositeProvider; +import com.fr.design.mainframe.form.FormECDesignerProvider; +import com.fr.design.mainframe.form.FormElementCaseDesigner; +import com.fr.design.mainframe.form.FormReportComponentComposite; +import com.fr.design.mainframe.loghandler.DesignerLogImpl; +import com.fr.design.module.ChartHyperlinkGroup; +import com.fr.design.module.ChartPreStyleAction; +import com.fr.design.module.DesignModuleFactory; +import com.fr.design.parameter.FormParameterReader; +import com.fr.design.parameter.ParameterPropertyPane; +import com.fr.design.parameter.WorkBookParameterReader; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.design.widget.ui.btn.FormSubmitButtonDetailPane; +import com.fr.file.FILE; +import com.fr.form.stable.ElementCaseThumbnailProcessor; +import com.fr.form.ui.ChartEditor; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; import com.fr.general.ModuleContext; +import com.fr.general.xml.GeneralXMLTools; +import com.fr.io.importer.Excel2007ReportImporter; +import com.fr.io.importer.ExcelReportImporter; +import com.fr.io.utils.ResourceIOUtils; +import com.fr.js.EmailJavaScript; +import com.fr.js.JavaScriptImpl; +import com.fr.js.ParameterJavaScript; +import com.fr.js.ReportletHyperlink; +import com.fr.js.WebHyperlink; import com.fr.locale.InterMutableKey; +import com.fr.log.FineLoggerFactory; +import com.fr.main.impl.WorkBook; +import com.fr.main.impl.WorkBookAdapter; +import com.fr.main.impl.WorkBookX; import com.fr.module.Activator; import com.fr.module.extension.Prepare; +import com.fr.plugin.chart.vanchart.imgevent.design.DesignImageEvent; +import com.fr.quickeditor.cellquick.CellBiasTextPainterEditor; +import com.fr.quickeditor.cellquick.CellDSColumnEditor; +import com.fr.quickeditor.cellquick.CellFormulaQuickEditor; +import com.fr.quickeditor.cellquick.CellImageQuickEditor; +import com.fr.quickeditor.cellquick.CellRichTextEditor; +import com.fr.quickeditor.cellquick.CellStringQuickEditor; +import com.fr.quickeditor.cellquick.CellSubReportEditor; +import com.fr.quickeditor.chartquick.BasicChartQuickEditor; +import com.fr.quickeditor.chartquick.FloatChartQuickEditor; +import com.fr.quickeditor.floatquick.FloatImageQuickEditor; +import com.fr.quickeditor.floatquick.FloatStringQuickEditor; +import com.fr.report.cell.CellElementValueConverter; +import com.fr.report.cell.cellattr.core.RichText; +import com.fr.report.cell.cellattr.core.SubReport; +import com.fr.report.cell.cellattr.core.group.DSColumn; +import com.fr.report.cell.painter.BiasTextPainter; +import com.fr.report.cell.painter.CellImagePainter; +import com.fr.stable.ArrayUtils; +import com.fr.stable.ParameterProvider; +import com.fr.stable.StringUtils; +import com.fr.stable.bridge.StableFactory; +import com.fr.stable.fun.LogProvider; +import com.fr.stable.plugin.ExtraChartDesignClassManagerProvider; +import com.fr.stable.plugin.ExtraDesignClassManagerProvider; +import com.fr.stable.script.CalculatorProviderContext; +import com.fr.stable.script.ValueConverter; +import com.fr.stable.web.ServletContext; +import com.fr.stable.web.ServletContextAdapter; +import com.fr.stable.xml.ObjectTokenizer; +import com.fr.stable.xml.ObjectXMLWriterFinder; +import com.fr.start.BBSGuestPaneProvider; +import com.fr.van.chart.DownloadOnlineSourcesHelper; +import com.fr.van.chart.map.server.ChartMapEditorAction; +import com.fr.xml.ReportXMLUtils; + +import javax.swing.JDialog; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; +import java.awt.Image; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.image.BufferedImage; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import static com.fr.stable.module.Module.ENGINE_MODULE; /** * Created by juhaoyu on 2018/1/31. @@ -14,18 +157,474 @@ import com.fr.module.extension.Prepare; */ public class DesignerModuleActivator extends Activator implements Prepare { + static { + ServletContext.addServletContextListener(new ServletContextAdapter() { + + @Override + public void onServletStart() { + designerModuleStart(); + } + }); + } + @Override public void start() { - - ModuleContext.startModule(DesignerModule.class.getName()); + designerModuleStart(); + } + + private static void designerModuleStart() { + + if (com.fr.module.ModuleContext.getModule(DesignerModuleActivator.class).isRunning()) { + return; + } + + App[] apps = apps4TemplateOpener(); + for (App app : apps) { + DesignerFrame.registApp(app); + } + + StableFactory.registerMarkedClass(ExtraDesignClassManagerProvider.XML_TAG, ExtraDesignClassManager.class); + ActionFactory.registerCellInsertActionClass(actionsForInsertCellElement()); + ActionFactory.registerFloatInsertActionClass(actionsForInsertFloatElement()); + DesignModuleFactory.registerCreators4Hyperlink(hyperlinkTypes()); + + justStartModules4Engine(); + justStartModules4Designer(); + + CalculatorProviderContext.setValueConverter(valueConverter()); + GeneralXMLTools.Object_Tokenizer = startXMLReadObjectTokenizer(); + GeneralXMLTools.Object_XML_Writer_Finder = startObjectXMLWriterFinder(); + addAdapterForPlate(); + + designerRegister(); + + InformationCollector.getInstance().collectStartTime(); + + ExtraDesignClassManager.getInstance().getFeedback().didFeedback(); + StableFactory.registerMarkedObject(LogProvider.MARK_STRING, DesignerLogImpl.getInstance()); + + } + + private static Class[] actionsForInsertCellElement() { + List> classes = new ArrayList<>(); + Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); + for (ElementUIProvider provider : providers) { + classes.add(provider.actionForInsertCellElement()); + } + + return ArrayUtils.addAll(new Class[]{ + DSColumnCellAction.class, + GeneralCellAction.class, + RichTextCellAction.class, + FormulaCellAction.class, + ChartCellAction.class, + ImageCellAction.class, + BiasCellAction.class, + SubReportCellAction.class + }, classes.toArray(new Class[classes.size()])); + } + + private static Class[] actionsForInsertFloatElement() { + List> classes = new ArrayList<>(); + Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); + for (ElementUIProvider provider : providers) { + classes.add(provider.actionForInsertFloatElement()); + } + return ArrayUtils.addAll(new Class[]{ + TextBoxFloatAction.class, + FormulaFloatAction.class, + ChartFloatAction.class, + ImageFloatAction.class + }, classes.toArray(new Class[classes.size()])); + } + + private static NameableCreator[] hyperlinkTypes() { + return new NameableCreator[]{ + new NameObjectCreator(Inter.getLocText("FR-Hyperlink_Reportlet"), ReportletHyperlink.class, ReportletHyperlinkPane.ChartNoRename.class), + new NameObjectCreator(Inter.getLocText("FR-Designer_Email"), EmailJavaScript.class, EmailPane.class), + new NameObjectCreator(Inter.getLocText("Hyperlink-Web_link"), WebHyperlink.class, WebHyperlinkPane.ChartNoRename.class), + new NameObjectCreator(Inter.getLocText("JavaScript-Dynamic_Parameters"), ParameterJavaScript.class, ParameterJavaScriptPane.ChartNoRename.class), + new NameObjectCreator(Inter.getLocText("FR-Designer_JavaScript"), JavaScriptImpl.class, JavaScriptImplPane.ChartNoRename.class) + }; + } + + /** + * kunsnat: 一些模块信息 必须跟随设计器启动, + * 比如 读取CC.XML, 设计器启动之后, 马上会读取XML, 需要Chart_Module中的注册信息 + */ + private static void justStartModules4Engine() { + ModuleContext.startModule(ENGINE_MODULE); + } + + private static void justStartModules4Designer() { + chartDesignerRegister(); + formDesignerRegister(); + } + + /** + * CellElementValueConverter用来处理设计器格子里的值,将公式/数组/其他元素转换成对应的值。 + * + * @return 返回处理格子值的转换器 + */ + private static ValueConverter valueConverter() { + return new CellElementValueConverter(); + } + + /* + * 针对不同的对象,在读取Object对象的xml的时候需要使用不同的对象生成器 + * @return 返回对象生成器 + */ + private static ObjectTokenizer startXMLReadObjectTokenizer() { + return new ReportXMLUtils.ReportObjectTokenizer(); + } + + /** + * 针对不同的对象,在写对象的XML时需要使用不同的XML生成器 + * + * @return 返回xml生成器 + */ + private static ObjectXMLWriterFinder startObjectXMLWriterFinder() { + return new ReportXMLUtils.ReportObjectXMLWriterFinder(); + } + + + //wei:fs的模块中可能有需要设计器界面做设置的地方,在这边添加 + private static void addAdapterForPlate() { + + ProcessTransitionAdapter.setProcessTransitionAdapter(new ProcessTransitionAdapter() { + + @Override + protected String[] getTransitionNamesByBook(String book) { + return StableFactory.getMarkedObject(ProcessOperator.MARK_STRING, ProcessOperator.class, ProcessOperator.EMPTY).getTransitionNamesByBook(book); + } + + @Override + protected String[] getParaNames(String book) { + return StableFactory.getMarkedObject(ProcessOperator.MARK_STRING, ProcessOperator.class, ProcessOperator.EMPTY).getParaNames(book); + } + + @Override + protected ParameterProvider[] getParas(String book) { + return StableFactory.getMarkedObject(ProcessOperator.MARK_STRING, ProcessOperator.class, ProcessOperator.EMPTY).getParas(book); + } + + @Override + protected MultiFieldParameter[] getAllMultiFieldParas(String book) { + return StableFactory.getMarkedObject(ProcessOperator.MARK_STRING, ProcessOperator.class, ProcessOperator.EMPTY).getAllMultiFieldParas(book); + } + }); + } + + private static abstract class AbstractWorkBookApp implements App { + + @Override + public int currentAPILevel() { + return CURRENT_LEVEL; + } + + @Override + public JTemplate openTemplate(FILE tplFile) { + return new JWorkBook(asIOFile(tplFile), tplFile); + } + + @Override + public String mark4Provider() { + return getClass().getName(); + } + + @Override + public void process() { + + } + + @Override + public void undo() { + + } + } + + /* + * 返回设计器能打开的模板类型的一个数组列表 + * @return 可以打开的模板类型的数组 + */ + private static App[] apps4TemplateOpener() { + return new App[]{getCptxApp(), getCptApp(), getXlsApp(), getXlsxApp()}; + } + + private static AbstractWorkBookApp getXlsxApp() { + return new AbstractWorkBookApp() { + @Override + public String[] defaultExtensions() { + return new String[]{FileExtension.XLSX.getExtension()}; + } + + @Override + public WorkBook asIOFile(FILE tplFile) { + WorkBook workbook = null; + try { + workbook = new Excel2007ReportImporter().generateWorkBookByStream(tplFile.asInputStream()); + } catch (Exception exp) { + FRContext.getLogger().error("Failed to generate xlsx from " + tplFile, exp); + } + return workbook; + } + }; + } + + private static AbstractWorkBookApp getXlsApp() { + return new AbstractWorkBookApp() { + @Override + public String[] defaultExtensions() { + return new String[]{FileExtension.XLS.getExtension()}; + } + + @Override + public WorkBook asIOFile(FILE tplFile) { + WorkBook workbook = null; + try { + workbook = new ExcelReportImporter().generateWorkBookByStream(tplFile.asInputStream()); + } catch (Exception exp) { + FRContext.getLogger().error("Failed to generate xls from " + tplFile, exp); + } + return workbook; + } + }; + } + + private static AbstractWorkBookApp getCptApp() { + return new AbstractWorkBookApp() { + @Override + public String[] defaultExtensions() { + return new String[]{FileExtension.CPT.getExtension()}; + } + + @Override + public WorkBook asIOFile(FILE file) { + if (XMLEncryptUtils.isCptEncoded() && + !XMLEncryptUtils.checkVaild(DesignerEnvManager.getEnvManager().getEncryptionKey())) { + if (!new DecodeDialog(file).isPwdRight()) { + FRContext.getLogger().error(Inter.getLocText("ECP-error_pwd")); + return new WorkBook(); + } + } + + WorkBook tpl = new WorkBook(); + // richer:打开报表通知 + FRContext.getLogger().info(Inter.getLocText(new String[]{"LOG-Is_Being_Openned", "LOG-Please_Wait"}, new String[]{"\"" + file.getName() + "\"" + ",", "..."})); + TempNameStyle namestyle = TempNameStyle.getInstance(); + namestyle.clear(); + String checkStr = StringUtils.EMPTY; + try { + checkStr = ResourceIOUtils.inputStream2String(file.asInputStream()); + tpl.readStream(file.asInputStream()); + } catch (Exception exp) { + String errorMessage = StringUtils.EMPTY; + errorMessage = ComparatorUtils.equals(RemoteDeziConstants.INVALID_USER, checkStr) ? Inter.getLocText("FR-Designer_No-Privilege") + : Inter.getLocText("NS-exception_readError"); + FRContext.getLogger().error(errorMessage + file, exp); + } + checkNameStyle(namestyle); + return tpl; + } + }; + } + + private static AbstractWorkBookApp getCptxApp() { + return new AbstractWorkBookApp() { + + @Override + public String[] defaultExtensions() { + return new String[]{FileExtension.CPTX.getExtension()}; + } + + @Override + public WorkBook asIOFile(FILE file) { + FRContext.getLogger().info(Inter.getLocText(new String[]{"LOG-Is_Being_Openned", "LOG-Please_Wait"}, new String[]{"\"" + file.getName() + "\"" + ",", "..."})); + WorkBookX tpl; + InputStream inputStream; + try { + inputStream = file.asInputStream(); + long time = System.currentTimeMillis(); + tpl = new WorkBookX(inputStream); + FRContext.getLogger().error("cost: " + (System.currentTimeMillis() - time) + " ms"); + } catch (Exception exp) { + if (exp instanceof FRPackageRunTimeException) { + throw (FRPackageRunTimeException) exp; + } + throw new InvalidWorkBookException(file + ":" + exp.getMessage(), exp); + } + + + return new WorkBookAdapter(tpl); + } + }; + } + + + private static void checkNameStyle(TempNameStyle namestyle) { + Iterator it = namestyle.getIterator(); + ArrayList al = new ArrayList(); + while (it.hasNext()) { + al.add((String) it.next()); + } + if (!al.isEmpty()) { + showConfirmDialog(al); + } + } + + private static void showConfirmDialog(final ArrayList namelist) { + + final JDialog jd = new JDialog(); + // 模态一下,因为可能会多个样式丢失 + // jd.setModal(true); + jd.setAlwaysOnTop(true); + jd.setSize(450, 150); + jd.setResizable(false); + jd.setIconImage(BaseUtils.readImage("/com/fr/base/images/oem/logo.png")); + String message = namelist.toString().replaceAll("\\[", "").replaceAll("\\]", ""); + UILabel jl = new UILabel(Inter.getLocText(new String[]{"Current_custom_global", "Has_been_gone"}, new String[]{message})); + jl.setHorizontalAlignment(SwingConstants.CENTER); + jd.add(jl, BorderLayout.CENTER); + JPanel jp = new JPanel(); + + // ”是“按钮,点击之后将生成一个全局样式,并写入xml + UIButton confirmButton = new UIButton(Inter.getLocText("FR-Designer_Yes")); + confirmButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + try { + for (int i = 0; i < namelist.size(); i++) { + ServerPreferenceConfig.getInstance().putStyle(namelist.get(i), Style.DEFAULT_STYLE); + } + } catch (Exception ex) { + FineLoggerFactory.getLogger().error(ex.getMessage()); + } + jd.dispose(); + new StyleListAction().actionPerformed(e);// 弹窗 + } + }); + + UIButton noButton = new UIButton(Inter.getLocText("FR-Designer_No")); + noButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + jd.dispose(); + } + }); + + jp.add(confirmButton); + jp.add(noButton); + jd.setTitle(Inter.getLocText("FR-Custom_styles_lost")); + jd.add(jp, BorderLayout.SOUTH); + GUICoreUtils.centerWindow(jd); + jd.setVisible(true); + } + + private static void designerRegister() { + registerCellEditor(); + registerFloatEditor(); + registerData4Form(); + registerOtherPane(); + } + + private static void registerOtherPane() { + StableFactory.registerMarkedClass(BBSGuestPaneProvider.XML_TAG, BBSGuestPane.class); + } + + /** + * kunsnat:注册单元格选中Editor + */ + private static void registerCellEditor() { + + ActionFactory.registerCellEditor(String.class, new CellStringQuickEditor()); + ActionFactory.registerCellEditor(Number.class, new CellStringQuickEditor()); + ActionFactory.registerCellEditor(BaseFormula.class, new CellFormulaQuickEditor()); + ActionFactory.registerCellEditor(SubReport.class, new CellSubReportEditor()); + ActionFactory.registerCellEditor(RichText.class, new CellRichTextEditor()); + ActionFactory.registerCellEditor(DSColumn.class, new CellDSColumnEditor()); + ActionFactory.registerCellEditor(Image.class, new CellImageQuickEditor()); + ActionFactory.registerCellEditor(BiasTextPainter.class, new CellBiasTextPainterEditor()); + ActionFactory.registerCellEditor(BufferedImage.class, new CellImageQuickEditor()); + ActionFactory.registerCellEditor(CellImagePainter.class, new CellImageQuickEditor()); + //todo 图表编辑器populate没能实现刷新面板显示 + ActionFactory.registerCellEditorClass(ChartCollection.class, BasicChartQuickEditor.class); + + Set providers = ExtraDesignClassManager.getInstance().getArray(ElementUIProvider.MARK_STRING); + for (ElementUIProvider provider : providers) { + try { + ActionFactory.registerCellEditor(provider.targetObjectClass(), provider.quickEditor().newInstance()); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + } + + + /** + * kunnat: 注册悬浮选中Editor + */ + private static void registerFloatEditor() { + + ActionFactory.registerFloatEditor(String.class, new FloatStringQuickEditor()); + ActionFactory.registerFloatEditor(Formula.class, new FloatStringQuickEditor()); + ActionFactory.registerFloatEditor(Image.class, new FloatImageQuickEditor()); + ActionFactory.registerFloatEditor(BufferedImage.class, new FloatImageQuickEditor()); + ActionFactory.registerFloatEditor(CellImagePainter.class, new FloatImageQuickEditor()); + //todo 图表编辑器populate没能实现刷新面板显示 + ActionFactory.registerFloatEditorClass(ChartCollection.class, FloatChartQuickEditor.class); + } + + + private static void registerData4Form() { + StableFactory.registerMarkedClass(FormECDesignerProvider.XML_TAG, FormElementCaseDesigner.class); + StableFactory.registerMarkedClass(FormECCompositeProvider.XML_TAG, FormReportComponentComposite.class); + DesignModuleFactory.registerParameterReader(new WorkBookParameterReader()); + } + + private static void chartDesignerRegister() { + + StableFactory.registerMarkedClass(ExtraChartDesignClassManagerProvider.XML_TAG, ChartTypeInterfaceManager.class); + StableFactory.getStaticMarkedInstanceObjectFromClass(ExtraChartDesignClassManagerProvider.XML_TAG, ExtraChartDesignClassManagerProvider.class); + + DesignModuleFactory.registerHyperlinkGroupType(new ChartHyperlinkGroup()); + + DesignModuleFactory.registerChartEditorClass(ChartEditor.class); + DesignModuleFactory.registerChartComponentClass(ChartComponent.class); + + DesignModuleFactory.registerChartDialogClass(ChartDialog.class); + + DesignModuleFactory.registerChartPropertyPaneClass(ChartPropertyPane.class); + + ActionFactory.registerChartPreStyleAction(new ChartPreStyleAction()); + ActionFactory.registerChartMapEditorAction(new ChartMapEditorAction()); + + ActionFactory.registerChartCollection(ChartCollection.class); + + DesignModuleFactory.registerExtraWidgetOptions(ChartTypeInterfaceManager.initWidgetOption()); + + DesignImageEvent.registerDefaultCallbackEvent(HistoryTemplateListPane.getInstance()); + DesignImageEvent.registerDownloadSourcesEvent(new DownloadOnlineSourcesHelper()); + } + + private static void formDesignerRegister() { + + StableFactory.registerMarkedObject(DesignToolbarProvider.STRING_MARKED, WidgetToolBarPane.getInstance()); + + DesignModuleFactory.registerNewFormActionClass(NewFormAction.class); + DesignModuleFactory.registerFormParaDesignerClass(FormParaDesigner.class); + DesignModuleFactory.registerParaPropertyPaneClass(ParameterPropertyPane.class); + DesignModuleFactory.registerFormHierarchyPaneClass(FormHierarchyTreePane.class); + DesignModuleFactory.registerWidgetPropertyPaneClass(WidgetPropertyPane.class); + DesignModuleFactory.registerButtonDetailPaneClass(FormSubmitButtonDetailPane.class); + DesignModuleFactory.registerParameterReader(new FormParameterReader()); + + StableFactory.registerMarkedClass(BaseJForm.XML_TAG, JForm.class); - DesignerModule.register(); - ChartDesignerModule.register(); + StableFactory.registerMarkedObject(ElementCaseThumbnailProcessor.MARK_STRING, new ElementCaseThumbnail()); } @Override public void stop() { - ModuleContext.stopModule(DesignerModule.class.getName()); } @Override From c8d7760c4e05aff02acf173cbfdf77859425a173 Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 25 Jun 2018 13:45:56 +0800 Subject: [PATCH 10/13] =?UTF-8?q?REPORT-8608=20-=20=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E6=80=A7=E4=B9=8B=E6=B0=B4=E5=8D=B0=E4=BA=A4=E4=BA=92=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E9=97=AE=E9=A2=98=3D>=E8=81=9A=E5=90=88=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/poly/PolyDesignUI.java | 45 ++++++++++++++----- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/designer-realize/src/com/fr/poly/PolyDesignUI.java b/designer-realize/src/com/fr/poly/PolyDesignUI.java index f63252fd4..7b98269ea 100644 --- a/designer-realize/src/com/fr/poly/PolyDesignUI.java +++ b/designer-realize/src/com/fr/poly/PolyDesignUI.java @@ -3,30 +3,23 @@ */ package com.fr.poly; -import java.awt.*; -import java.awt.geom.Rectangle2D; -import java.awt.image.BufferedImage; -import java.text.DecimalFormat; -import java.util.ArrayList; - -import javax.swing.JComponent; -import javax.swing.JScrollBar; -import javax.swing.plaf.ComponentUI; - import com.fr.base.GraphHelper; import com.fr.base.Margin; import com.fr.base.PaperSize; import com.fr.base.ScreenResolution; +import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.design.utils.ComponentUtils; import com.fr.general.Background; +import com.fr.general.ComparatorUtils; import com.fr.general.Inter; +import com.fr.main.FineBook; import com.fr.page.PaperSettingProvider; import com.fr.page.ReportSettingsProvider; +import com.fr.page.WatermarkPainter; import com.fr.poly.creator.BlockCreator; -import com.fr.poly.creator.ECBlockCreator; -import com.fr.poly.creator.ECBlockEditor; import com.fr.poly.model.AddedData; import com.fr.poly.model.AddingData; +import com.fr.report.core.ReportUtils; import com.fr.report.report.Report; import com.fr.report.report.TemplateReport; import com.fr.report.stable.ReportConstants; @@ -34,6 +27,21 @@ import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; import com.fr.stable.unit.UNIT; +import javax.swing.JComponent; +import javax.swing.JScrollBar; +import javax.swing.plaf.ComponentUI; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.RenderingHints; +import java.awt.geom.Rectangle2D; +import java.awt.image.BufferedImage; +import java.text.DecimalFormat; +import java.util.ArrayList; + /** * @author richer * @since 6.5.3 聚合报表设计块的ui类 @@ -48,6 +56,7 @@ public class PolyDesignUI extends ComponentUI { private PolyDesigner designer; private int resolution; private float time; + private WatermarkPainter watermarkPainter; public PolyDesignUI(int resolution) { if (resolution == 0){ @@ -97,6 +106,18 @@ public class PolyDesignUI extends ComponentUI { paintAddingData(g2d, addData); } paintPaginateLine(g2d); + paintWatermark(g2d, designer.getTarget().getBook(), c.getWidth(), c.getHeight()); + } + + // 绘制水印 + private void paintWatermark(Graphics2D g2d, FineBook book, int width, int height) { + WatermarkAttr watermark = ReportUtils.getWatermarkFromAttrMarkFile(book); + + // 不要每次都 new 一个 WatermarkPainter + if (watermarkPainter == null || !ComparatorUtils.equals(watermarkPainter.getWatermark(), watermark)) { + watermarkPainter = new WatermarkPainter(watermark); + } + watermarkPainter.paint(g2d, width, height); } private void paintAddedData(Graphics g) { From f43bb44b748a11f48e97c7ba4def26baf23202c5 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Mon, 25 Jun 2018 09:03:07 +0800 Subject: [PATCH 11/13] =?UTF-8?q?REPORT-8960=20url=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E4=BC=A0=E9=80=92=E4=B8=AD=E6=96=87=E4=B9=B1=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/start/server/FineEmbedServerActivator.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/designer-base/src/com/fr/start/server/FineEmbedServerActivator.java b/designer-base/src/com/fr/start/server/FineEmbedServerActivator.java index 61fd249cb..1d76fd3fe 100644 --- a/designer-base/src/com/fr/start/server/FineEmbedServerActivator.java +++ b/designer-base/src/com/fr/start/server/FineEmbedServerActivator.java @@ -5,6 +5,7 @@ import com.fr.design.DesignerEnvManager; import com.fr.log.FineLoggerFactory; import com.fr.module.Activator; import com.fr.module.ModuleRole; +import com.fr.stable.EncodeConstants; import com.fr.startup.FineWebApplicationInitializer; import com.fr.third.springframework.web.SpringServletContainerInitializer; import com.fr.third.springframework.web.context.support.AnnotationConfigWebApplicationContext; @@ -12,6 +13,7 @@ import com.fr.workspace.WorkContext; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.Wrapper; +import org.apache.catalina.connector.Connector; import org.apache.catalina.loader.VirtualWebappLoader; import org.apache.catalina.startup.Tomcat; @@ -55,6 +57,8 @@ public class FineEmbedServerActivator extends Activator { tomcat = new Tomcat(); tomcat.setPort(DesignerEnvManager.getEnvManager().getEmbedServerPort()); + // 设置解码uri使用的字符编码 + tomcat.getConnector().setURIEncoding(EncodeConstants.ENCODING_UTF_8); String docBase = new File(WorkContext.getCurrent().getPath()).getParent(); String appName = "/" + FRContext.getCommonOperator().getAppName(); Context context = tomcat.addContext(appName, docBase); From 4cb8c67b3a10faaab6718776bff19741cc2bb0d5 Mon Sep 17 00:00:00 2001 From: vito Date: Mon, 25 Jun 2018 16:17:10 +0800 Subject: [PATCH 12/13] =?UTF-8?q?REPORT-9037=E3=80=90=E9=98=BB=E5=A1=9E?= =?UTF-8?q?=E3=80=91=E3=80=9010.0=E4=B8=80=E8=BD=AE=E5=9B=9E=E5=BD=92?= =?UTF-8?q?=E3=80=91jdk1.7=E7=9A=84=E8=AE=BE=E8=AE=A1=E5=99=A8=E8=B5=B7?= =?UTF-8?q?=E4=B8=8D=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer-realize/src/com/fr/start/fx/FastGifImage.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/designer-realize/src/com/fr/start/fx/FastGifImage.java b/designer-realize/src/com/fr/start/fx/FastGifImage.java index 9049850c3..69d74c8a4 100644 --- a/designer-realize/src/com/fr/start/fx/FastGifImage.java +++ b/designer-realize/src/com/fr/start/fx/FastGifImage.java @@ -97,17 +97,7 @@ public class FastGifImage extends WritableImage { } } - - private void finishImage(Exception e) { - e.printStackTrace(); - } - private void finishImage(ImageLoader loader) { - final Exception loadingException = loader.getException(); - if (loadingException != null) { - finishImage(loadingException); - return; - } initializeAnimatedImage(loader); } From 0ff49aa15b2fe535f2fed37528b61890154e4a69 Mon Sep 17 00:00:00 2001 From: ju Date: Mon, 25 Jun 2018 17:21:05 +0800 Subject: [PATCH 13/13] =?UTF-8?q?REPORT-9087=20=E5=90=AF=E5=8A=A8=E5=86=85?= =?UTF-8?q?=E7=BD=AE=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=90=8E=E5=86=8D=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E7=8E=AF=E5=A2=83=EF=BC=8C=E6=89=93=E4=B8=8D=E5=BC=80?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=20=E5=BC=80=E4=B8=80=E4=B8=8Bchart=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E7=9A=84=E7=88=B6activator=EF=BC=8C=E5=90=8E=E7=BB=AD?= =?UTF-8?q?=E8=BF=81=E7=A7=BB=20=E5=8F=96=E6=B6=88=E5=87=A0=E4=B8=AAchart?= =?UTF-8?q?=E7=9A=84=E7=8E=AF=E5=A2=83=E7=9B=91=E5=90=AC=E5=92=8Cservlet?= =?UTF-8?q?=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer-realize/src/com/fr/start/module/EnvBasedModule.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer-realize/src/com/fr/start/module/EnvBasedModule.java b/designer-realize/src/com/fr/start/module/EnvBasedModule.java index 286fbe663..25ca8faae 100644 --- a/designer-realize/src/com/fr/start/module/EnvBasedModule.java +++ b/designer-realize/src/com/fr/start/module/EnvBasedModule.java @@ -1,5 +1,6 @@ package com.fr.start.module; +import com.fr.chart.activator.ChartBaseActivator; import com.fr.module.Activator; import com.fr.stable.CoreActivator; import com.fr.start.server.FineEmbedServer; @@ -14,6 +15,7 @@ public class EnvBasedModule extends Activator { public void start() { //core和设计器启动 startSub(CoreActivator.class); + startSub(ChartBaseActivator.class); getSub("designer").start(); //这里不启动tomcat,由客户手动触发 } @@ -24,6 +26,7 @@ public class EnvBasedModule extends Activator { FineEmbedServer.stop(); //倒叙关闭其他模块 getSub("designer").stop(); + stopSub(ChartBaseActivator.class); stopSub(CoreActivator.class); } }