From 932e839430c56b3b204cf1405d20114cd72d93b8 Mon Sep 17 00:00:00 2001 From: Starryi Date: Wed, 1 Sep 2021 13:54:32 +0800 Subject: [PATCH 1/5] =?UTF-8?q?REPORT-58595=E3=80=90=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E3=80=91=E4=B8=BB=E9=A2=98=E8=89=B2=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E6=A8=A1=E6=9D=BF=E9=A2=84=E8=A7=88=E7=9A=84?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=E6=B2=A1=E6=9C=89=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 1. 使用主题单元格样式时也需要重置CSS 2. 当主题色修改时主题编辑界面的数据只遍历一次,以提高联动效率 3. 修复主题单元格样式预览列表中边框不明显的问题 【改动思路】 同上 --- .../mainframe/theme/FormThemeProfilePane.java | 17 ----------------- .../mainframe/theme/ReportThemeProfilePane.java | 11 ----------- .../theme/TemplateThemeProfilePane.java | 16 ++++++++++------ .../theme/edit/CellStyleListEditPane.java | 7 +++++++ .../style/ThemedCellStyleListPane.java | 2 -- 5 files changed, 17 insertions(+), 36 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/FormThemeProfilePane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/FormThemeProfilePane.java index 83179edda..ef99423be 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/FormThemeProfilePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/FormThemeProfilePane.java @@ -1,6 +1,5 @@ package com.fr.design.mainframe.theme; -import com.fr.base.theme.FineColorManager; import com.fr.base.theme.FormTheme; import com.fr.base.theme.TemplateThemeConfig; import com.fr.base.theme.settings.ThemedComponentStyle; @@ -13,8 +12,6 @@ import com.fr.design.mainframe.theme.edit.FormBodyStyleEditPane; import com.fr.design.mainframe.theme.preview.FormThemePreviewPane; import javax.swing.JPanel; -import java.util.List; -import java.awt.Color; import static com.fr.design.i18n.Toolkit.i18nText; @@ -61,20 +58,6 @@ public class FormThemeProfilePane extends TemplateThemeProfilePane { return container; } - @Override - public void onColorSchemeChanged(List colors) { - super.onColorSchemeChanged(colors); - FineColorManager.FineColorReplaceByColorScheme replaceByColorScheme = new FineColorManager.FineColorReplaceByColorScheme(colors); - - ThemedFormBodyStyle formBodyStyle = formBodyStyleSettingPane.updateBean(); - FineColorManager.traverse(formBodyStyle, replaceByColorScheme); - formBodyStyleSettingPane.populateBean(formBodyStyle); - - ThemedComponentStyle componentStyle = componentStyleSettingPane.updateBean(); - FineColorManager.traverse(componentStyle, replaceByColorScheme); - componentStyleSettingPane.populateBean(componentStyle); - } - @Override public void populateBean(FormTheme theme) { super.populateBean(theme); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/ReportThemeProfilePane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/ReportThemeProfilePane.java index 091262b58..59f3ace8c 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/ReportThemeProfilePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/ReportThemeProfilePane.java @@ -39,17 +39,6 @@ public class ReportThemeProfilePane extends TemplateThemeProfilePane colors) { - super.onColorSchemeChanged(colors); - - FineColorManager.FineColorReplaceByColorScheme replaceByColorScheme = new FineColorManager.FineColorReplaceByColorScheme(colors); - - ThemedReportBodyStyle bodyStyle = reportBodyStyleSettingPane.updateBean(); - FineColorManager.traverse(bodyStyle, replaceByColorScheme); - reportBodyStyleSettingPane.populateBean(bodyStyle); - } - @Override public void populateBean(ReportTheme theme) { super.populateBean(theme); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java index 0abd6a7bc..807ade691 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java @@ -90,6 +90,8 @@ public abstract class TemplateThemeProfilePane extends private UIButton saveButton = new UIButton(); private UIButton saveAsButton = new UIButton(); + private boolean refreshingThemedColor = false; + private boolean currentIsNewTheme; private T theme; @@ -265,8 +267,13 @@ public abstract class TemplateThemeProfilePane extends colorListPane.addColorChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { + if (refreshingThemedColor) { + return; + } List colors = colorListPane.update(); + refreshingThemedColor = true; onColorSchemeChanged(colors); + refreshingThemedColor = false; } }); @@ -310,13 +317,10 @@ public abstract class TemplateThemeProfilePane extends public void onColorSchemeChanged(List colors) { colorListExtendedPane.populate(colors); FineColorManager.FineColorReplaceByColorScheme replaceByColorScheme = new FineColorManager.FineColorReplaceByColorScheme(colors); - ThemedCellStyleList cellStyle = cellStyleSettingPane.updateBean(); - FineColorManager.traverse(cellStyle, replaceByColorScheme); + T theme = updateBean(); - ThemedChartStyle themedChartStyle = chartStyleSettingPane.updateBean(); - FineColorManager.traverse(themedChartStyle, replaceByColorScheme); - chartStyleSettingPane.populateBean(themedChartStyle); - chartStyleSettingPane.populateGradientBar(colors); + FineColorManager.traverse(theme, replaceByColorScheme); + populateBean(theme); } public void populateBean(T theme) { diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/CellStyleListEditPane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/CellStyleListEditPane.java index e0e42b8b4..df3e2b07a 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/CellStyleListEditPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/CellStyleListEditPane.java @@ -173,6 +173,8 @@ public class CellStyleListEditPane extends JListControlPane { return; } + int oldSelectedIndex = getSelectedIndex(); + List nameObjectList = new ArrayList<>(); List cellStyleList = ob.getCellStyleList(); @@ -185,6 +187,11 @@ public class CellStyleListEditPane extends JListControlPane { populate(nameObjectArray); + int newSelectedIndex = oldSelectedIndex; + if (newSelectedIndex >= nameObjectArray.length) { + newSelectedIndex = 0; + } + setSelectedIndex(newSelectedIndex); } public ThemedCellStyleList updateBean() { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/ThemedCellStyleListPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/ThemedCellStyleListPane.java index 65da02e98..570d0d88d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/ThemedCellStyleListPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/ThemedCellStyleListPane.java @@ -181,8 +181,6 @@ public class ThemedCellStyleListPane extends FurtherBasicBeanPane imp Graphics2D g2d = (Graphics2D) g; int resolution = ScreenResolution.getScreenResolution(); - g.clipRect(0, 0, getWidth() - 3, getHeight() - 3); - if (style == Style.DEFAULT_STYLE) { // 如果是默认的style,就只写"Report"上去 Style.paintContent(g2d, paintText, style, getWidth() - 3, getHeight() - 3, resolution); From a127c09fdfc1a32e6a48b4b3f1fd596bfbe6f0b4 Mon Sep 17 00:00:00 2001 From: Starryi Date: Wed, 1 Sep 2021 17:44:45 +0800 Subject: [PATCH 2/5] =?UTF-8?q?REPORT-58597=20=E3=80=90FR11=E4=BA=8C?= =?UTF-8?q?=E8=BD=AE=E5=9B=9E=E5=BD=92=E3=80=91=E7=BB=84=E4=BB=B6=E5=A4=8D?= =?UTF-8?q?=E7=94=A8&=E4=B8=BB=E9=A2=98=E5=88=87=E6=8D=A2-=E6=8B=96?= =?UTF-8?q?=E5=85=A5=E5=A4=8D=E7=94=A8=E7=BB=84=E4=BB=B6=EF=BC=8C=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E9=BB=98=E8=AE=A4=E9=80=89=E6=8B=A9=E7=9A=84=E6=98=AF?= =?UTF-8?q?=E8=B7=9F=E9=9A=8F=E4=B8=BB=E9=A2=98=EF=BC=8C=E8=BF=99=E6=A0=B7?= =?UTF-8?q?=E7=9A=84=E8=AF=9D=E5=A4=8D=E7=94=A8=E7=BB=84=E4=BB=B6=E5=8E=9F?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E6=A0=B7=E5=BC=8F=E9=83=BD=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 1. 设计器面板中拖拽生成新组件的时机提前到拖拽开始时,这样被拖拽的控件 在拖拽过程中就有了主题化的效果 2. 新拖拽的报表块/图表块,仅在拖拽时设置为跟随主题,避免影响共享组件内的 报表块和图表块 【改动思路】 同上 --- .../mainframe/FormCreatorDropTarget.java | 58 ++----------------- .../com/fr/design/mainframe/FormDesigner.java | 42 ++++++++++++++ 2 files changed, 48 insertions(+), 52 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 9731dd508..7db972e9b 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 @@ -2,12 +2,8 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; import com.fr.base.chart.BaseChartCollection; -import com.fr.base.theme.TemplateThemeAware; -import com.fr.base.theme.TemplateThemeCompatible; import com.fr.chart.chartattr.ChartCollection; import com.fr.chartx.attr.ChartProvider; -import com.fr.base.theme.FormTheme; -import com.fr.base.theme.TemplateTheme; import com.fr.design.DesignModelAdapter; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; @@ -22,7 +18,6 @@ import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWAbsoluteLayout; import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.XWParameterLayout; -import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.icon.IconPathConstants; @@ -32,24 +27,16 @@ import com.fr.design.mod.bean.ContentChangeItem; import com.fr.design.mod.event.TableDataModifyEvent; import com.fr.design.utils.ComponentUtils; import com.fr.event.EventDispatcher; -import com.fr.form.main.Form; -import com.fr.form.main.WidgetGather; -import com.fr.form.share.editor.SharableEditorProvider; import com.fr.form.share.SharableWidgetProvider; import com.fr.form.share.ShareLoader; -import com.fr.form.ui.AbstractBorderStyleWidget; -import com.fr.form.ui.ChartEditor; -import com.fr.form.ui.ElementCaseEditor; +import com.fr.form.share.editor.SharableEditorProvider; import com.fr.form.ui.Widget; import com.fr.stable.Constants; import com.fr.stable.StringUtils; -import java.util.Collections; -import java.util.HashMap; import javax.swing.BorderFactory; import javax.swing.JWindow; -import java.util.List; -import java.util.Map; +import javax.swing.SwingUtilities; import java.awt.Color; import java.awt.Component; import java.awt.Point; @@ -59,7 +46,10 @@ import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; -import javax.swing.SwingUtilities; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 添加模式下鼠标事件处理器。 @@ -150,9 +140,6 @@ public class FormCreatorDropTarget extends DropTarget { EventDispatcher.fire(TableDataModifyEvent.INSTANCE, new ContentChangeItem(tdNameMap, widget, ChangeItem.TABLE_DATA_NAME)); } - // 新疆的图表块和报表块默认主题化 - addThemeToNewWidget(addingXCreator); - designer.getSelectionModel().setSelectedCreators( FormSelectionUtils.rebuildSelection(xCreator, new Widget[]{widget})); designer.getEditListenerTable().fireCreatorModified(addingModel.getXCreator(), DesignerEvent.CREATOR_ADDED); @@ -363,37 +350,4 @@ public class FormCreatorDropTarget extends DropTarget { public TabDragInner getTabDragInner() { return this.tabDragInner; } - - private void addThemeToNewWidget(XCreator addingXCreator) { - JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - if (template == null) { - return; - } - TemplateTheme theme = template.getTemplateTheme(); - if (!(theme instanceof FormTheme)) { - return; - } - FormTheme formTheme = (FormTheme) theme; - - Form.traversalWidget(addingXCreator.toData(), new WidgetGather() { - @Override - public void dealWith(Widget widget) { - if (widget instanceof AbstractBorderStyleWidget) { - AbstractBorderStyleWidget styleWidget = (AbstractBorderStyleWidget) widget; - if (!styleWidget.supportThemed()) { - return; - } - - boolean followingTheme = (!addingXCreator.isShared()) || styleWidget.isBorderStyleFollowingTheme(); - styleWidget.setBorderStyleFollowingTheme(followingTheme); - if (followingTheme) { - styleWidget.onTemplateUsingThemeChange(formTheme, TemplateThemeCompatible.NONE); - } - } - } - @Override - public boolean dealWithAllCards() { return true; } - }, AbstractBorderStyleWidget.class); - addingXCreator.rebuid(); - } } 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 92127c5a8..636f1f548 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 @@ -2,6 +2,9 @@ package com.fr.design.mainframe; import com.fr.base.Parameter; import com.fr.base.ScreenResolution; +import com.fr.base.theme.FormTheme; +import com.fr.base.theme.TemplateTheme; +import com.fr.base.theme.TemplateThemeCompatible; import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignModelAdapter; import com.fr.design.DesignState; @@ -41,6 +44,7 @@ import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.designer.properties.FormWidgetAuthorityEditPane; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.event.DesignerOpenedListener; +import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.fit.DesignerUIModeConfig; import com.fr.design.form.util.XCreatorConstants; @@ -57,7 +61,9 @@ import com.fr.design.utils.gui.LayoutUtils; import com.fr.form.FormElementCaseContainerProvider; import com.fr.form.FormElementCaseProvider; import com.fr.form.main.Form; +import com.fr.form.main.WidgetGather; import com.fr.form.parameter.FormSubmitButton; +import com.fr.form.ui.AbstractBorderStyleWidget; import com.fr.form.ui.EditorHolder; import com.fr.form.ui.PaddingMargin; import com.fr.form.ui.Widget; @@ -1189,6 +1195,9 @@ public class FormDesigner extends TargetComponent
implements TreeSelection * @param xCreator 组件 */ public void startDraggingBean(XCreator xCreator) { + + // 新疆的图表块和报表块默认主题化 + addThemeToDroppedNewWidget(xCreator); // 根据所选择的组件的BeanInfo生成相应的AddingModel // AddingModel和StateModel不一样,适合当前选择的组件相关的 addingModel = new AddingModel(this, xCreator); @@ -1853,4 +1862,37 @@ public class FormDesigner extends TargetComponent implements TreeSelection public FormSpacingLineDrawer getSpacingLineDrawer() { return spacingLineDrawer; } + + private void addThemeToDroppedNewWidget(XCreator addingXCreator) { + JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + if (template == null) { + return; + } + TemplateTheme theme = template.getTemplateTheme(); + if (!(theme instanceof FormTheme)) { + return; + } + FormTheme formTheme = (FormTheme) theme; + + Form.traversalWidget(addingXCreator.toData(), new WidgetGather() { + @Override + public void dealWith(Widget widget) { + if (widget instanceof AbstractBorderStyleWidget) { + AbstractBorderStyleWidget styleWidget = (AbstractBorderStyleWidget) widget; + if (!styleWidget.supportThemed()) { + return; + } + + boolean followingTheme = (!addingXCreator.isShared()) || styleWidget.isBorderStyleFollowingTheme(); + styleWidget.setBorderStyleFollowingTheme(followingTheme); + if (followingTheme) { + styleWidget.onTemplateUsingThemeChange(formTheme, TemplateThemeCompatible.NONE); + } + } + } + @Override + public boolean dealWithAllCards() { return true; } + }, AbstractBorderStyleWidget.class); + addingXCreator.rebuid(); + } } From d84d9262b57b3fb3fb76e4083185414bb4165aff Mon Sep 17 00:00:00 2001 From: Starryi Date: Wed, 1 Sep 2021 18:23:33 +0800 Subject: [PATCH 3/5] =?UTF-8?q?REPORT-58612=20=E3=80=90=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E3=80=91=E5=8D=95=E5=85=83=E6=A0=BC=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E9=87=8D=E5=91=BD=E5=90=8D=EF=BC=8C=E5=85=89=E6=A0=87?= =?UTF-8?q?=E5=9C=A8=E5=90=8D=E7=A7=B0=E6=A1=86=E4=B8=AD=E6=97=B6=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=B2=A1=E6=9C=89=E4=BF=9D=E5=AD=98=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 输出数据模型时,单元格样式名称可能处于编辑状态,需要先退出编辑。 【改动思路】 同上 --- .../fr/design/mainframe/theme/edit/CellStyleListEditPane.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/CellStyleListEditPane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/CellStyleListEditPane.java index df3e2b07a..b8fc31b6d 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/CellStyleListEditPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/edit/CellStyleListEditPane.java @@ -195,6 +195,8 @@ public class CellStyleListEditPane extends JListControlPane { } public ThemedCellStyleList updateBean() { + nameableList.stopEditing(); + Nameable[] nameables = this.update(); ThemedCellStyleList styleConfig = new ThemedCellStyleList(); for (Nameable nameable : nameables) { From 080e3323c5c54f637195820c2aa9ad268138e4df Mon Sep 17 00:00:00 2001 From: Starryi Date: Wed, 1 Sep 2021 19:06:10 +0800 Subject: [PATCH 4/5] =?UTF-8?q?REPORT-58486=20FR11-=E4=BA=8C=E8=BD=AE?= =?UTF-8?q?=E5=9B=9E=E5=BD=92-=E6=96=B0=E5=BB=BA=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E4=B8=BB=E9=A2=98=E5=9C=A8=E6=92=A4=E9=94=80=E6=97=B6?= =?UTF-8?q?=E6=9C=AA=E8=A2=AB=E9=94=81=E5=AE=9A=EF=BC=8C=E8=BF=9E=E5=90=8C?= =?UTF-8?q?=E6=92=A4=E9=94=80=E5=8A=9F=E8=83=BD=E4=B8=80=E8=B5=B7=E8=A2=AB?= =?UTF-8?q?=E6=92=A4=E9=94=80=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 初始的UndoState未包含主题效果 【改动思路】 同上 --- .../src/main/java/com/fr/design/mainframe/JTemplate.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java index 843f76030..ed156aecd 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java @@ -189,13 +189,13 @@ public abstract class JTemplate> designModel = createDesignModel(parameters); } addCenterPane(); - this.undoState = createUndoState(); - - initAndStartPlugin(); - if (isNewFile) { + // REPORT-58486: 必须在初始的UndoState创建前设置主题,使得初始的UndoState就包含了主题效果 setUpTheme4NewTemplate(); } + this.undoState = createUndoState(); + + initAndStartPlugin(); startListenThemeConfig(); } From a872d28607520b598522ec1f23d1db62e941d248 Mon Sep 17 00:00:00 2001 From: Starryi Date: Wed, 1 Sep 2021 20:06:36 +0800 Subject: [PATCH 5/5] =?UTF-8?q?REPORT-58687=20=E3=80=90=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E3=80=91=E4=BF=AE=E6=94=B9=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E6=8F=90=E7=A4=BA=E6=96=87=E5=AD=97=E7=9A=84?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 交互变更: 1. 调整主题名称错误提示出现时机 2. 调整主题名称错误提示文本框的位置 【改动思路】 同上 --- .../theme/TemplateThemeProfilePane.java | 69 +++++++++++-------- 1 file changed, 40 insertions(+), 29 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java index 807ade691..b7a8db48a 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeProfilePane.java @@ -7,6 +7,7 @@ import com.fr.base.theme.settings.ThemeThumbnail; import com.fr.base.theme.settings.ThemedCellStyleList; import com.fr.base.theme.settings.ThemedChartStyle; import com.fr.base.theme.settings.ThemedColorScheme; +import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.gui.frpane.AbstractAttrNoScrollPane; import com.fr.design.gui.frpane.AttributeChangeListener; @@ -26,6 +27,7 @@ import com.fr.design.mainframe.theme.edit.ui.ColorListPane; import com.fr.design.mainframe.theme.edit.ui.LabelUtils; import com.fr.design.mainframe.theme.ui.BorderUtils; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.Inter; import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import com.fr.transaction.CallBackAdaptor; @@ -44,6 +46,7 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import java.awt.BorderLayout; import java.awt.Color; +import java.awt.Component; import java.awt.Dimension; import java.awt.Image; import java.awt.event.ActionEvent; @@ -151,12 +154,12 @@ public abstract class TemplateThemeProfilePane extends return titleContainer; } private JPanel createRightPane() { - JPanel container = new JPanel(new BorderLayout(0, 12)); + JPanel container = new JPanel(new BorderLayout(0, 0)); container.setPreferredSize(new Dimension(RIGHT_PANE_WIDTH, RIGHT_PANE_HEIGHT)); JPanel nameEditPane = createNameEditPane(); container.add(nameEditPane, BorderLayout.NORTH); - JPanel settingPane = new JPanel(new BorderLayout(0, 10)); + JPanel settingPane = new JPanel(new BorderLayout(0, IntervalConstants.INTERVAL_L1)); container.add(settingPane, BorderLayout.CENTER); settingPane.add(createColorSchemeEditPane(), BorderLayout.NORTH); settingPane.add(createCustomEditorsPane(), BorderLayout.CENTER); @@ -172,13 +175,6 @@ public abstract class TemplateThemeProfilePane extends } private JPanel createNameEditPane() { - JPanel container = new JPanel(new BorderLayout(30, 0)); - container.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); - container.add(LabelUtils.createLabel(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Edit_Pane_Name")), BorderLayout.WEST); - - JPanel settingContainer = new JPanel(new BorderLayout(10, 0)); - container.add(settingContainer, BorderLayout.CENTER); - nameErrorLabel = LabelUtils.createLabel(StringUtils.EMPTY, Color.RED); nameErrorLabel.setVisible(false); @@ -189,14 +185,14 @@ public abstract class TemplateThemeProfilePane extends @Override public void insertUpdate(DocumentEvent e) { if (isEnabled()) { - checkThemeCanBeSavedAndUpdateUI(currentIsNewTheme, nameTextField, nameErrorLabel, saveButton); + checkThemeCanBeSavedAndUpdateUI(currentIsNewTheme, false, currentIsNewTheme, true, nameTextField, nameErrorLabel, saveButton); } } @Override public void removeUpdate(DocumentEvent e) { if (isEnabled()) { - checkThemeCanBeSavedAndUpdateUI(currentIsNewTheme, nameTextField, nameErrorLabel, saveButton); + checkThemeCanBeSavedAndUpdateUI(currentIsNewTheme, false, currentIsNewTheme, true, nameTextField, nameErrorLabel, saveButton); } } @@ -209,22 +205,26 @@ public abstract class TemplateThemeProfilePane extends @Override public void focusGained(FocusEvent e) { if (isEnabled()) { - checkThemeCanBeSavedAndUpdateUI(currentIsNewTheme, nameTextField, nameErrorLabel, saveButton); + checkThemeCanBeSavedAndUpdateUI(currentIsNewTheme, false, currentIsNewTheme, true, nameTextField, nameErrorLabel, saveButton); } } @Override public void focusLost(FocusEvent e) { if (isEnabled()) { - checkThemeCanBeSavedAndUpdateUI(currentIsNewTheme, nameTextField, nameErrorLabel, saveButton); + checkThemeCanBeSavedAndUpdateUI(currentIsNewTheme, true, currentIsNewTheme, true, nameTextField, nameErrorLabel, saveButton); } } }); - settingContainer.add(nameTextField, BorderLayout.WEST); + double p = TableLayout.PREFERRED; - settingContainer.add(nameErrorLabel, BorderLayout.CENTER); + JPanel container = TableLayoutHelper.createGapTableLayoutPane(new Component[][]{ + new Component[] { LabelUtils.createLabel(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Edit_Pane_Name")), nameTextField }, + new Component[] { null, nameErrorLabel }, + }, new double[] { 20, 20}, new double[] { p, 165}, IntervalConstants.INTERVAL_L1, IntervalConstants.INTERVAL_W0); + container.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); return container; } private JPanel createColorSchemeEditPane() { @@ -393,7 +393,7 @@ public abstract class TemplateThemeProfilePane extends @Override public void actionPerformed(ActionEvent e) { T theme = updateBean(); - boolean canBeSaved = checkThemeCanBeSavedAndUpdateUI(currentIsNewTheme, nameTextField, nameErrorLabel, saveButton); + boolean canBeSaved = checkThemeCanBeSavedAndUpdateUI(currentIsNewTheme, true, currentIsNewTheme, true, nameTextField, nameErrorLabel, saveButton); if (canBeSaved && theme != null) { theme.setName(nameTextField.getText()); config.addTheme(theme, true, new CallBackAdaptor() { @@ -478,14 +478,14 @@ public abstract class TemplateThemeProfilePane extends @Override public void insertUpdate(DocumentEvent e) { if (isEnabled()) { - checkThemeCanBeSavedAndUpdateUI(true, nameTextField, nameErrorLabel, confirmButton); + checkThemeCanBeSavedAndUpdateUI(true, false, true, true, nameTextField, nameErrorLabel, confirmButton); } } @Override public void removeUpdate(DocumentEvent e) { if (isEnabled()) { - checkThemeCanBeSavedAndUpdateUI(true, nameTextField, nameErrorLabel, confirmButton); + checkThemeCanBeSavedAndUpdateUI(true, false, true, true, nameTextField, nameErrorLabel, confirmButton); } } @@ -498,14 +498,14 @@ public abstract class TemplateThemeProfilePane extends @Override public void focusGained(FocusEvent e) { if (isEnabled()) { - checkThemeCanBeSavedAndUpdateUI(true, nameTextField, nameErrorLabel, confirmButton); + checkThemeCanBeSavedAndUpdateUI(true, false, true, true, nameTextField, nameErrorLabel, confirmButton); } } @Override public void focusLost(FocusEvent e) { if (isEnabled()) { - checkThemeCanBeSavedAndUpdateUI(true, nameTextField, nameErrorLabel, confirmButton); + checkThemeCanBeSavedAndUpdateUI(true, true, true, true, nameTextField, nameErrorLabel, confirmButton); } } }); @@ -551,7 +551,7 @@ public abstract class TemplateThemeProfilePane extends FineLoggerFactory.getLogger().error(ex.getMessage(), ex); return; } - boolean canBeSaved = checkThemeCanBeSavedAndUpdateUI(true, nameTextField, nameErrorLabel, confirmButton); + boolean canBeSaved = checkThemeCanBeSavedAndUpdateUI(true, true, true, true, nameTextField, nameErrorLabel, confirmButton); if (canBeSaved && newThemeObject != null) { newThemeObject.setName(name); newThemeObject.setRemovable(true); @@ -587,17 +587,28 @@ public abstract class TemplateThemeProfilePane extends private boolean isThemeNameDuplicated(String name) { return config.cachedFetch(name) != null; } - private boolean checkThemeCanBeSavedAndUpdateUI(boolean checkDuplicated, UITextField textField, UILabel errorLabel, UIButton... actionButtons) { - String error = StringUtils.EMPTY; + private boolean checkThemeCanBeSavedAndUpdateUI( + boolean checkEmpty, + boolean displayEmptyTip, + boolean checkDuplicated, + boolean displayDuplicatedTip, + UITextField textField, + UILabel errorLabel, UIButton... actionButtons) { String name = textField.getText(); - if (isThemeNameEmpty(name)) { - error = Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Edit_Pane_Empty_Name_Error_Tip"); + + boolean valid = true; + errorLabel.setText(StringUtils.EMPTY); + if (checkEmpty && isThemeNameEmpty(name)) { + valid = false; + if (displayEmptyTip) { + errorLabel.setText(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Edit_Pane_Empty_Name_Error_Tip")); + } } else if (checkDuplicated && isThemeNameDuplicated(name)) { - error = Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Edit_Pane_Duplicated_Name_Error_Tip"); + valid = false; + if (displayDuplicatedTip) { + errorLabel.setText(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Edit_Pane_Duplicated_Name_Error_Tip")); + } } - errorLabel.setText(error); - - boolean valid = StringUtils.isEmpty(error); errorLabel.setVisible(!valid); if (actionButtons != null && actionButtons.length > 0) {