From f807064850eb4bc1d7960d7e0edd2513a4674b93 Mon Sep 17 00:00:00 2001 From: Starryi Date: Tue, 12 Apr 2022 10:42:56 +0800 Subject: [PATCH 01/11] =?UTF-8?q?REPORT-69575=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=9C=A8=E7=BA=BF=E7=BB=84=E4=BB=B6=E5=88=B7=E4=B8=8D?= =?UTF-8?q?=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 oss服务器上缺少部分组件的封面图且读取文件时因为异常类型不匹配, 导致没有捕获到对应的异常,进而影响到组件面板的初始化,最终导致 子进程运行失败,没有切出加载界面。 【改动思路】 1. 组件面板延迟加载,不要影响组件包面板,以及整个在线组件库面板的展示 2. 使用Exception捕获封面图的读取异常 【review建议】 --- .../share/ui/block/AbstractOnlineWidgetBlock.java | 7 ++++--- .../mainframe/share/ui/online/OnlineWidgetTabPane.java | 9 +++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/AbstractOnlineWidgetBlock.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/AbstractOnlineWidgetBlock.java index 5c1620ab4..e4a978d52 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/AbstractOnlineWidgetBlock.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/AbstractOnlineWidgetBlock.java @@ -23,7 +23,6 @@ import javax.swing.JPopupMenu; import java.awt.Dimension; import java.awt.Image; import java.awt.event.MouseEvent; -import java.io.IOException; import java.net.URL; /** @@ -75,7 +74,8 @@ public abstract class AbstractOnlineWidgetBlock extends PreviewWidgetBlock tabChangeListeners; private OnlineEmbedFilterShowPane embedFilterShowPane; private OnlineWidgetPackagesShowPane widgetPackagesShowPane; @@ -57,8 +58,6 @@ public class OnlineWidgetTabPane extends JPanel { this.cardLayout = new CardLayout(); this.centerPane = new JPanel(cardLayout); - this.centerPane.add(new OnlineWidgetShowPane(sharableWidgets), COMPONENT); - this.centerPane.add( embedFilterShowPane = new OnlineEmbedFilterShowPane(new OnlineWidgetShowPane(sharableWidgets, OnlineWidgetSortType.SALES)), COMPONENT_EMBED); //延迟组件包面板的初始化,防止组件面板里组件的缩略图和组件包面板里组件的缩略图一起加载 this.headGroup = new UITabGroup(new String[]{COMPONENT_PACKAGE, COMPONENT}) { public void tabChanged(int newSelectedIndex) { @@ -66,6 +65,12 @@ public class OnlineWidgetTabPane extends JPanel { changeListener.tabChange(newSelectedIndex); } if (newSelectedIndex == COMPONENT_TAB_INDEX) { + //延迟组件包面板的初始化,防止组件面板里组件和缩略图和组件包面板里组件的缩略图一起加载 + if (!componentPaneCreated) { + centerPane.add(new OnlineWidgetShowPane(sharableWidgets), COMPONENT); + centerPane.add( embedFilterShowPane = new OnlineEmbedFilterShowPane(new OnlineWidgetShowPane(sharableWidgets, OnlineWidgetSortType.SALES)), COMPONENT_EMBED); + componentPaneCreated = true; + } cardLayout.show(centerPane, ComponentShareUtil.needShowEmbedFilterPane() ? COMPONENT_EMBED : COMPONENT); } else { ComponentShareUtil.completeEmbedFilter(); From da959c9243e0f68cc9fc387360b5373f821f7682 Mon Sep 17 00:00:00 2001 From: shine Date: Wed, 13 Apr 2022 10:51:14 +0800 Subject: [PATCH 02/11] =?UTF-8?q?REPORT-68357=20fix:namestyle=E5=AF=BC?= =?UTF-8?q?=E8=87=B4fvs.cpt=E4=B8=AD=E5=8D=95=E5=85=83=E6=A0=BC=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E4=B8=AD=E6=9C=89=E4=B8=BB=E9=A2=98=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../theme/utils/DefaultThemedTemplateCellElementCase.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/utils/DefaultThemedTemplateCellElementCase.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/utils/DefaultThemedTemplateCellElementCase.java index 67be5cc9a..64aaeb9c0 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/utils/DefaultThemedTemplateCellElementCase.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/utils/DefaultThemedTemplateCellElementCase.java @@ -3,6 +3,7 @@ package com.fr.design.mainframe.theme.utils; import com.fr.base.NameStyle; import com.fr.base.theme.TemplateTheme; import com.fr.base.theme.settings.ThemedCellStyle; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.mainframe.JTemplate; import com.fr.report.cell.DefaultTemplateCellElement; @@ -37,7 +38,7 @@ public class DefaultThemedTemplateCellElementCase { ThemedCellStyle themedCellStyle = theme.getCellStyleList().getUse4Default(); if (themedCellStyle != null) { NameStyle nameStyle = NameStyle.getPassiveInstance(themedCellStyle.getName(), themedCellStyle.getStyle()); - cellElement.setStyle(nameStyle); + cellElement.setStyle(DesignModeContext.isDuchampMode() ? nameStyle.getRealStyle() : nameStyle); } } return cellElement; From 56cea2aafbecf109c52371a73a0a72eca04770bc Mon Sep 17 00:00:00 2001 From: shine Date: Wed, 13 Apr 2022 14:43:51 +0800 Subject: [PATCH 03/11] =?UTF-8?q?REPORT-68638=20design=20fix:=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E9=85=8D=E8=89=B2=E7=9A=84=E6=97=B6=E5=80=99=E6=B8=B2?= =?UTF-8?q?=E6=9F=93=E5=92=8C=E9=85=8D=E7=BD=AE=E7=95=8C=E9=9D=A2=E9=85=8D?= =?UTF-8?q?=E8=89=B2=E4=B8=8D=E4=B8=80=E8=87=B4=EF=BC=8C=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E6=88=90=E9=85=8D=E7=BD=AE=E7=95=8C=E9=9D=A2=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/style/color/ColorAdjustPane.java | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java b/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java index ad99b9083..f5ff739fa 100644 --- a/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java +++ b/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java @@ -1,6 +1,7 @@ package com.fr.design.style.color; import com.fr.base.BaseUtils; +import com.fr.chart.base.ChartConstants; import com.fr.design.DesignerEnvManager; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; @@ -12,8 +13,6 @@ import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.util.ArrayList; -import java.util.List; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; @@ -23,6 +22,8 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.List; /** * 配色方案选择组合色之后,可以调整颜色的组件 @@ -33,18 +34,7 @@ import java.awt.image.BufferedImage; */ public class ColorAdjustPane extends JPanel implements UIObserver { - public static final Color[] DEFAULT_COLORS = { - new Color(99, 178, 238), - new Color(118, 218, 145), - new Color(248, 203, 127), - new Color(248, 149, 136), - new Color(124, 214, 207), - new Color(145, 146, 171), - new Color(120, 152, 225), - new Color(239, 166, 102), - new Color(237, 221, 134), - new Color(153, 135, 206), - }; + public static final Color[] DEFAULT_COLORS = ChartConstants.NEW_FEATURES; private static final int COUNT_OF_ROW = 8; From d51c4665337eab2df6cd32386352e8a91741f857 Mon Sep 17 00:00:00 2001 From: Starryi Date: Thu, 14 Apr 2022 18:12:00 +0800 Subject: [PATCH 04/11] =?UTF-8?q?REPORT-69776=20=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E7=BB=84=E4=BB=B6=E7=9A=84=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E5=8A=A0=E8=BD=BD=E5=BE=88=E4=B9=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 使用了固定容量阻塞列表,导致资源加载阻塞 【改动思路】 使用LinkedBlockingQueue 【review建议】 --- .../ui/online/resource/OnlineResourceManager.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/resource/OnlineResourceManager.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/resource/OnlineResourceManager.java index b29ea11db..ecdea13fe 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/resource/OnlineResourceManager.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/resource/OnlineResourceManager.java @@ -1,8 +1,8 @@ package com.fr.design.mainframe.share.ui.online.resource; import javax.swing.SwingWorker; -import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; import java.util.function.Predicate; /** @@ -24,7 +24,7 @@ public class OnlineResourceManager { private SwingWorker swingWorker; - private final BlockingQueue loaderBlockingQueue = new ArrayBlockingQueue(100); + private final BlockingQueue loaderBlockingQueue = new LinkedBlockingQueue<>(); public void cancelLoad(Object key) { if (swingWorker != null) { @@ -39,11 +39,7 @@ public class OnlineResourceManager { } public void addLoader(ResourceLoader loader) { - try { - this.loaderBlockingQueue.put(loader); - } catch (InterruptedException e) { - e.printStackTrace(); - } + this.loaderBlockingQueue.add(loader); } public void loadImage() { From 833c4b58725725af873ff7252ae249a93507e599 Mon Sep 17 00:00:00 2001 From: shine Date: Fri, 15 Apr 2022 15:20:53 +0800 Subject: [PATCH 05/11] =?UTF-8?q?REPORT-68638=20fix:=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=89=80=E6=9C=89=E5=9B=BE=E8=A1=A8=E9=85=8D=E8=89=B2=20?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=AF=BBfvs.cpt.chart=E4=BC=9A=E8=A2=AB?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E6=88=90=E8=B7=9F=E9=9A=8F=E4=B8=BB=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../van/chart/config/DefaultStyleHelper4Van.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/config/DefaultStyleHelper4Van.java b/designer-chart/src/main/java/com/fr/van/chart/config/DefaultStyleHelper4Van.java index a6ce45a53..356fbe854 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/config/DefaultStyleHelper4Van.java +++ b/designer-chart/src/main/java/com/fr/van/chart/config/DefaultStyleHelper4Van.java @@ -27,6 +27,7 @@ import com.fr.plugin.chart.type.GaugeStyle; import com.fr.plugin.chart.vanchart.VanChart; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -166,8 +167,8 @@ public class DefaultStyleHelper4Van { private static void dealChartColor(VanChartPlot vanChartPlot) { ChartPreStyleConfig manager = ChartPreStyleConfig.getInstance(); Object preStyle = manager.getPreStyle(DefaultStyleConstants.COLORS); + ColorFillStyle colorFillStyle = new ColorFillStyle(); if (preStyle instanceof ChartColorMatching) { - ColorFillStyle colorFillStyle = new ColorFillStyle(); //default是默认的意思,为服务器默认配色方案 //acc为多个颜色组合 //gradient为渐变颜色 @@ -181,7 +182,20 @@ public class DefaultStyleHelper4Van { vanChartPlot.setPlotFillStyle(plotFillStyle); } plotFillStyle.setColorFillStyle(colorFillStyle); + } else { + //服务器上没有图表配色 + //需要指定配色属性为自定义组合色,否则会被兼容成跟随主题 + // com.fr.plugin.chart.attr.plot.VanChartPlot.compatibleFillStyle + colorFillStyle.setColorStyle(ChartConstants.COLOR_ACC); + colorFillStyle.setColorList(Arrays.asList(ChartConstants.NEW_FEATURES)); + } + + AttrFillStyle plotFillStyle = vanChartPlot.getPlotFillStyle(); + if (plotFillStyle == null) { + plotFillStyle = new AttrFillStyle(); + vanChartPlot.setPlotFillStyle(plotFillStyle); } + plotFillStyle.setColorFillStyle(colorFillStyle); } private static void dealBorder(VanChartPlot vanChartPlot) { From 4a7146db1fdc5411b1aceb8f682875df408ba232 Mon Sep 17 00:00:00 2001 From: shine Date: Fri, 15 Apr 2022 15:23:38 +0800 Subject: [PATCH 06/11] update --- .../com/fr/van/chart/config/DefaultStyleHelper4Van.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/van/chart/config/DefaultStyleHelper4Van.java b/designer-chart/src/main/java/com/fr/van/chart/config/DefaultStyleHelper4Van.java index 356fbe854..b3bfca329 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/config/DefaultStyleHelper4Van.java +++ b/designer-chart/src/main/java/com/fr/van/chart/config/DefaultStyleHelper4Van.java @@ -175,13 +175,6 @@ public class DefaultStyleHelper4Van { colorFillStyle.setColorStyle(ChartConstants.COLOR_ACC); colorFillStyle.setFillStyleName(DefaultStyleConstants.COLORS); colorFillStyle.setColorList(((ChartColorMatching) preStyle).getColorList()); - - AttrFillStyle plotFillStyle = vanChartPlot.getPlotFillStyle(); - if (plotFillStyle == null) { - plotFillStyle = new AttrFillStyle(); - vanChartPlot.setPlotFillStyle(plotFillStyle); - } - plotFillStyle.setColorFillStyle(colorFillStyle); } else { //服务器上没有图表配色 //需要指定配色属性为自定义组合色,否则会被兼容成跟随主题 From 2534fffebd90bef2533416b2aaece153fd2355af Mon Sep 17 00:00:00 2001 From: Starryi Date: Fri, 15 Apr 2022 17:01:03 +0800 Subject: [PATCH 07/11] =?UTF-8?q?REPORT-69842=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=BE=B9=E6=A1=86=E9=A2=9C=E8=89=B2=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E8=83=8C=E6=99=AF=E9=A2=9C=E8=89=B2=E4=BC=9A=E5=8F=98=E7=BB=9F?= =?UTF-8?q?=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 错误的逻辑是 使用单元格样式面板的updateBean方法,获取单元格样式面板的所有配置,并将其设置 到指定单元格上。这个逻辑会导致在选中多个单元格时,用户没有修改的样式配置项也 被覆盖掉.(单元格样式面板的配置项并不可靠,在某些情况下比如单元格多选时,不能 反应实际的单元格样式) 正确的逻辑 用户在编辑自定义单元格样式时,仅修改发生了更改的配置,其余保持不变,也就是将原 有的单元格样式配置,与用户修改的部分配置进行merge,得到新的样式,并设置到指定 单元格上。 注意:这里的样式配置更改存在的情况有三种: 1. 单于昂样式跟随主题切换到自定义样式。样式细节未发生变动,但不再跟随主题了,代码逻辑中对应 switchCellStylesToCustom,样式对象类型从NameStyle变为Style 2. 在跟随主题样式面板,切换主题单元格样式。全量更新,放弃单元格所有原来样式,因此需要使用updateBean. 3. 在自定义样式面板,修改部分配置项。增量更新,保持其他配置项不变,因此需要使用mergeBean. 【改动思路】 同上 【review建议】 --- .../design/mainframe/cell/settingpane/CellStylePane.java | 2 +- .../mainframe/cell/settingpane/style/StylePane.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellStylePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellStylePane.java index 3bdd034c6..8e57415a7 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellStylePane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellStylePane.java @@ -118,7 +118,7 @@ public class CellStylePane extends AbstractCellAttrPane { elementCase.addCellElement(cellElement); } Format format = cellElement.getStyle().getFormat(); - Style style = stylePane.updateBean(); + Style style = stylePane.mergeBean(cellElement.getStyle()); // 格式不能通过样式面板中的配置项修改,因此需要保留 style = style.deriveFormat(format); cellElement.setStyle(style); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/StylePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/StylePane.java index 7f382ed44..9c9523e13 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/StylePane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/StylePane.java @@ -251,6 +251,14 @@ public class StylePane extends BasicPane implements UIObserver { followingThemePane.setVisible(AdjustWorkBookDefaultStyleUtils.supportTheme()); } + public Style mergeBean(Style style) { + if (isFollowingTheme()) { + return updateBean(); + } else { + return customStylePane.updateStyle(style); + } + } + private void fireStateChanged() { for (UIObserverListener listener: observerListeners) { listener.doChange(); From 7bd8d5b6137cf270eb32c3bc99cb6a30f67c8c43 Mon Sep 17 00:00:00 2001 From: lucian Date: Mon, 18 Apr 2022 11:44:39 +0800 Subject: [PATCH 08/11] =?UTF-8?q?REPORT-68949=20=E6=8E=A7=E4=BB=B6-?= =?UTF-8?q?=E9=A2=84=E5=AE=9A=E4=B9=89=E6=8E=A7=E4=BB=B6-=E9=A2=84?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=8E=A7=E4=BB=B6=E6=96=B0=E5=BB=BA=E5=90=8E?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E5=88=97=E8=A1=A8=E4=B8=AD=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/widget/WidgetPane.java | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java b/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java index d746c4066..6bbc84ad3 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java @@ -22,6 +22,8 @@ import com.fr.general.ComparatorUtils; import com.fr.stable.ArrayUtils; import javax.swing.*; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; @@ -198,6 +200,7 @@ public class WidgetPane extends AbstractAttrNoScrollPane implements ItemListener } }); this.setPreferredSize(new Dimension(100, 20)); + this.initPopupMenuListener(userDefined); } public void setSelectedItemByWidgetClass(Class clazz) { @@ -218,7 +221,7 @@ public class WidgetPane extends AbstractAttrNoScrollPane implements ItemListener super.setSelectedItem(anObject); } - private Vector getWidgetsName(boolean userDefined) { + private Vector getWidgetsName(boolean userDefined) { WidgetOption[] reportWidgetInstance = getWidgetOptions(); Vector items = new Vector(); @@ -262,7 +265,30 @@ public class WidgetPane extends AbstractAttrNoScrollPane implements ItemListener } private WidgetOption[] getWidgetOptions() { - return (WidgetOption[]) ArrayUtils.addAll(WidgetOption.getReportWidgetInstance(), ExtraDesignClassManager.getInstance().getCellWidgetOptions()); + return ArrayUtils.addAll(WidgetOption.getReportWidgetInstance(), ExtraDesignClassManager.getInstance().getCellWidgetOptions()); + } + + private void initPopupMenuListener(boolean userDefined) { + this.addPopupMenuListener(new PopupMenuListener() { + + @Override + public void popupMenuWillBecomeVisible(PopupMenuEvent e) { + // 下拉刷新下列表 + Object selectedItem = getSelectedItem(); + setModel(new DefaultComboBoxModel(getWidgetsName(userDefined))); + setSelectedItem(selectedItem); + } + + @Override + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { + + } + + @Override + public void popupMenuCanceled(PopupMenuEvent e) { + + } + }); } } From cf19dcee7aa4313d30847a05ccb40720f398ea20 Mon Sep 17 00:00:00 2001 From: lucian Date: Mon, 18 Apr 2022 13:39:38 +0800 Subject: [PATCH 09/11] =?UTF-8?q?REPORT-68949=20=E6=8E=A7=E4=BB=B6-?= =?UTF-8?q?=E9=A2=84=E5=AE=9A=E4=B9=89=E6=8E=A7=E4=BB=B6-=E9=A2=84?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=8E=A7=E4=BB=B6=E6=96=B0=E5=BB=BA=E5=90=8E?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E5=88=97=E8=A1=A8=E4=B8=AD=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/widget/WidgetPane.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java b/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java index 6bbc84ad3..1777237f9 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java @@ -20,6 +20,7 @@ import com.fr.form.ui.*; import com.fr.general.ComparatorUtils; import com.fr.stable.ArrayUtils; +import com.fr.stable.AssistUtils; import javax.swing.*; import javax.swing.event.PopupMenuEvent; @@ -274,9 +275,12 @@ public class WidgetPane extends AbstractAttrNoScrollPane implements ItemListener @Override public void popupMenuWillBecomeVisible(PopupMenuEvent e) { // 下拉刷新下列表 - Object selectedItem = getSelectedItem(); - setModel(new DefaultComboBoxModel(getWidgetsName(userDefined))); - setSelectedItem(selectedItem); + Vector widgetsName = getWidgetsName(userDefined); + if (modelChanged(widgetsName)) { + Object selectedItem = getSelectedItem(); + setModel(new DefaultComboBoxModel<>(widgetsName)); + setSelectedItem(selectedItem); + } } @Override @@ -290,6 +294,20 @@ public class WidgetPane extends AbstractAttrNoScrollPane implements ItemListener } }); } + + private boolean modelChanged(Vector widgetsName) { + DefaultComboBoxModel model = (DefaultComboBoxModel) getModel(); + int modelSize = model.getSize(); + if (modelSize != widgetsName.size()) { + return true; + } + for (int i = 0; i < modelSize; i++) { + if (!AssistUtils.equals(model.getElementAt(i), widgetsName.elementAt(i))) { + return true; + } + } + return false; + } } /** From 7baae38c8582d1953805bb3a97e733ff86a28eb4 Mon Sep 17 00:00:00 2001 From: lucian Date: Mon, 18 Apr 2022 13:47:06 +0800 Subject: [PATCH 10/11] =?UTF-8?q?REPORT-68949=20=E6=8E=A7=E4=BB=B6-?= =?UTF-8?q?=E9=A2=84=E5=AE=9A=E4=B9=89=E6=8E=A7=E4=BB=B6-=E9=A2=84?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=8E=A7=E4=BB=B6=E6=96=B0=E5=BB=BA=E5=90=8E?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6=E5=88=97=E8=A1=A8=E4=B8=AD=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=88=B7=E6=96=B0=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/widget/WidgetPane.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java b/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java index 1777237f9..3a50c3870 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/WidgetPane.java @@ -277,9 +277,7 @@ public class WidgetPane extends AbstractAttrNoScrollPane implements ItemListener // 下拉刷新下列表 Vector widgetsName = getWidgetsName(userDefined); if (modelChanged(widgetsName)) { - Object selectedItem = getSelectedItem(); - setModel(new DefaultComboBoxModel<>(widgetsName)); - setSelectedItem(selectedItem); + refreshBoxItems(widgetsName); } } From c1d1e59336bc7a598e735c35d89995193b97f47d Mon Sep 17 00:00:00 2001 From: "Link.Zhao" Date: Wed, 27 Apr 2022 14:44:37 +0800 Subject: [PATCH 11/11] =?UTF-8?q?REPORT-69962=20=E8=B6=85=E9=93=BE?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=BC=98=E5=8C=96=E5=A4=9A=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E7=BB=84=E5=90=88=E8=AE=BE=E7=BD=AE=E6=95=88=E6=9E=9C?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=201=E3=80=81=E4=BF=AE=E6=94=B9=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=96=B9=E5=BC=8F=EF=BC=8C=E5=88=A4=E6=96=AD=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E6=9C=89=E6=97=A0=E8=B6=85=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/HyperlinkGroupPaneActionImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/HyperlinkGroupPaneActionImpl.java b/designer-realize/src/main/java/com/fr/design/mainframe/HyperlinkGroupPaneActionImpl.java index 6de49767a..b3bbaf1df 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/HyperlinkGroupPaneActionImpl.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/HyperlinkGroupPaneActionImpl.java @@ -89,7 +89,7 @@ public class HyperlinkGroupPaneActionImpl implements HyperlinkGroupPaneActionPro } // 首次添加超链接,将文字样式默认改为蓝色下划线 - if (updateNameHyperlinks.size() == 1 && hyperlinkGroupPane.getCurrentEvent() != null && hyperlinkGroupPane.getCurrentEvent().getType() == ListDataEvent.INTERVAL_ADDED) { + if (editCellElement.getNameHyperlinkGroup() == null && hyperlinkGroupPane.getCurrentEvent() != null && hyperlinkGroupPane.getCurrentEvent().getType() == ListDataEvent.INTERVAL_ADDED) { editCellElement.setStyle(elementStyle.deriveFRFont(frFont)); }