From f2da7fb7bc8e10e6a4042f0155266e2dbffe1d75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 10 Feb 2022 17:11:44 +0800 Subject: [PATCH 01/36] =?UTF-8?q?CHART-22767=20=E5=88=87=E6=8D=A2=E6=8E=A7?= =?UTF-8?q?=E4=BB=B6=E6=A0=87=E9=A2=98=E8=87=AA=E5=AE=9A=E4=B9=89-?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9A=84=E5=9B=BE=E8=A1=A8=E5=BE=88=E5=A4=9A?= =?UTF-8?q?=EF=BC=8C=E5=88=87=E6=8D=A2=E5=B1=9E=E6=80=A7=E5=BC=B9=E6=A1=86?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E5=A2=9E=E5=8A=A0=E6=BB=9A=E5=8A=A8=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/chart/gui/ChangeConfigPane.java | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java index b6e18f83a..ebc3ab5b3 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java @@ -11,6 +11,7 @@ import com.fr.chart.base.AttrChangeType; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.dialog.AttrScrollPane; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.formula.TinyFormulaPane; import com.fr.design.gui.ibutton.UIButtonGroup; @@ -77,11 +78,26 @@ public class ChangeConfigPane extends BasicBeanPane { private int selectedChart; // 设置面板里面选取的图表,不是真正切换的图表 public ChangeConfigPane(){ + init(); + this.setLayout(new BorderLayout()); + this.setBorder(BorderFactory.createEmptyBorder(10, 15, 10, 15)); + this.add(createScrollPane(), BorderLayout.CENTER); + } + + private JPanel createScrollPane() { + return new AttrScrollPane() { + @Override + protected JPanel createContentPane() { + return contentPane; + } + }; + } + + private void init() { initButtonGroup(); configPane = createConfigPane(); contentPane = createContentPane(); contentPane.setBorder(BorderFactory.createEmptyBorder(CONSTANT_TEN, CONSTANT_THIRTY, CONSTANT_TEN, CONSTANT_THIRTY)); - this.add(contentPane, BorderLayout.CENTER); } private JPanel createContentPane() { @@ -172,17 +188,18 @@ public class ChangeConfigPane extends BasicBeanPane { chartTypesPane = new JPanel(); chartTypesPane.setLayout(new BoxLayout(chartTypesPane, BoxLayout.Y_AXIS)); + chartTypesPane.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0)); switchTitlePane.setLayout(new CardLayout()); - buttonContentPane.add(chartTypesPane, BorderLayout.NORTH); - buttonContentPane.add( - TableLayout4VanChartHelper.createGapTableLayoutPane( - Toolkit.i18nText("Fine-Design_Chart_Switch_Title_Label"), - switchTitlePane, - EDIT_AREA_WIDTH - ), - BorderLayout.CENTER + JPanel titleEditPane = TableLayout4VanChartHelper.createGapTableLayoutPane( + Toolkit.i18nText("Fine-Design_Chart_Switch_Title_Label"), + switchTitlePane, + EDIT_AREA_WIDTH ); + titleEditPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); + + buttonContentPane.add(chartTypesPane, BorderLayout.NORTH); + buttonContentPane.add(titleEditPane, BorderLayout.CENTER); UIExpandablePane expandablePane = new UIExpandablePane(Toolkit.i18nText("Fine-Design_Chart_Button_And_Rotation_Content"), 20, buttonContentPane) { protected void setcontentPanelontentPanelBorder() { From db1430c9600367e5de26ae4378eafca73fe0d280 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 10 Feb 2022 18:04:33 +0800 Subject: [PATCH 02/36] =?UTF-8?q?CHART-22876=20=E8=BD=B4=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E5=88=86=E5=B1=82=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?-=E8=87=AA=E5=AE=9A=E4=B9=89=E5=AD=97=E7=AC=A6=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E6=B2=A1=E6=B3=95=E9=80=89=E4=B8=AD=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=AD=97=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axis/component/VanChartCategoryStylePaneWithCheckBox.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java index 49394c052..acc87572f 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java @@ -68,7 +68,7 @@ public class VanChartCategoryStylePaneWithCheckBox extends JPanel { Point comPoint = settingButton.getLocationOnScreen(); Point arrowPoint = new Point(comPoint.x +settingButton.getWidth() - 25, comPoint.y + settingButton.getHeight()); Dimension size = settingPane.getPreferredSize(); - UIBubbleFloatPane pane = new UIBubbleFloatPane(Constants.LEFT, arrowPoint, settingPane, size.width, 216) { + UIBubbleFloatPane pane = new UIBubbleFloatPane(Constants.LEFT, arrowPoint, settingPane, size.width, 230) { @Override public void updateContentPane() { From 9f17196a5bf49d66e6cdc51a3502e8d3535ad4db Mon Sep 17 00:00:00 2001 From: Starryi Date: Thu, 10 Feb 2022 11:22:34 +0800 Subject: [PATCH 03/36] =?UTF-8?q?REPORT-66263=20=E3=80=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E5=95=86=E5=9F=8E=E4=B8=8A=E4=BF=9D=E5=AD=98=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=E8=B0=83=E7=94=A8=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E4=B8=BB=E9=A2=98=E6=B2=A1=E6=9C=89=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 Windows平台上,启动设计器的URL参数是通过main函数传递进来的,因此需要单独处理 【改动思路】 同上 --- .../java/com/fr/design/deeplink/DeepLink.java | 0 .../com/fr/design/deeplink/DeepLinkCore.java | 184 ++++++++++++++++++ .../java/com/fr/design/utils/DesignUtils.java | 14 ++ .../fr/design/deeplink/DeepLinkManager.java | 144 +------------- .../main/java/com/fr/start/MainDesigner.java | 3 +- 5 files changed, 205 insertions(+), 140 deletions(-) rename {designer-realize => designer-base}/src/main/java/com/fr/design/deeplink/DeepLink.java (100%) create mode 100644 designer-base/src/main/java/com/fr/design/deeplink/DeepLinkCore.java diff --git a/designer-realize/src/main/java/com/fr/design/deeplink/DeepLink.java b/designer-base/src/main/java/com/fr/design/deeplink/DeepLink.java similarity index 100% rename from designer-realize/src/main/java/com/fr/design/deeplink/DeepLink.java rename to designer-base/src/main/java/com/fr/design/deeplink/DeepLink.java diff --git a/designer-base/src/main/java/com/fr/design/deeplink/DeepLinkCore.java b/designer-base/src/main/java/com/fr/design/deeplink/DeepLinkCore.java new file mode 100644 index 000000000..55a45709b --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/deeplink/DeepLinkCore.java @@ -0,0 +1,184 @@ +package com.fr.design.deeplink; + +import com.fr.design.constants.DesignerLaunchStatus; +import com.fr.design.startup.FineStartupNotificationFactory; +import com.fr.design.startup.FineStartupNotificationProvider; +import com.fr.event.Event; +import com.fr.event.EventDispatcher; +import com.fr.event.Listener; +import com.fr.event.Null; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.StringUtils; +import com.fr.stable.os.OperatingSystem; +import com.fr.third.org.apache.http.NameValuePair; +import com.fr.web.URLUtils; + +import javax.swing.SwingUtilities; +import java.awt.Color; +import java.awt.Frame; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLStreamHandler; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Starryi + * @version 1.0 + * Created by Starryi on 2022/1/6 + */ +public class DeepLinkCore { + + protected DeepLinkCore(){} + private static final DeepLinkCore instance = new DeepLinkCore(); + public static DeepLinkCore getInstance(){ + return instance; + } + + private String pendingURL; + + private final List deepLinkList = new ArrayList<>(); + + private boolean isDesignerStartupCompleted = false; + + public void register(DeepLink deepLink) { + if (deepLink != null) { + deepLinkList.add(deepLink); + } + } + + public void start(String[] args) { + if (OperatingSystem.isWindows()) { + if (args.length > 0) { + receiveDeeplink(args[0]); + } + } + + if (OperatingSystem.isWindows() && args.length > 0) { + receiveDeeplink(args[0]); + } + + FineStartupNotificationFactory.getNotification() + .registerStartupListener(new FineStartupNotificationProvider.Listener() { + @Override + public void startupPerformed(String parameters) { + receiveDeeplink(parameters); + } + }); + + EventDispatcher.listen(DesignerLaunchStatus.STARTUP_COMPLETE, new Listener() { + @Override + public void on(Event event, Null param) { + EventDispatcher.stopListen(this); + isDesignerStartupCompleted = true; + if (canConsumePendingURL()) { + consumePendingURL(); + } + } + }); + } + + public void receiveDeeplink(String url) { + if (canAcceptNewURL()) { + acceptNewURL(url); + if (canConsumePendingURL()) { + consumePendingURL(); + } + } + } + + public void receiveDeeplink2(String url) { + if (canAcceptNewURL()) { + acceptNewURL(url); + if (canConsumePendingURL()) { + consumePendingURL(); + } else { + Frame frame = new Frame("can not ConsumePendingURL"); + frame.setSize(400, 400); + frame.setBackground(Color.BLACK); + frame.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent windowEvent){ + frame.dispose(); + } + }); + frame.setVisible(true); + } + } else { + Frame frame = new Frame("can not AcceptNewURL"); + frame.setSize(400, 400); + frame.setBackground(Color.BLACK); + frame.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent windowEvent){ + frame.dispose(); + } + }); + frame.setVisible(true); + } + } + + private boolean canAcceptNewURL() { + return StringUtils.isEmpty(this.pendingURL); + } + + private void acceptNewURL(String url) { + this.pendingURL = url; + } + + private boolean canConsumePendingURL() { + return StringUtils.isNotEmpty(this.pendingURL) && isDesignerStartupCompleted; + } + + private void consumePendingURL() { + String host = null; + String path = null; + Map params = new HashMap<>(); + + URL url = null; + try { + url = new URL(null, this.pendingURL, new URLStreamHandler() { + @Override + protected URLConnection openConnection(URL u) throws IOException { + return null; + } + }); + } catch (MalformedURLException ignored) {} + + if (url != null) { + host = url.getHost(); + path = url.getPath(); + + List pairs = URLUtils.parse(url.getQuery()); + for (NameValuePair pair: pairs) { + params.put(pair.getName(), pair.getValue()); + } + } + + FineLoggerFactory.getLogger().info("consume deep link: " + this.pendingURL); + performDeepLinks(this.pendingURL, host, path, params); + + markPendingURLConsumed(); + } + + private void performDeepLinks(String url, String host, String path, Map params) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + for (DeepLink deepLink: deepLinkList) { + if (deepLink.accept(url, host, path, params)) { + deepLink.run(url, host, path, params); + } + } + } + }); + } + + private void markPendingURLConsumed() { + this.pendingURL = null; + } +} diff --git a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java index f066d648a..f9fb484a6 100644 --- a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java @@ -5,6 +5,7 @@ import com.fr.base.ServerConfig; import com.fr.concurrent.NamedThreadFactory; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.deeplink.DeepLinkCore; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.fun.DesignerEnvProcessor; import com.fr.design.gui.UILookAndFeel; @@ -26,10 +27,15 @@ import com.fr.start.ServerStarter; import com.fr.value.NotNullLazyValue; import com.fr.workspace.WorkContext; import org.jetbrains.annotations.NotNull; + import javax.swing.SwingUtilities; import javax.swing.UIManager; +import java.awt.Color; import java.awt.Desktop; import java.awt.Font; +import java.awt.Frame; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; @@ -213,6 +219,14 @@ public class DesignUtils { DesignerContext.getDesignerFrame().openTemplate(new FileFILE(f)); } }); + } else { + String url = line; + UIUtil.invokeLaterIfNeeded(new Runnable() { + @Override + public void run() { + DeepLinkCore.getInstance().receiveDeeplink2(url); + } + }); } } } diff --git a/designer-realize/src/main/java/com/fr/design/deeplink/DeepLinkManager.java b/designer-realize/src/main/java/com/fr/design/deeplink/DeepLinkManager.java index 9cef24dcc..14723e84d 100644 --- a/designer-realize/src/main/java/com/fr/design/deeplink/DeepLinkManager.java +++ b/designer-realize/src/main/java/com/fr/design/deeplink/DeepLinkManager.java @@ -1,153 +1,21 @@ package com.fr.design.deeplink; -import com.fr.design.constants.DesignerLaunchStatus; -import com.fr.design.startup.FineStartupNotificationFactory; -import com.fr.design.startup.FineStartupNotificationProvider; -import com.fr.event.Event; -import com.fr.event.EventDispatcher; -import com.fr.event.Listener; -import com.fr.event.Null; -import com.fr.log.FineLoggerFactory; -import com.fr.stable.StringUtils; -import com.fr.stable.os.OperatingSystem; -import com.fr.third.org.apache.http.NameValuePair; -import com.fr.web.URLUtils; - -import javax.swing.SwingUtilities; -import java.io.File; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; -import java.net.URLStreamHandler; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - /** * @author Starryi * @version 1.0 - * Created by Starryi on 2022/1/6 + * Created by Starryi on 2022/2/10 */ public class DeepLinkManager { - - private DeepLinkManager(){} + protected DeepLinkManager(){} private static final DeepLinkManager instance = new DeepLinkManager(); public static DeepLinkManager getInstance(){ return instance; } - private String pendingURL; - - private final List deepLinkList = new ArrayList<>(); - - private boolean isDesignerStartUpCompleted = false; - - private void register(DeepLink deepLink) { - if (deepLink != null) { - deepLinkList.add(deepLink); - } - } - - public void prepare() { - register(new FileOpen4MacDeepLink()); - register(new TemplateThemeInstallationDeepLink()); - - FineStartupNotificationFactory.getNotification() - .registerStartupListener(new FineStartupNotificationProvider.Listener() { - @Override - public void startupPerformed(String parameters) { - if (canAcceptNewURL()) { - acceptNewURL(parameters); - if (canConsumePendingURL()) { - consumePendingURL(); - } - } - } - }); - - EventDispatcher.listen(DesignerLaunchStatus.STARTUP_COMPLETE, new Listener() { - @Override - public void on(Event event, Null param) { - isDesignerStartUpCompleted = true; - if (canConsumePendingURL()) { - consumePendingURL(); - } - } - }); - } - - private boolean canAcceptNewURL() { - return StringUtils.isEmpty(this.pendingURL); - } - - private void acceptNewURL(String url) { - this.pendingURL = url; - } - - private boolean canConsumePendingURL() { - return StringUtils.isNotEmpty(this.pendingURL) && isDesignerStartUpCompleted; - } - - private void consumePendingURL() { - String host = null; - String path = null; - Map params = new HashMap<>(); - - URL url = null; - try { - url = new URL(null, this.pendingURL, new URLStreamHandler() { - @Override - protected URLConnection openConnection(URL u) throws IOException { - return null; - } - }); - } catch (MalformedURLException ignored) {} - - if (url != null) { - host = url.getHost(); - path = url.getPath(); - - List pairs = URLUtils.parse(url.getQuery()); - for (NameValuePair pair: pairs) { - params.put(pair.getName(), pair.getValue()); - } - } - - FineLoggerFactory.getLogger().info("consume deep link: " + this.pendingURL); - performDeepLinks(this.pendingURL, host, path, params); - - markPendingURLConsumed(); - } - - private void performDeepLinks(String url, String host, String path, Map params) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - for (DeepLink deepLink: deepLinkList) { - if (deepLink.accept(url, host, path, params)) { - deepLink.run(url, host, path, params); - } - } - } - }); - } - - public String[] createNewArgs(String[] args) { - String filePath = this.pendingURL; - if (OperatingSystem.isMacos() && StringUtils.isNotEmpty(filePath) && new File(filePath).exists()) { - List argList = new ArrayList<>(Arrays.asList(args)); - argList.add(filePath); - markPendingURLConsumed(); - return argList.toArray(new String[]{}); - } else { - return args; - } - } + public void start(String[] args) { + DeepLinkCore.getInstance().register(new FileOpen4MacDeepLink()); + DeepLinkCore.getInstance().register(new TemplateThemeInstallationDeepLink()); - private void markPendingURLConsumed() { - this.pendingURL = null; + DeepLinkCore.getInstance().start(args); } } diff --git a/designer-realize/src/main/java/com/fr/start/MainDesigner.java b/designer-realize/src/main/java/com/fr/start/MainDesigner.java index 4b66c362c..e29a4e804 100644 --- a/designer-realize/src/main/java/com/fr/start/MainDesigner.java +++ b/designer-realize/src/main/java/com/fr/start/MainDesigner.java @@ -107,7 +107,7 @@ public class MainDesigner extends BaseDesigner { */ public static void main(String[] args) { - DeepLinkManager.getInstance().prepare(); + DeepLinkManager.getInstance().start(args); StopWatch watch = new StopWatch(); watch.start(); DesignerLifecycleMonitorContext.getMonitor().beforeStart(); @@ -122,7 +122,6 @@ public class MainDesigner extends BaseDesigner { }); Module designerRoot = ModuleContext.parseRoot("designer-startup.xml"); //传递启动参数 - args = DeepLinkManager.getInstance().createNewArgs(args); designerRoot.setSingleton(StartupArgs.class, new StartupArgs(args)); try { designerRoot.start(); From 93d206b987e3acb6f950a6650fe400a743e5bf1d Mon Sep 17 00:00:00 2001 From: hades Date: Fri, 11 Feb 2022 14:36:10 +0800 Subject: [PATCH 04/36] =?UTF-8?q?REPORT-66521=20=E5=AE=8C=E5=85=A8?= =?UTF-8?q?=E7=A7=BB=E9=99=A4log4j1.x=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/socketio/DesignerSocketIO.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java b/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java index e5f44d4e4..d8f7265f7 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java @@ -22,7 +22,6 @@ import com.fr.log.FineLoggerFactory; import com.fr.serialization.SerializerHelper; import com.fr.stable.ArrayUtils; import com.fr.stable.StableUtils; -import com.fr.third.apache.log4j.spi.LoggingEvent; import com.fr.third.apache.logging.log4j.core.LogEvent; import com.fr.third.org.apache.http.client.config.RequestConfig; import com.fr.third.org.apache.http.client.methods.CloseableHttpResponse; @@ -33,6 +32,7 @@ import com.fr.workspace.WorkContext; import com.fr.workspace.Workspace; import com.fr.workspace.base.WorkspaceConstants; import com.fr.workspace.connect.WorkspaceConnectionInfo; +import com.fr.workspace.server.socket.CustomLogEvent; import com.fr.workspace.server.socket.LogEventConverter; import io.socket.client.IO; import io.socket.client.Socket; @@ -151,14 +151,14 @@ public class DesignerSocketIO { if (ArrayUtils.isNotEmpty(objects)) { try { Object obj = SerializerHelper.deserialize((byte[]) objects[0]); - // 兼容下老版本服务器 + // 完全去除log4j1.x LogEvent event; - if (obj instanceof LoggingEvent) { - event = LogEventConverter.convert((LoggingEvent) obj); + if (obj instanceof CustomLogEvent) { + event = LogEventConverter.convert((CustomLogEvent) obj); + DesignerLogger.log(event); } else { - event = (LogEvent) obj; + FineLoggerFactory.getLogger().warn("Unable to display server push logs, because server and designer versions are inconsistent!"); } - DesignerLogger.log(event); } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } From ba0686bee021da43d3a249d2de82d9d26ea0aa1d Mon Sep 17 00:00:00 2001 From: Starryi Date: Fri, 11 Feb 2022 18:07:34 +0800 Subject: [PATCH 05/36] =?UTF-8?q?REPORT-66324=20=E3=80=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=95=86=E5=9F=8E=EF=BC=8C?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=A1=86=E9=83=A8=E5=88=86=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=9C=89=E9=97=AE=E9=A2=98=20&=20REPORT-66361=20=E3=80=90?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E3=80=91=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=95=86=E5=9F=8E?= =?UTF-8?q?=EF=BC=8C=E9=AB=98dpi=E4=B8=8B=E6=98=BE=E7=A4=BA=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 高分辨率下窗口尺寸过小,内容显示不全。 窗口内容会根据分辨率自动调整,但是窗口尺寸不会。 【改动思路】 窗口尺寸使用FU/UNIT表示 --- .../share/ui/online/mini/MiniComponentShopDialog.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java index 0c21a4d41..81bc642b4 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java @@ -1,8 +1,12 @@ package com.fr.design.mainframe.share.ui.online.mini; +import com.fr.base.ScreenResolution; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.share.mini.MiniShopDisposingChecker; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.stable.Constants; +import com.fr.stable.unit.FU; +import com.fr.stable.unit.UNIT; import javax.swing.JFrame; import java.awt.Container; @@ -32,7 +36,10 @@ public class MiniComponentShopDialog { final JFrame frame = new JFrame(); final MiniComponentShopPane shopPane = new MiniComponentShopPane(); - frame.setSize(1200, 800); + final UNIT width = FU.getInstance(900 * Constants.FU_PER_OLD_PIX); + final UNIT height = FU.getInstance(600 * Constants.FU_PER_OLD_PIX); + int resolution = ScreenResolution.getScreenResolution(); + frame.setSize(width.toPixI(resolution), height.toPixI(resolution)); frame.setTitle(Toolkit.i18nText("Fine-Design_Share_Online_Mini_Shop_Window_Title")); frame.add(shopPane); frame.setResizable(false); From 62912360e21e8b48c7898b7f3885e22941bd5726 Mon Sep 17 00:00:00 2001 From: Starryi Date: Fri, 11 Feb 2022 18:53:41 +0800 Subject: [PATCH 06/36] =?UTF-8?q?REPORT-66304=20=E3=80=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E4=B8=8B=E8=BD=BD=E5=AD=98=E5=9C=A8=E9=AB=98=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=BB=84=E4=BB=B6=E7=9A=84=E7=BB=84=E4=BB=B6=E5=8C=85?= =?UTF-8?q?=EF=BC=8C=E6=8F=90=E7=A4=BA=E5=92=8C=E6=95=88=E6=9E=9C=E8=B7=9F?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E4=B8=8D=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 使用组件包的designerVersion来判断兼容性不可靠,需要依次检查其中的每个组件的 兼容性 【改动思路】 同上 --- .../mini/bridge/NativeProductBridge.java | 19 ++++++++++++++----- .../mainframe/share/util/OnlineShopUtils.java | 7 ++++++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java index a57968174..e9daf3e0e 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java @@ -13,6 +13,7 @@ import com.fr.design.mainframe.share.ui.online.installation.ComponentInstallatio import com.fr.design.mainframe.share.ui.online.installation.ComponentsPackageInstallation; import com.fr.design.mainframe.share.ui.online.installation.TemplateThemeInstallation; import com.fr.design.mainframe.share.ui.online.mini.MiniComponentShopDialog; +import com.fr.design.mainframe.share.util.OnlineShopUtils; import com.fr.form.share.Group; import com.fr.form.share.SharableWidgetProvider; import com.fr.form.share.bean.OnlineShareWidget; @@ -306,23 +307,31 @@ public class NativeProductBridge { @Override public void run() { boolean allowedDownload; - if (!widget.isCompatibleWithCurrentEnv()) { - int result = FineJOptionPane.showConfirmDialog( + OnlineShareWidget[] childrenWidgets = OnlineShopUtils.getPackageWidgets(widget, false); + boolean isCompatibleWithCurrentEnv = true; + for (OnlineShareWidget children: childrenWidgets) { + if (!children.isCompatibleWithCurrentEnv()) { + isCompatibleWithCurrentEnv = false; + break; + } + } + int result; + if (!isCompatibleWithCurrentEnv) { + result = FineJOptionPane.showConfirmDialog( MiniComponentShopDialog.getInstance().getContentPane(), Toolkit.i18nText("Fine-Design_Share_Online_Mini_Shop_Download_Incompatible_Components_Package_Tip", childrenCount), "", FineJOptionPane.YES_NO_OPTION ); - allowedDownload = result == JOptionPane.YES_OPTION; } else { - int result = FineJOptionPane.showConfirmDialog( + result = FineJOptionPane.showConfirmDialog( MiniComponentShopDialog.getInstance().getContentPane(), Toolkit.i18nText("Fine-Design_Share_Online_Mini_Shop_Download_Components_Package_Tip", childrenCount), "", FineJOptionPane.YES_NO_OPTION ); - allowedDownload = result == JOptionPane.YES_OPTION; } + allowedDownload = result == JOptionPane.YES_OPTION; if (allowedDownload) { fireStartEvent(null); action.install(); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/util/OnlineShopUtils.java b/designer-form/src/main/java/com/fr/design/mainframe/share/util/OnlineShopUtils.java index d0fbd83d5..fef0caed2 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/util/OnlineShopUtils.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/util/OnlineShopUtils.java @@ -256,7 +256,12 @@ public class OnlineShopUtils { } public static OnlineShareWidget[] getPackageWidgets(OnlineShareWidget widgetPackage) { - String plistUrl = getPackageChildrenPath() + widgetPackage.getId() + "?designerVersion="+ ProductConstants.RELEASE_VERSION; + return getPackageWidgets(widgetPackage, true); + } + + public static OnlineShareWidget[] getPackageWidgets(OnlineShareWidget widgetPackage, boolean requireCompatible) { + String targetDesignerVersion = requireCompatible ? ProductConstants.RELEASE_VERSION : "0"; + String plistUrl = getPackageChildrenPath() + widgetPackage.getId() + "?designerVersion="+ targetDesignerVersion; OnlineShareWidget[] widgets = getOnlineShareWidgets(plistUrl); for (OnlineShareWidget widget : widgets) { widget.setParentPackage(widgetPackage); From 0248a72bd3b406c26941de303b31623156a0ae42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Fri, 11 Feb 2022 21:35:50 +0800 Subject: [PATCH 07/36] =?UTF-8?q?CHART-22767&CHART-22876&CHART-22873&CHART?= =?UTF-8?q?-22861&CHART-22863&CHART-22797&CHART-22768=20=E8=8B=A5=E5=B9=B2?= =?UTF-8?q?bug=E4=B8=80=E8=B5=B7=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/chart/gui/ChangeConfigPane.java | 3 ++- ...goryPlotMoreCateReportDataContentPane.java | 6 ++--- ...egoryPlotMoreCateTableDataContentPane.java | 3 ++- .../style/axis/VanChartAxisPaneHelper.java | 26 +++++++++++++++++++ .../style/axis/VanChartBaseAxisPane.java | 16 +++++++++++- 5 files changed, 47 insertions(+), 7 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java index ebc3ab5b3..043aa3df1 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java @@ -246,7 +246,8 @@ public class ChangeConfigPane extends BasicBeanPane { result = Utils.objectToString(switchTitle); } } else { - result = Toolkit.i18nText("Fine-Design_Chart_Chart") + (chartIndex + 1); + result = collection.getChartName(chartIndex); + chart.setSwitchTitle(result); } TinyFormulaPane title = new TinyFormulaPane(); diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java index 93d189c69..057492b0f 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java @@ -7,7 +7,6 @@ import com.fr.chart.chartattr.Bar2DPlot; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartdata.NormalReportDataDefinition; -import com.fr.decision.base.util.UUIDUtil; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.formula.TinyFormulaPane; @@ -16,6 +15,7 @@ import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.data.ChartDataFilterPane; import com.fr.stable.StringUtils; import com.fr.van.chart.designer.TableLayout4VanChartHelper; +import com.fr.van.chart.designer.style.axis.VanChartAxisPaneHelper; import javax.swing.BorderFactory; import javax.swing.BoxLayout; @@ -28,7 +28,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; -import java.util.Map; /** @@ -192,11 +191,10 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor Plot plot = collection.getSelectedChart().getPlot(); if (definition instanceof NormalReportDataDefinition) { NormalReportDataDefinition reportDefinition = (NormalReportDataDefinition) definition; - reportDefinition.clearMoreCate(); updateMoreCate(reportDefinition, plot); - } + VanChartAxisPaneHelper.updateAxisCategoryStyles(collection); } protected void updateMoreCate(NormalReportDataDefinition reportDefinition, Plot plot) { diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java index 572c28edd..10ce5fcec 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java @@ -14,6 +14,7 @@ import com.fr.design.gui.ilable.BoldFontTextLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.van.chart.designer.style.axis.VanChartAxisPaneHelper; import javax.swing.BorderFactory; import javax.swing.BoxLayout; @@ -246,6 +247,7 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD normal.clearMoreCate(); updateMoreCate(normal, plot); } + VanChartAxisPaneHelper.updateAxisCategoryStyles(collection); } protected void updateMoreCate(NormalTableDataDefinition normal, Plot plot) { @@ -256,5 +258,4 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD } } } - } \ No newline at end of file diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java index 770043af9..9c327b2b2 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java @@ -1,9 +1,15 @@ package com.fr.van.chart.designer.style.axis; +import com.fr.base.chart.chartdata.TopDefinitionProvider; +import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.Plot; import com.fr.design.layout.TableLayout; import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPaneWithThemeStyle; import com.fr.design.mainframe.chart.mode.ChartEditContext; +import com.fr.plugin.chart.attr.axis.VanChartAxis; +import com.fr.plugin.chart.attr.axis.VanChartAxisLabelStyle; +import com.fr.plugin.chart.attr.plot.VanChartAxisPlot; import com.fr.van.chart.designer.TableLayout4VanChartHelper; import javax.swing.JPanel; @@ -27,4 +33,24 @@ public class VanChartAxisPaneHelper { } }; } + + /** + * 在update数据集分类的时候,需要联动update一下样式-坐标轴里面的分层样式设置,来自CHART-22873 + * + * @param collection + */ + public static void updateAxisCategoryStyles(ChartCollection collection) { + TopDefinitionProvider definition = collection.getSelectedChart().getFilterDefinition(); + int size = definition == null ? 1 : definition.getMoreCateSize() + 1; + + Plot plot = collection.getSelectedChart().getPlot(); + if (plot instanceof VanChartAxisPlot) { + for(VanChartAxis axis : ((VanChartAxisPlot) plot).getXAxisList()){ + axis.clearCategoryStyles(); + for (int i = 0; i < size; i++) { + axis.addCategoryStyle(new VanChartAxisLabelStyle()); + } + } + } + } } diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java index 1023ecde8..a6f667100 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java @@ -46,6 +46,7 @@ import javax.swing.event.ChangeListener; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -264,7 +265,20 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { private JPanel createLabelContentPane() { labelContentPane = new JPanel(new BorderLayout()); showLogicPane = new JPanel(new BorderLayout()); - labelStylePane = new JPanel(new CardLayout()); + labelStylePane = new JPanel(new CardLayout()) { + @Override + public Dimension getPreferredSize() { + switch (showLogic.getSelectedIndex()) { + case 0: + return wholeDisplayLabelPanel.getPreferredSize(); + case 1: + return categoryStylePane.getPreferredSize(); + case -1: + default: + return super.getPreferredSize(); + } + } + }; labelStylePane.add(wholeDisplayLabelPanel, WHOLE_DISPLAY); labelStylePane.add(createCategoryStylePane(), LAYER_DISPLAY); showLogicPane.add(TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Show_Logic"), showLogic), BorderLayout.NORTH); From d3edad6a172af1559c0df09f138ed3b0c5142152 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Mon, 14 Feb 2022 10:01:21 +0800 Subject: [PATCH 08/36] =?UTF-8?q?CHART-22873=20=E5=B0=86=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E6=A0=B7=E5=BC=8F=E7=9A=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=94=BE=E5=88=B0ChartCollection=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...goryPlotMoreCateReportDataContentPane.java | 3 +-- ...egoryPlotMoreCateTableDataContentPane.java | 3 +-- .../style/axis/VanChartAxisPaneHelper.java | 26 ------------------- 3 files changed, 2 insertions(+), 30 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java index 057492b0f..b0d6e2063 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java @@ -15,7 +15,6 @@ import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.data.ChartDataFilterPane; import com.fr.stable.StringUtils; import com.fr.van.chart.designer.TableLayout4VanChartHelper; -import com.fr.van.chart.designer.style.axis.VanChartAxisPaneHelper; import javax.swing.BorderFactory; import javax.swing.BoxLayout; @@ -194,7 +193,7 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor reportDefinition.clearMoreCate(); updateMoreCate(reportDefinition, plot); } - VanChartAxisPaneHelper.updateAxisCategoryStyles(collection); + collection.updateAxisCategoryStyles(); } protected void updateMoreCate(NormalReportDataDefinition reportDefinition, Plot plot) { diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java index 10ce5fcec..87c47b18b 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java @@ -14,7 +14,6 @@ import com.fr.design.gui.ilable.BoldFontTextLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.van.chart.designer.style.axis.VanChartAxisPaneHelper; import javax.swing.BorderFactory; import javax.swing.BoxLayout; @@ -247,7 +246,7 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD normal.clearMoreCate(); updateMoreCate(normal, plot); } - VanChartAxisPaneHelper.updateAxisCategoryStyles(collection); + collection.updateAxisCategoryStyles(); } protected void updateMoreCate(NormalTableDataDefinition normal, Plot plot) { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java index 9c327b2b2..770043af9 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartAxisPaneHelper.java @@ -1,15 +1,9 @@ package com.fr.van.chart.designer.style.axis; -import com.fr.base.chart.chartdata.TopDefinitionProvider; -import com.fr.chart.chartattr.ChartCollection; -import com.fr.chart.chartattr.Plot; import com.fr.design.layout.TableLayout; import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPaneWithThemeStyle; import com.fr.design.mainframe.chart.mode.ChartEditContext; -import com.fr.plugin.chart.attr.axis.VanChartAxis; -import com.fr.plugin.chart.attr.axis.VanChartAxisLabelStyle; -import com.fr.plugin.chart.attr.plot.VanChartAxisPlot; import com.fr.van.chart.designer.TableLayout4VanChartHelper; import javax.swing.JPanel; @@ -33,24 +27,4 @@ public class VanChartAxisPaneHelper { } }; } - - /** - * 在update数据集分类的时候,需要联动update一下样式-坐标轴里面的分层样式设置,来自CHART-22873 - * - * @param collection - */ - public static void updateAxisCategoryStyles(ChartCollection collection) { - TopDefinitionProvider definition = collection.getSelectedChart().getFilterDefinition(); - int size = definition == null ? 1 : definition.getMoreCateSize() + 1; - - Plot plot = collection.getSelectedChart().getPlot(); - if (plot instanceof VanChartAxisPlot) { - for(VanChartAxis axis : ((VanChartAxisPlot) plot).getXAxisList()){ - axis.clearCategoryStyles(); - for (int i = 0; i < size; i++) { - axis.addCategoryStyle(new VanChartAxisLabelStyle()); - } - } - } - } } From 3764a4ce48569bdf2f8a1319e45b7cd2aec13f64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Mon, 14 Feb 2022 10:19:05 +0800 Subject: [PATCH 09/36] =?UTF-8?q?CHART-22797=20=E4=BF=AE=E6=94=B9=E5=86=97?= =?UTF-8?q?=E4=BD=99=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=B0=86ChangeConfigPane?= =?UTF-8?q?=E9=87=8C=E9=9D=A2=E5=85=B3=E4=BA=8ESwitchTitle=E4=B8=BAnull?= =?UTF-8?q?=E7=9A=84=E5=86=97=E4=BD=99=E5=88=A4=E6=96=AD=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/chart/gui/ChangeConfigPane.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java index 043aa3df1..f053b09d6 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java @@ -23,6 +23,7 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; import com.fr.van.chart.designer.TableLayout4VanChartHelper; import javax.swing.BorderFactory; @@ -238,18 +239,14 @@ public class ChangeConfigPane extends BasicBeanPane { private void populateSwitchTitlePane(int chartIndex, ChartCollection collection) { Chart chart = collection.getChart(chartIndex, Chart.class); Object switchTitle = chart.getSwitchTitle(); - String result; + String result = StringUtils.EMPTY; if (switchTitle != null) { if (switchTitle instanceof BaseFormula) { result = ((BaseFormula) switchTitle).getContent(); } else { result = Utils.objectToString(switchTitle); } - } else { - result = collection.getChartName(chartIndex); - chart.setSwitchTitle(result); } - TinyFormulaPane title = new TinyFormulaPane(); title.populateBean(result); switchTitles.add(title); From 8d9fe39e252f7d96a712a2871be08155aec2c22c Mon Sep 17 00:00:00 2001 From: lidongy <1879087903@qq.com> Date: Mon, 14 Feb 2022 14:16:02 +0800 Subject: [PATCH 10/36] =?UTF-8?q?KERNEL-9267=20=E6=8B=86=E5=88=86third.jar?= =?UTF-8?q?=E4=B8=BAthird.jar=20+=20cbb.jar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.gradle b/build.gradle index ee08bdeea..8e2e8b627 100644 --- a/build.gradle +++ b/build.gradle @@ -9,6 +9,7 @@ plugins { // 模块参数 ext { frVersion = "" + cbbVersion = "" outputPath = "build" ignoreTestFailureSetting = true languageLevelSetting = 1.8 @@ -60,6 +61,8 @@ allprojects { } dependencies { + implementation 'com.fr.essential:fine-essential:' + cbbVersion + implementation 'com.fr.cbb:fine-universal-skeleton:' + cbbVersion implementation 'com.install4j:install4j-runtime:8.0.4' implementation 'com.fr.third:jxbrowser:6.23' implementation 'com.fr.third:jxbrowser-mac:6.23' From 2a4f61fbc61b8633ec6db1a4b5035c7326e90fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Mon, 14 Feb 2022 14:29:45 +0800 Subject: [PATCH 11/36] =?UTF-8?q?CHART-22876&CHART-22873&CHART-22861&CHART?= =?UTF-8?q?-22863&CHART-22797&CHART-22768=20=E8=8B=A5=E5=B9=B2bug=E4=B8=80?= =?UTF-8?q?=E8=B5=B7=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/chart/gui/ChangeConfigPane.java | 6 ++---- ...ategoryPlotMoreCateReportDataContentPane.java | 4 +--- ...CategoryPlotMoreCateTableDataContentPane.java | 1 + .../style/axis/VanChartBaseAxisPane.java | 16 +++++++++++++++- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java index ebc3ab5b3..f053b09d6 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java @@ -23,6 +23,7 @@ import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; import com.fr.van.chart.designer.TableLayout4VanChartHelper; import javax.swing.BorderFactory; @@ -238,17 +239,14 @@ public class ChangeConfigPane extends BasicBeanPane { private void populateSwitchTitlePane(int chartIndex, ChartCollection collection) { Chart chart = collection.getChart(chartIndex, Chart.class); Object switchTitle = chart.getSwitchTitle(); - String result; + String result = StringUtils.EMPTY; if (switchTitle != null) { if (switchTitle instanceof BaseFormula) { result = ((BaseFormula) switchTitle).getContent(); } else { result = Utils.objectToString(switchTitle); } - } else { - result = Toolkit.i18nText("Fine-Design_Chart_Chart") + (chartIndex + 1); } - TinyFormulaPane title = new TinyFormulaPane(); title.populateBean(result); switchTitles.add(title); diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java index 93d189c69..54c3bd33d 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotMoreCateReportDataContentPane.java @@ -7,7 +7,6 @@ import com.fr.chart.chartattr.Bar2DPlot; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartattr.Plot; import com.fr.chart.chartdata.NormalReportDataDefinition; -import com.fr.decision.base.util.UUIDUtil; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; import com.fr.design.formula.TinyFormulaPane; @@ -28,7 +27,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; -import java.util.Map; /** @@ -195,7 +193,7 @@ public class CategoryPlotMoreCateReportDataContentPane extends CategoryPlotRepor reportDefinition.clearMoreCate(); updateMoreCate(reportDefinition, plot); - + collection.updateAxisCategoryStyles(); } } diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java index 572c28edd..4c809e64f 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/CategoryPlotMoreCateTableDataContentPane.java @@ -246,6 +246,7 @@ public class CategoryPlotMoreCateTableDataContentPane extends CategoryPlotTableD normal.clearMoreCate(); updateMoreCate(normal, plot); } + collection.updateAxisCategoryStyles(); } protected void updateMoreCate(NormalTableDataDefinition normal, Plot plot) { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java index 1023ecde8..a6f667100 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/VanChartBaseAxisPane.java @@ -46,6 +46,7 @@ import javax.swing.event.ChangeListener; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -264,7 +265,20 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { private JPanel createLabelContentPane() { labelContentPane = new JPanel(new BorderLayout()); showLogicPane = new JPanel(new BorderLayout()); - labelStylePane = new JPanel(new CardLayout()); + labelStylePane = new JPanel(new CardLayout()) { + @Override + public Dimension getPreferredSize() { + switch (showLogic.getSelectedIndex()) { + case 0: + return wholeDisplayLabelPanel.getPreferredSize(); + case 1: + return categoryStylePane.getPreferredSize(); + case -1: + default: + return super.getPreferredSize(); + } + } + }; labelStylePane.add(wholeDisplayLabelPanel, WHOLE_DISPLAY); labelStylePane.add(createCategoryStylePane(), LAYER_DISPLAY); showLogicPane.add(TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Show_Logic"), showLogic), BorderLayout.NORTH); From c1ca4cfdb514e474dff2ec5c34da922d8e58d59e Mon Sep 17 00:00:00 2001 From: Starryi Date: Mon, 14 Feb 2022 14:39:27 +0800 Subject: [PATCH 12/36] =?UTF-8?q?REPORT-66306=20=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=8C=85=E4=B8=8B=E8=BD=BD=E9=9D=A2=E6=9D=BF=E6=97=A0=E9=81=AE?= =?UTF-8?q?=E7=BD=A9=E9=98=B4=E5=BD=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 swing中两个组件上下层叠时,重绘底层组件,会将其内容会知道上方,遮挡上层组件, 因此也需要手动重新绘制上层组件。 【改动思路】 主动调用下阴影层的重绘方法 --- .../ui/online/OnlineDownloadPackagePane.java | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java index 59a09c466..987cfface 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java @@ -72,22 +72,6 @@ public class OnlineDownloadPackagePane extends OnlineWidgetSelectPane { return false; } - protected JPanel createWidgetPane() { - return new JPanel() { - @Override - public void paint(Graphics g) { - super.paint(g); - Graphics2D g2d = (Graphics2D) g; - Composite oldComposite = g2d.getComposite(); - AlphaComposite composite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.65f); - g2d.setComposite(composite); - g2d.setColor(Color.DARK_GRAY); - g2d.fillRect(0, 0, getWidth(), getHeight()); - g2d.setComposite(oldComposite); - } - }; - } - protected JPanel createContentPane(JPanel widgetPane) { JPanel panel = new JPanel() { @Override @@ -114,7 +98,20 @@ public class OnlineDownloadPackagePane extends OnlineWidgetSelectPane { parentPane.resetWidgetDetailPane(packageId, getSharableWidgetProviders()); } } - }); + }) { + @Override + public void paint(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + Composite oldComposite = g2d.getComposite(); + AlphaComposite composite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.65f); + g2d.setComposite(composite); + g2d.setColor(Color.DARK_GRAY); + g2d.fillRect(0, 0, getWidth(), getHeight()); + g2d.setComposite(oldComposite); + + super.paint(g); + } + }; panel.add(downloadProgressPane); panel.add(widgetPane, BorderLayout.CENTER); return panel; @@ -125,10 +122,16 @@ public class OnlineDownloadPackagePane extends OnlineWidgetSelectPane { final com.fr.design.extra.Process downloadProcess = aDouble -> { OnlineDownloadPackagePane.this.process = 0.8 * aDouble; downloadProgressPane.updateProgress(process); + if (downloadProgressPane != null) { + downloadProgressPane.repaint(); + } }; final com.fr.design.extra.Process installProcess = aDouble -> { OnlineDownloadPackagePane.this.process = 0.8 + 0.2 * aDouble; downloadProgressPane.updateProgress(process); + if (downloadProgressPane != null) { + downloadProgressPane.repaint(); + } }; downloadProcess.process(0.0D); @@ -220,6 +223,9 @@ public class OnlineDownloadPackagePane extends OnlineWidgetSelectPane { File file = new File(filePath); installProcess.process(0.0D); downloadProgressPane.changeState(); + if (downloadProgressPane != null) { + downloadProgressPane.repaint(); + } InstallUtils.InstallResult result = null; try { if (file.exists()) { From 3dfe341cbbd81cef5abed61625f5f5fa72efbe26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Mon, 14 Feb 2022 18:16:22 +0800 Subject: [PATCH 13/36] =?UTF-8?q?REPORT-65772=20=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=9D=83=E9=99=90=E7=BC=96=E8=BE=91=E7=8A=B6=E6=80=81=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E9=97=AE=E9=A2=98-=E6=89=93=E5=BC=80=E4=B8=80?= =?UTF-8?q?=E5=BC=A0cpt=EF=BC=8C=E8=BF=9B=E5=85=A5=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=9D=83=E9=99=90=E7=BC=96=E8=BE=91=E5=90=8E=EF=BC=8C=E5=86=8D?= =?UTF-8?q?=E6=89=93=E5=BC=80=E4=B8=80=E5=BC=A0frm=E6=97=B6=EF=BC=8Cfrm?= =?UTF-8?q?=E4=B9=9F=E6=9C=89=E6=A8=A1=E6=9D=BF=E6=9D=83=E9=99=90=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=A1=86=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/mainframe/FormDesigner.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index ef1177ece..a703512ab 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -1520,7 +1520,10 @@ public class FormDesigner extends TargetComponent
implements TreeSelection private DesignerBaseOperate getLayoutBaseOperate(){ FormSelection selection = this.getSelectionModel().getSelection(); XCreator creator = selection.getSelectedCreator(); - XLayoutContainer container = (XLayoutContainer) creator.getParent(); + XLayoutContainer container = null; + if (creator != null) { + container = (XLayoutContainer) creator.getParent(); + } if (container == null) { return new DefaultDesignerBaseOperate(); } From 7040a69a398b4f14d2b2abaa9871c74649c78d61 Mon Sep 17 00:00:00 2001 From: Starryi Date: Tue, 15 Feb 2022 10:26:22 +0800 Subject: [PATCH 14/36] =?UTF-8?q?REPORT-66465=20=E3=80=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=95=86=E5=9F=8E=EF=BC=8C?= =?UTF-8?q?=E6=A6=82=E7=8E=87=E6=89=93=E5=BC=80=E7=A9=BA=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 windows平台上使用7.15版本的JxBrowser 【改动思路】 同上 --- .../ui/online/mini/MiniComponentShopPane.java | 23 ++++- .../mini/bridge/ComposedNativeBridges.java | 19 ++-- .../online/mini/bridge/NativeAuthBridge.java | 3 + .../mini/bridge/NativeBrowserBridge.java | 13 +-- .../mini/bridge/NativeProductBridge.java | 86 ++++++++++++------- .../online/mini/bridge/NativeTaskBridge.java | 21 ++--- .../mini/bridge/SafeJSFunctionInvoker.java | 29 +++++-- 7 files changed, 126 insertions(+), 68 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopPane.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopPane.java index 843638d19..9b980f14b 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopPane.java @@ -3,15 +3,18 @@ package com.fr.design.mainframe.share.ui.online.mini; import com.fr.design.mainframe.share.ui.online.mini.bridge.ComposedNativeBridges; import com.fr.design.mainframe.share.util.OnlineShopUtils; import com.fr.design.ui.ModernUIPane; +import com.fr.design.ui.compatible.ModernUIPaneFactory; import com.fr.design.upm.event.CertificateEvent; import com.fr.event.Event; import com.fr.event.EventDispatcher; import com.fr.event.Listener; +import com.teamdev.jxbrowser.browser.callback.InjectJsCallback; import com.teamdev.jxbrowser.chromium.JSObject; import com.teamdev.jxbrowser.chromium.events.ScriptContextAdapter; import com.teamdev.jxbrowser.chromium.events.ScriptContextEvent; +import com.teamdev.jxbrowser.js.JsObject; +import org.jetbrains.annotations.Nullable; -import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.BorderLayout; @@ -27,14 +30,26 @@ public class MiniComponentShopPane extends JPanel { public MiniComponentShopPane() { setLayout(new BorderLayout()); - modernUIPane = new ModernUIPane.Builder<>() + modernUIPane = ModernUIPaneFactory.modernUIPaneBuilder() .withURL(OnlineShopUtils.getWebMiniShopPath()) - .prepare(new ScriptContextAdapter() { + .prepareForV6(new ScriptContextAdapter() { @Override public void onScriptContextCreated(ScriptContextEvent event) { super.onScriptContextCreated(event); JSObject window = event.getBrowser().executeJavaScriptAndReturnValue("window").asObject(); - window.asObject().setProperty("ShopHelper", new ComposedNativeBridges(window, JOptionPane.getFrameForComponent(MiniComponentShopPane.this))); + window.setProperty("ShopHelper", new ComposedNativeBridges(window)); + } + }) + .prepareForV7(new InjectJsCallback() { + @Nullable + @Override + public Response on(Params params) { + // 7.x + JsObject window = params.frame().executeJavaScript("window"); + if (window != null) { + window.putProperty("ShopHelper", new ComposedNativeBridges(window)); + } + return InjectJsCallback.Response.proceed(); } }) .build(); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/ComposedNativeBridges.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/ComposedNativeBridges.java index ea729a145..3a09774c5 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/ComposedNativeBridges.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/ComposedNativeBridges.java @@ -1,9 +1,7 @@ package com.fr.design.mainframe.share.ui.online.mini.bridge; import com.teamdev.jxbrowser.chromium.JSAccessible; -import com.teamdev.jxbrowser.chromium.JSObject; - -import java.awt.Window; +import com.teamdev.jxbrowser.js.JsAccessible; /** * @author Starryi @@ -12,14 +10,19 @@ import java.awt.Window; */ public class ComposedNativeBridges { @JSAccessible - public final NativeBrowserBridge Browser; + @JsAccessible + public final Object Browser; + @JSAccessible - public final NativeAuthBridge Auth; + @JsAccessible + public final Object Auth; + @JSAccessible - public final NativeProductBridge Product; + @JsAccessible + public final Object Product; - public ComposedNativeBridges(JSObject window, Window nativeWindow) { - this.Browser = new NativeBrowserBridge(nativeWindow); + public ComposedNativeBridges(Object window) { + this.Browser = new NativeBrowserBridge(); this.Auth = new NativeAuthBridge(); this.Product = new NativeProductBridge(window); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeAuthBridge.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeAuthBridge.java index a78a3b231..42f3a6c65 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeAuthBridge.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeAuthBridge.java @@ -6,6 +6,7 @@ import com.fr.design.login.DesignerLoginHelper; import com.fr.design.login.DesignerLoginSource; import com.fr.design.mainframe.share.ui.online.mini.MiniComponentShopDialog; import com.teamdev.jxbrowser.chromium.JSAccessible; +import com.teamdev.jxbrowser.js.JsAccessible; import java.awt.Window; import java.util.HashMap; @@ -17,12 +18,14 @@ import java.util.HashMap; */ public class NativeAuthBridge { @JSAccessible + @JsAccessible @JSBridge public String getLoginUsername() { return DesignerEnvManager.getEnvManager().getDesignerLoginUsername(); } @JSAccessible + @JsAccessible @JSBridge public void goLogin() { Window parentWindow = MiniComponentShopDialog.getInstance().getWindow(); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeBrowserBridge.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeBrowserBridge.java index e06265874..ee77a8b95 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeBrowserBridge.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeBrowserBridge.java @@ -1,7 +1,9 @@ package com.fr.design.mainframe.share.ui.online.mini.bridge; import com.fr.design.bridge.exec.JSBridge; +import com.fr.design.mainframe.share.ui.online.mini.MiniComponentShopDialog; import com.teamdev.jxbrowser.chromium.JSAccessible; +import com.teamdev.jxbrowser.js.JsAccessible; import java.awt.Window; @@ -11,15 +13,14 @@ import java.awt.Window; * Created by Starryi on 2021/12/20 */ public class NativeBrowserBridge { - private final Window nativeWindow; - - public NativeBrowserBridge(Window nativeWindow) { - this.nativeWindow = nativeWindow; - } @JSAccessible + @JsAccessible @JSBridge public void dispose() { - this.nativeWindow.dispose(); + Window nativeWindow = MiniComponentShopDialog.getInstance().getWindow(); + if (nativeWindow != null) { + nativeWindow.dispose(); + } } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java index e9daf3e0e..0da415a5d 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java @@ -21,8 +21,7 @@ import com.fr.form.share.group.DefaultShareGroupManager; import com.fr.json.JSONObject; import com.fr.stable.StringUtils; import com.teamdev.jxbrowser.chromium.JSAccessible; -import com.teamdev.jxbrowser.chromium.JSFunction; -import com.teamdev.jxbrowser.chromium.JSObject; +import com.teamdev.jxbrowser.js.JsAccessible; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; @@ -38,20 +37,21 @@ import java.util.Set; * Created by Starryi on 2021/12/20 */ public class NativeProductBridge { - private final JSObject window; + private final Object window; private static final Map executingComponentInstallationTasks = new HashMap<>(); private static final Map executingComponentsPackageInstallationTasks = new HashMap<>(); private static final Map executingTemplateThemeInstallationTasks = new HashMap<>(); - private final Map> componentDownloadTaskStartListeners = new HashMap<>(); - private final Map> componentsPackageDownloadTaskStartListeners = new HashMap<>(); - private final Map> themeDownloadTaskStartListeners = new HashMap<>(); + private final Map> componentDownloadTaskStartListeners = new HashMap<>(); + private final Map> componentsPackageDownloadTaskStartListeners = new HashMap<>(); + private final Map> themeDownloadTaskStartListeners = new HashMap<>(); - public NativeProductBridge(JSObject window) { + public NativeProductBridge(Object window) { this.window = window; } @JSAccessible + @JsAccessible @JSBridge public boolean isProductDownloaded(String uuid) { for (Group group : DefaultShareGroupManager.getInstance().getAllGroup()) { @@ -66,16 +66,17 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge - public void addProductDownloadTaskStartListener(String json, JSFunction function) { + public void addProductDownloadTaskStartListener(String json, Object function) { JSONObject object = new JSONObject(json); OnlineShareWidget widget = OnlineShareWidget.parseFromJSONObject(object); String uuid = widget.getUuid(); boolean isPackage = widget.isWidgetPackage(); - Map> downloadTaskGetters = + Map> downloadTaskGetters = isPackage ? componentsPackageDownloadTaskStartListeners : componentDownloadTaskStartListeners; - Set startListeners = downloadTaskGetters.get(widget.getUuid()); + Set startListeners = downloadTaskGetters.get(widget.getUuid()); if (startListeners == null) { startListeners = new HashSet<>(); } @@ -86,16 +87,17 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge - public void removeProductDownloadTaskStartListener(String json, JSFunction function) { + public void removeProductDownloadTaskStartListener(String json, Object function) { JSONObject object = new JSONObject(json); OnlineShareWidget widget = OnlineShareWidget.parseFromJSONObject(object); String uuid = widget.getUuid(); boolean isPackage = widget.isWidgetPackage(); - Map> downloadTaskGetters = isPackage ? componentsPackageDownloadTaskStartListeners : componentDownloadTaskStartListeners; + Map> downloadTaskGetters = isPackage ? componentsPackageDownloadTaskStartListeners : componentDownloadTaskStartListeners; - Set startListeners = downloadTaskGetters.get(uuid); + Set startListeners = downloadTaskGetters.get(uuid); if (startListeners == null) { startListeners = new HashSet<>(); } @@ -104,6 +106,7 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge public Object getExecutingProductDownloadTask(String json) { JSONObject object = new JSONObject(json); @@ -121,22 +124,24 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge public Object createProductDownloadTask(String json) { JSONObject object = new JSONObject(json); OnlineShareWidget widget = OnlineShareWidget.parseFromJSONObject(object); int childrenCount = object.optInt("pkgsize", 0); if (childrenCount > 0) { - return new ComponentsPackageInstallationTask(window, widget, childrenCount); + return new ComponentsPackageInstallationTask(this, window, widget, childrenCount); } else { - return new ComponentInstallationTask(window, widget); + return new ComponentInstallationTask(this, window, widget); } } @JSAccessible + @JsAccessible @JSBridge - public void addThemeDownloadTaskStartListener(String themePath, JSFunction function) { - Set startListeners = themeDownloadTaskStartListeners.get(themePath); + public void addThemeDownloadTaskStartListener(String themePath, Object function) { + Set startListeners = themeDownloadTaskStartListeners.get(themePath); if (startListeners == null) { startListeners = new HashSet<>(); } @@ -145,9 +150,10 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge - public void removeThemeDownloadTaskStartListener(String themePath, JSFunction function) { - Set startListeners = themeDownloadTaskStartListeners.get(themePath); + public void removeThemeDownloadTaskStartListener(String themePath, Object function) { + Set startListeners = themeDownloadTaskStartListeners.get(themePath); if (startListeners == null) { startListeners = new HashSet<>(); } @@ -156,9 +162,10 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge public Object getExecutingThemeDownloadTask(String themePath) { - NativeTaskBridge task = executingTemplateThemeInstallationTasks.get(themePath); + NativeTaskBridge task = (NativeTaskBridge) executingTemplateThemeInstallationTasks.get(themePath); if (task != null) { task.checkJSEnvChange(this.window); } @@ -166,17 +173,20 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge public Object createTemplateThemeDownloadTask(String themePath) { - return new TemplateThemeInstallationTask(window, themePath); + return new TemplateThemeInstallationTask(this, window, themePath); } - public class ComponentInstallationTask extends NativeTaskBridge { + public static class ComponentInstallationTask extends NativeTaskBridge { + private final NativeProductBridge env; private final OnlineShareWidget widget; private final ComponentInstallation action; - public ComponentInstallationTask(JSObject window, OnlineShareWidget widget) { + public ComponentInstallationTask(NativeProductBridge env, Object window, OnlineShareWidget widget) { super(window); + this.env = env; this.widget = widget; action = new ComponentInstallation(widget); action.setActionListener(new AsyncInstallation.AsyncActionListener() { @@ -203,6 +213,7 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge @Override public void execute() { @@ -231,6 +242,7 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge @Override public void cancel() { @@ -246,8 +258,8 @@ public class NativeProductBridge { @Override protected void fireStartEvent(String event) { executingComponentInstallationTasks.put(widget.getUuid(), this); - Set startListeners = componentDownloadTaskStartListeners.get(widget.getUuid()); - SafeJSFunctionInvoker.invoke(startListeners, window); + Set startListeners = env.componentDownloadTaskStartListeners.get(widget.getUuid()); + SafeJSFunctionInvoker.invoke(startListeners, env.window); super.fireStartEvent(event); } @@ -264,14 +276,16 @@ public class NativeProductBridge { } } - public class ComponentsPackageInstallationTask extends NativeTaskBridge { + public static class ComponentsPackageInstallationTask extends NativeTaskBridge { + private final NativeProductBridge env; private final ComponentsPackageInstallation action; private final OnlineShareWidget widget; private final int childrenCount; - public ComponentsPackageInstallationTask(JSObject window, OnlineShareWidget widget, int childrenCount) { + public ComponentsPackageInstallationTask(NativeProductBridge env, Object window, OnlineShareWidget widget, int childrenCount) { super(window); + this.env = env; this.widget = widget; this.childrenCount = childrenCount; action = new ComponentsPackageInstallation(widget, childrenCount); @@ -299,6 +313,7 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge @Override public void execute() { @@ -343,6 +358,7 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge @Override public void cancel() { @@ -360,8 +376,8 @@ public class NativeProductBridge { executingComponentsPackageInstallationTasks.put(widget.getUuid(), this); super.fireStartEvent(event); - Set startListeners = componentsPackageDownloadTaskStartListeners.get(widget.getUuid()); - SafeJSFunctionInvoker.invoke(startListeners, window); + Set startListeners = env.componentsPackageDownloadTaskStartListeners.get(widget.getUuid()); + SafeJSFunctionInvoker.invoke(startListeners, env.window); } @Override @@ -377,11 +393,13 @@ public class NativeProductBridge { } } - public class TemplateThemeInstallationTask extends NativeTaskBridge { + public static class TemplateThemeInstallationTask extends NativeTaskBridge { + private final NativeProductBridge env; private final String themePath; private final TemplateThemeInstallation action; - public TemplateThemeInstallationTask(JSObject window, String themePath) { + public TemplateThemeInstallationTask(NativeProductBridge env, Object window, String themePath) { super(window); + this.env = env; this.themePath = themePath; Window miniShopWindow = MiniComponentShopDialog.getInstance().getWindow(); action = new TemplateThemeInstallation(miniShopWindow, themePath); @@ -404,6 +422,7 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge @Override public void execute() { @@ -418,6 +437,7 @@ public class NativeProductBridge { } @JSAccessible + @JsAccessible @JSBridge @Override public void cancel() { @@ -433,8 +453,8 @@ public class NativeProductBridge { @Override protected void fireStartEvent(String event) { executingTemplateThemeInstallationTasks.put(themePath, this); - Set startListeners = themeDownloadTaskStartListeners.get(themePath); - SafeJSFunctionInvoker.invoke(startListeners, window); + Set startListeners = env.themeDownloadTaskStartListeners.get(themePath); + SafeJSFunctionInvoker.invoke(startListeners, env.window); super.fireStartEvent(event); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java index eb343c623..06c26c018 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java @@ -4,12 +4,9 @@ import com.fr.design.bridge.exec.JSBridge; import com.fr.design.mainframe.share.mini.MiniShopNativeTask; import com.fr.design.mainframe.share.mini.MiniShopNativeTaskManager; import com.teamdev.jxbrowser.chromium.JSAccessible; -import com.teamdev.jxbrowser.chromium.JSFunction; -import com.teamdev.jxbrowser.chromium.JSObject; +import com.teamdev.jxbrowser.js.JsAccessible; -import java.util.HashMap; import java.util.HashSet; -import java.util.Map; import java.util.Set; /** @@ -19,14 +16,14 @@ import java.util.Set; */ public class NativeTaskBridge implements MiniShopNativeTask { - private JSObject window; - protected final Set statusCbs = new HashSet<>(); + private Object window; + protected final Set statusCbs = new HashSet<>(); - public NativeTaskBridge(JSObject window) { + public NativeTaskBridge(Object window) { this.window = window; } - public void checkJSEnvChange(JSObject window) { + public void checkJSEnvChange(Object window) { if (this.window != window) { this.window = window; this.statusCbs.clear(); @@ -35,24 +32,28 @@ public class NativeTaskBridge implements MiniShopNativeTask { @JSBridge @JSAccessible - public void addStatusCallback(JSFunction cb) { + @JsAccessible + public void addStatusCallback(Object cb) { this.statusCbs.add(cb); } @JSBridge @JSAccessible - public void removeStatusCallback(JSFunction cb) { + @JsAccessible + public void removeStatusCallback(Object cb) { this.statusCbs.remove(cb); } @JSBridge @JSAccessible + @JsAccessible @Override public void execute() { } @JSBridge @JSAccessible + @JsAccessible @Override public void cancel() { MiniShopNativeTaskManager.getInstance().removeCompletedTask(this); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/SafeJSFunctionInvoker.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/SafeJSFunctionInvoker.java index 238376f9e..e5bf71da8 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/SafeJSFunctionInvoker.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/SafeJSFunctionInvoker.java @@ -2,6 +2,8 @@ package com.fr.design.mainframe.share.ui.online.mini.bridge; import com.teamdev.jxbrowser.chromium.JSFunction; import com.teamdev.jxbrowser.chromium.JSObject; +import com.teamdev.jxbrowser.js.JsFunction; +import com.teamdev.jxbrowser.js.JsObject; import java.util.Collection; @@ -12,18 +14,31 @@ import java.util.Collection; */ public class SafeJSFunctionInvoker { - public static void invoke(Collection functions, JSObject instance, Object... args) { + public static void invoke(Collection functions, Object instance, Object... args) { if (functions != null) { - for (JSFunction function: functions) { - if (function != null && !function.getContext().isDisposed()) { - function.invoke(instance, args); - } + for (Object function: functions) { + invoke(function, instance, args); } } } - public static void invoke(JSFunction function, JSObject instance, Object... args) { - if (function != null && !function.getContext().isDisposed()) { + + public static void invoke(Object function, Object instance, Object... args) { + if (function != null) { + if (function instanceof JSFunction && instance instanceof JSObject) { + invokeV6((JSFunction) function, (JSObject) instance, args); + } else if (function instanceof JsFunction && instance instanceof JsObject) { + invokeV7((JsFunction) function, (JsObject) instance, args); + } + } + } + + private static void invokeV6(JSFunction function, JSObject instance, Object... args) { + if (!function.getContext().isDisposed()) { function.invoke(instance, args); } } + + private static void invokeV7(JsFunction function, JsObject instance, Object... args) { + function.invoke(instance, args); + } } From 45ae58a91ae87178f81a682161fdc42a4321d42f Mon Sep 17 00:00:00 2001 From: "Bruce.Deng" Date: Tue, 15 Feb 2022 11:28:07 +0800 Subject: [PATCH 15/36] =?UTF-8?q?REPORT-64011=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=A4=A7=E6=96=87=E6=9C=AC=20-=20=E5=85=88=E5=9B=9E=E9=80=80?= =?UTF-8?q?=EF=BC=8C=E7=AD=89=E6=96=B0=E5=89=8D=E7=AB=AF=E9=80=82=E9=85=8D?= =?UTF-8?q?=E5=AE=8C=E4=BA=86=E5=86=8D=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cell/settingpane/CellOtherSetPane.java | 171 +----------------- 1 file changed, 10 insertions(+), 161 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java index 99a0d9bf4..efab3fc66 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java @@ -12,10 +12,8 @@ import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.i18n.Toolkit; -import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.VerticalFlowLayout; @@ -60,8 +58,6 @@ public class CellOtherSetPane extends AbstractCellAttrPane { private static final int HEAD_HEIGTH = 24; private static final int COMBO_WIDTH = 154; private static final int BUTTON_GROUP_WIDTH = 140; - private static final double f = TableLayout.FILL; - private static final double p = TableLayout.PREFERRED; // normal private UIButtonGroup autoshrik; @@ -71,20 +67,8 @@ public class CellOtherSetPane extends AbstractCellAttrPane { private UIComboBox showContent; - //内容提示 - private UIButtonGroup tooltipButtonGroup; - private CardLayout tooltipLayout; - private JPanel tooltipPane; private UITextField tooltipTextField; - //文本超出时隐藏 - private UICheckBox textOverflowCheckBox; - private UIComboBox showPartComboBox; - private CardLayout showPartLayout; - private JPanel showPartPane; - private UISpinner showCharNums; - private UIComboBox textOverflowTypeComboBox; - private UITextField fileNameTextField; // 分页 @@ -230,16 +214,17 @@ public class CellOtherSetPane extends AbstractCellAttrPane { private JPanel seniorUpPane() { JPanel pane = new JPanel(new BorderLayout()); // TODO: 方法之间的耦合还比较严重。现在必须先执行 createShowContentPane,再执行 createSeniorCheckPane。否则出现 npe。 - pane.add(createTextOverflowPane(), BorderLayout.SOUTH); pane.add(createShowContentPane(), BorderLayout.CENTER); pane.add(createSeniorCheckPane(), BorderLayout.NORTH); return pane; } private JPanel createShowContentPane() { - double[] rowSize = {p, p, p, p}; + double f = TableLayout.FILL; + double p = TableLayout.PREFERRED; + double[] rowSize = {p, p, p}; double[] colSize = {f, COMBO_WIDTH}; - int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}}; + int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}}; JPanel fileNamePane = createNormal(); fileNamePane.setBorder(BorderFactory.createEmptyBorder(0,12,0,0)); @@ -248,96 +233,21 @@ public class CellOtherSetPane extends AbstractCellAttrPane { UIComponentUtils.setLineWrap(showContentLabel); UILabel toolTipLabel = FRWidgetFactory.createLineWrapLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_CellWrite_ToolTip")); - tooltipLayout = new CardLayout(); - tooltipPane = new JPanel(tooltipLayout); - tooltipPane.add(new JPanel(), "none"); - tooltipPane.add(tooltipTextField, "content"); - tooltipPane.setPreferredSize(new Dimension(0, 0)); - tooltipButtonGroup = new UIButtonGroup(new String[]{Toolkit.i18nText("Fine-Design_Report_CellWrite_ToolTip_Custom"), Toolkit.i18nText("Fine-Design_Report_CellWrite_ToolTip_CellValue")}); - tooltipButtonGroup.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - if (tooltipButtonGroup.getSelectedIndex() == 0) { - tooltipPane.setPreferredSize(new Dimension(154, 20)); - tooltipLayout.show(tooltipPane, "content"); - } else { - tooltipLayout.show(tooltipPane, "none"); - tooltipPane.setPreferredSize(new Dimension(0, 0)); - } - } - }); + JPanel toolTipTextFieldWrapper = new JPanel(new BorderLayout()); + toolTipTextFieldWrapper.add(tooltipTextField, BorderLayout.NORTH); Component[][] components = new Component[][]{ new Component[]{showContentLabel, UIComponentUtils.wrapWithBorderLayoutPane(showContent)}, new Component[]{fileNamePane, null}, // 选择"用下载连接显示二进制内容"时,会显示这一行的面板 - new Component[]{toolTipLabel, tooltipButtonGroup}, // “自定义”or"单元格值" - new Component[]{null, tooltipPane} // 选择“自定义”时显示这一行 + new Component[]{toolTipLabel, toolTipTextFieldWrapper} }; JPanel showContentPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, colSize, rowCount, LayoutConstants.VGAP_LARGE, LayoutConstants.VGAP_MEDIUM); - showContentPane.setBorder(BorderFactory.createEmptyBorder(6, 0, 6, 0)); + showContentPane.setBorder(BorderFactory.createEmptyBorder(6, 0, 12, 0)); return showContentPane; } - private JPanel createTextOverflowPane() { - showPartLayout = new CardLayout(); - showPartPane = new JPanel(showPartLayout); - showCharNums = new UISpinner(0, Integer.MAX_VALUE, 1, 10); - JPanel showPartNumPane = new JPanel(new BorderLayout(4, 0)); - showPartNumPane.add(new UILabel(Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_Nums")), BorderLayout.WEST); - showPartNumPane.add(showCharNums, BorderLayout.CENTER); - showPartPane.add(new JPanel(), "none"); - showPartPane.add(showPartNumPane, "content"); - showPartComboBox = new UIComboBox(new String[]{Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_CharNum"), Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_CellWidth")}); - showPartComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - if (showPartComboBox.getSelectedIndex() == 0) { - showPartPane.setPreferredSize(new Dimension(70, 20)); - showPartLayout.show(showPartPane, "content"); - } else { - showPartLayout.show(showPartPane, "none"); - showPartPane.setPreferredSize(new Dimension(0, 0)); - } - } - }); - - textOverflowTypeComboBox = new UIComboBox(new String[]{Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_Ellipsis"), Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_NoneSymbol")}); - UILabel showPartLabel = new UILabel(Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_ShowPart") + ":"); - UILabel hideTypeLabel = new UILabel(Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_HideType") + ":"); - Component[][] textOverflowComponents = new Component[][]{ - new Component[]{showPartLabel, showPartComboBox, showPartPane}, - new Component[]{hideTypeLabel, textOverflowTypeComboBox, null} - }; - JPanel textOverflowComPane = TableLayoutHelper.createTableLayoutPane(textOverflowComponents, new double[]{p, p}, new double[]{p, f, p}); - textOverflowComPane.setVisible(false); - textOverflowCheckBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_HideWhenOverflow")); - textOverflowCheckBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - textOverflowComPane.setVisible(e.getStateChange() == ItemEvent.SELECTED); - if (e.getStateChange() == ItemEvent.SELECTED) { - if (showPartComboBox.getSelectedIndex() == 0) { - showPartPane.setPreferredSize(new Dimension(70, 20)); - showPartLayout.show(showPartPane, "content"); - } else { - showPartLayout.show(showPartPane, "none"); - showPartPane.setPreferredSize(new Dimension(0, 0)); - } - noAutoRadioButton.setSelected(true); - } - } - }); - JPanel dynamicPaneWrapper = FRGUIPaneFactory.createBorderLayout_S_Pane(); - dynamicPaneWrapper.add(textOverflowComPane); - JPanel textOverflowPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); - textOverflowPane.add(textOverflowCheckBox, BorderLayout.NORTH); - textOverflowPane.add(dynamicPaneWrapper, BorderLayout.CENTER); - textOverflowPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); - return textOverflowPane; - } - private JPanel createSeniorCheckPane() { previewCellContent.setBorder(UIConstants.CELL_ATTR_ZEROBORDER); printAndExportContent.setBorder(UIConstants.CELL_ATTR_ZEROBORDER); @@ -461,11 +371,6 @@ public class CellOtherSetPane extends AbstractCellAttrPane { insertRowPolicyButtonGroup.setGlobalName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_CellWrite_InsertRow_Policy")); valueEditor.setGlobalName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_CellWrite_InsertRow_Policy")); pageFixedRowDataCheckBox.setGlobalName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_CellWrite_Page_Fixed_Row_Cell")); - tooltipButtonGroup.setGlobalName(Toolkit.i18nText("Fine-Design_Report_CellWrite_ToolTip_Button_Group")); - textOverflowCheckBox.setGlobalName(Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_HideWhenOverflow")); - showPartComboBox.setGlobalName(Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_ShowPart")); - showCharNums.setGlobalName(Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_Nums")); - textOverflowTypeComboBox.setGlobalName(Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_HideType")); } @@ -524,40 +429,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane { } else { showContent.setSelectedItem(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Default")); } - if (cellGUIAttr.isCustomTooltip()) { - tooltipButtonGroup.setSelectedIndex(0); - tooltipTextField.setText(cellGUIAttr.getTooltipText()); - } else { - tooltipButtonGroup.setSelectedIndex(1); - } - if (tooltipButtonGroup.getSelectedIndex() == 0) { - tooltipPane.setPreferredSize(new Dimension(100, 20)); - tooltipLayout.show(tooltipPane, "content"); - } else { - tooltipLayout.show(tooltipPane, "none"); - tooltipPane.setPreferredSize(new Dimension(0, 0)); - } - tooltipPane.setVisible(true); - if (cellGUIAttr.isHideTextWhenOverflow()) { - textOverflowCheckBox.setSelected(true); - if (cellGUIAttr.isShowCharNum()) { - showPartComboBox.setSelectedIndex(0); - showCharNums.setValue(cellGUIAttr.getShowCharNums()); - } else { - showPartComboBox.setSelectedIndex(1); - } - showPartPane.setVisible(true); - if (cellGUIAttr.isTextOverflowEllipsis()) { - textOverflowTypeComboBox.setSelectedItem(Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_Ellipsis")); - } else { - textOverflowTypeComboBox.setSelectedItem(Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_NoneSymbol")); - } - } else { - showPartComboBox.setSelectedIndex(0); - showCharNums.setValue(cellGUIAttr.getShowCharNums()); - textOverflowTypeComboBox.setSelectedIndex(0); - textOverflowCheckBox.setSelected(false); - } + tooltipTextField.setText(cellGUIAttr.getTooltipText()); CellPageAttr cellPageAttr = cellElement.getCellPageAttr(); // 分页 if (cellPageAttr == null) { cellPageAttr = new CellPageAttr(); @@ -649,18 +521,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane { cellGUIAttr.setFileName(fileNameTextField.getText()); } } - if (ComparatorUtils.equals(getGlobalName(), Toolkit.i18nText("Fine-Design_Report_CellWrite_ToolTip_Button_Group"))) { - cellGUIAttr.setCustomTooltip(tooltipButtonGroup.getSelectedIndex() == 0); - if (tooltipButtonGroup.getSelectedIndex() == 0) { - if (tooltipTextField.getText() == null || tooltipTextField.getText().trim().length() <= 0) { - cellGUIAttr.setTooltipText(fieldName); - } else { - cellGUIAttr.setTooltipText(tooltipTextField.getText()); - } - } else if (tooltipButtonGroup.getSelectedIndex() == 1) { - cellGUIAttr.setTooltipText("=$$$"); - } - } + if (ComparatorUtils.equals(getGlobalName(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_CellWrite_ToolTip"))) { if (tooltipTextField.getText() == null || tooltipTextField.getText().trim().length() <= 0) { cellGUIAttr.setTooltipText(fieldName); @@ -668,18 +529,6 @@ public class CellOtherSetPane extends AbstractCellAttrPane { cellGUIAttr.setTooltipText(tooltipTextField.getText()); } } - if (ComparatorUtils.equals(getGlobalName(), Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_HideWhenOverflow"))) { - cellGUIAttr.setHideTextWhenOverflow(textOverflowCheckBox.isSelected()); - } - if (ComparatorUtils.equals(getGlobalName(), Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_ShowPart"))) { - cellGUIAttr.setShowCharNum(showPartComboBox.getSelectedIndex() == 0); - } - if (ComparatorUtils.equals(getGlobalName(), Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_Nums"))) { - cellGUIAttr.setShowCharNums((int) showCharNums.getValue()); - } - if (ComparatorUtils.equals(getGlobalName(), Toolkit.i18nText("Fine-Design_Report_CellWrite_TextOverflow_HideType"))) { - cellGUIAttr.setTextOverflowEllipsis(textOverflowTypeComboBox.getSelectedIndex() == 0); - } // 如果与默认的CellGUIAttr相同,就不用保存这个属性了 if (ComparatorUtils.equals(cellGUIAttr, CellGUIAttr.DEFAULT_CELLGUIATTR)) { cellElement.setCellGUIAttr(cellNullGUIAttr); From a01d78599f7744f4c801de968566bd73f57cb9a4 Mon Sep 17 00:00:00 2001 From: Starryi Date: Tue, 15 Feb 2022 15:41:45 +0800 Subject: [PATCH 16/36] =?UTF-8?q?REPORT-66465=20=E3=80=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=95=86=E5=9F=8E=EF=BC=8C?= =?UTF-8?q?=E6=A6=82=E7=8E=87=E6=89=93=E5=BC=80=E7=A9=BA=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 调试模式下禁止HTTPS证书验证,使得商城测试服务器 可以正常访问 【改动思路】 同上 --- .../fr/design/ui/compatible/NewModernUIPane.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/ui/compatible/NewModernUIPane.java b/designer-base/src/main/java/com/fr/design/ui/compatible/NewModernUIPane.java index d755d4e05..0b56fc0ad 100644 --- a/designer-base/src/main/java/com/fr/design/ui/compatible/NewModernUIPane.java +++ b/designer-base/src/main/java/com/fr/design/ui/compatible/NewModernUIPane.java @@ -17,8 +17,11 @@ import com.teamdev.jxbrowser.engine.EngineOptions; import com.teamdev.jxbrowser.engine.RenderingMode; import com.teamdev.jxbrowser.event.Observer; import com.teamdev.jxbrowser.js.JsObject; +import com.teamdev.jxbrowser.net.Network; import com.teamdev.jxbrowser.net.Scheme; +import com.teamdev.jxbrowser.net.callback.VerifyCertificateCallback; import com.teamdev.jxbrowser.view.swing.BrowserView; +import org.jetbrains.annotations.Nullable; import java.awt.BorderLayout; @@ -108,6 +111,17 @@ public class NewModernUIPane extends ModernUIPane { } Engine engine = Engine.newInstance(builder.build()); + if (DesignerEnvManager.getEnvManager().isOpenDebug()) { + // 调试模式下,禁止HTTPS证书验证,使得可以正常访问商城测试服务器等 + Network network = engine.network(); + network.set(VerifyCertificateCallback.class, new VerifyCertificateCallback() { + @Nullable + @Override + public Response on(Params params) { + return VerifyCertificateCallback.Response.valid(); + } + }); + } browser = engine.newBrowser(); // 初始化的时候,就把命名空间对象初始化好,确保window.a.b.c("a.b.c"为命名空间)对象都是初始化过的 From 50754f75d2611da9e5265d3eaa819b3b073083ae Mon Sep 17 00:00:00 2001 From: Starryi Date: Tue, 15 Feb 2022 17:08:04 +0800 Subject: [PATCH 17/36] =?UTF-8?q?REPORT-66807=20Mini=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E5=90=AF=E5=8A=A8=E6=9D=A5=E6=BA=90=E5=9F=8B?= =?UTF-8?q?=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 区分不同的启动来源,便于埋点分析 【改动思路】 同上 --- .../design/mainframe/share/ui/online/OnlineWidgetTabPane.java | 2 +- .../share/ui/online/mini/MiniComponentShopDialog.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java index 1ab2cec12..cfa5d799f 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java @@ -104,7 +104,7 @@ public class OnlineWidgetTabPane extends JPanel { @Override public void actionPerformed(ActionEvent e) { if (OnlineShopUtils.testConnection() && ComponentShareUtil.isShowMiniShopWindow()) { - MiniComponentShopDialog.getInstance().show(); + MiniComponentShopDialog.getInstance().showFromOnlineRepoPane(); FormWidgetDetailPane.getInstance().switch2Local(); FormWidgetDetailPane.getInstance().enterWidgetLib(); } else { diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java index 81bc642b4..817adfa34 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java @@ -110,6 +110,10 @@ public class MiniComponentShopDialog { frame.setVisible(true); } + public void showFromOnlineRepoPane() { + show(); + } + public Container getContentPane() { if (frame != null) { return frame.getContentPane(); From 10528297b3994addaacd94ff1ea9cf1fd822c759 Mon Sep 17 00:00:00 2001 From: kerry Date: Wed, 16 Feb 2022 14:58:45 +0800 Subject: [PATCH 18/36] =?UTF-8?q?REPORT-66808=20=20&&=20REPORT-66811=20?= =?UTF-8?q?=E3=80=90=E6=96=B0=E8=80=81=E8=87=AA=E9=80=82=E5=BA=94=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=9D=A2=E6=9D=BF=E4=BF=AE=E6=94=B9=E3=80=91=E8=80=81?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F-PC=E7=AB=AF=E8=87=AA=E9=80=82=E5=BA=94?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E7=9A=84=E2=80=9C=E6=8A=A5=E8=A1=A8=E2=80=9D?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E9=BB=98=E8=AE=A4=E6=97=B6=EF=BC=8C=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E5=9D=97=E5=8F=B3=E4=BE=A7=E8=AE=BE=E7=BD=AE=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E9=A2=84=E6=9C=9F=E6=98=AF=E6=9C=89=E4=B8=AA=E2=80=9C?= =?UTF-8?q?=E5=B7=B2=E9=80=89=E6=8B=A9=E9=BB=98=E8=AE=A4balabala=E2=80=9D?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=96=87=E5=AD=97=E7=9A=84=EF=BC=8C=E7=8E=B0?= =?UTF-8?q?=E5=9C=A8=E4=B9=88=E6=9C=89=EF=BC=9B=E3=80=90=E6=96=B0=E8=80=81?= =?UTF-8?q?=E8=87=AA=E9=80=82=E5=BA=94=E9=85=8D=E7=BD=AE=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=91=E8=80=81=E6=A8=A1=E5=BC=8F-?= =?UTF-8?q?=E4=BA=A4=E4=BA=92=E6=96=87=E6=A1=A3=E9=87=8C=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E7=9A=84=E7=BB=9D=E5=AF=B9=E5=B8=83=E5=B1=80=E4=B8=8B=EF=BC=8C?= =?UTF-8?q?=E2=80=9C=E6=8A=A5=E8=A1=A8=E7=BC=A9=E6=94=BE=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E2=80=9D=E5=8F=AF=E9=80=89=E2=80=9C=E5=8F=8C=E5=90=91=E8=87=AA?= =?UTF-8?q?=E9=80=82=E5=BA=94=E2=80=9D=E2=80=9C=E4=B8=8D=E8=87=AA=E9=80=82?= =?UTF-8?q?=E5=BA=94=E2=80=9D=EF=BC=8C=E7=8E=B0=E5=9C=A8=E7=9A=84=E6=95=88?= =?UTF-8?q?=E6=9E=9C=E6=98=AF=E2=80=9C=E5=9B=BA=E5=AE=9A=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=E2=80=9D=E2=80=9C=E9=80=82=E5=BA=94=E5=8C=BA=E5=9F=9F=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/report/fit/FormFitAttrModelType.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/report/fit/FormFitAttrModelType.java b/designer-base/src/main/java/com/fr/design/report/fit/FormFitAttrModelType.java index 658eece8e..c43aa057d 100644 --- a/designer-base/src/main/java/com/fr/design/report/fit/FormFitAttrModelType.java +++ b/designer-base/src/main/java/com/fr/design/report/fit/FormFitAttrModelType.java @@ -27,8 +27,8 @@ public enum FormFitAttrModelType { @Override public Item[] getAbsoluteLayoutSaleAttr() { return new Item[]{ - new Item(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Scaling_Mode_Fit"), WAbsoluteLayout.STATE_FIT), - new Item(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Scaling_Mode_Fixed"), WAbsoluteLayout.STATE_FIXED) + new Item(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Attr_Bidirectional_Adaptive"), WAbsoluteLayout.STATE_FIT), + new Item(com.fr.design.i18n.Toolkit.i18nText("Fine-Designer_Fit-No"), WAbsoluteLayout.STATE_FIXED) }; } From 01a40a1e7bbde69f71e6252e821fda3e54058f68 Mon Sep 17 00:00:00 2001 From: kerry Date: Wed, 16 Feb 2022 14:59:14 +0800 Subject: [PATCH 19/36] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/ElementEditorDefinePane.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/ElementEditorDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/ElementEditorDefinePane.java index 3eb947488..8f1e1c994 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/ElementEditorDefinePane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/ElementEditorDefinePane.java @@ -7,22 +7,28 @@ import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.creator.*; import com.fr.design.fit.common.TemplateTool; import com.fr.design.fit.attrpane.PcFitExpandablePane; +import com.fr.design.gui.ilable.UIAutoChangeLineLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.style.FollowingThemePane; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.widget.accessibles.AccessibleElementCaseToolBarEditor; import com.fr.design.widget.ui.designer.component.PaddingBoundPane; import com.fr.form.ui.ElementCaseEditor; import com.fr.form.ui.PaddingMargin; import com.fr.form.web.FormToolBarManager; import com.fr.general.ComparatorUtils; +import com.fr.report.fit.FitProvider; import com.fr.report.fit.ReportFitAttr; +import com.fr.report.fit.ReportFitConfig; import javax.swing.BorderFactory; import javax.swing.JPanel; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Component; import java.util.ArrayList; import java.util.List; @@ -78,11 +84,23 @@ public class ElementEditorDefinePane extends WTitleLayoutDefinePane Date: Wed, 16 Feb 2022 18:37:41 +0800 Subject: [PATCH 20/36] =?UTF-8?q?REPORT-66254=20=E3=80=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E6=89=93=E5=BC=80=E5=95=86=E5=9F=8E=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E5=88=B0=E5=95=86=E5=9F=8E=E5=86=85=E5=AE=B9=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=87=BA=E6=9D=A5=EF=BC=8C=E6=9C=9F=E9=97=B4=E5=A4=A7=E6=A6=82?= =?UTF-8?q?=E6=9C=895=E7=A7=92=E7=A9=BA=E7=99=BD=E7=8A=B6=E6=80=81?= =?UTF-8?q?=EF=BC=8C=E9=9C=80=E8=A6=81=E4=BC=98=E5=8C=96=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 1. 网络加载时间比较长,从而出现空白画面 2. 前端资源JS中存在相对地址的fetch请求,因而无法将JS缓存到本地使用 为了缓存空白问题,关闭商城窗口时重新加载数据,清除页面状态,同时不清除 窗口内存资源。从而再下次打开时,可以直接展示该窗口对象,提高展示效率。 【改动思路】 同上 --- .../share/ui/online/mini/MiniComponentShopDialog.java | 3 +-- .../share/ui/online/mini/MiniComponentShopPane.java | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java index 817adfa34..ab17b0de3 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java @@ -67,8 +67,7 @@ public class MiniComponentShopDialog { for (WindowListener listener: windowListeners) { listener.windowClosed(e); } - getInstance().frame = null; - shopPane.dispose(); + shopPane.reload(); } @Override diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopPane.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopPane.java index 9b980f14b..f9d3849f7 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopPane.java @@ -59,13 +59,13 @@ public class MiniComponentShopPane extends JPanel { loginListener = new Listener() { @Override public void on(Event event, String param) { - modernUIPane.redirect(OnlineShopUtils.getWebMiniShopPath()); + reload(); } }; logoutListener = new Listener() { @Override public void on(Event event, String param) { - modernUIPane.redirect(OnlineShopUtils.getWebMiniShopPath()); + reload(); } }; @@ -78,4 +78,8 @@ public class MiniComponentShopPane extends JPanel { EventDispatcher.stopListen(loginListener); EventDispatcher.stopListen(logoutListener); } + + public void reload() { + modernUIPane.redirect(OnlineShopUtils.getWebMiniShopPath()); + } } From 776c38aa4e32a939675de8f5e5639a7ffd0ad810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 14:08:18 +0800 Subject: [PATCH 21/36] =?UTF-8?q?REPORT-66884=20=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E6=8B=96=E6=8B=BD=E7=BB=84=E4=BB=B6=E6=97=B6=E5=80=99=E5=A4=87?= =?UTF-8?q?=E4=BB=BD=E7=BB=84=E4=BB=B6=E7=9A=84=E6=97=B6=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/beans/models/DraggingModel.java | 10 ---------- .../mainframe/FormCreatorDropTarget.java | 6 +----- .../com/fr/design/mainframe/FormDesigner.java | 20 +++++++------------ .../guide/creator/GuideCreateUtils.java | 7 ++++--- 4 files changed, 12 insertions(+), 31 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/models/DraggingModel.java b/designer-form/src/main/java/com/fr/design/designer/beans/models/DraggingModel.java index 6308ff70b..95e003faf 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/models/DraggingModel.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/models/DraggingModel.java @@ -14,7 +14,6 @@ public class DraggingModel { private MouseEvent currentDragEvent; private int creatorLeftTopX = -999; // 隐藏 private int creatorLeftTopY = -999; // 隐藏 - private boolean dragNewWidget; // 是否正在拖拽一个新的组件下来 public DraggingModel() { @@ -40,11 +39,6 @@ public class DraggingModel { return this; } - public DraggingModel dragNewWidget(boolean dragNewWidget) { - this.dragNewWidget = dragNewWidget; - return this; - } - public FormDesigner getDesigner() { return designer; } @@ -79,10 +73,6 @@ public class DraggingModel { return creatorLeftTopY; } - public boolean isDragNewWidget() { - return dragNewWidget; - } - public void moveTo(int x, int y) { XLayoutContainer container = designer.getDraggingHotspotLayout(); LayoutAdapter adapter = container.getLayoutAdapter(); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java b/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java index aa58d713e..62e256379 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java @@ -264,11 +264,7 @@ public class FormCreatorDropTarget extends DropTarget { Point loc = dtde.getLocation(); int x = designer.getRelativeX(loc.x); int y = designer.getRelativeY(loc.y); - if (model.isDragNewWidget()) { - designer.addNewWidget(creator, x, y); - } else { - designer.changeWidgetPlace(creator, x, y); - } + designer.addWidgetToForm(creator, x, y); // 放到事件末尾执行 SwingUtilities.invokeLater(new Runnable() { @Override diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index a703512ab..0e28ef3b6 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -1252,12 +1252,12 @@ public class FormDesigner extends TargetComponent implements TreeSelection return; } + instantiateCreator(xCreator); draggingModel = new DraggingModel() .designer(this) .creator(xCreator) .startDragEvent(startDragEvent) - .currentDragEvent(currentDragEvent) - .dragNewWidget(true); + .currentDragEvent(currentDragEvent); this.setDropTarget(new FormCreatorDropTarget(this, xCreator)); repaint(); } @@ -1273,12 +1273,12 @@ public class FormDesigner extends TargetComponent implements TreeSelection if (currentDragEvent == null || this.getDropTarget() != null) { return; } + backUpCreator(xCreator); draggingModel = new DraggingModel() .designer(this) .creator(xCreator) .startDragEvent(startDragEvent) - .currentDragEvent(currentDragEvent) - .dragNewWidget(false); + .currentDragEvent(currentDragEvent); XLayoutContainer container = this.getDraggingHotspotLayout(); LayoutAdapter adapter = container.getLayoutAdapter(); adapter.dragging(this.getDraggingModel()); @@ -1990,7 +1990,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection return spacingLineDrawer; } - private void instantiateCreator(XCreator creator) { + public void instantiateCreator(XCreator creator) { ModelUtil.renameWidgetName(this.getTarget(), creator); creator.addNotify(); @@ -1999,18 +1999,12 @@ public class FormDesigner extends TargetComponent implements TreeSelection creator.putClientProperty(AdapterBus.CLIENT_PROPERTIES, adapter); } - public void addNewWidget(XCreator creator, int x, int y) { - instantiateCreator(creator); - addWidgetToForm(creator, x, y); - } - - public void changeWidgetPlace(XCreator creator, int x, int y) { + public void backUpCreator(XCreator creator) { creator.backupCurrentSize(); creator.backupParent(); - addWidgetToForm(creator, x, y); } - private void addWidgetToForm(XCreator creator, int x, int y) { + public void addWidgetToForm(XCreator creator, int x, int y) { if(creator == null) { return; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java index bb2120874..bb651cce9 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java @@ -130,12 +130,13 @@ public class GuideCreateUtils { return; } FormDesigner designer = GuideCreateUtils.getFormDesigner(); - designer.getSelectionModel().selectACreator(xLayoutContainer); if (dragNewComponent) { - designer.addNewWidget(xCreator, xLayoutContainer.getX(), xLayoutContainer.getY()); + designer.instantiateCreator(xCreator); } else { - designer.changeWidgetPlace(xCreator, xLayoutContainer.getX(), xLayoutContainer.getY()); + designer.backUpCreator(xCreator); } + designer.getSelectionModel().selectACreator(xLayoutContainer); + designer.addWidgetToForm(xCreator, xLayoutContainer.getX(), xLayoutContainer.getY()); designer.getSelectionModel().selectACreator(xCreator); } From ea6418f46c3fde3215be95fd700306f36d4ef6be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 14:19:10 +0800 Subject: [PATCH 22/36] REPORT-66884 --- .../com/fr/design/mainframe/FormDesigner.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index 0e28ef3b6..2b43265f9 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -1991,17 +1991,21 @@ public class FormDesigner extends TargetComponent implements TreeSelection } public void instantiateCreator(XCreator creator) { - ModelUtil.renameWidgetName(this.getTarget(), creator); - creator.addNotify(); + if (creator != null) { + ModelUtil.renameWidgetName(this.getTarget(), creator); + creator.addNotify(); - ComponentAdapter adapter = new CompositeComponentAdapter(this, creator); - adapter.initialize(); - creator.putClientProperty(AdapterBus.CLIENT_PROPERTIES, adapter); + ComponentAdapter adapter = new CompositeComponentAdapter(this, creator); + adapter.initialize(); + creator.putClientProperty(AdapterBus.CLIENT_PROPERTIES, adapter); + } } public void backUpCreator(XCreator creator) { - creator.backupCurrentSize(); - creator.backupParent(); + if (creator != null) { + creator.backupCurrentSize(); + creator.backupParent(); + } } public void addWidgetToForm(XCreator creator, int x, int y) { From dcc0f0ad2a85c4dfee77c3b732435a10c4569023 Mon Sep 17 00:00:00 2001 From: Starryi Date: Thu, 17 Feb 2022 14:47:16 +0800 Subject: [PATCH 23/36] =?UTF-8?q?REPORT-66930=20=E3=80=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E7=BD=91=E6=85=A2=E6=97=B6=E5=A4=9A=E6=AC=A1=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E4=B8=8B=E8=BD=BD=E5=87=BA=E7=8E=B0=E5=A4=9A=E4=B8=AA?= =?UTF-8?q?=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 存在任务重复创建和执行的问题 【改动思路】 同上 --- .../mini/bridge/NativeProductBridge.java | 73 ++++++++++++++----- .../online/mini/bridge/NativeTaskBridge.java | 6 ++ 2 files changed, 62 insertions(+), 17 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java index 0da415a5d..e6a4f720c 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java @@ -37,10 +37,15 @@ import java.util.Set; * Created by Starryi on 2021/12/20 */ public class NativeProductBridge { + private static final Map createdComponentInstallationTasks = new HashMap<>(); + private static final Map createdComponentsPackageInstallationTasks = new HashMap<>(); + private static final Map createdTemplateThemeInstallationTasks = new HashMap<>(); + + private static final Map startedComponentInstallationTasks = new HashMap<>(); + private static final Map startedComponentsPackageInstallationTasks = new HashMap<>(); + private static final Map startedTemplateThemeInstallationTasks = new HashMap<>(); + private final Object window; - private static final Map executingComponentInstallationTasks = new HashMap<>(); - private static final Map executingComponentsPackageInstallationTasks = new HashMap<>(); - private static final Map executingTemplateThemeInstallationTasks = new HashMap<>(); private final Map> componentDownloadTaskStartListeners = new HashMap<>(); private final Map> componentsPackageDownloadTaskStartListeners = new HashMap<>(); @@ -115,7 +120,7 @@ public class NativeProductBridge { boolean isPackage = widget.isWidgetPackage(); Map executingDownloadTask = - isPackage ? executingComponentsPackageInstallationTasks : executingComponentInstallationTasks; + isPackage ? startedComponentsPackageInstallationTasks : startedComponentInstallationTasks; NativeTaskBridge task = executingDownloadTask.get(uuid); if (task != null) { task.checkJSEnvChange(this.window); @@ -131,9 +136,22 @@ public class NativeProductBridge { OnlineShareWidget widget = OnlineShareWidget.parseFromJSONObject(object); int childrenCount = object.optInt("pkgsize", 0); if (childrenCount > 0) { - return new ComponentsPackageInstallationTask(this, window, widget, childrenCount); + if (createdComponentsPackageInstallationTasks.containsKey(widget.getUuid())) { + return createdComponentsPackageInstallationTasks.get(widget.getUuid()); + } else { + ComponentsPackageInstallationTask task = new ComponentsPackageInstallationTask(this, window, widget, childrenCount); + createdComponentsPackageInstallationTasks.put(widget.getUuid(), task); + return task; + } + } else { - return new ComponentInstallationTask(this, window, widget); + if (createdComponentInstallationTasks.containsKey(widget.getUuid())) { + return createdComponentInstallationTasks.get(widget.getUuid()); + } else { + ComponentInstallationTask task = new ComponentInstallationTask(this, window, widget); + createdComponentInstallationTasks.put(widget.getUuid(), task); + return task; + } } } @@ -165,7 +183,7 @@ public class NativeProductBridge { @JsAccessible @JSBridge public Object getExecutingThemeDownloadTask(String themePath) { - NativeTaskBridge task = (NativeTaskBridge) executingTemplateThemeInstallationTasks.get(themePath); + NativeTaskBridge task = startedTemplateThemeInstallationTasks.get(themePath); if (task != null) { task.checkJSEnvChange(this.window); } @@ -176,7 +194,13 @@ public class NativeProductBridge { @JsAccessible @JSBridge public Object createTemplateThemeDownloadTask(String themePath) { - return new TemplateThemeInstallationTask(this, window, themePath); + if (createdTemplateThemeInstallationTasks.containsKey(themePath)) { + return createdTemplateThemeInstallationTasks.get(themePath); + } else { + TemplateThemeInstallationTask task = new TemplateThemeInstallationTask(this, window, themePath); + createdTemplateThemeInstallationTasks.put(themePath, task); + return task; + } } public static class ComponentInstallationTask extends NativeTaskBridge { @@ -217,6 +241,9 @@ public class NativeProductBridge { @JSBridge @Override public void execute() { + if (isExecuting) { + return; + } super.execute(); SwingUtilities.invokeLater(new Runnable() { @Override @@ -257,7 +284,7 @@ public class NativeProductBridge { @Override protected void fireStartEvent(String event) { - executingComponentInstallationTasks.put(widget.getUuid(), this); + startedComponentInstallationTasks.put(widget.getUuid(), this); Set startListeners = env.componentDownloadTaskStartListeners.get(widget.getUuid()); SafeJSFunctionInvoker.invoke(startListeners, env.window); super.fireStartEvent(event); @@ -265,13 +292,15 @@ public class NativeProductBridge { @Override protected void fireFailureEvent(String event) { - executingComponentInstallationTasks.remove(widget.getUuid()); + startedComponentInstallationTasks.remove(widget.getUuid()); + createdComponentInstallationTasks.remove(widget.getUuid()); super.fireFailureEvent(event); } @Override protected void fireSuccessEvent(String event) { - executingComponentInstallationTasks.remove(widget.getUuid()); + startedComponentInstallationTasks.remove(widget.getUuid()); + createdComponentInstallationTasks.remove(widget.getUuid()); super.fireSuccessEvent(event); } } @@ -317,6 +346,9 @@ public class NativeProductBridge { @JSBridge @Override public void execute() { + if (isExecuting) { + return; + } super.execute(); SwingUtilities.invokeLater(new Runnable() { @Override @@ -373,7 +405,7 @@ public class NativeProductBridge { @Override protected void fireStartEvent(String event) { - executingComponentsPackageInstallationTasks.put(widget.getUuid(), this); + startedComponentsPackageInstallationTasks.put(widget.getUuid(), this); super.fireStartEvent(event); Set startListeners = env.componentsPackageDownloadTaskStartListeners.get(widget.getUuid()); @@ -382,13 +414,15 @@ public class NativeProductBridge { @Override protected void fireFailureEvent(String event) { - executingComponentsPackageInstallationTasks.remove(widget.getUuid()); + startedComponentsPackageInstallationTasks.remove(widget.getUuid()); + createdComponentsPackageInstallationTasks.remove(widget.getUuid()); super.fireFailureEvent(event); } @Override protected void fireSuccessEvent(String event) { - executingComponentsPackageInstallationTasks.remove(widget.getUuid()); + startedComponentsPackageInstallationTasks.remove(widget.getUuid()); + createdComponentsPackageInstallationTasks.remove(widget.getUuid()); super.fireSuccessEvent(event); } } @@ -426,6 +460,9 @@ public class NativeProductBridge { @JSBridge @Override public void execute() { + if (isExecuting) { + return; + } super.execute(); SwingUtilities.invokeLater(new Runnable() { @Override @@ -452,7 +489,7 @@ public class NativeProductBridge { @Override protected void fireStartEvent(String event) { - executingTemplateThemeInstallationTasks.put(themePath, this); + startedTemplateThemeInstallationTasks.put(themePath, this); Set startListeners = env.themeDownloadTaskStartListeners.get(themePath); SafeJSFunctionInvoker.invoke(startListeners, env.window); super.fireStartEvent(event); @@ -460,13 +497,15 @@ public class NativeProductBridge { @Override protected void fireFailureEvent(String event) { - executingTemplateThemeInstallationTasks.remove(themePath); + startedTemplateThemeInstallationTasks.remove(themePath); + createdTemplateThemeInstallationTasks.remove(themePath); super.fireFailureEvent(event); } @Override protected void fireSuccessEvent(String event) { - executingTemplateThemeInstallationTasks.remove(themePath); + startedTemplateThemeInstallationTasks.remove(themePath); + createdTemplateThemeInstallationTasks.remove(themePath); super.fireSuccessEvent(event); } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java index 06c26c018..2929a3540 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java @@ -18,6 +18,7 @@ public class NativeTaskBridge implements MiniShopNativeTask { private Object window; protected final Set statusCbs = new HashSet<>(); + protected boolean isExecuting = false; public NativeTaskBridge(Object window) { this.window = window; @@ -49,6 +50,9 @@ public class NativeTaskBridge implements MiniShopNativeTask { @JsAccessible @Override public void execute() { + if (!isExecuting) { + isExecuting = true; + } } @JSBridge @@ -68,10 +72,12 @@ public class NativeTaskBridge implements MiniShopNativeTask { SafeJSFunctionInvoker.invoke(statusCbs, window, "PROGRESS", event); } protected void fireSuccessEvent(String event) { + isExecuting = false; MiniShopNativeTaskManager.getInstance().removeCompletedTask(this); SafeJSFunctionInvoker.invoke(statusCbs, window, "SUCCESS", event); } protected void fireFailureEvent(String event) { + isExecuting = false; MiniShopNativeTaskManager.getInstance().removeCompletedTask(this); SafeJSFunctionInvoker.invoke(statusCbs, window, "FAILURE", event); } From 360daa5c1af55643ed8a4f2998b9f38b8d4b006e Mon Sep 17 00:00:00 2001 From: Starryi Date: Thu, 17 Feb 2022 14:50:00 +0800 Subject: [PATCH 24/36] =?UTF-8?q?REPORT-66254=20=E3=80=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E6=89=93=E5=BC=80=E5=95=86=E5=9F=8E=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E5=88=B0=E5=95=86=E5=9F=8E=E5=86=85=E5=AE=B9=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=87=BA=E6=9D=A5=EF=BC=8C=E6=9C=9F=E9=97=B4=E5=A4=A7=E6=A6=82?= =?UTF-8?q?=E6=9C=895=E7=A7=92=E7=A9=BA=E7=99=BD=E7=8A=B6=E6=80=81?= =?UTF-8?q?=EF=BC=8C=E9=9C=80=E8=A6=81=E4=BC=98=E5=8C=96=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 补一下因为REPORT-66254优化改动,导致的在线组件库禁用提示面板显示不正常 的问题。优化后,再次打开Mini商城窗口不会重新创建Window,只会执行 setVisible,所以windowOpened回调方法没有执行。 【改动思路】 补充下windowOpened回调方法执行逻辑 同上 --- .../share/ui/online/mini/MiniComponentShopDialog.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java index ab17b0de3..be2d72466 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java @@ -106,6 +106,11 @@ public class MiniComponentShopDialog { if (frame == null) { frame = createFrame(); } + if (!frame.isVisible()) { + for (WindowListener listener: windowListeners) { + listener.windowOpened(null); + } + } frame.setVisible(true); } From 3d4902ed344f8e7c8f1b4158719004fd9f1b98d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 15:18:27 +0800 Subject: [PATCH 25/36] =?UTF-8?q?REPORT-66886=20=E9=BC=A0=E6=A0=87?= =?UTF-8?q?=E6=82=AC=E6=B5=AEn=E7=A7=92=E5=90=8E=E9=87=8A=E6=94=BE?= =?UTF-8?q?=EF=BC=8C=E6=B2=A1=E6=9C=89=E5=B0=86=E7=BB=84=E4=BB=B6=E6=94=BE?= =?UTF-8?q?=E5=85=A5tab=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beans/events/AddingWidgetListenerTable.java | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/events/AddingWidgetListenerTable.java b/designer-form/src/main/java/com/fr/design/designer/beans/events/AddingWidgetListenerTable.java index 4825e8888..5d0889c35 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/events/AddingWidgetListenerTable.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/events/AddingWidgetListenerTable.java @@ -28,23 +28,13 @@ public class AddingWidgetListenerTable { public void beforeAdded() { for (final AddingWidgetListener listener : listeners) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - listener.beforeAdded(); - } - }); + listener.beforeAdded(); } } public void afterAdded(boolean addResult) { for (final AddingWidgetListener listener : listeners) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - listener.afterAdded(addResult); - } - }); + listener.afterAdded(addResult); } } From 458cdf7a61439d11de5396283cf8368000ac4378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 17:07:14 +0800 Subject: [PATCH 26/36] REPORT-66827&REPORT-66947&REPORT-66946 --- .../main/java/com/fr/design/mainframe/EditingMouseListener.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java b/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java index f48b60320..0555cf172 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java @@ -459,13 +459,11 @@ public class EditingMouseListener extends MouseInputAdapter { if (isSelectionDrag()) { stateModel.changeSelection(e); - return; } // 调整大小这边单独提出来,不跟后面拖组件混在一起,实在不好管理 if (stateModel.isDraggingSize()) { stateModel.dragging(e); - return; } designer.startDraggingFormWidget(lastXCreator, lastPressEvent, e); From fafc8e71ff4af176736cdbc932f61783afcd019c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 17:08:00 +0800 Subject: [PATCH 27/36] REPORT-66947 --- .../com/fr/design/mainframe/FormDesignerUI.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java index 1d641dece..8307e945f 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java @@ -116,8 +116,8 @@ public class FormDesignerUI extends ComponentUI { designer.getPainter().paint(g, designer.getArea().getHorizontalValue(), designer.getArea().getVerticalValue() + designer.getParaHeight()); } - DraggingModel draggingModel = designer.getDraggingModel(); - if (draggingModel != null && draggingModel.getCreator() != null) { + + if (needPaintDraggingBean()) { // 当前正在添加的组件 paintDraggingBean(g); } @@ -217,6 +217,19 @@ public class FormDesignerUI extends ComponentUI { ComponentUtils.resetBuffer(dbcomponents); } + private boolean needPaintDraggingBean() { + DraggingModel draggingModel = designer.getDraggingModel(); + if (draggingModel == null || draggingModel.getCreator() == null) { + return false; + } + + XCreator creator = draggingModel.getCreator(); + int leftTopX = draggingModel.getCreatorLeftTopX(); + int leftTopY = draggingModel.getCreatorLeftTopY(); + + return leftTopX + creator.getWidth() > 0 && leftTopY + creator.getHeight() > 0; + } + private void paintAuthorityCreator(Graphics2D g2d, Rectangle creatorBounds) { back_or_selection_rect.setRect(creatorBounds.getX(), creatorBounds.getY(), From a8572a9e0c37099316dff36c069459918b5d316b Mon Sep 17 00:00:00 2001 From: Starryi Date: Thu, 17 Feb 2022 18:09:15 +0800 Subject: [PATCH 28/36] =?UTF-8?q?REPORT-66306=20=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=8C=85=E4=B8=8B=E8=BD=BD=E9=9D=A2=E6=9D=BF=E6=97=A0=E9=81=AE?= =?UTF-8?q?=E7=BD=A9=E9=98=B4=E5=BD=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 swing中两个组件上下层叠时,重绘底层组件,会将其内容会知道上方,遮挡上层组件, 因此也需要手动重新绘制上层组件。 【改动思路】 主动调用下阴影层的重绘方法 --- .../share/ui/block/OnlineWidgetBlock.java | 67 ++++++++++--------- .../ui/online/OnlineDownloadPackagePane.java | 8 +++ .../share/ui/online/OnlineWidgetTabPane.java | 11 ++- .../OnlineWidgetPackagesShowPane.java | 15 +++-- 4 files changed, 63 insertions(+), 38 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/OnlineWidgetBlock.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/OnlineWidgetBlock.java index 3eacc5226..61c913201 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/OnlineWidgetBlock.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/OnlineWidgetBlock.java @@ -337,41 +337,42 @@ public class OnlineWidgetBlock extends AbstractOnlineWidgetBlock { null, this ); - return; - } - //如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层 - if (!isRightClickPopupMenuVisible() && (isMouseEnter || downloading)) { - Graphics2D g2d = (Graphics2D) g; - Composite oldComposite = g2d.getComposite(); - //画白色的编辑层 - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 20 / 100.0F)); - g2d.setColor(COVER_COLOR); - g2d.fillRect(x, y, w, h); - g2d.setComposite(oldComposite); - //画编辑按钮图标 - BufferedImage image = (process > 0 || downloading) ? WIDGET_DOWNLOADING_ICON : WIDGET_DOWNLOAD_ICON; - g2d.drawImage( - image, - (x + w / 2 - 12), - (y + h / 2 - 16), - image.getWidth(), - image.getHeight(), - null, - this - ); - Stroke oldStroke = g2d.getStroke(); - g2d.setStroke(XCreatorConstants.STROKE); - g2d.setColor(Color.decode("#419BF9")); - double arcAngle = downloading ? (36 + 360 * 0.9 * process) : 0.0; - g2d.drawArc(x + w / 2 - 12, y + h / 2 - 16, 24, 24, 90, -(int) arcAngle); - g2d.setColor(Color.WHITE); - g2d.setStroke(oldStroke); - } + } else { + //如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层 + if (!isRightClickPopupMenuVisible() && (isMouseEnter || downloading)) { + Graphics2D g2d = (Graphics2D) g; + Composite oldComposite = g2d.getComposite(); + //画白色的编辑层 + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 20 / 100.0F)); + g2d.setColor(COVER_COLOR); + g2d.fillRect(x, y, w, h); + g2d.setComposite(oldComposite); + //画编辑按钮图标 + BufferedImage image = (process > 0 || downloading) ? WIDGET_DOWNLOADING_ICON : WIDGET_DOWNLOAD_ICON; + g2d.drawImage( + image, + (x + w / 2 - 12), + (y + h / 2 - 16), + image.getWidth(), + image.getHeight(), + null, + this + ); + Stroke oldStroke = g2d.getStroke(); + g2d.setStroke(XCreatorConstants.STROKE); + g2d.setColor(Color.decode("#419BF9")); + double arcAngle = downloading ? (36 + 360 * 0.9 * process) : 0.0; + g2d.drawArc(x + w / 2 - 12, y + h / 2 - 16, 24, 24, 90, -(int) arcAngle); + g2d.setColor(Color.WHITE); + g2d.setStroke(oldStroke); + } - boolean isUnusable = !getWidget().isCompatibleWithCurrentEnv(); - if (isUnusable) { - paintUnusableMask((Graphics2D) g); + boolean isUnusable = !getWidget().isCompatibleWithCurrentEnv(); + if (isUnusable) { + paintUnusableMask((Graphics2D) g); + } } + if (this.parentPane != null) { this.parentPane.refreshShowPaneUI(); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java index 987cfface..1d4990c7d 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java @@ -256,4 +256,12 @@ public class OnlineDownloadPackagePane extends OnlineWidgetSelectPane { } } } + + @Override + public void refreshShowPaneUI() { + if (downloadProgressPane != null && downloadProgressPane.isShowing()) { + downloadProgressPane.invalidate(); + downloadProgressPane.repaint(); + } + } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java index cfa5d799f..ca0e8aa6a 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java @@ -16,6 +16,7 @@ import com.fr.form.share.bean.OnlineShareWidget; import javax.swing.BorderFactory; import javax.swing.JButton; +import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.plaf.basic.BasicButtonUI; import java.awt.BorderLayout; @@ -44,6 +45,7 @@ public class OnlineWidgetTabPane extends JPanel { private boolean packagePaneCreated = false; private final List tabChangeListeners; private OnlineEmbedFilterShowPane embedFilterShowPane; + private OnlineWidgetPackagesShowPane widgetPackagesShowPane; public OnlineWidgetTabPane(OnlineShareWidget[] sharableWidgets, OnlineShareWidget[] sharableWidgetPackage) { tabChangeListeners = new ArrayList<>(); @@ -70,7 +72,8 @@ public class OnlineWidgetTabPane extends JPanel { ComponentCollector.getInstance().collectCmpPktClick(); //延迟组件包面板的初始化,防止组件面板里组件和缩略图和组件包面板里组件的缩略图一起加载 if (!packagePaneCreated) { - centerPane.add(new OnlineWidgetPackagesShowPane(sharableWidgetPackages), COMPONENT_PACKAGE); + widgetPackagesShowPane = new OnlineWidgetPackagesShowPane(sharableWidgetPackages); + centerPane.add(widgetPackagesShowPane, COMPONENT_PACKAGE); packagePaneCreated = true; } cardLayout.show(centerPane, COMPONENT_PACKAGE); @@ -89,6 +92,8 @@ public class OnlineWidgetTabPane extends JPanel { this.add(centerPane, BorderLayout.CENTER); } + + private JPanel createMiniShopEntryPane() { JPanel container = FRGUIPaneFactory.createBorderLayout_S_Pane(); container.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); @@ -136,6 +141,10 @@ public class OnlineWidgetTabPane extends JPanel { if (embedFilterShowPane != null) { this.embedFilterShowPane.refreshUI(); } + + if (headGroup.getSelectedIndex() == COMPONENT_PACKAGE_TAB_INDEX && widgetPackagesShowPane != null) { + widgetPackagesShowPane.refreshShowPaneUI(); + } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/widgetpackage/OnlineWidgetPackagesShowPane.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/widgetpackage/OnlineWidgetPackagesShowPane.java index 169759362..d133cd058 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/widgetpackage/OnlineWidgetPackagesShowPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/widgetpackage/OnlineWidgetPackagesShowPane.java @@ -48,6 +48,7 @@ public class OnlineWidgetPackagesShowPane extends AbstractOnlineWidgetShowPane { private JPanel detailPane; private String currentPackageId; private OnlineWidgetSelectPane onlineWidgetSelectPane; + private OnlineDownloadPackagePane onlineDownloadPackagePane; private UILabel downloadLabel; private final Map cachePanelMap = new HashMap<>(); @@ -109,15 +110,15 @@ public class OnlineWidgetPackagesShowPane extends AbstractOnlineWidgetShowPane { private void downLoadPackage() { downloadLabel.setVisible(false); detailPane.removeAll(); - OnlineDownloadPackagePane widgetSelectPane = new OnlineDownloadPackagePane(this, onlineWidgetSelectPane.getSharableWidgetProviders(), 50); - detailPane.add(widgetSelectPane, BorderLayout.CENTER); + onlineDownloadPackagePane = new OnlineDownloadPackagePane(this, onlineWidgetSelectPane.getSharableWidgetProviders(), 50); + detailPane.add(onlineDownloadPackagePane, BorderLayout.CENTER); cardLayout.show(centerPane, WIDGET_DETAIL); - cachePanelMap.put(currentPackageId, widgetSelectPane); + cachePanelMap.put(currentPackageId, onlineDownloadPackagePane); for (OnlineShareWidget onlineShareWidget : getSharableWidgetProviders()) { if (StringUtils.equals(onlineShareWidget.getId(), currentPackageId)) { - widgetSelectPane.downloadWidget(onlineShareWidget); + onlineDownloadPackagePane.downloadWidget(onlineShareWidget); break; } } @@ -193,4 +194,10 @@ public class OnlineWidgetPackagesShowPane extends AbstractOnlineWidgetShowPane { protected FilterPane createFilterPane() { return FilterPane.createOnlinePackageFilterPane(); } + + public void refreshShowPaneUI() { + if (onlineDownloadPackagePane != null && onlineDownloadPackagePane.isShowing()) { + onlineDownloadPackagePane.refreshShowPaneUI(); + } + } } From 173e2ee7e75f3dbb540a48871abbfc48818aebb2 Mon Sep 17 00:00:00 2001 From: vito Date: Thu, 17 Feb 2022 18:23:28 +0800 Subject: [PATCH 29/36] =?UTF-8?q?REPORT-66274=E3=80=90=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E4=BC=98=E5=8C=96=E3=80=91windows=E4=B8=8B?= =?UTF-8?q?=E4=BB=8E=E6=97=A5=E5=BF=97=E5=AE=9A=E4=BD=8D=E4=BC=9A=E5=86=8D?= =?UTF-8?q?=E6=89=93=E5=BC=80=E4=B8=80=E6=AC=A1=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/loghandler/DesignerLogHandler.java | 3 +-- designer-base/src/main/java/com/fr/file/FILEFactory.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/loghandler/DesignerLogHandler.java b/designer-base/src/main/java/com/fr/design/mainframe/loghandler/DesignerLogHandler.java index 88e064fe0..621956ce6 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/loghandler/DesignerLogHandler.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/loghandler/DesignerLogHandler.java @@ -51,7 +51,6 @@ import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayDeque; @@ -259,7 +258,7 @@ public class DesignerLogHandler { return; } TRL trl = new TRL(href); - DesignerContext.getDesignerFrame().openTemplate(FILEFactory.createFILE(ProjectConstants.REPORTLETS_NAME + File.separator + trl.getTemplatePath())); + DesignerContext.getDesignerFrame().openTemplate(FILEFactory.createFILE(ProjectConstants.REPORTLETS_NAME + FILEFactory.SEPARATOR + trl.getTemplatePath())); JTemplate currentEditingTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); if (currentEditingTemplate != null) { currentEditingTemplate.navigate(trl); diff --git a/designer-base/src/main/java/com/fr/file/FILEFactory.java b/designer-base/src/main/java/com/fr/file/FILEFactory.java index 3d48bab34..d55848378 100644 --- a/designer-base/src/main/java/com/fr/file/FILEFactory.java +++ b/designer-base/src/main/java/com/fr/file/FILEFactory.java @@ -1,6 +1,5 @@ package com.fr.file; -import com.fr.base.FRContext; import com.fr.design.file.NodeAuthProcessor; import com.fr.file.filetree.FileNode; import com.fr.workspace.WorkContext; @@ -10,6 +9,7 @@ public class FILEFactory { public static final String FILE_PREFIX = "file://"; public static final String ENV_PREFIX = "env://"; public static final String WEBREPORT_PREFIX = "webreport://"; + public static final String SEPARATOR = "/"; private FILEFactory() { } From 94679a83332eedf6bf71cb8286212ebd51ea3b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 19:55:33 +0800 Subject: [PATCH 30/36] =?UTF-8?q?CHART-22936=20=E5=9B=BE=E8=A1=A8=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=8E=A7=E4=BB=B6=E6=A0=87=E9=A2=98=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/chart/gui/ChangeConfigPane.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java index f053b09d6..a04acb83d 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java @@ -10,6 +10,7 @@ import com.fr.chart.base.AttrChangeConfig; import com.fr.chart.base.AttrChangeType; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.SwitchTitle; import com.fr.design.beans.BasicBeanPane; import com.fr.design.dialog.AttrScrollPane; import com.fr.design.foldablepane.UIExpandablePane; @@ -238,13 +239,14 @@ public class ChangeConfigPane extends BasicBeanPane { private void populateSwitchTitlePane(int chartIndex, ChartCollection collection) { Chart chart = collection.getChart(chartIndex, Chart.class); - Object switchTitle = chart.getSwitchTitle(); + SwitchTitle switchTitle = chart.getSwitchTitle(); + Object content = switchTitle.getContent(); String result = StringUtils.EMPTY; - if (switchTitle != null) { - if (switchTitle instanceof BaseFormula) { - result = ((BaseFormula) switchTitle).getContent(); + if (content != null) { + if (content instanceof BaseFormula) { + result = ((BaseFormula) content).getContent(); } else { - result = Utils.objectToString(switchTitle); + result = Utils.objectToString(content); } } TinyFormulaPane title = new TinyFormulaPane(); @@ -345,7 +347,7 @@ public class ChangeConfigPane extends BasicBeanPane { } else { titleObj = titleString; } - collection.getChart(i, Chart.class).setSwitchTitle(titleObj); + collection.getChart(i, Chart.class).setSwitchTitle(new SwitchTitle(titleObj)); } } From 40192acd81c796cdf979584b6d96ad1cc5bb781a Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 18 Feb 2022 10:46:45 +0800 Subject: [PATCH 31/36] =?UTF-8?q?REPORT-66966=20FR11=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8-=E6=94=BE=E5=9C=A8=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E5=8D=A0=E4=BD=8D=E5=9D=97=E9=87=8C=E7=9A=84?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=9D=97=E7=BB=84=E4=BB=B6=EF=BC=8C=E6=8B=96?= =?UTF-8?q?=E6=8B=BD=E8=B0=83=E6=95=B4=E5=B0=BA=E5=AF=B8=EF=BC=8C=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=A8=A1=E6=9D=BF=E5=86=8D=E6=89=93=E5=BC=80=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=EF=BC=8C=E5=86=8D=E6=8B=96=E6=8B=BD=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=9D=97=E7=BB=84=E4=BB=B6=E5=B0=BA=E5=AF=B8?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E5=87=BA=E7=8E=B0=E5=92=8C=E7=A9=BA=E7=99=BD?= =?UTF-8?q?=E5=9D=97=E9=87=8D=E5=8F=A0=E9=94=99=E4=B9=B1=E7=9A=84=E7=8E=B0?= =?UTF-8?q?=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/fit/NewJForm.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/fit/NewJForm.java b/designer-form/src/main/java/com/fr/design/fit/NewJForm.java index 60bd8d542..660a5c483 100644 --- a/designer-form/src/main/java/com/fr/design/fit/NewJForm.java +++ b/designer-form/src/main/java/com/fr/design/fit/NewJForm.java @@ -179,11 +179,13 @@ public class NewJForm extends JForm { FRFitLayoutAdapter layoutAdapter = (FRFitLayoutAdapter) adapter; layoutAdapter.setEdit(true); layoutAdapter.calculateBounds(backupBounds, xwTitleLayout.getBounds(), xwTitleLayout, row, difference); + } else { + XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xwTitleLayout); + if (parent != null && parent.toData() != null) { + parent.toData().setBounds(xwTitleLayout.toData(), xwTitleLayout.getBounds()); + } } - XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xwTitleLayout); - if (parent != null && parent.toData() != null) { - parent.toData().setBounds(xwTitleLayout.toData(), xwTitleLayout.getBounds()); - } + } From f2c131a71e7b19948e36176355f3b87492cef32d Mon Sep 17 00:00:00 2001 From: vito Date: Fri, 18 Feb 2022 11:12:03 +0800 Subject: [PATCH 32/36] =?UTF-8?q?REPORT-66767=20=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E8=BF=87=E7=A8=8B=E6=95=B0=E6=8D=AE=E9=9B=86=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E7=AA=97=E5=8F=A3=E6=B2=A1=E6=9C=89=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wrapper/StoreProcedureDataWrapper.java | 109 +++++++++--------- 1 file changed, 53 insertions(+), 56 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureDataWrapper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureDataWrapper.java index 08274fd71..515bd8dd0 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureDataWrapper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureDataWrapper.java @@ -63,26 +63,27 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { public StoreProcedureDataWrapper(Component component, StoreProcedure storeProcedure, String storeprocedureName, String dsName) { this(component, storeProcedure, storeprocedureName, dsName, true); } - + /** - * @param: component loadingBar的父弹框(如果不设置父弹框的话,可能出现loadingBar隐藏在一个弹框后的情况) - * @param: storeProcedure 存储过程 - * @param: storeprocedureName 存储过程的名字(某些情况下可以为空) - * @param: dsName 存储过程一个返回数据集的名字 - * @param: needLoad 是否要加载 + * @param component loadingBar的父弹框(如果不设置父弹框的话,可能出现loadingBar隐藏在一个弹框后的情况) + * @param storeProcedure 存储过程 + * @param storeprocedureName 存储过程的名字(某些情况下可以为空) + * @param dsName 存储过程一个返回数据集的名字 + * @param needLoad 是否要加载 **/ public StoreProcedureDataWrapper(Component component, StoreProcedure storeProcedure, String storeprocedureName, String dsName, boolean needLoad) { this.dsName = dsName; this.storeProcedure = storeProcedure; this.storeProcedure.setCalculating(false); this.storeprocedureName = storeprocedureName; - if (needLoad) { - setWorker(); - } if (component == null) { component = new JFrame(); } + if (needLoad) { + setWorker(component); + } loadingBar = new AutoProgressBar(component, Toolkit.i18nText("Fine-Design_Basic_Loading_Data"), "", 0, 100) { + @Override public void doMonitorCanceled() { getWorker().cancel(true); } @@ -93,16 +94,17 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { * 数据集执行结果返回的所有字段 * * @return 数据集执行结果返回的所有字段 - * - * - * @date 2014-12-3-下午7:43:17 - * - */ + * @date 2014-12-3-下午7:43:17 + */ + @Override public List calculateColumnNameList() { if (columnNameList != null) { return columnNameList; } - if (!createStore(false)) { + + try { + createStore(false); + } catch (Exception e) { FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), Toolkit.i18nText("Fine-Design_Basic_Engine_No_TableData")); return new ArrayList(); } @@ -114,11 +116,9 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { * 生成子节点 * * @return 节点数组 - * - * - * @date 2014-12-3-下午7:06:47 - * - */ + * @date 2014-12-3-下午7:06:47 + */ + @Override public ExpandMutableTreeNode[] load() { List namelist; if (storeProcedure.isCalculating()) { @@ -134,23 +134,16 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { return res; } - private boolean createStore(boolean needLoadingBar) { - try { - dataModels = DesignTableDataManager.createLazyDataModel(storeProcedure, needLoadingBar); - if (dataModels == null || dataModels.length == 0) { - return false; - } - for (int i = 0; i < dataModels.length; i++) { - if (ComparatorUtils.equals(this.dsName, storeprocedureName + "_" + dataModels[i].getName())) { - procedureDataModel = dataModels[i]; + private void createStore(boolean needLoadingBar) throws Exception { + dataModels = DesignTableDataManager.createLazyDataModel(storeProcedure, needLoadingBar); + if (dataModels != null && dataModels.length != 0) { + for (ProcedureDataModel dataModel : dataModels) { + if (ComparatorUtils.equals(this.dsName, storeprocedureName + "_" + dataModel.getName())) { + procedureDataModel = dataModel; break; } } - return true; - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); } - return false; } @Override @@ -159,17 +152,15 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { } /** - * 预览数据 - * - * @param previewModel 预览模式, 全部还是一个 - * - * - * @date 2014-12-3-下午7:05:50 - * - */ + * 预览数据 + * + * @param previewModel 预览模式, 全部还是一个 + * @date 2014-12-3-下午7:05:50 + */ public void previewData(final int previewModel) { this.previewModel = previewModel; connectionBar = new AutoProgressBar(new JFrame(), Toolkit.i18nText("Fine-Design_Basic_Utils_Now_Create_Connection"), "", 0, 100) { + @Override public void doMonitorCanceled() { connectionBar.close(); worker.cancel(true); @@ -178,8 +169,9 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { worker.execute(); } - private void setWorker() { + private void setWorker(final Component parent) { worker = new SwingWorker() { + @Override protected Void doInBackground() throws Exception { loadingBar.close(); PreviewTablePane.resetPreviewTable(); @@ -195,6 +187,7 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { return null; } + @Override public void done() { try { get(); @@ -206,13 +199,15 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { case StoreProcedureDataWrapper.PREVIEW_ONE: previewData(); break; + default: + break; } } catch (Exception e) { + loadingBar.close(); if (!(e instanceof CancellationException)) { FineLoggerFactory.getLogger().error(e.getMessage(), e); - FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), e.getMessage()); + FineJOptionPane.showMessageDialog(parent, e.getMessage()); } - loadingBar.close(); } } }; @@ -227,10 +222,9 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { /** * 预览返回的一个数据集 * - * - * @date 2014-12-3-下午7:42:53 - * - */ + * @date 2014-12-3-下午7:42:53 + */ + @Override public void previewData() { previewData(-1, -1); } @@ -240,13 +234,11 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { /** * 预览返回的一个数据集,带有显示值和实际值的标记结果 * - * @param keyIndex 实际值 - * @param valueIndex 显示值 - * - * - * @date 2014-12-3-下午7:42:27 - * - */ + * @param keyIndex 实际值 + * @param valueIndex 显示值 + * @date 2014-12-3-下午7:42:27 + */ + @Override public void previewData(final int keyIndex, final int valueIndex) { PreviewTablePane.previewStoreData(procedureDataModel, keyIndex, valueIndex); } @@ -257,7 +249,9 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { */ public void previewAllTable() { if (procedureDataModel == null) { - if (!createStore(true)) { + try { + createStore(true); + } catch (Exception e) { return; } } @@ -269,6 +263,7 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { return dsName; } + @Override public TableData getTableData() { return storeProcedure; } @@ -282,10 +277,12 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { * * @return 是否异常 */ + @Override public boolean isUnusual() { return false; } + @Override public boolean equals(Object obj) { return obj instanceof StoreProcedureDataWrapper && ComparatorUtils.equals(this.dsName, ((StoreProcedureDataWrapper) obj).getTableDataName()) From 6dbe6fa6ab99f93e9d109a6eba34944b9c4c82bd Mon Sep 17 00:00:00 2001 From: pengda Date: Mon, 21 Feb 2022 15:40:47 +0800 Subject: [PATCH 33/36] =?UTF-8?q?REPORT-58833=20js=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=99=A8=E5=9F=8B=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../javascript/JSContentWithDescriptionPane.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/javascript/JSContentWithDescriptionPane.java b/designer-base/src/main/java/com/fr/design/javascript/JSContentWithDescriptionPane.java index 469598a3f..8e8ef45b9 100644 --- a/designer-base/src/main/java/com/fr/design/javascript/JSContentWithDescriptionPane.java +++ b/designer-base/src/main/java/com/fr/design/javascript/JSContentWithDescriptionPane.java @@ -441,19 +441,21 @@ public class JSContentWithDescriptionPane extends JSContentPane implements KeyLi Object value = helpDOCList.getSelectedValue(); if (value instanceof HelpDocument) { String url = ((HelpDocument) value).getDocumentUrl(); - try { - Desktop.getDesktop().browse(new URI(url)); - } catch (IOException ex) { - FineLoggerFactory.getLogger().error(ex.getMessage(), ex); - } catch (URISyntaxException ex) { - FineLoggerFactory.getLogger().error(ex.getMessage(), ex); - } + browse(url); } } } }); } + private void browse(String url){ + try { + Desktop.getDesktop().browse(new URI(url)); + } catch (IOException | URISyntaxException ex) { + FineLoggerFactory.getLogger().error(ex.getMessage(), ex); + } + } + private void initHelpDOCListRender() { helpDOCList.setCellRenderer(new DefaultListCellRenderer() { @Override From 1f7420988ad4b8ba0359b647d1e48c666b780c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Mon, 21 Feb 2022 16:29:27 +0800 Subject: [PATCH 34/36] =?UTF-8?q?REPORT-66947=20=E6=8B=96=E6=8B=BD?= =?UTF-8?q?=E6=8B=96=E5=87=BA=E5=8F=AF=E6=8B=96=E6=8B=BD=E5=8C=BA=E5=9F=9F?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E6=B2=A1=E6=9C=89=E5=8F=8A?= =?UTF-8?q?=E6=97=B6=E6=B8=85=E7=90=86=E5=86=85=E5=AD=98=E9=87=8C=E6=AE=8B?= =?UTF-8?q?=E7=95=99=E7=9A=84=E4=B8=8A=E6=AC=A1dropTarget=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=EF=BC=8C=E9=9C=80=E8=A6=81=E6=B8=85=E7=90=86=E4=B8=80?= =?UTF-8?q?=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/mainframe/FormCreatorDropTarget.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java b/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java index 62e256379..1c873417a 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java @@ -87,6 +87,7 @@ public class FormCreatorDropTarget extends DropTarget { cancelPromptWidgetForbidEnter(); // 隐藏组件图标 designer.resetDraggingPosition(); + designer.clearDropTarget(); designer.setPainter(null); designer.repaint(); } From eb9039dd3bccf8ddb70af702849d4f80dbb9cbb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Mon, 21 Feb 2022 16:50:34 +0800 Subject: [PATCH 35/36] REPORT-66947 --- .../java/com/fr/design/mainframe/FormCreatorDropTarget.java | 1 - .../src/main/java/com/fr/design/mainframe/FormDesigner.java | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java b/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java index 1c873417a..62e256379 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java @@ -87,7 +87,6 @@ public class FormCreatorDropTarget extends DropTarget { cancelPromptWidgetForbidEnter(); // 隐藏组件图标 designer.resetDraggingPosition(); - designer.clearDropTarget(); designer.setPainter(null); designer.repaint(); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index 2b43265f9..7837f8b00 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -1248,7 +1248,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection * @param currentDragEvent */ public void startDraggingNewWidget(XCreator xCreator, MouseEvent startDragEvent, MouseEvent currentDragEvent) { - if (currentDragEvent == null || this.getDropTarget() != null) { + if (currentDragEvent == null) { return; } @@ -1270,7 +1270,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection * @param currentDragEvent */ public void startDraggingFormWidget(XCreator xCreator, MouseEvent startDragEvent, MouseEvent currentDragEvent) { - if (currentDragEvent == null || this.getDropTarget() != null) { + if (currentDragEvent == null) { return; } backUpCreator(xCreator); From 6ddf7a3e6115907e1423b042fcd8b8da67b3aca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Mon, 21 Feb 2022 17:38:28 +0800 Subject: [PATCH 36/36] REPORT-66939 --- .../main/java/com/fr/design/mainframe/FormDesigner.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index 7837f8b00..24ed004ff 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -1318,7 +1318,14 @@ public class FormDesigner extends TargetComponent implements TreeSelection DraggingModel model = this.draggingModel; MouseEvent dragEvent = model.getCurrentDragEvent(); XCreator hotspot = this.getComponentAt(dragEvent.getX(), dragEvent.getY()); - return XCreatorUtils.getHotspotContainer(hotspot); + XLayoutContainer container = XCreatorUtils.getHotspotContainer(hotspot); + XLayoutContainer topLayout = container.getTopLayout(); + // REPORT-66939 Tab比较特殊,它是又多个LayoutContainer组成,直接返回container会导致误判,需要先找到最上层topLayout,取其父layout才是正确结果 + if (topLayout != null && container != topLayout) { + return (XLayoutContainer) topLayout.getParent(); + } else { + return container; + } } /**