From d92939c0b55785bab5025ce4a23007686d5c485b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Mon, 13 Mar 2023 12:47:06 +0800 Subject: [PATCH 01/70] =?UTF-8?q?REPORT-91591=20=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E6=8E=A7=E4=BB=B6=E7=9A=84=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fun/WidgetAdvancedPaneProvider.java | 8 ++ .../design/widget/ui/CheckBoxDefinePane.java | 74 +++++++++++++++++-- .../widget/ui/CheckBoxGroupDefinePane.java | 41 +++++++++- .../design/widget/ui/ComboBoxDefinePane.java | 24 ++++++ .../widget/ui/ComboCheckBoxDefinePane.java | 23 ++++++ .../widget/ui/DateEditorDefinePane.java | 31 ++++++-- .../ui/DirectWriteEditorDefinePane.java | 18 ++++- .../widget/ui/FieldEditorDefinePane.java | 52 ++++++++++++- .../widget/ui/NumberEditorDefinePane.java | 50 ++++++++++++- .../design/widget/ui/PasswordDefinePane.java | 25 +++++++ .../widget/ui/RadioGroupDefinePane.java | 52 ++++++++++++- .../design/widget/ui/TextAreaDefinePane.java | 26 +++++++ .../widget/ui/TextFieldEditorDefinePane.java | 36 ++++++++- .../ui/TreeComboBoxEditorDefinePane.java | 23 ++++++ .../widget/ui/TreeEditorDefinePane.java | 35 ++++++++- 15 files changed, 492 insertions(+), 26 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/fun/WidgetAdvancedPaneProvider.java b/designer-form/src/main/java/com/fr/design/fun/WidgetAdvancedPaneProvider.java index 7ba5a3c8c..8b9503ad2 100644 --- a/designer-form/src/main/java/com/fr/design/fun/WidgetAdvancedPaneProvider.java +++ b/designer-form/src/main/java/com/fr/design/fun/WidgetAdvancedPaneProvider.java @@ -33,6 +33,14 @@ public interface WidgetAdvancedPaneProvider extends Mutable { */ boolean accept(XCreator creator); + /** + * 根据Class判断是否需要处理 + * + * @param creator + * @return true:需要处理;false:不处理 + */ + boolean accept(Class creator); + /** * 创建控件高级设置项的追加面板 * diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxDefinePane.java index 5581449cf..d7b2631b1 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxDefinePane.java @@ -1,21 +1,34 @@ package com.fr.design.widget.ui; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.designer.IntervalConstants; import com.fr.design.foldablepane.UIExpandablePane; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.form.ui.CheckBox; +import com.fr.general.GeneralContext; +import com.fr.plugin.observer.PluginEvent; +import com.fr.plugin.observer.PluginEventListener; import javax.swing.*; import java.awt.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; public class CheckBoxDefinePane extends AbstractDataModify { private UITextField text; + protected final List> extraPaneList = new ArrayList<>(); + protected JPanel extraPane; + protected static double F = TableLayout.FILL; + protected static double P = TableLayout.PREFERRED; public CheckBoxDefinePane() { this.iniComponents(); } @@ -23,14 +36,14 @@ public class CheckBoxDefinePane extends AbstractDataModify { private void iniComponents() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); text = new UITextField(); - double f = TableLayout.FILL; - double p = TableLayout.PREFERRED; + initExtraPane(); Component[][] components = new Component[][]{ new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Text")), text}, + new Component[]{extraPane, null}, }; - double[] rowSize = {p}; - double[] columnSize = {p, f}; - int[][] rowCount = {{1, 1}}; + double[] rowSize = {P,P}; + double[] columnSize = {P, F}; + int[][] rowCount = {{1, 1}, {1, 1}}; JPanel pane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W3, IntervalConstants.INTERVAL_L1); UIExpandablePane uiExpandablePane = new UIExpandablePane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 24, pane); @@ -39,6 +52,51 @@ public class CheckBoxDefinePane extends AbstractDataModify { this.add(uiExpandablePane); } + protected void initExtraPane() { + initPluginListener(); + refreshExtraAdvancedPane(); + } + + protected void refreshExtraAdvancedPane() { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(CheckBox.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + } + + protected void initPluginListener() { + GeneralContext.listenPluginRunningChanged(new PluginEventListener() { + @Override + public void on(PluginEvent event) { + refreshExtraAdvancedPane(); + } + }, pluginContext -> pluginContext.getRuntime().contain(WidgetAdvancedPaneProvider.XML_TAG)); + } + + /** + * 插入配置项面板 + * + * @param index 插入的位置 + * @param pane 配置项面板 + */ + protected void insertShortCut(int index, BasicBeanPane pane) { + int size = extraPaneList.size(); + index = Math.min(index, size); + extraPaneList.add(index, pane); + } + @Override protected String title4PopupWindow() { return "CheckBox"; @@ -47,12 +105,18 @@ public class CheckBoxDefinePane extends AbstractDataModify { @Override public void populateBean(CheckBox check) { text.setText(check.getText()); + for (BasicBeanPane pane : extraPaneList) { + pane.populateBean(check); + } } @Override public CheckBox updateBean() { CheckBox box = new CheckBox(); box.setText(text.getText()); + for (BasicBeanPane pane : extraPaneList) { + pane.updateBean(box); + } return box; } } diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java index cddcf991d..43aa175c5 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java @@ -1,11 +1,19 @@ package com.fr.design.widget.ui; import java.awt.*; +import java.util.Set; import javax.swing.BorderFactory; import javax.swing.JPanel; +import javax.swing.SwingConstants; + +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.IntervalConstants; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -43,21 +51,50 @@ public class CheckBoxGroupDefinePane extends FieldEditorDefinePane> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(CheckBoxGroup.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } else { + Component[][] components = new Component[][]{ + new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Font_Size"), SwingConstants.LEFT)} + }; + double[] rowSize = {P}; + double[] columnSize = {P, F}; + int[][] rowCount = {{1, 1}}; + extraPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); + } + } + @Override protected void populateSubFieldEditorBean(CheckBoxGroup ob) { returnTypePane.populate(ob); diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/ComboBoxDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/ComboBoxDefinePane.java index be3b9bd52..8a94c1de2 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/ComboBoxDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/ComboBoxDefinePane.java @@ -3,15 +3,20 @@ package com.fr.design.widget.ui; import javax.swing.*; import com.fr.data.Dictionary; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.IntervalConstants; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.widget.accessibles.AccessibleDictionaryEditor; import com.fr.form.ui.ComboBox; import java.awt.*; +import java.util.Set; public class ComboBoxDefinePane extends CustomWritableRepeatEditorPane { protected AccessibleDictionaryEditor dictPane; @@ -33,6 +38,25 @@ public class ComboBoxDefinePane extends CustomWritableRepeatEditorPane return jPanel; } + protected void refreshExtraAdvancedPane() { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(ComboBox.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + } + protected void populateSubCustomWritableRepeatEditorBean(ComboBox e) { this.dictPane.setValue(e.getDictionary()); } diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java index 879234ccf..00968771e 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java @@ -1,8 +1,11 @@ package com.fr.design.widget.ui; import com.fr.data.Dictionary; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.IntervalConstants; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; @@ -15,6 +18,7 @@ import com.fr.form.ui.ComboCheckBox; import javax.swing.*; import java.awt.*; +import java.util.Set; public class ComboCheckBoxDefinePane extends CustomWritableRepeatEditorPane { private ReturnTypePane returnTypePane; @@ -49,6 +53,25 @@ public class ComboCheckBoxDefinePane extends CustomWritableRepeatEditorPane> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(ComboCheckBox.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + } + @Override protected void populateSubCustomWritableRepeatEditorBean(ComboCheckBox e) { this.dictPane.setValue(e.getDictionary()); diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/DateEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/DateEditorDefinePane.java index 0a3f3d288..d7b8491ad 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/DateEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/DateEditorDefinePane.java @@ -2,9 +2,12 @@ package com.fr.design.widget.ui; import com.fr.base.FRContext; import com.fr.data.core.FormatField; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.border.UIRoundedBorder; import com.fr.design.constants.UIConstants; import com.fr.design.designer.IntervalConstants; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; @@ -28,6 +31,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Set; public class DateEditorDefinePane extends DirectWriteEditorDefinePane { private UIButtonGroup returnTypeComboBox; @@ -53,10 +57,8 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane(new String[] {com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Date") , com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_String")}); JPanel formatHead = createFormatHead(); - startDv = new DateValuePane(); endDv = new DateValuePane(); - double f = TableLayout.FILL; double p = TableLayout.PREFERRED; UILabel formatLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Engine_Format")); @@ -65,23 +67,42 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(DateEditor.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + } + private JPanel createFormatPane(UIComboBox formatComboBox, UILabel sampleLabel){ JPanel previewPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/DirectWriteEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/DirectWriteEditorDefinePane.java index 535c13496..a675cd401 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/DirectWriteEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/DirectWriteEditorDefinePane.java @@ -1,7 +1,10 @@ package com.fr.design.widget.ui; + +import com.fr.design.designer.IntervalConstants; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayoutHelper; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.form.ui.DirectWriteEditor; @@ -9,6 +12,7 @@ import com.fr.form.ui.DirectWriteEditor; import javax.swing.*; import java.awt.*; + //richer:需要提供能否直接编辑的控件设置面板——下拉框、复选框、时间、日期、下拉树 public abstract class DirectWriteEditorDefinePane extends FieldEditorDefinePane { public UICheckBox directWriteCheckBox; @@ -25,9 +29,17 @@ public abstract class DirectWriteEditorDefinePane e contentPane.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 0)); directWriteCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Allow_Edit"), false); directWriteCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - waterMarkDictPane = new WaterMarkDictPane(); - contentPane.add(waterMarkDictPane, BorderLayout.NORTH); + initExtraPane(); + Component[][] components = new Component[][]{ + new Component[]{waterMarkDictPane, null}, + new Component[]{extraPane, null}, + }; + double[] rowSize = {P, P}; + double[] columnSize = {P, F}; + int[][] rowCount = {{1, 1}, {1, 1}}; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); + contentPane.add(panel, BorderLayout.NORTH); JPanel otherContentPane = this.setSecondContentPane(); if (otherContentPane != null) { contentPane.add(otherContentPane, BorderLayout.CENTER); @@ -35,8 +47,6 @@ public abstract class DirectWriteEditorDefinePane e return contentPane; } - - public JPanel setValidatePane(){ JPanel otherContentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); JPanel jPanel = GUICoreUtils.createFlowPane(new JComponent[]{directWriteCheckBox}, FlowLayout.LEFT, 0); diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/FieldEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/FieldEditorDefinePane.java index 07faec922..b260e6e8f 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/FieldEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/FieldEditorDefinePane.java @@ -1,18 +1,24 @@ package com.fr.design.widget.ui; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.ErrorMsgTextFieldAdapter; import com.fr.design.beans.UITextFieldAdapter; import com.fr.design.constants.LayoutConstants; import com.fr.design.designer.IntervalConstants; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.fun.TextFieldAdapterProvider; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.form.ui.FieldEditor; +import com.fr.general.GeneralContext; import com.fr.log.FineLoggerFactory; +import com.fr.plugin.observer.PluginEvent; +import com.fr.plugin.observer.PluginEventListener; import javax.swing.BorderFactory; import javax.swing.JPanel; @@ -20,6 +26,8 @@ import java.awt.BorderLayout; import java.awt.Component; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.List; public abstract class FieldEditorDefinePane extends AbstractDataModify { protected UICheckBox allowBlankCheckBox; @@ -27,6 +35,11 @@ public abstract class FieldEditorDefinePane extends Abstr protected ErrorMsgTextFieldAdapter errorMsgTextField; protected JPanel validatePane; + protected final List> extraPaneList = new ArrayList<>(); + protected JPanel extraPane; + + protected static double F = TableLayout.FILL; + protected static double P = TableLayout.PREFERRED; public FieldEditorDefinePane() { this.initComponents(); } @@ -60,11 +73,23 @@ public abstract class FieldEditorDefinePane extends Abstr } } + protected void initExtraPane() { + initPluginListener(); + refreshExtraAdvancedPane(); + } + + protected void refreshExtraAdvancedPane() { + // do nothing + } + + @Override public void populateBean(T ob) { this.allowBlankCheckBox.setSelected(ob.isAllowBlank()); this.errorMsgTextField.setText(ob.getErrorMessage()); - + for (BasicBeanPane pane : extraPaneList) { + pane.populateBean(ob); + } populateSubFieldEditorBean(ob); } @@ -76,7 +101,9 @@ public abstract class FieldEditorDefinePane extends Abstr e.setAllowBlank(this.allowBlankCheckBox.isSelected()); e.setErrorMessage(this.errorMsgTextField.getText()); - + for (BasicBeanPane pane : extraPaneList) { + pane.updateBean(e); + } return e; } @@ -131,5 +158,26 @@ public abstract class FieldEditorDefinePane extends Abstr return null; } + /** + * 插入配置项面板 + * + * @param index 插入的位置 + * @param pane 配置项面板 + */ + protected void insertShortCut(int index, BasicBeanPane pane) { + int size = extraPaneList.size(); + index = Math.min(index, size); + extraPaneList.add(index, pane); + } + + protected void initPluginListener() { + GeneralContext.listenPluginRunningChanged(new PluginEventListener() { + @Override + public void on(PluginEvent event) { + refreshExtraAdvancedPane(); + } + }, pluginContext -> pluginContext.getRuntime().contain(WidgetAdvancedPaneProvider.XML_TAG)); + } + } diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/NumberEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/NumberEditorDefinePane.java index 278aa3745..51749f9a2 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/NumberEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/NumberEditorDefinePane.java @@ -1,11 +1,19 @@ package com.fr.design.widget.ui; import javax.swing.JPanel; +import javax.swing.SwingConstants; + +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.designer.IntervalConstants; +import com.fr.design.fun.WidgetAdvancedPaneProvider; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayoutHelper; import com.fr.design.widget.component.NumberEditorValidatePane; import com.fr.form.ui.NumberEditor; - -import java.awt.BorderLayout; +import java.awt.Component; +import java.util.Set; public class NumberEditorDefinePane extends FieldEditorDefinePane { /** @@ -29,10 +37,46 @@ public class NumberEditorDefinePane extends FieldEditorDefinePane protected JPanel setFirstContentPane() { JPanel content = FRGUIPaneFactory.createBorderLayout_S_Pane(); waterMarkDictPane = new WaterMarkDictPane(); - content.add(waterMarkDictPane, BorderLayout.CENTER); + initExtraPane(); + Component[][] components = new Component[][]{ + new Component[]{waterMarkDictPane, null}, + new Component[]{extraPane, null} + }; + double[] rowSize = {P, P}; + double[] columnSize = {P, F}; + int[][] rowCount = {{1, 1}, {1, 1}}; + final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); + content.add(panel); return content; } + protected void refreshExtraAdvancedPane() { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(NumberEditor.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } else { + Component[][] components = new Component[][]{ + new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Font_Size"), SwingConstants.LEFT)} + }; + double[] rowSize = {P}; + double[] columnSize = {P, F}; + int[][] rowCount = {{1, 1}}; + extraPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); + } + } + public JPanel setValidatePane() { numberEditorValidatePane = new NumberEditorValidatePane(); return numberEditorValidatePane; diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/PasswordDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/PasswordDefinePane.java index af0c98c34..d86bdc44b 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/PasswordDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/PasswordDefinePane.java @@ -1,10 +1,16 @@ package com.fr.design.widget.ui; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.frpane.RegFieldPane; import com.fr.design.gui.frpane.RegPane; +import com.fr.design.layout.FRGUIPaneFactory; import com.fr.form.ui.Password; import com.fr.form.ui.TextEditor; +import java.util.Set; + public class PasswordDefinePane extends TextFieldEditorDefinePane { private static final long serialVersionUID = 4737910705071750562L; @@ -16,4 +22,23 @@ public class PasswordDefinePane extends TextFieldEditorDefinePane { protected RegFieldPane createRegPane() { return new RegFieldPane(RegPane.PASSWORD_REG_TYPE); } + + protected void refreshExtraAdvancedPane() { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(Password.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + } } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/RadioGroupDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/RadioGroupDefinePane.java index 912e6c942..fa99fb4cc 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/RadioGroupDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/RadioGroupDefinePane.java @@ -1,9 +1,21 @@ package com.fr.design.widget.ui; import javax.swing.JPanel; +import javax.swing.SwingConstants; + +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.data.DataCreatorUI; +import com.fr.design.designer.IntervalConstants; +import com.fr.design.fun.WidgetAdvancedPaneProvider; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayoutHelper; import com.fr.form.ui.RadioGroup; +import java.awt.Component; +import java.util.Set; + public class RadioGroupDefinePane extends FieldEditorDefinePane { private ButtonGroupDictPane buttonGroupDictPane; @@ -21,7 +33,45 @@ public class RadioGroupDefinePane extends FieldEditorDefinePane { @Override protected JPanel setFirstContentPane() { buttonGroupDictPane = new ButtonGroupDictPane(); - return buttonGroupDictPane; + initExtraPane(); + Component[][] components = new Component[][]{ + new Component[]{buttonGroupDictPane, null}, + new Component[]{extraPane, null} + }; + double[] rowSize = {P, P, P, P}; + double[] columnSize = {P, F}; + int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}; + final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); + JPanel content = FRGUIPaneFactory.createBorderLayout_S_Pane(); + content.add(panel); + return content; + } + + protected void refreshExtraAdvancedPane() { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(RadioGroup.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } else { + Component[][] components = new Component[][]{ + new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Font_Size"), SwingConstants.LEFT)} + }; + double[] rowSize = {P}; + double[] columnSize = {P, F}; + int[][] rowCount = {{1, 1}}; + extraPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); + } } @Override diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/TextAreaDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/TextAreaDefinePane.java index de2fef022..87c38ef55 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/TextAreaDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/TextAreaDefinePane.java @@ -1,11 +1,18 @@ package com.fr.design.widget.ui; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.frpane.RegFieldPane; import com.fr.design.gui.frpane.RegPane; +import com.fr.design.layout.FRGUIPaneFactory; import com.fr.form.ui.TextArea; import com.fr.form.ui.TextEditor; +import java.util.Set; + + public class TextAreaDefinePane extends TextFieldEditorDefinePane { @Override @@ -16,4 +23,23 @@ public class TextAreaDefinePane extends TextFieldEditorDefinePane { protected RegFieldPane createRegPane() { return new RegFieldPane(RegPane.TEXTAREA_REG_TYPE); } + + protected void refreshExtraAdvancedPane() { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(TextArea.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + } } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/TextFieldEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/TextFieldEditorDefinePane.java index 72e93e28c..37aeddd8c 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/TextFieldEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/TextFieldEditorDefinePane.java @@ -1,18 +1,23 @@ package com.fr.design.widget.ui; import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.designer.IntervalConstants; import com.fr.design.fun.RegPaneProvider; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.frpane.RegFieldPane; import com.fr.design.gui.frpane.RegPane; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.layout.TableLayoutHelper; import com.fr.form.ui.TextEditor; import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; import javax.swing.JPanel; -import java.awt.BorderLayout; +import java.awt.Component; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.util.Set; public class TextFieldEditorDefinePane extends FieldEditorDefinePane { protected RegFieldPane regPane; @@ -51,8 +56,17 @@ public class TextFieldEditorDefinePane extends FieldEditorDefinePane waterMarkDictPane.removeInputKeyListener(this); } }); + initExtraPane(); + Component[][] components = new Component[][]{ + new Component[]{waterMarkDictPane, null}, + new Component[]{extraPane, null} + }; + double[] rowSize = {P, P}; + double[] columnSize = {P, F}; + int[][] rowCount = {{1, 1}, {1, 1}}; + final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); JPanel content = FRGUIPaneFactory.createBorderLayout_S_Pane(); - content.add(waterMarkDictPane, BorderLayout.CENTER); + content.add(panel); return content; } @@ -60,6 +74,24 @@ public class TextFieldEditorDefinePane extends FieldEditorDefinePane return regPane; } + protected void refreshExtraAdvancedPane() { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(TextEditor.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + } protected RegFieldPane createRegPane() { RegPaneProvider provider = ExtraDesignClassManager.getInstance().getSingle(RegPaneProvider.XML_TAG); diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java index ac436970f..90264d707 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java @@ -1,12 +1,16 @@ package com.fr.design.widget.ui; import java.awt.*; +import java.util.Set; import javax.swing.BorderFactory; import javax.swing.JPanel; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.IntervalConstants; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itree.refreshabletree.TreeRootPane; import com.fr.design.layout.FRGUIPaneFactory; @@ -60,6 +64,25 @@ public class TreeComboBoxEditorDefinePane extends CustomWritableRepeatEditorPane return jPanel; } + protected void refreshExtraAdvancedPane() { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(TreeComboBoxEditor.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + } + @Override protected String title4PopupWindow() { diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/TreeEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/TreeEditorDefinePane.java index 086ef8883..7e662de6a 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/TreeEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/TreeEditorDefinePane.java @@ -1,7 +1,10 @@ package com.fr.design.widget.ui; +import com.fr.design.ExtraDesignClassManager; +import com.fr.design.beans.BasicBeanPane; import com.fr.design.data.DataCreatorUI; import com.fr.design.designer.IntervalConstants; +import com.fr.design.fun.WidgetAdvancedPaneProvider; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itree.refreshabletree.TreeRootPane; @@ -14,6 +17,7 @@ import com.fr.form.ui.TreeEditor; import javax.swing.*; import java.awt.*; +import java.util.Set; /* @@ -65,11 +69,19 @@ public class TreeEditorDefinePane extends FieldEditorDefinePane { createTree.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0)); JPanel contentPane = FRGUIPaneFactory.createBorderLayout_L_Pane(); JPanel contenter = FRGUIPaneFactory.createBorderLayout_S_Pane(); - + initExtraPane(); + double[] rowSize = {P, P}; + double[] columnSize = {P, F}; + int[][] rowCount = {{1, 1},{1, 1}}; + Component[][] components = new Component[][]{ + new Component[]{createTree, null}, + new Component[]{extraPane, null}, + }; + JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_L2, IntervalConstants.INTERVAL_L1); contentPane.add(contenter,BorderLayout.NORTH); removeRepeatCheckBox = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Remove_Repeat_Data"), false); removeRepeatCheckBox.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); - contenter.add(createTree, BorderLayout.NORTH); + contenter.add(panel, BorderLayout.NORTH); contenter.add(removeRepeatCheckBox, BorderLayout.CENTER); JPanel otherContentPane = this.setThirdContentPane(); if (otherContentPane != null) { @@ -78,6 +90,25 @@ public class TreeEditorDefinePane extends FieldEditorDefinePane { return contentPane; } + protected void refreshExtraAdvancedPane() { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(TreeEditor.class)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + } + protected JPanel setThirdContentPane() { JPanel content = FRGUIPaneFactory.createBorderLayout_L_Pane(); treeRootPane = new TreeRootPane(); From 991fbb1418d7772568b3f7859fc180c3e416009d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Mon, 13 Mar 2023 16:47:49 +0800 Subject: [PATCH 02/70] =?UTF-8?q?REPORT-91591=20=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E6=8E=A7=E4=BB=B6=E7=9A=84=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E8=AE=BE=E7=BD=AE--=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/widget/ui/CheckBoxDefinePane.java | 5 ++-- .../widget/ui/CheckBoxGroupDefinePane.java | 26 ++----------------- .../design/widget/ui/ComboBoxDefinePane.java | 18 ++----------- .../widget/ui/ComboCheckBoxDefinePane.java | 18 ++----------- .../widget/ui/DateEditorDefinePane.java | 18 ++----------- .../widget/ui/FieldEditorDefinePane.java | 19 ++++++++++++++ .../widget/ui/NumberEditorDefinePane.java | 26 ++----------------- .../design/widget/ui/PasswordDefinePane.java | 18 ++----------- .../widget/ui/RadioGroupDefinePane.java | 26 ++----------------- .../design/widget/ui/TextAreaDefinePane.java | 18 ++----------- .../widget/ui/TextFieldEditorDefinePane.java | 18 ++----------- .../ui/TreeComboBoxEditorDefinePane.java | 18 ++----------- .../widget/ui/TreeEditorDefinePane.java | 18 ++----------- 13 files changed, 44 insertions(+), 202 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxDefinePane.java index d7b2631b1..4e0a60fde 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxDefinePane.java @@ -16,8 +16,9 @@ import com.fr.plugin.observer.PluginEvent; import com.fr.plugin.observer.PluginEventListener; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import java.awt.Component; import java.util.ArrayList; import java.util.List; import java.util.Set; diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java index 43aa175c5..ea7a774a4 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/CheckBoxGroupDefinePane.java @@ -68,31 +68,9 @@ public class CheckBoxGroupDefinePane extends FieldEditorDefinePane> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(CheckBoxGroup.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } else { - Component[][] components = new Component[][]{ - new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Font_Size"), SwingConstants.LEFT)} - }; - double[] rowSize = {P}; - double[] columnSize = {P, F}; - int[][] rowCount = {{1, 1}}; - extraPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); - } + refreshExtraAdvancedPane(CheckBoxGroup.class); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/ComboBoxDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/ComboBoxDefinePane.java index 8a94c1de2..848341337 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/ComboBoxDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/ComboBoxDefinePane.java @@ -38,23 +38,9 @@ public class ComboBoxDefinePane extends CustomWritableRepeatEditorPane return jPanel; } + @Override protected void refreshExtraAdvancedPane() { - extraPaneList.clear(); - boolean containsExtraPane = false; - Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(ComboBox.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } + refreshExtraAdvancedPane(ComboBox.class); } protected void populateSubCustomWritableRepeatEditorBean(ComboBox e) { diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java index 00968771e..270377d42 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/ComboCheckBoxDefinePane.java @@ -53,23 +53,9 @@ public class ComboCheckBoxDefinePane extends CustomWritableRepeatEditorPane> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(ComboCheckBox.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } + refreshExtraAdvancedPane(ComboCheckBox.class); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/DateEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/DateEditorDefinePane.java index d7b8491ad..a5b05dbcc 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/DateEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/DateEditorDefinePane.java @@ -84,23 +84,9 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(DateEditor.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } + refreshExtraAdvancedPane(DateEditor.class); } private JPanel createFormatPane(UIComboBox formatComboBox, UILabel sampleLabel){ diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/FieldEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/FieldEditorDefinePane.java index b260e6e8f..a9208c772 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/FieldEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/FieldEditorDefinePane.java @@ -28,6 +28,7 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; +import java.util.Set; public abstract class FieldEditorDefinePane extends AbstractDataModify { protected UICheckBox allowBlankCheckBox; @@ -82,6 +83,24 @@ public abstract class FieldEditorDefinePane extends Abstr // do nothing } + protected void refreshExtraAdvancedPane(Class cls) { + extraPaneList.clear(); + boolean containsExtraPane = false; + Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); + for (WidgetAdvancedPaneProvider provider : providers) { + if (!provider.accept(cls)) { + continue; + } + insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); + containsExtraPane = true; + } + if (containsExtraPane) { + extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); + for (BasicBeanPane pane : extraPaneList) { + extraPane.add(pane); + } + } + } @Override public void populateBean(T ob) { diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/NumberEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/NumberEditorDefinePane.java index 51749f9a2..8285abbf3 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/NumberEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/NumberEditorDefinePane.java @@ -50,31 +50,9 @@ public class NumberEditorDefinePane extends FieldEditorDefinePane return content; } + @Override protected void refreshExtraAdvancedPane() { - extraPaneList.clear(); - boolean containsExtraPane = false; - Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(NumberEditor.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } else { - Component[][] components = new Component[][]{ - new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Font_Size"), SwingConstants.LEFT)} - }; - double[] rowSize = {P}; - double[] columnSize = {P, F}; - int[][] rowCount = {{1, 1}}; - extraPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); - } + refreshExtraAdvancedPane(NumberEditor.class); } public JPanel setValidatePane() { diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/PasswordDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/PasswordDefinePane.java index d86bdc44b..c3119a65f 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/PasswordDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/PasswordDefinePane.java @@ -23,22 +23,8 @@ public class PasswordDefinePane extends TextFieldEditorDefinePane { return new RegFieldPane(RegPane.PASSWORD_REG_TYPE); } + @Override protected void refreshExtraAdvancedPane() { - extraPaneList.clear(); - boolean containsExtraPane = false; - Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(Password.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } + refreshExtraAdvancedPane(Password.class); } } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/RadioGroupDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/RadioGroupDefinePane.java index fa99fb4cc..22f7a31d5 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/RadioGroupDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/RadioGroupDefinePane.java @@ -47,31 +47,9 @@ public class RadioGroupDefinePane extends FieldEditorDefinePane { return content; } + @Override protected void refreshExtraAdvancedPane() { - extraPaneList.clear(); - boolean containsExtraPane = false; - Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(RadioGroup.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } else { - Component[][] components = new Component[][]{ - new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Font_Size"), SwingConstants.LEFT)} - }; - double[] rowSize = {P}; - double[] columnSize = {P, F}; - int[][] rowCount = {{1, 1}}; - extraPane = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); - } + refreshExtraAdvancedPane(RadioGroup.class); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/TextAreaDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/TextAreaDefinePane.java index 87c38ef55..00969b1e7 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/TextAreaDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/TextAreaDefinePane.java @@ -24,22 +24,8 @@ public class TextAreaDefinePane extends TextFieldEditorDefinePane { return new RegFieldPane(RegPane.TEXTAREA_REG_TYPE); } + @Override protected void refreshExtraAdvancedPane() { - extraPaneList.clear(); - boolean containsExtraPane = false; - Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(TextArea.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } + refreshExtraAdvancedPane(TextArea.class); } } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/TextFieldEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/TextFieldEditorDefinePane.java index 37aeddd8c..abc7a382d 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/TextFieldEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/TextFieldEditorDefinePane.java @@ -74,23 +74,9 @@ public class TextFieldEditorDefinePane extends FieldEditorDefinePane return regPane; } + @Override protected void refreshExtraAdvancedPane() { - extraPaneList.clear(); - boolean containsExtraPane = false; - Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(TextEditor.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } + refreshExtraAdvancedPane(TextEditor.class); } protected RegFieldPane createRegPane() { diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java index 90264d707..54bf00a38 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/TreeComboBoxEditorDefinePane.java @@ -64,23 +64,9 @@ public class TreeComboBoxEditorDefinePane extends CustomWritableRepeatEditorPane return jPanel; } + @Override protected void refreshExtraAdvancedPane() { - extraPaneList.clear(); - boolean containsExtraPane = false; - Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(TreeComboBoxEditor.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } + refreshExtraAdvancedPane(TreeComboBoxEditor.class); } diff --git a/designer-realize/src/main/java/com/fr/design/widget/ui/TreeEditorDefinePane.java b/designer-realize/src/main/java/com/fr/design/widget/ui/TreeEditorDefinePane.java index 7e662de6a..1abc355f9 100644 --- a/designer-realize/src/main/java/com/fr/design/widget/ui/TreeEditorDefinePane.java +++ b/designer-realize/src/main/java/com/fr/design/widget/ui/TreeEditorDefinePane.java @@ -90,23 +90,9 @@ public class TreeEditorDefinePane extends FieldEditorDefinePane { return contentPane; } + @Override protected void refreshExtraAdvancedPane() { - extraPaneList.clear(); - boolean containsExtraPane = false; - Set> providers = ExtraDesignClassManager.getInstance().getArray(WidgetAdvancedPaneProvider.XML_TAG); - for (WidgetAdvancedPaneProvider provider : providers) { - if (!provider.accept(TreeEditor.class)) { - continue; - } - insertShortCut(provider.getInsertPosition(extraPaneList.size()), provider.createExtraAdvancedPane()); - containsExtraPane = true; - } - if (containsExtraPane) { - extraPane = FRGUIPaneFactory.createYBoxEmptyBorderPane(); - for (BasicBeanPane pane : extraPaneList) { - extraPane.add(pane); - } - } + refreshExtraAdvancedPane(TreeEditor.class); } protected JPanel setThirdContentPane() { From b230f5ad1c6b2ca2f38ecce8d11e8932e721e847 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 15 Mar 2023 13:57:46 +0800 Subject: [PATCH 03/70] =?UTF-8?q?REPORT-91743=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E9=80=9A=E8=BF=87=E5=85=B3=E9=97=AD=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?A=E7=9A=84=E6=96=B9=E5=BC=8F=E8=A7=A6=E5=8F=91=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=EF=BC=8C=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E8=BF=98=E6=98=AF=E6=A8=A1=E6=9D=BFA?= =?UTF-8?q?=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/file/MultiTemplateTabPane.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java index b506dd81c..1283c1ec8 100644 --- a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java @@ -1171,6 +1171,10 @@ public class MultiTemplateTabPane extends JComponent { return; } } + //参考CloseCurrentTemplateAction,在closeFormat与closeSpecifiedTemplate之前要先设定isCloseCurrent,这样关闭之后才会自动切换tab + if (checkCurrentClose(template)) { + setIsCloseCurrent(true); + } closeFormat(template); closeSpecifiedTemplate(template); DesignerContext.getDesignerFrame().getContentFrame().repaint(); @@ -1204,6 +1208,11 @@ public class MultiTemplateTabPane extends JComponent { } + private boolean checkCurrentClose(JTemplate template) { + JTemplate currentTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + return currentTemplate != null && ComparatorUtils.equals(template.getPath(), currentTemplate.getPath()); + } + private class MultiTemplateTabMouseMotionListener implements MouseMotionListener { /** * 鼠标拖拽 From e099b5f3e0c7ad90cf3d3a40470b9ecb5b1dbdfd Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 15 Mar 2023 14:05:20 +0800 Subject: [PATCH 04/70] =?UTF-8?q?REPORT-91743=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E9=80=9A=E8=BF=87=E5=85=B3=E9=97=AD=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?A=E7=9A=84=E6=96=B9=E5=BC=8F=E8=A7=A6=E5=8F=91=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=EF=BC=8C=E8=AE=BE=E8=AE=A1=E5=99=A8=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E8=BF=98=E6=98=AF=E6=A8=A1=E6=9D=BFA?= =?UTF-8?q?=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/file/MultiTemplateTabPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java index 1283c1ec8..877689bad 100644 --- a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java @@ -1210,7 +1210,7 @@ public class MultiTemplateTabPane extends JComponent { private boolean checkCurrentClose(JTemplate template) { JTemplate currentTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - return currentTemplate != null && ComparatorUtils.equals(template.getPath(), currentTemplate.getPath()); + return JTemplate.isValid(currentTemplate) && ComparatorUtils.equals(template.getPath(), currentTemplate.getPath()); } private class MultiTemplateTabMouseMotionListener implements MouseMotionListener { From 2acc1cc5e3b41a8560aa0c96830500631ff7706e Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Thu, 16 Mar 2023 16:02:04 +0800 Subject: [PATCH 05/70] =?UTF-8?q?REPORT-91657=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E5=8D=95=E5=85=83=E6=A0=BC=E5=B1=9E=E6=80=A7-?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E9=9D=A2=E6=9D=BF=E6=96=87=E6=9C=AC=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=88=AA=E6=96=AD=20=E3=80=90=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0=E3=80=91=E4=B8=8D=E5=90=8C=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=95=BF=E5=BA=A6=E4=B8=8D=E5=90=8C=20?= =?UTF-8?q?=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E9=9D=A2=E6=9D=BF=E6=B0=B4=E5=B9=B3=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=9E=82=E7=9B=B4=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/cell/settingpane/CellOtherSetPane.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 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 e4cfd442d..9879ac53a 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 @@ -48,7 +48,6 @@ import java.awt.CardLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; -import java.awt.FlowLayout; import java.awt.Insets; import java.awt.Rectangle; import java.awt.event.ItemEvent; @@ -169,7 +168,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane { groupsPane = new CellDesensitizationGroupsPane(this); - JPanel contentPane = FRGUIPaneFactory.createVerticalFlowLayout_F_Pane(true, VerticalFlowLayout.TOP, 0, 0, true); + JPanel contentPane = FRGUIPaneFactory.createVerticalFlowLayout_F_Pane(true, VerticalFlowLayout.TOP, 0, 10, true); contentPane.add(scopePane); contentPane.add(hyperlink); contentPane.add(groupsPane); @@ -195,10 +194,10 @@ public class CellOtherSetPane extends AbstractCellAttrPane { } JPanel head = new JPanel(); - head.setLayout(new FlowLayout(FlowLayout.LEFT)); - head.add(scopeLabel); - head.add(exportButton); - head.add(previewAndExportButton); + head.setLayout(new BorderLayout()); + head.add(scopeLabel, BorderLayout.NORTH); + head.add(exportButton, BorderLayout.CENTER); + head.add(previewAndExportButton, BorderLayout.SOUTH); return head; } From 0b33195d1876add5a566a626b48ea336f4bdeddd Mon Sep 17 00:00:00 2001 From: wxr257486 Date: Thu, 16 Mar 2023 19:00:13 +0800 Subject: [PATCH 06/70] =?UTF-8?q?REPORT-89253=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=9B=BF=E6=8D=A2=E9=AB=98=E6=B8=85svg=E5=9B=BE?= =?UTF-8?q?=E6=A0=87-=E7=AC=AC1=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/actions/edit/CopyAction.java | 2 +- .../com/fr/design/actions/edit/CutAction.java | 2 +- .../fr/design/actions/edit/PasteAction.java | 2 +- .../fr/design/actions/file/DelFileAction.java | 2 +- .../fr/design/actions/file/LocateAction.java | 2 +- .../fr/design/actions/file/RenameAction.java | 2 +- .../com/fr/design/constants/UIConstants.java | 49 ++++++++++-------- .../design/data/BasicTableDataTreePane.java | 7 +-- .../datapane/TableDataCreatorProducer.java | 28 +++++----- .../datapane/TableDataNameObjectCreator.java | 12 +++-- .../design/data/datapane/TableDataTree.java | 11 ++-- .../data/datapane/TableDataTreePane.java | 14 ++--- .../search/pane/TreeSearchToolbarPane.java | 4 +- .../MultiResultTableDataWrapperHelper.java | 7 +-- .../wrapper/ServerTableDataWrapper.java | 16 +++--- .../wrapper/StoreProcedureDataWrapper.java | 3 +- .../wrapper/StoreProcedureNameWrapper.java | 3 +- .../tabledata/wrapper/TableDataFactory.java | 18 +++---- .../wrapper/TemplateTableDataWrapper.java | 6 ++- .../fr/design/file/MultiTemplateTabPane.java | 7 +-- .../controlpane/AbstractNameableCreator.java | 7 +-- .../icontainer/UIEastResizableContainer.java | 2 +- .../gui/icontainer/UIResizableContainer.java | 17 +++--- .../com/fr/design/icon/IconPathConstants.java | 8 +-- .../java/com/fr/design/icon/WarningIcon.java | 17 +++--- .../DesignerFrameFileDealerPane.java | 12 ++--- .../mainframe/EastRegionContainerPane.java | 2 +- .../com/fr/design/mainframe/JTemplate.java | 3 +- .../mainframe/ToolBarNewTemplatePane.java | 7 +-- .../design/mainframe/check/CheckButton.java | 3 +- .../pane/TemplateTreeSearchToolbarPane.java | 4 +- .../ui/NotificationCenterPane.java | 7 +-- .../com/fr/design/preview/FormPreview.java | 4 +- .../com/fr/design/preview/MobilePreview.java | 4 +- .../com/fr/design/preview/PagePreview.java | 4 +- .../com/fr/design/preview/ViewPreview.java | 4 +- .../com/fr/design/preview/WritePreview.java | 4 +- .../com/fr/design/images/control/dot-line.png | Bin 106 -> 0 bytes .../com/fr/design/mainframe/guide/guide.png | Bin 1470 -> 0 bytes .../notification/ui/notificationCenter.png | Bin 347 -> 0 bytes .../notification/ui/notificationCenterDot.png | Bin 491 -> 0 bytes .../add_polysheet_normal.svg | 0 .../design/standard/add_worksheet_normal.svg | 17 ++++++ .../fr/design/standard/addicon/add_press.svg | 4 ++ .../fr/design/standard/addicon/addicon.svg | 3 ++ .../standard/addpopup/addPopup_disabled.svg | 16 ++++++ .../standard/addpopup/addPopup_normal.svg | 14 +++++ .../com/fr/design/standard/alpha_fine.svg | 3 ++ .../batchesdoff/batch_esd_off_disabled.svg | 5 ++ .../batchesdoff/batch_esd_off_normal.svg | 3 ++ .../batchesdon/batch_esd_on_disabled.svg | 5 ++ .../batchesdon/batch_esd_on_normal.svg | 3 ++ .../fr/design/standard/bold/bold_normal.svg | 7 +++ .../fr/design/standard/bold/bold_selected.svg | 7 +++ .../standard/cellstyle/h_center_normal.svg | 7 +++ .../standard/cellstyle/h_center_selected.svg | 7 +++ .../standard/cellstyle/h_left_normal.svg | 7 +++ .../standard/cellstyle/h_left_selected.svg | 7 +++ .../standard/cellstyle/h_right_normal.svg | 7 +++ .../standard/cellstyle/h_right_selected.svg | 7 +++ .../fr/design/standard/class_table_data.svg | 4 ++ .../com/fr/design/standard/clear_normal.svg | 10 ++++ .../com/fr/design/standard/collapse-all.svg | 4 ++ .../fr/design/standard/connection_normal.svg | 11 ++++ .../fr/design/standard/copy/copy_disabled.svg | 7 +++ .../fr/design/standard/copy/copy_normal.svg | 10 ++++ .../fr/design/standard/cut/cut_disabled.svg | 9 ++++ .../com/fr/design/standard/cut/cut_normal.svg | 10 ++++ .../com/fr/design/standard/data_table.svg | 3 ++ .../com/fr/design/standard/database.svg | 3 ++ .../com/fr/design/standard/dot_line.svg | 3 ++ .../fr/design/standard/drag/left_normal.svg | 3 ++ .../fr/design/standard/drag/left_pressed.svg | 3 ++ .../fr/design/standard/drag/right_normal.svg | 3 ++ .../fr/design/standard/drag/right_pressed.svg | 3 ++ .../standard/editdataset/edit_disabled.svg | 8 +++ .../standard/editdataset/edit_normal.svg | 8 +++ .../com/fr/design/standard/field.svg | 5 ++ .../resources/com/fr/design/standard/file.svg | 5 ++ .../fr/design/standard/font_miss_check.svg | 6 +++ .../formatbrush/formatBrush_normal.svg | 9 ++++ .../com/fr/design/standard/guide.svg | 4 ++ .../design/standard/italic/italic_normal.svg | 9 ++++ .../standard/italic/italic_selected.svg | 9 ++++ .../fr/design/standard/list/list_normal.svg | 7 +++ .../fr/design/standard/list/list_pressed.svg | 4 ++ .../com/fr/design/standard/locate.svg | 15 ++++++ .../com/fr/design/standard/multi.svg | 11 ++++ .../newfolder/new_folder_disabled.svg | 8 +++ .../standard/newfolder/new_folder_normal.svg | 8 +++ .../nextpage}/next_page_disabled.svg | 0 .../nextpage}/next_page_normal.svg | 0 .../notification/notification_dot.svg | 4 ++ .../notification/notification_normal.svg | 3 ++ .../design/standard/paste/paste_disabled.svg | 10 ++++ .../fr/design/standard/paste/paste_normal.svg | 11 ++++ .../fr/design/standard/polysheet_normal.svg | 9 ++++ .../prepage}/pre_page_disabled.svg | 0 .../prepage}/pre_page_normal.svg | 0 .../com/fr/design/standard/preview/anab24.svg | 13 +++++ .../com/fr/design/standard/preview/anas.svg | 17 ++++++ .../standard/preview/developer_preview.svg | 13 +++++ .../standard/preview/developer_preview24.svg | 14 +++++ .../com/fr/design/standard/preview/mobile.svg | 19 +++++++ .../fr/design/standard/preview/mobileb24.svg | 19 +++++++ .../fr/design/standard/preview/pageb24.svg | 12 +++++ .../com/fr/design/standard/preview/pages.svg | 16 ++++++ .../com/fr/design/standard/preview/run24.svg | 12 +++++ .../com/fr/design/standard/preview/runs.svg | 16 ++++++ .../fr/design/standard/preview/writeb24.svg | 16 ++++++ .../com/fr/design/standard/preview/writes.svg | 20 +++++++ .../previewdateset/preview_disabled.svg | 7 +++ .../previewdateset/preview_normal.svg | 7 +++ .../propertiestab/authorityedit_disabled.svg | 0 .../propertiestab/authorityedit_normal.svg | 0 .../propertiestab/authorityedit_selected.svg | 0 .../propertiestab/cellattr_disabled.svg | 0 .../propertiestab/cellattr_normal.svg | 0 .../propertiestab/cellattr_selected.svg | 0 .../propertiestab/cellelement_disabled.svg | 0 .../propertiestab/cellelement_normal.svg | 0 .../propertiestab/cellelement_selected.svg | 0 .../propertiestab/conditionattr_disabled.svg | 0 .../propertiestab/conditionattr_normal.svg | 0 .../propertiestab/conditionattr_selected.svg | 0 .../configuredroles_disabled.svg | 0 .../propertiestab/configuredroles_normal.svg | 0 .../configuredroles_selected.svg | 0 .../propertiestab/floatelement_disabled.svg | 0 .../propertiestab/floatelement_normal.svg | 0 .../propertiestab/floatelement_selected.svg | 0 .../propertiestab/hyperlink_disabled.svg | 0 .../propertiestab/hyperlink_normal.svg | 0 .../propertiestab/hyperlink_selected.svg | 0 .../propertiestab/widgetlib_disabled.svg | 0 .../propertiestab/widgetlib_normal.svg | 0 .../propertiestab/widgetlib_selected.svg | 0 .../propertiestab/widgetsettings_disabled.svg | 0 .../propertiestab/widgetsettings_normal.svg | 0 .../propertiestab/widgetsettings_selected.svg | 0 .../fr/design/standard/redo/redo_disabled.svg | 7 +++ .../fr/design/standard/redo/redo_normal.svg | 7 +++ .../standard/{refresh => }/refresh_normal.svg | 0 .../standard/remove/remove_disabled.svg | 11 ++++ .../design/standard/remove/remove_normal.svg | 9 ++++ .../fr/design/standard/remove_red_normal.svg | 7 +++ .../standard/removefile/remove_disabled.svg | 7 +++ .../standard/removefile/remove_normal.svg | 7 +++ .../standard/rename/rename_disabled.svg | 7 +++ .../design/standard/rename/rename_normal.svg | 7 +++ .../fr/design/standard/save/save_disabled.svg | 12 +++++ .../fr/design/standard/save/save_normal.svg | 12 +++++ .../com/fr/design/standard/search_normal.svg | 7 +++ .../fr/design/standard/server_database.svg | 7 +++ .../fr/design/standard/smallsearch_normal.svg | 3 ++ .../fr/design/standard/store_procedure.svg | 8 +++ .../com/fr/design/standard/template_theme.svg | 4 ++ .../resources/com/fr/design/standard/tree.svg | 14 +++++ .../standard/triangle.arrow/down_hover.svg | 3 ++ .../standard/triangle.arrow/down_normal.svg | 3 ++ .../standard/triangle.arrow/up_hover.svg | 3 ++ .../standard/triangle.arrow/up_normal.svg | 3 ++ .../fr/design/standard/uimode/edit_normal.svg | 3 ++ .../design/standard/uimode/edit_pressed.svg | 4 ++ .../fr/design/standard/uimode/hide_normal.svg | 3 ++ .../design/standard/uimode/hide_pressed.svg | 4 ++ .../fr/design/standard/uimode/view_normal.svg | 0 .../design/standard/uimode/view_pressed.svg | 0 .../standard/underline/underline_normal.svg | 7 +++ .../standard/underline/underline_selected.svg | 7 +++ .../fr/design/standard/undo/undo_disabled.svg | 7 +++ .../fr/design/standard/undo/undo_normal.svg | 7 +++ .../standard/vcslist/vcs_list_disabled.svg | 7 +++ .../standard/vcslist/vcs_list_normal.svg | 7 +++ .../viewfolder/view_folder_disabled.svg | 7 +++ .../viewfolder/view_folder_normal.svg | 7 +++ .../com/fr/design/standard/warning.svg | 9 ++++ .../fr/design/standard/worksheet_normal.svg | 10 ++++ .../designer/beans/actions/CopyAction.java | 2 +- .../designer/beans/actions/CutAction.java | 2 +- .../designer/beans/actions/PasteAction.java | 2 +- .../java/com/fr/design/mainframe/JForm.java | 6 +-- .../fr/design/preview/DeveloperPreview.java | 4 +- .../actions/cell/style/AlignmentAction.java | 6 +-- .../cell/style/ReportFontBoldAction.java | 2 +- .../cell/style/ReportFontItalicAction.java | 2 +- .../cell/style/ReportFontUnderlineAction.java | 2 +- .../design/mainframe/FormatBrushAction.java | 2 +- .../com/fr/design/mainframe/JWorkBook.java | 8 +-- .../fr/design/mainframe/SheetNameTabPane.java | 16 +++--- .../alphafine/component/AlphaFinePane.java | 3 +- .../mainframe/guide/entry/GuideEntryPane.java | 3 +- .../main/java/com/fr/start/MainDesigner.java | 6 +-- 193 files changed, 1008 insertions(+), 170 deletions(-) delete mode 100644 designer-base/src/main/resources/com/fr/design/images/control/dot-line.png delete mode 100644 designer-base/src/main/resources/com/fr/design/mainframe/guide/guide.png delete mode 100644 designer-base/src/main/resources/com/fr/design/notification/ui/notificationCenter.png delete mode 100644 designer-base/src/main/resources/com/fr/design/notification/ui/notificationCenterDot.png rename designer-base/src/main/resources/com/fr/design/{images/sheet => standard}/add_polysheet_normal.svg (100%) create mode 100644 designer-base/src/main/resources/com/fr/design/standard/add_worksheet_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/addicon/add_press.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/addicon/addicon.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/alpha_fine.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/bold/bold_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/bold/bold_selected.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_selected.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_selected.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_right_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_right_selected.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/class_table_data.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/clear_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/collapse-all.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/connection_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/copy/copy_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/copy/copy_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/cut/cut_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/cut/cut_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/data_table.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/database.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/dot_line.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/drag/left_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/drag/left_pressed.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/drag/right_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/drag/right_pressed.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/editdataset/edit_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/editdataset/edit_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/field.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/file.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/font_miss_check.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/formatbrush/formatBrush_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/guide.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/italic/italic_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/italic/italic_selected.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/list/list_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/list/list_pressed.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/locate.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/multi.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/newfolder/new_folder_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/newfolder/new_folder_normal.svg rename designer-base/src/main/resources/com/fr/design/{images/sheet => standard/nextpage}/next_page_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/sheet => standard/nextpage}/next_page_normal.svg (100%) create mode 100644 designer-base/src/main/resources/com/fr/design/standard/notification/notification_dot.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/notification/notification_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/paste/paste_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/paste/paste_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/polysheet_normal.svg rename designer-base/src/main/resources/com/fr/design/{images/sheet => standard/prepage}/pre_page_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/sheet => standard/prepage}/pre_page_normal.svg (100%) create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/anab24.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/anas.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/developer_preview.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/developer_preview24.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/mobile.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/mobileb24.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/pageb24.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/pages.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/run24.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/runs.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/writeb24.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview/writes.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/previewdateset/preview_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/previewdateset/preview_normal.svg rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/authorityedit_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/authorityedit_normal.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/authorityedit_selected.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/cellattr_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/cellattr_normal.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/cellattr_selected.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/cellelement_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/cellelement_normal.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/cellelement_selected.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/conditionattr_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/conditionattr_normal.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/conditionattr_selected.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/configuredroles_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/configuredroles_normal.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/configuredroles_selected.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/floatelement_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/floatelement_normal.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/floatelement_selected.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/hyperlink_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/hyperlink_normal.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/hyperlink_selected.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/widgetlib_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/widgetlib_normal.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/widgetlib_selected.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/widgetsettings_disabled.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/widgetsettings_normal.svg (100%) rename designer-base/src/main/resources/com/fr/design/{images/buttonicon => standard}/propertiestab/widgetsettings_selected.svg (100%) create mode 100644 designer-base/src/main/resources/com/fr/design/standard/redo/redo_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/redo/redo_normal.svg rename designer-base/src/main/resources/com/fr/design/standard/{refresh => }/refresh_normal.svg (100%) create mode 100644 designer-base/src/main/resources/com/fr/design/standard/remove/remove_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/remove/remove_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/remove_red_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/removefile/remove_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/removefile/remove_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/rename/rename_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/rename/rename_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/save/save_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/save/save_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/search_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/server_database.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/smallsearch_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/store_procedure.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/template_theme.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/tree.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/uimode/edit_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/uimode/edit_pressed.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/uimode/hide_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/uimode/hide_pressed.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/uimode/view_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/underline/underline_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/underline/underline_selected.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/undo/undo_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/undo/undo_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/vcslist/vcs_list_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/vcslist/vcs_list_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/viewfolder/view_folder_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/viewfolder/view_folder_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/warning.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/worksheet_normal.svg diff --git a/designer-base/src/main/java/com/fr/design/actions/edit/CopyAction.java b/designer-base/src/main/java/com/fr/design/actions/edit/CopyAction.java index 65f136176..0505a8e14 100644 --- a/designer-base/src/main/java/com/fr/design/actions/edit/CopyAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/edit/CopyAction.java @@ -21,7 +21,7 @@ public class CopyAction extends TemplateComponentAction { this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Copy")); this.setMnemonic('C'); - this.setSmallIcon("/com/fr/design/images/m_edit/copy"); + this.setSmallIcon("/com/fr/design/standard/copy/copy"); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER)); this.setEnabled(!DesignModeContext.isBanCopyAndCut()); } diff --git a/designer-base/src/main/java/com/fr/design/actions/edit/CutAction.java b/designer-base/src/main/java/com/fr/design/actions/edit/CutAction.java index 4da98d733..c15e96227 100644 --- a/designer-base/src/main/java/com/fr/design/actions/edit/CutAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/edit/CutAction.java @@ -25,7 +25,7 @@ public class CutAction extends TemplateComponentAction { this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Cut")); this.setMnemonic('T'); - this.setSmallIcon("/com/fr/design/images/m_edit/cut"); + this.setSmallIcon("/com/fr/design/standard/cut/cut"); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER)); this.setEnabled(!DesignModeContext.isBanCopyAndCut()); } diff --git a/designer-base/src/main/java/com/fr/design/actions/edit/PasteAction.java b/designer-base/src/main/java/com/fr/design/actions/edit/PasteAction.java index 22093acb7..c14fcabf5 100644 --- a/designer-base/src/main/java/com/fr/design/actions/edit/PasteAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/edit/PasteAction.java @@ -24,7 +24,7 @@ public class PasteAction extends TemplateComponentAction { this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_M_Edit_Paste")); this.setMnemonic('P'); - this.setSmallIcon("/com/fr/design/images/m_edit/paste"); + this.setSmallIcon("/com/fr/design/standard/paste/paste"); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, DEFAULT_MODIFIER)); } diff --git a/designer-base/src/main/java/com/fr/design/actions/file/DelFileAction.java b/designer-base/src/main/java/com/fr/design/actions/file/DelFileAction.java index 896c51878..f7851d7af 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/DelFileAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/DelFileAction.java @@ -22,7 +22,7 @@ public class DelFileAction extends UpdateAction { public DelFileAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Remove")); - this.setSmallIcon("/com/fr/design/images/FileDealerPaneIcon/remove"); + this.setSmallIcon("/com/fr/design/standard/remove/remove"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java b/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java index 1b1bb4d32..29c4e9353 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java @@ -28,7 +28,7 @@ public class LocateAction extends UpdateAction { public LocateAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Locate")); - this.setSmallIcon("/com/fr/design/images/FileDealerPaneIcon/locate.png"); + this.setSmallIcon("/com/fr/design/standard/locate.svg"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/actions/file/RenameAction.java b/designer-base/src/main/java/com/fr/design/actions/file/RenameAction.java index c1efc4f5e..842292ce2 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/RenameAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/RenameAction.java @@ -62,7 +62,7 @@ public class RenameAction extends UpdateAction { public RenameAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Rename")); - this.setSmallIcon("/com/fr/design/images/FileDealerPaneIcon/rename"); + this.setSmallIcon("/com/fr/design/standard/rename/rename"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/constants/UIConstants.java b/designer-base/src/main/java/com/fr/design/constants/UIConstants.java index 850a6b5aa..70fb3cd68 100644 --- a/designer-base/src/main/java/com/fr/design/constants/UIConstants.java +++ b/designer-base/src/main/java/com/fr/design/constants/UIConstants.java @@ -5,6 +5,7 @@ package com.fr.design.constants; import com.fr.base.svg.IconUtils; import com.fr.base.svg.SVGIcon; +import com.fr.base.svg.SVGLoader; import com.fr.general.IOUtils; import com.fr.stable.Constants; import com.fr.stable.StringUtils; @@ -161,16 +162,16 @@ public interface UIConstants { public static final BufferedImage DRAG_BAR_RIGHT = IOUtils.readImage("com/fr/design/images/control/barm.png"); public static final BufferedImage DRAG_BAR_LEFT = IOUtils.readImage("com/fr/design/images/control/barl.png"); - public static final BufferedImage DRAG_UP_NORMAL = IOUtils.readImage("com/fr/design/images/control/upnor.png"); - public static final BufferedImage DRAG_UP_PRESS = IOUtils.readImage("com/fr/design/images/control/uppre.png"); - public static final BufferedImage DRAG_DOWN_NORMAL = IOUtils.readImage("com/fr/design/images/control/downnor.png"); - public static final BufferedImage DRAG_DOWN_PRESS = IOUtils.readImage("com/fr/design/images/control/downpre.png"); - public static final BufferedImage DRAG_RIGHT_NORMAL = IOUtils.readImage("com/fr/design/images/control/rightnor.png"); - public static final BufferedImage DRAG_RIGHT_PRESS = IOUtils.readImage("com/fr/design/images/control/rightpre.png"); - public static final BufferedImage DRAG_LEFT_NORMAL = IOUtils.readImage("com/fr/design/images/control/leftnor.png"); - public static final BufferedImage DRAG_LEFT_PRESS = IOUtils.readImage("com/fr/design/images/control/leftpre.png"); + public static final Image DRAG_UP_NORMAL = SVGLoader.load("/com/fr/design/standard/triangle.arrow/up_normal.svg"); + public static final Image DRAG_UP_PRESS = SVGLoader.load("/com/fr/design/standard/triangle.arrow/up_hover.svg"); + public static final Image DRAG_DOWN_NORMAL = SVGLoader.load("/com/fr/design/standard/triangle.arrow/down_normal.svg"); + public static final Image DRAG_DOWN_PRESS = SVGLoader.load("/com/fr/design/standard/triangle.arrow/down_hover.svg"); + public static final Image DRAG_RIGHT_NORMAL = SVGLoader.load("/com/fr/design/standard/drag/right_normal.svg"); + public static final Image DRAG_RIGHT_PRESS = SVGLoader.load("/com/fr/design/standard/drag/right_pressed.svg"); + public static final Image DRAG_LEFT_NORMAL = SVGLoader.load("/com/fr/design/standard/drag/left_normal.svg"); + public static final Image DRAG_LEFT_PRESS = SVGLoader.load("/com/fr/design/standard/drag/left_pressed.svg"); public static final BufferedImage DRAG_DOT = IOUtils.readImage("com/fr/design/images/control/dot.png"); - public static final BufferedImage DRAG_LINE = IOUtils.readImage("com/fr/design/images/control/dot-line.png"); + public static final Image DRAG_LINE = SVGLoader.load("/com/fr/design/standard/dot_line.svg"); public static final BufferedImage ACCESSIBLE_EDITOR_DOT = IOUtils.readImage("com/fr/design/images/control/dot.png"); public static final BufferedImage DRAG_DOT_VERTICAL = IOUtils.readImage("com/fr/design/images/control/dotv.png"); public static final BufferedImage POP_BUTTON_DOWN = IOUtils.readImage("com/fr/design/images/buttonicon/popdownarrow.png"); @@ -187,20 +188,22 @@ public interface UIConstants { public static final Icon CHOOSEN_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/select_item.png"); public static final Icon PRE_WIDGET_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/prewidget.png"); public static final Icon PRE_WIDGET_NORMAL_ICON = IconUtils.readIcon("com/fr/design/images/buttonicon/prewidget"); - public static final Icon EDIT_NORMAL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/editn.png"); - public static final Icon EDIT_PRESSED_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/editp.png"); - public static final Icon HIDE_NORMAL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/hiden.png"); - public static final Icon HIDE_PRESSED_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/hidep.png"); - public static final Icon VIEW_NORMAL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/viewn.png"); - public static final Icon VIEW_PRESSED_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/viewp.png"); - public static final Icon RUN_BIG_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/run24.png"); - public static final Icon RUN_SMALL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/runs.png"); - public static final Icon PAGE_BIG_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/pageb24.png"); - public static final Icon WRITE_BIG_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/writeb24.png"); - public static final Icon ANA_BIG_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/anab24.png"); - public static final Icon PAGE_SMALL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/pages.png"); - public static final Icon WRITE_SMALL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/writes.png"); - public static final Icon ANA_SMALL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/anas.png"); + public static final Icon EDIT_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit_normal.svg"); + public static final Icon EDIT_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit_pressed.svg"); + public static final Icon HIDE_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide_normal.svg"); + public static final Icon HIDE_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide_pressed.svg"); + public static final Icon VIEW_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/view_normal.svg"); + public static final Icon VIEW_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/view_pressed.svg"); + + public static final Icon RUN_BIG_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/run24.svg"); + public static final Icon RUN_SMALL_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/runs.svg"); + public static final Icon PAGE_BIG_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/pageb24.svg"); + public static final Icon WRITE_BIG_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/writeb24.svg"); + public static final Icon ANA_BIG_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/anab24.svg"); + public static final Icon PAGE_SMALL_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/pages.svg"); + public static final Icon WRITE_SMALL_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/writes.svg"); + public static final Icon ANA_SMALL_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/anas.svg"); + public static final Icon REFRESH_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/refresh.png"); public static final Icon FONT_ICON = IOUtils.readIcon("/com/fr/design/images/gui/color/foreground.png"); public static final Icon AUTO_FONT_ICON = IOUtils.readIcon("/com/fr/design/images/gui/color/autoForeground.png"); diff --git a/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java b/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java index b3c090d54..f0ec63829 100644 --- a/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java +++ b/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java @@ -2,6 +2,7 @@ package com.fr.design.data; import com.fr.base.BaseUtils; import com.fr.base.TableData; +import com.fr.base.svg.IconUtils; import com.fr.data.MultiResultTableData; import com.fr.data.TableDataSource; import com.fr.design.DesignModelAdapter; @@ -114,7 +115,7 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp */ @Override public Icon getViewIcon() { - return BaseUtils.readIcon(IconPathConstants.DS_ICON_PATH); + return IconUtils.readIcon(IconPathConstants.DS_ICON_PATH); } /** @@ -424,7 +425,7 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp public PreviewTableDataAction(TableDataTree dataTree) { this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview")); this.setMnemonic('p'); - this.setSmallIcon("/com/fr/design/images/m_file/preview"); + this.setSmallIcon("/com/fr/design/standard/previewdateset/preview"); this.dataTree = dataTree; } @@ -463,7 +464,7 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp public ConnectionTableAction() { this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Server_Define_Data_Connection")); this.setMnemonic('D'); - this.setSmallIcon("/com/fr/design/images/m_web/connection"); + this.setSmallIcon("/com/fr/design/standard/connection_normal.svg", false); } @Override diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java index 51bd8b49b..09ddcfd64 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java @@ -33,33 +33,33 @@ public class TableDataCreatorProducer { public TableDataNameObjectCreator[] createReportTableDataCreator() { TableDataNameObjectCreator dataBase = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Database_Query"), "ds", - "/com/fr/design/images/data/database.png", DBTableData.class, DBTableDataPane.class); + "/com/fr/design/standard/database.svg", DBTableData.class, DBTableDataPane.class); TableDataNameObjectCreator ds_Class = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Class"), "Class", - "/com/fr/design/images/data/source/classTableData.png", ClassTableData.class, ClassTableDataPane.class); + "/com/fr/design/standard/class_table_data.svg", ClassTableData.class, ClassTableDataPane.class); TableDataNameObjectCreator table = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Embedded"), "Embedded", - "/com/fr/design/images/data/dataTable.png", EmbeddedTableData.class, EmbeddedTableDataPane.class); + "/com/fr/design/standard/data_table.svg", EmbeddedTableData.class, EmbeddedTableDataPane.class); TableDataNameObjectCreator multiTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Relation"), "Multi", - "/com/fr/design/images/data/multi.png", ConditionTableData.class, MultiTDTableDataPane.class) { + "/com/fr/design/standard/multi.svg", ConditionTableData.class, MultiTDTableDataPane.class) { public boolean isNeedParameterWhenPopulateJControlPane() { return true; } }; TableDataNameObjectCreator fileTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_File"), "File", - "/com/fr/design/images/data/file.png", FileTableData.class, FileTableDataSmallHeightPane.class); + "/com/fr/design/standard/file.svg", FileTableData.class, FileTableDataSmallHeightPane.class); TableDataNameObjectCreator treeTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Tree"), "Tree", - "/com/fr/design/images/data/tree.png", RecursionTableData.class, TreeTableDataPane.class) { + "/com/fr/design/standard/tree.svg", RecursionTableData.class, TreeTableDataPane.class) { public boolean isNeedParameterWhenPopulateJControlPane() { return true; } }; TableDataNameObjectCreator storeProcedure = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Stored_Procedure"), "Proc", - "/com/fr/design/images/data/store_procedure.png", + "/com/fr/design/standard/store_procedure.svg", StoreProcedure.class, ProcedureDataPane.class) { @Override public boolean shouldInsertSeparator() { @@ -72,33 +72,33 @@ public class TableDataCreatorProducer { public TableDataNameObjectCreator[] createServerTableDataCreator() { TableDataNameObjectCreator dataBase = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Database_Query"), - "/com/fr/design/images/data/dock/serverdatabase.png", DBTableData.class, + "/com/fr/design/standard/server_database.svg", DBTableData.class, DBTableDataPane.class); TableDataNameObjectCreator ds_Class = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Class"), - "/com/fr/design/images/data/dock/serverclasstabledata.png", ClassTableData.class, + "/com/fr/design/standard/class_table_data.svg", ClassTableData.class, ClassTableDataPane.class); TableDataNameObjectCreator table = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Embedded"), - "/com/fr/design/images/data/dock/serverdatatable.png", EmbeddedTableData.class, + "/com/fr/design/standard/data_table.svg", EmbeddedTableData.class, EmbeddedTableDataPane.class); TableDataNameObjectCreator fileTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_File"), - "/com/fr/design/images/data/file.png", FileTableData.class, + "/com/fr/design/standard/file.svg", FileTableData.class, FileTableDataSmallPane.class); TableDataNameObjectCreator treeTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Tree"), - "/com/fr/design/images/data/tree.png", + "/com/fr/design/standard/tree.svg", RecursionTableData.class, GlobalTreeTableDataPane.class) { public boolean isNeedParameterWhenPopulateJControlPane() { return true; } }; TableDataNameObjectCreator multiTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Relation"), - "/com/fr/design/images/data/multi.png", + "/com/fr/design/standard/multi.svg", ConditionTableData.class, GlobalMultiTDTableDataPane.class) { public boolean isNeedParameterWhenPopulateJControlPane() { return true; } }; TableDataNameObjectCreator storeProcedure = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Stored_Procedure"), - "/com/fr/design/images/data/store_procedure.png", + "/com/fr/design/standard/store_procedure.svg", StoreProcedure.class, ProcedureDataPane.class) { @Override public boolean shouldInsertSeparator() { diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java index 7dedc9f47..0ee459915 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java @@ -1,6 +1,8 @@ package com.fr.design.data.datapane; import com.fr.base.BaseUtils; +import com.fr.base.svg.IconUtils; +import com.fr.base.svg.SVGLoader; import com.fr.data.impl.DBTableData; import com.fr.design.actions.tabledata.TableDataAction; import com.fr.design.beans.BasicBeanPane; @@ -39,7 +41,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { public TableDataNameObjectCreator(TableDataAction action) { super(action.getDisplayName(), action.getIconPath(), action.getTableDataClass(), action.getUpdateTableDataPaneClass()); this.iconPath = action.getIconPath(); - menuImage = BaseUtils.readImage(iconPath); + menuImage = SVGLoader.load(iconPath); isNeedInsertSeparator = action.isNeedInsertSeparator(); prefix = action.getPrefix(); } @@ -54,7 +56,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { super(menuName, iconPath, clazz, updatePane); if (iconPath != null) { this.iconPath = iconPath; - menuImage = BaseUtils.readImage(iconPath); + menuImage = SVGLoader.load(iconPath); } } @@ -62,7 +64,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { super(menuName, iconPath, clazz, updatePane); if (iconPath != null) { this.iconPath = iconPath; - menuImage = BaseUtils.readImage(iconPath); + menuImage = SVGLoader.load(iconPath); } this.prefix = prefix; } @@ -71,7 +73,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { super(menuName, iconPath, clazz, clazz4Init, updatePane); if (iconPath != null) { this.iconPath = iconPath; - menuImage = BaseUtils.readImage(iconPath); + menuImage = SVGLoader.load(iconPath); } } @@ -79,7 +81,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator { super(menuName, iconPath, clazz, clazz4Init, updatePane); if (iconPath != null) { this.iconPath = iconPath; - menuImage = BaseUtils.readImage(iconPath); + menuImage = SVGLoader.load(iconPath); } this.prefix = prefix; } diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTree.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTree.java index e8ac19fd0..e220b9d01 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTree.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTree.java @@ -1,6 +1,7 @@ package com.fr.design.data.datapane; import com.fr.base.BaseUtils; +import com.fr.base.svg.IconUtils; import com.fr.data.MultiResultTableData; import com.fr.design.constants.UIConstants; import com.fr.design.data.datapane.management.search.TableDataTreeSearchManager; @@ -55,7 +56,7 @@ public class TableDataTree extends UserObjectRefreshJTree { Object userObj = treeNode.getUserObject(); if (userObj instanceof String) { // p:这个是column field. - this.setIcon(BaseUtils.readIcon("com/fr/design/images/data/field.png")); + this.setIcon(IconUtils.readIcon("/com/fr/design/standard/field.svg")); this.setText((String) userObj); } else if (userObj instanceof NameObject) { NameObject nameObject = (NameObject) userObj; @@ -66,14 +67,14 @@ public class TableDataTree extends UserObjectRefreshJTree { } else if (nameObject.getObject() instanceof Integer) { int num = (Integer) nameObject.getObject(); if (num == TableDataSourceOP.SERVER_TABLE_DATA) { - this.setIcon(BaseUtils.readIcon(IconPathConstants.STD_SHOW_ICON_PATH)); + this.setIcon(IconUtils.readIcon(IconPathConstants.STD_SHOW_ICON_PATH)); } else if (num == TableDataSourceOP.STORE_PRECEDURE_DATA) { - this.setIcon(BaseUtils.readIcon(IconPathConstants.SP_SHOW_ICON_PATH)); + this.setIcon(IconUtils.readIcon(IconPathConstants.SP_SHOW_ICON_PATH)); } else { - this.setIcon(BaseUtils.readIcon(IconPathConstants.DS_QUERY_ICON_PATH)); + this.setIcon(IconUtils.readIcon(IconPathConstants.DS_QUERY_ICON_PATH)); } } else { - this.setIcon(BaseUtils.readIcon("/com/fr/design/images/data/store_procedure.png")); + this.setIcon(IconUtils.readIcon("/com/fr/design/images/data/store_procedure.png")); } } else if (userObj == PENDING) { this.setIcon(null); diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java index 880cccd2d..e451ac35d 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java @@ -229,7 +229,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { private TreeSearchToolbarPane initToolBarPane() { // toolbar addMenuDef = new MenuDef(Toolkit.i18nText("Fine-Design_Basic_Action_Add")); - addMenuDef.setIconPath("/com/fr/design/images/control/addPopup"); + addMenuDef.setIconPath("/com/fr/design/standard/addpopup/addPopup"); createAddMenuDef(); // 创建插件监听 createPluginListener(); @@ -895,7 +895,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { @Override public String getIconResource() { - return "/com/fr/design/images/control/batch_esd_on"; + return "/com/fr/design/standard/batchesdon/batch_esd_on"; } @Override @@ -942,7 +942,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { @Override public String getIconResource() { - return "/com/fr/design/images/control/batch_esd_off"; + return "/com/fr/design/standard/batchesdoff/batch_esd_off"; } @Override @@ -1036,7 +1036,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { public EditAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Edit")); this.setMnemonic('E'); - this.setSmallIcon("/com/fr/design/images/control/edit"); + this.setSmallIcon("/com/fr/design/standard/editdataset/edit"); } @Override @@ -1101,7 +1101,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { public RemoveAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Remove")); this.setMnemonic('R'); - this.setSmallIcon("/com/fr/design/images/control/remove"); + this.setSmallIcon("/com/fr/design/standard/remove/remove"); } @Override @@ -1177,7 +1177,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { public CopyAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Copy")); this.setMnemonic('C'); - this.setSmallIcon("/com/fr/design/images/m_edit/copy"); + this.setSmallIcon("/com/fr/design/standard/copy/copy"); } @Override @@ -1227,7 +1227,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { public SwitchAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Search")); this.setMnemonic('S'); - this.setSmallIcon("/com/fr/design/images/data/search"); + this.setSmallIcon("/com/fr/design/standard/search_normal.svg", false); } @Override diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java index 6752fc1f1..da1d15b8f 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java @@ -103,7 +103,7 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha searchPane.setBorder(BorderFactory.createLineBorder(UIConstants.TOOLBAR_BORDER_COLOR)); searchPane.setBackground(Color.WHITE); // 左侧搜索图标 - UILabel searchLabel = new UILabel(IconUtils.readIcon("/com/fr/design/images/data/search")); + UILabel searchLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/search_normal.svg")); searchLabel.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0)); searchLabel.addMouseListener(new MouseAdapter() { @Override @@ -149,7 +149,7 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha }); this.searchTextField.addKeyListener(enterPressed); // 右侧返回图标 - UILabel returnLabel = new UILabel(IconUtils.readIcon("/com/fr/design/images/data/clear")); + UILabel returnLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/clear_normal.svg")); returnLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Tree_Search_Return")); returnLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 11)); returnLabel.addMouseListener(new MouseAdapter() { diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/MultiResultTableDataWrapperHelper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/MultiResultTableDataWrapperHelper.java index 91ca35d7f..e6c566c7c 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/MultiResultTableDataWrapperHelper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/MultiResultTableDataWrapperHelper.java @@ -1,6 +1,7 @@ package com.fr.design.data.tabledata.wrapper; import com.fr.base.TableData; +import com.fr.base.svg.IconUtils; import com.fr.design.data.datapane.TableDataCreatorProducer; import com.fr.design.data.datapane.TableDataNameObjectCreator; import com.fr.design.fun.ServerTableDataDefineProvider; @@ -25,7 +26,7 @@ import java.util.Map; */ class MultiResultTableDataWrapperHelper { private static final Map, Icon> TABLE_DATA_ICON_PATHS = new HashMap<>(); - private static final String DEFAULT_MULTI_RESULT_TD_ICON = "/com/fr/design/images/data/multi.png"; + private static final String DEFAULT_MULTI_RESULT_TD_ICON = "/com/fr/design/standard/multi.svg"; static { @@ -45,10 +46,10 @@ class MultiResultTableDataWrapperHelper { return TABLE_DATA_ICON_PATHS.computeIfAbsent(tableDataClass, cls -> { for (TableDataNameObjectCreator creator : TableDataCreatorProducer.getInstance().createReportTableDataCreator()) { if (creator.createObject().getClass().isAssignableFrom(tableDataClass)) { - return IOUtils.readIcon(creator.getIconPath()); + return IconUtils.readIcon(creator.getIconPath()); } } - return IOUtils.readIcon(DEFAULT_MULTI_RESULT_TD_ICON); + return IconUtils.readIcon(DEFAULT_MULTI_RESULT_TD_ICON); }); } } diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java index c309e1fde..37fb2e702 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java @@ -2,6 +2,8 @@ package com.fr.design.data.tabledata.wrapper; import com.fr.base.BaseUtils; import com.fr.base.TableData; +import com.fr.base.svg.IconUtils; +import com.fr.base.svg.SVGLoader; import com.fr.data.impl.ClassTableData; import com.fr.data.impl.DBTableData; import com.fr.data.impl.EmbeddedTableData; @@ -25,19 +27,19 @@ public final class ServerTableDataWrapper extends AbstractTableDataWrapper { public Icon getIcon() { if (tabledata instanceof DBTableData) { if (StringUtils.isBlank(((DBTableData) tabledata).getQuery())) - return new WarningIcon(BaseUtils.readImage("/com/fr/design/images/data/dock/serverdatabase.png")); + return new WarningIcon(SVGLoader.load("/com/fr/design/standard/server_database.svg")); else - return BaseUtils.readIcon("/com/fr/design/images/data/dock/serverdatabase.png"); + return IconUtils.readIcon("/com/fr/design/standard/server_database.svg"); } else if (tabledata instanceof ClassTableData) { - return BaseUtils.readIcon("/com/fr/design/images/data/dock/serverclasstabledata.png"); + return IconUtils.readIcon("/com/fr/design/standard/class_table_data.svg"); } else if (tabledata instanceof EmbeddedTableData) { - return BaseUtils.readIcon("/com/fr/design/images/data/dock/serverdatatable.png"); + return IconUtils.readIcon("/com/fr/design/standard/data_table.svg"); }else if(tabledata instanceof RecursionTableData){ - return BaseUtils.readIcon("/com/fr/design/images/data/tree.png"); + return IconUtils.readIcon("/com/fr/design/standard/tree.svg"); } else if (tabledata instanceof StoreProcedure) { - return BaseUtils.readIcon("/com/fr/design/images/data/store_procedure.png"); + return IconUtils.readIcon("/com/fr/design/standard/store_procedure.svg"); } - return BaseUtils.readIcon("/com/fr/design/images/data/dock/serverdatabase.png"); + return IconUtils.readIcon("/com/fr/design/standard/server_database.svg"); } /** 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 9eb09376e..5bc328477 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 @@ -2,6 +2,7 @@ package com.fr.design.data.tabledata.wrapper; import com.fr.base.BaseUtils; import com.fr.base.TableData; +import com.fr.base.svg.IconUtils; import com.fr.data.impl.storeproc.ProcedureDataModel; import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.data.operator.DataOperator; @@ -150,7 +151,7 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { @Override public Icon getIcon() { - return BaseUtils.readIcon("/com/fr/design/images/data/store_procedure.png"); + return IconUtils.readIcon("/com/fr/design/standard/store_procedure.svg"); } /** diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureNameWrapper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureNameWrapper.java index 11aeedbab..5c264c4da 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureNameWrapper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureNameWrapper.java @@ -2,6 +2,7 @@ package com.fr.design.data.tabledata.wrapper; import com.fr.base.BaseUtils; import com.fr.base.TableData; +import com.fr.base.svg.IconUtils; import com.fr.data.impl.storeproc.ProcedureDataModel; import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.design.data.DesignTableDataManager; @@ -71,7 +72,7 @@ public final class StoreProcedureNameWrapper implements TableDataWrapper { @Override public Icon getIcon() { - return BaseUtils.readIcon("/com/fr/design/images/data/store_procedure.png"); + return IconUtils.readIcon("/com/fr/design/standard/store_procedure.svg"); } private void createStore(boolean needLoadingBar) { diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java index 6bc9e21ed..090655997 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java @@ -55,15 +55,15 @@ public abstract class TableDataFactory { * 同一类型的只能加一次,就加最上层的类,因为要排序。如果将所有的 FileTableData都加进来,那么FileTableData的排序就不正确了 */ static { - defaultMap.put(DBTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/database.png", DBTableData.class, DBTableDataPane.class)); - defaultMap.put(ClassTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/source/classTableData.png", ClassTableData.class, ClassTableDataPane.class)); - defaultMap.put(EmbeddedTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/dataTable.png", EmbeddedTableData.class, EmbeddedTableDataPane.class)); - defaultMap.put(DecoratedTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/multi.png", DecoratedTableData.class, DecoratedTableDataPane.class)); + defaultMap.put(DBTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/database.svg", DBTableData.class, DBTableDataPane.class)); + defaultMap.put(ClassTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/class_table_data.svg", ClassTableData.class, ClassTableDataPane.class)); + defaultMap.put(EmbeddedTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/data_table.svg", EmbeddedTableData.class, EmbeddedTableDataPane.class)); + defaultMap.put(DecoratedTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/multi.svg", DecoratedTableData.class, DecoratedTableDataPane.class)); defaultMap.put(StoreProcedure.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/store_procedure.png", StoreProcedure.class, ProcedureDataPane.class)); - defaultMap.put(MultiTDTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/multi.png", MultiTDTableData.class, MultiTDTableDataPane.class)); - defaultMap.put(FileTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/file.png", FileTableData.class, FileTableDataPane.class)); - defaultMap.put(RecursionTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/tree.png", RecursionTableData.class, TreeTableDataPane.class)); - defaultMap.put(MultiFieldTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/database.png", MultiFieldTableData.class, null)); + defaultMap.put(MultiTDTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/multi.svg", MultiTDTableData.class, MultiTDTableDataPane.class)); + defaultMap.put(FileTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/file.svg", FileTableData.class, FileTableDataPane.class)); + defaultMap.put(RecursionTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/tree.svg", RecursionTableData.class, TreeTableDataPane.class)); + defaultMap.put(MultiFieldTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/database.svg", MultiFieldTableData.class, null)); map.putAll(defaultMap); } @@ -151,7 +151,7 @@ public abstract class TableDataFactory { if (tableDataNameObjectCreator != null && tableDataNameObjectCreator.getIconPath() != null) { return tableDataNameObjectCreator.getIconPath(); } - return "/com/fr/design/images/data/database.png"; + return "/com/fr/design/standard/database.svg"; } /** diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TemplateTableDataWrapper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TemplateTableDataWrapper.java index 49e6f625a..cf27a0dbc 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TemplateTableDataWrapper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TemplateTableDataWrapper.java @@ -4,6 +4,8 @@ import javax.swing.Icon; import com.fr.base.BaseUtils; import com.fr.base.TableData; +import com.fr.base.svg.IconUtils; +import com.fr.base.svg.SVGLoader; import com.fr.data.impl.DBTableData; import com.fr.design.icon.WarningIcon; import com.fr.stable.StringUtils; @@ -20,9 +22,9 @@ public final class TemplateTableDataWrapper extends AbstractTableDataWrapper { @Override public Icon getIcon() { if (tabledata instanceof DBTableData && StringUtils.isBlank(((DBTableData) tabledata).getQuery())) { - return new WarningIcon(BaseUtils.readImage("/com/fr/design/images/data/database.png")); + return new WarningIcon(SVGLoader.load("/com/fr/design/standard/database.svg")); } - return BaseUtils.readIcon(TableDataFactory.getIconPath(tabledata)); + return IconUtils.readIcon(TableDataFactory.getIconPath(tabledata)); } @Override diff --git a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java index b506dd81c..9af937669 100644 --- a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java @@ -3,6 +3,7 @@ package com.fr.design.file; import com.fr.base.BaseUtils; import com.fr.base.GraphHelper; +import com.fr.base.svg.IconUtils; import com.fr.base.vcs.DesignerMode; import com.fr.design.actions.UpdateAction; import com.fr.design.actions.file.LocateAction; @@ -85,9 +86,9 @@ import static javax.swing.JOptionPane.WARNING_MESSAGE; **/ public class MultiTemplateTabPane extends JComponent { - private static Icon LIST_DOWN = BaseUtils.readIcon("/com/fr/design/images/buttonicon/list_normal.png"); - private static Icon MOUSE_OVER_LIST_DOWN = BaseUtils.readIcon("/com/fr/design/images/buttonicon/list_pressed.png"); - private static Icon MOUSE_PRESS_LIST_DOWN = BaseUtils.readIcon("/com/fr/design/images/buttonicon/list_pressed.png"); + private static Icon LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list_normal.svg"); + private static Icon MOUSE_OVER_LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list_pressed.svg"); + private static Icon MOUSE_PRESS_LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list_pressed.svg"); private static Icon CLOSE = BaseUtils.readIcon("/com/fr/design/images/buttonicon/close_icon.png"); private static Icon MOUSE_OVER_CLOSE = BaseUtils.readIcon("/com/fr/design/images/buttonicon/mouseoverclose icon.png"); private static Icon MOUSE_PRESS_CLOSE = BaseUtils.readIcon("/com/fr/design/images/buttonicon/pressclose icon.png"); diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/AbstractNameableCreator.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/AbstractNameableCreator.java index 45c940ed4..9ad08a9e6 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/AbstractNameableCreator.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/AbstractNameableCreator.java @@ -1,6 +1,7 @@ package com.fr.design.gui.controlpane; import com.fr.base.BaseUtils; +import com.fr.base.svg.IconUtils; import com.fr.design.beans.BasicBeanPane; import com.fr.general.ComparatorUtils; import com.fr.general.NameObject; @@ -25,14 +26,14 @@ public abstract class AbstractNameableCreator implements NameableCreator { public AbstractNameableCreator(String menuName, String iconPath, Class clazz) { this.menuName = menuName; - this.menuIcon = BaseUtils.readIcon(iconPath); + this.menuIcon = IconUtils.readIcon(iconPath); this.clazzOfObject = clazz; this.clazzOfInitCase = clazz; } public AbstractNameableCreator(String menuName, String iconPath, Class clazz, Class clazzOfEditor) { this.menuName = menuName; - this.menuIcon = BaseUtils.readIcon(iconPath); + this.menuIcon = IconUtils.readIcon(iconPath); this.clazzOfObject = clazz; this.clazzOfEditor = clazzOfEditor; this.clazzOfInitCase = clazz; @@ -40,7 +41,7 @@ public abstract class AbstractNameableCreator implements NameableCreator { public AbstractNameableCreator(String menuName, String iconPath, Class clazz, Class clazz4Init, Class clazzOfEditor) { this.menuName = menuName; - this.menuIcon = BaseUtils.readIcon(iconPath); + this.menuIcon = IconUtils.readIcon(iconPath); this.clazzOfObject = clazz; this.clazzOfEditor = clazzOfEditor; this.clazzOfInitCase = clazz; diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index 125cd3aa1..f00fbee49 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -327,7 +327,7 @@ public class UIEastResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - g.drawImage(button, 18, 7, 5, 10, null); + g.drawImage(button, 18, 7, this); } } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java index f3f45768f..0cd17cd00 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -3,6 +3,7 @@ package com.fr.design.gui.icontainer; import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.utils.SvgPaintUtils; import com.fr.stable.Constants; import com.fr.design.utils.gui.GUICoreUtils; @@ -406,13 +407,17 @@ public class UIResizableContainer extends JPanel { @Override public void paint(Graphics g) { + Image upButton = (upModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_UP_NORMAL : UIConstants.DRAG_UP_PRESS); Image downButton = (downModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_DOWN_NORMAL : UIConstants.DRAG_DOWN_PRESS); - + int width = getWidth(); + int height = getHeight(); g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null); - g.drawImage(UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, toolPaneHeight, 5, null); - g.drawImage(upButton, ARROW_MARGIN, 3, toolPaneHeight, 5, null); - g.drawImage(downButton, getWidth() - toolPaneHeight - ARROW_MARGIN, 3, toolPaneHeight, 5, null); + SvgPaintUtils.beforePaint((Graphics2D) g); + g.drawImage(UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, this); + g.drawImage(upButton, ARROW_MARGIN, 1, this); + g.drawImage(downButton, getWidth() - toolPaneHeight - ARROW_MARGIN, 1, this); + SvgPaintUtils.afterPaint((Graphics2D) g); } } @@ -509,7 +514,7 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_LEFT_PRESS; } } - g.drawImage(button, 3, ARROW_MARGIN_VERTICAL, 5, toolPaneHeight, null); + g.drawImage(button, -1, ARROW_MARGIN_VERTICAL, this); } else { g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null); if (containerWidth == toolPaneHeight) { @@ -525,7 +530,7 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - g.drawImage(button, 2, ARROW_MARGIN_VERTICAL, 5, toolPaneHeight, null); + g.drawImage(button, 2, ARROW_MARGIN_VERTICAL, this); } if (isLeftRightDragEnabled) { g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null); diff --git a/designer-base/src/main/java/com/fr/design/icon/IconPathConstants.java b/designer-base/src/main/java/com/fr/design/icon/IconPathConstants.java index e3802161b..b6d2426e2 100644 --- a/designer-base/src/main/java/com/fr/design/icon/IconPathConstants.java +++ b/designer-base/src/main/java/com/fr/design/icon/IconPathConstants.java @@ -15,21 +15,21 @@ public class IconPathConstants { public static final String ADD_POPMENU_ICON_PATH = "/com/fr/design/images/control/addPopup.png"; - public static final String DS_ICON_PATH = "/com/fr/design/images/data/datasource.png"; + public static final String DS_ICON_PATH = "/com/fr/design/standard/server_database.svg"; public static final String CLASS_TD_ICON_PATH = "/com/fr/design/images/data/source/classTableData.png"; public static final String EMB_TD_ICON_PATH = "/com/fr/design/images/data/dataTable.png"; public static final String DS_RELATION_TD_ICON_PATH = "/com/fr/design/images/data/multi.png"; public static final String FILE_TD_ICON_PATH = "/com/fr/design/images/data/file.png"; public static final String DS_TREE_TD_ICON_PATH = "/com/fr/design/images/data/tree.png"; - public static final String DS_QUERY_ICON_PATH = "/com/fr/design/images/data/database.png"; + public static final String DS_QUERY_ICON_PATH = "/com/fr/design/standard/database.svg"; public static final String PREVIEW_ICON_PATH = "/com/fr/design/images/m_file/preview.png"; public static final String TD_EDIT_ICON_PATH = "/com/fr/design/images/control/edit.png"; public static final String TD_EL_SHARE_HELP_ICON_PATH = "/com/fr/design/images/control/help_open.png"; public static final String TD_EL_SHARE_CLOSE_ICON_PATH = "/com/fr/design/images/control/help_close.png"; public static final String TD_REMOVE_ICON_PATH = "/com/fr/design/images/control/remove.png"; public static final String TD_CONNECTION_ICON_PATH = "/com/fr/design/images/m_web/connection.png"; - public static final String SP_SHOW_ICON_PATH = "/com/fr/design/images/data/store_procedure.png"; - public static final String STD_SHOW_ICON_PATH = "/com/fr/design/images/data/dock/serverdatabase.png"; + public static final String SP_SHOW_ICON_PATH = "/com/fr/design/standard/store_procedure.svg"; + public static final String STD_SHOW_ICON_PATH = "/com/fr/design/standard/server_database.svg"; public static final String XMLA_ICON_PATH = "/com/fr/design/images/data/cube.png"; public static final String FORBID_ICON_PATH = "/com/fr/web/images/form/forbid.png"; public static final String EDIT_ICON_PATH = "/com/fr/design/images/control/newEdit.png"; diff --git a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java index 50b70ccec..3843100f4 100644 --- a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java +++ b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java @@ -1,14 +1,13 @@ package com.fr.design.icon; import com.fr.base.BaseUtils; +import com.fr.base.svg.SVGLoader; +import com.fr.design.utils.SvgPaintUtils; import com.fr.log.FineLoggerFactory; import javax.swing.GrayFilter; import javax.swing.ImageIcon; -import java.awt.Component; -import java.awt.Graphics; -import java.awt.Image; -import java.awt.MediaTracker; +import java.awt.*; import java.awt.image.ImageObserver; /** @@ -21,7 +20,9 @@ public class WarningIcon extends ImageIcon { protected final static Component component = new Component() { }; protected final static MediaTracker tracker = new MediaTracker(component); - private final static Image warnighImage = BaseUtils.readImage("/com/fr/design/images/gui/warning.png"); + private final static Image warnighImage = SVGLoader.load("/com/fr/design/standard/warning.svg"); + private final static int WARNING_DEFAULT_OFFSET_X = 8; + private final static int WARNING_DEFAULT_OFFSET_Y = 8; private Image mainImage = null; private ImageObserver imageObserver; @@ -38,12 +39,16 @@ public class WarningIcon extends ImageIcon { @Override public synchronized void paintIcon(Component c, Graphics g, int x, int y) { + SvgPaintUtils.beforePaint((Graphics2D) g); if (mainImage != null) { g.drawImage(mainImage, x, y, c); } if (warnighImage != null) { - g.drawImage(warnighImage, x, y, c); + int widthOffset = mainImage == null ? WARNING_DEFAULT_OFFSET_X : mainImage.getWidth(imageObserver) / 2; + int heightOffset = mainImage == null ? WARNING_DEFAULT_OFFSET_Y : mainImage.getHeight(imageObserver) / 2; + g.drawImage(warnighImage, x + widthOffset, y + heightOffset, c); } + SvgPaintUtils.beforePaint((Graphics2D) g); } /** diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 87864ffd2..06e1fb1bb 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -427,7 +427,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt public NewFolderAction() { this.setName(KeySetUtils.NEW_FOLDER.getMenuKeySetName()); - this.setSmallIcon("/com/fr/design/images/FileDealerPaneIcon/new_folder"); + this.setSmallIcon("/com/fr/design/standard/newfolder/new_folder"); } @Override @@ -452,7 +452,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt public SwitchAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Search")); this.setMnemonic('S'); - this.setSmallIcon("/com/fr/design/images/data/search"); + this.setSmallIcon("/com/fr/design/standard/search_normal"); } @Override @@ -469,7 +469,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt public CollapseAllAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Collapse_All")); - this.setSmallIcon("/com/fr/design/images/FileDealerPaneIcon/collapse-all.png"); + this.setSmallIcon("/com/fr/design/standard/collapse-all.svg"); } @Override @@ -485,7 +485,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt private class VcsAction extends UpdateAction { public VcsAction() { - this.setSmallIcon("/com/fr/design/images/FileDealerPaneIcon/vcs_list"); + this.setSmallIcon("/com/fr/design/standard/vcslist/vcs_list"); } @Override @@ -567,7 +567,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt public ShowInExplorerAction() { this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Show_In_Containing_Folder")); - this.setSmallIcon("/com/fr/design/images/FileDealerPaneIcon/view_folder"); + this.setSmallIcon("/com/fr/design/standard/viewfolder/view_folder"); } @Override @@ -584,7 +584,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt public RefreshTreeAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Refresh")); - this.setSmallIcon("/com/fr/design/images/FileDealerPaneIcon/refresh"); + this.setSmallIcon("/com/fr/design/standard/refresh", false); } @Override diff --git a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index d32a54ca4..b033fa617 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -729,7 +729,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer { private Set enableModes; // 完整icon路径为 ICON_BASE_DIR + btnIconName + iconSuffix - private static final String ICON_BASE_DIR = "/com/fr/design/images/buttonicon/propertiestab/"; + private static final String ICON_BASE_DIR = "/com/fr/design/standard/propertiestab/"; private static final String ICON_SUFFIX_NORMAL = "_normal.svg"; private static final String ICON_SUFFIX_DISABLED = "_disabled.svg"; private static final String ICON_SUFFIX_SELECTED = "_selected.svg"; 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 444ef577f..34ead6028 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 @@ -8,6 +8,7 @@ import com.fr.base.io.BaseBook; import com.fr.base.iofile.attr.DesignBanCopyAttrMark; import com.fr.base.iofile.attr.TemplateIdAttrMark; import com.fr.base.iofile.attr.TemplateThemeAttrMark; +import com.fr.base.svg.IconUtils; import com.fr.base.theme.TemplateTheme; import com.fr.base.theme.TemplateThemeCompatible; import com.fr.base.theme.TemplateThemeConfig; @@ -1573,7 +1574,7 @@ public abstract class JTemplate> } protected UIButton createTemplateThemeButton() { - UIButton button = new UIButton(IOUtils.readIcon("/com/fr/design/icon/icon_predefined_style.png")) { + UIButton button = new UIButton(IconUtils.readIcon("/com/fr/design/standard/template_theme.svg")) { @Override public Dimension getPreferredSize() { FontMetrics metrics = getFontMetrics(getFont()); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java b/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java index 1f7cab6d6..b113b9c99 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe; import com.fr.base.BaseUtils; +import com.fr.base.svg.IconUtils; import com.fr.design.file.NewTemplatePane; import javax.swing.Icon; @@ -21,16 +22,16 @@ public class ToolBarNewTemplatePane extends NewTemplatePane { @Override public Icon getNew() { - return BaseUtils.readIcon("/com/fr/design/images/buttonicon/addicon.png"); + return IconUtils.readIcon("/com/fr/design/standard/addicon/addicon.svg"); } @Override public Icon getMouseOverNew() { - return BaseUtils.readIcon("/com/fr/design/images/buttonicon/add_press.png"); + return IconUtils.readIcon("/com/fr/design/standard/addicon/add_press.svg"); } @Override public Icon getMousePressNew() { - return BaseUtils.readIcon("/com/fr/design/images/buttonicon/add_press.png"); + return IconUtils.readIcon("/com/fr/design/standard/addicon/add_press.svg"); } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java b/designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java index 0ec50ef24..67c57db98 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.check; import com.fr.base.BaseUtils; +import com.fr.base.svg.IconUtils; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ilable.UILabel; @@ -44,7 +45,7 @@ public class CheckButton extends UIButton { private UILabel imageLabel; public CheckButton() { - this.setIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/check.png")); + this.setIcon(IconUtils.readIcon("/com/fr/design/standard/font_miss_check.svg")); this.setToolTipText(Toolkit.i18nText("Fine_Designer_Check_Font")); this.set4ToolbarButton(); this.addActionListener(checkListener); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateTreeSearchToolbarPane.java b/designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateTreeSearchToolbarPane.java index e2deb1325..2786073a2 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateTreeSearchToolbarPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateTreeSearchToolbarPane.java @@ -107,7 +107,7 @@ public class TemplateTreeSearchToolbarPane extends JPanel implements TreeSearchS searchPane.setBorder(BorderFactory.createLineBorder(UIConstants.TOOLBAR_BORDER_COLOR)); searchPane.setBackground(Color.WHITE); // 左侧搜索图标 - UILabel searchLabel = new UILabel(IconUtils.readIcon("/com/fr/design/images/data/search")); + UILabel searchLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/search_normal.svg")); searchLabel.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0)); searchLabel.addMouseListener(new MouseAdapter() { @Override @@ -118,7 +118,7 @@ public class TemplateTreeSearchToolbarPane extends JPanel implements TreeSearchS // 中间输入框 initSearchTextField(); // 右侧返回图标 - UILabel returnLabel = new UILabel(IconUtils.readIcon("/com/fr/design/images/data/clear")); + UILabel returnLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/clear_normal.svg")); returnLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Tree_Search_Return")); returnLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 11)); returnLabel.addMouseListener(new MouseAdapter() { diff --git a/designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java b/designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java index 3ec5a53a9..a3553f2ca 100644 --- a/designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java +++ b/designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java @@ -1,5 +1,6 @@ package com.fr.design.notification.ui; +import com.fr.base.svg.IconUtils; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButton; @@ -20,7 +21,7 @@ public class NotificationCenterPane extends BasicPane { setPreferredSize(new Dimension(24, 24)); setLayout(new BorderLayout()); notificationCenterButton = new UIButton(); - notificationCenterButton.setIcon(IOUtils.readIcon("/com/fr/design/notification/ui/notificationCenter.png")); + notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification_normal.svg")); notificationCenterButton.setToolTipText(Toolkit.i18nText("Fine-Design_Basic_Show_Notification")); notificationCenterButton.set4ToolbarButton(); notificationCenterButton.setRolloverEnabled(false); @@ -41,9 +42,9 @@ public class NotificationCenterPane extends BasicPane { public void refreshButton() { if (NotificationCenter.getInstance().getNotificationsCount() > 0) { - notificationCenterButton.setIcon(IOUtils.readIcon("/com/fr/design/notification/ui/notificationCenterDot.png")); + notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification_dot.svg")); } else { - notificationCenterButton.setIcon(IOUtils.readIcon("/com/fr/design/notification/ui/notificationCenter.png")); + notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification_normal.svg")); } } diff --git a/designer-base/src/main/java/com/fr/design/preview/FormPreview.java b/designer-base/src/main/java/com/fr/design/preview/FormPreview.java index 178779f51..83b8a353f 100644 --- a/designer-base/src/main/java/com/fr/design/preview/FormPreview.java +++ b/designer-base/src/main/java/com/fr/design/preview/FormPreview.java @@ -18,12 +18,12 @@ public class FormPreview extends AbstractPreviewProvider { @Override public String iconPathForPopupItem() { - return "com/fr/design/images/buttonicon/runs.png"; + return "/com/fr/design/standard/preview/runs.svg"; } @Override public String iconPathForLarge() { - return "com/fr/design/images/buttonicon/run24.png"; + return "/com/fr/design/standard/preview/run24.svg"; } @Override diff --git a/designer-base/src/main/java/com/fr/design/preview/MobilePreview.java b/designer-base/src/main/java/com/fr/design/preview/MobilePreview.java index c0f9e973d..a55eb2573 100644 --- a/designer-base/src/main/java/com/fr/design/preview/MobilePreview.java +++ b/designer-base/src/main/java/com/fr/design/preview/MobilePreview.java @@ -19,12 +19,12 @@ public class MobilePreview extends AbstractPreviewProvider { @Override public String iconPathForPopupItem() { - return "com/fr/design/images/buttonicon/mobile.png"; + return "/com/fr/design/standard/preview/mobile.svg"; } @Override public String iconPathForLarge() { - return "com/fr/design/images/buttonicon/mobileb24.png"; + return "/com/fr/design/standard/preview/mobileb24.svg"; } @Override diff --git a/designer-base/src/main/java/com/fr/design/preview/PagePreview.java b/designer-base/src/main/java/com/fr/design/preview/PagePreview.java index e46e1f06c..c2f15c915 100644 --- a/designer-base/src/main/java/com/fr/design/preview/PagePreview.java +++ b/designer-base/src/main/java/com/fr/design/preview/PagePreview.java @@ -17,12 +17,12 @@ public class PagePreview extends AbstractPreviewProvider { @Override public String iconPathForPopupItem() { - return "com/fr/design/images/buttonicon/pages.png"; + return "/com/fr/design/standard/preview/pages.svg"; } @Override public String iconPathForLarge() { - return "com/fr/design/images/buttonicon/pageb24.png"; + return "/com/fr/design/standard/preview/pageb24.svg"; } @Override diff --git a/designer-base/src/main/java/com/fr/design/preview/ViewPreview.java b/designer-base/src/main/java/com/fr/design/preview/ViewPreview.java index 02809ba38..5df602649 100644 --- a/designer-base/src/main/java/com/fr/design/preview/ViewPreview.java +++ b/designer-base/src/main/java/com/fr/design/preview/ViewPreview.java @@ -20,12 +20,12 @@ public class ViewPreview extends AbstractPreviewProvider { @Override public String iconPathForPopupItem() { - return "com/fr/design/images/buttonicon/anas.png"; + return "/com/fr/design/standard/preview/anas.svg"; } @Override public String iconPathForLarge() { - return "com/fr/design/images/buttonicon/anab24.png"; + return "/com/fr/design/standard/preview/anab24.svg"; } @Override diff --git a/designer-base/src/main/java/com/fr/design/preview/WritePreview.java b/designer-base/src/main/java/com/fr/design/preview/WritePreview.java index 3d027dca7..8cac86f39 100644 --- a/designer-base/src/main/java/com/fr/design/preview/WritePreview.java +++ b/designer-base/src/main/java/com/fr/design/preview/WritePreview.java @@ -20,12 +20,12 @@ public class WritePreview extends AbstractPreviewProvider { @Override public String iconPathForPopupItem() { - return "com/fr/design/images/buttonicon/writes.png"; + return "/com/fr/design/standard/preview/writes.svg"; } @Override public String iconPathForLarge() { - return "com/fr/design/images/buttonicon/writeb24.png"; + return "/com/fr/design/standard/preview/writeb24.svg"; } @Override diff --git a/designer-base/src/main/resources/com/fr/design/images/control/dot-line.png b/designer-base/src/main/resources/com/fr/design/images/control/dot-line.png deleted file mode 100644 index 874408025bbeed160ee3bf742a22bd080bb88272..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^AT}!p8<4C?sm%aVjKx9jP7LeL$-D$|R6JcALpWrU z6BL9D4qefW-uA}6r`N~b)%D<2h3>~GheLzUx-bMQa4;uZiyHyeGkCiCxvX!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBDAAG{;hE;^%b*2hb1<+n z3NbJPS&Tr)z$nE4G7ZRL@M4sPvx68lplX;H7}_%#SfFa6fHVkr05M1pgl1mAh%j*h z6I`{x0%imor0saV%ts)_S>O>_%)r1c48n{Iv*t)JFfbWphD4M^`1)8S=jZArrsOB3 z>Q&?xfOIj~R9FF-xv3?I3Kh9IdBs*0wn|_XRzNmLSYJs2tfVB{Rw=?aK*2e`C{@8! z&qU8a$&O1wLBXadCCw_x#SN+*$g@?-C@Cqh($_C9FV`zK*2^zS*Eh7ZwA42+(l;{F z1**_3uFNY*tkBIXR)!b?Gsh*hIJqdZpd>RtPXT0ZVp4u-iLH_n$Rap^xU(cP4PjGW zG1OZ?59)(t^bPe4^s#A6t;oco4I~562KE=kIvbE-R{lkqsXzyVoMmTd1GWG~4BJHW(X0^`J{&)fkCOBa#GEqm4c& zOp(GE5`kb*U<}%E+33SlgB{nGlzaZbw3FfK;uvBf*cyC3Ti8)#-psi=ZYX znUf~neA9D3+h`%{QTD^tzw7qD-}^Mj$5G(Su63_(yx(8AG(@KD;k`iV<^2i~6$fVQ zWDR`Cc}aF*hE8@tzu`WyHu*4x;583JB#XL>%hraizIyze@U)XD&t#5I3>1;|(9|!` zi&K90W{0reNr~fy;T+F*zfYIvI`~XLHuJ2?^F7nORHtiCJvG5-(G7Qz*SqqPj8-`? zF)x+iVGEwT>A#o()9kljcWluM6Np;=>-KHw)7KIzt>)Uz^ovikwwB(%@O5!so|)A9 zx=8EuPm4Ymu5n)bc(uf1U7qD1IV_ku8y0_S+;j5s9py7ec-OX{fBm&;wt<1i1D^Ji ze5>X(e>T(-;aYArw=c_V_T3z_-6=fLM|YjqI2vPNw@o=iv-)zxbJ=8`MvEh1G8Xb7 ztFKo7tog^1bDrUql2xJ??}dex{!??9CUpvZ*}!Rci>dpa zvgqwmYZ(LfpWXR6BRl)E@w*gp^I-Rd;ZqjG=p8R{X(?NDG2_P78<$h}&EMS=nI7gTe~DWM4fZIt{X diff --git a/designer-base/src/main/resources/com/fr/design/notification/ui/notificationCenter.png b/designer-base/src/main/resources/com/fr/design/notification/ui/notificationCenter.png deleted file mode 100644 index 0445f313449a9ec1f97ccd5d3de489870e1db79c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmV-h0i^zkP)G*rC7WyJ`lnoNm zU6P))BJu{vp)n>dzSjW!TOyp)Sr);-nBcS#ptW8F=oNs| zuyZ<{er&{X{Qlc7IZ#TuL@Up>%cNmIDP+v!<0G?_RzNxT@khpxC#IO002ovPDHLkV1j<@jEevO diff --git a/designer-base/src/main/resources/com/fr/design/notification/ui/notificationCenterDot.png b/designer-base/src/main/resources/com/fr/design/notification/ui/notificationCenterDot.png deleted file mode 100644 index 599a9ba64a964afce0945f8bae181361032856e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uuz(rC1}QWNE&K#j7V7EZ7-Auq zoT4D~=lZp@>fb-JFW0yIFI3R&;pypasoeQm;^RwmGqbtpPn@V3Xk?oR>JPsvzaj~>a`057jB#sDAj$Upz<*$$tc z^F}i7e*GUtsg*oO;v4?WZxig`wli{$i6&GF^;4J@uSY z4eQvBG9)A%Ri529_bi8Br-9{`k`MpI4X&*_sIu|mffs)}edpvD&Z#_jmdWwX@&X04r>mdK II;Vst0MRVIG5`Po diff --git a/designer-base/src/main/resources/com/fr/design/images/sheet/add_polysheet_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/add_polysheet_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/sheet/add_polysheet_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/add_polysheet_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/add_worksheet_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/add_worksheet_normal.svg new file mode 100644 index 000000000..e373bd448 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/add_worksheet_normal.svg @@ -0,0 +1,17 @@ + + + icon_sheet_添加一页_normal + + + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/addicon/add_press.svg b/designer-base/src/main/resources/com/fr/design/standard/addicon/add_press.svg new file mode 100644 index 000000000..c23b1b8ad --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/addicon/add_press.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/addicon/addicon.svg b/designer-base/src/main/resources/com/fr/design/standard/addicon/addicon.svg new file mode 100644 index 000000000..586122fd2 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/addicon/addicon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_disabled.svg new file mode 100644 index 000000000..d48e1a27b --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_disabled.svg @@ -0,0 +1,16 @@ + + + 编组 + + + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_normal.svg new file mode 100644 index 000000000..8cec802fe --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_normal.svg @@ -0,0 +1,14 @@ + + + 编组备份 + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/alpha_fine.svg b/designer-base/src/main/resources/com/fr/design/standard/alpha_fine.svg new file mode 100644 index 000000000..efe176cea --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/alpha_fine.svg @@ -0,0 +1,3 @@ + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_disabled.svg new file mode 100644 index 000000000..ed225a99b --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_normal.svg new file mode 100644 index 000000000..c81b5419a --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_normal.svg @@ -0,0 +1,3 @@ + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_disabled.svg new file mode 100644 index 000000000..23d8c5da5 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_disabled.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_normal.svg new file mode 100644 index 000000000..13f924d88 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_normal.svg @@ -0,0 +1,3 @@ + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/bold/bold_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/bold/bold_normal.svg new file mode 100644 index 000000000..fa9d66022 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/bold/bold_normal.svg @@ -0,0 +1,7 @@ + + + icon_文本工具_加粗_nomal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/bold/bold_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/bold/bold_selected.svg new file mode 100644 index 000000000..638fadc32 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/bold/bold_selected.svg @@ -0,0 +1,7 @@ + + + icon_文本工具_加粗_selected + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_normal.svg new file mode 100644 index 000000000..46c784803 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_normal.svg @@ -0,0 +1,7 @@ + + + icon_对齐 居中对齐_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_selected.svg new file mode 100644 index 000000000..ca8717204 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_selected.svg @@ -0,0 +1,7 @@ + + + icon_对齐 居中对齐_selected + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_normal.svg new file mode 100644 index 000000000..480e12e8c --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_normal.svg @@ -0,0 +1,7 @@ + + + icon_对齐 左对齐_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_selected.svg new file mode 100644 index 000000000..b859a9ac9 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_selected.svg @@ -0,0 +1,7 @@ + + + icon_对齐 左对齐_selected + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_right_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_right_normal.svg new file mode 100644 index 000000000..9707e270d --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_right_normal.svg @@ -0,0 +1,7 @@ + + + icon_对齐 右对齐_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_right_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_right_selected.svg new file mode 100644 index 000000000..f2ca4708c --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_right_selected.svg @@ -0,0 +1,7 @@ + + + icon_对齐 右对齐_selected + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/class_table_data.svg b/designer-base/src/main/resources/com/fr/design/standard/class_table_data.svg new file mode 100644 index 000000000..19fc851ec --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/class_table_data.svg @@ -0,0 +1,4 @@ + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/clear_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/clear_normal.svg new file mode 100644 index 000000000..11f60a553 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/clear_normal.svg @@ -0,0 +1,10 @@ + + + icon_关闭_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/collapse-all.svg b/designer-base/src/main/resources/com/fr/design/standard/collapse-all.svg new file mode 100644 index 000000000..45b28a56b --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/collapse-all.svg @@ -0,0 +1,4 @@ + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/connection_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/connection_normal.svg new file mode 100644 index 000000000..7c865b45e --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/connection_normal.svg @@ -0,0 +1,11 @@ + + + icon_定义数据连接_normal备份 + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/copy/copy_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/copy/copy_disabled.svg new file mode 100644 index 000000000..05585d3ab --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/copy/copy_disabled.svg @@ -0,0 +1,7 @@ + + + icon_复制_disabled + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/copy/copy_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/copy/copy_normal.svg new file mode 100644 index 000000000..7e45e6935 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/copy/copy_normal.svg @@ -0,0 +1,10 @@ + + + icon_复制_normal + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/cut/cut_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/cut/cut_disabled.svg new file mode 100644 index 000000000..6f469f8e6 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/cut/cut_disabled.svg @@ -0,0 +1,9 @@ + + + icon_剪切_disabled + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/cut/cut_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/cut/cut_normal.svg new file mode 100644 index 000000000..485201206 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/cut/cut_normal.svg @@ -0,0 +1,10 @@ + + + icon_剪切_normal + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/data_table.svg b/designer-base/src/main/resources/com/fr/design/standard/data_table.svg new file mode 100644 index 000000000..220cd9526 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/data_table.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/database.svg b/designer-base/src/main/resources/com/fr/design/standard/database.svg new file mode 100644 index 000000000..8c0361dcd --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/database.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/dot_line.svg b/designer-base/src/main/resources/com/fr/design/standard/dot_line.svg new file mode 100644 index 000000000..989837d58 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/dot_line.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/drag/left_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/drag/left_normal.svg new file mode 100644 index 000000000..0809e2e26 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/drag/left_normal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/drag/left_pressed.svg b/designer-base/src/main/resources/com/fr/design/standard/drag/left_pressed.svg new file mode 100644 index 000000000..7f293e9a1 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/drag/left_pressed.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/drag/right_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/drag/right_normal.svg new file mode 100644 index 000000000..a9bc6d2c6 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/drag/right_normal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/drag/right_pressed.svg b/designer-base/src/main/resources/com/fr/design/standard/drag/right_pressed.svg new file mode 100644 index 000000000..7fa6c4e05 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/drag/right_pressed.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/editdataset/edit_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/editdataset/edit_disabled.svg new file mode 100644 index 000000000..9b001cfc5 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/editdataset/edit_disabled.svg @@ -0,0 +1,8 @@ + + + icon_编辑_disable + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/editdataset/edit_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/editdataset/edit_normal.svg new file mode 100644 index 000000000..291719452 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/editdataset/edit_normal.svg @@ -0,0 +1,8 @@ + + + icon_编辑_normal + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/field.svg b/designer-base/src/main/resources/com/fr/design/standard/field.svg new file mode 100644 index 000000000..608d1fd58 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/field.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/file.svg b/designer-base/src/main/resources/com/fr/design/standard/file.svg new file mode 100644 index 000000000..cafbff652 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/file.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/font_miss_check.svg b/designer-base/src/main/resources/com/fr/design/standard/font_miss_check.svg new file mode 100644 index 000000000..3b87159e1 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/font_miss_check.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/formatbrush/formatBrush_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/formatbrush/formatBrush_normal.svg new file mode 100644 index 000000000..f02c9cb61 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/formatbrush/formatBrush_normal.svg @@ -0,0 +1,9 @@ + + + icon_格式刷_normal + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/guide.svg b/designer-base/src/main/resources/com/fr/design/standard/guide.svg new file mode 100644 index 000000000..acf81b1e4 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/guide.svg @@ -0,0 +1,4 @@ + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/italic/italic_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/italic/italic_normal.svg new file mode 100644 index 000000000..97ed4dd1a --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/italic/italic_normal.svg @@ -0,0 +1,9 @@ + + + icon_文本工具_斜体_normal + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/italic/italic_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/italic/italic_selected.svg new file mode 100644 index 000000000..1a84fd6da --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/italic/italic_selected.svg @@ -0,0 +1,9 @@ + + + icon_文本工具_斜体_selected + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/list/list_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/list/list_normal.svg new file mode 100644 index 000000000..b6fccb033 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/list/list_normal.svg @@ -0,0 +1,7 @@ + + + icon_标签栏_工作簿列表_normal + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/list/list_pressed.svg b/designer-base/src/main/resources/com/fr/design/standard/list/list_pressed.svg new file mode 100644 index 000000000..a6b49b76b --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/list/list_pressed.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/locate.svg b/designer-base/src/main/resources/com/fr/design/standard/locate.svg new file mode 100644 index 000000000..6c78878c0 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/locate.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/multi.svg b/designer-base/src/main/resources/com/fr/design/standard/multi.svg new file mode 100644 index 000000000..0c8144e63 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/multi.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/newfolder/new_folder_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/newfolder/new_folder_disabled.svg new file mode 100644 index 000000000..f3936e153 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/newfolder/new_folder_disabled.svg @@ -0,0 +1,8 @@ + + + icon_NewFolderIcon_disable + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/newfolder/new_folder_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/newfolder/new_folder_normal.svg new file mode 100644 index 000000000..85f41e26a --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/newfolder/new_folder_normal.svg @@ -0,0 +1,8 @@ + + + icon_NewFolderIcon_normal + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/images/sheet/next_page_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/nextpage/next_page_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/sheet/next_page_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/nextpage/next_page_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/sheet/next_page_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/nextpage/next_page_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/sheet/next_page_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/nextpage/next_page_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/notification/notification_dot.svg b/designer-base/src/main/resources/com/fr/design/standard/notification/notification_dot.svg new file mode 100644 index 000000000..a78a45944 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/notification/notification_dot.svg @@ -0,0 +1,4 @@ + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/notification/notification_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/notification/notification_normal.svg new file mode 100644 index 000000000..783aabaff --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/notification/notification_normal.svg @@ -0,0 +1,3 @@ + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/paste/paste_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/paste/paste_disabled.svg new file mode 100644 index 000000000..778257c33 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/paste/paste_disabled.svg @@ -0,0 +1,10 @@ + + + icon_粘贴_disabled + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/paste/paste_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/paste/paste_normal.svg new file mode 100644 index 000000000..3a2f31404 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/paste/paste_normal.svg @@ -0,0 +1,11 @@ + + + icon_粘贴_normal + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/polysheet_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/polysheet_normal.svg new file mode 100644 index 000000000..85674ff03 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/polysheet_normal.svg @@ -0,0 +1,9 @@ + + + icon_sheet_normal + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/images/sheet/pre_page_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/prepage/pre_page_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/sheet/pre_page_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/prepage/pre_page_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/sheet/pre_page_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/prepage/pre_page_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/sheet/pre_page_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/prepage/pre_page_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/anab24.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/anab24.svg new file mode 100644 index 000000000..ed3352bed --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/anab24.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/anas.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/anas.svg new file mode 100644 index 000000000..f4d02b287 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/anas.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/developer_preview.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/developer_preview.svg new file mode 100644 index 000000000..e47c0eb4f --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/developer_preview.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/developer_preview24.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/developer_preview24.svg new file mode 100644 index 000000000..5da0955b1 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/developer_preview24.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/mobile.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/mobile.svg new file mode 100644 index 000000000..788e303b2 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/mobile.svg @@ -0,0 +1,19 @@ + + + icon_预览_移动端预览_小图 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/mobileb24.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/mobileb24.svg new file mode 100644 index 000000000..ce7cb4026 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/mobileb24.svg @@ -0,0 +1,19 @@ + + + icon_预览_移动端预览_大图标 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/pageb24.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/pageb24.svg new file mode 100644 index 000000000..f9f144875 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/pageb24.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/pages.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/pages.svg new file mode 100644 index 000000000..b9a18a706 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/pages.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/run24.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/run24.svg new file mode 100644 index 000000000..f9f144875 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/run24.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/runs.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/runs.svg new file mode 100644 index 000000000..b9a18a706 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/runs.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/writeb24.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/writeb24.svg new file mode 100644 index 000000000..ecf74889a --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/writeb24.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview/writes.svg b/designer-base/src/main/resources/com/fr/design/standard/preview/writes.svg new file mode 100644 index 000000000..e8f936824 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview/writes.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/previewdateset/preview_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/previewdateset/preview_disabled.svg new file mode 100644 index 000000000..6f2c4afa1 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/previewdateset/preview_disabled.svg @@ -0,0 +1,7 @@ + + + icon_预览_disabled + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/previewdateset/preview_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/previewdateset/preview_normal.svg new file mode 100644 index 000000000..0412b5e10 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/previewdateset/preview_normal.svg @@ -0,0 +1,7 @@ + + + icon_预览_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/authorityedit_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/authorityedit_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/authorityedit_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/authorityedit_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/authorityedit_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/authorityedit_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/authorityedit_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/authorityedit_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/authorityedit_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/authorityedit_selected.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/authorityedit_selected.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/authorityedit_selected.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellattr_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellattr_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellattr_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellattr_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellattr_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellattr_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellattr_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellattr_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellattr_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellattr_selected.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellattr_selected.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellattr_selected.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellelement_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellelement_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellelement_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellelement_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellelement_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellelement_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellelement_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellelement_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellelement_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellelement_selected.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/cellelement_selected.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/cellelement_selected.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/conditionattr_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/conditionattr_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/conditionattr_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/conditionattr_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/conditionattr_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/conditionattr_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/conditionattr_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/conditionattr_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/conditionattr_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/conditionattr_selected.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/conditionattr_selected.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/conditionattr_selected.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/configuredroles_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/configuredroles_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/configuredroles_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/configuredroles_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/configuredroles_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/configuredroles_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/configuredroles_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/configuredroles_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/configuredroles_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/configuredroles_selected.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/configuredroles_selected.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/configuredroles_selected.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/floatelement_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/floatelement_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/floatelement_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/floatelement_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/floatelement_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/floatelement_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/floatelement_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/floatelement_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/floatelement_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/floatelement_selected.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/floatelement_selected.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/floatelement_selected.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/hyperlink_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/hyperlink_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/hyperlink_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/hyperlink_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/hyperlink_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/hyperlink_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/hyperlink_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/hyperlink_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/hyperlink_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/hyperlink_selected.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/hyperlink_selected.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/hyperlink_selected.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetlib_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetlib_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetlib_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetlib_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetlib_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetlib_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetlib_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetlib_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetlib_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetlib_selected.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetlib_selected.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetlib_selected.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetsettings_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetsettings_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetsettings_disabled.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetsettings_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetsettings_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetsettings_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetsettings_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetsettings_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetsettings_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetsettings_selected.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/buttonicon/propertiestab/widgetsettings_selected.svg rename to designer-base/src/main/resources/com/fr/design/standard/propertiestab/widgetsettings_selected.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/redo/redo_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/redo/redo_disabled.svg new file mode 100644 index 000000000..ae600230c --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/redo/redo_disabled.svg @@ -0,0 +1,7 @@ + + + icon_重做_disabled + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/redo/redo_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/redo/redo_normal.svg new file mode 100644 index 000000000..8c26e8925 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/redo/redo_normal.svg @@ -0,0 +1,7 @@ + + + icon_重做_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/refresh/refresh_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/refresh_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/refresh/refresh_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/refresh_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/remove/remove_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/remove/remove_disabled.svg new file mode 100644 index 000000000..b57f9a853 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/remove/remove_disabled.svg @@ -0,0 +1,11 @@ + + + icon_删除_normal + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/remove/remove_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/remove/remove_normal.svg new file mode 100644 index 000000000..b09268f45 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/remove/remove_normal.svg @@ -0,0 +1,9 @@ + + + icon_删除_normal备份 + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/remove_red_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/remove_red_normal.svg new file mode 100644 index 000000000..74ff5ab38 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/remove_red_normal.svg @@ -0,0 +1,7 @@ + + + icon_关闭_red + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/removefile/remove_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/removefile/remove_disabled.svg new file mode 100644 index 000000000..1245fbd4e --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/removefile/remove_disabled.svg @@ -0,0 +1,7 @@ + + + icon_删除_disabled + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/removefile/remove_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/removefile/remove_normal.svg new file mode 100644 index 000000000..69a3011fa --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/removefile/remove_normal.svg @@ -0,0 +1,7 @@ + + + icon_删除_normal copy + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/rename/rename_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/rename/rename_disabled.svg new file mode 100644 index 000000000..953e12eaa --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/rename/rename_disabled.svg @@ -0,0 +1,7 @@ + + + icon_重命名_disable + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/rename/rename_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/rename/rename_normal.svg new file mode 100644 index 000000000..a2c287789 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/rename/rename_normal.svg @@ -0,0 +1,7 @@ + + + icon_重命名_normal + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/save/save_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/save/save_disabled.svg new file mode 100644 index 000000000..99087a805 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/save/save_disabled.svg @@ -0,0 +1,12 @@ + + + icon_保存_disabled + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/save/save_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/save/save_normal.svg new file mode 100644 index 000000000..f1caf5d1e --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/save/save_normal.svg @@ -0,0 +1,12 @@ + + + icon_保存_normal + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/search_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/search_normal.svg new file mode 100644 index 000000000..673548dfa --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/search_normal.svg @@ -0,0 +1,7 @@ + + + icon_搜索_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/server_database.svg b/designer-base/src/main/resources/com/fr/design/standard/server_database.svg new file mode 100644 index 000000000..50a509fcb --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/server_database.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/smallsearch_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/smallsearch_normal.svg new file mode 100644 index 000000000..efe176cea --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/smallsearch_normal.svg @@ -0,0 +1,3 @@ + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/store_procedure.svg b/designer-base/src/main/resources/com/fr/design/standard/store_procedure.svg new file mode 100644 index 000000000..55393d59a --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/store_procedure.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/template_theme.svg b/designer-base/src/main/resources/com/fr/design/standard/template_theme.svg new file mode 100644 index 000000000..c9e90de47 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/template_theme.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/tree.svg b/designer-base/src/main/resources/com/fr/design/standard/tree.svg new file mode 100644 index 000000000..cc965888e --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/tree.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg new file mode 100644 index 000000000..f83d881a5 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg @@ -0,0 +1,3 @@ + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg new file mode 100644 index 000000000..478b58eba --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg new file mode 100644 index 000000000..67045e796 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg new file mode 100644 index 000000000..229728427 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/uimode/edit_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/uimode/edit_normal.svg new file mode 100644 index 000000000..591c5e146 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/uimode/edit_normal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/uimode/edit_pressed.svg b/designer-base/src/main/resources/com/fr/design/standard/uimode/edit_pressed.svg new file mode 100644 index 000000000..c2b325255 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/uimode/edit_pressed.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/uimode/hide_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/uimode/hide_normal.svg new file mode 100644 index 000000000..aa140c6e2 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/uimode/hide_normal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/uimode/hide_pressed.svg b/designer-base/src/main/resources/com/fr/design/standard/uimode/hide_pressed.svg new file mode 100644 index 000000000..6d7175023 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/uimode/hide_pressed.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/uimode/view_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/uimode/view_normal.svg new file mode 100644 index 000000000..e69de29bb diff --git a/designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg b/designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg new file mode 100644 index 000000000..e69de29bb diff --git a/designer-base/src/main/resources/com/fr/design/standard/underline/underline_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/underline/underline_normal.svg new file mode 100644 index 000000000..51a6fd783 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/underline/underline_normal.svg @@ -0,0 +1,7 @@ + + + icon_文本工具_下划线_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/underline/underline_selected.svg b/designer-base/src/main/resources/com/fr/design/standard/underline/underline_selected.svg new file mode 100644 index 000000000..ccaafc40a --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/underline/underline_selected.svg @@ -0,0 +1,7 @@ + + + icon_文本工具_下划线_selected + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/undo/undo_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/undo/undo_disabled.svg new file mode 100644 index 000000000..24c5cd7c9 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/undo/undo_disabled.svg @@ -0,0 +1,7 @@ + + + icon_撤销_disabled + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/undo/undo_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/undo/undo_normal.svg new file mode 100644 index 000000000..d36032371 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/undo/undo_normal.svg @@ -0,0 +1,7 @@ + + + icon_撤销_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/vcslist/vcs_list_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/vcslist/vcs_list_disabled.svg new file mode 100644 index 000000000..b88ee0998 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/vcslist/vcs_list_disabled.svg @@ -0,0 +1,7 @@ + + + icon_版本管理_disabled + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/vcslist/vcs_list_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/vcslist/vcs_list_normal.svg new file mode 100644 index 000000000..ebfca4389 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/vcslist/vcs_list_normal.svg @@ -0,0 +1,7 @@ + + + icon_版本管理_normal + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/viewfolder/view_folder_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/viewfolder/view_folder_disabled.svg new file mode 100644 index 000000000..376d372d4 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/viewfolder/view_folder_disabled.svg @@ -0,0 +1,7 @@ + + + icon_打开文件_disable + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/viewfolder/view_folder_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/viewfolder/view_folder_normal.svg new file mode 100644 index 000000000..42ae6cbd3 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/viewfolder/view_folder_normal.svg @@ -0,0 +1,7 @@ + + + icon_所在文件夹_normal + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/warning.svg b/designer-base/src/main/resources/com/fr/design/standard/warning.svg new file mode 100644 index 000000000..aabba23e7 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/warning.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/worksheet_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/worksheet_normal.svg new file mode 100644 index 000000000..dcf4e572c --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/worksheet_normal.svg @@ -0,0 +1,10 @@ + + + icon_sheet_page_normal + + + + + + + \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/actions/CopyAction.java b/designer-form/src/main/java/com/fr/design/designer/beans/actions/CopyAction.java index b71def807..3d58ca1aa 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/actions/CopyAction.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/actions/CopyAction.java @@ -15,7 +15,7 @@ public class CopyAction extends FormWidgetEditAction { super(t); this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Copy")); this.setMnemonic('C'); - this.setSmallIcon("/com/fr/design/images/m_edit/copy"); + this.setSmallIcon("/com/fr/design/standard/copy/copy"); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER)); setUpdateBehavior(new CopyableEnable()); this.setEnabled(!DesignModeContext.isBanCopyAndCut()); diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/actions/CutAction.java b/designer-form/src/main/java/com/fr/design/designer/beans/actions/CutAction.java index 7e1329b93..0a6338935 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/actions/CutAction.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/actions/CutAction.java @@ -16,7 +16,7 @@ public class CutAction extends FormWidgetEditAction { super(t); this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Cut")); this.setMnemonic('T'); - this.setSmallIcon("/com/fr/design/images/m_edit/cut"); + this.setSmallIcon("/com/fr/design/standard/cut/cut"); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER)); this.setUpdateBehavior(new CutableEnable()); this.setEnabled(!DesignModeContext.isBanCopyAndCut()); diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/actions/PasteAction.java b/designer-form/src/main/java/com/fr/design/designer/beans/actions/PasteAction.java index 00e229e68..e45d89155 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/actions/PasteAction.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/actions/PasteAction.java @@ -15,7 +15,7 @@ public class PasteAction extends FormWidgetEditAction { super(t); this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_M_Edit_Paste")); this.setMnemonic('P'); - this.setSmallIcon("/com/fr/design/images/m_edit/paste"); + this.setSmallIcon("/com/fr/design/standard/paste/paste"); this.setUpdateBehavior(new PasteEnable()); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, DEFAULT_MODIFIER)); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java index 4e9c45ce4..97488e7d8 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java @@ -1,11 +1,11 @@ package com.fr.design.mainframe; -import com.fr.base.BaseUtils; import com.fr.base.PaperSize; import com.fr.base.Parameter; import com.fr.base.Releasable; import com.fr.base.extension.FileExtension; import com.fr.base.iofile.attr.ExtendSharableAttrMark; +import com.fr.base.svg.IconUtils; import com.fr.base.theme.FineColorSynchronizer; import com.fr.base.theme.FormTheme; import com.fr.base.theme.TemplateTheme; @@ -839,7 +839,7 @@ public class JForm extends JTemplate implements BaseJForm menuItems = new ArrayList(); PreviewProvider[] previewProviders = supportPreview(); for (final PreviewProvider provider : previewProviders) { - UIMenuItem item = new UIMenuItem(provider.nameForPopupItem(), BaseUtils.readIcon(provider.iconPathForPopupItem())); + UIMenuItem item = new UIMenuItem(provider.nameForPopupItem(), IconUtils.readIcon(provider.iconPathForPopupItem())); item.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -1067,7 +1067,7 @@ public class JForm extends JTemplate implements BaseJForm { List menuItems = new ArrayList(); PreviewProvider[] previewProviders = supportPreview(); for (final PreviewProvider provider : previewProviders) { - UIMenuItem item = new UIMenuItem(provider.nameForPopupItem(), BaseUtils.readIcon(provider.iconPathForPopupItem())); + UIMenuItem item = new UIMenuItem(provider.nameForPopupItem(), IconUtils.readIcon(provider.iconPathForPopupItem())); item.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -1089,7 +1089,7 @@ public class JWorkBook extends JTemplate { public Icon getPreviewLargeIcon() { PreviewProvider provider = getPreviewType(); String iconPath = provider.iconPathForLarge(); - return BaseUtils.readIcon(iconPath); + return IconUtils.readIcon(iconPath); } /** @@ -1152,7 +1152,7 @@ public class JWorkBook extends JTemplate { @Override public Icon getIcon() { - return BaseUtils.readIcon("/com/fr/design/images/buttonicon/newcpts.png"); + return IconUtils.readIcon("/com/fr/design/images/buttonicon/newcpts.png"); } /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/SheetNameTabPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/SheetNameTabPane.java index f2bf5e585..639a48697 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/SheetNameTabPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/SheetNameTabPane.java @@ -62,14 +62,14 @@ public class SheetNameTabPane extends JComponent implements MouseListener, Mouse private static final Color LINE_COLOR = new Color(0xababab); - private static final Icon ADD_WORK_SHEET = IconUtils.readIcon("com/fr/base/images/oem/add_worksheet"); - protected static final Icon ADD_POLY_SHEET = IconUtils.readIcon("com/fr/design/images/sheet/add_polysheet"); - private static final Icon WORK_SHEET_ICON = IconUtils.readIcon("com/fr/base/images/oem/worksheet"); - private static final Icon POLY_SHEET_ICON = IconUtils.readIcon("com/fr/design/images/sheet/polysheet"); - private static final Icon LEFT_ICON = IconUtils.readIcon("com/fr/design/images/sheet/pre_page"); - private static final Icon RIGHT_ICON = IconUtils.readIcon("com/fr/design/images/sheet/next_page"); - private static final Icon DISABLED_LEFT_ICON = IconUtils.readIcon("com/fr/design/images/sheet/pre_page_disabled.svg"); - private static final Icon DISABLED_RIGHT_ICON = IconUtils.readIcon("com/fr/design/images/sheet/next_page_disabled.svg"); + private static final Icon ADD_WORK_SHEET = IconUtils.readIcon("/com/fr/design/standard/add_worksheet"); + protected static final Icon ADD_POLY_SHEET = IconUtils.readIcon("/com/fr/design/standard/add_polysheet"); + private static final Icon WORK_SHEET_ICON = IconUtils.readIcon("/com/fr/design/standard/worksheet"); + private static final Icon POLY_SHEET_ICON = IconUtils.readIcon("/com/fr/design/standard/polysheet_normal.svg"); + private static final Icon LEFT_ICON = IconUtils.readIcon("/com/fr/design/standard/prepage/pre_page"); + private static final Icon RIGHT_ICON = IconUtils.readIcon("/com/fr/design/standard/nextpage"); + private static final Icon DISABLED_LEFT_ICON = IconUtils.readIcon("/com/fr/design/standard/prepage/pre_page_disabled.svg"); + private static final Icon DISABLED_RIGHT_ICON = IconUtils.readIcon("/com/fr/design/standard/nextpage/next_page_disabled.svg"); private static final int NUM = 10; private static final int ICON_SEP_DISTANCE = 8; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java index 06c9ff0c1..7b195e469 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.alphafine.component; +import com.fr.base.svg.IconUtils; import com.fr.design.actions.help.alphafine.AlphaFineContext; import com.fr.design.actions.help.alphafine.AlphaFineListener; import com.fr.design.constants.UIConstants; @@ -30,7 +31,7 @@ public class AlphaFinePane extends BasicPane { setPreferredSize(new Dimension(24, 24)); setLayout(new BorderLayout()); UIButton refreshButton = new UIButton(); - refreshButton.setIcon(IOUtils.readIcon(("/com/fr/design/mainframe/alphafine/images/smallsearch.png"))); + refreshButton.setIcon(IconUtils.readIcon(("/com/fr/design/standard/smallsearch_normal.svg"))); refreshButton.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Learn_More_About")); refreshButton.set4ToolbarButton(); refreshButton.setRolloverEnabled(false); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java index 9353570a3..1495b564b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.guide.entry; +import com.fr.base.svg.IconUtils; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButton; @@ -35,7 +36,7 @@ public class GuideEntryPane extends BasicPane { setPreferredSize(new Dimension(24, 24)); setLayout(new BorderLayout()); button = new UIButton(); - button.setIcon(IOUtils.readIcon("/com/fr/design/mainframe/guide/guide.png")); + button.setIcon(IconUtils.readIcon("com/fr/design/standard/guide.svg")); button.setToolTipText(Toolkit.i18nText(Toolkit.i18nText("Fine-Design_Guide_Entry_Name"))); button.set4ToolbarButton(); button.setRolloverEnabled(false); 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 d90ceb055..7b974d871 100644 --- a/designer-realize/src/main/java/com/fr/start/MainDesigner.java +++ b/designer-realize/src/main/java/com/fr/start/MainDesigner.java @@ -306,7 +306,7 @@ public class MainDesigner extends BaseDesigner { private void createSaveButton() { - saveButton = new UIButton("/com/fr/design/images/buttonicon/save.png", true); + saveButton = new UIButton("/com/fr/design/standard/save/save", true); saveButton.setToolTipText(KeySetUtils.SAVE_TEMPLATE.getMenuKeySetName()); saveButton.set4ToolbarButton(); saveButton.addActionListener(new ActionListener() { @@ -323,7 +323,7 @@ public class MainDesigner extends BaseDesigner { private void createUndoButton() { - undo = new UIButton("/com/fr/design/images/buttonicon/undo.png", true); + undo = new UIButton("/com/fr/design/standard/undo/undo", true); undo.setToolTipText(KeySetUtils.UNDO.getMenuKeySetName()); undo.set4ToolbarButton(); undo.addActionListener(new ActionListener() { @@ -338,7 +338,7 @@ public class MainDesigner extends BaseDesigner { } private void createRedoButton() { - redo = new UIButton("/com/fr/design/images/buttonicon/redo.png", true); + redo = new UIButton("/com/fr/design/standard/redo/redo", true); redo.setToolTipText(KeySetUtils.REDO.getMenuKeySetName()); redo.set4ToolbarButton(); redo.addActionListener(new ActionListener() { From f189f1ba19d50d2af899473b70401bf59770b5cd Mon Sep 17 00:00:00 2001 From: Yann Date: Fri, 17 Mar 2023 10:05:56 +0800 Subject: [PATCH 07/70] =?UTF-8?q?REPORT-91327=20=E4=BF=AE=E5=A4=8DDesignTa?= =?UTF-8?q?bleDataManagerTest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/data/DesignTableDataManagerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/test/java/com/fr/design/data/DesignTableDataManagerTest.java b/designer-base/src/test/java/com/fr/design/data/DesignTableDataManagerTest.java index 9a5ce7b8c..1a23555f6 100644 --- a/designer-base/src/test/java/com/fr/design/data/DesignTableDataManagerTest.java +++ b/designer-base/src/test/java/com/fr/design/data/DesignTableDataManagerTest.java @@ -23,7 +23,7 @@ import java.util.HashMap; import java.util.Map; @RunWith(PowerMockRunner.class) -@PrepareForTest({TableDataFactory.class, StoreProcedure.class, TableDataConfig.class, ProcedureConfig.class}) +@PrepareForTest({TableDataFactory.class, StoreProcedure.class, TableDataConfig.class, ProcedureConfig.class, TemplateTableDataWrapper.class}) @SuppressStaticInitializationFor({"com.fr.design.data.tabledata.wrapper.TableDataFactory"}) public class DesignTableDataManagerTest { From 1f73a890b95d93758f2e996ca2608d5f43984898 Mon Sep 17 00:00:00 2001 From: Yann Date: Fri, 17 Mar 2023 10:10:36 +0800 Subject: [PATCH 08/70] =?UTF-8?q?REPORT-91327=20=E4=BF=AE=E5=A4=8DBasicTab?= =?UTF-8?q?leDataUtilsTest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/data/BasicTableDataUtilsTest.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/designer-base/src/test/java/com/fr/design/data/BasicTableDataUtilsTest.java b/designer-base/src/test/java/com/fr/design/data/BasicTableDataUtilsTest.java index 7391924ac..a5721a36a 100644 --- a/designer-base/src/test/java/com/fr/design/data/BasicTableDataUtilsTest.java +++ b/designer-base/src/test/java/com/fr/design/data/BasicTableDataUtilsTest.java @@ -50,19 +50,19 @@ public class BasicTableDataUtilsTest extends TestCase { TableDataSource source = EasyMock.mock(TableDataSource.class); TableData tableData = EasyMock.mock(TableData.class); EasyMock.expect(source.getTableData("ds1")).andReturn(tableData).anyTimes(); - EasyMock.expect(source.getTableData("test-ds1")).andReturn(tableData).anyTimes(); - EasyMock.expect(source.getTableData("test-ds11")).andReturn(null).anyTimes(); + EasyMock.expect(source.getTableData("test_ds1")).andReturn(tableData).anyTimes(); + EasyMock.expect(source.getTableData("test_ds11")).andReturn(null).anyTimes(); EasyMock.replay(source, tableData); - Assert.assertEquals("test-ds1", BasicTableDataUtils.getTableDataName(true, source, "ds1", "test", false)); - Assert.assertEquals("test-ds11", BasicTableDataUtils.getTableDataName(false, source, "ds1", "test", false)); + Assert.assertEquals("test_ds1", BasicTableDataUtils.getTableDataName(true, source, "ds1", "test", false)); + Assert.assertEquals("test_ds11", BasicTableDataUtils.getTableDataName(false, source, "ds1", "test", false)); source = EasyMock.mock(TableDataSource.class); EasyMock.expect(source.getTableData("ds1")).andReturn(null).anyTimes(); - EasyMock.expect(source.getTableData("test-ds1")).andReturn(null).anyTimes(); + EasyMock.expect(source.getTableData("test_ds1")).andReturn(null).anyTimes(); EasyMock.replay(source); - Assert.assertEquals("test-ds1", BasicTableDataUtils.getTableDataName(true, source, "ds1", "test", false)); + Assert.assertEquals("test_ds1", BasicTableDataUtils.getTableDataName(true, source, "ds1", "test", false)); Assert.assertEquals("ds1", BasicTableDataUtils.getTableDataName(false, source, "ds1", "test", false)); - Assert.assertEquals("test-ds1", BasicTableDataUtils.getTableDataName(false, source, "ds1", "test", true)); + Assert.assertEquals("test_ds1", BasicTableDataUtils.getTableDataName(false, source, "ds1", "test", true)); } From 8d2788a1bfec319ff69b350c5cc9fd5c461d8637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yvan-=E6=AC=A7=E9=98=B3=E5=B8=86?= Date: Fri, 17 Mar 2023 10:27:03 +0800 Subject: [PATCH 09/70] =?UTF-8?q?REPORT-91610=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=84=B1=E6=95=8F-=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=86=85en?= =?UTF-8?q?=E4=B8=8B=E9=9D=A2=E6=9D=BF=E6=96=87=E6=A1=88=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=8D=E5=85=A8=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0=E3=80=91en=E3=80=81ja=E3=80=81ko=E4=B8=8B=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E6=96=87=E6=A1=88=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8?= =?UTF-8?q?=20=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91?= =?UTF-8?q?=E4=B8=8E=E4=BA=A7=E5=93=81=E6=B2=9F=E9=80=9A=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E8=B0=83=E5=A4=A7=E8=BF=99=E5=87=A0=E4=B8=AA=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E4=B8=8B=E5=BC=B9=E7=AA=97=E7=9A=84=E5=AE=BD=E5=BA=A6=20?= =?UTF-8?q?=E3=80=90review=E5=BB=BA=E8=AE=AE=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/rule/DesensitizationRuleChoosePane.java | 15 +++++++++++++-- .../com/fr/design/i18n/dimension_en.properties | 1 + .../com/fr/design/i18n/dimension_ja_JP.properties | 1 + .../com/fr/design/i18n/dimension_ko_KR.properties | 1 + 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java index 11e30a2e9..d37ed152d 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java @@ -12,6 +12,7 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itableeditorpane.UITableEditAction; import com.fr.design.gui.itableeditorpane.UITableEditorPane; import com.fr.design.gui.itableeditorpane.UITableModelAdapter; +import com.fr.design.i18n.DesignSizeI18nManager; import com.fr.design.i18n.Toolkit; import com.fr.stable.StringUtils; import com.fr.stable.collections.CollectionUtils; @@ -25,6 +26,7 @@ import javax.swing.table.TableCellRenderer; import java.awt.CardLayout; import java.awt.Color; import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.util.LinkedHashSet; import java.util.List; @@ -177,6 +179,15 @@ public class DesensitizationRuleChoosePane extends JPanel { .collect(Collectors.toSet()); } + /** + * 根据语言环境获取规则编辑页面的宽高 + * + * @return + */ + private Dimension getRuleEditPaneDimensionByLocale() { + return DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane"); + } + /** * 规则状态展示页面 */ @@ -256,7 +267,7 @@ public class DesensitizationRuleChoosePane extends JPanel { public void doCancel() { super.doCancel(); } - }, BasicDialog.DEFAULT); + }, getRuleEditPaneDimensionByLocale()); basicDialog.setVisible(true); } } @@ -301,7 +312,7 @@ public class DesensitizationRuleChoosePane extends JPanel { public void doCancel() { super.doCancel(); } - }, BasicDialog.DEFAULT); + }, getRuleEditPaneDimensionByLocale()); basicDialog.setVisible(true); } } diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties index d1f8ee17b..5098bc3c9 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties @@ -24,3 +24,4 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.dialog=600*500 com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369 com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.file.MultiTemplateTabPane.popUpMenu=350*65 +com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties index a5b3a03fe..6c3ac0e58 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties @@ -23,3 +23,4 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.dialog=600*500 com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369 com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65 +com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties index 4e8b3f9cd..eaa75e14a 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties @@ -23,3 +23,4 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.dialog=600*500 com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369 com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65 +com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 From 78d4a87852e364f4f12b15a6567e07f932834150 Mon Sep 17 00:00:00 2001 From: wxr257486 Date: Fri, 17 Mar 2023 16:22:33 +0800 Subject: [PATCH 10/70] =?UTF-8?q?REPORT-89253=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=9B=BF=E6=8D=A2=E9=AB=98=E6=B8=85svg=E5=9B=BE?= =?UTF-8?q?=E6=A0=87=E7=AC=AC2=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/constants/UIConstants.java | 2 +- .../com/fr/design/file/MultiTemplateTabPane.java | 6 +++--- .../java/com/fr/design/gui/UILookAndFeel.java | 4 ++-- .../java/com/fr/design/gui/itree/UITreeUI.java | 5 +++-- .../design/gui/itree/filetree/FileTreeIcon.java | 15 ++++++++------- .../design/style/color/UIToolbarColorButton.java | 2 +- .../src/main/java/com/fr/file/FileNodeFILE.java | 3 ++- .../gui/modern_style_cht_file_icon_16x16.png | Bin 609 -> 0 bytes .../gui/modern_style_cpt_file_icon_16x16.png | Bin 564 -> 0 bytes .../gui/modern_style_frm_file_icon_16x16.png | Bin 497 -> 0 bytes .../fr/design/images/lookandfeel/FileIcon.svg | 8 ++++++++ .../design/images/lookandfeel/TreeLeafIcon.svg | 8 ++++++++ .../com/fr/design/standard/background_normal.svg | 7 +++++++ .../fr/design/standard/bias/bias_disabled.svg | 7 +++++++ .../com/fr/design/standard/bias/bias_normal.svg | 7 +++++++ .../standard/bindcolunm/bind_column_disabled.svg | 7 +++++++ .../standard/bindcolunm/bind_column_normal.svg | 7 +++++++ .../com/fr/design/standard/cell_default.svg | 13 +++++++++++++ .../fr/design/standard/chart/chart_disabled.svg | 7 +++++++ .../fr/design/standard/chart/chart_normal.svg | 7 +++++++ .../fr/design/standard/close/close_mouseover.svg | 9 +++++++++ .../fr/design/standard/close/close_normal.svg | 3 +++ .../com/fr/design/standard/close/close_press.svg | 9 +++++++++ .../design/standard/fileicon/cptx_file_icon.svg | 14 ++++++++++++++ .../standard/fileicon/cptx_file_icon_locked.svg | 13 +++++++++++++ .../filetree_folder_half_authority_normal.svg | 4 ++++ .../com/fr/design/standard/fileicon/folder.svg | 3 +++ .../com/fr/design/standard/fileicon/minus.svg | 3 +++ .../modern_style_cht_file_icon_16x16.svg | 9 +++++++++ .../modern_style_cpt_file_icon_16x16.svg | 9 +++++++++ .../modern_style_frm_file_icon_16x16.svg | 9 +++++++++ .../com/fr/design/standard/fileicon/plus.svg | 3 +++ .../com/fr/design/standard/floatpop_normal.svg | 9 +++++++++ .../com/fr/design/standard/foreground_normal.svg | 7 +++++++ .../design/standard/formula/formula_disabled.svg | 7 +++++++ .../design/standard/formula/formula_normal.svg | 7 +++++++ .../fr/design/standard/image/image_disabled.svg | 12 ++++++++++++ .../fr/design/standard/image/image_normal.svg | 10 ++++++++++ .../fr/design/standard/merge/merge_disabled.svg | 11 +++++++++++ .../fr/design/standard/merge/merge_normal.svg | 11 +++++++++++ .../resources/com/fr/design/standard/noboder.svg | 3 +++ .../com/fr/design/standard/popup_normal.svg | 7 +++++++ .../standard/richtext/richtext_disabled.svg | 7 +++++++ .../design/standard/richtext/richtext_normal.svg | 7 +++++++ .../standard/subreport/sub_report_disabled.svg | 12 ++++++++++++ .../standard/subreport/sub_report_normal.svg | 10 ++++++++++ .../fr/design/standard/text/text_disabled.svg | 7 +++++++ .../com/fr/design/standard/text/text_normal.svg | 7 +++++++ .../fr/design/standard/uimode/view_normal.svg | 7 +++++++ .../fr/design/standard/uimode/view_pressed.svg | 7 +++++++ .../design/standard/unmerge/unmerge_disabled.svg | 10 ++++++++++ .../design/standard/unmerge/unmerge_normal.svg | 8 ++++++++ .../com/fr/design/actions/cell/BorderAction.java | 4 ++-- .../actions/cell/UIToolbarBorderButton.java | 2 +- .../cell/style/ReportFontForegroundAction.java | 2 +- .../cell/style/StyleBackgroundAction.java | 2 +- .../actions/edit/merge/MergeCellAction.java | 2 +- .../actions/edit/merge/UnmergeCellAction.java | 2 +- .../actions/insert/cell/BiasCellAction.java | 2 +- .../actions/insert/cell/ChartCellAction.java | 2 +- .../actions/insert/cell/DSColumnCellAction.java | 2 +- .../actions/insert/cell/FormulaCellAction.java | 2 +- .../actions/insert/cell/GeneralCellAction.java | 2 +- .../actions/insert/cell/ImageCellAction.java | 2 +- .../actions/insert/cell/RichTextCellAction.java | 2 +- .../actions/insert/cell/SubReportCellAction.java | 2 +- .../actions/insert/flot/ChartFloatAction.java | 2 +- .../actions/insert/flot/FormulaFloatAction.java | 2 +- .../actions/insert/flot/ImageFloatAction.java | 2 +- .../actions/insert/flot/TextBoxFloatAction.java | 2 +- .../com/fr/design/mainframe/ElementCasePane.java | 2 +- 71 files changed, 372 insertions(+), 37 deletions(-) delete mode 100644 designer-base/src/main/resources/com/fr/design/images/gui/modern_style_cht_file_icon_16x16.png delete mode 100644 designer-base/src/main/resources/com/fr/design/images/gui/modern_style_cpt_file_icon_16x16.png delete mode 100644 designer-base/src/main/resources/com/fr/design/images/gui/modern_style_frm_file_icon_16x16.png create mode 100644 designer-base/src/main/resources/com/fr/design/images/lookandfeel/FileIcon.svg create mode 100644 designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/background_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/bias/bias_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/bias/bias_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/cell_default.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/chart/chart_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/chart/chart_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/close/close_mouseover.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/close/close_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/close/close_press.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon_locked.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/fileicon/filetree_folder_half_authority_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/fileicon/folder.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/fileicon/minus.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cht_file_icon_16x16.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cpt_file_icon_16x16.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_frm_file_icon_16x16.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/fileicon/plus.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/floatpop_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/foreground_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/formula/formula_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/formula/formula_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/image/image_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/image/image_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/merge/merge_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/merge/merge_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/noboder.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/popup_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/richtext/richtext_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/richtext/richtext_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/subreport/sub_report_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/subreport/sub_report_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/text/text_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/text/text_normal.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/unmerge/unmerge_disabled.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/unmerge/unmerge_normal.svg diff --git a/designer-base/src/main/java/com/fr/design/constants/UIConstants.java b/designer-base/src/main/java/com/fr/design/constants/UIConstants.java index 70fb3cd68..17d7882c1 100644 --- a/designer-base/src/main/java/com/fr/design/constants/UIConstants.java +++ b/designer-base/src/main/java/com/fr/design/constants/UIConstants.java @@ -57,7 +57,7 @@ public interface UIConstants { * Cell default cursor. */ public static final Cursor CELL_DEFAULT_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor( - IOUtils.readImage("/com/fr/base/images/cell/cursor/cell_default.png"), + SVGLoader.load("/com/fr/design/standard/cell_default.svg"), new Point(16, 16), "CellDefaultCursor"); public static final Cursor DRAW_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor( IOUtils.readImage("/com/fr/base/images/cell/cursor/cursor_draw.png"), diff --git a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java index 9af937669..94995e0bc 100644 --- a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java @@ -89,9 +89,9 @@ public class MultiTemplateTabPane extends JComponent { private static Icon LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list_normal.svg"); private static Icon MOUSE_OVER_LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list_pressed.svg"); private static Icon MOUSE_PRESS_LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list_pressed.svg"); - private static Icon CLOSE = BaseUtils.readIcon("/com/fr/design/images/buttonicon/close_icon.png"); - private static Icon MOUSE_OVER_CLOSE = BaseUtils.readIcon("/com/fr/design/images/buttonicon/mouseoverclose icon.png"); - private static Icon MOUSE_PRESS_CLOSE = BaseUtils.readIcon("/com/fr/design/images/buttonicon/pressclose icon.png"); + private static Icon CLOSE = IconUtils.readIcon("/com/fr/design/standard/close/close_normal.svg"); + private static Icon MOUSE_OVER_CLOSE = IconUtils.readIcon("/com/fr/design/standard/close/close_mouseover.svg"); + private static Icon MOUSE_PRESS_CLOSE = IconUtils.readIcon("/com/fr/design/standard/close/close_press.svg"); private static final Icon WHITE_SAVING_CLOSE_ICON = new ImageIcon(IOUtils.readImage("/com/fr/design/images/file/white_saving_close.gif")); private static final Icon GREY_SAVING_CLOSE_ICON = new ImageIcon(IOUtils.readImage("/com/fr/design/images/file/grey_saving_close.gif")); private static final String ELLIPSIS = "..."; diff --git a/designer-base/src/main/java/com/fr/design/gui/UILookAndFeel.java b/designer-base/src/main/java/com/fr/design/gui/UILookAndFeel.java index 488cbad37..a8e45b24c 100644 --- a/designer-base/src/main/java/com/fr/design/gui/UILookAndFeel.java +++ b/designer-base/src/main/java/com/fr/design/gui/UILookAndFeel.java @@ -160,10 +160,10 @@ public class UILookAndFeel extends MetalLookAndFeel { table.put("Tree.collapsedIcon", loadIcon("TreePlusIcon.png", this)); table.put("Tree.openIcon", loadIcon("TreeFolderOpenedIcon.png", this)); table.put("Tree.closedIcon", loadIcon("TreeFolderClosedIcon.png", this)); - table.put("Tree.leafIcon", loadIcon("TreeLeafIcon.png", this)); + table.put("Tree.leafIcon", loadIcon("TreeLeafIcon.svg", this)); table.put("FileView.directoryIcon", loadIcon("DirectoryIcon.png", this)); table.put("FileView.computerIcon", loadIcon("ComputerIcon.png", this)); - table.put("FileView.fileIcon", loadIcon("FileIcon.png", this)); + table.put("FileView.fileIcon", loadIcon("FileIcon.svg", this)); table.put("FileView.floppyDriveIcon", loadIcon("FloppyIcon.png", this)); table.put("FileView.hardDriveIcon", loadIcon("HarddiskIcon.png", this)); table.put("FileChooser.detailsViewIcon", loadIcon("FileDetailsIcon.png", this)); diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/UITreeUI.java b/designer-base/src/main/java/com/fr/design/gui/itree/UITreeUI.java index fde3bf646..a4d66c438 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/UITreeUI.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/UITreeUI.java @@ -1,6 +1,7 @@ package com.fr.design.gui.itree; import com.fr.base.BaseUtils; +import com.fr.base.svg.IconUtils; import com.fr.design.utils.ThemeUtils; import javax.swing.*; @@ -27,8 +28,8 @@ public class UITreeUI extends MetalTreeUI { protected void installDefaults() { super.installDefaults(); - setExpandedIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/minus.png")); - setCollapsedIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/plus.png")); + setExpandedIcon(IconUtils.readIcon("/com/fr/design/standard/fileicon/minus.svg")); + setCollapsedIcon(IconUtils.readIcon("/com/fr/design/standard/fileicon/plus.svg")); if (tree.getCellRenderer() instanceof DefaultTreeCellRenderer) { DefaultTreeCellRenderer r = (DefaultTreeCellRenderer) tree.getCellRenderer(); r.setBackgroundNonSelectionColor(ThemeUtils.TEXT_BG_COLOR); diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileTreeIcon.java b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileTreeIcon.java index b2956b70f..4bea4e315 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileTreeIcon.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileTreeIcon.java @@ -1,6 +1,7 @@ package com.fr.design.gui.itree.filetree; import com.fr.base.BaseUtils; +import com.fr.base.svg.IconUtils; import com.fr.design.ExtraDesignClassManager; import com.fr.design.icon.LocalFileIcon; import com.fr.design.icon.LockIcon; @@ -24,9 +25,9 @@ public class FileTreeIcon { public static final Icon BLANK_IMAGE_ICON = BaseUtils.readIcon("/com/fr/design/images/gui/blank.gif"); - public static final Icon FOLDER_IMAGE_ICON = BaseUtils.readIcon("/com/fr/design/images/gui/folder.png"); + public static final Icon FOLDER_IMAGE_ICON = IconUtils.readIcon("/com/fr/design/standard/fileicon/folder.svg"); public static final Icon FOLDER_HALF_IMAGE_ICON = - BaseUtils.readIcon("/com/fr/design/images/gui/filetree_folder_half_authority_normal.png"); + IconUtils.readIcon("/com/fr/design/standard/fileicon/filetree_folder_half_authority_normal.svg"); public static final Icon FILE_IMAGE_ICON = UIManager.getIcon("FileView.fileIcon"); @@ -45,14 +46,14 @@ public class FileTreeIcon { public static final Icon CHT_FILE_IMAGE_ICON = BaseUtils.readIcon("/com/fr/design/images/gui/cht.png"); public static final Icon MODERN_CPT_FILE_IMAGE_ICON = - BaseUtils.readIcon("/com/fr/design/images/gui/modern_style_cpt_file_icon_16x16.png"); + IconUtils.readIcon("/com/fr/design/standard/fileicon/modern_style_cpt_file_icon_16x16.svg"); public static final Icon MODERN_FRM_FILE_IMAGE_ICON = - BaseUtils.readIcon("/com/fr/design/images/gui/modern_style_frm_file_icon_16x16.png"); + IconUtils.readIcon("/com/fr/design/standard/fileicon/modern_style_frm_file_icon_16x16.svg"); public static final Icon MODERN_CHT_FILE_IMAGE_ICON = - BaseUtils.readIcon("/com/fr/design/images/gui/modern_style_cht_file_icon_16x16.png"); + IconUtils.readIcon("/com/fr/design/standard/fileicon/modern_style_cht_file_icon_16x16.svg"); - public static final Icon CPTX_ICON = BaseUtils.readIcon("/com/fr/nx/app/designer/cptx_file_icon.png"); - public static final Icon CPTX_LOCKED_ICON = BaseUtils.readIcon("/com/fr/nx/app/designer/cptx_file_icon_locked.png"); + public static final Icon CPTX_ICON = IconUtils.readIcon("/com/fr/design/standard/fileicon/cptx_file_icon.svg"); + public static final Icon CPTX_LOCKED_ICON = IconUtils.readIcon("/com/fr/design/standard/fileicon/cptx_file_icon_locked.svg"); public static final LockIcon FOLDER_LOCK_ICON = new LockIcon(BaseUtils.readImage("/com/fr/design/images/gui/fold.png")); diff --git a/designer-base/src/main/java/com/fr/design/style/color/UIToolbarColorButton.java b/designer-base/src/main/java/com/fr/design/style/color/UIToolbarColorButton.java index 8627f27a5..c7c32f795 100644 --- a/designer-base/src/main/java/com/fr/design/style/color/UIToolbarColorButton.java +++ b/designer-base/src/main/java/com/fr/design/style/color/UIToolbarColorButton.java @@ -35,7 +35,7 @@ public class UIToolbarColorButton extends UICombinationButton implements PopupHi private UIObserverListener uiObserverListener; public UIToolbarColorButton(Icon icon) { - super(new UIColorButton(icon), new UIButton(IconUtils.readIcon("/com/fr/design/images/gui/popup"))); + super(new UIColorButton(icon), new UIButton(IconUtils.readIcon("/com/fr/design/standard/popup"))); getLeftButton().setEventBanned(true); getRightButton().addFocusListener(new FocusListener() { diff --git a/designer-base/src/main/java/com/fr/file/FileNodeFILE.java b/designer-base/src/main/java/com/fr/file/FileNodeFILE.java index bcf1ff768..d0fd62896 100644 --- a/designer-base/src/main/java/com/fr/file/FileNodeFILE.java +++ b/designer-base/src/main/java/com/fr/file/FileNodeFILE.java @@ -2,6 +2,7 @@ package com.fr.file; import com.fr.base.BaseUtils; import com.fr.base.FRContext; +import com.fr.base.svg.IconUtils; import com.fr.design.file.TemplateResourceManager; import com.fr.io.FineEncryptUtils; import com.fr.base.io.XMLEncryptUtils; @@ -168,7 +169,7 @@ public class FileNodeFILE implements FILE { } if (ComparatorUtils.equals(node.getEnvPath(), ProjectConstants.REPORTLETS_NAME)) { - return BaseUtils.readIcon("/com/fr/base/images/oem/logo.png"); + return IconUtils.readIcon("/com/fr/base/images/oem/logo.svg"); } else { if (!hasFullAuth) { diff --git a/designer-base/src/main/resources/com/fr/design/images/gui/modern_style_cht_file_icon_16x16.png b/designer-base/src/main/resources/com/fr/design/images/gui/modern_style_cht_file_icon_16x16.png deleted file mode 100644 index a1e244a9bb22c865e7a4cae47caaefd0f32d4443..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 609 zcmV-n0-pVeP)Px%8%ab#R5%fRQ@w5zK@k4-e(cK`qX?oi%0+|}2vJec_FtOOPTCHxk+wC`==UvFM?A%~B&>JCwC3;`?apQ}^ePL5JfNL3$wgH3mRVe@*XGaL4LtIJL zK$ltdFRV3*XLkkhY6_E1E11r@{nHCxO663A40%qBQ$>`N#EH^F(@vpG@MX3&JxsFnh);v zRiU=UY&PTIy=JrdknB2`{j|4j+i?&C6LKs(CMJyAyWj7>YPDLADdsl^E<_W-&zXqv v=}p*i94~D8UoMyV`HF70dq^A0M%wrTVkY8~k<`H&00000NkvXXu0mjfK)Vx1 diff --git a/designer-base/src/main/resources/com/fr/design/images/gui/modern_style_cpt_file_icon_16x16.png b/designer-base/src/main/resources/com/fr/design/images/gui/modern_style_cpt_file_icon_16x16.png deleted file mode 100644 index 15966d96d17a8445fa9d06fe635d1c03cbaae870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P)Px$?ny*JR5%fZQ_X4FO$h6O-wNa6GziUyATNx5ex)e=^F&A572FwUHBSq zeSo|{1!=bt#D%RJT_p?*g0>oGGBG!EJ!jep(_~5yT<$$T-*>-z4p#x$U@*|?^?G$W zoht0#WR_(~&+~ru`~8K^#m#23Ua3?*+O}OtgIC$)WzzTkK-cvrF&)yt&oy5@L1j@_7m<5J3q_rL!l9K847FC^q`3$8Dqk(6)&>}?mZ+bS$; zxqeB&4%@rWXLx(`15Y260n5Pm--3!H5lD;!Vp*|7)iUhyo30-+VitwzcV!Nb6 zAr-7-)z%akDpk=s@j{%q0k$?xJnB>trJIprStCet2C3Mvbd>Yjl}0A{WX~oL5qeGu zgTBLJu>a{C6w0)00&18>-PtT?F-Va7)`pH3cdkr1&aDybJ+9(;tB9(70p_YV4@)qj zIqq2kVJIMkFjSSbWsLD|*#NJ!?byKS*Khc;h>*|ci6s0`tJQvT&Dt2#z~nrq5eQnQ zX@dUCVGsnb+wHc$N^mWirfKobv)SyB&M$kt-dRE(_aK+cN%{}|Xf(QJ+E7ULF}?d$ zr_(u4z`VzepnsqbhrwRP`TQR?@1>^Bmy}Te0000Px$t4TybR5%fZlg&=TKoG~LA5e-~q6cUQ9P|YUG4VjsBdpc<{_~sNsRC%j;ZU<}`yvcOh1SQ+G|hB2n|%%j zgG49iR;y)Omi1OeOVjjVyrL-Zji&4R4LW*4!1sN%-EN-%)|UK2_o2x(X*6hX840ORzLKJDn8>0+zz-M+A&3KpEwss_Jn9 zj)Y-M+DaiC?e1HlgsYkgkNpa4k`U(e@YkQv<2VMQkgXtaX4QZ(6Xb@Vi(`xle0m8S zB@_}*Q4q*#ma|asWHJHHIT(h4&%A!F*Xs-N$@9oj(wqn=n8dNsM%c;sola-9FYvFJ zrfE>A;Js`%Bb?tlj`Nl2ixN;d#s6XDx^BKpGB11*#D2lL@4DUYa + + icon_列表_文件_normal + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg b/designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg new file mode 100644 index 000000000..8b3b40bbe --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg @@ -0,0 +1,8 @@ + + + icon_列表_文件_normal + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/background_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/background_normal.svg new file mode 100644 index 000000000..577e8bd8a --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/background_normal.svg @@ -0,0 +1,7 @@ + + + icon_文本背景色_normal + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/bias/bias_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/bias/bias_disabled.svg new file mode 100644 index 000000000..bc8c7ac44 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/bias/bias_disabled.svg @@ -0,0 +1,7 @@ + + + icon_斜线_disabled + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/bias/bias_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/bias/bias_normal.svg new file mode 100644 index 000000000..e20ec42eb --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/bias/bias_normal.svg @@ -0,0 +1,7 @@ + + + icon_斜线_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_disabled.svg new file mode 100644 index 000000000..6c80b82af --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_disabled.svg @@ -0,0 +1,7 @@ + + + icon_插入数据列_disabled + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_normal.svg new file mode 100644 index 000000000..ea35ccb27 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_normal.svg @@ -0,0 +1,7 @@ + + + icon_插入数据列_nomal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/cell_default.svg b/designer-base/src/main/resources/com/fr/design/standard/cell_default.svg new file mode 100644 index 000000000..d897c1793 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/cell_default.svg @@ -0,0 +1,13 @@ + + + icon/鼠标状态/十字光标 + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/chart/chart_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/chart/chart_disabled.svg new file mode 100644 index 000000000..b2b724c64 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/chart/chart_disabled.svg @@ -0,0 +1,7 @@ + + + icon_图表_disabled + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/chart/chart_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/chart/chart_normal.svg new file mode 100644 index 000000000..59fc97567 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/chart/chart_normal.svg @@ -0,0 +1,7 @@ + + + icon_图表_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/close/close_mouseover.svg b/designer-base/src/main/resources/com/fr/design/standard/close/close_mouseover.svg new file mode 100644 index 000000000..bc0afc24d --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/close/close_mouseover.svg @@ -0,0 +1,9 @@ + + + icon_关闭_hover + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/close/close_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/close/close_normal.svg new file mode 100644 index 000000000..23c1cbe2c --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/close/close_normal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/close/close_press.svg b/designer-base/src/main/resources/com/fr/design/standard/close/close_press.svg new file mode 100644 index 000000000..bc0afc24d --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/close/close_press.svg @@ -0,0 +1,9 @@ + + + icon_关闭_hover + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon.svg new file mode 100644 index 000000000..79eff5861 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon_locked.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon_locked.svg new file mode 100644 index 000000000..1b662d0bf --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon_locked.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/filetree_folder_half_authority_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/filetree_folder_half_authority_normal.svg new file mode 100644 index 000000000..55be60bd4 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/filetree_folder_half_authority_normal.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/folder.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/folder.svg new file mode 100644 index 000000000..ebafeec23 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/folder.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/minus.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/minus.svg new file mode 100644 index 000000000..067df99f8 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/minus.svg @@ -0,0 +1,3 @@ + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cht_file_icon_16x16.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cht_file_icon_16x16.svg new file mode 100644 index 000000000..0a764389b --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cht_file_icon_16x16.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cpt_file_icon_16x16.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cpt_file_icon_16x16.svg new file mode 100644 index 000000000..d691f38b6 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cpt_file_icon_16x16.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_frm_file_icon_16x16.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_frm_file_icon_16x16.svg new file mode 100644 index 000000000..fa61a511f --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_frm_file_icon_16x16.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/plus.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/plus.svg new file mode 100644 index 000000000..c2b0e9d9c --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/plus.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/floatpop_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/floatpop_normal.svg new file mode 100644 index 000000000..95806104d --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/floatpop_normal.svg @@ -0,0 +1,9 @@ + + + icon_悬浮元素&三角_normal + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/foreground_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/foreground_normal.svg new file mode 100644 index 000000000..0eaa40e93 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/foreground_normal.svg @@ -0,0 +1,7 @@ + + + icon_文本前景色_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/formula/formula_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/formula/formula_disabled.svg new file mode 100644 index 000000000..18eb078e7 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/formula/formula_disabled.svg @@ -0,0 +1,7 @@ + + + icon_公式_disabled + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/formula/formula_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/formula/formula_normal.svg new file mode 100644 index 000000000..981ec11b4 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/formula/formula_normal.svg @@ -0,0 +1,7 @@ + + + icon_公式_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/image/image_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/image/image_disabled.svg new file mode 100644 index 000000000..b18058f59 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/image/image_disabled.svg @@ -0,0 +1,12 @@ + + + icon_图片__disabled + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/image/image_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/image/image_normal.svg new file mode 100644 index 000000000..19eb76199 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/image/image_normal.svg @@ -0,0 +1,10 @@ + + + icon_图片_normal + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/merge/merge_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/merge/merge_disabled.svg new file mode 100644 index 000000000..a54f56a5b --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/merge/merge_disabled.svg @@ -0,0 +1,11 @@ + + + icon_合并单元格_disabled + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/merge/merge_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/merge/merge_normal.svg new file mode 100644 index 000000000..ad7584497 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/merge/merge_normal.svg @@ -0,0 +1,11 @@ + + + icon_合并单元格_normal + + + + a + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/noboder.svg b/designer-base/src/main/resources/com/fr/design/standard/noboder.svg new file mode 100644 index 000000000..b3ef846a9 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/noboder.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/popup_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/popup_normal.svg new file mode 100644 index 000000000..81e81b0a1 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/popup_normal.svg @@ -0,0 +1,7 @@ + + + icon_组件分隔_箭头下_normal + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/richtext/richtext_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/richtext/richtext_disabled.svg new file mode 100644 index 000000000..916c43303 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/richtext/richtext_disabled.svg @@ -0,0 +1,7 @@ + + + icon_富文本_disabled + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/richtext/richtext_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/richtext/richtext_normal.svg new file mode 100644 index 000000000..3665dd01e --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/richtext/richtext_normal.svg @@ -0,0 +1,7 @@ + + + icon_富文本_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/subreport/sub_report_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/subreport/sub_report_disabled.svg new file mode 100644 index 000000000..14ee3f16c --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/subreport/sub_report_disabled.svg @@ -0,0 +1,12 @@ + + + icon_子报表_disabled + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/subreport/sub_report_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/subreport/sub_report_normal.svg new file mode 100644 index 000000000..d06985a52 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/subreport/sub_report_normal.svg @@ -0,0 +1,10 @@ + + + icon_子报表_normal + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/text/text_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/text/text_disabled.svg new file mode 100644 index 000000000..a25d12a70 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/text/text_disabled.svg @@ -0,0 +1,7 @@ + + + icon_普通文本_disabled + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/text/text_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/text/text_normal.svg new file mode 100644 index 000000000..bf3b0c687 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/text/text_normal.svg @@ -0,0 +1,7 @@ + + + icon_普通文本_normal + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/uimode/view_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/uimode/view_normal.svg index e69de29bb..8a44f2805 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/uimode/view_normal.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/uimode/view_normal.svg @@ -0,0 +1,7 @@ + + + icon 显示 + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg b/designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg index e69de29bb..8a44f2805 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg @@ -0,0 +1,7 @@ + + + icon 显示 + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/unmerge/unmerge_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/unmerge/unmerge_disabled.svg new file mode 100644 index 000000000..bb9f7a22f --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/unmerge/unmerge_disabled.svg @@ -0,0 +1,10 @@ + + + icon_拆分单元格_disabled + + + + + + + diff --git a/designer-base/src/main/resources/com/fr/design/standard/unmerge/unmerge_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/unmerge/unmerge_normal.svg new file mode 100644 index 000000000..3af2c0ff3 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/unmerge/unmerge_normal.svg @@ -0,0 +1,8 @@ + + + icon_拆分单元格_normal + + + + + diff --git a/designer-realize/src/main/java/com/fr/design/actions/cell/BorderAction.java b/designer-realize/src/main/java/com/fr/design/actions/cell/BorderAction.java index 8752d54de..65744b9b6 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/cell/BorderAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/cell/BorderAction.java @@ -3,10 +3,10 @@ */ package com.fr.design.actions.cell; -import com.fr.base.BaseUtils; import com.fr.base.CellBorderStyle; import com.fr.base.NameStyle; import com.fr.base.Style; +import com.fr.base.svg.IconUtils; import com.fr.design.actions.ElementCaseAction; import com.fr.design.actions.core.ActionFactory; import com.fr.design.mainframe.ElementCasePane; @@ -60,7 +60,7 @@ public class BorderAction extends ElementCaseAction implements ChangeListener { public JComponent createToolBarComponent() { Object object = this.getValue(UIToolbarBorderButton.class.getName()); if (object == null || !(object instanceof UIToolbarBorderButton)) { - UIToolbarBorderButton borderStylePane = new UIToolbarBorderButton(BaseUtils.readIcon("/com/fr/design/images/m_format/noboder.png"), this.getEditingComponent()); + UIToolbarBorderButton borderStylePane = new UIToolbarBorderButton(IconUtils.readIcon("/com/fr/design/standard/noboder.svg"), this.getEditingComponent()); this.putValue(UIToolbarBorderButton.class.getName(), borderStylePane); borderStylePane.setEnabled(this.isEnabled()); borderStylePane.set4Toolbar(); diff --git a/designer-realize/src/main/java/com/fr/design/actions/cell/UIToolbarBorderButton.java b/designer-realize/src/main/java/com/fr/design/actions/cell/UIToolbarBorderButton.java index 52f753ad0..39e3d3426 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/cell/UIToolbarBorderButton.java +++ b/designer-realize/src/main/java/com/fr/design/actions/cell/UIToolbarBorderButton.java @@ -47,7 +47,7 @@ public class UIToolbarBorderButton extends UICombinationButton implements PopupH private JPopupMenu popupWin; public UIToolbarBorderButton(Icon icon, ElementCasePane reportPane) { - super(new UIButton(icon), new UIButton(IconUtils.readIcon("/com/fr/design/images/gui/popup"))); + super(new UIButton(icon), new UIButton(IconUtils.readIcon("/com/fr/design/standard/popup"))); this.reportPane = reportPane; } diff --git a/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontForegroundAction.java b/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontForegroundAction.java index 677fd0491..7893cfff4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontForegroundAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontForegroundAction.java @@ -51,7 +51,7 @@ public class ReportFontForegroundAction extends AbstractStyleAction implements C public JComponent createToolBarComponent() { Object object = this.getValue(UIToolbarColorButton.class.getName()); if (object == null || !(object instanceof UIToolbarColorButton)) { - UIToolbarColorButton tbButton = new UIToolbarColorButton(IconUtils.readIcon("/com/fr/design/images/gui/color/foreground")); + UIToolbarColorButton tbButton = new UIToolbarColorButton(IconUtils.readIcon("/com/fr/design/standard/foreground_normal.svg")); this.putValue(UIToolbarColorButton.class.getName(), tbButton); tbButton.set4Toolbar(); tbButton.setEnabled(this.isEnabled()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/cell/style/StyleBackgroundAction.java b/designer-realize/src/main/java/com/fr/design/actions/cell/style/StyleBackgroundAction.java index 7d4376f3c..736fdd87f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/cell/style/StyleBackgroundAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/cell/style/StyleBackgroundAction.java @@ -60,7 +60,7 @@ public class StyleBackgroundAction extends AbstractStyleAction implements Change public JComponent createToolBarComponent() { Object object = this.getValue(UIToolbarColorButton.class.getName()); if (object == null || !(object instanceof UIToolbarColorButton)) { - UIToolbarColorButton tbButton = new UIToolbarColorButton(IconUtils.readIcon("/com/fr/design/images/gui/color/background")); + UIToolbarColorButton tbButton = new UIToolbarColorButton(IconUtils.readIcon("com/fr/design/standard/background_normal.svg")); tbButton.set4Toolbar(); this.putValue(UIToolbarColorButton.class.getName(), tbButton); diff --git a/designer-realize/src/main/java/com/fr/design/actions/edit/merge/MergeCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/edit/merge/MergeCellAction.java index 0bf48382d..fcf5e2bb2 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/edit/merge/MergeCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/edit/merge/MergeCellAction.java @@ -21,7 +21,7 @@ public class MergeCellAction extends ElementCaseAction { this.setMenuKeySet(KeySetUtils.MERGE_CELL); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_edit/merge"); + this.setSmallIcon("/com/fr/design/standard/merge/merge"); } /** diff --git a/designer-realize/src/main/java/com/fr/design/actions/edit/merge/UnmergeCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/edit/merge/UnmergeCellAction.java index 8a35b16d3..f2b967925 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/edit/merge/UnmergeCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/edit/merge/UnmergeCellAction.java @@ -20,7 +20,7 @@ public class UnmergeCellAction extends ElementCaseAction { this.setMenuKeySet(KeySetUtils.UNMERGE_CELL); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_edit/unmerge"); + this.setSmallIcon("/com/fr/design/standard/unmerge/unmerge"); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/BiasCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/BiasCellAction.java index e88366c15..efee97ad2 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/BiasCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/BiasCellAction.java @@ -30,7 +30,7 @@ public class BiasCellAction extends AbstractCellAction implements WorkBookSuppor this.setMenuKeySet(INSERT_SLOPE_LINE); this.setName(getMenuKeySet().getMenuKeySetName()+ "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/bias"); + this.setSmallIcon("/com/fr/design/standard/bias/bias"); } public static final MenuKeySet INSERT_SLOPE_LINE = new MenuKeySet() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/ChartCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/ChartCellAction.java index 7eb36fe24..205d39eac 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/ChartCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/ChartCellAction.java @@ -29,7 +29,7 @@ public class ChartCellAction extends AbstractCellAction implements WorkBookSuppo this.setMenuKeySet(INSERT_CHART); this.setName(getMenuKeySet().getMenuKeySetName()+ "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/chart"); + this.setSmallIcon("/com/fr/design/standard/chart/chart"); } public static final MenuKeySet INSERT_CHART = new MenuKeySet() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/DSColumnCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/DSColumnCellAction.java index 498d1e00e..56d1d8b91 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/DSColumnCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/DSColumnCellAction.java @@ -22,7 +22,7 @@ public class DSColumnCellAction extends AbstractCellAction implements WorkBookSu this.setMenuKeySet(KeySetUtils.INSERT_DATA_COLUMN); this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/bindColumn"); + this.setSmallIcon("/com/fr/design/standard/bindcolunm/bind_column"); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/FormulaCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/FormulaCellAction.java index 4e0e858c3..4cfa7ad74 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/FormulaCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/FormulaCellAction.java @@ -26,7 +26,7 @@ public class FormulaCellAction extends AbstractCellAction implements WorkBookSup this.setMenuKeySet(INSERT_FORMULA); this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/formula"); + this.setSmallIcon("/com/fr/design/standard/formula/formula"); } public static final MenuKeySet INSERT_FORMULA = new MenuKeySet() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/GeneralCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/GeneralCellAction.java index 758c4e335..8a9832ba0 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/GeneralCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/GeneralCellAction.java @@ -29,7 +29,7 @@ public class GeneralCellAction extends AbstractCellAction implements WorkBookSup this.setMenuKeySet(INSERT_TEXT); this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/text"); + this.setSmallIcon("/com/fr/design/standard/text/text"); } public static final MenuKeySet INSERT_TEXT = new MenuKeySet() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/ImageCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/ImageCellAction.java index a315aee69..5272909ae 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/ImageCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/ImageCellAction.java @@ -29,7 +29,7 @@ public class ImageCellAction extends AbstractCellAction implements WorkBookSuppo this.setMenuKeySet(INSERT_IMAGE); this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/image"); + this.setSmallIcon("/com/fr/design/standard/image/image"); } public static final MenuKeySet INSERT_IMAGE = new MenuKeySet() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/RichTextCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/RichTextCellAction.java index bbdba8312..e33d60d19 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/RichTextCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/RichTextCellAction.java @@ -25,7 +25,7 @@ public class RichTextCellAction extends AbstractCellAction implements WorkBookSu this.setMenuKeySet(INSERT_RICHTEXT); this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/richtext"); + this.setSmallIcon("/com/fr/design/standard/richtext/richtext"); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/SubReportCellAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/SubReportCellAction.java index 9fa6fabf4..9081b6712 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/cell/SubReportCellAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/cell/SubReportCellAction.java @@ -24,7 +24,7 @@ public class SubReportCellAction extends AbstractCellAction { this.setMenuKeySet(INSERT_SUB_REPORT); this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/subReport"); + this.setSmallIcon("/com/fr/design/standard/subreport/sub_report"); } public static final MenuKeySet INSERT_SUB_REPORT = new MenuKeySet() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ChartFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ChartFloatAction.java index 58292bbf2..bfb1ce93d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ChartFloatAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ChartFloatAction.java @@ -49,7 +49,7 @@ public class ChartFloatAction extends ElementCaseAction { this.setMenuKeySet(FLOAT_INSERT_CHART); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/chart"); + this.setSmallIcon("/com/fr/design/standard/chart/m_insert/chart"); } public static final MenuKeySet FLOAT_INSERT_CHART = new MenuKeySet() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/flot/FormulaFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/flot/FormulaFloatAction.java index 0251bf3d8..616bf7c9d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/flot/FormulaFloatAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/flot/FormulaFloatAction.java @@ -37,7 +37,7 @@ public class FormulaFloatAction extends ElementCaseAction { this.setMenuKeySet(FLOAT_INSERT_FORMULA); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/formula"); + this.setSmallIcon("/com/fr/design/standard/formula/formula"); } public static final MenuKeySet FLOAT_INSERT_FORMULA = new MenuKeySet() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ImageFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ImageFloatAction.java index 7eb9146ea..ca33b15e8 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ImageFloatAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ImageFloatAction.java @@ -40,7 +40,7 @@ public class ImageFloatAction extends ElementCaseAction { this.setMenuKeySet(FLOAT_INSERT_IMAGE); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/image"); + this.setSmallIcon("/com/fr/design/standard/image/image"); } public static final MenuKeySet FLOAT_INSERT_IMAGE = new MenuKeySet() { diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/flot/TextBoxFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/flot/TextBoxFloatAction.java index 32723cffa..59c2a3b0b 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/flot/TextBoxFloatAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/flot/TextBoxFloatAction.java @@ -28,7 +28,7 @@ public class TextBoxFloatAction extends AbstractShapeAction { this.setMenuKeySet(FLOAT_INSERT_TEXT); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/images/m_insert/text"); + this.setSmallIcon("/com/fr/design/standard/text/text"); } public static final MenuKeySet FLOAT_INSERT_TEXT = new MenuKeySet() { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java index b4ca61729..0defeadfc 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java @@ -1347,7 +1347,7 @@ public abstract class ElementCasePane extends Tar MenuDef insertFloatMenu = new MenuDef(); insertFloatMenu.setName(KeySetUtils.INSERT_FLOAT.getMenuKeySetName()); insertFloatMenu.setTooltip(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_T_Insert_Float")); - insertFloatMenu.setIconPath("/com/fr/design/images/m_insert/floatPop"); + insertFloatMenu.setIconPath("/com/fr/design/standard/floatpop"); UpdateAction[] actions = ActionFactory.createFloatInsertAction(ElementCasePane.class, this); for (int i = 0; i < actions.length; i++) { From e9d6c783e443f9c7a89412f87da90288e95b2ed7 Mon Sep 17 00:00:00 2001 From: wxr257486 Date: Fri, 17 Mar 2023 16:55:42 +0800 Subject: [PATCH 11/70] =?UTF-8?q?REPORT-89253=20=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=82=AC=E6=B5=AE=E5=85=83=E7=B4=A0=E5=9B=BE?= =?UTF-8?q?=E6=A0=87=E9=A1=B9=E6=96=87=E4=BB=B6=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/insert/flot/ChartFloatAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ChartFloatAction.java b/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ChartFloatAction.java index bfb1ce93d..db4a6b8be 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ChartFloatAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/insert/flot/ChartFloatAction.java @@ -49,7 +49,7 @@ public class ChartFloatAction extends ElementCaseAction { this.setMenuKeySet(FLOAT_INSERT_CHART); this.setName(getMenuKeySet().getMenuKeySetName()); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon("/com/fr/design/standard/chart/m_insert/chart"); + this.setSmallIcon("/com/fr/design/standard/chart/chart"); } public static final MenuKeySet FLOAT_INSERT_CHART = new MenuKeySet() { From 1f34ff42f6955acc4c0559668779577a217e56db Mon Sep 17 00:00:00 2001 From: wxr257486 Date: Fri, 17 Mar 2023 19:15:06 +0800 Subject: [PATCH 12/70] =?UTF-8?q?REPORT-89253=20=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E5=92=8C=E8=AF=BB=E5=8F=96=E8=A7=84=E8=8C=83=E5=8C=96=E5=A4=84?= =?UTF-8?q?=E7=90=86,=E5=9B=9E=E9=80=80=E5=8F=B3=E4=B8=8B=E8=A7=92?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E5=B0=8F=E6=A0=87=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/actions/file/LocateAction.java | 2 +- .../com/fr/design/constants/UIConstants.java | 18 ++++++------ .../design/data/BasicTableDataTreePane.java | 2 +- .../datapane/TableDataCreatorProducer.java | 28 +++++++++---------- .../design/data/datapane/TableDataTree.java | 4 +-- .../data/datapane/TableDataTreePane.java | 2 +- .../search/pane/TreeSearchToolbarPane.java | 4 +-- .../MultiResultTableDataWrapperHelper.java | 3 +- .../wrapper/ServerTableDataWrapper.java | 20 +++++++------ .../wrapper/StoreProcedureDataWrapper.java | 3 +- .../wrapper/StoreProcedureNameWrapper.java | 3 +- .../tabledata/wrapper/TableDataFactory.java | 18 ++++++------ .../wrapper/TemplateTableDataWrapper.java | 3 +- .../handle/PluginTaskResultErrorDialog.java | 2 +- .../fr/design/file/MultiTemplateTabPane.java | 4 +-- .../icontainer/UIModeControlContainer.java | 2 +- .../gui/itree/filetree/FileTreeIcon.java | 12 ++++---- .../com/fr/design/icon/IconPathConstants.java | 8 +++--- .../java/com/fr/design/icon/WarningIcon.java | 12 ++------ .../DesignerFrameFileDealerPane.java | 2 +- .../com/fr/design/mainframe/JTemplate.java | 3 +- .../mainframe/ToolBarNewTemplatePane.java | 3 +- .../design/mainframe/check/CheckButton.java | 2 +- .../pane/TemplateTreeSearchToolbarPane.java | 4 +-- .../ui/NotificationCenterPane.java | 4 +-- .../com/fr/startup/ui/StartupPageWindow.java | 2 +- .../startup/ui/StartupPageWorkspacePanel.java | 4 +-- .../images/lookandfeel/TreeLeafIcon.svg | 8 ------ .../{addicon.svg => addicon_normal.svg} | 0 .../{alpha_fine.svg => alpha_fine_normal.svg} | 0 ...ll_default.svg => cell_default_normal.svg} | 0 ...e_data.svg => class_table_data_normal.svg} | 0 ...llapse-all.svg => collapse_all_normal.svg} | 0 .../{data_table.svg => data_table_normal.svg} | 0 .../{database.svg => database_normal.svg} | 0 .../{dot_line.svg => dot_line_normal.svg} | 0 .../standard/{field.svg => field_normal.svg} | 0 .../standard/{file.svg => file_normal.svg} | 0 ...e_cht_file_icon_16x16.svg => cht_icon.svg} | 0 ...e_cpt_file_icon_16x16.svg => cpt_icon.svg} | 0 .../{cptx_file_icon.svg => cptx_icon.svg} | 0 ...e_icon_locked.svg => cptx_icon_locked.svg} | 0 ...y_normal.svg => folder_half_authority.svg} | 0 ...e_frm_file_icon_16x16.svg => frm_icon.svg} | 0 ...s_check.svg => font_miss_check_normal.svg} | 0 .../standard/{guide.svg => guide_normal.svg} | 0 .../{locate.svg => locate_normal.svg} | 0 .../standard/{multi.svg => multi_normal.svg} | 0 .../{noboder.svg => noboder_normal.svg} | 0 ...atabase.svg => server_database_normal.svg} | 0 ...ocedure.svg => store_procedure_normal.svg} | 0 .../system/{add.svg => add_normal.svg} | 0 .../system/{cpt.svg => cpt_normal.svg} | 0 .../{error_tips.svg => error_tips_normal.svg} | 0 ...te_theme.svg => template_theme_normal.svg} | 0 .../standard/{tree.svg => tree_normal.svg} | 0 .../design/standard/uimode/view_pressed.svg | 7 ----- .../com/fr/design/standard/warning.svg | 9 ------ .../fr/design/actions/cell/BorderAction.java | 2 +- .../style/ReportFontForegroundAction.java | 2 +- .../cell/style/StyleBackgroundAction.java | 2 +- .../fr/design/mainframe/SheetNameTabPane.java | 2 +- .../alphafine/component/AlphaFinePane.java | 2 +- .../mainframe/guide/entry/GuideEntryPane.java | 3 +- 64 files changed, 85 insertions(+), 126 deletions(-) delete mode 100644 designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg rename designer-base/src/main/resources/com/fr/design/standard/addicon/{addicon.svg => addicon_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{alpha_fine.svg => alpha_fine_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{cell_default.svg => cell_default_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{class_table_data.svg => class_table_data_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{collapse-all.svg => collapse_all_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{data_table.svg => data_table_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{database.svg => database_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{dot_line.svg => dot_line_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{field.svg => field_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{file.svg => file_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/fileicon/{modern_style_cht_file_icon_16x16.svg => cht_icon.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/fileicon/{modern_style_cpt_file_icon_16x16.svg => cpt_icon.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/fileicon/{cptx_file_icon.svg => cptx_icon.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/fileicon/{cptx_file_icon_locked.svg => cptx_icon_locked.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/fileicon/{filetree_folder_half_authority_normal.svg => folder_half_authority.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/fileicon/{modern_style_frm_file_icon_16x16.svg => frm_icon.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{font_miss_check.svg => font_miss_check_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{guide.svg => guide_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{locate.svg => locate_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{multi.svg => multi_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{noboder.svg => noboder_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{server_database.svg => server_database_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{store_procedure.svg => store_procedure_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/system/{add.svg => add_normal.svg} (100%) mode change 100755 => 100644 rename designer-base/src/main/resources/com/fr/design/standard/system/{cpt.svg => cpt_normal.svg} (100%) mode change 100755 => 100644 rename designer-base/src/main/resources/com/fr/design/standard/system/{error_tips.svg => error_tips_normal.svg} (100%) mode change 100755 => 100644 rename designer-base/src/main/resources/com/fr/design/standard/{template_theme.svg => template_theme_normal.svg} (100%) rename designer-base/src/main/resources/com/fr/design/standard/{tree.svg => tree_normal.svg} (100%) delete mode 100644 designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg delete mode 100644 designer-base/src/main/resources/com/fr/design/standard/warning.svg diff --git a/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java b/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java index 29c4e9353..799a657f8 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java @@ -28,7 +28,7 @@ public class LocateAction extends UpdateAction { public LocateAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Locate")); - this.setSmallIcon("/com/fr/design/standard/locate.svg"); + this.setSmallIcon("/com/fr/design/standard/locate", false); } @Override diff --git a/designer-base/src/main/java/com/fr/design/constants/UIConstants.java b/designer-base/src/main/java/com/fr/design/constants/UIConstants.java index 17d7882c1..645a31906 100644 --- a/designer-base/src/main/java/com/fr/design/constants/UIConstants.java +++ b/designer-base/src/main/java/com/fr/design/constants/UIConstants.java @@ -4,7 +4,6 @@ package com.fr.design.constants; import com.fr.base.svg.IconUtils; -import com.fr.base.svg.SVGIcon; import com.fr.base.svg.SVGLoader; import com.fr.general.IOUtils; import com.fr.stable.Constants; @@ -12,7 +11,6 @@ import com.fr.stable.StringUtils; import javax.swing.BorderFactory; import javax.swing.Icon; -import javax.swing.ImageIcon; import javax.swing.border.Border; import java.awt.BasicStroke; import java.awt.Color; @@ -57,7 +55,7 @@ public interface UIConstants { * Cell default cursor. */ public static final Cursor CELL_DEFAULT_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor( - SVGLoader.load("/com/fr/design/standard/cell_default.svg"), + SVGLoader.load("/com/fr/design/standard/cell_default_normal.svg"), new Point(16, 16), "CellDefaultCursor"); public static final Cursor DRAW_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor( IOUtils.readImage("/com/fr/base/images/cell/cursor/cursor_draw.png"), @@ -171,7 +169,7 @@ public interface UIConstants { public static final Image DRAG_LEFT_NORMAL = SVGLoader.load("/com/fr/design/standard/drag/left_normal.svg"); public static final Image DRAG_LEFT_PRESS = SVGLoader.load("/com/fr/design/standard/drag/left_pressed.svg"); public static final BufferedImage DRAG_DOT = IOUtils.readImage("com/fr/design/images/control/dot.png"); - public static final Image DRAG_LINE = SVGLoader.load("/com/fr/design/standard/dot_line.svg"); + public static final Image DRAG_LINE = SVGLoader.load("/com/fr/design/standard/dot_line_normal.svg"); public static final BufferedImage ACCESSIBLE_EDITOR_DOT = IOUtils.readImage("com/fr/design/images/control/dot.png"); public static final BufferedImage DRAG_DOT_VERTICAL = IOUtils.readImage("com/fr/design/images/control/dotv.png"); public static final BufferedImage POP_BUTTON_DOWN = IOUtils.readImage("com/fr/design/images/buttonicon/popdownarrow.png"); @@ -188,12 +186,12 @@ public interface UIConstants { public static final Icon CHOOSEN_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/select_item.png"); public static final Icon PRE_WIDGET_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/prewidget.png"); public static final Icon PRE_WIDGET_NORMAL_ICON = IconUtils.readIcon("com/fr/design/images/buttonicon/prewidget"); - public static final Icon EDIT_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit_normal.svg"); - public static final Icon EDIT_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit_pressed.svg"); - public static final Icon HIDE_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide_normal.svg"); - public static final Icon HIDE_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide_pressed.svg"); - public static final Icon VIEW_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/view_normal.svg"); - public static final Icon VIEW_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/view_pressed.svg"); + public static final Icon EDIT_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit"); + public static final Icon EDIT_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit"); + public static final Icon HIDE_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide"); + public static final Icon HIDE_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide"); + public static final Icon VIEW_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/view"); + //public static final Icon VIEW_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/view"); public static final Icon RUN_BIG_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/run24.svg"); public static final Icon RUN_SMALL_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/runs.svg"); diff --git a/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java b/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java index f0ec63829..b3a076a92 100644 --- a/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java +++ b/designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java @@ -464,7 +464,7 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp public ConnectionTableAction() { this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Server_Define_Data_Connection")); this.setMnemonic('D'); - this.setSmallIcon("/com/fr/design/standard/connection_normal.svg", false); + this.setSmallIcon("/com/fr/design/standard/connection", false); } @Override diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java index 09ddcfd64..8db517d61 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java @@ -33,33 +33,33 @@ public class TableDataCreatorProducer { public TableDataNameObjectCreator[] createReportTableDataCreator() { TableDataNameObjectCreator dataBase = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Database_Query"), "ds", - "/com/fr/design/standard/database.svg", DBTableData.class, DBTableDataPane.class); + "/com/fr/design/standard/database_normal.svg", DBTableData.class, DBTableDataPane.class); TableDataNameObjectCreator ds_Class = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Class"), "Class", - "/com/fr/design/standard/class_table_data.svg", ClassTableData.class, ClassTableDataPane.class); + "/com/fr/design/standard/class_table_data_normal.svg", ClassTableData.class, ClassTableDataPane.class); TableDataNameObjectCreator table = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Embedded"), "Embedded", - "/com/fr/design/standard/data_table.svg", EmbeddedTableData.class, EmbeddedTableDataPane.class); + "/com/fr/design/standard/data_table_normal.svg", EmbeddedTableData.class, EmbeddedTableDataPane.class); TableDataNameObjectCreator multiTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Relation"), "Multi", - "/com/fr/design/standard/multi.svg", ConditionTableData.class, MultiTDTableDataPane.class) { + "/com/fr/design/standard/multi_normal.svg", ConditionTableData.class, MultiTDTableDataPane.class) { public boolean isNeedParameterWhenPopulateJControlPane() { return true; } }; TableDataNameObjectCreator fileTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_File"), "File", - "/com/fr/design/standard/file.svg", FileTableData.class, FileTableDataSmallHeightPane.class); + "/com/fr/design/standard/file_normal.svg", FileTableData.class, FileTableDataSmallHeightPane.class); TableDataNameObjectCreator treeTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Tree"), "Tree", - "/com/fr/design/standard/tree.svg", RecursionTableData.class, TreeTableDataPane.class) { + "/com/fr/design/standard/tree_normal.svg", RecursionTableData.class, TreeTableDataPane.class) { public boolean isNeedParameterWhenPopulateJControlPane() { return true; } }; TableDataNameObjectCreator storeProcedure = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Stored_Procedure"), "Proc", - "/com/fr/design/standard/store_procedure.svg", + "/com/fr/design/standard/store_procedure_normal.svg", StoreProcedure.class, ProcedureDataPane.class) { @Override public boolean shouldInsertSeparator() { @@ -72,33 +72,33 @@ public class TableDataCreatorProducer { public TableDataNameObjectCreator[] createServerTableDataCreator() { TableDataNameObjectCreator dataBase = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Database_Query"), - "/com/fr/design/standard/server_database.svg", DBTableData.class, + "/com/fr/design/standard/server_database_normal.svg", DBTableData.class, DBTableDataPane.class); TableDataNameObjectCreator ds_Class = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Class"), - "/com/fr/design/standard/class_table_data.svg", ClassTableData.class, + "/com/fr/design/standard/class_table_data_normal.svg", ClassTableData.class, ClassTableDataPane.class); TableDataNameObjectCreator table = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Embedded"), - "/com/fr/design/standard/data_table.svg", EmbeddedTableData.class, + "/com/fr/design/standard/data_table_normal.svg", EmbeddedTableData.class, EmbeddedTableDataPane.class); TableDataNameObjectCreator fileTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_File"), - "/com/fr/design/standard/file.svg", FileTableData.class, + "/com/fr/design/standard/file_normal.svg", FileTableData.class, FileTableDataSmallPane.class); TableDataNameObjectCreator treeTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Tree"), - "/com/fr/design/standard/tree.svg", + "/com/fr/design/standard/tree_normal.svg", RecursionTableData.class, GlobalTreeTableDataPane.class) { public boolean isNeedParameterWhenPopulateJControlPane() { return true; } }; TableDataNameObjectCreator multiTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Relation"), - "/com/fr/design/standard/multi.svg", + "/com/fr/design/standard/multi_normal.svg", ConditionTableData.class, GlobalMultiTDTableDataPane.class) { public boolean isNeedParameterWhenPopulateJControlPane() { return true; } }; TableDataNameObjectCreator storeProcedure = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Stored_Procedure"), - "/com/fr/design/standard/store_procedure.svg", + "/com/fr/design/standard/store_procedure_normal.svg", StoreProcedure.class, ProcedureDataPane.class) { @Override public boolean shouldInsertSeparator() { diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTree.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTree.java index e220b9d01..ed08cffdd 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTree.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTree.java @@ -1,11 +1,9 @@ package com.fr.design.data.datapane; -import com.fr.base.BaseUtils; import com.fr.base.svg.IconUtils; import com.fr.data.MultiResultTableData; import com.fr.design.constants.UIConstants; import com.fr.design.data.datapane.management.search.TableDataTreeSearchManager; -import com.fr.design.data.tabledata.wrapper.AbstractTableDataWrapper; import com.fr.design.data.tabledata.wrapper.TableDataWrapper; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; import com.fr.design.gui.itree.refreshabletree.UserObjectRefreshJTree; @@ -56,7 +54,7 @@ public class TableDataTree extends UserObjectRefreshJTree { Object userObj = treeNode.getUserObject(); if (userObj instanceof String) { // p:这个是column field. - this.setIcon(IconUtils.readIcon("/com/fr/design/standard/field.svg")); + this.setIcon(IconUtils.readIcon("/com/fr/design/standard/field")); this.setText((String) userObj); } else if (userObj instanceof NameObject) { NameObject nameObject = (NameObject) userObj; diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java index e451ac35d..57ad09d0e 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java @@ -1227,7 +1227,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { public SwitchAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Search")); this.setMnemonic('S'); - this.setSmallIcon("/com/fr/design/standard/search_normal.svg", false); + this.setSmallIcon("/com/fr/design/standard/search", false); } @Override diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java index da1d15b8f..f5266c9b6 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java @@ -103,7 +103,7 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha searchPane.setBorder(BorderFactory.createLineBorder(UIConstants.TOOLBAR_BORDER_COLOR)); searchPane.setBackground(Color.WHITE); // 左侧搜索图标 - UILabel searchLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/search_normal.svg")); + UILabel searchLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/search")); searchLabel.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0)); searchLabel.addMouseListener(new MouseAdapter() { @Override @@ -149,7 +149,7 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha }); this.searchTextField.addKeyListener(enterPressed); // 右侧返回图标 - UILabel returnLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/clear_normal.svg")); + UILabel returnLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/clear")); returnLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Tree_Search_Return")); returnLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 11)); returnLabel.addMouseListener(new MouseAdapter() { diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/MultiResultTableDataWrapperHelper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/MultiResultTableDataWrapperHelper.java index e6c566c7c..45211c095 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/MultiResultTableDataWrapperHelper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/MultiResultTableDataWrapperHelper.java @@ -9,7 +9,6 @@ import com.fr.design.fun.TableDataDefineProvider; import com.fr.event.Event; import com.fr.event.EventDispatcher; import com.fr.event.Listener; -import com.fr.general.IOUtils; import com.fr.plugin.context.PluginContext; import com.fr.plugin.observer.PluginEventType; import com.fr.stable.Filter; @@ -26,7 +25,7 @@ import java.util.Map; */ class MultiResultTableDataWrapperHelper { private static final Map, Icon> TABLE_DATA_ICON_PATHS = new HashMap<>(); - private static final String DEFAULT_MULTI_RESULT_TD_ICON = "/com/fr/design/standard/multi.svg"; + private static final String DEFAULT_MULTI_RESULT_TD_ICON = "/com/fr/design/standard/multi"; static { diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java index 37fb2e702..839275fa4 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java @@ -26,20 +26,22 @@ public final class ServerTableDataWrapper extends AbstractTableDataWrapper { @Override public Icon getIcon() { if (tabledata instanceof DBTableData) { - if (StringUtils.isBlank(((DBTableData) tabledata).getQuery())) - return new WarningIcon(SVGLoader.load("/com/fr/design/standard/server_database.svg")); - else - return IconUtils.readIcon("/com/fr/design/standard/server_database.svg"); + if (StringUtils.isBlank(((DBTableData) tabledata).getQuery())) { + return new WarningIcon(BaseUtils.readImage("/com/fr/design/images/gui/warning.png")); + } + else { + return IconUtils.readIcon("/com/fr/design/standard/server_database"); + } } else if (tabledata instanceof ClassTableData) { - return IconUtils.readIcon("/com/fr/design/standard/class_table_data.svg"); + return IconUtils.readIcon("/com/fr/design/standard/class_table_data"); } else if (tabledata instanceof EmbeddedTableData) { - return IconUtils.readIcon("/com/fr/design/standard/data_table.svg"); + return IconUtils.readIcon("/com/fr/design/standard/data_table"); }else if(tabledata instanceof RecursionTableData){ - return IconUtils.readIcon("/com/fr/design/standard/tree.svg"); + return IconUtils.readIcon("/com/fr/design/standard/tree"); } else if (tabledata instanceof StoreProcedure) { - return IconUtils.readIcon("/com/fr/design/standard/store_procedure.svg"); + return IconUtils.readIcon("/com/fr/design/standard/store_procedure"); } - return IconUtils.readIcon("/com/fr/design/standard/server_database.svg"); + return IconUtils.readIcon("/com/fr/design/standard/server_database"); } /** 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 5bc328477..6c9af4827 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 @@ -1,6 +1,5 @@ package com.fr.design.data.tabledata.wrapper; -import com.fr.base.BaseUtils; import com.fr.base.TableData; import com.fr.base.svg.IconUtils; import com.fr.data.impl.storeproc.ProcedureDataModel; @@ -151,7 +150,7 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper { @Override public Icon getIcon() { - return IconUtils.readIcon("/com/fr/design/standard/store_procedure.svg"); + return IconUtils.readIcon("/com/fr/design/standard/store_procedure"); } /** diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureNameWrapper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureNameWrapper.java index 5c264c4da..c2c815e8a 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureNameWrapper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureNameWrapper.java @@ -1,6 +1,5 @@ package com.fr.design.data.tabledata.wrapper; -import com.fr.base.BaseUtils; import com.fr.base.TableData; import com.fr.base.svg.IconUtils; import com.fr.data.impl.storeproc.ProcedureDataModel; @@ -72,7 +71,7 @@ public final class StoreProcedureNameWrapper implements TableDataWrapper { @Override public Icon getIcon() { - return IconUtils.readIcon("/com/fr/design/standard/store_procedure.svg"); + return IconUtils.readIcon("/com/fr/design/standard/store_procedure"); } private void createStore(boolean needLoadingBar) { diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java index 090655997..749f2b3ae 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java @@ -55,15 +55,15 @@ public abstract class TableDataFactory { * 同一类型的只能加一次,就加最上层的类,因为要排序。如果将所有的 FileTableData都加进来,那么FileTableData的排序就不正确了 */ static { - defaultMap.put(DBTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/database.svg", DBTableData.class, DBTableDataPane.class)); - defaultMap.put(ClassTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/class_table_data.svg", ClassTableData.class, ClassTableDataPane.class)); - defaultMap.put(EmbeddedTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/data_table.svg", EmbeddedTableData.class, EmbeddedTableDataPane.class)); - defaultMap.put(DecoratedTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/multi.svg", DecoratedTableData.class, DecoratedTableDataPane.class)); + defaultMap.put(DBTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/database_normal.svg", DBTableData.class, DBTableDataPane.class)); + defaultMap.put(ClassTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/class_table_data_normal.svg", ClassTableData.class, ClassTableDataPane.class)); + defaultMap.put(EmbeddedTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/data_table_normal.svg", EmbeddedTableData.class, EmbeddedTableDataPane.class)); + defaultMap.put(DecoratedTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/multi_normal.svg", DecoratedTableData.class, DecoratedTableDataPane.class)); defaultMap.put(StoreProcedure.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/store_procedure.png", StoreProcedure.class, ProcedureDataPane.class)); - defaultMap.put(MultiTDTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/multi.svg", MultiTDTableData.class, MultiTDTableDataPane.class)); - defaultMap.put(FileTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/file.svg", FileTableData.class, FileTableDataPane.class)); - defaultMap.put(RecursionTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/tree.svg", RecursionTableData.class, TreeTableDataPane.class)); - defaultMap.put(MultiFieldTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/database.svg", MultiFieldTableData.class, null)); + defaultMap.put(MultiTDTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/multi_normal.svg", MultiTDTableData.class, MultiTDTableDataPane.class)); + defaultMap.put(FileTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/file_normal.svg", FileTableData.class, FileTableDataPane.class)); + defaultMap.put(RecursionTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/tree_normal.svg", RecursionTableData.class, TreeTableDataPane.class)); + defaultMap.put(MultiFieldTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/database_normal.svg", MultiFieldTableData.class, null)); map.putAll(defaultMap); } @@ -151,7 +151,7 @@ public abstract class TableDataFactory { if (tableDataNameObjectCreator != null && tableDataNameObjectCreator.getIconPath() != null) { return tableDataNameObjectCreator.getIconPath(); } - return "/com/fr/design/standard/database.svg"; + return "/com/fr/design/standard/database_normal.svg"; } /** diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TemplateTableDataWrapper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TemplateTableDataWrapper.java index cf27a0dbc..93bb7bf3b 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TemplateTableDataWrapper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TemplateTableDataWrapper.java @@ -2,7 +2,6 @@ package com.fr.design.data.tabledata.wrapper; import javax.swing.Icon; -import com.fr.base.BaseUtils; import com.fr.base.TableData; import com.fr.base.svg.IconUtils; import com.fr.base.svg.SVGLoader; @@ -22,7 +21,7 @@ public final class TemplateTableDataWrapper extends AbstractTableDataWrapper { @Override public Icon getIcon() { if (tabledata instanceof DBTableData && StringUtils.isBlank(((DBTableData) tabledata).getQuery())) { - return new WarningIcon(SVGLoader.load("/com/fr/design/standard/database.svg")); + return new WarningIcon(SVGLoader.load("/com/fr/design/standard/database_normal.svg")); } return IconUtils.readIcon(TableDataFactory.getIconPath(tabledata)); } diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/handle/PluginTaskResultErrorDialog.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/handle/PluginTaskResultErrorDialog.java index da4f43208..5cc0dce95 100644 --- a/designer-base/src/main/java/com/fr/design/extra/exe/callback/handle/PluginTaskResultErrorDialog.java +++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/handle/PluginTaskResultErrorDialog.java @@ -53,7 +53,7 @@ public class PluginTaskResultErrorDialog extends JDialog { private void initContentPane() { this.contentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); // error图标 - errorLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/system/error_tips.svg")); + errorLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/system/error_tips")); errorLabel.setPreferredSize(LABEL); errorLabel.setBorder(BorderFactory.createEmptyBorder(10, 20, 40, 20)); // 提示内容 diff --git a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java index 94995e0bc..25099420f 100644 --- a/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java +++ b/designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java @@ -86,10 +86,10 @@ import static javax.swing.JOptionPane.WARNING_MESSAGE; **/ public class MultiTemplateTabPane extends JComponent { - private static Icon LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list_normal.svg"); + private static Icon LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list"); private static Icon MOUSE_OVER_LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list_pressed.svg"); private static Icon MOUSE_PRESS_LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list_pressed.svg"); - private static Icon CLOSE = IconUtils.readIcon("/com/fr/design/standard/close/close_normal.svg"); + private static Icon CLOSE = IconUtils.readIcon("/com/fr/design/standard/close/close"); private static Icon MOUSE_OVER_CLOSE = IconUtils.readIcon("/com/fr/design/standard/close/close_mouseover.svg"); private static Icon MOUSE_PRESS_CLOSE = IconUtils.readIcon("/com/fr/design/standard/close/close_press.svg"); private static final Icon WHITE_SAVING_CLOSE_ICON = new ImageIcon(IOUtils.readImage("/com/fr/design/images/file/white_saving_close.gif")); diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java index 1837711cd..627baf6b9 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java @@ -282,7 +282,7 @@ public class UIModeControlContainer extends JLayeredPane { setLayout(new FlowLayout(FlowLayout.CENTER, 10, -3)); setBackground(UIConstants.NORMAL_BACKGROUND); add(new UILabel("" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Parameter_Panel") + "")); - UIButton viewButton = new UIButton(UIConstants.VIEW_NORMAL_ICON, UIConstants.VIEW_PRESSED_ICON, UIConstants.VIEW_PRESSED_ICON) { + UIButton viewButton = new UIButton(UIConstants.VIEW_NORMAL_ICON, UIConstants.VIEW_NORMAL_ICON, UIConstants.VIEW_NORMAL_ICON) { @Override public Dimension getPreferredSize() { return new Dimension(32, 32); diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileTreeIcon.java b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileTreeIcon.java index 4bea4e315..194dfa82d 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileTreeIcon.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileTreeIcon.java @@ -27,7 +27,7 @@ public class FileTreeIcon { public static final Icon FOLDER_IMAGE_ICON = IconUtils.readIcon("/com/fr/design/standard/fileicon/folder.svg"); public static final Icon FOLDER_HALF_IMAGE_ICON = - IconUtils.readIcon("/com/fr/design/standard/fileicon/filetree_folder_half_authority_normal.svg"); + IconUtils.readIcon("/com/fr/design/standard/fileicon/folder_half_authority.svg"); public static final Icon FILE_IMAGE_ICON = UIManager.getIcon("FileView.fileIcon"); @@ -46,14 +46,14 @@ public class FileTreeIcon { public static final Icon CHT_FILE_IMAGE_ICON = BaseUtils.readIcon("/com/fr/design/images/gui/cht.png"); public static final Icon MODERN_CPT_FILE_IMAGE_ICON = - IconUtils.readIcon("/com/fr/design/standard/fileicon/modern_style_cpt_file_icon_16x16.svg"); + IconUtils.readIcon("/com/fr/design/standard/fileicon/cpt_icon.svg"); public static final Icon MODERN_FRM_FILE_IMAGE_ICON = - IconUtils.readIcon("/com/fr/design/standard/fileicon/modern_style_frm_file_icon_16x16.svg"); + IconUtils.readIcon("/com/fr/design/standard/fileicon/frm_icon.svg"); public static final Icon MODERN_CHT_FILE_IMAGE_ICON = - IconUtils.readIcon("/com/fr/design/standard/fileicon/modern_style_cht_file_icon_16x16.svg"); + IconUtils.readIcon("/com/fr/design/standard/fileicon/cht_icon.svg"); - public static final Icon CPTX_ICON = IconUtils.readIcon("/com/fr/design/standard/fileicon/cptx_file_icon.svg"); - public static final Icon CPTX_LOCKED_ICON = IconUtils.readIcon("/com/fr/design/standard/fileicon/cptx_file_icon_locked.svg"); + public static final Icon CPTX_ICON = IconUtils.readIcon("/com/fr/design/standard/fileicon/cptx_icon.svg"); + public static final Icon CPTX_LOCKED_ICON = IconUtils.readIcon("/com/fr/design/standard/fileicon/cptx_icon_locked.svg"); public static final LockIcon FOLDER_LOCK_ICON = new LockIcon(BaseUtils.readImage("/com/fr/design/images/gui/fold.png")); diff --git a/designer-base/src/main/java/com/fr/design/icon/IconPathConstants.java b/designer-base/src/main/java/com/fr/design/icon/IconPathConstants.java index b6d2426e2..8fa97cfd5 100644 --- a/designer-base/src/main/java/com/fr/design/icon/IconPathConstants.java +++ b/designer-base/src/main/java/com/fr/design/icon/IconPathConstants.java @@ -15,21 +15,21 @@ public class IconPathConstants { public static final String ADD_POPMENU_ICON_PATH = "/com/fr/design/images/control/addPopup.png"; - public static final String DS_ICON_PATH = "/com/fr/design/standard/server_database.svg"; + public static final String DS_ICON_PATH = "/com/fr/design/standard/server_database"; public static final String CLASS_TD_ICON_PATH = "/com/fr/design/images/data/source/classTableData.png"; public static final String EMB_TD_ICON_PATH = "/com/fr/design/images/data/dataTable.png"; public static final String DS_RELATION_TD_ICON_PATH = "/com/fr/design/images/data/multi.png"; public static final String FILE_TD_ICON_PATH = "/com/fr/design/images/data/file.png"; public static final String DS_TREE_TD_ICON_PATH = "/com/fr/design/images/data/tree.png"; - public static final String DS_QUERY_ICON_PATH = "/com/fr/design/standard/database.svg"; + public static final String DS_QUERY_ICON_PATH = "/com/fr/design/standard/database"; public static final String PREVIEW_ICON_PATH = "/com/fr/design/images/m_file/preview.png"; public static final String TD_EDIT_ICON_PATH = "/com/fr/design/images/control/edit.png"; public static final String TD_EL_SHARE_HELP_ICON_PATH = "/com/fr/design/images/control/help_open.png"; public static final String TD_EL_SHARE_CLOSE_ICON_PATH = "/com/fr/design/images/control/help_close.png"; public static final String TD_REMOVE_ICON_PATH = "/com/fr/design/images/control/remove.png"; public static final String TD_CONNECTION_ICON_PATH = "/com/fr/design/images/m_web/connection.png"; - public static final String SP_SHOW_ICON_PATH = "/com/fr/design/standard/store_procedure.svg"; - public static final String STD_SHOW_ICON_PATH = "/com/fr/design/standard/server_database.svg"; + public static final String SP_SHOW_ICON_PATH = "/com/fr/design/standard/store_procedure"; + public static final String STD_SHOW_ICON_PATH = "/com/fr/design/standard/server_database"; public static final String XMLA_ICON_PATH = "/com/fr/design/images/data/cube.png"; public static final String FORBID_ICON_PATH = "/com/fr/web/images/form/forbid.png"; public static final String EDIT_ICON_PATH = "/com/fr/design/images/control/newEdit.png"; diff --git a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java index 3843100f4..6d2836572 100644 --- a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java +++ b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java @@ -1,8 +1,6 @@ package com.fr.design.icon; import com.fr.base.BaseUtils; -import com.fr.base.svg.SVGLoader; -import com.fr.design.utils.SvgPaintUtils; import com.fr.log.FineLoggerFactory; import javax.swing.GrayFilter; @@ -20,9 +18,7 @@ public class WarningIcon extends ImageIcon { protected final static Component component = new Component() { }; protected final static MediaTracker tracker = new MediaTracker(component); - private final static Image warnighImage = SVGLoader.load("/com/fr/design/standard/warning.svg"); - private final static int WARNING_DEFAULT_OFFSET_X = 8; - private final static int WARNING_DEFAULT_OFFSET_Y = 8; + private final static Image warnighImage = BaseUtils.readImage("/com/fr/design/images/gui/warning.png"); private Image mainImage = null; private ImageObserver imageObserver; @@ -39,16 +35,12 @@ public class WarningIcon extends ImageIcon { @Override public synchronized void paintIcon(Component c, Graphics g, int x, int y) { - SvgPaintUtils.beforePaint((Graphics2D) g); if (mainImage != null) { g.drawImage(mainImage, x, y, c); } if (warnighImage != null) { - int widthOffset = mainImage == null ? WARNING_DEFAULT_OFFSET_X : mainImage.getWidth(imageObserver) / 2; - int heightOffset = mainImage == null ? WARNING_DEFAULT_OFFSET_Y : mainImage.getHeight(imageObserver) / 2; - g.drawImage(warnighImage, x + widthOffset, y + heightOffset, c); + g.drawImage(warnighImage, x, y, c); } - SvgPaintUtils.beforePaint((Graphics2D) g); } /** diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 06e1fb1bb..9019a3001 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -469,7 +469,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt public CollapseAllAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Collapse_All")); - this.setSmallIcon("/com/fr/design/standard/collapse-all.svg"); + this.setSmallIcon("/com/fr/design/standard/collapse_all", false); } @Override 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 34ead6028..760df5c90 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 @@ -73,7 +73,6 @@ import com.fr.file.StashedFILE; import com.fr.form.ui.NoneWidget; import com.fr.form.ui.Widget; import com.fr.general.ComparatorUtils; -import com.fr.general.IOUtils; import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; import com.fr.nx.app.designer.toolbar.TemplateTransformer; @@ -1574,7 +1573,7 @@ public abstract class JTemplate> } protected UIButton createTemplateThemeButton() { - UIButton button = new UIButton(IconUtils.readIcon("/com/fr/design/standard/template_theme.svg")) { + UIButton button = new UIButton(IconUtils.readIcon("/com/fr/design/standard/template_theme")) { @Override public Dimension getPreferredSize() { FontMetrics metrics = getFontMetrics(getFont()); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java b/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java index b113b9c99..64d58bd8e 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java @@ -1,6 +1,5 @@ package com.fr.design.mainframe; -import com.fr.base.BaseUtils; import com.fr.base.svg.IconUtils; import com.fr.design.file.NewTemplatePane; @@ -22,7 +21,7 @@ public class ToolBarNewTemplatePane extends NewTemplatePane { @Override public Icon getNew() { - return IconUtils.readIcon("/com/fr/design/standard/addicon/addicon.svg"); + return IconUtils.readIcon("/com/fr/design/standard/addicon/addicon"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java b/designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java index 67c57db98..1d09f2482 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java @@ -45,7 +45,7 @@ public class CheckButton extends UIButton { private UILabel imageLabel; public CheckButton() { - this.setIcon(IconUtils.readIcon("/com/fr/design/standard/font_miss_check.svg")); + this.setIcon(IconUtils.readIcon("/com/fr/design/standard/font_miss_check")); this.setToolTipText(Toolkit.i18nText("Fine_Designer_Check_Font")); this.set4ToolbarButton(); this.addActionListener(checkListener); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateTreeSearchToolbarPane.java b/designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateTreeSearchToolbarPane.java index 2786073a2..ee9b861b1 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateTreeSearchToolbarPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateTreeSearchToolbarPane.java @@ -107,7 +107,7 @@ public class TemplateTreeSearchToolbarPane extends JPanel implements TreeSearchS searchPane.setBorder(BorderFactory.createLineBorder(UIConstants.TOOLBAR_BORDER_COLOR)); searchPane.setBackground(Color.WHITE); // 左侧搜索图标 - UILabel searchLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/search_normal.svg")); + UILabel searchLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/search")); searchLabel.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0)); searchLabel.addMouseListener(new MouseAdapter() { @Override @@ -118,7 +118,7 @@ public class TemplateTreeSearchToolbarPane extends JPanel implements TreeSearchS // 中间输入框 initSearchTextField(); // 右侧返回图标 - UILabel returnLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/clear_normal.svg")); + UILabel returnLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/clear")); returnLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Tree_Search_Return")); returnLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 11)); returnLabel.addMouseListener(new MouseAdapter() { diff --git a/designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java b/designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java index a3553f2ca..8e5c3ff40 100644 --- a/designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java +++ b/designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java @@ -21,7 +21,7 @@ public class NotificationCenterPane extends BasicPane { setPreferredSize(new Dimension(24, 24)); setLayout(new BorderLayout()); notificationCenterButton = new UIButton(); - notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification_normal.svg")); + notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification")); notificationCenterButton.setToolTipText(Toolkit.i18nText("Fine-Design_Basic_Show_Notification")); notificationCenterButton.set4ToolbarButton(); notificationCenterButton.setRolloverEnabled(false); @@ -44,7 +44,7 @@ public class NotificationCenterPane extends BasicPane { if (NotificationCenter.getInstance().getNotificationsCount() > 0) { notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification_dot.svg")); } else { - notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification_normal.svg")); + notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification")); } } diff --git a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java index 41cd75890..43d2fd970 100644 --- a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java +++ b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java @@ -363,7 +363,7 @@ public class StartupPageWindow extends JFrame { for (String recentFile : recentFiles) { JPanel recentItemPanel = new JPanel(); recentItemPanel.setLayout(new FlowLayout(FlowLayout.LEFT, ITEM_VERTICAL_GAP, 0)); - recentItemPanel.add(new UILabel(IconUtils.readIcon("/com/fr/design/standard/system/cpt.svg"))); + recentItemPanel.add(new UILabel(IconUtils.readIcon("/com/fr/design/standard/system/cpt"))); UILabel recentFileLabel = new UILabel(recentFile); Color recentFileLabelForeground = recentFileLabel.getForeground(); recentItemPanel.add(recentFileLabel); diff --git a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java index 3cd6b7877..e41304e23 100644 --- a/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java +++ b/designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java @@ -525,7 +525,7 @@ public class StartupPageWorkspacePanel extends JPanel { selectAndCreatePanel.setBorder(new EmptyBorder(0, 0, 0, 0)); selectAndCreatePanel.setLayout(new BorderLayout()); { - UILabel label = new UILabel(IconUtils.readIcon("/com/fr/design/standard/system/add.svg")); + UILabel label = new UILabel(IconUtils.readIcon("/com/fr/design/standard/system/add")); label.setPreferredSize(new Dimension(ARC_DIAMETER, ARC_DIAMETER)); label.setForeground(HOVER_COLOR); selectAndCreatePanel.add(label, BorderLayout.CENTER); @@ -540,7 +540,7 @@ public class StartupPageWorkspacePanel extends JPanel { @Override public void mouseExited(MouseEvent e) { borderColorRef.set(null); - label.setIcon(IconUtils.readIcon("/com/fr/design/standard/system/add.svg")); + label.setIcon(IconUtils.readIcon("/com/fr/design/standard/system/add")); repaintAll(); } @Override diff --git a/designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg b/designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg deleted file mode 100644 index 8b3b40bbe..000000000 --- a/designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - icon_列表_文件_normal - - - - - \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/addicon/addicon.svg b/designer-base/src/main/resources/com/fr/design/standard/addicon/addicon_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/addicon/addicon.svg rename to designer-base/src/main/resources/com/fr/design/standard/addicon/addicon_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/alpha_fine.svg b/designer-base/src/main/resources/com/fr/design/standard/alpha_fine_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/alpha_fine.svg rename to designer-base/src/main/resources/com/fr/design/standard/alpha_fine_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/cell_default.svg b/designer-base/src/main/resources/com/fr/design/standard/cell_default_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/cell_default.svg rename to designer-base/src/main/resources/com/fr/design/standard/cell_default_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/class_table_data.svg b/designer-base/src/main/resources/com/fr/design/standard/class_table_data_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/class_table_data.svg rename to designer-base/src/main/resources/com/fr/design/standard/class_table_data_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/collapse-all.svg b/designer-base/src/main/resources/com/fr/design/standard/collapse_all_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/collapse-all.svg rename to designer-base/src/main/resources/com/fr/design/standard/collapse_all_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/data_table.svg b/designer-base/src/main/resources/com/fr/design/standard/data_table_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/data_table.svg rename to designer-base/src/main/resources/com/fr/design/standard/data_table_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/database.svg b/designer-base/src/main/resources/com/fr/design/standard/database_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/database.svg rename to designer-base/src/main/resources/com/fr/design/standard/database_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/dot_line.svg b/designer-base/src/main/resources/com/fr/design/standard/dot_line_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/dot_line.svg rename to designer-base/src/main/resources/com/fr/design/standard/dot_line_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/field.svg b/designer-base/src/main/resources/com/fr/design/standard/field_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/field.svg rename to designer-base/src/main/resources/com/fr/design/standard/field_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/file.svg b/designer-base/src/main/resources/com/fr/design/standard/file_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/file.svg rename to designer-base/src/main/resources/com/fr/design/standard/file_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cht_file_icon_16x16.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/cht_icon.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cht_file_icon_16x16.svg rename to designer-base/src/main/resources/com/fr/design/standard/fileicon/cht_icon.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cpt_file_icon_16x16.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/cpt_icon.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_cpt_file_icon_16x16.svg rename to designer-base/src/main/resources/com/fr/design/standard/fileicon/cpt_icon.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_icon.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon.svg rename to designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_icon.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon_locked.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_icon_locked.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_file_icon_locked.svg rename to designer-base/src/main/resources/com/fr/design/standard/fileicon/cptx_icon_locked.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/filetree_folder_half_authority_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/folder_half_authority.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/fileicon/filetree_folder_half_authority_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/fileicon/folder_half_authority.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_frm_file_icon_16x16.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/frm_icon.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/fileicon/modern_style_frm_file_icon_16x16.svg rename to designer-base/src/main/resources/com/fr/design/standard/fileicon/frm_icon.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/font_miss_check.svg b/designer-base/src/main/resources/com/fr/design/standard/font_miss_check_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/font_miss_check.svg rename to designer-base/src/main/resources/com/fr/design/standard/font_miss_check_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/guide.svg b/designer-base/src/main/resources/com/fr/design/standard/guide_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/guide.svg rename to designer-base/src/main/resources/com/fr/design/standard/guide_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/locate.svg b/designer-base/src/main/resources/com/fr/design/standard/locate_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/locate.svg rename to designer-base/src/main/resources/com/fr/design/standard/locate_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/multi.svg b/designer-base/src/main/resources/com/fr/design/standard/multi_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/multi.svg rename to designer-base/src/main/resources/com/fr/design/standard/multi_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/noboder.svg b/designer-base/src/main/resources/com/fr/design/standard/noboder_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/noboder.svg rename to designer-base/src/main/resources/com/fr/design/standard/noboder_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/server_database.svg b/designer-base/src/main/resources/com/fr/design/standard/server_database_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/server_database.svg rename to designer-base/src/main/resources/com/fr/design/standard/server_database_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/store_procedure.svg b/designer-base/src/main/resources/com/fr/design/standard/store_procedure_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/store_procedure.svg rename to designer-base/src/main/resources/com/fr/design/standard/store_procedure_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/system/add.svg b/designer-base/src/main/resources/com/fr/design/standard/system/add_normal.svg old mode 100755 new mode 100644 similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/system/add.svg rename to designer-base/src/main/resources/com/fr/design/standard/system/add_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/system/cpt.svg b/designer-base/src/main/resources/com/fr/design/standard/system/cpt_normal.svg old mode 100755 new mode 100644 similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/system/cpt.svg rename to designer-base/src/main/resources/com/fr/design/standard/system/cpt_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/system/error_tips.svg b/designer-base/src/main/resources/com/fr/design/standard/system/error_tips_normal.svg old mode 100755 new mode 100644 similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/system/error_tips.svg rename to designer-base/src/main/resources/com/fr/design/standard/system/error_tips_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/template_theme.svg b/designer-base/src/main/resources/com/fr/design/standard/template_theme_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/template_theme.svg rename to designer-base/src/main/resources/com/fr/design/standard/template_theme_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/tree.svg b/designer-base/src/main/resources/com/fr/design/standard/tree_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/tree.svg rename to designer-base/src/main/resources/com/fr/design/standard/tree_normal.svg diff --git a/designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg b/designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg deleted file mode 100644 index 8a44f2805..000000000 --- a/designer-base/src/main/resources/com/fr/design/standard/uimode/view_pressed.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - icon 显示 - - - - \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/warning.svg b/designer-base/src/main/resources/com/fr/design/standard/warning.svg deleted file mode 100644 index aabba23e7..000000000 --- a/designer-base/src/main/resources/com/fr/design/standard/warning.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/actions/cell/BorderAction.java b/designer-realize/src/main/java/com/fr/design/actions/cell/BorderAction.java index 65744b9b6..7b7ec644d 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/cell/BorderAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/cell/BorderAction.java @@ -60,7 +60,7 @@ public class BorderAction extends ElementCaseAction implements ChangeListener { public JComponent createToolBarComponent() { Object object = this.getValue(UIToolbarBorderButton.class.getName()); if (object == null || !(object instanceof UIToolbarBorderButton)) { - UIToolbarBorderButton borderStylePane = new UIToolbarBorderButton(IconUtils.readIcon("/com/fr/design/standard/noboder.svg"), this.getEditingComponent()); + UIToolbarBorderButton borderStylePane = new UIToolbarBorderButton(IconUtils.readIcon("/com/fr/design/standard/noboder"), this.getEditingComponent()); this.putValue(UIToolbarBorderButton.class.getName(), borderStylePane); borderStylePane.setEnabled(this.isEnabled()); borderStylePane.set4Toolbar(); diff --git a/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontForegroundAction.java b/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontForegroundAction.java index 7893cfff4..da974e0b4 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontForegroundAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontForegroundAction.java @@ -51,7 +51,7 @@ public class ReportFontForegroundAction extends AbstractStyleAction implements C public JComponent createToolBarComponent() { Object object = this.getValue(UIToolbarColorButton.class.getName()); if (object == null || !(object instanceof UIToolbarColorButton)) { - UIToolbarColorButton tbButton = new UIToolbarColorButton(IconUtils.readIcon("/com/fr/design/standard/foreground_normal.svg")); + UIToolbarColorButton tbButton = new UIToolbarColorButton(IconUtils.readIcon("/com/fr/design/standard/foreground")); this.putValue(UIToolbarColorButton.class.getName(), tbButton); tbButton.set4Toolbar(); tbButton.setEnabled(this.isEnabled()); diff --git a/designer-realize/src/main/java/com/fr/design/actions/cell/style/StyleBackgroundAction.java b/designer-realize/src/main/java/com/fr/design/actions/cell/style/StyleBackgroundAction.java index 736fdd87f..b2b00482c 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/cell/style/StyleBackgroundAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/cell/style/StyleBackgroundAction.java @@ -60,7 +60,7 @@ public class StyleBackgroundAction extends AbstractStyleAction implements Change public JComponent createToolBarComponent() { Object object = this.getValue(UIToolbarColorButton.class.getName()); if (object == null || !(object instanceof UIToolbarColorButton)) { - UIToolbarColorButton tbButton = new UIToolbarColorButton(IconUtils.readIcon("com/fr/design/standard/background_normal.svg")); + UIToolbarColorButton tbButton = new UIToolbarColorButton(IconUtils.readIcon("com/fr/design/standard/background")); tbButton.set4Toolbar(); this.putValue(UIToolbarColorButton.class.getName(), tbButton); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/SheetNameTabPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/SheetNameTabPane.java index 639a48697..c8c1b7172 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/SheetNameTabPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/SheetNameTabPane.java @@ -65,7 +65,7 @@ public class SheetNameTabPane extends JComponent implements MouseListener, Mouse private static final Icon ADD_WORK_SHEET = IconUtils.readIcon("/com/fr/design/standard/add_worksheet"); protected static final Icon ADD_POLY_SHEET = IconUtils.readIcon("/com/fr/design/standard/add_polysheet"); private static final Icon WORK_SHEET_ICON = IconUtils.readIcon("/com/fr/design/standard/worksheet"); - private static final Icon POLY_SHEET_ICON = IconUtils.readIcon("/com/fr/design/standard/polysheet_normal.svg"); + private static final Icon POLY_SHEET_ICON = IconUtils.readIcon("/com/fr/design/standard/polysheet"); private static final Icon LEFT_ICON = IconUtils.readIcon("/com/fr/design/standard/prepage/pre_page"); private static final Icon RIGHT_ICON = IconUtils.readIcon("/com/fr/design/standard/nextpage"); private static final Icon DISABLED_LEFT_ICON = IconUtils.readIcon("/com/fr/design/standard/prepage/pre_page_disabled.svg"); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java index 7b195e469..55580d304 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFinePane.java @@ -31,7 +31,7 @@ public class AlphaFinePane extends BasicPane { setPreferredSize(new Dimension(24, 24)); setLayout(new BorderLayout()); UIButton refreshButton = new UIButton(); - refreshButton.setIcon(IconUtils.readIcon(("/com/fr/design/standard/smallsearch_normal.svg"))); + refreshButton.setIcon(IconUtils.readIcon(("/com/fr/design/standard/smallsearch"))); refreshButton.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Learn_More_About")); refreshButton.set4ToolbarButton(); refreshButton.setRolloverEnabled(false); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java index 1495b564b..5d4044aef 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java @@ -7,7 +7,6 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.guide.collect.GuideCollector; import com.fr.design.mainframe.guide.ui.GuideManageDialog; -import com.fr.general.IOUtils; import javax.swing.event.AncestorEvent; import javax.swing.event.AncestorListener; @@ -36,7 +35,7 @@ public class GuideEntryPane extends BasicPane { setPreferredSize(new Dimension(24, 24)); setLayout(new BorderLayout()); button = new UIButton(); - button.setIcon(IconUtils.readIcon("com/fr/design/standard/guide.svg")); + button.setIcon(IconUtils.readIcon("com/fr/design/standard/guide")); button.setToolTipText(Toolkit.i18nText(Toolkit.i18nText("Fine-Design_Guide_Entry_Name"))); button.set4ToolbarButton(); button.setRolloverEnabled(false); From e643f802f25476ebfd2b37a433c1ffa8892a42a2 Mon Sep 17 00:00:00 2001 From: wxr257486 Date: Mon, 20 Mar 2023 14:35:53 +0800 Subject: [PATCH 13/70] =?UTF-8?q?REPORT-92134,REPORT-92120,REPORT-92123=20?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/actions/file/LocateAction.java | 2 +- .../mainframe/DesignerFrameFileDealerPane.java | 2 +- .../java/com/fr/design/mainframe/JTemplate.java | 3 +-- .../fr/design/standard/locate/locate_disabled.svg | 15 +++++++++++++++ .../standard/{ => locate}/locate_normal.svg | 0 5 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 designer-base/src/main/resources/com/fr/design/standard/locate/locate_disabled.svg rename designer-base/src/main/resources/com/fr/design/standard/{ => locate}/locate_normal.svg (100%) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java b/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java index 799a657f8..0c039b4af 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java @@ -28,7 +28,7 @@ public class LocateAction extends UpdateAction { public LocateAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Locate")); - this.setSmallIcon("/com/fr/design/standard/locate", false); + this.setSmallIcon("/com/fr/design/standard/locate/locate"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 9019a3001..8cfd26342 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -452,7 +452,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt public SwitchAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Search")); this.setMnemonic('S'); - this.setSmallIcon("/com/fr/design/standard/search_normal"); + this.setSmallIcon("/com/fr/design/standard/search", false); } @Override 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 760df5c90..0082e091f 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 @@ -1,6 +1,5 @@ package com.fr.design.mainframe; -import com.fr.base.BaseUtils; import com.fr.base.Parameter; import com.fr.base.TRL; import com.fr.base.extension.FileExtension; @@ -1425,7 +1424,7 @@ public abstract class JTemplate> public Icon getPreviewLargeIcon() { PreviewProvider provider = getPreviewType(); String iconPath = provider.iconPathForLarge(); - return BaseUtils.readIcon(iconPath); + return IconUtils.readIcon(iconPath); } /** diff --git a/designer-base/src/main/resources/com/fr/design/standard/locate/locate_disabled.svg b/designer-base/src/main/resources/com/fr/design/standard/locate/locate_disabled.svg new file mode 100644 index 000000000..3a94510fb --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/locate/locate_disabled.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/locate_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/locate/locate_normal.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/standard/locate_normal.svg rename to designer-base/src/main/resources/com/fr/design/standard/locate/locate_normal.svg From d914c40feb221b51a9aa2636d45c01675cf4071a Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 21 Mar 2023 10:11:22 +0800 Subject: [PATCH 14/70] =?UTF-8?q?REPORT-82787=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E7=A9=BA=E6=95=B0=E6=8D=AE=E6=8F=90=E7=A4=BA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=9C=80=E8=A1=A5=E5=85=85=E7=B9=81=E4=B8=AD=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/module/ChartEmptyDataStylePane.java | 9 +++++++-- .../design/images/zh_traditional_emptydata.png | Bin 0 -> 18659 bytes 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java index 31718fda8..a8f7b6f1f 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java @@ -63,8 +63,13 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { static { - DEFAULT_EMPTY_DATA_IMAGE = GeneralContext.isChineseEnv() ? IOUtils.readImage("com/fr/design/images/zh_emptydata.png") - : IOUtils.readImage("com/fr/design/images/us_emptydata.png"); + if (GeneralContext.isChineseEnv()) { + DEFAULT_EMPTY_DATA_IMAGE = GeneralContext.isTraditionalChineseEnv() ? + IOUtils.readImage("com/fr/design/images/zh_traditional_emptydata.png") + : IOUtils.readImage("com/fr/design/images/zh_emptydata.png"); + } else { + DEFAULT_EMPTY_DATA_IMAGE = IOUtils.readImage("com/fr/design/images/us_emptydata.png"); + } } @Override diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png new file mode 100644 index 0000000000000000000000000000000000000000..738fa685adb223d384edfe6310251f31365a6830 GIT binary patch literal 18659 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 literal 0 HcmV?d00001 From 765d0e7b1cafcfca11d2ecd9aa411baffa37590b Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 21 Mar 2023 14:01:57 +0800 Subject: [PATCH 15/70] =?UTF-8?q?REPORT-92147=20REPORT-92159=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/constants/UIConstants.java | 2 +- .../data/tabledata/wrapper/ServerTableDataWrapper.java | 2 +- .../design/data/tabledata/wrapper/TableDataFactory.java | 2 +- .../fr/design/gui/icontainer/UIResizableContainer.java | 8 +++----- .../src/main/java/com/fr/design/icon/WarningIcon.java | 7 +++++-- .../com/fr/design/standard/bias/bias_normal.svg | 2 +- .../main/resources/com/fr/design/standard/warning.svg | 9 +++++++++ 7 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 designer-base/src/main/resources/com/fr/design/standard/warning.svg diff --git a/designer-base/src/main/java/com/fr/design/constants/UIConstants.java b/designer-base/src/main/java/com/fr/design/constants/UIConstants.java index 645a31906..da05a79dd 100644 --- a/designer-base/src/main/java/com/fr/design/constants/UIConstants.java +++ b/designer-base/src/main/java/com/fr/design/constants/UIConstants.java @@ -55,7 +55,7 @@ public interface UIConstants { * Cell default cursor. */ public static final Cursor CELL_DEFAULT_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor( - SVGLoader.load("/com/fr/design/standard/cell_default_normal.svg"), + IOUtils.readImage("/com/fr/base/images/cell/cursor/cell_default.png"), new Point(16, 16), "CellDefaultCursor"); public static final Cursor DRAW_CURSOR = Toolkit.getDefaultToolkit().createCustomCursor( IOUtils.readImage("/com/fr/base/images/cell/cursor/cursor_draw.png"), diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java index 839275fa4..cf66d9700 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java @@ -27,7 +27,7 @@ public final class ServerTableDataWrapper extends AbstractTableDataWrapper { public Icon getIcon() { if (tabledata instanceof DBTableData) { if (StringUtils.isBlank(((DBTableData) tabledata).getQuery())) { - return new WarningIcon(BaseUtils.readImage("/com/fr/design/images/gui/warning.png")); + return new WarningIcon(SVGLoader.load("/com/fr/design/standard/server_database_normal.svg")); } else { return IconUtils.readIcon("/com/fr/design/standard/server_database"); diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java index 749f2b3ae..8345bde94 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java @@ -59,7 +59,7 @@ public abstract class TableDataFactory { defaultMap.put(ClassTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/class_table_data_normal.svg", ClassTableData.class, ClassTableDataPane.class)); defaultMap.put(EmbeddedTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/data_table_normal.svg", EmbeddedTableData.class, EmbeddedTableDataPane.class)); defaultMap.put(DecoratedTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/multi_normal.svg", DecoratedTableData.class, DecoratedTableDataPane.class)); - defaultMap.put(StoreProcedure.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/store_procedure.png", StoreProcedure.class, ProcedureDataPane.class)); + defaultMap.put(StoreProcedure.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/store_procedure_normal.svg", StoreProcedure.class, ProcedureDataPane.class)); defaultMap.put(MultiTDTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/multi_normal.svg", MultiTDTableData.class, MultiTDTableDataPane.class)); defaultMap.put(FileTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/file_normal.svg", FileTableData.class, FileTableDataPane.class)); defaultMap.put(RecursionTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/tree_normal.svg", RecursionTableData.class, TreeTableDataPane.class)); diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java index 0cd17cd00..8e562cc3c 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -410,13 +410,11 @@ public class UIResizableContainer extends JPanel { Image upButton = (upModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_UP_NORMAL : UIConstants.DRAG_UP_PRESS); Image downButton = (downModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_DOWN_NORMAL : UIConstants.DRAG_DOWN_PRESS); - int width = getWidth(); - int height = getHeight(); g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null); SvgPaintUtils.beforePaint((Graphics2D) g); - g.drawImage(UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, this); - g.drawImage(upButton, ARROW_MARGIN, 1, this); - g.drawImage(downButton, getWidth() - toolPaneHeight - ARROW_MARGIN, 1, this); + g.drawImage(UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, null); + g.drawImage(upButton, ARROW_MARGIN, 1, null); + g.drawImage(downButton, getWidth() - toolPaneHeight - ARROW_MARGIN, 1, null); SvgPaintUtils.afterPaint((Graphics2D) g); } } diff --git a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java index 6d2836572..bd68c07e8 100644 --- a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java +++ b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java @@ -1,6 +1,7 @@ package com.fr.design.icon; -import com.fr.base.BaseUtils; +import com.fr.base.svg.SVGLoader; +import com.fr.design.utils.SvgPaintUtils; import com.fr.log.FineLoggerFactory; import javax.swing.GrayFilter; @@ -18,7 +19,7 @@ public class WarningIcon extends ImageIcon { protected final static Component component = new Component() { }; protected final static MediaTracker tracker = new MediaTracker(component); - private final static Image warnighImage = BaseUtils.readImage("/com/fr/design/images/gui/warning.png"); + private final static Image warnighImage = SVGLoader.load("/com/fr/design/standard/warning.svg"); private Image mainImage = null; private ImageObserver imageObserver; @@ -35,12 +36,14 @@ public class WarningIcon extends ImageIcon { @Override public synchronized void paintIcon(Component c, Graphics g, int x, int y) { + SvgPaintUtils.beforePaint((Graphics2D) g); if (mainImage != null) { g.drawImage(mainImage, x, y, c); } if (warnighImage != null) { g.drawImage(warnighImage, x, y, c); } + SvgPaintUtils.afterPaint((Graphics2D) g); } /** diff --git a/designer-base/src/main/resources/com/fr/design/standard/bias/bias_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/bias/bias_normal.svg index e20ec42eb..92af8e076 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/bias/bias_normal.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/bias/bias_normal.svg @@ -2,6 +2,6 @@ icon_斜线_normal - + diff --git a/designer-base/src/main/resources/com/fr/design/standard/warning.svg b/designer-base/src/main/resources/com/fr/design/standard/warning.svg new file mode 100644 index 000000000..8b5d47014 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/warning.svg @@ -0,0 +1,9 @@ + + + + + + + + + From 4443e98ce9ec437c70301368b099c4ae4ca060b5 Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 21 Mar 2023 14:08:32 +0800 Subject: [PATCH 16/70] =?UTF-8?q?REPORT-82787=E5=9B=9E=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/module/ChartEmptyDataStylePane.java | 9 ++------- .../design/images/zh_traditional_emptydata.png | Bin 18659 -> 0 bytes 2 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java index a8f7b6f1f..31718fda8 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java @@ -63,13 +63,8 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { static { - if (GeneralContext.isChineseEnv()) { - DEFAULT_EMPTY_DATA_IMAGE = GeneralContext.isTraditionalChineseEnv() ? - IOUtils.readImage("com/fr/design/images/zh_traditional_emptydata.png") - : IOUtils.readImage("com/fr/design/images/zh_emptydata.png"); - } else { - DEFAULT_EMPTY_DATA_IMAGE = IOUtils.readImage("com/fr/design/images/us_emptydata.png"); - } + DEFAULT_EMPTY_DATA_IMAGE = GeneralContext.isChineseEnv() ? IOUtils.readImage("com/fr/design/images/zh_emptydata.png") + : IOUtils.readImage("com/fr/design/images/us_emptydata.png"); } @Override diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png deleted file mode 100644 index 738fa685adb223d384edfe6310251f31365a6830..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18659 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 From 1a040cf5cd0d008f5c13206a7f597f254833960d Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 21 Mar 2023 14:51:46 +0800 Subject: [PATCH 17/70] =?UTF-8?q?=E5=B8=B8=E9=87=8F=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/icon/WarningIcon.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java index bd68c07e8..08d5b5a55 100644 --- a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java +++ b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java @@ -16,10 +16,10 @@ import java.awt.image.ImageObserver; * @since 2012-3-28下午10:20:29 */ public class WarningIcon extends ImageIcon { - protected final static Component component = new Component() { + protected final static Component COMPONENT = new Component() { }; - protected final static MediaTracker tracker = new MediaTracker(component); - private final static Image warnighImage = SVGLoader.load("/com/fr/design/standard/warning.svg"); + protected final static MediaTracker TRACKER = new MediaTracker(COMPONENT); + private final static Image WARNING_IMAGE = SVGLoader.load("/com/fr/design/standard/warning.svg"); private Image mainImage = null; private ImageObserver imageObserver; @@ -40,8 +40,8 @@ public class WarningIcon extends ImageIcon { if (mainImage != null) { g.drawImage(mainImage, x, y, c); } - if (warnighImage != null) { - g.drawImage(warnighImage, x, y, c); + if (WARNING_IMAGE != null) { + g.drawImage(WARNING_IMAGE, x, y, c); } SvgPaintUtils.afterPaint((Graphics2D) g); } @@ -53,17 +53,17 @@ public class WarningIcon extends ImageIcon { * the image */ protected void loadImage(Image image) { - synchronized (tracker) { - tracker.addImage(image, 0); + synchronized (TRACKER) { + TRACKER.addImage(image, 0); try { - tracker.waitForID(0, 0); + TRACKER.waitForID(0, 0); } catch (InterruptedException e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); Thread.currentThread().interrupt(); } - tracker.statusID(0, false); - tracker.removeImage(image, 0); + TRACKER.statusID(0, false); + TRACKER.removeImage(image, 0); width = image.getWidth(imageObserver); height = image.getHeight(imageObserver); @@ -104,6 +104,6 @@ public class WarningIcon extends ImageIcon { } { - loadImage(warnighImage); + loadImage(WARNING_IMAGE); } } \ No newline at end of file From 2f814b1ce6f4d753957d01eef5ded864cc8c6e19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yvan-=E6=AC=A7=E9=98=B3=E5=B8=86?= Date: Wed, 22 Mar 2023 12:07:59 +0800 Subject: [PATCH 18/70] =?UTF-8?q?REPORT-91503=20=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E9=A2=91=E7=B9=81=E6=8A=A5=E9=94=99=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E4=BF=A1=E6=81=AF=E4=B8=8D=E4=B8=80=E8=87=B4=EF=BC=8C?= =?UTF-8?q?=E5=9C=A8=E8=BF=99=E4=B8=AA=E5=BC=B9=E7=AA=97=E5=8F=A6=E5=AD=98?= =?UTF-8?q?=E4=B8=BA=E4=B8=80=E5=AE=9A=E4=BC=9A=E5=A4=B1=E8=B4=A5=E3=80=82?= =?UTF-8?q?=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0=E3=80=91REPORT?= =?UTF-8?q?-70481=E8=BF=AD=E4=BB=A3=E5=BC=95=E8=B5=B7=EF=BC=8C=E5=8E=9F?= =?UTF-8?q?=E5=9B=A0=E6=98=AF=E5=9C=A8=E6=A8=A1=E6=9D=BF=E9=94=81=E5=AE=9A?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=B8=8D=E4=B8=80=E8=87=B4=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E5=80=99=EF=BC=8C=E5=8E=9F=E6=9C=AC=E7=9A=84=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E6=98=AF=E5=B0=86=E5=BD=93=E5=89=8D=E6=A8=A1=E6=9D=BF=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E4=B8=BA=E5=A4=87=E4=BB=BD=E6=96=87=E4=BB=B6=20+=20?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E5=BD=93=E5=89=8D=E6=A8=A1=E6=9D=BF=EF=BC=8C?= =?UTF-8?q?=E4=BD=86=E6=98=AF=E4=BF=9D=E5=AD=98=E7=9A=84=E5=8A=A8=E4=BD=9C?= =?UTF-8?q?=E6=98=AF=E9=80=9A=E8=BF=87SwingWorker=E5=81=9A=E7=9A=84?= =?UTF-8?q?=EF=BC=8C=E5=85=B3=E9=97=AD=E5=BD=93=E5=89=8D=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E5=8A=A8=E4=BD=9C=E6=9C=AA=E8=A2=AB=E5=8C=85=E5=90=AB?= =?UTF-8?q?=E5=9C=A8SwingWorker=E4=B8=AD=EF=BC=8C=E5=9B=A0=E6=AD=A4?= =?UTF-8?q?=E4=BC=9A=E5=AF=BC=E8=87=B4=E5=85=88=E5=85=B3=E9=97=AD=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E6=A8=A1=E6=9D=BF=E9=87=8A=E6=94=BE=E8=B5=84=E6=BA=90?= =?UTF-8?q?=EF=BC=8C=E5=86=8D=E8=AF=BB=E5=8F=96=E5=BD=93=E5=89=8D=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=86=99=E5=85=A5=E6=96=B0=E6=96=87=E4=BB=B6=EF=BC=88?= =?UTF-8?q?=E6=AD=A4=E6=97=B6=E6=9C=89=E8=B5=84=E6=BA=90=E5=B7=B2=E8=A2=AB?= =?UTF-8?q?=E9=87=8A=E6=94=BE=EF=BC=8C=E4=BC=9A=E5=9C=A8=E5=86=99=E5=85=A5?= =?UTF-8?q?=E6=97=B6=E5=BC=95=E8=B5=B7NPE=EF=BC=89=20=E3=80=90=E6=94=B9?= =?UTF-8?q?=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91=E5=B0=86=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E6=A8=A1=E6=9D=BF=E7=9A=84=E5=8A=A8=E4=BD=9C?= =?UTF-8?q?=E6=94=BE=E5=88=B0=E4=BF=9D=E5=AD=98=E7=9A=84SwingWorker?= =?UTF-8?q?=E7=9A=84done=E6=96=B9=E6=B3=95=E4=B8=AD=EF=BC=8C=E5=8D=B3?= =?UTF-8?q?=E5=85=88=E4=BF=9D=E5=AD=98=E6=88=90=E5=8A=9F=EF=BC=8C=E5=86=8D?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=A8=A1=E6=9D=BF=EF=BC=9B=E5=8F=A6=E5=A4=96?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E4=B8=80=E4=B8=8B=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81=EF=BC=8C=E4=BD=BF=E5=85=B6=E6=9B=B4?= =?UTF-8?q?=E7=AC=A6=E5=90=88=E5=BC=80=E5=8F=91=E8=A7=84=E8=8C=83=20?= =?UTF-8?q?=E3=80=90review=E5=BB=BA=E8=AE=AE=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/utils/TemplateUtils.java | 74 ++++++++++++------- .../worker/save/SaveFailureHandler.java | 8 +- 2 files changed, 53 insertions(+), 29 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java index 9fb1e632a..e82251f4b 100644 --- a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java @@ -16,6 +16,7 @@ import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.CoreConstants; import com.fr.stable.ProductConstants; +import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; import com.fr.workspace.server.lock.TplOperator; @@ -33,6 +34,7 @@ public class TemplateUtils { /** * 创建新的模板文件并打开模板 + * * @param prefix 模板文件名称前缀 * @param file 模板文件 * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 @@ -41,6 +43,21 @@ public class TemplateUtils { * @param openNewTemplate 是否需要在创建后打开模板 */ public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate) { + createAndOpenTemplate(prefix, file, createByEditingTemplate, openNewTemplate, () -> {}); + } + + /** + * 创建新的模板文件并打开模板,并在创建备份模板成功后执行doAfterCreate + * + * @param prefix 模板文件名称前缀 + * @param file 模板文件 + * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 + * 为true时以CurrentEditingTemplate为准创建新模板 + * 为false时以传入的File文件为准创建新模板,此文件可以不是编辑状态 + * @param openNewTemplate 是否需要在创建后打开模板 + * @param doAfterCreateTemplate 创建备份模板成功后调用 + */ + public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) { String fileName = file.getName(); String oldPath = file.getPath(); int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT); @@ -62,43 +79,25 @@ public class TemplateUtils { if (isOk(result)) { file = fileChooserPane.getSelectedFILE(); - _createAndOpenTemplate(file, oldPath, createByEditingTemplate, openNewTemplate); + createAndOpenTemplate0(file, oldPath, createByEditingTemplate, openNewTemplate, doAfterCreateTemplate); } } - private static void _createAndOpenTemplate(FILE file, String oldPath, boolean createByEditingTemplate, boolean openNewTemplate){ + private static void createAndOpenTemplate0(FILE file, String oldPath, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) { new SwingWorker() { @Override protected Void doInBackground() throws Exception { - byte[] content = new byte[0]; - if (createByEditingTemplate) { - // 从当前编辑模板中生成备份文件 - JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - content = template.exportData(); - } else { - content = WorkContext.getWorkResource().readFully(oldPath); - } - if (ArrayUtils.isEmpty(content)) { - throw new Exception(oldPath + " content is empty" ); - } - OutputStream out = null; - try { + // 读取模板数据 + byte[] content = getTemplateData(createByEditingTemplate, oldPath); + try(OutputStream out = file.asOutputStream()) { // 加锁 WorkContext.getCurrent().get(TplOperator.class).saveAs(file.getPath()); - out = file.asOutputStream(); out.write(content); } finally { - try { - if (out != null) { - out.close(); - } - } finally { - // 解锁 - WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath()); - } - + // 解锁 + WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath()); } return null; } @@ -107,6 +106,8 @@ public class TemplateUtils { protected void done() { try { get(); + // 创建备份成功后 + doAfterCreateTemplate.run(); if (openNewTemplate) { DesignerContext.getDesignerFrame().openTemplate(file); } @@ -118,7 +119,30 @@ public class TemplateUtils { } } }.execute(); + } + /** + * 读取模板文件数据 + * + * @param readCurrentEditingTemplate 是否读取当前编辑模板 + * @param path 模板路径 + * @return + */ + private static byte[] getTemplateData(boolean readCurrentEditingTemplate, String path) throws Exception { + byte[] content = new byte[0]; + if (readCurrentEditingTemplate) { + // 从当前编辑模板中生成备份文件 + JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + if (JTemplate.isValid(template)) { + content = template.exportData(); + } + } else { + content = WorkContext.getWorkResource().readFully(path); + } + if (ArrayUtils.isEmpty(content)) { + throw new Exception(StringUtils.messageFormat("{} content is empty", path)); + } + return content; } private static boolean isCancel(int result) { diff --git a/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java b/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java index 080b9ddbc..128064301 100644 --- a/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java +++ b/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java @@ -133,14 +133,14 @@ public class SaveFailureHandler implements ThrowableHandler { new Object[] {Toolkit.i18nText("Fine_Design_Template_SaveAs_Backup"), Toolkit.i18nText("Fine-Design_Basic_Button_Cancel")}, null); if (option == JOptionPane.YES_OPTION) { JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - if (template != null) { + if (JTemplate.isValid(template)) { TemplateUtils.createAndOpenTemplate( Toolkit.i18nText("Fine_Design_Template_Backup"), new FileNodeFILE(new FileNode(template.getPath(), false)), true, - true); - // 创建并打开备份模板后,关闭原模板 - HistoryTemplateListCache.getInstance().closeSelectedReport(template); + true, + // 创建并打开备份模板后,关闭原模板 + () -> HistoryTemplateListCache.getInstance().closeSelectedReport(template)); } } } From d3b6873102eec2261969173f997e4c7ac97d4a99 Mon Sep 17 00:00:00 2001 From: loy Date: Wed, 22 Mar 2023 14:48:16 +0800 Subject: [PATCH 19/70] =?UTF-8?q?REPORT-92308=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8F=AF=E7=94=A8=E6=80=A7=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E9=80=82=E9=85=8D=E6=96=B0=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/actions/file/PreferencePane.java | 31 ++++--------------- .../DesignerFrameFileDealerPane.java | 9 ++++-- .../mainframe/vcs/common/VcsHelper.java | 24 ++++++++++++++ 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index e09d6f7a0..a83bcfd77 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -356,6 +356,8 @@ public class PreferencePane extends BasicPane { useIntervalCheckBox = new UICheckBox(); //gc面板 + JPanel gcControlPane = createGcControlPane(); + JPanel enableVcsPanel = new JPanel(FRGUIPaneFactory.createLeftZeroLayout()); enableVcsPanel.add(vcsEnableCheckBox); enableVcsPanel.add(remindVcsLabel); @@ -388,31 +390,10 @@ public class PreferencePane extends BasicPane { vcsPane.add(enableVcsPanel); vcsPane.add(intervalPanel); vcsPane.add(saveCommitCheckBox); - - initGcControlPane(vcsPane); - } - - private void initGcControlPane(JPanel vcsPane) { - JPanel gcControlPane = createGcControlPane(); - new SwingWorker() { - @Override - protected Boolean doInBackground() throws Exception { - return WorkContext.getCurrent().get(VcsOperator.class).isLegacyMode(); - } - - @Override - protected void done() { - try { - if (Boolean.TRUE.equals(get())) { - // 老版本时才显示gc选项 - vcsPane.add(gcControlPane); - vcsPane.updateUI(); - } - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e, "[Vcs] retrieve legacy mode error: {}", e.getMessage()); - } - } - }.execute(); + if (VcsHelper.getInstance().isLegacyMode()) { + // 老版本时才显示gc选项 + vcsPane.add(gcControlPane); + } } /** diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 8cfd26342..d21dd1b7c 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -325,7 +325,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt if (VcsHelper.getInstance().needInit()) { vcsAction = new VcsAction(); - if (!WorkContext.getCurrent().isCluster()) { + if (!isLegacyOnCluster()) { vcsAction.setName(Toolkit.i18nText("Fine-Design_Vcs_Title")); } else { vcsAction.setName(Toolkit.i18nText("Fine-Design_Vcs_NotSupportRemote")); @@ -509,7 +509,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt private void fireVcsActionChange(boolean enable) { if (!DesignerEnvManager.getEnvManager().getVcsConfigManager().isVcsEnable() || VcsHelper.getInstance().isUnSelectedTemplate() - || WorkContext.getCurrent().isCluster()) { + || isLegacyOnCluster()) { setEnabled(false); return; } @@ -810,6 +810,11 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt } } + private boolean isLegacyOnCluster() { + // 老模式且为集群,用于代替之前的只判断集群逻辑 + return WorkContext.getCurrent().isCluster() && VcsHelper.getInstance().isLegacyMode(); + } + private String doCheck (String userInput, String suffix) { String errorMsg = StringUtils.EMPTY; if (selectedOperation.duplicated(userInput, suffix, true)) { diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java index c72fa68dc..335e3c9a7 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java @@ -12,6 +12,9 @@ import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.JTemplateActionListener; import com.fr.design.mainframe.vcs.VcsConfigManager; import com.fr.design.mainframe.vcs.ui.FileVersionTable; +import com.fr.event.Event; +import com.fr.event.EventDispatcher; +import com.fr.event.Listener; import com.fr.general.IOUtils; import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginContext; @@ -20,6 +23,8 @@ import com.fr.report.entity.VcsEntity; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; import com.fr.workspace.WorkContext; +import com.fr.workspace.Workspace; +import com.fr.workspace.WorkspaceEvent; import com.fr.workspace.server.vcs.VcsOperator; import com.fr.workspace.server.vcs.filesystem.VcsFileSystem; import com.fr.workspace.server.vcs.git.config.GcConfig; @@ -56,10 +61,22 @@ public class VcsHelper implements JTemplateActionListener { private final static String SERVICE_NAME_MOVE = "moveVcs"; private static final VcsHelper INSTANCE = new VcsHelper(); + private volatile boolean isLegacyMode; + public static VcsHelper getInstance() { return INSTANCE; } + private VcsHelper() { + isLegacyMode = WorkContext.getCurrent().get(VcsOperator.class).isLegacyMode(); + EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener() { + @Override + public void on(Event event, Workspace param) { + isLegacyMode = WorkContext.getCurrent().get(VcsOperator.class).isLegacyMode(); + } + }); + } + private int containsFolderCounts() { TemplateFileTree fileTree = TemplateTreePane.getInstance().getTemplateFileTree(); if (fileTree.getSelectionPaths() == null) { @@ -187,6 +204,13 @@ public class VcsHelper implements JTemplateActionListener { moveVcs.shutdown(); } + /** + * 判断是否为老模式 + * @return 是否为老模式 + */ + public boolean isLegacyMode() { + return isLegacyMode; + } @Override public void templateOpened(JTemplate jt) { From b474bf0447435e435d93d7fc896d06b1255610b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Wed, 22 Mar 2023 14:52:43 +0800 Subject: [PATCH 20/70] =?UTF-8?q?REPORT-91988=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E7=BC=96=E8=BE=91=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E9=9B=86=E5=87=BA=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/connect/ConnectionTableProcedurePane.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java index 613eed9a4..79e75a0b8 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java @@ -21,6 +21,7 @@ import com.fr.general.GeneralContext; import com.fr.stable.ArrayUtils; import javax.swing.BorderFactory; +import javax.swing.DefaultComboBoxModel; import javax.swing.JPanel; import javax.swing.ToolTipManager; import javax.swing.event.DocumentEvent; @@ -109,6 +110,8 @@ public class ConnectionTableProcedurePane extends BasicPane { if (parent != null) { parent.switchTo(SwitchableTableDataPane.CONTENT_PANE_NAME); } + DefaultComboBoxModel model = ((DefaultComboBoxModel) itemComboBox.getModel()); + model.removeElement(EMPTY); } @Override From 204e83c90042d9b411d5cfbaf92be72c92a59e70 Mon Sep 17 00:00:00 2001 From: loy Date: Wed, 22 Mar 2023 14:55:30 +0800 Subject: [PATCH 21/70] =?UTF-8?q?REPORT-92308=20=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8F=AF=E7=94=A8=E6=80=A7=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E9=80=82=E9=85=8D=E6=96=B0=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=20-=20=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/vcs/common/VcsHelper.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java index 335e3c9a7..0c8924e9d 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java @@ -61,18 +61,18 @@ public class VcsHelper implements JTemplateActionListener { private final static String SERVICE_NAME_MOVE = "moveVcs"; private static final VcsHelper INSTANCE = new VcsHelper(); - private volatile boolean isLegacyMode; + private volatile boolean legacyMode; public static VcsHelper getInstance() { return INSTANCE; } private VcsHelper() { - isLegacyMode = WorkContext.getCurrent().get(VcsOperator.class).isLegacyMode(); + legacyMode = WorkContext.getCurrent().get(VcsOperator.class).isLegacyMode(); EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener() { @Override public void on(Event event, Workspace param) { - isLegacyMode = WorkContext.getCurrent().get(VcsOperator.class).isLegacyMode(); + legacyMode = WorkContext.getCurrent().get(VcsOperator.class).isLegacyMode(); } }); } @@ -209,7 +209,7 @@ public class VcsHelper implements JTemplateActionListener { * @return 是否为老模式 */ public boolean isLegacyMode() { - return isLegacyMode; + return legacyMode; } @Override From 76c2bab02d57ddd8c3584775ac00576ec7c2bef8 Mon Sep 17 00:00:00 2001 From: obo Date: Wed, 22 Mar 2023 20:10:05 +0800 Subject: [PATCH 22/70] =?UTF-8?q?REPORT-82787=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E7=A9=BA=E6=95=B0=E6=8D=AE=E6=8F=90=E7=A4=BA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=9C=80=E8=A1=A5=E5=85=85=E7=B9=81=E4=B8=AD=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/locale/impl/EmptyDataMark.java | 37 ++++++++++++++++++ .../module/ChartEmptyDataStylePane.java | 12 +++--- .../images/zh_traditional_emptydata.png | Bin 0 -> 18659 bytes 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java create mode 100644 designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png diff --git a/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java b/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java new file mode 100644 index 000000000..6b7a2f5fb --- /dev/null +++ b/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java @@ -0,0 +1,37 @@ +package com.fr.design.locale.impl; + +import com.fr.general.GeneralContext; +import com.fr.general.IOUtils; +import com.fr.general.locale.LocaleMark; + +import java.awt.image.BufferedImage; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +/** + * 根据本地化信息设置服务器图表空数据提示图标 + * + * @author obo + * @version 11.0 + * Created by obo on 2023/3/22 + */ +public class EmptyDataMark implements LocaleMark { + + private Map map = new HashMap<>(); + + private static final BufferedImage ZH_EMPTY_DATA = IOUtils.readImage("com/fr/design/images/zh_emptydata.png"); + private static final BufferedImage US_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/us_emptydata.png"); + private static final BufferedImage ZH_TRADITIONAL_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/zh_traditional_emptydata.png"); + + public EmptyDataMark() { + map.put(Locale.CHINA, ZH_EMPTY_DATA); + map.put(Locale.US, US_EMPTY_DATA); + map.put(Locale.TAIWAN, ZH_TRADITIONAL_EMPTY_DATA); + } + @Override + public BufferedImage getValue() { + BufferedImage result = map.get(GeneralContext.getLocale()); + return result == null ? US_EMPTY_DATA : result; + } +} diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java index 31718fda8..e73bae010 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java @@ -10,12 +10,13 @@ import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.locale.impl.EmptyDataMark; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; import com.fr.design.utils.ImageUtils; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.GeneralContext; -import com.fr.general.IOUtils; +import com.fr.general.locale.LocaleCenter; +import com.fr.general.locale.LocaleMark; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; import com.fr.stable.StringUtils; @@ -26,7 +27,6 @@ import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingWorker; -import java.io.File; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; @@ -35,6 +35,8 @@ import java.awt.GridLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.image.BufferedImage; +import java.io.File; /** * Created by mengao on 2017/11/23. @@ -63,8 +65,8 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { static { - DEFAULT_EMPTY_DATA_IMAGE = GeneralContext.isChineseEnv() ? IOUtils.readImage("com/fr/design/images/zh_emptydata.png") - : IOUtils.readImage("com/fr/design/images/us_emptydata.png"); + LocaleMark localeMark = LocaleCenter.getMark(EmptyDataMark.class); + DEFAULT_EMPTY_DATA_IMAGE = localeMark.getValue(); } @Override diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png new file mode 100644 index 0000000000000000000000000000000000000000..738fa685adb223d384edfe6310251f31365a6830 GIT binary patch literal 18659 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 literal 0 HcmV?d00001 From 083ceefcfb57a98440f710b21f7ab4691ac2e1ee Mon Sep 17 00:00:00 2001 From: obo Date: Wed, 22 Mar 2023 20:31:56 +0800 Subject: [PATCH 23/70] =?UTF-8?q?REPORT-92160=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8-=E5=9B=BE=E6=A0=87-=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E9=83=A8=E5=88=86-=E6=96=B0=E5=BB=BA=E6=97=A0disable=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/datapane/TableDataTreePane.java | 2 +- .../main/java/com/fr/design/menu/MenuDef.java | 33 +++++++++++++++---- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java index 57ad09d0e..149fa87dc 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java @@ -229,7 +229,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { private TreeSearchToolbarPane initToolBarPane() { // toolbar addMenuDef = new MenuDef(Toolkit.i18nText("Fine-Design_Basic_Action_Add")); - addMenuDef.setIconPath("/com/fr/design/standard/addpopup/addPopup"); + addMenuDef.setDisabledIcon("/com/fr/design/standard/addpopup/addPopup", true); createAddMenuDef(); // 创建插件监听 createPluginListener(); diff --git a/designer-base/src/main/java/com/fr/design/menu/MenuDef.java b/designer-base/src/main/java/com/fr/design/menu/MenuDef.java index 798d4870a..ee82d256e 100644 --- a/designer-base/src/main/java/com/fr/design/menu/MenuDef.java +++ b/designer-base/src/main/java/com/fr/design/menu/MenuDef.java @@ -3,25 +3,32 @@ package com.fr.design.menu; import com.fr.base.svg.IconUtils; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.ibutton.UIButton; -import com.fr.design.gui.imenu.*; +import com.fr.design.gui.imenu.UIHeadMenu; +import com.fr.design.gui.imenu.UIMenu; +import com.fr.design.gui.imenu.UIPopupEastAttrMenu; +import com.fr.design.gui.imenu.UIPopupMenu; +import com.fr.design.gui.imenu.UIScrollMenu; import com.fr.design.gui.iscrollbar.UIScrollBar; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.JTemplate; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.StringUtils; -import java.util.HashSet; -import java.util.Set; -import javax.swing.*; +import javax.swing.JMenu; +import javax.swing.JPopupMenu; +import javax.swing.JToolBar; import javax.swing.event.MenuEvent; import javax.swing.event.MenuListener; -import java.awt.*; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ContainerListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Define Menu. @@ -46,6 +53,7 @@ public class MenuDef extends ShortCut { protected Boolean isEastAttr = false; protected char mnemonic; protected String iconPath; + private boolean needDisabled; protected String tooltip; //item List. private List shortcutList = new ArrayList(); @@ -112,9 +120,19 @@ public class MenuDef extends ShortCut { } public void setIconPath(String iconPath) { - this.iconPath = iconPath; + setDisabledIcon(iconPath, false); } + /** + * 设置不可用图标时,注意传递路径问题,若路径为"view_normal.svg",请传递"view",不带后缀 + * 读取disable图标的文件名应当为"xxx_disabled.svg",也是项目中的svg命名规范 + * 注意必须是svg图标路径才能使用此函数设置正常和禁用状态 + * + * */ + public void setDisabledIcon(String iconPath, boolean needDisabled) { + this.iconPath = iconPath; + this.needDisabled = needDisabled; + } public int getShortCutCount() { return this.shortcutList.size(); } @@ -183,6 +201,9 @@ public class MenuDef extends ShortCut { if (createdButton == null) { if (iconPath != null) { createdButton = new UIButton(IconUtils.readIcon(iconPath)); + if(needDisabled) { + createdButton.setDisabledIcon(IconUtils.readIcon(iconPath + IconUtils.ICON_TYPE_DISABLED)); + } createdButton.set4ToolbarButton(); } else { createdButton = new UIButton(name); From be3c8395be08a09eaf08d75c6db2718fb0b211ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yvan-=E6=AC=A7=E9=98=B3=E5=B8=86?= Date: Thu, 23 Mar 2023 09:35:36 +0800 Subject: [PATCH 24/70] =?UTF-8?q?REPORT-91503=20=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E9=A2=91=E7=B9=81=E6=8A=A5=E9=94=99=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E4=BF=A1=E6=81=AF=E4=B8=8D=E4=B8=80=E8=87=B4=EF=BC=8C?= =?UTF-8?q?=E5=9C=A8=E8=BF=99=E4=B8=AA=E5=BC=B9=E7=AA=97=E5=8F=A6=E5=AD=98?= =?UTF-8?q?=E4=B8=BA=E4=B8=80=E5=AE=9A=E4=BC=9A=E5=A4=B1=E8=B4=A5=E3=80=82?= =?UTF-8?q?=20=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F=E5=8C=96=E3=80=81?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/utils/TemplateUtils.java | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java index e82251f4b..e7d3c3dca 100644 --- a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java @@ -35,12 +35,12 @@ public class TemplateUtils { /** * 创建新的模板文件并打开模板 * - * @param prefix 模板文件名称前缀 - * @param file 模板文件 + * @param prefix 模板文件名称前缀 + * @param file 模板文件 * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 * 为true时以CurrentEditingTemplate为准创建新模板 * 为false时以传入的File文件为准创建新模板,此文件可以不是编辑状态 - * @param openNewTemplate 是否需要在创建后打开模板 + * @param openNewTemplate 是否需要在创建后打开模板 */ public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate) { createAndOpenTemplate(prefix, file, createByEditingTemplate, openNewTemplate, () -> {}); @@ -49,13 +49,13 @@ public class TemplateUtils { /** * 创建新的模板文件并打开模板,并在创建备份模板成功后执行doAfterCreate * - * @param prefix 模板文件名称前缀 - * @param file 模板文件 - * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 - * 为true时以CurrentEditingTemplate为准创建新模板 - * 为false时以传入的File文件为准创建新模板,此文件可以不是编辑状态 - * @param openNewTemplate 是否需要在创建后打开模板 - * @param doAfterCreateTemplate 创建备份模板成功后调用 + * @param prefix 模板文件名称前缀 + * @param file 模板文件 + * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 + * 为true时以CurrentEditingTemplate为准创建新模板 + * 为false时以传入的File文件为准创建新模板,此文件可以不是编辑状态 + * @param openNewTemplate 是否需要在创建后打开模板 + * @param doAfterCreateTemplate 创建备份模板成功后调用 */ public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) { String fileName = file.getName(); @@ -65,7 +65,7 @@ public class TemplateUtils { return; } String suffix = fileName.substring(indexOfLastDot + 1); - FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true); + FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true); fileChooserPane.setFileNameTextField(prefix + fileName, suffix); FileExtension fileExtension = FileExtension.parse(suffix); fileChooserPane.addChooseFILEFilter(new ChooseFileFilter(fileExtension, ProductConstants.APP_NAME + Toolkit.i18nText("Fine-Design_Report_Template_File"))); @@ -91,7 +91,7 @@ public class TemplateUtils { protected Void doInBackground() throws Exception { // 读取模板数据 byte[] content = getTemplateData(createByEditingTemplate, oldPath); - try(OutputStream out = file.asOutputStream()) { + try (OutputStream out = file.asOutputStream()) { // 加锁 WorkContext.getCurrent().get(TplOperator.class).saveAs(file.getPath()); out.write(content); @@ -124,19 +124,20 @@ public class TemplateUtils { /** * 读取模板文件数据 * - * @param readCurrentEditingTemplate 是否读取当前编辑模板 - * @param path 模板路径 - * @return + * @param readCurrentEditingTemplate 是否读取当前编辑模板 + * @param path 模板路径 + * @return 模板文件数据 */ private static byte[] getTemplateData(boolean readCurrentEditingTemplate, String path) throws Exception { byte[] content = new byte[0]; if (readCurrentEditingTemplate) { - // 从当前编辑模板中生成备份文件 + // 从当前编辑模板中读取模板文件数据 JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); if (JTemplate.isValid(template)) { content = template.exportData(); } } else { + // 从给定的模板路径中读取模板文件数据 content = WorkContext.getWorkResource().readFully(path); } if (ArrayUtils.isEmpty(content)) { From 9f0f3de839867f4de9640c053c3bee0bcf521a7b Mon Sep 17 00:00:00 2001 From: obo Date: Thu, 23 Mar 2023 11:30:02 +0800 Subject: [PATCH 25/70] =?UTF-8?q?REPORT-92304=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8-=E5=9B=BE=E6=A0=87-=E4=B8=89=E8=A7=92=E5=BD=A2?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/constants/UIConstants.java | 20 +++++++++--------- .../icontainer/UIEastResizableContainer.java | 19 ++++++++++++++--- .../mainframe/EastRegionContainerPane.java | 5 ++++- .../fr/design/images/control/down_arrow.png | Bin 218 -> 0 bytes .../fr/design/images/control/east_arrow.png | Bin 241 -> 0 bytes .../com/fr/design/images/control/up_arrow.png | Bin 190 -> 0 bytes .../fr/design/images/control/west_arrow.png | Bin 242 -> 0 bytes .../standard/arrowlinear/down_arrow.svg | 3 +++ .../standard/arrowlinear/east_arrow.svg | 3 +++ .../design/standard/arrowlinear/up_arrow.svg | 3 +++ .../standard/arrowlinear/west_arrow.svg | 3 +++ .../com/fr/design/standard/fileicon/minus.svg | 6 +++--- .../com/fr/design/standard/fileicon/plus.svg | 4 ++-- .../fr/design/standard/floatpop_normal.svg | 13 ++++++------ .../standard/poparrow/pop_down_arrow.svg | 10 +++++++++ .../design/standard/poparrow/pop_up_arrow.svg | 3 +++ .../standard/preview_down_icon_normal.svg | 3 +++ .../standard/triangle.arrow/down_hover.svg | 4 ++-- .../standard/triangle.arrow/down_normal.svg | 2 +- .../standard/triangle.arrow/up_hover.svg | 2 +- .../standard/triangle.arrow/up_normal.svg | 2 +- .../design/cell/bar/DynamicScrollButton.java | 13 ++++++++++-- 22 files changed, 85 insertions(+), 33 deletions(-) delete mode 100644 designer-base/src/main/resources/com/fr/design/images/control/down_arrow.png delete mode 100644 designer-base/src/main/resources/com/fr/design/images/control/east_arrow.png delete mode 100644 designer-base/src/main/resources/com/fr/design/images/control/up_arrow.png delete mode 100644 designer-base/src/main/resources/com/fr/design/images/control/west_arrow.png create mode 100644 designer-base/src/main/resources/com/fr/design/standard/arrowlinear/down_arrow.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/arrowlinear/east_arrow.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/arrowlinear/up_arrow.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/arrowlinear/west_arrow.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/poparrow/pop_down_arrow.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/poparrow/pop_up_arrow.svg create mode 100644 designer-base/src/main/resources/com/fr/design/standard/preview_down_icon_normal.svg diff --git a/designer-base/src/main/java/com/fr/design/constants/UIConstants.java b/designer-base/src/main/java/com/fr/design/constants/UIConstants.java index da05a79dd..eba4a5634 100644 --- a/designer-base/src/main/java/com/fr/design/constants/UIConstants.java +++ b/designer-base/src/main/java/com/fr/design/constants/UIConstants.java @@ -153,10 +153,10 @@ public interface UIConstants { public static final BufferedImage DRAG_BAR = IOUtils.readImage("com/fr/design/images/control/bar.png"); public static final BufferedImage DRAG_BAR_LIGHT = IOUtils.readImage("com/fr/design/images/control/bar-light.png"); - public static final BufferedImage ARROW_NORTH = IOUtils.readImage("com/fr/design/images/control/up_arrow.png"); - public static final BufferedImage ARROW_SOUTH = IOUtils.readImage("com/fr/design/images/control/down_arrow.png"); - public static final BufferedImage ARROW_EAST = IOUtils.readImage("com/fr/design/images/control/east_arrow.png"); - public static final BufferedImage ARROW_WEST = IOUtils.readImage("com/fr/design/images/control/west_arrow.png"); + public static final Image ARROW_NORTH = SVGLoader.load("/com/fr/design/standard/arrowlinear/up_arrow.svg"); + public static final Image ARROW_SOUTH = SVGLoader.load("/com/fr/design/standard/arrowlinear/down_arrow.svg"); + public static final Image ARROW_EAST = SVGLoader.load("/com/fr/design/standard/arrowlinear/east_arrow.svg"); + public static final Image ARROW_WEST = SVGLoader.load("/com/fr/design/standard/arrowlinear/west_arrow.svg"); public static final BufferedImage DRAG_BAR_RIGHT = IOUtils.readImage("com/fr/design/images/control/barm.png"); public static final BufferedImage DRAG_BAR_LEFT = IOUtils.readImage("com/fr/design/images/control/barl.png"); @@ -172,24 +172,24 @@ public interface UIConstants { public static final Image DRAG_LINE = SVGLoader.load("/com/fr/design/standard/dot_line_normal.svg"); public static final BufferedImage ACCESSIBLE_EDITOR_DOT = IOUtils.readImage("com/fr/design/images/control/dot.png"); public static final BufferedImage DRAG_DOT_VERTICAL = IOUtils.readImage("com/fr/design/images/control/dotv.png"); - public static final BufferedImage POP_BUTTON_DOWN = IOUtils.readImage("com/fr/design/images/buttonicon/popdownarrow.png"); - public static final BufferedImage POP_BUTTON_UP = IOUtils.readImage("com/fr/design/images/buttonicon/popuparrow.png"); + public static final Image POP_BUTTON_DOWN = SVGLoader.load("/com/fr/design/standard/poparrow/pop_down_arrow.svg"); + public static final Image POP_BUTTON_UP = SVGLoader.load("/com/fr/design/standard/poparrow/pop_up_arrow.svg"); public static final BufferedImage DRAG_DOWN_SELECTED_SMALL = IOUtils.readImage("com/fr/design/images/buttonicon/downSelected.png"); public static final BufferedImage DRAG_LEFT_NORMAL_SMALL = IOUtils.readImage("com/fr/design/images/buttonicon/leftNormal.png"); public static final BufferedImage WATERMARK_BACKGROUND = IOUtils.readImage("/com/fr/design/images/dialog/watermark/" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_WaterMark_Background_Icon_File_Name")); public static final int MODEL_NORMAL = 0; public static final int MODEL_PRESS = 1; - public static final Icon ARROW_DOWN_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/arrowdown.png"); + public static final Icon ARROW_DOWN_ICON = IconUtils.readIcon("/com/fr/design/standard/arrowlinear/down_arrow.svg"); public static final Icon ARROW_UP_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/arrowup.png"); public static final Icon YES_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/yes.png"); public static final Icon CHOOSEN_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/select_item.png"); public static final Icon PRE_WIDGET_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/prewidget.png"); public static final Icon PRE_WIDGET_NORMAL_ICON = IconUtils.readIcon("com/fr/design/images/buttonicon/prewidget"); public static final Icon EDIT_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit"); - public static final Icon EDIT_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit"); + public static final Icon EDIT_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit_pressed.svg"); public static final Icon HIDE_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide"); - public static final Icon HIDE_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide"); + public static final Icon HIDE_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide_pressed.svg"); public static final Icon VIEW_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/view"); //public static final Icon VIEW_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/view"); @@ -221,7 +221,7 @@ public interface UIConstants { public static final int BUTTON_GROUP_ARC = 0; public static final int LARGEARC = 6; public static final Stroke BS = new BasicStroke(1f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 2f, new float[]{3, 1}, 0); - public static final Icon PREVIEW_DOWN = IOUtils.readIcon("com/fr/design/images/buttonicon/prevew_down_icon.png"); + public static final Icon PREVIEW_DOWN = IconUtils.readIcon("/com/fr/design/standard/preview_down_icon"); public static final Icon CLOSE_OF_AUTHORITY = IOUtils.readIcon("/com/fr/design/images/m_report/close.png"); public static final Icon CLOSE_OVER_AUTHORITY = IOUtils.readIcon("/com/fr/design/images/m_report/close_over.png"); public static final Icon CLOSE_PRESS_AUTHORITY = IOUtils.readIcon("/com/fr/design/images/m_report/close_press.png"); diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index f00fbee49..ff7522162 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -5,10 +5,22 @@ import com.fr.design.base.mode.DesignModeContext; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.utils.SvgPaintUtils; import com.fr.design.utils.gui.GUICoreUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.LayoutManager; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; @@ -313,7 +325,7 @@ public class UIEastResizableContainer extends JPanel { @Override public void paint(Graphics g) { Image button; - + SvgPaintUtils.beforePaint((Graphics2D) g); if (containerWidth == leftPaneWidth) { if (model == UIConstants.MODEL_NORMAL) { button = UIConstants.DRAG_LEFT_NORMAL; @@ -328,6 +340,7 @@ public class UIEastResizableContainer extends JPanel { } } g.drawImage(button, 18, 7, this); + SvgPaintUtils.afterPaint((Graphics2D) g); } } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index b033fa617..00405d609 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -19,6 +19,7 @@ import com.fr.design.notification.SnapChat; import com.fr.design.notification.SnapChatFactory; import com.fr.design.ui.util.UIUtil; import com.fr.design.utils.DesignUtils; +import com.fr.design.utils.SvgPaintUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.log.FineLoggerFactory; @@ -1313,7 +1314,9 @@ public class EastRegionContainerPane extends UIEastResizableContainer { } else { button = UIConstants.POP_BUTTON_UP; } - g.drawImage(button, ARROW_RANGE_START + 8, 4, 16, 16, null); + SvgPaintUtils.beforePaint((Graphics2D) g); + g.drawImage(button, ARROW_RANGE_START + 8, 4, null); + SvgPaintUtils.afterPaint((Graphics2D) g); } } diff --git a/designer-base/src/main/resources/com/fr/design/images/control/down_arrow.png b/designer-base/src/main/resources/com/fr/design/images/control/down_arrow.png deleted file mode 100644 index 26a780d5e2858e01e9c1fa4baa98674754d3a238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|rg*wIhFAzD zCrGef;cZ;DOzm!48=G;=vZf~vSreYloM8F?-`~e9k8~YeznyrbU>2~M*@JHhTV$W) z%;E|G%P#T*`y{`|HCuZ`jas?fP|j=WB;M&NOaxlyYcm zFljiF@MhPpUCjoj22!gT6+Bl=4sX1n(7Yj&?c_sN2j?>m66+TQdY*D-U?}x+agbD+ RQU`P&gQu&X%Q~loCIE&}SR?=d diff --git a/designer-base/src/main/resources/com/fr/design/images/control/east_arrow.png b/designer-base/src/main/resources/com/fr/design/images/control/east_arrow.png deleted file mode 100644 index 918d75a9f910fdabb1e3f79faac235803684e51a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|R(rZQhFAzD zCrHd&uyUp6_Js=%_DI|}Obq_={=U7R!aXLF6LPa{Hc1#8u^+Q5cyJ&%J^gub{l7nv zyoTd0x1ULBNs1z{BnPPeK_;WW`*escQa&5EYLo5{CGBl zhCpNE&aT#0RS^m8qa90 diff --git a/designer-base/src/main/resources/com/fr/design/images/control/west_arrow.png b/designer-base/src/main/resources/com/fr/design/images/control/west_arrow.png deleted file mode 100644 index 5693190f9646d3cf5fca20ff24bf9d114e07c833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|)_A%&hFAzD zCrC&xSh(=unw2X(#b@Ww+`y^S&1h=<=lAz~Zh>N@?!z}Kco}YG@n6}|)!M2ml5s(E zhFZ!j!I{lx*fRfpette{!n0kwb~T?UI+3%6t>F((k(uIIh2{@cj5pO{a?)~y*!g5C zUcGr!!}Ww!U~m2Zf9*G}G#=R?#W0B>Q|Xw%9JT{Ig(W36f4{%Kf7Ria!iiLc!W0Js po(9IMhR)8D>>c}+vt`_J820A+P5iQ={VdSk44$rjF6*2UngD4wV8H+Y diff --git a/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/down_arrow.svg b/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/down_arrow.svg new file mode 100644 index 000000000..fc5d318bf --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/down_arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/east_arrow.svg b/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/east_arrow.svg new file mode 100644 index 000000000..b4b54dea8 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/east_arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/up_arrow.svg b/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/up_arrow.svg new file mode 100644 index 000000000..cf615f3f3 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/up_arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/west_arrow.svg b/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/west_arrow.svg new file mode 100644 index 000000000..d5260bfd0 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/arrowlinear/west_arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/minus.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/minus.svg index 067df99f8..db4e76f2a 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/fileicon/minus.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/minus.svg @@ -1,3 +1,3 @@ - - - + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/fileicon/plus.svg b/designer-base/src/main/resources/com/fr/design/standard/fileicon/plus.svg index c2b0e9d9c..f012490ae 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/fileicon/plus.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/fileicon/plus.svg @@ -1,3 +1,3 @@ - - + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/floatpop_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/floatpop_normal.svg index 95806104d..a9e45f1c8 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/floatpop_normal.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/floatpop_normal.svg @@ -1,9 +1,8 @@ - - icon_悬浮元素&三角_normal - - - - + + + + + - + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/poparrow/pop_down_arrow.svg b/designer-base/src/main/resources/com/fr/design/standard/poparrow/pop_down_arrow.svg new file mode 100644 index 000000000..8e4260b37 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/poparrow/pop_down_arrow.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/poparrow/pop_up_arrow.svg b/designer-base/src/main/resources/com/fr/design/standard/poparrow/pop_up_arrow.svg new file mode 100644 index 000000000..5c797c1f0 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/poparrow/pop_up_arrow.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/preview_down_icon_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/preview_down_icon_normal.svg new file mode 100644 index 000000000..da4dd8c30 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/standard/preview_down_icon_normal.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg index f83d881a5..68870b99d 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg @@ -1,3 +1,3 @@ - - + + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg index 478b58eba..db4e76f2a 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg index 67045e796..1b7312ff6 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg index 229728427..f767fbcf3 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/cell/bar/DynamicScrollButton.java b/designer-realize/src/main/java/com/fr/design/cell/bar/DynamicScrollButton.java index 20bb70d66..b25011951 100644 --- a/designer-realize/src/main/java/com/fr/design/cell/bar/DynamicScrollButton.java +++ b/designer-realize/src/main/java/com/fr/design/cell/bar/DynamicScrollButton.java @@ -1,11 +1,18 @@ package com.fr.design.cell.bar; import com.fr.design.constants.UIConstants; +import com.fr.design.utils.SvgPaintUtils; import com.fr.general.ComparatorUtils; -import javax.swing.*; +import javax.swing.SwingConstants; import javax.swing.plaf.basic.BasicArrowButton; -import java.awt.*; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.GradientPaint; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Insets; import java.awt.image.BufferedImage; import java.util.HashMap; @@ -62,6 +69,7 @@ public class DynamicScrollButton extends BasicArrowButton { private void paintArrow(Graphics g, Dimension size) { + SvgPaintUtils.beforePaint((Graphics2D) g); switch (direction) { case SwingConstants.NORTH: g.drawImage(UIConstants.ARROW_NORTH, 0, 0, this); @@ -76,6 +84,7 @@ public class DynamicScrollButton extends BasicArrowButton { g.drawImage(UIConstants.ARROW_WEST, 0, 0, this); break; } + SvgPaintUtils.afterPaint((Graphics2D) g); } From 83ecaed30f28ba13630f5c594283ea284eb3e686 Mon Sep 17 00:00:00 2001 From: obo Date: Thu, 23 Mar 2023 12:07:02 +0800 Subject: [PATCH 26/70] =?UTF-8?q?REPORT-92304=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8-=E5=9B=BE=E6=A0=87-=E4=B8=89=E8=A7=92=E5=BD=A2?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=9B=B4=E6=96=B0,=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E4=B8=8BSvgPaintUtils=E7=9A=84=E5=A4=84=E7=90=86=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/icontainer/UIEastResizableContainer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index ff7522162..c8cfadd0f 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -325,7 +325,6 @@ public class UIEastResizableContainer extends JPanel { @Override public void paint(Graphics g) { Image button; - SvgPaintUtils.beforePaint((Graphics2D) g); if (containerWidth == leftPaneWidth) { if (model == UIConstants.MODEL_NORMAL) { button = UIConstants.DRAG_LEFT_NORMAL; @@ -339,6 +338,7 @@ public class UIEastResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } + SvgPaintUtils.beforePaint((Graphics2D) g); g.drawImage(button, 18, 7, this); SvgPaintUtils.afterPaint((Graphics2D) g); } From 6c34870789d45bfb4eacc25eec6348455a3ced1b Mon Sep 17 00:00:00 2001 From: loy Date: Thu, 23 Mar 2023 13:50:45 +0800 Subject: [PATCH 27/70] =?UTF-8?q?REPORT-92325=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=88=9D=E5=A7=8B=E5=8C=96=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E8=BF=9C=E7=A8=8B=E8=AE=BE=E8=AE=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AF=BC=E8=87=B4NPE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/mainframe/vcs/common/VcsHelper.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java index 0c8924e9d..dd7187be2 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java @@ -68,7 +68,11 @@ public class VcsHelper implements JTemplateActionListener { } private VcsHelper() { - legacyMode = WorkContext.getCurrent().get(VcsOperator.class).isLegacyMode(); + VcsOperator op = WorkContext.getCurrent().get(VcsOperator.class); + // 开了设计器启动页面时一开始取不到VcsOperator,通过下面的切换环境事件再取,这边判断下 + if (op != null) { + legacyMode = op.isLegacyMode(); + } EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener() { @Override public void on(Event event, Workspace param) { From 006ae013d30f39735859f7150c8882786fb788da Mon Sep 17 00:00:00 2001 From: loy Date: Thu, 23 Mar 2023 20:09:39 +0800 Subject: [PATCH 28/70] =?UTF-8?q?REPORT-80651=20=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E7=AE=A1=E7=90=86=E9=87=8D=E6=9E=84=E4=B8=80?= =?UTF-8?q?=E6=9C=9F=EF=BC=88=E5=9C=A811.0.15=E4=B8=8A=E5=9B=9E=E6=BB=9A?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert "REPORT-92325 修复环境初始化之前调用远程设计接口导致NPE问题" Revert "REPORT-92308 版本管理可用性判断逻辑适配新模式" Revert "REPORT-80651 模板版本管理重构一期" --- .../design/actions/file/PreferencePane.java | 5 +-- .../DesignerFrameFileDealerPane.java | 9 +--- .../mainframe/vcs/common/VcsHelper.java | 41 ++++--------------- 3 files changed, 10 insertions(+), 45 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index a83bcfd77..46485409b 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -390,10 +390,7 @@ public class PreferencePane extends BasicPane { vcsPane.add(enableVcsPanel); vcsPane.add(intervalPanel); vcsPane.add(saveCommitCheckBox); - if (VcsHelper.getInstance().isLegacyMode()) { - // 老版本时才显示gc选项 - vcsPane.add(gcControlPane); - } + vcsPane.add(gcControlPane); } /** diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index d21dd1b7c..8cfd26342 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -325,7 +325,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt if (VcsHelper.getInstance().needInit()) { vcsAction = new VcsAction(); - if (!isLegacyOnCluster()) { + if (!WorkContext.getCurrent().isCluster()) { vcsAction.setName(Toolkit.i18nText("Fine-Design_Vcs_Title")); } else { vcsAction.setName(Toolkit.i18nText("Fine-Design_Vcs_NotSupportRemote")); @@ -509,7 +509,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt private void fireVcsActionChange(boolean enable) { if (!DesignerEnvManager.getEnvManager().getVcsConfigManager().isVcsEnable() || VcsHelper.getInstance().isUnSelectedTemplate() - || isLegacyOnCluster()) { + || WorkContext.getCurrent().isCluster()) { setEnabled(false); return; } @@ -810,11 +810,6 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt } } - private boolean isLegacyOnCluster() { - // 老模式且为集群,用于代替之前的只判断集群逻辑 - return WorkContext.getCurrent().isCluster() && VcsHelper.getInstance().isLegacyMode(); - } - private String doCheck (String userInput, String suffix) { String errorMsg = StringUtils.EMPTY; if (selectedOperation.duplicated(userInput, suffix, true)) { diff --git a/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java b/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java index dd7187be2..980ccb5a3 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/vcs/common/VcsHelper.java @@ -12,9 +12,6 @@ import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.JTemplateActionListener; import com.fr.design.mainframe.vcs.VcsConfigManager; import com.fr.design.mainframe.vcs.ui.FileVersionTable; -import com.fr.event.Event; -import com.fr.event.EventDispatcher; -import com.fr.event.Listener; import com.fr.general.IOUtils; import com.fr.log.FineLoggerFactory; import com.fr.plugin.context.PluginContext; @@ -23,14 +20,11 @@ import com.fr.report.entity.VcsEntity; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; import com.fr.workspace.WorkContext; -import com.fr.workspace.Workspace; -import com.fr.workspace.WorkspaceEvent; import com.fr.workspace.server.vcs.VcsOperator; import com.fr.workspace.server.vcs.filesystem.VcsFileSystem; import com.fr.workspace.server.vcs.git.config.GcConfig; import javax.swing.Icon; -import javax.swing.SwingUtilities; import javax.swing.border.EmptyBorder; import java.awt.Color; import java.util.List; @@ -61,26 +55,10 @@ public class VcsHelper implements JTemplateActionListener { private final static String SERVICE_NAME_MOVE = "moveVcs"; private static final VcsHelper INSTANCE = new VcsHelper(); - private volatile boolean legacyMode; - public static VcsHelper getInstance() { return INSTANCE; } - private VcsHelper() { - VcsOperator op = WorkContext.getCurrent().get(VcsOperator.class); - // 开了设计器启动页面时一开始取不到VcsOperator,通过下面的切换环境事件再取,这边判断下 - if (op != null) { - legacyMode = op.isLegacyMode(); - } - EventDispatcher.listen(WorkspaceEvent.AfterSwitch, new Listener() { - @Override - public void on(Event event, Workspace param) { - legacyMode = WorkContext.getCurrent().get(VcsOperator.class).isLegacyMode(); - } - }); - } - private int containsFolderCounts() { TemplateFileTree fileTree = TemplateTreePane.getInstance().getTemplateFileTree(); if (fileTree.getSelectionPaths() == null) { @@ -159,18 +137,20 @@ public class VcsHelper implements JTemplateActionListener { String fileName = getEditingFilename(); VcsOperator operator = WorkContext.getCurrent().get(VcsOperator.class); VcsEntity entity = operator.getFileVersionByIndex(fileName, 0); - boolean replace = needDeleteVersion(entity); int latestFileVersion = 0; if (entity != null) { latestFileVersion = entity.getVersion(); } if (jt.getEditingFILE() instanceof VcsCacheFileNodeFile) { - operator.saveVersionFromCache(getCurrentUsername(), fileName, StringUtils.EMPTY, latestFileVersion + 1, replace); + operator.saveVersionFromCache(getCurrentUsername(), fileName, StringUtils.EMPTY, latestFileVersion + 1); String path = DesignerFrameFileDealerPane.getInstance().getSelectedOperation().getFilePath(); - List updatedList = WorkContext.getCurrent().get(VcsOperator.class).getVersions(path.replaceFirst(VCS_FILE_SLASH, StringUtils.EMPTY)); - SwingUtilities.invokeLater(() -> FileVersionTable.getInstance().updateModel(1, updatedList)); + FileVersionTable.getInstance().updateModel(1, WorkContext.getCurrent().get(VcsOperator.class).getVersions(path.replaceFirst(VCS_FILE_SLASH, StringUtils.EMPTY))); } else { - operator.saveVersion(getCurrentUsername(), fileName, StringUtils.EMPTY, latestFileVersion + 1, replace); + operator.saveVersion(getCurrentUsername(), fileName, StringUtils.EMPTY, latestFileVersion + 1); + } + VcsEntity oldEntity = WorkContext.getCurrent().get(VcsOperator.class).getFileVersionByIndexAndUsername(fileName, getCurrentUsername(), 1); + if (needDeleteVersion(oldEntity)) { + operator.deleteVersion(oldEntity.getFilename(), oldEntity.getVersion()); } if (GcConfig.getInstance().isGcEnable()) { operator.gc(); @@ -208,13 +188,6 @@ public class VcsHelper implements JTemplateActionListener { moveVcs.shutdown(); } - /** - * 判断是否为老模式 - * @return 是否为老模式 - */ - public boolean isLegacyMode() { - return legacyMode; - } @Override public void templateOpened(JTemplate jt) { From fe85bf97116dc844a808cbfcb1f439222f56131d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yvan-=E6=AC=A7=E9=98=B3=E5=B8=86?= Date: Fri, 24 Mar 2023 11:44:32 +0800 Subject: [PATCH 29/70] =?UTF-8?q?REPORT-91503=20=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E9=A2=91=E7=B9=81=E6=8A=A5=E9=94=99=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E4=BF=A1=E6=81=AF=E4=B8=8D=E4=B8=80=E8=87=B4=EF=BC=8C?= =?UTF-8?q?=E5=9C=A8=E8=BF=99=E4=B8=AA=E5=BC=B9=E7=AA=97=E5=8F=A6=E5=AD=98?= =?UTF-8?q?=E4=B8=BA=E4=B8=80=E5=AE=9A=E4=BC=9A=E5=A4=B1=E8=B4=A5=E3=80=82?= =?UTF-8?q?=20=E5=A4=84=E7=90=86=E5=88=9B=E5=BB=BA=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=A4=87=E4=BB=BD=E6=96=87=E4=BB=B6=E6=97=B6=E7=9A=84=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E9=97=AE=E9=A2=98=EF=BC=8C=E4=BB=A5=E5=8F=8A=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E5=8F=AF=E8=83=BD=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/utils/TemplateUtils.java | 34 +++++++++++++------ .../worker/save/SaveFailureHandler.java | 2 +- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java index e7d3c3dca..ce01d9992 100644 --- a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java @@ -85,28 +85,42 @@ public class TemplateUtils { private static void createAndOpenTemplate0(FILE file, String oldPath, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) { - new SwingWorker() { + new SwingWorker() { @Override - protected Void doInBackground() throws Exception { + protected Boolean doInBackground() throws Exception { // 读取模板数据 byte[] content = getTemplateData(createByEditingTemplate, oldPath); - try (OutputStream out = file.asOutputStream()) { + OutputStream out = null; + try { // 加锁 - WorkContext.getCurrent().get(TplOperator.class).saveAs(file.getPath()); + boolean saveAsLock = WorkContext.getCurrent().get(TplOperator.class).saveAs(file.getPath()); + if (!saveAsLock) { + // 加锁失败时,直接返回 + return false; + } + out = file.asOutputStream(); out.write(content); } finally { - // 解锁 - WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath()); + try { + if (out != null) { + out.close(); + } + } finally { + // 解锁 + WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath()); + } } - return null; + return true; } @Override protected void done() { try { - get(); - // 创建备份成功后 + if (!get()) { + throw new Exception("[RemoteDesign] back up template file failed"); + } + // 创建备份成功后,关闭原模板 doAfterCreateTemplate.run(); if (openNewTemplate) { DesignerContext.getDesignerFrame().openTemplate(file); @@ -126,7 +140,7 @@ public class TemplateUtils { * * @param readCurrentEditingTemplate 是否读取当前编辑模板 * @param path 模板路径 - * @return 模板文件数据 + * @return 模板文件数据 */ private static byte[] getTemplateData(boolean readCurrentEditingTemplate, String path) throws Exception { byte[] content = new byte[0]; diff --git a/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java b/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java index 128064301..119668ec6 100644 --- a/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java +++ b/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java @@ -139,7 +139,7 @@ public class SaveFailureHandler implements ThrowableHandler { new FileNodeFILE(new FileNode(template.getPath(), false)), true, true, - // 创建并打开备份模板后,关闭原模板 + // 创建并打开备份模板后,关闭原模板,无需释放原模板锁(锁定信息不一致 = 此用户模板锁信息已被清除) () -> HistoryTemplateListCache.getInstance().closeSelectedReport(template)); } } From f51f25b8598a5403eb0b470b8767d48a167e097a Mon Sep 17 00:00:00 2001 From: obo Date: Fri, 24 Mar 2023 14:58:12 +0800 Subject: [PATCH 30/70] =?UTF-8?q?REPORT-92304=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8-=E5=9B=BE=E6=A0=87-=E4=B8=89=E8=A7=92=E5=BD=A2?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/com/fr/design/standard/drag/left_normal.svg | 2 +- .../main/resources/com/fr/design/standard/drag/left_pressed.svg | 2 +- .../main/resources/com/fr/design/standard/drag/right_normal.svg | 2 +- .../resources/com/fr/design/standard/drag/right_pressed.svg | 2 +- .../com/fr/design/standard/triangle.arrow/down_hover.svg | 2 +- .../com/fr/design/standard/triangle.arrow/down_normal.svg | 2 +- .../com/fr/design/standard/triangle.arrow/up_hover.svg | 2 +- .../com/fr/design/standard/triangle.arrow/up_normal.svg | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/designer-base/src/main/resources/com/fr/design/standard/drag/left_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/drag/left_normal.svg index 0809e2e26..d20fea5a8 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/drag/left_normal.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/drag/left_normal.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/drag/left_pressed.svg b/designer-base/src/main/resources/com/fr/design/standard/drag/left_pressed.svg index 7f293e9a1..db0dca395 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/drag/left_pressed.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/drag/left_pressed.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/drag/right_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/drag/right_normal.svg index a9bc6d2c6..4b3cb3aad 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/drag/right_normal.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/drag/right_normal.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/drag/right_pressed.svg b/designer-base/src/main/resources/com/fr/design/standard/drag/right_pressed.svg index 7fa6c4e05..fafe76388 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/drag/right_pressed.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/drag/right_pressed.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg index 68870b99d..b89e82635 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_hover.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg index db4e76f2a..597fe8c9c 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/down_normal.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg index 1b7312ff6..9ddff6971 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_hover.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg index f767fbcf3..cfd49c95d 100644 --- a/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg +++ b/designer-base/src/main/resources/com/fr/design/standard/triangle.arrow/up_normal.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file From e59b18264a0427e15c42c88b18a7aa4376d65a1e Mon Sep 17 00:00:00 2001 From: obo Date: Fri, 24 Mar 2023 14:59:25 +0800 Subject: [PATCH 31/70] =?UTF-8?q?REPORT-92440=20mac-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=B8=A6=E5=8F=B9=E5=8F=B7=E7=9A=84=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/icon/WarningIcon.java | 26 +++++++++++++------ .../com/fr/design/utils/SvgPaintUtils.java | 3 ++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java index 08d5b5a55..025033d73 100644 --- a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java +++ b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java @@ -1,12 +1,17 @@ package com.fr.design.icon; import com.fr.base.svg.SVGLoader; +import com.fr.base.svg.SystemScaleUtils; import com.fr.design.utils.SvgPaintUtils; import com.fr.log.FineLoggerFactory; import javax.swing.GrayFilter; import javax.swing.ImageIcon; -import java.awt.*; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.MediaTracker; import java.awt.image.ImageObserver; /** @@ -20,7 +25,8 @@ public class WarningIcon extends ImageIcon { }; protected final static MediaTracker TRACKER = new MediaTracker(COMPONENT); private final static Image WARNING_IMAGE = SVGLoader.load("/com/fr/design/standard/warning.svg"); - + private static final boolean HI_DPI_SUPPORT = SystemScaleUtils.isJreHiDPIEnabled(); + public static final float SYSTEM_SCALE = SystemScaleUtils.sysScale(); private Image mainImage = null; private ImageObserver imageObserver; private int width = -1; @@ -36,14 +42,16 @@ public class WarningIcon extends ImageIcon { @Override public synchronized void paintIcon(Component c, Graphics g, int x, int y) { - SvgPaintUtils.beforePaint((Graphics2D) g); + //裁剪绘制svg的位置,以免影响到图标右侧的文字 + Graphics2D graphics = (Graphics2D) g.create(x, y, WARNING_IMAGE.getWidth(null), WARNING_IMAGE.getHeight(null)); + SvgPaintUtils.beforePaint(graphics); if (mainImage != null) { - g.drawImage(mainImage, x, y, c); + graphics.drawImage(mainImage, x, y, null); } if (WARNING_IMAGE != null) { - g.drawImage(WARNING_IMAGE, x, y, c); + graphics.drawImage(WARNING_IMAGE, x, y, null); } - SvgPaintUtils.afterPaint((Graphics2D) g); + SvgPaintUtils.afterPaint(graphics); } /** @@ -91,7 +99,8 @@ public class WarningIcon extends ImageIcon { * @return the width in pixels of this icon */ public int getIconWidth() { - return width; + //如果环境支持高清化,drawImage可能会缩放绘制的图像比例,需要保证svg正常显示的同时调整绘制范围 + return HI_DPI_SUPPORT ? (int) (width / SYSTEM_SCALE) : width; } /** @@ -100,7 +109,8 @@ public class WarningIcon extends ImageIcon { * @return the height in pixels of this icon */ public int getIconHeight() { - return height; + //如果环境支持高清化,drawImage可能会缩放绘制的图像比例,需要保证svg正常显示的同时调整绘制范围 + return HI_DPI_SUPPORT ? (int) (height / SYSTEM_SCALE) : height; } { diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java b/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java index fdb460eb4..a51783d8f 100644 --- a/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java @@ -2,6 +2,7 @@ package com.fr.design.utils; import com.fr.base.svg.SVGLoader; import com.fr.base.svg.SystemScaleUtils; + import java.awt.Graphics2D; /** @@ -21,7 +22,7 @@ public class SvgPaintUtils { public static void afterPaint(Graphics2D g2) { if (SystemScaleUtils.isJreHiDPIEnabled()) { - g2.scale(SVGLoader.SYSTEM_SCALE, SVGLoader.SYSTEM_SCALE); + g2.scale(1.0D, 1.0D); } } From 9277d913817c69db8796186844c66e5dc4e366f5 Mon Sep 17 00:00:00 2001 From: obo Date: Fri, 24 Mar 2023 15:00:40 +0800 Subject: [PATCH 32/70] =?UTF-8?q?REPORT-92439=20mac=E4=B8=8B-=E5=B1=95?= =?UTF-8?q?=E5=BC=80=E6=94=B6=E8=B5=B7=E5=9B=BE=E6=A0=87=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../icontainer/UIEastResizableContainer.java | 7 +++- .../gui/icontainer/UIResizableContainer.java | 41 +++++++++++++++---- .../mainframe/EastRegionContainerPane.java | 7 +++- 3 files changed, 45 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index c8cfadd0f..17511d391 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -1,6 +1,8 @@ package com.fr.design.gui.icontainer; +import com.fr.base.svg.SVGLoader; +import com.fr.base.svg.SystemScaleUtils; import com.fr.design.base.mode.DesignModeContext; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; @@ -339,7 +341,10 @@ public class UIEastResizableContainer extends JPanel { } } SvgPaintUtils.beforePaint((Graphics2D) g); - g.drawImage(button, 18, 7, this); + //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 + int x = SystemScaleUtils.isJreHiDPIEnabled() ? (int) (10 * SVGLoader.SYSTEM_SCALE) : 10; + int y = SystemScaleUtils.isJreHiDPIEnabled() ? (int) (7 * SVGLoader.SYSTEM_SCALE) : 7; + g.drawImage(button, x, y, null); SvgPaintUtils.afterPaint((Graphics2D) g); } } diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java index 8e562cc3c..cbc175a0d 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -1,14 +1,27 @@ package com.fr.design.gui.icontainer; +import com.fr.base.svg.SVGLoader; +import com.fr.base.svg.SystemScaleUtils; import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.SvgPaintUtils; -import com.fr.stable.Constants; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.stable.Constants; -import javax.swing.*; -import java.awt.*; +import javax.swing.JComponent; +import javax.swing.JFrame; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.LayoutManager; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; @@ -16,6 +29,8 @@ import java.awt.event.MouseMotionListener; public class UIResizableContainer extends JPanel { private static final long serialVersionUID = 1854340560790476907L; private static final int MAX_PARA_HEIGHT = 240; + private final boolean HI_DPI_SUPPORT = SystemScaleUtils.isJreHiDPIEnabled(); + private int containerWidth = 240; private int preferredWidth = 240; private int toolPaneY = 300; @@ -412,9 +427,13 @@ public class UIResizableContainer extends JPanel { Image downButton = (downModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_DOWN_NORMAL : UIConstants.DRAG_DOWN_PRESS); g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null); SvgPaintUtils.beforePaint((Graphics2D) g); - g.drawImage(UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, null); - g.drawImage(upButton, ARROW_MARGIN, 1, null); - g.drawImage(downButton, getWidth() - toolPaneHeight - ARROW_MARGIN, 1, null); + //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 + int dragLineX = HI_DPI_SUPPORT ? (int) ((getWidth() - toolPaneHeight) / 2 * SVGLoader.SYSTEM_SCALE) : (getWidth() - toolPaneHeight) / 2; + int dragLineY = HI_DPI_SUPPORT ? (int) (3 * SVGLoader.SYSTEM_SCALE) : 3; + int downButtonX = HI_DPI_SUPPORT ? (int) ((getWidth() - toolPaneHeight - ARROW_MARGIN) * SVGLoader.SYSTEM_SCALE) : (getWidth() - toolPaneHeight - ARROW_MARGIN); + g.drawImage(UIConstants.DRAG_LINE, dragLineX, dragLineY, null); + g.drawImage(upButton, ARROW_MARGIN, 0, null); + g.drawImage(downButton, downButtonX, 0, null); SvgPaintUtils.afterPaint((Graphics2D) g); } } @@ -512,7 +531,12 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_LEFT_PRESS; } } - g.drawImage(button, -1, ARROW_MARGIN_VERTICAL, this); + SvgPaintUtils.beforePaint((Graphics2D) g); + //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 + int x = HI_DPI_SUPPORT ? (int) (-6 * SVGLoader.SYSTEM_SCALE) : -6; + int y = HI_DPI_SUPPORT ? (int) (ARROW_MARGIN_VERTICAL * SVGLoader.SYSTEM_SCALE) : ARROW_MARGIN_VERTICAL; + g.drawImage(button, x, y, this); + SvgPaintUtils.afterPaint((Graphics2D) g); } else { g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null); if (containerWidth == toolPaneHeight) { @@ -528,7 +552,8 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - g.drawImage(button, 2, ARROW_MARGIN_VERTICAL, this); + int x = HI_DPI_SUPPORT ? (int) (10 * SVGLoader.SYSTEM_SCALE) : 10; + g.drawImage(button, x, ARROW_MARGIN_VERTICAL, this); } if (isLeftRightDragEnabled) { g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index 00405d609..7ac1aac40 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -2,6 +2,8 @@ package com.fr.design.mainframe; import com.fr.base.FRContext; import com.fr.base.svg.IconUtils; +import com.fr.base.svg.SVGLoader; +import com.fr.base.svg.SystemScaleUtils; import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; @@ -1315,7 +1317,10 @@ public class EastRegionContainerPane extends UIEastResizableContainer { button = UIConstants.POP_BUTTON_UP; } SvgPaintUtils.beforePaint((Graphics2D) g); - g.drawImage(button, ARROW_RANGE_START + 8, 4, null); + //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 + int x = SystemScaleUtils.isJreHiDPIEnabled() ? (int) ((ARROW_RANGE_START + 8) * SVGLoader.SYSTEM_SCALE) : (ARROW_RANGE_START + 8); + int y = SystemScaleUtils.isJreHiDPIEnabled() ? (int) (4 * SVGLoader.SYSTEM_SCALE) : 4; + g.drawImage(button, x, y, null); SvgPaintUtils.afterPaint((Graphics2D) g); } } From 5df6bf5477ff065e9d430c021fa2f7c42f01f76c Mon Sep 17 00:00:00 2001 From: obo Date: Fri, 24 Mar 2023 15:46:19 +0800 Subject: [PATCH 33/70] =?UTF-8?q?REPORT-92439=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BA=86=E8=AE=A1=E7=AE=97svg=E4=BD=8D=E7=BD=AEx,y=E7=9A=84?= =?UTF-8?q?=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../icontainer/UIEastResizableContainer.java | 6 +---- .../gui/icontainer/UIResizableContainer.java | 18 ++++---------- .../mainframe/EastRegionContainerPane.java | 6 +---- .../com/fr/design/utils/SvgPaintUtils.java | 24 +++++++++++++++++-- 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index 17511d391..2a9fcacb8 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -1,8 +1,6 @@ package com.fr.design.gui.icontainer; -import com.fr.base.svg.SVGLoader; -import com.fr.base.svg.SystemScaleUtils; import com.fr.design.base.mode.DesignModeContext; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; @@ -342,9 +340,7 @@ public class UIEastResizableContainer extends JPanel { } SvgPaintUtils.beforePaint((Graphics2D) g); //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - int x = SystemScaleUtils.isJreHiDPIEnabled() ? (int) (10 * SVGLoader.SYSTEM_SCALE) : 10; - int y = SystemScaleUtils.isJreHiDPIEnabled() ? (int) (7 * SVGLoader.SYSTEM_SCALE) : 7; - g.drawImage(button, x, y, null); + g.drawImage(button, SvgPaintUtils.calculatePositionX(10), SvgPaintUtils.calculatePositionY(7), null); SvgPaintUtils.afterPaint((Graphics2D) g); } } diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java index cbc175a0d..44806b3bf 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -1,7 +1,5 @@ package com.fr.design.gui.icontainer; -import com.fr.base.svg.SVGLoader; -import com.fr.base.svg.SystemScaleUtils; import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; @@ -29,8 +27,6 @@ import java.awt.event.MouseMotionListener; public class UIResizableContainer extends JPanel { private static final long serialVersionUID = 1854340560790476907L; private static final int MAX_PARA_HEIGHT = 240; - private final boolean HI_DPI_SUPPORT = SystemScaleUtils.isJreHiDPIEnabled(); - private int containerWidth = 240; private int preferredWidth = 240; private int toolPaneY = 300; @@ -428,12 +424,9 @@ public class UIResizableContainer extends JPanel { g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null); SvgPaintUtils.beforePaint((Graphics2D) g); //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - int dragLineX = HI_DPI_SUPPORT ? (int) ((getWidth() - toolPaneHeight) / 2 * SVGLoader.SYSTEM_SCALE) : (getWidth() - toolPaneHeight) / 2; - int dragLineY = HI_DPI_SUPPORT ? (int) (3 * SVGLoader.SYSTEM_SCALE) : 3; - int downButtonX = HI_DPI_SUPPORT ? (int) ((getWidth() - toolPaneHeight - ARROW_MARGIN) * SVGLoader.SYSTEM_SCALE) : (getWidth() - toolPaneHeight - ARROW_MARGIN); - g.drawImage(UIConstants.DRAG_LINE, dragLineX, dragLineY, null); + g.drawImage(UIConstants.DRAG_LINE, SvgPaintUtils.calculatePositionX((getWidth() - toolPaneHeight) / 2), SvgPaintUtils.calculatePositionY(3), null); g.drawImage(upButton, ARROW_MARGIN, 0, null); - g.drawImage(downButton, downButtonX, 0, null); + g.drawImage(downButton, SvgPaintUtils.calculatePositionX(getWidth() - toolPaneHeight - ARROW_MARGIN), 0, null); SvgPaintUtils.afterPaint((Graphics2D) g); } } @@ -533,9 +526,7 @@ public class UIResizableContainer extends JPanel { } SvgPaintUtils.beforePaint((Graphics2D) g); //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - int x = HI_DPI_SUPPORT ? (int) (-6 * SVGLoader.SYSTEM_SCALE) : -6; - int y = HI_DPI_SUPPORT ? (int) (ARROW_MARGIN_VERTICAL * SVGLoader.SYSTEM_SCALE) : ARROW_MARGIN_VERTICAL; - g.drawImage(button, x, y, this); + g.drawImage(button, SvgPaintUtils.calculatePositionX(-6), SvgPaintUtils.calculatePositionY(ARROW_MARGIN_VERTICAL), this); SvgPaintUtils.afterPaint((Graphics2D) g); } else { g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null); @@ -552,8 +543,7 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - int x = HI_DPI_SUPPORT ? (int) (10 * SVGLoader.SYSTEM_SCALE) : 10; - g.drawImage(button, x, ARROW_MARGIN_VERTICAL, this); + g.drawImage(button, SvgPaintUtils.calculatePositionX(10), ARROW_MARGIN_VERTICAL, this); } if (isLeftRightDragEnabled) { g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index 7ac1aac40..b460e1e31 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -2,8 +2,6 @@ package com.fr.design.mainframe; import com.fr.base.FRContext; import com.fr.base.svg.IconUtils; -import com.fr.base.svg.SVGLoader; -import com.fr.base.svg.SystemScaleUtils; import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; @@ -1318,9 +1316,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer { } SvgPaintUtils.beforePaint((Graphics2D) g); //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - int x = SystemScaleUtils.isJreHiDPIEnabled() ? (int) ((ARROW_RANGE_START + 8) * SVGLoader.SYSTEM_SCALE) : (ARROW_RANGE_START + 8); - int y = SystemScaleUtils.isJreHiDPIEnabled() ? (int) (4 * SVGLoader.SYSTEM_SCALE) : 4; - g.drawImage(button, x, y, null); + g.drawImage(button, SvgPaintUtils.calculatePositionX(ARROW_RANGE_START + 8), SvgPaintUtils.calculatePositionY(4), null); SvgPaintUtils.afterPaint((Graphics2D) g); } } diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java b/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java index a51783d8f..85e34caba 100644 --- a/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java @@ -14,16 +14,36 @@ import java.awt.Graphics2D; */ public class SvgPaintUtils { + private static final boolean HI_DPI_ENABLED = SystemScaleUtils.isJreHiDPIEnabled(); + public static void beforePaint(Graphics2D g2) { - if (SystemScaleUtils.isJreHiDPIEnabled()) { + if (HI_DPI_ENABLED) { g2.scale(1 / SVGLoader.SYSTEM_SCALE, 1 / SVGLoader.SYSTEM_SCALE); } } public static void afterPaint(Graphics2D g2) { - if (SystemScaleUtils.isJreHiDPIEnabled()) { + if (HI_DPI_ENABLED) { g2.scale(1.0D, 1.0D); } } + /** + * 计算高缩放下绘制svg图标时新的的位置x + * @param x 旧x的值 + * @return 新的x值 + * */ + public static int calculatePositionX(int x) { + return HI_DPI_ENABLED ? (int) (x * SVGLoader.SYSTEM_SCALE) : x; + } + + /** + * 计算高缩放下绘制svg图标时新的的位置y + * @param y 旧y的值 + * @return 新的y值 + * */ + public static int calculatePositionY(int y) { + return HI_DPI_ENABLED ? (int) (y * SVGLoader.SYSTEM_SCALE) : y; + } + } From 810f67af613136a1a293556314d3ba2c8b117e79 Mon Sep 17 00:00:00 2001 From: obo Date: Fri, 24 Mar 2023 19:59:13 +0800 Subject: [PATCH 34/70] =?UTF-8?q?REPORT-92440=20mac-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=B8=A6=E5=8F=B9=E5=8F=B7=E7=9A=84=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/icon/WarningIcon.java | 19 ++++++++--- .../com/fr/design/utils/SvgPaintWorker.java | 33 +++++++++++++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java diff --git a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java index 025033d73..20e646256 100644 --- a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java +++ b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java @@ -2,7 +2,7 @@ package com.fr.design.icon; import com.fr.base.svg.SVGLoader; import com.fr.base.svg.SystemScaleUtils; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgPaintWorker; import com.fr.log.FineLoggerFactory; import javax.swing.GrayFilter; @@ -44,14 +44,23 @@ public class WarningIcon extends ImageIcon { public synchronized void paintIcon(Component c, Graphics g, int x, int y) { //裁剪绘制svg的位置,以免影响到图标右侧的文字 Graphics2D graphics = (Graphics2D) g.create(x, y, WARNING_IMAGE.getWidth(null), WARNING_IMAGE.getHeight(null)); - SvgPaintUtils.beforePaint(graphics); if (mainImage != null) { - graphics.drawImage(mainImage, x, y, null); + new SvgPaintWorker(graphics) { + @Override + protected void doPrint() { + this.drawImage(mainImage, x, y, null); + } + }.execute(); } if (WARNING_IMAGE != null) { - graphics.drawImage(WARNING_IMAGE, x, y, null); + new SvgPaintWorker(graphics) { + @Override + protected void doPrint() { + this.drawImage(WARNING_IMAGE, x, y, null); + } + }.execute(); } - SvgPaintUtils.afterPaint(graphics); + graphics.dispose(); } /** diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java b/designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java new file mode 100644 index 000000000..321e8b05d --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java @@ -0,0 +1,33 @@ +package com.fr.design.utils; + +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.image.ImageObserver; + +/** + * SVG图标绘制器 + * + * @author obo + * @since 11.0 + * Created on 2023/3/24 + */ +abstract public class SvgPaintWorker { + + private final Graphics graphics; + public SvgPaintWorker(Graphics g) { + graphics = g; + } + + protected abstract void doPrint(); + protected void drawImage(Image image, int x, int y, ImageObserver imageObserver) { + //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 + graphics.drawImage(image, SvgPaintUtils.calculatePosition(x), SvgPaintUtils.calculatePosition(y), imageObserver); + } + + public void execute() { + SvgPaintUtils.beforePaint((Graphics2D) graphics); + doPrint(); + SvgPaintUtils.afterPaint((Graphics2D) graphics); + } +} From d7d7fd53269f4650a00bcdbb1ed753eb4f875454 Mon Sep 17 00:00:00 2001 From: obo Date: Fri, 24 Mar 2023 20:03:35 +0800 Subject: [PATCH 35/70] =?UTF-8?q?REPORT-92439=20mac=E4=B8=8B-=E5=B1=95?= =?UTF-8?q?=E5=BC=80=E6=94=B6=E8=B5=B7=E5=9B=BE=E6=A0=87=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/base/svg/SVGIcon.java | 17 ++++--- .../icontainer/UIEastResizableContainer.java | 12 ++--- .../gui/icontainer/UIResizableContainer.java | 44 +++++++++++++------ .../mainframe/EastRegionContainerPane.java | 12 ++--- .../com/fr/design/utils/SvgPaintUtils.java | 22 +++------- 5 files changed, 62 insertions(+), 45 deletions(-) diff --git a/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java b/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java index 172b10dac..a15b2118d 100644 --- a/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java +++ b/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java @@ -1,9 +1,12 @@ package com.fr.base.svg; +import com.fr.design.utils.SvgPaintWorker; import com.fr.general.IOUtils; -import javax.swing.*; -import java.awt.*; +import javax.swing.Icon; +import java.awt.Component; +import java.awt.Graphics; +import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -34,10 +37,12 @@ public class SVGIcon implements Icon { public void paintIcon(Component c, Graphics g, int x, int y) { if (HI_DPI_SURPORT) { Graphics2D graphics = (Graphics2D) g.create(x, y, image.getWidth(null), image.getHeight(null)); - float scale = SYSTEM_SCALE; - graphics.scale(1 / scale, 1 / scale); - graphics.drawImage(image, 0, 0, null); - graphics.scale(1.0D, 1.0D); + new SvgPaintWorker(graphics) { + @Override + protected void doPrint() { + this.drawImage(image, 0, 0, null); + } + }.execute(); graphics.dispose(); } else { g.drawImage(image, x, y, null); diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index 2a9fcacb8..5029ccf98 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -5,7 +5,7 @@ import com.fr.design.base.mode.DesignModeContext; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgPaintWorker; import com.fr.design.utils.gui.GUICoreUtils; import javax.swing.JComponent; @@ -18,7 +18,6 @@ import java.awt.Container; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics; -import java.awt.Graphics2D; import java.awt.Image; import java.awt.LayoutManager; import java.awt.event.MouseAdapter; @@ -338,10 +337,13 @@ public class UIEastResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - SvgPaintUtils.beforePaint((Graphics2D) g); //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - g.drawImage(button, SvgPaintUtils.calculatePositionX(10), SvgPaintUtils.calculatePositionY(7), null); - SvgPaintUtils.afterPaint((Graphics2D) g); + new SvgPaintWorker(g) { + @Override + protected void doPrint() { + this.drawImage(button, 10, 7, null); + } + }.execute(); } } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java index 44806b3bf..ceaabe56e 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -3,7 +3,7 @@ package com.fr.design.gui.icontainer; import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgPaintWorker; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.Constants; @@ -17,7 +17,6 @@ import java.awt.Container; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics; -import java.awt.Graphics2D; import java.awt.Image; import java.awt.LayoutManager; import java.awt.event.MouseAdapter; @@ -422,12 +421,24 @@ public class UIResizableContainer extends JPanel { Image upButton = (upModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_UP_NORMAL : UIConstants.DRAG_UP_PRESS); Image downButton = (downModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_DOWN_NORMAL : UIConstants.DRAG_DOWN_PRESS); g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null); - SvgPaintUtils.beforePaint((Graphics2D) g); - //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - g.drawImage(UIConstants.DRAG_LINE, SvgPaintUtils.calculatePositionX((getWidth() - toolPaneHeight) / 2), SvgPaintUtils.calculatePositionY(3), null); - g.drawImage(upButton, ARROW_MARGIN, 0, null); - g.drawImage(downButton, SvgPaintUtils.calculatePositionX(getWidth() - toolPaneHeight - ARROW_MARGIN), 0, null); - SvgPaintUtils.afterPaint((Graphics2D) g); + new SvgPaintWorker(g) { + @Override + protected void doPrint() { + this.drawImage(UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, null); + } + }.execute(); + new SvgPaintWorker(g) { + @Override + protected void doPrint() { + this.drawImage(upButton, ARROW_MARGIN, 0, null); + } + }.execute(); + new SvgPaintWorker(g) { + @Override + protected void doPrint() { + this.drawImage(downButton, (getWidth() - toolPaneHeight - ARROW_MARGIN), 0, null); + } + }.execute(); } } @@ -524,10 +535,12 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_LEFT_PRESS; } } - SvgPaintUtils.beforePaint((Graphics2D) g); - //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - g.drawImage(button, SvgPaintUtils.calculatePositionX(-6), SvgPaintUtils.calculatePositionY(ARROW_MARGIN_VERTICAL), this); - SvgPaintUtils.afterPaint((Graphics2D) g); + new SvgPaintWorker(g) { + @Override + protected void doPrint() { + this.drawImage(button, -6, ARROW_MARGIN_VERTICAL, VerticalToolPane.this); + } + }.execute(); } else { g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null); if (containerWidth == toolPaneHeight) { @@ -543,7 +556,12 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - g.drawImage(button, SvgPaintUtils.calculatePositionX(10), ARROW_MARGIN_VERTICAL, this); + new SvgPaintWorker(g) { + @Override + protected void doPrint() { + this.drawImage(button, 10, ARROW_MARGIN_VERTICAL, VerticalToolPane.this); + } + }.execute(); } if (isLeftRightDragEnabled) { g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index b460e1e31..858e76048 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -19,7 +19,7 @@ import com.fr.design.notification.SnapChat; import com.fr.design.notification.SnapChatFactory; import com.fr.design.ui.util.UIUtil; import com.fr.design.utils.DesignUtils; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgPaintWorker; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.log.FineLoggerFactory; @@ -1314,10 +1314,12 @@ public class EastRegionContainerPane extends UIEastResizableContainer { } else { button = UIConstants.POP_BUTTON_UP; } - SvgPaintUtils.beforePaint((Graphics2D) g); - //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - g.drawImage(button, SvgPaintUtils.calculatePositionX(ARROW_RANGE_START + 8), SvgPaintUtils.calculatePositionY(4), null); - SvgPaintUtils.afterPaint((Graphics2D) g); + new SvgPaintWorker(g) { + @Override + protected void doPrint() { + this.drawImage(button, (ARROW_RANGE_START + 8), 4, null); + } + }.execute(); } } diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java b/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java index 85e34caba..507768a04 100644 --- a/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java @@ -24,26 +24,16 @@ public class SvgPaintUtils { public static void afterPaint(Graphics2D g2) { if (HI_DPI_ENABLED) { - g2.scale(1.0D, 1.0D); + g2.scale(SVGLoader.SYSTEM_SCALE, SVGLoader.SYSTEM_SCALE); } } /** - * 计算高缩放下绘制svg图标时新的的位置x - * @param x 旧x的值 - * @return 新的x值 + * 计算高缩放下绘制svg图标时新的的位置x,y + * @param position 旧坐标的值 + * @return 新的position值 * */ - public static int calculatePositionX(int x) { - return HI_DPI_ENABLED ? (int) (x * SVGLoader.SYSTEM_SCALE) : x; + public static int calculatePosition(int position) { + return HI_DPI_ENABLED ? (int) (position * SVGLoader.SYSTEM_SCALE) : position; } - - /** - * 计算高缩放下绘制svg图标时新的的位置y - * @param y 旧y的值 - * @return 新的y值 - * */ - public static int calculatePositionY(int y) { - return HI_DPI_ENABLED ? (int) (y * SVGLoader.SYSTEM_SCALE) : y; - } - } From df2bdb4ae1087ead62ccc98ee0c1f03246bc6240 Mon Sep 17 00:00:00 2001 From: obo Date: Fri, 24 Mar 2023 20:50:50 +0800 Subject: [PATCH 36/70] =?UTF-8?q?REPORT-92430=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8-=E5=9B=BE=E6=A0=87-mac=E4=B8=8B=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E9=83=BD=E4=B8=A2=E5=A4=B1=E4=BA=86=EF=BC=8C?= =?UTF-8?q?windows=E4=B8=8B=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/images/lookandfeel/TreeLeafIcon.svg | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg b/designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg new file mode 100644 index 000000000..c2971da64 --- /dev/null +++ b/designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 905eac5f5b294a88b091e1fc97784d202a3abe48 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 27 Mar 2023 10:19:08 +0800 Subject: [PATCH 37/70] =?UTF-8?q?REPORT-92440=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BA=86SvgPaintWorker=E7=9A=84execute=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=9A=84=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/utils/SvgPaintWorker.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java b/designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java index 321e8b05d..6202f608a 100644 --- a/designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java +++ b/designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java @@ -25,6 +25,13 @@ abstract public class SvgPaintWorker { graphics.drawImage(image, SvgPaintUtils.calculatePosition(x), SvgPaintUtils.calculatePosition(y), imageObserver); } + /** + * 执行完整的svg绘制逻辑 + * + * @author obo + * @since 11.0 + * Created on 2023/3/24 + */ public void execute() { SvgPaintUtils.beforePaint((Graphics2D) graphics); doPrint(); From e977f6fc6fdd31a44e21c0a39dc9aa2076121c87 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 27 Mar 2023 15:54:51 +0800 Subject: [PATCH 38/70] =?UTF-8?q?REPORT-92439=20mac=E4=B8=8B-=E5=B1=95?= =?UTF-8?q?=E5=BC=80=E6=94=B6=E8=B5=B7=E5=9B=BE=E6=A0=87=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/base/svg/SVGIcon.java | 8 ++--- .../icontainer/UIEastResizableContainer.java | 8 ++--- .../gui/icontainer/UIResizableContainer.java | 32 +++++++++---------- .../mainframe/EastRegionContainerPane.java | 8 ++--- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java b/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java index a15b2118d..613b6ddbd 100644 --- a/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java +++ b/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java @@ -1,6 +1,6 @@ package com.fr.base.svg; -import com.fr.design.utils.SvgPaintWorker; +import com.fr.design.utils.SvgPainter; import com.fr.general.IOUtils; import javax.swing.Icon; @@ -37,12 +37,12 @@ public class SVGIcon implements Icon { public void paintIcon(Component c, Graphics g, int x, int y) { if (HI_DPI_SURPORT) { Graphics2D graphics = (Graphics2D) g.create(x, y, image.getWidth(null), image.getHeight(null)); - new SvgPaintWorker(graphics) { + new SvgPainter(graphics) { @Override - protected void doPrint() { + protected void doPaint() { this.drawImage(image, 0, 0, null); } - }.execute(); + }.paint(); graphics.dispose(); } else { g.drawImage(image, x, y, null); diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index 5029ccf98..d078b747f 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -5,7 +5,7 @@ import com.fr.design.base.mode.DesignModeContext; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.utils.SvgPaintWorker; +import com.fr.design.utils.SvgPainter; import com.fr.design.utils.gui.GUICoreUtils; import javax.swing.JComponent; @@ -338,12 +338,12 @@ public class UIEastResizableContainer extends JPanel { } } //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - new SvgPaintWorker(g) { + new SvgPainter(g) { @Override - protected void doPrint() { + protected void doPaint() { this.drawImage(button, 10, 7, null); } - }.execute(); + }.paint(); } } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java index ceaabe56e..20109fff1 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -3,7 +3,7 @@ package com.fr.design.gui.icontainer; import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.utils.SvgPaintWorker; +import com.fr.design.utils.SvgPainter; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.Constants; @@ -421,24 +421,24 @@ public class UIResizableContainer extends JPanel { Image upButton = (upModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_UP_NORMAL : UIConstants.DRAG_UP_PRESS); Image downButton = (downModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_DOWN_NORMAL : UIConstants.DRAG_DOWN_PRESS); g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null); - new SvgPaintWorker(g) { + new SvgPainter(g) { @Override - protected void doPrint() { + protected void doPaint() { this.drawImage(UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, null); } - }.execute(); - new SvgPaintWorker(g) { + }.paint(); + new SvgPainter(g) { @Override - protected void doPrint() { + protected void doPaint() { this.drawImage(upButton, ARROW_MARGIN, 0, null); } - }.execute(); - new SvgPaintWorker(g) { + }.paint(); + new SvgPainter(g) { @Override - protected void doPrint() { + protected void doPaint() { this.drawImage(downButton, (getWidth() - toolPaneHeight - ARROW_MARGIN), 0, null); } - }.execute(); + }.paint(); } } @@ -535,12 +535,12 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_LEFT_PRESS; } } - new SvgPaintWorker(g) { + new SvgPainter(g) { @Override - protected void doPrint() { + protected void doPaint() { this.drawImage(button, -6, ARROW_MARGIN_VERTICAL, VerticalToolPane.this); } - }.execute(); + }.paint(); } else { g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null); if (containerWidth == toolPaneHeight) { @@ -556,12 +556,12 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - new SvgPaintWorker(g) { + new SvgPainter(g) { @Override - protected void doPrint() { + protected void doPaint() { this.drawImage(button, 10, ARROW_MARGIN_VERTICAL, VerticalToolPane.this); } - }.execute(); + }.paint(); } if (isLeftRightDragEnabled) { g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index 858e76048..0d3dfcae8 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -19,7 +19,7 @@ import com.fr.design.notification.SnapChat; import com.fr.design.notification.SnapChatFactory; import com.fr.design.ui.util.UIUtil; import com.fr.design.utils.DesignUtils; -import com.fr.design.utils.SvgPaintWorker; +import com.fr.design.utils.SvgPainter; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.log.FineLoggerFactory; @@ -1314,12 +1314,12 @@ public class EastRegionContainerPane extends UIEastResizableContainer { } else { button = UIConstants.POP_BUTTON_UP; } - new SvgPaintWorker(g) { + new SvgPainter(g) { @Override - protected void doPrint() { + protected void doPaint() { this.drawImage(button, (ARROW_RANGE_START + 8), 4, null); } - }.execute(); + }.paint(); } } From 567d3f67d4edb226ed1b9f658c8b0e2ddaf0a636 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 27 Mar 2023 15:55:22 +0800 Subject: [PATCH 39/70] =?UTF-8?q?REPORT-92440=20mac-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=B8=A6=E5=8F=B9=E5=8F=B7=E7=9A=84=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/icon/WarningIcon.java | 14 +++++++------- .../utils/{SvgPaintWorker.java => SvgPainter.java} | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) rename designer-base/src/main/java/com/fr/design/utils/{SvgPaintWorker.java => SvgPainter.java} (84%) diff --git a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java index 20e646256..cadf64fd9 100644 --- a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java +++ b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java @@ -2,7 +2,7 @@ package com.fr.design.icon; import com.fr.base.svg.SVGLoader; import com.fr.base.svg.SystemScaleUtils; -import com.fr.design.utils.SvgPaintWorker; +import com.fr.design.utils.SvgPainter; import com.fr.log.FineLoggerFactory; import javax.swing.GrayFilter; @@ -45,20 +45,20 @@ public class WarningIcon extends ImageIcon { //裁剪绘制svg的位置,以免影响到图标右侧的文字 Graphics2D graphics = (Graphics2D) g.create(x, y, WARNING_IMAGE.getWidth(null), WARNING_IMAGE.getHeight(null)); if (mainImage != null) { - new SvgPaintWorker(graphics) { + new SvgPainter(graphics) { @Override - protected void doPrint() { + protected void doPaint() { this.drawImage(mainImage, x, y, null); } - }.execute(); + }.paint(); } if (WARNING_IMAGE != null) { - new SvgPaintWorker(graphics) { + new SvgPainter(graphics) { @Override - protected void doPrint() { + protected void doPaint() { this.drawImage(WARNING_IMAGE, x, y, null); } - }.execute(); + }.paint(); } graphics.dispose(); } diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java b/designer-base/src/main/java/com/fr/design/utils/SvgPainter.java similarity index 84% rename from designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java rename to designer-base/src/main/java/com/fr/design/utils/SvgPainter.java index 6202f608a..766dc3fc6 100644 --- a/designer-base/src/main/java/com/fr/design/utils/SvgPaintWorker.java +++ b/designer-base/src/main/java/com/fr/design/utils/SvgPainter.java @@ -12,14 +12,14 @@ import java.awt.image.ImageObserver; * @since 11.0 * Created on 2023/3/24 */ -abstract public class SvgPaintWorker { +public abstract class SvgPainter { private final Graphics graphics; - public SvgPaintWorker(Graphics g) { + public SvgPainter(Graphics g) { graphics = g; } - protected abstract void doPrint(); + protected abstract void doPaint(); protected void drawImage(Image image, int x, int y, ImageObserver imageObserver) { //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 graphics.drawImage(image, SvgPaintUtils.calculatePosition(x), SvgPaintUtils.calculatePosition(y), imageObserver); @@ -32,9 +32,9 @@ abstract public class SvgPaintWorker { * @since 11.0 * Created on 2023/3/24 */ - public void execute() { + public void paint() { SvgPaintUtils.beforePaint((Graphics2D) graphics); - doPrint(); + doPaint(); SvgPaintUtils.afterPaint((Graphics2D) graphics); } } From efbfb9ecbef6aae1ed9527e30af621ab453b08a8 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 27 Mar 2023 19:00:19 +0800 Subject: [PATCH 40/70] =?UTF-8?q?REPORT-92440=20mac-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=B8=A6=E5=8F=B9=E5=8F=B7=E7=9A=84=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/icon/WarningIcon.java | 16 ++------- .../com/fr/design/utils/SvgPaintUtils.java | 28 +++++++++++++++ .../java/com/fr/design/utils/SvgPainter.java | 34 +++---------------- 3 files changed, 36 insertions(+), 42 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java index cadf64fd9..b4d7f3317 100644 --- a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java +++ b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java @@ -2,7 +2,7 @@ package com.fr.design.icon; import com.fr.base.svg.SVGLoader; import com.fr.base.svg.SystemScaleUtils; -import com.fr.design.utils.SvgPainter; +import com.fr.design.utils.SvgPaintUtils; import com.fr.log.FineLoggerFactory; import javax.swing.GrayFilter; @@ -45,20 +45,10 @@ public class WarningIcon extends ImageIcon { //裁剪绘制svg的位置,以免影响到图标右侧的文字 Graphics2D graphics = (Graphics2D) g.create(x, y, WARNING_IMAGE.getWidth(null), WARNING_IMAGE.getHeight(null)); if (mainImage != null) { - new SvgPainter(graphics) { - @Override - protected void doPaint() { - this.drawImage(mainImage, x, y, null); - } - }.paint(); + SvgPaintUtils.doDrawSVG(graphics, () -> SvgPaintUtils.drawImage(graphics, mainImage, x, y, null)); } if (WARNING_IMAGE != null) { - new SvgPainter(graphics) { - @Override - protected void doPaint() { - this.drawImage(WARNING_IMAGE, x, y, null); - } - }.paint(); + SvgPaintUtils.doDrawSVG(graphics, () -> SvgPaintUtils.drawImage(graphics, WARNING_IMAGE, x, y, null)); } graphics.dispose(); } diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java b/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java index 507768a04..103aaf0ac 100644 --- a/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java @@ -2,8 +2,12 @@ package com.fr.design.utils; import com.fr.base.svg.SVGLoader; import com.fr.base.svg.SystemScaleUtils; +import org.jetbrains.annotations.NotNull; +import java.awt.Graphics; import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.image.ImageObserver; /** * 用于绘制svg图片缩放(高分屏下) @@ -36,4 +40,28 @@ public class SvgPaintUtils { public static int calculatePosition(int position) { return HI_DPI_ENABLED ? (int) (position * SVGLoader.SYSTEM_SCALE) : position; } + + /** + * 绘制svg图像的完整逻辑 + * @param graphics 绘图 + * @param svgPainter 具体绘制逻辑 + * */ + public static void doDrawSVG(@NotNull Graphics graphics, @NotNull final SvgPainter svgPainter) { + SvgPaintUtils.beforePaint((Graphics2D) graphics); + svgPainter.drawSVG(); + SvgPaintUtils.afterPaint((Graphics2D) graphics); + } + + /** + * 绘制前对坐标x和y进行处理 + * @param graphics 绘图 + * @param image svg的Image对象 + * @param x x坐标 + * @param y y坐标 + * @param imageObserver 图像观察器 + * */ + public static void drawImage(Graphics graphics, Image image, int x, int y, ImageObserver imageObserver) { + //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 + graphics.drawImage(image, SvgPaintUtils.calculatePosition(x), SvgPaintUtils.calculatePosition(y), imageObserver); + } } diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgPainter.java b/designer-base/src/main/java/com/fr/design/utils/SvgPainter.java index 766dc3fc6..67c066b2c 100644 --- a/designer-base/src/main/java/com/fr/design/utils/SvgPainter.java +++ b/designer-base/src/main/java/com/fr/design/utils/SvgPainter.java @@ -1,40 +1,16 @@ package com.fr.design.utils; -import java.awt.Graphics; -import java.awt.Graphics2D; -import java.awt.Image; -import java.awt.image.ImageObserver; - /** - * SVG图标绘制器 + * 绘制SVG图标的函数式接口 * * @author obo * @since 11.0 * Created on 2023/3/24 */ -public abstract class SvgPainter { - - private final Graphics graphics; - public SvgPainter(Graphics g) { - graphics = g; - } - - protected abstract void doPaint(); - protected void drawImage(Image image, int x, int y, ImageObserver imageObserver) { - //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - graphics.drawImage(image, SvgPaintUtils.calculatePosition(x), SvgPaintUtils.calculatePosition(y), imageObserver); - } +public interface SvgPainter { /** - * 执行完整的svg绘制逻辑 - * - * @author obo - * @since 11.0 - * Created on 2023/3/24 - */ - public void paint() { - SvgPaintUtils.beforePaint((Graphics2D) graphics); - doPaint(); - SvgPaintUtils.afterPaint((Graphics2D) graphics); - } + * 绘制svg图标的具体逻辑,方法体 + * */ + void drawSVG(); } From 8ac5a7e5ea17ae0852b4eaafdf25ad153a6cfbb5 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 27 Mar 2023 19:02:30 +0800 Subject: [PATCH 41/70] =?UTF-8?q?REPORT-92439=20mac=E4=B8=8B-=E5=B1=95?= =?UTF-8?q?=E5=BC=80=E6=94=B6=E8=B5=B7=E5=9B=BE=E6=A0=87=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/base/svg/SVGIcon.java | 9 +---- .../icontainer/UIEastResizableContainer.java | 10 +---- .../gui/icontainer/UIResizableContainer.java | 37 +++---------------- .../mainframe/EastRegionContainerPane.java | 9 +---- 4 files changed, 12 insertions(+), 53 deletions(-) diff --git a/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java b/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java index 613b6ddbd..1280fbf73 100644 --- a/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java +++ b/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java @@ -1,6 +1,6 @@ package com.fr.base.svg; -import com.fr.design.utils.SvgPainter; +import com.fr.design.utils.SvgPaintUtils; import com.fr.general.IOUtils; import javax.swing.Icon; @@ -37,12 +37,7 @@ public class SVGIcon implements Icon { public void paintIcon(Component c, Graphics g, int x, int y) { if (HI_DPI_SURPORT) { Graphics2D graphics = (Graphics2D) g.create(x, y, image.getWidth(null), image.getHeight(null)); - new SvgPainter(graphics) { - @Override - protected void doPaint() { - this.drawImage(image, 0, 0, null); - } - }.paint(); + SvgPaintUtils.doDrawSVG(graphics, () -> SvgPaintUtils.drawImage(graphics, image, 0, 0, null)); graphics.dispose(); } else { g.drawImage(image, x, y, null); diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index d078b747f..c018e622f 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -5,7 +5,7 @@ import com.fr.design.base.mode.DesignModeContext; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.utils.SvgPainter; +import com.fr.design.utils.SvgPaintUtils; import com.fr.design.utils.gui.GUICoreUtils; import javax.swing.JComponent; @@ -337,13 +337,7 @@ public class UIEastResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - new SvgPainter(g) { - @Override - protected void doPaint() { - this.drawImage(button, 10, 7, null); - } - }.paint(); + SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, button, 10, 7, null)); } } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java index 20109fff1..0c69d47e7 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -3,7 +3,7 @@ package com.fr.design.gui.icontainer; import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.utils.SvgPainter; +import com.fr.design.utils.SvgPaintUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.Constants; @@ -421,24 +421,9 @@ public class UIResizableContainer extends JPanel { Image upButton = (upModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_UP_NORMAL : UIConstants.DRAG_UP_PRESS); Image downButton = (downModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_DOWN_NORMAL : UIConstants.DRAG_DOWN_PRESS); g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null); - new SvgPainter(g) { - @Override - protected void doPaint() { - this.drawImage(UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, null); - } - }.paint(); - new SvgPainter(g) { - @Override - protected void doPaint() { - this.drawImage(upButton, ARROW_MARGIN, 0, null); - } - }.paint(); - new SvgPainter(g) { - @Override - protected void doPaint() { - this.drawImage(downButton, (getWidth() - toolPaneHeight - ARROW_MARGIN), 0, null); - } - }.paint(); + SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, null)); + SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, upButton, ARROW_MARGIN, 0, null)); + SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, downButton, (getWidth() - toolPaneHeight - ARROW_MARGIN), 0, null)); } } @@ -535,12 +520,7 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_LEFT_PRESS; } } - new SvgPainter(g) { - @Override - protected void doPaint() { - this.drawImage(button, -6, ARROW_MARGIN_VERTICAL, VerticalToolPane.this); - } - }.paint(); + SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, button, -6, ARROW_MARGIN_VERTICAL, VerticalToolPane.this)); } else { g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null); if (containerWidth == toolPaneHeight) { @@ -556,12 +536,7 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - new SvgPainter(g) { - @Override - protected void doPaint() { - this.drawImage(button, 10, ARROW_MARGIN_VERTICAL, VerticalToolPane.this); - } - }.paint(); + SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, button, 10, ARROW_MARGIN_VERTICAL, VerticalToolPane.this)); } if (isLeftRightDragEnabled) { g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index 0d3dfcae8..e6490b84d 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -19,7 +19,7 @@ import com.fr.design.notification.SnapChat; import com.fr.design.notification.SnapChatFactory; import com.fr.design.ui.util.UIUtil; import com.fr.design.utils.DesignUtils; -import com.fr.design.utils.SvgPainter; +import com.fr.design.utils.SvgPaintUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.log.FineLoggerFactory; @@ -1314,12 +1314,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer { } else { button = UIConstants.POP_BUTTON_UP; } - new SvgPainter(g) { - @Override - protected void doPaint() { - this.drawImage(button, (ARROW_RANGE_START + 8), 4, null); - } - }.paint(); + SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, button, (ARROW_RANGE_START + 8), 4, null)); } } From 3b09ea22b35e23f36553357e1330ee7f101d5da0 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 27 Mar 2023 20:09:55 +0800 Subject: [PATCH 42/70] =?UTF-8?q?REPORT-92439=20mac=E4=B8=8B-=E5=B1=95?= =?UTF-8?q?=E5=BC=80=E6=94=B6=E8=B5=B7=E5=9B=BE=E6=A0=87=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/base/svg/SVGIcon.java | 4 ++-- .../gui/icontainer/UIEastResizableContainer.java | 4 ++-- .../design/gui/icontainer/UIResizableContainer.java | 12 ++++++------ .../fr/design/mainframe/EastRegionContainerPane.java | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java b/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java index 1280fbf73..832fd33e9 100644 --- a/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java +++ b/designer-base/src/main/java/com/fr/base/svg/SVGIcon.java @@ -1,6 +1,6 @@ package com.fr.base.svg; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgDrawUtils; import com.fr.general.IOUtils; import javax.swing.Icon; @@ -37,7 +37,7 @@ public class SVGIcon implements Icon { public void paintIcon(Component c, Graphics g, int x, int y) { if (HI_DPI_SURPORT) { Graphics2D graphics = (Graphics2D) g.create(x, y, image.getWidth(null), image.getHeight(null)); - SvgPaintUtils.doDrawSVG(graphics, () -> SvgPaintUtils.drawImage(graphics, image, 0, 0, null)); + SvgDrawUtils.doDrawSVG(graphics, () -> SvgDrawUtils.drawImage(graphics, image, 0, 0, null)); graphics.dispose(); } else { g.drawImage(image, x, y, null); diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index c018e622f..cec4b840a 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -5,7 +5,7 @@ import com.fr.design.base.mode.DesignModeContext; import com.fr.design.constants.UIConstants; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgDrawUtils; import com.fr.design.utils.gui.GUICoreUtils; import javax.swing.JComponent; @@ -337,7 +337,7 @@ public class UIEastResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, button, 10, 7, null)); + SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, button, 10, 7, null)); } } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java index 0c69d47e7..a7682107e 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -3,7 +3,7 @@ package com.fr.design.gui.icontainer; import com.fr.base.vcs.DesignerMode; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgDrawUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.Constants; @@ -421,9 +421,9 @@ public class UIResizableContainer extends JPanel { Image upButton = (upModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_UP_NORMAL : UIConstants.DRAG_UP_PRESS); Image downButton = (downModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_DOWN_NORMAL : UIConstants.DRAG_DOWN_PRESS); g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null); - SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, null)); - SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, upButton, ARROW_MARGIN, 0, null)); - SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, downButton, (getWidth() - toolPaneHeight - ARROW_MARGIN), 0, null)); + SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, null)); + SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, upButton, ARROW_MARGIN, 0, null)); + SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, downButton, (getWidth() - toolPaneHeight - ARROW_MARGIN), 0, null)); } } @@ -520,7 +520,7 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_LEFT_PRESS; } } - SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, button, -6, ARROW_MARGIN_VERTICAL, VerticalToolPane.this)); + SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, button, -6, ARROW_MARGIN_VERTICAL, VerticalToolPane.this)); } else { g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null); if (containerWidth == toolPaneHeight) { @@ -536,7 +536,7 @@ public class UIResizableContainer extends JPanel { button = UIConstants.DRAG_RIGHT_PRESS; } } - SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, button, 10, ARROW_MARGIN_VERTICAL, VerticalToolPane.this)); + SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, button, 10, ARROW_MARGIN_VERTICAL, VerticalToolPane.this)); } if (isLeftRightDragEnabled) { g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index e6490b84d..c8f7281a3 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -19,7 +19,7 @@ import com.fr.design.notification.SnapChat; import com.fr.design.notification.SnapChatFactory; import com.fr.design.ui.util.UIUtil; import com.fr.design.utils.DesignUtils; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgDrawUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.log.FineLoggerFactory; @@ -1314,7 +1314,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer { } else { button = UIConstants.POP_BUTTON_UP; } - SvgPaintUtils.doDrawSVG(g, () -> SvgPaintUtils.drawImage(g, button, (ARROW_RANGE_START + 8), 4, null)); + SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, button, (ARROW_RANGE_START + 8), 4, null)); } } From 0b8b849e2e3992fd1a531838aa26242c6de992c8 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 27 Mar 2023 20:14:35 +0800 Subject: [PATCH 43/70] =?UTF-8?q?REPORT-92440=20mac-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=B8=A6=E5=8F=B9=E5=8F=B7=E7=9A=84=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/icon/WarningIcon.java | 6 ++--- .../utils/{SvgPainter.java => SvgDraw.java} | 2 +- .../{SvgPaintUtils.java => SvgDrawUtils.java} | 24 ++++++++++++------- 3 files changed, 19 insertions(+), 13 deletions(-) rename designer-base/src/main/java/com/fr/design/utils/{SvgPainter.java => SvgDraw.java} (87%) rename designer-base/src/main/java/com/fr/design/utils/{SvgPaintUtils.java => SvgDrawUtils.java} (72%) diff --git a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java index b4d7f3317..a50bb3996 100644 --- a/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java +++ b/designer-base/src/main/java/com/fr/design/icon/WarningIcon.java @@ -2,7 +2,7 @@ package com.fr.design.icon; import com.fr.base.svg.SVGLoader; import com.fr.base.svg.SystemScaleUtils; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgDrawUtils; import com.fr.log.FineLoggerFactory; import javax.swing.GrayFilter; @@ -45,10 +45,10 @@ public class WarningIcon extends ImageIcon { //裁剪绘制svg的位置,以免影响到图标右侧的文字 Graphics2D graphics = (Graphics2D) g.create(x, y, WARNING_IMAGE.getWidth(null), WARNING_IMAGE.getHeight(null)); if (mainImage != null) { - SvgPaintUtils.doDrawSVG(graphics, () -> SvgPaintUtils.drawImage(graphics, mainImage, x, y, null)); + SvgDrawUtils.doDrawSVG(graphics, () -> SvgDrawUtils.drawImage(graphics, mainImage, x, y, null)); } if (WARNING_IMAGE != null) { - SvgPaintUtils.doDrawSVG(graphics, () -> SvgPaintUtils.drawImage(graphics, WARNING_IMAGE, x, y, null)); + SvgDrawUtils.doDrawSVG(graphics, () -> SvgDrawUtils.drawImage(graphics, WARNING_IMAGE, x, y, null)); } graphics.dispose(); } diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgPainter.java b/designer-base/src/main/java/com/fr/design/utils/SvgDraw.java similarity index 87% rename from designer-base/src/main/java/com/fr/design/utils/SvgPainter.java rename to designer-base/src/main/java/com/fr/design/utils/SvgDraw.java index 67c066b2c..0ae7ff7af 100644 --- a/designer-base/src/main/java/com/fr/design/utils/SvgPainter.java +++ b/designer-base/src/main/java/com/fr/design/utils/SvgDraw.java @@ -7,7 +7,7 @@ package com.fr.design.utils; * @since 11.0 * Created on 2023/3/24 */ -public interface SvgPainter { +public interface SvgDraw { /** * 绘制svg图标的具体逻辑,方法体 diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java b/designer-base/src/main/java/com/fr/design/utils/SvgDrawUtils.java similarity index 72% rename from designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java rename to designer-base/src/main/java/com/fr/design/utils/SvgDrawUtils.java index 103aaf0ac..0b141b999 100644 --- a/designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/SvgDrawUtils.java @@ -16,17 +16,23 @@ import java.awt.image.ImageObserver; * @version 11.0 * Created by hades on 2022/5/6 */ -public class SvgPaintUtils { +public class SvgDrawUtils { private static final boolean HI_DPI_ENABLED = SystemScaleUtils.isJreHiDPIEnabled(); - public static void beforePaint(Graphics2D g2) { + /** + * 绘制svg前若环境支持高清化则对缩放比例进行适配 + * */ + public static void beforeDraw(Graphics2D g2) { if (HI_DPI_ENABLED) { g2.scale(1 / SVGLoader.SYSTEM_SCALE, 1 / SVGLoader.SYSTEM_SCALE); } } - public static void afterPaint(Graphics2D g2) { + /** + * 绘制svg后还原缩放矩阵 + * */ + public static void afterDraw(Graphics2D g2) { if (HI_DPI_ENABLED) { g2.scale(SVGLoader.SYSTEM_SCALE, SVGLoader.SYSTEM_SCALE); } @@ -44,12 +50,12 @@ public class SvgPaintUtils { /** * 绘制svg图像的完整逻辑 * @param graphics 绘图 - * @param svgPainter 具体绘制逻辑 + * @param svgDraw 具体绘制逻辑 * */ - public static void doDrawSVG(@NotNull Graphics graphics, @NotNull final SvgPainter svgPainter) { - SvgPaintUtils.beforePaint((Graphics2D) graphics); - svgPainter.drawSVG(); - SvgPaintUtils.afterPaint((Graphics2D) graphics); + public static void doDrawSVG(@NotNull Graphics graphics, @NotNull final SvgDraw svgDraw) { + SvgDrawUtils.beforeDraw((Graphics2D) graphics); + svgDraw.drawSVG(); + SvgDrawUtils.afterDraw((Graphics2D) graphics); } /** @@ -62,6 +68,6 @@ public class SvgPaintUtils { * */ public static void drawImage(Graphics graphics, Image image, int x, int y, ImageObserver imageObserver) { //如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整 - graphics.drawImage(image, SvgPaintUtils.calculatePosition(x), SvgPaintUtils.calculatePosition(y), imageObserver); + graphics.drawImage(image, SvgDrawUtils.calculatePosition(x), SvgDrawUtils.calculatePosition(y), imageObserver); } } From 3e253a43a7af337a4a2bfdf9149a03a223a73568 Mon Sep 17 00:00:00 2001 From: obo Date: Mon, 27 Mar 2023 20:15:51 +0800 Subject: [PATCH 44/70] =?UTF-8?q?REPORT-92440=20mac-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=B8=A6=E5=8F=B9=E5=8F=B7=E7=9A=84=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/cell/bar/DynamicScrollButton.java | 6 +++--- .../alphafine/component/ProductNewsImagePanel.java | 11 +++++------ .../mainframe/alphafine/question/QuestionPane.java | 9 +++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/cell/bar/DynamicScrollButton.java b/designer-realize/src/main/java/com/fr/design/cell/bar/DynamicScrollButton.java index b25011951..cc0ab9180 100644 --- a/designer-realize/src/main/java/com/fr/design/cell/bar/DynamicScrollButton.java +++ b/designer-realize/src/main/java/com/fr/design/cell/bar/DynamicScrollButton.java @@ -1,7 +1,7 @@ package com.fr.design.cell.bar; import com.fr.design.constants.UIConstants; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgDrawUtils; import com.fr.general.ComparatorUtils; import javax.swing.SwingConstants; @@ -69,7 +69,7 @@ public class DynamicScrollButton extends BasicArrowButton { private void paintArrow(Graphics g, Dimension size) { - SvgPaintUtils.beforePaint((Graphics2D) g); + SvgDrawUtils.beforeDraw((Graphics2D) g); switch (direction) { case SwingConstants.NORTH: g.drawImage(UIConstants.ARROW_NORTH, 0, 0, this); @@ -84,7 +84,7 @@ public class DynamicScrollButton extends BasicArrowButton { g.drawImage(UIConstants.ARROW_WEST, 0, 0, this); break; } - SvgPaintUtils.afterPaint((Graphics2D) g); + SvgDrawUtils.afterDraw((Graphics2D) g); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsImagePanel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsImagePanel.java index b46d094d8..1baa092ce 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsImagePanel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/ProductNewsImagePanel.java @@ -2,19 +2,18 @@ package com.fr.design.mainframe.alphafine.component; import com.fr.base.GraphHelper; import com.fr.base.svg.SVGLoader; -import com.fr.base.svg.SystemScaleUtils; import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.alphafine.model.ProductNews; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgDrawUtils; + +import javax.swing.JPanel; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; - import java.awt.RenderingHints; import java.util.Set; -import javax.swing.JPanel; /** * @author hades @@ -58,9 +57,9 @@ public class ProductNewsImagePanel extends JPanel { } Set readSet = DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().getReadSet(); if (!readSet.contains(productNews.getId())) { - SvgPaintUtils.beforePaint(g2); + SvgDrawUtils.beforeDraw(g2); g2.drawImage(NEW_TIP_IMAGE, 0, 0, this); - SvgPaintUtils.afterPaint(g2); + SvgDrawUtils.afterDraw(g2); } g2.setColor(BACKGROUND_COLOR); diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/question/QuestionPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/question/QuestionPane.java index b2c186a9e..f96622d5c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/question/QuestionPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/question/QuestionPane.java @@ -4,13 +4,14 @@ import com.fr.base.svg.SVGLoader; import com.fr.base.svg.SystemScaleUtils; import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.alphafine.AlphaFineUtil; -import com.fr.design.utils.SvgPaintUtils; +import com.fr.design.utils.SvgDrawUtils; + +import javax.swing.JPanel; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; -import javax.swing.JPanel; /** * @author hades @@ -33,7 +34,7 @@ public class QuestionPane extends JPanel { protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; - SvgPaintUtils.beforePaint(g2); + SvgDrawUtils.beforeDraw(g2); // 宽高保持 int width = SystemScaleUtils.isJreHiDPIEnabled() ? (int) (getWidth() * SVGLoader.SYSTEM_SCALE) : getWidth(); int height = SystemScaleUtils.isJreHiDPIEnabled() ? (int) (getHeight() * SVGLoader.SYSTEM_SCALE) : getHeight(); @@ -47,7 +48,7 @@ public class QuestionPane extends JPanel { int imageWidth = QUESTION_IMAGE.getWidth(this); int imageHeight = QUESTION_IMAGE.getHeight(this); g2.drawImage(QUESTION_IMAGE, (width - imageWidth) / 2 - 2, (height - imageHeight) / 2 - 2,this); - SvgPaintUtils.afterPaint(g2); + SvgDrawUtils.afterDraw(g2); } From 94f9aadec21e8b3b0b84666ff2743608ac8173b2 Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 28 Mar 2023 09:21:43 +0800 Subject: [PATCH 45/70] =?UTF-8?q?REPORT-92440=20mac-=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90=E5=B8=A6=E5=8F=B9=E5=8F=B7=E7=9A=84=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E4=B8=8D=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/utils/SvgDrawUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/utils/SvgDrawUtils.java b/designer-base/src/main/java/com/fr/design/utils/SvgDrawUtils.java index 0b141b999..5754b2f8d 100644 --- a/designer-base/src/main/java/com/fr/design/utils/SvgDrawUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/SvgDrawUtils.java @@ -13,8 +13,8 @@ import java.awt.image.ImageObserver; * 用于绘制svg图片缩放(高分屏下) * * @author hades - * @version 11.0 - * Created by hades on 2022/5/6 + * @since 11.0 + * Created on 2022/5/6 */ public class SvgDrawUtils { From 149aaa9d4c645531dce589cf0d27feccb060fb8c Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 28 Mar 2023 10:52:28 +0800 Subject: [PATCH 46/70] =?UTF-8?q?REPORT-82787=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E7=A9=BA=E6=95=B0=E6=8D=AE=E6=8F=90=E7=A4=BA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=9C=80=E8=A1=A5=E5=85=85=E7=B9=81=E4=B8=AD=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/locale/impl/EmptyDataMark.java | 37 ------------------ .../module/ChartEmptyDataStylePane.java | 2 +- .../com/fr/design/images/us_emptydata.png | Bin 21918 -> 0 bytes .../com/fr/design/images/zh_emptydata.png | Bin 25842 -> 0 bytes .../images/zh_traditional_emptydata.png | Bin 18659 -> 0 bytes 5 files changed, 1 insertion(+), 38 deletions(-) delete mode 100644 designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java delete mode 100644 designer-chart/src/main/resources/com/fr/design/images/us_emptydata.png delete mode 100644 designer-chart/src/main/resources/com/fr/design/images/zh_emptydata.png delete mode 100644 designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png diff --git a/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java b/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java deleted file mode 100644 index 6b7a2f5fb..000000000 --- a/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.fr.design.locale.impl; - -import com.fr.general.GeneralContext; -import com.fr.general.IOUtils; -import com.fr.general.locale.LocaleMark; - -import java.awt.image.BufferedImage; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -/** - * 根据本地化信息设置服务器图表空数据提示图标 - * - * @author obo - * @version 11.0 - * Created by obo on 2023/3/22 - */ -public class EmptyDataMark implements LocaleMark { - - private Map map = new HashMap<>(); - - private static final BufferedImage ZH_EMPTY_DATA = IOUtils.readImage("com/fr/design/images/zh_emptydata.png"); - private static final BufferedImage US_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/us_emptydata.png"); - private static final BufferedImage ZH_TRADITIONAL_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/zh_traditional_emptydata.png"); - - public EmptyDataMark() { - map.put(Locale.CHINA, ZH_EMPTY_DATA); - map.put(Locale.US, US_EMPTY_DATA); - map.put(Locale.TAIWAN, ZH_TRADITIONAL_EMPTY_DATA); - } - @Override - public BufferedImage getValue() { - BufferedImage result = map.get(GeneralContext.getLocale()); - return result == null ? US_EMPTY_DATA : result; - } -} diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java index e73bae010..50de28871 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java @@ -10,13 +10,13 @@ import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; -import com.fr.design.locale.impl.EmptyDataMark; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; import com.fr.design.utils.ImageUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.locale.LocaleCenter; import com.fr.general.locale.LocaleMark; +import com.fr.locale.impl.EmptyDataMark; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; import com.fr.stable.StringUtils; diff --git a/designer-chart/src/main/resources/com/fr/design/images/us_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/us_emptydata.png deleted file mode 100644 index 46597ea7a146532843bfce15eadefb1f7ab12263..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21918 zcmeEuWn5Iz*Deer3?PkkH`0yL4bp;iBV8gO&CnepD$UR#QqtWe-Q7q?cMJpf_`mmk z@Av!h{@xGso5L`(&pCUqz1H(QYpoNdp{9U^L56{ZgoLG}DEk%(3Hc6qO+ZkAPwbRB z+JQG@x3>z?Nadpx`@kQvR(eX-s;WpYfnx{~a)ccc_}^E67a8zELPE(#MnVDJk^g;` z4f?PDBHv}B{P*$1zb`tTjqD&HNg^r9N@;r`AGM-4P+DbHDF5>8%f##Y92&|XsgX+; znG2~)^qxF!`y!u6t6~=(PINR?bkev>bv#w%vL@ay|IFXf8m#@=)^kZEm?k%p;6juE z7X;=Vn;LarbE%%QwmK4+HYoj}Q&zj`lePG+^e_428hoaFO=ym@xj{)1g#S4Z%s_*T zuJ}KP|1%H&V+8-R8U9~9!D41d;3qV*d&cotaCzfSnv}7zarbPwv4}flDG(VY{FA3A z&e7o^#V^bLc-p0Umy^T2J(7Vd>;N2wxJFCiwb84rOkeY*zFH27=Ci4|HRofOg(i;! z`EnNs{28%PWuk+KuxC;rI4v@eZcR3|pyWt_Ch`ta=d@H8w_Ia4r5O5&fw0TfHjN(@ zo1y__VojFTg5#{bH%p*99Ltc;Wwpga*T}W^n%{|s6J3$!HL{%eYc}IIG_Iif<&Vn5 z7ENrme~qKqDHIr}>?rXx4%VcCECoK5OJ3?8)-5@+sfnKTjCg=cbb;T>gQERnxv}1W zX7C%%f3rozQHp$0@A*g(5K@d&A{hI;X-)F=_qPY8yjH)zTJhP8E~iP63n+n{q$Cqv zVjKk%_30!D9&EuMxI#auAChG zS#}%y%&7eRu+?hlyAs5ZgnM^ZIZ!9oiQ78@+23U(OH2gPPJiS7n&C4Na0=vN)P*)M zZUwT?n%_lMtT-$-@JOm`<*5oI0cGl1u=B|2T4+q{W|`Y(O%;S685PKtogzu5;!9vg zroY=0MIaOBPsR{lFBG?^rQT`#s?AhvH^c4wELF5PBTWzmZ~}#{Jg_|tZrV06mx<`N zG&o@k&JS8hD?;&;}2 zFc~wG!Z7X!jK4F)$DtP0;Z(mOXn(OYLM^r2Ur1Omp{-yhfZ-L-XOxXh`!`-G%YJq=jy3@|7rS}Xz?(0tqex8lu@!NMM+ic?+S68TZOjTzCEk<+Z)fp!6D^kVAoFC$1<#^z2@Tib6l%J{=*etF$yp} zeA~Q1&Y*v{;n$2XyZ&xag560TT6v;c=8tMeZt8+flcgR@!n29qHR4y6Rl`XoU_Y%j z{kQo*wf>QDd>EKJ>rpYMiWnpVf%QIemyA)K%l7&nc>~n*+GerhM(U2cN7^_Z=EE0h zJ=AvLk3LOgf|K{BxBEq~HePE~ROX;UTHG7VY&-n&oFmmhmnIwqu(|#c*Dqn_NA~>sSw?H>}}qY@fX*g7lL)iX3(?4>ai?p-IQ?pAZxnp0U<4CI|p_! z?yYMq-4n@XN-@b!Y=I!9cxh9bKV@)rkQds=RlJ^*P8VZ}<_}s|6n<$N5q!FS7#m?b zx7wI&)7vL`^6lKoeN4iOerw>={HQYmjqNQP`$$rz4=WyXs&d)Zp^Gk))^w{ww*$Ys z%)7%|4eh8rNp5d`vsJinh(jJvX&%f^IKaxQ~jWT&KK!Rq9~LV+;I$n$~-2pvWrPOJ@yJurs$AtKVdfsWYN12 z<-aI8Q_M~TlbwIGeIFdxjDUoWb+#d{mtc~(1TK^EABf|q#9qh#RkNZcZK6V@HSnEu zmk7!@!h3AlqRL>t#-sFdCVTa98z+kXTMfRtBY9nW*ZmDwKT$Ta5=|bk=&{zZ*1a<8 zqar61qc^J(a<)`k|InBQEvKnuR{8rlj-5Am zVr@#O?p#2QVMN4D!^L;^&G~O!nK6Xr{OHS+Q_ARS?XHB3rhA!Eg1xf5WzvhXhKQ@mCX9uVEgRvU0oAzD?QrEB21*949V&ni?l-_SBfn8oR_q9 zrKz>2aAmI68aqrjbXT5vCT75Xy;1ESN5MW4+-|mHTHDgYk;|{se4&Fp1c+0SDa9vU zl5IsHN#ZhcWAoOB5Bc9EGJ-XTXJwB-ifbP%dS#G4O%0L;i?Wq@ z?wcOzIm}ODyuR0ms^6Ap>@H6fLP zF(7p4+XG__@()8wd+OJ@q^L&OG*Zsl5-Q{Eqq7!8oqG?M4bu?!$dNjYpIkig1#?M| z$7Or^@;8lxypqSDZ42)A=hreCDT_$>Y$*b#%{8+kwvzX;zf>Xl1_yQog-m>MplKup z`s0WKj#I*y;guN1Olc`vJ()h*4zoW~)iFnYOw+GgB^%FGm_i|Uj&jAwr*XXEz(n}5 zW3gI+p8q0$L*VjqYFm2Jw(ID<-9l6(T=UR|4r%MH+Q%h1At3TsMoyF-mZ+=evsrVA z%RMC4g*XQrMgzX~?ZSe16gsv02IB+zbz4F`L!yrX1a(}Yg*-Q49)LWfX6y67a5bw9 zi`I)q_>OF0r1lesAraV=uRkw7D1TdKc7@$CuYKsoLSw+IGk-&a1zZ-{*Eo6|(8eDL z=;MP7#NGWT^6s-f>DTnO<%sdWGo|gJ15dA9!^u|EFb}eyqW!3<8`LXWuNT$C2d1Ws zsEC$maaJQm;#oHEPA*Tcx>%e&=!1UZX>3=2r(e`cMB-XLO`WN{_W4Q9bwN8ldy_Z& z=w0aTAEgtljwh9}X6&B#sbqkdkzlNMf2!yPD_?dSt#W;|d0UhIez)5PLf!P|yI~g^ zbeUmX8(6r)-<)w)*(>kmYj@LzwvZ-+vehN$CHe!H5XXFYUs#?+9>;LCdC5_rlE}M) zl#@AEO8$fj;JzM&c{ixFLdEqI4@Nu9DHL5DT3-e^;?M8HSkjs7zkyfjam9tJ?WPKG z=7#d>VgBr@op4$*YK9gA`N4J>;qs5VF4kYq)IF7$5oaQeW(G@0SwYFRRweLP^Q`L- z2`?Q~t&ZpP$54k=1*F0x6(BV8C1R0jMoE&`-Yhy)%+yl(>p5YW!zS5q>DhYqkHxv} zJ%?6qOb}rC1ge!zugCyo+RJp^pL%Dg(#`7a>FB1Cd!EgAJL%n$E#c3>D#G5VYr$a0 za+gjOr(Oo0@#AjDL8SducqLAuyl~vzY!Nr&XbAGK5vrNoakFR!^{Y+QEbz5Ilw+ec z=Qg2-?|O${+t{xhzhhF^#kYk39)os1u7(Ws+$${>-kNv6!MGeG8C#TqsHPa(zR|qJ zT2oAL$|GuIsq1)NOpT1;PQ%$6Y>s-ri&F({Gp+Nc4FN}g|H@}u#8k_Qyu*@^zoS$2 z^g@#)vU%bV?kbLA6cun5JFz;uP2k4_y&E#Uj{C{=LUj*TboU@cf1dk^wYa zbSF$A_DF4Hb2AemEmC5J_woy7c=s!|bug3JL?Om;GZ3R`7FONR9%ChDOpZ$4;3pN@ z=+%I0)<}311inuQ7LQBsA?jm|g{>I^kh10HfCpEvY<6iW+n0d|z&PtTHeTtIYE8d; zCX@5=HEdkV#inMpKy@sC$$+xla zp-9R6lB40D(h?DYXr8>M?%umisDcG`z=8{MylZmCIJn%(M3B+aia}axP&%u!@;OtKxTonJ_4GhzWW4Q5yo}gwOR4o+b77AsFlm6KQ za~NE~5>2*0%6oUw$nSSahtBY)DA>v?KA&*KyY&m^UP>AN1 zS8#t3+w^#UP}D<`FQt^t3Ajz;+e;&?AQvcni8}AomFj~^S)Xa&GH0rQ!>sScJ+HN1 zX-YRp$RoxNFngLtLZ%WZHc8G?V92S#A3MiK_y5oX)x=;Izb$g=Y|^U}?oWDJBu0yh z>3@~0qYl)JN3LGc`@na1>6=y>9qcGrjoc><1UTXvVr4+z0F?3#;@$2H(lz#&Ic~9i z5<#x*BBYmVJ7&)HLz)>)p~7@ZX6)J5FY zCA4g4rL|2kJScM9K!5G|b`PfTA=&KH55xro!T((%zP95FjZcWPCaCI3rj~^{=^g#Q zJ@dAPqxx)92l$=p{R9DC? z>!L25fzCdJHI7AoR$gRE;c-=gv00hy!EE03YQuL~w~v)O$8Q`+3d?PH zf6E@ zln>A~B?9M@Q^UW1`Y@L&#uy(&r#!Q4bGR?ZPMQwN?QX_S6p(qUsVx+Rm9g47fl!2M zBgv+az@lbbb-6$d^9yG(NW$5Pn1Hk1jN!DO^^x~8CybIXjKhGi4U5vXpp!f*c(K#F zJEgIGVaM=c)O|>MRmpA)W`moBa*FR|^86QXkoIHF%k-QW9frUG7yAPDv)oVP#$BYp zrG-lb9Ex5+vvkTq&J#Ztl8P)*djIGNq~QfNBJWE|9p%8ZhoPDK!C!FKtv=TCK^u)9)K7y~V_JcjdB+4Rk(MX2 z^xPlN32Czjh=Vo@<{_fwhKg9&kp}a>7piUQwQpoX5{crnMh9p)g9T1S{=qRUUkP@NAR8RV6%5x!fFllSi$J?#+6t;Hyu;NeA zbeCgOlu5TYyWa8F*6L0lHq@dn6%6q;wwHL9rj+@)4owM`t}iWA*qP+Sd1_A3hS7}c z_{`k4;JT9{%6U+#AnGm_xa)qw@07(%U`>wICA;?9_i|%&-lju&H*6;%CW-1HysnN5 zzpOYe{%BQy^%T4)N z0W+~n@|QR?Q3OOL7_MH3KMZN4qFrGx-RJ#lQv$8+wXw;bu~E^B;VX8rX7RJgXxYyP zup&9yl9Mr<%{&3i7}+C6^d2?I#01I`WFq{A%SmM+EjRDnQy&6^30w$zA%umO!DK<$ zTvC+f^Or2Gj(k=^!sl|&n@~-tKZ_fbk5sLIzd=?A#sEw?O!k3NB&f8!$sU4ox*9LG z{uQ(>cQUv8)*_P{YuPg+;C`PCuP2;;g#g+Q&dkp!i9VLH6zfKVP#jXON7eKfA;^=MTqRXyTy`;AN z>*%(d)$9R|GdHRR!-EWGigHl&^L1eg`!ju7tV zZ9shQ8hL@#Fvs(L;Pa>k5{ZDlHd@!BzA`e+KJ5(EuR7K(4*YAxz26Q z*z*VvijiZ5iA0EB_f|1Qy%eCzpt23n6J{PO*fZ1v+5WVg7+n^S7!?$Yr5 zN7G_PEOcYgOKvBRvoE?-YUeb^KIm-oeZkY`4k>&%745%XW!Hg>O24kn@qqMPSJq+U zYvB_I$;A*IO>4t2lgTDNrHR7E5Tm!6iDO=<1$I;`s>VG1LcjF;ih44fLzMrcI_-Um z4VRK*OsDhKA9X=xB9u3ptRv-p$w;2cM_oFgwSLraHES4A^uBGPh8A#ASbSn-41CdT z`2!JF&QhBC3?6<`YIkL0Wg09t$N=2ZCh79}_BYC~;f$?kSalVS zmo4LEy~&Kz0YdsWw4V}-)Z5;hHy|MCn+?D=cO?*L@dH`OwRxs4vEO*Jo!>Ps?ChEc zQj9s`2WQBpIAs|!NhnArjwPOwupyg7qNGysH@wYm;jb3`ZIW2=HOR^RX(!!zf)5BQQ9u>>M{7^;M3BEUQ$ zmWnb2*4rHaaN7Q%lhLM^s~o;}s5>USG_JbFad>unXw$ADU9>1FQnU=^g<;ELOif8# zQlP_JztU9YJ>*oH;!TqO+Q~=eSk8ddyZ))6M!TNYPl$U8winn1rB?N)uCxsi20Nd} zue!t|{f@9j9GeE$RF@5T>?ZU7@L3Pret+@YA>eBlh4-XM_0wA_^lEx{7uV;oQI90a zpFoJ#b0yP@m-O_!G3ybzsXj~$xGQLp>_(Hy^=2VAa1^R9*Q?6?BSC@xorD@IKZHVKn!ityJ$m8OEcRca*v{Wp1(YA~MN( z`P!8!98^U|&8*S=_a6+%Ib~1-wJevCg$*OM+yRQ;KBJ|?Do z)Q*CwY*q~=GWE~8p>ub96^=7R-3mnW9Aq5F{d0rS;3MlYq_bx~->$b9w`(lmx*E~& ziNTRM!uJEG`XqD zd}a}h?`vyFo?cQa8<^}vqM|*hzvjPu!|paTbbQ(tgC&|X+gKbl(T^_>+$4mYDJiZJ z$=E>xqJ`b$AvI7xOBnz9#Mcv`^t_Xass{*TG4WcFY@7C&y{^3u!e#1!RU$;46){2v zbjf+B%k(>v4|r+M=htck?nF*n+=Ts)6}lyqSExnAun9#A=^UZnYyLNg?@~TEe2QFC zc^9mg9_A-%c99ooEAM8vx4`y#{$Rh#dkrsq<{%EkI&F^g=i&wlSSNjU3T5UK`O9DF z)Q=F7!Y0y9d~BzUqB%4INE@Pl+XIQj^w(N$bJbq?8ejH)xX*4^ryP`-C(*5u-K8{Y zYh09+Y!SPTbn(_Nc>)(ukQ!ppMG0*@axQ$eI_yC$Lw&=pLQTyq9O^`w z+Z@d;0J&YXc;{%wWI|8m0IVXmAqB2Vdg+H=)oxS8@u4B6SRigBIe!YhfV zyD=BBofJ!*hTIi+j`YAJRI zu;VedI|EQlm+e6%h8}(0@Z9!(dsf$a-xS`2!DEEb`iW=k-XlHRL~qmAmmA@JP@cm` zcRkc=twZWv&sy(SUxGIe(Wt!Eck&X%eO&3Of{ikU@AtaCFOSK_yKBBP?s(IKi{kVO zRNF#hfE|n;4MP%W^!d)S68=Q&RTaP=Fhm!YVwYHi6TqdT2!C4(N`P}fjw?vCZ+-7u zy6ZvsE5%_E3;2K_LGPEo4rv03hhZf;TsKhuZn`(^e8M7>@0t$`cQn5@nxq@MC?61F z@HCW|9C-Rrme57mr<9$Q=2saKuyN<8T5FRKyb-v$jZ zo9w;ma13z-fo8YUX_C?=dNh(0wCx2mHLux9%E}o769v%ThA7Bdp}7jxcsG1qaN8ZF z9QF$1qMuKcL#r1#bsMYdr-JL1e3)vApXch%Fx<1heV!pfE?}~J{M)Rhz2oHORRtm^ zn#???StE(7fe@~a!JBIGoaGu!Ze|buIan0l)Jm7@U0t56gUgJ8F;=J=XPZ2l%Ez2k z`;sW`6*|02@mi5QxFHeoogLygYIeBbx*5eRuJZcWEMd7IWNA=^AR`r%d4yh&`Qig?4(c8qLnp1On@IQ(7}lp z_na*)YP?dhF?@vM*~1cIl&^BqDh~~`~eYJn)}+DDIdpCZ8x!t zo}#2jlw9s?`Ian%LV^5PMB*L0_EfQ56l2nd->gNU-f)SoYeh@i51uS5!~}0pNw%=S z!mf!$W~n8NewIBp8l=GJHZ%kVGvKt8gYukH(4joi+jKPrzf?T$o}Vb;%(8ysUG^OH zS|MDE{gmI^8J%`J&M%&uEpb_-l)S=ZTQXl#&y`msxQWtSnca#PRrLEy6+^~)e)axK zzz{I+Lz`#TVqh=3iqd}QC|7MsvfHi_HD1E-%Z%$WxhsbLv>&LogFiB#@mTSvWnRL+y2+#}{rse?mpg*& z9Lm(6^d1GFm5aFdckLA7oLa-`^c7XMqZLt4-&h34f4jaX^t@_NlG#orBh^85Pm-hq z{H1IqnJrDnmwez{Qejrk-9CFtE~$1uinsz$qp)BfIhr+b^~MaIa0uN9F)#>`)VB0~ z3YZ=Kcvq_Sa;IWqu4_|l-pCbO3?$0>a|4#&s-zCXtgA3;oJ{lkk~+U*&UWtfh{TZU zXEN&=J!*y{bG!Jv5Cw>O$0&u+E+@f*G9qBG@jakWhD^q*H z?}m#^I%y}YM}A)RuX*ogZs8`gnjNKDG|H0@D5+2EINA@UH+Zu7-zvx4jdTf| z!#(HqdD=_t)YX41nIA3IM&UHkQ%7Te9hRoDm2m(BdP90@zEnW2ZJ_(fM>Pwp@ZAb) z4*|*K4lU!$F{K^o?{iK5{sif%V0})=AzSr%9DSKw1MDZ%qi6 zcqFg)_>U=l6pC(z2_omg!8P-urGRJ8*~93XEFK&UBtl{|&kP*FxTEh}pMAgNtq+Bv zCn|*IMLxW--y9>h9Ga{^>+-j#@`dcS4l6^O=UaaoFZrIdQqxn)HPc}@#&wl;DF1;G z(%=(&qv9AORb;$qDh>fSCYorg4ij$mK*gWl^m*dV+k2yKIq_i|=D0kz!~&ux!sFfTsCYc9V1-OL-wdVvYgA`DRai)$7<8MWbz{2!Xrc;Y*u;q1MZr z%m5krUdPf{A~VhQYjQx)i^PC(Yb5P%g;!eD>14eI^3%jeF-4!bUzi^Xp=CL2lm>We za@g1k_{*6u|=S4K5jf z_7M$zU+1mIs^~?Ngec1;M(n0v>JuNKN(p0gAm4kMziY(5;q@g=U&}Xp%U^aUufRd^ z2VUZyb$R&;!+3~oVcj2nS{cv_ld~U(@F4;UCe|-ZC#_Hho0YuM7j}1zqYwBA=n?`? z2xz6`rpCTjblyHm=0Lriiauz&;u_|(|9mK1KQ{my7Rr7gSU?YvXLZ3+aj&A8EErH2 z#iN`Buzbb0j7K^G$@dnSKja9U@rRZLjkZa-g)nqp>{{`Ce7v$a)qmym@)3?ur+?rI zt7v_3G4*_og@H)brR^x+)hJ~y3tEiPu2)Xp7l|3(@N7q)M z(MhxkG$QfSb(O36tFm0ML8m@aZffe2$nPj}zn2#iAFr?;6W|ptJ>e$TWtXPR-U*jy zv{Zs4iC2l#eQ7SfN&TLDncd8h!^ZYQtSL#d3|K*f!F?{?pz1Mkkyx5|rz7t)&H8gS zDD5v~Jc_pjjtv7^mMa{=C2Wem6Fk`YIcqhq%8$&xdVSqFhG+`)4HCDVhS7w-XlIo) zr@?4fjH2Pff8l-pfz($ED>xRcrjQEI4I55ngR$&WUQDi9VJ-Qi8rydFGFR>or5kiO zdC_!X*2GSme|&D6mXE{snTI`7)lD^NFcDTqo?mw(x=iH)G^gZB-{g*5`dh!qoh=Bg8yF3eOzWMEmA91_o}XDW0lp-4AbeKHqAL`=iZkyw zrdSPj&&=HNse#`K0eAjnQsAv4`%ZYL7k#ubn%0E06i>Z=oBZqOLXkD=<>#YM#$(=J zrgpuYb*=v-^<8mKy0`&;Bb^?Ww)%Vgz0nUM1BXqLKwZ~qkFS;9`_`KWZu6R&`M9uS z3p?rcXd>JODl7eY3n}ZrWd7TlO%&0*#e%flwHSnbV^2Y49WCnm6~BRHQ!gwk&h-tocZvHAX-~CA zqA6^Pm-!!9gNzMO*{UkZZhDs|yFN#yy-PLlfi3XUC;uoT zq6}4BjJ}?^c{b0$JRHC>^EMF{tY^S65YZ!>^}y29Clx>^nk<GOpT*vU5zV||>22#u4imGn;%Ip4Umor$ zj8&rjdi=)qMgO@kVX`-}Aoy|f$`(&Cj!-WqotMPpX*Dr2fcx;4~6#5$?=@iwP_f zQ7kI{HzbE*mp@^xEI;5Z$3E>Src=E2^IyIh_$mHPgY0uOtt+obuLZz<%jq#C_4S}8 z%2f&xG3V#mHeI0Dv`DibToCBe(Ixo1>?|ELf+qpPFOpgi{zNCKYPX?A{P#iX=o7hb zS?%3$q^MnS!%LcAoCk@os7qBNkzsyMTznT1@H`=`(`#@g5sm4S`CMZ(u zdfyG=cLM}RVuy{o)tbNUVu1A@C61-OVdQGAeDq0T$dP4vF{w9a1;g4-EN-E}a8BEstR~6)e zw^u*wVVtwC55hw~oiuE)9!W#_Ks6+Ktf4GDoK-OEqbEz?lQAKimC7_-`EvcA5Mc$; z8DzRMz&~g$UrT7u3fQyBTY(VdNF4*Zn;$M)c8Pht*Br zlk=3Opf(&OH0Orwv#=}=1VBq64;Nz+5-CJcxg5lIvF7+gyY5LO`sz79ZH3;nA+nTd zSOFaP_B~cTUC`N9KUasQBjW3HO4l2UnaiP1&?5)am_=C=9x+#8vzJD4iOgAvIO4Zv zavL$-S@IE8W}U$(c&E`E@nOaESZAd?L+kltrAlU~5K7r5z|gJWD^tFpanTV> z(b-J9@KxVdXRI#Z=U1=iE}d@6Nb(=^QJ8}K%t>c0YuFqnlzzCP@10(rotRppso#Vgv6V$mfwc9bGc|C1@NEw!EuWoK zoATY>CT`BHy<{Ae47!f(W-O)8U4RjswcO1Jl4!5SKVFQc2^ zIFr-}hjvLTFnVg9To@U~Bw#3eMgic8K*pg%6aA-gv*566LYWIyq92dNaw_4SQW8^Z z>Vxk{g?_PqAE&sY@O|!<4xOt@AH@VW*rNn_EuGX4dFXWmGQp4 zg>QRk0VN3YK+ZT)TIx;wUL9*j)$?IoUfl-3L%&7u=9Y4fdc*44sER+N)a9h#e(f&-I{tYSgEUn*(TU$d5S5MjJ*kKZJyB3JNv z%&_d;Ibzum_>BcxYxKU@nNn2#s*ke7@>~?ZsI14Zet@7)I;&K#eF)cv4679J&rK!o zrmFIA4IITP#*2=%8cE}}P_oBQx$Mu0O6WWPIN`YfQt`&Jyt(HoqhA_eL&~O8nUhv- z82gzd6Q>dZ8k%_0)Yn0R3@dwkIwM;Tg ztw=u?*acVKM{L9eyEl2QAcerZ?20CL>ZoI|Wv+Zzwd)vA#3v-@LEXFZ%WCMa{g0yc zvr$r;j0wUqZ9=LhJ4(R*4z{g^@)_7a%UHZrqmB7uCR<_aCM1nF#9OTCSUfj!)=&N9 z+ZFkehH_|HEP!yI#Y(bla@(?`^J%ibD5fWBGajgD^PiFzX?5)D2*aGdqqZzsOGkBC4(w8 z_h#kHUs-M5y`OH7mWr577O^c%h&_SM_@ z&V7z{E}*LAPkXWzFTxpHS7F}*vf#%vZ%tXez>B3zI6`3$tNRA0l&|3HI3{sSl`%Qg z8FktaGjOA_G3uhmsOZ0ICQ2-_+F-OlBj2p)u4KR!0sw|{ZaA?>5Kx9DHWnlPysy-* z+oia+{mX8nog5X_IKCAPZ(B* z-cKdw{0S@%9)di{UMC9lT!5aX!7SWH?x+~m94XY5`$JireODaK_7|DI)RkiRy1xwi z0_GKO7#{z$oJ2%k&RFG&TB6;3nDDUJ%4-$$^cAJ{rcC*9TdQr@{_WPx4 z(QH>JXo^HHqtbrn$JQP*^qC;nb87L2D<9OlGxO95b^#HrHa>_i*(a>^6u!p4^p>mv za(Y$%!3|%L^Zh|*vAd7KZ=FBRDUH zGlaMJ?sQQ_`L}gpg_HkorYGvewuBduvX*fb`tD21^~na-BQA(de%__06nEFujU(Y_ zxmr7~UeR*?TR$Iu;m-QtP|)FeBfO?(nkG8g8YE6yE=IN1m66YVn9%dj zVQGV39kjLZ&G;{f(sZF?L&AT%xc&EKw{Im}pu4{*iO-VdYVi7$5<-8b9THc-)5i+7wpJKqvv&iK$3 zG7pyteQXsEqH}Nbd_Ht}Y`U#uoLt`Y_XjPw(g70MCEG3)kV7+gB@s%L-$XZA4JMNX z@MWXUkKIzvpYu4+$o>m0S9$A#dQxJ#(zo^C)6=>lr|dICMtNWq^(iKVb8-x za9Uho-a$G?e@#6#a_D0(xl4v$LFT0xXMX(o-SOKei5<-mf*s@a42NRdS% z*U)}N6#mVxukCqyuQ$x1>%c|4p~RedNg{Y04^t;}Qy}YO*Z;N6AHUYGI%CO;(H+`r zGQHFNr#8}OOuN-22%2%yT|dko+vN^#_Wu{>ljbha%@yj~Dyz#j&aC3GL>w=1yb8M3AEVj!ZJqQHc z92{^Gi;vvi@Gx=@x3ATwh;*g*NVaG-+)(!(>$=4;-DQ0{uB>(WiCQNS)M4WDU*qK!dz(KboPfH(2WG?0gdnJVnXwpFQJt;$kv1p zh0_R@xu-kW(;f6ne8T7Oh?E~f35yQ|Hklr?OPUXV<^OLX`v5rjaoO);1daAGDcZ}R z(`dIzHb*gq!=LrkZzGHtbtGNL1(LhCFf&toRt-ZOT8CEcAvFq{Kito?Qz_>h`8l%G zw>=(BKbV#an8-e&f&(bDa9p--4e!_2eh9E5lxSiAl)}CfEjS}b1DWyws!V9Oj_jTx zw}uT!=zkc2kusgGhu|D{Q(W;4PUVJ#HnxQ&-V1TRZvTt?@n@EB5&P$KC6d~3k;hMMZjLULa z0c|NqM%2?QEB?4z2LUpV0ix~#AIg&apqX12vFI$RyY6U*q!^(M2%%?fB*qoBprG7> zEgi)ayU!i}x;QYn&UQaCkZc&Ahr!&ocznTK{F3Kq^}Xye)6~-Wx~?r>;n1$T2;3W- z^+#}%Bj@&zS5nL!=G-YCRXuduQtlns5AByK70NUYz&!l?6M5b9CQy8K&U@p=FD5Iw ziH@3WP^UrE4k|eEG0YmyJ^4g&T}d(u)o^&?w-BrS zf@oM!Ts8GPA7sAy`9S>rSMN!rGH2s^Z^ri3WXWm(!=#I$)tZ8wWCKe)EN>5wNbL8S z=~vA;{imH+k6pa(_lqJDNcpVC!-!297=9?MC}pRj&l{}`Hx?b?+wy^8OXpR}9x&fw z_+{6Kpj?hF0Shfccq`~@yC~Wi?Uycr!~}Ft$eLaKonfAurXt!evCne}0BapxFWbQU zvCDqv#WRj?12e=lCOMKU*^Im1%^#xZu=aHza-T|a1PWnWD9ek2l5-$M@T?qL;voQZ zt@!hPqB>m25APg=7+p=!JXw#J4&dSOdn+&=Lhb%aPTD-&=Dt14X-rs-uW2o zR@;=Y_D_IME(aU@OMXW;+NUv$cY&=(Ga93;;nbR#YlOPI=m+5MBP&AXr_U8Y`Tz^F zVPvk60s0$N0#Ew6PWJXvVuVj34@+WY3{bm1{mt}TeN`UI=c1Io4>&^AWGgauWOOjd zkL}Te|1pci?s-nw`cQ)S{az(WH&95){}ni|#)CX3GWxX4dVZ3cPb}H($pLy^$B7=% zN~(b8@$wI%6;?<$41eG`vYe}F&oUAcApqf|w8i=Kb7=8DOLBmVC)N_$?`m&3Hf(+a zh3IPRu46;^wl4uzp=Fia_eK&F1}+|SDOz~MjvvA}nYmA|#5Si{Wp=o#kU)PQ22?SA z%NWN-SIo8sF=u&g?v$68Q`23OJ7DLx_gex*fR6~c>2)+XEdsbyQSX8R;GCqO|A6^6 zp{ELnfBV(nAul%Xn8gRA*@h=Nf%_HZ*XQA2UZBJgsK>I)0yE%dc4#V4UZIwsL?7qn z4t4tV9uN8LeDab@e*IYz6_6oFhY3}`1cL3EC8rQc(>qW@Ux)~t;U^CuPkQVxWmesm zD*c~E^^4>dy%=bMw9$uCc=FN{79JuMg?b2GbyYS< zV!>|#@w+H|F%tMf4f-ih`n%^D&6!^HGvuBbWuU9YTqwFMVCf2s1tP$-v7%Sft)`Pa z!aT^<;+}+cXG*6iT9s+Y00=|IYz#a*K~*I%$ZO2(k-nBGXf_avgLypt*A$9xO9+^^ z=60Me2w(AA$3KRL*>hiDPgf8n?)Uqe$^hlZxvnZj(>KX4fblZylhpyOzN8@Y9x>At zxaV^ppFtRI)M`M?iGCK@8dfHhxPNN{ynJypP_@dHV^mYq9i|o<;BSL(UPtv z%Pp=_a}rmm({h8W#4AAb*-G=# zB?)V1{QU1$1g7PI#@qK%NCNk?kbBxgxTYI*w3EYY5fPa1^}MC&$d}ATy8o}94b7gdt+6*6xB1TzVU)qg*$1!_$HWSC~aDgQ)1ssDmv*BjLBGm9l5p^fRiAw$tq-)L7Hgf;oo8=Xv*1v(40~aX8L{&1b+ei9dq}LMtV}m zL8oJnjVR*sX);4;-2Pwp{|OMx)@(LX!2wcFr?to^(ob?}Nn^NC!1FPJteMt3n*TNG zCS-O1-39G^1Lt|Tcm4|%h0w>1AD6e%c{kl^Yvj$A5ghCqw{vTtpwOQXby4Q$sX6+unr9+i(CIZY{Kgy>33EEE zsBBkBNx<7l>-tdM{&;UJ$gVCldY^?lx`ZAnK#uS_4J$g1q$wITW(jV>RJxl5JZa$uL7C+VN+yTUCgXp;>jp2?r%sdv{*tF2XSN$+$X zYgaFlsZX*>*Z-Ns=QQ&E^R3?V)2Fw64eoX@6m^F2 zzJIM_Tf;*8z34P*?NYXntjlte;>u2s=bM~)ri`%!c*SW@Cuum>yER z@pAh!p5~~ukDAE6s_)3p)Z~|`X_u*jnA^tRo}$GIee_H5=gYl&2Y$SMgB;Nr8G3=a zoH@obPdxbn2ksGiLw_yt%gv!b>(KLa{L@IQ9w56Ua6_fd#6aqzW3B-r{SLy9vHs}3 z^J*a%G4oAhz7hzwplc>G)wb4)wdrIUZr9BoHr%#x3d*$Ur;Wd*6>U!ykAEw&I5t`i zt?W;PcD-@p!#n@6Y@76o`w;iMEoYm5R*6q~tFzRd^lganK1E zu)BNuiJFzR`B?*|&VtCadDB)_C1Jt!?g@^h!3}FidUyy~h!>I%8a5tgXnYoE&(9o9 z6vm6IE5+u~9}!AOnL*(5&(ww{VeBCWYZi;ccZID7J+yTgpZ|Vw7r3AjnO15L`O5Qb z#l|@<$-AWD=7$!-^|x%P$sGAL;N9ON?HfRBI`BLdVvfqK!vSpJ>$i%RQ-?JQd( zsNi+I^B$hGQ1V4>UD-uR{|w)Zd+II{wDBqkHew2;JDAV(aUf@@pXeU9Abikj3*OoQ zX_#<5kg}aj+0_ii@(QOJZBwHm4WpZwA!lq1Hw;+wpqu_FKfOak-{y57GlMvHU8GS3 z+4|-%FqMJ;Lt_5D{9R=u*Ooz+f>j6nGHvsXLsqGnQH%*^?`j%GmQvxY2llJy|ae{7Z3-6HzxKeJAeFPpd$&ANMxF z7q@iFr03_wB8IkkS}t*WUY`qjPYdQGF>jJ?u(9>&#PNs4e-YeMkjvaIAfpwNuX#CG z!EU1E${>;Js|3Ax{Ts20DF}d;k*$3>vC;Lk?4@mIpY&ZnWDVIVQL9L_vhW3zZ%W0l zqJs;LY#c*4*R3Y&yK~~xvS(4UqPM$%G=l@eqlU`cUzW7Z*hcro5faxh3EU7#feoV% zsPmcf1*-8)@VqLY^*}mop3NK&e?*xDtO!NHzdNtAo)DREhrJ`q?V3AJhX+!VFz?}ab1UTsqRqTZ?UT6lRFbjLRNmAKb+d%nf}o< zf3_lkddZA>DW0{QCrHx74Oy`MJK1h&oX@@I%yR`vpMYZaY(Z3Gx1F0yNcOda@$8-) z-GB?s2wmKzEaKu==%i>)W*ko{aAcPaaT8_8*#a zB+1bYWr!C`E?9U)vNJZ1rf5I3Y0a_-c3MD;J;m91N(N?p^fDf z3H&8{{rqkNzoBxF2mk>mx2z{25%4@(5gVboHEIZF2^_a9<6W9_6A@81lIhCT>25t$ zJzRZe!ZvcU>s98SyN<`^aoPV9)#97BNpNKuImFHStMXV7q;GrI*eCMEg2#-8#KE@b z)Kivcdln8xX8(N||GURNEMWrnNBcEW8`T&aG*B=lq=(k%pfZd*Lf*M@Guob_;tEBI zlba@Nwcdfc!{wx=px)Nd)gX7G9R4~oXKZJeD>+DpGB@H2AylMS=@`69;!i^iabQ}L11 zFh6FOsgsgs>DcO=M?W}W^J|+KFP)?%2$CO-UV9wGm$mK^WPP!g^R>iJZ$S5UIe)8G z;w6LdrGP7@L~}4F26XBLhkrHebnIX%H;8tAXKQ|2AzdT-Irh$YMp~X}Xv9y_*Mgzk zKU{NMI6p5_3HhI(z{{SQnfU%gk)iHGDOh?+LkUrI<=;x_MZB%4G^B=w*V@6~ylOL2 zoJ+iww1`f0Cu1O*_vMtdli-TrU;O@q^=f|2)0t}SO5R8vSS7fdH0Pr^TWBNf{6^Dm zuf6Z@R+%Sb&^aZskvCe%nHwQ?qRi%X>BuT_GSSv_(z>R`l1hwy^ZVX&5XN%y2)E68 z(BAB8Yi7N2M*qc^;G-FCXFqC~h`k?D?x^dnhof~p3vX`YYr2UWA(OLT<;l+Ld1?JijJ2;^$1VJ~0ppdBk!HEULx8ba;Y=cec=OcgvsVP*J`@5 z*I!Ql8x8#PF~S9uVrDO{G z>-ZY($n;VepR^<}#69PHVam~r#w5~m%dU7ze!P=2tKiXn%iV|x zE2vIKtF)$NF2uVG+aSFo2*z*{M91Bjh-X8R^|J7MS%MnabWzlN@mNm0Ow`+n-64NH zSXHTlgp7J$!Xq>T4gB{gpAy;1zjLm$DTW;oh_*LXzq&}R+6vh>bCiE%LV?b|gvTn! z7Jq#MA6P5wc6_vovZvKlSFdW7kyqLo09184+IG)mN%M$Qg9kpC7A((;wdMOzU=3C#%VNsoU%1 yVA#DAyT5|~zXK7!(;&a2F#pde%rE9VsbWD~UH6?p&g8#rR6nm1p0yqkxBmfwckCAc diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_emptydata.png deleted file mode 100644 index 5a6c3a9624f8428547454528e6ce58fe0c6d9758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25842 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 diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png deleted file mode 100644 index 738fa685adb223d384edfe6310251f31365a6830..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18659 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 From 97152ee7a842cd16295a972e6d7494e979c79ab2 Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 28 Mar 2023 11:16:42 +0800 Subject: [PATCH 47/70] =?UTF-8?q?REPORT-82787=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E7=A9=BA=E6=95=B0=E6=8D=AE=E6=8F=90=E7=A4=BA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=9C=80=E8=A1=A5=E5=85=85=E7=B9=81=E4=B8=AD=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/locale/impl/EmptyDataMark.java | 38 ++++++++++++++++++ .../module/ChartEmptyDataStylePane.java | 2 +- .../com/fr/design/images/us_emptydata.png | Bin 0 -> 21918 bytes .../com/fr/design/images/zh_emptydata.png | Bin 0 -> 25842 bytes .../images/zh_traditional_emptydata.png | Bin 0 -> 18659 bytes 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java create mode 100644 designer-chart/src/main/resources/com/fr/design/images/us_emptydata.png create mode 100644 designer-chart/src/main/resources/com/fr/design/images/zh_emptydata.png create mode 100644 designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png diff --git a/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java b/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java new file mode 100644 index 000000000..14b8d5107 --- /dev/null +++ b/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java @@ -0,0 +1,38 @@ +package com.fr.design.locale.impl; + +import com.fr.general.GeneralContext; +import com.fr.general.IOUtils; +import com.fr.general.locale.LocaleMark; + +import java.awt.image.BufferedImage; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +/** + * 根据本地化信息设置服务器图表空数据提示图标 + * + * @author obo + * @since 11.0 + * Created on 2023/3/22 + */ +public class EmptyDataMark implements LocaleMark { + + private Map map = new HashMap<>(); + + private static final BufferedImage ZH_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/zh_emptydata.png"); + private static final BufferedImage US_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/us_emptydata.png"); + private static final BufferedImage ZH_TRADITIONAL_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/zh_traditional_emptydata.png"); + + public EmptyDataMark() { + map.put(Locale.CHINA, ZH_EMPTY_DATA); + map.put(Locale.US, US_EMPTY_DATA); + map.put(Locale.TAIWAN, ZH_TRADITIONAL_EMPTY_DATA); + } + @Override + public BufferedImage getValue() { + BufferedImage result = map.get(GeneralContext.getLocale()); + return result == null ? US_EMPTY_DATA : result; + } + +} diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java index 50de28871..e73bae010 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java @@ -10,13 +10,13 @@ import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.locale.impl.EmptyDataMark; import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; import com.fr.design.utils.ImageUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.locale.LocaleCenter; import com.fr.general.locale.LocaleMark; -import com.fr.locale.impl.EmptyDataMark; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; import com.fr.stable.StringUtils; diff --git a/designer-chart/src/main/resources/com/fr/design/images/us_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/us_emptydata.png new file mode 100644 index 0000000000000000000000000000000000000000..46597ea7a146532843bfce15eadefb1f7ab12263 GIT binary patch literal 21918 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 literal 0 HcmV?d00001 diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_emptydata.png new file mode 100644 index 0000000000000000000000000000000000000000..5a6c3a9624f8428547454528e6ce58fe0c6d9758 GIT binary patch literal 25842 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 literal 0 HcmV?d00001 diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png new file mode 100644 index 0000000000000000000000000000000000000000..738fa685adb223d384edfe6310251f31365a6830 GIT binary patch literal 18659 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 literal 0 HcmV?d00001 From bd3ba069a1b17990f54163b466216e7d1da9cac4 Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 28 Mar 2023 14:13:16 +0800 Subject: [PATCH 48/70] =?UTF-8?q?REPORT-92430=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8-=E5=9B=BE=E6=A0=87-mac=E4=B8=8B=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E9=83=BD=E4=B8=A2=E5=A4=B1=E4=BA=86=EF=BC=8C?= =?UTF-8?q?windows=E4=B8=8B=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/gui/UILookAndFeel.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/UILookAndFeel.java b/designer-base/src/main/java/com/fr/design/gui/UILookAndFeel.java index a8e45b24c..c33f3e0fc 100644 --- a/designer-base/src/main/java/com/fr/design/gui/UILookAndFeel.java +++ b/designer-base/src/main/java/com/fr/design/gui/UILookAndFeel.java @@ -1,5 +1,6 @@ package com.fr.design.gui; +import com.fr.base.svg.IconUtils; import com.fr.design.gui.borders.UIFrameBorder; import com.fr.design.gui.borders.UIInternalFrameBorder; import com.fr.design.gui.borders.UITableHeaderBorder; @@ -160,10 +161,10 @@ public class UILookAndFeel extends MetalLookAndFeel { table.put("Tree.collapsedIcon", loadIcon("TreePlusIcon.png", this)); table.put("Tree.openIcon", loadIcon("TreeFolderOpenedIcon.png", this)); table.put("Tree.closedIcon", loadIcon("TreeFolderClosedIcon.png", this)); - table.put("Tree.leafIcon", loadIcon("TreeLeafIcon.svg", this)); + table.put("Tree.leafIcon", loadIcon("TreeLeafIcon.png", this)); table.put("FileView.directoryIcon", loadIcon("DirectoryIcon.png", this)); table.put("FileView.computerIcon", loadIcon("ComputerIcon.png", this)); - table.put("FileView.fileIcon", loadIcon("FileIcon.svg", this)); + table.put("FileView.fileIcon", IconUtils.readIcon("/com/fr/design/images/lookandfeel/FileIcon.svg")); table.put("FileView.floppyDriveIcon", loadIcon("FloppyIcon.png", this)); table.put("FileView.hardDriveIcon", loadIcon("HarddiskIcon.png", this)); table.put("FileChooser.detailsViewIcon", loadIcon("FileDetailsIcon.png", this)); From 74d9244b1ebd296e18a060dba50629ad844653df Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Tue, 28 Mar 2023 14:43:37 +0800 Subject: [PATCH 49/70] =?UTF-8?q?REPORT-83689=20=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=A0=BC=E4=B8=BA=E5=AD=98=E5=82=A8=E8=BF=87=E7=A8=8B=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=88=97=E7=9A=84=E6=97=B6=E5=80=99=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=95=B0=E6=8D=AE=E9=9B=86=E6=8E=92=E5=88=97?= =?UTF-8?q?=20=E3=80=90=E9=97=AE=E9=A2=98=E5=8E=9F=E5=9B=A0=E3=80=91?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=95=B0=E6=8D=AE=E9=9B=86=E6=8E=92=E5=88=97?= =?UTF-8?q?=EF=BC=8C=E8=8E=B7=E5=8F=96=E5=BD=93=E5=89=8D=E6=A8=A1=E7=89=88?= =?UTF-8?q?=E6=89=80=E6=9C=89=E6=95=B0=E6=8D=AE=E9=9B=86=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E6=9C=AA=E8=80=83=E8=99=91=E5=AD=98=E5=82=A8=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=EF=BC=8C=E5=AF=BC=E8=87=B4=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=9A=84tableDataWrapper=E4=B8=BA=E7=A9=BA=20?= =?UTF-8?q?=E3=80=90=E6=94=B9=E5=8A=A8=E6=80=9D=E8=B7=AF=E3=80=91=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=89=80=E6=9C=89=E6=95=B0=E6=8D=AE=E9=9B=86=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=8C=85=E6=8B=AC=E5=AD=98=E5=82=A8=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/sort/celldscolumn/CellDSColumnSortGroupPane.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortGroupPane.java b/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortGroupPane.java index 788f1a57c..01c5eafc0 100644 --- a/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortGroupPane.java +++ b/designer-realize/src/main/java/com/fr/design/sort/celldscolumn/CellDSColumnSortGroupPane.java @@ -8,6 +8,8 @@ import com.fr.design.sort.common.AbstractSortItemPane; import com.fr.report.cell.cellattr.core.group.DSColumn; import com.fr.report.core.sort.sortexpression.SortExpression; +import java.util.Map; + public class CellDSColumnSortGroupPane extends AbstractSortGroupPane { DSColumn dsColumn; @@ -24,7 +26,8 @@ public class CellDSColumnSortGroupPane extends AbstractSortGroupPane { CellDSColumnSortItemPane cellDSColumnSortItemPane = new CellDSColumnSortItemPane(sortItemPaneWidth, sortItemPaneRightWidth); java.util.Map tableDataWrapperMap = DesignTableDataManager.getAllEditingDataSet(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget()); - TableDataWrapper tableDataWrapper = tableDataWrapperMap.get(dsColumn.getDSName()); + Map allDataSetIncludingProcedure = DesignTableDataManager.getAllDataSetIncludingProcedure(tableDataWrapperMap); + TableDataWrapper tableDataWrapper = allDataSetIncludingProcedure.get(dsColumn.getDSName()); if (tableDataWrapper != null) { java.util.List columnNameList = tableDataWrapper.calculateColumnNameList(); String[] columnNames = new String[columnNameList.size()]; From a68a577331b0d741e53eb5a7487073382b2b874b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Tue, 28 Mar 2023 15:40:10 +0800 Subject: [PATCH 50/70] =?UTF-8?q?REPORT-92492=20=E8=B6=85=E7=AE=A1?= =?UTF-8?q?=E5=BC=BA=E5=88=B6=E8=A7=A3=E9=94=81=EF=BC=8C=E6=99=AE=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=A7=A6=E5=8F=91=E4=BF=9D=E5=AD=98=EF=BC=8C?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=8F=90=E7=A4=BA=E5=92=8C=E5=AE=9E=E9=99=85?= =?UTF-8?q?=E6=95=88=E6=9E=9C=E4=B8=8D=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/worker/save/SaveFailureHandler.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java b/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java index 119668ec6..efb0ab5f7 100644 --- a/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java +++ b/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java @@ -113,12 +113,14 @@ public class SaveFailureHandler implements ThrowableHandler { new Object[] {Toolkit.i18nText("Fine_Design_Template_SaveAs_Backup"), Toolkit.i18nText("Fine-Design_Basic_Button_Cancel")}, null); if (option == JOptionPane.YES_OPTION) { JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - if (template != null) { + if (JTemplate.isValid(template)) { TemplateUtils.createAndOpenTemplate( Toolkit.i18nText("Fine_Design_Template_Backup"), new FileNodeFILE(new FileNode(template.getPath(), false)), true, - false); + true, + // 创建并打开备份模板后,关闭原模板,无需释放原模板锁(锁定信息不一致 = 此用户模板锁信息已被清除) + () -> HistoryTemplateListCache.getInstance().closeSelectedReport(template)); } } } From c2be117534ca20e67a8af8a05ecd1f9f7aa60fdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Tue, 28 Mar 2023 15:42:06 +0800 Subject: [PATCH 51/70] =?UTF-8?q?REPORT-92492=20=E8=B6=85=E7=AE=A1?= =?UTF-8?q?=E5=BC=BA=E5=88=B6=E8=A7=A3=E9=94=81=EF=BC=8C=E6=99=AE=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=A7=A6=E5=8F=91=E4=BF=9D=E5=AD=98=EF=BC=8C?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=8F=90=E7=A4=BA=E5=92=8C=E5=AE=9E=E9=99=85?= =?UTF-8?q?=E6=95=88=E6=9E=9C=E4=B8=8D=E7=AC=A6--=E6=94=B9=E4=B8=8B?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/worker/save/SaveFailureHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java b/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java index efb0ab5f7..42ef95978 100644 --- a/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java +++ b/designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java @@ -119,7 +119,7 @@ public class SaveFailureHandler implements ThrowableHandler { new FileNodeFILE(new FileNode(template.getPath(), false)), true, true, - // 创建并打开备份模板后,关闭原模板,无需释放原模板锁(锁定信息不一致 = 此用户模板锁信息已被清除) + // 创建并打开备份模板后,关闭原模板,无需释放原模板锁(因为已经被超管手动清除了) () -> HistoryTemplateListCache.getInstance().closeSelectedReport(template)); } } From 055634cd912e2a9646db08aa80df786f2c277c5f Mon Sep 17 00:00:00 2001 From: obo Date: Tue, 28 Mar 2023 22:05:01 +0800 Subject: [PATCH 52/70] =?UTF-8?q?REPORT-82787=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E7=A9=BA=E6=95=B0=E6=8D=AE=E6=8F=90=E7=A4=BA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=9C=80=E8=A1=A5=E5=85=85=E7=B9=81=E4=B8=AD=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/module/ChartEmptyDataStylePane.java | 9 +++++---- .../design/images/zh_traditional_emptydata.png | Bin 0 -> 18659 bytes 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java index 31718fda8..702dcab39 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java @@ -15,7 +15,8 @@ import com.fr.design.style.background.image.ImagePreviewPane; import com.fr.design.utils.ImageUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.GeneralContext; -import com.fr.general.IOUtils; +import com.fr.plugin.chart.locale.impl.LocaleImageFactory; +import com.fr.plugin.chart.locale.impl.LocaleImageMark; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; import com.fr.stable.StringUtils; @@ -26,7 +27,6 @@ import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.SwingWorker; -import java.io.File; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; @@ -35,6 +35,7 @@ import java.awt.GridLayout; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.File; /** * Created by mengao on 2017/11/23. @@ -63,8 +64,8 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { static { - DEFAULT_EMPTY_DATA_IMAGE = GeneralContext.isChineseEnv() ? IOUtils.readImage("com/fr/design/images/zh_emptydata.png") - : IOUtils.readImage("com/fr/design/images/us_emptydata.png"); + LocaleImageMark localeImageMark = LocaleImageFactory.getOrCreateLocaleMark("/com/fr/design/images/", "emptydata.png"); + DEFAULT_EMPTY_DATA_IMAGE = localeImageMark.getImageWithLocale(GeneralContext.getLocale()); } @Override diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png new file mode 100644 index 0000000000000000000000000000000000000000..738fa685adb223d384edfe6310251f31365a6830 GIT binary patch literal 18659 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 literal 0 HcmV?d00001 From 882f04ea87faf464ad8a1a2cd3d9d4eb308ed590 Mon Sep 17 00:00:00 2001 From: obo Date: Wed, 29 Mar 2023 10:16:32 +0800 Subject: [PATCH 53/70] =?UTF-8?q?REPORT-82787=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E7=A9=BA=E6=95=B0=E6=8D=AE=E6=8F=90=E7=A4=BA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=9C=80=E8=A1=A5=E5=85=85=E7=B9=81=E4=B8=AD=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/locale/impl/EmptyDataMark.java | 38 ------------------ .../module/ChartEmptyDataStylePane.java | 7 ++-- ...onal_emptydata.png => zh_tw_emptydata.png} | Bin 3 files changed, 4 insertions(+), 41 deletions(-) delete mode 100644 designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java rename designer-chart/src/main/resources/com/fr/design/images/{zh_traditional_emptydata.png => zh_tw_emptydata.png} (100%) diff --git a/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java b/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java deleted file mode 100644 index 14b8d5107..000000000 --- a/designer-chart/src/main/java/com/fr/design/locale/impl/EmptyDataMark.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.fr.design.locale.impl; - -import com.fr.general.GeneralContext; -import com.fr.general.IOUtils; -import com.fr.general.locale.LocaleMark; - -import java.awt.image.BufferedImage; -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -/** - * 根据本地化信息设置服务器图表空数据提示图标 - * - * @author obo - * @since 11.0 - * Created on 2023/3/22 - */ -public class EmptyDataMark implements LocaleMark { - - private Map map = new HashMap<>(); - - private static final BufferedImage ZH_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/zh_emptydata.png"); - private static final BufferedImage US_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/us_emptydata.png"); - private static final BufferedImage ZH_TRADITIONAL_EMPTY_DATA = IOUtils.readImage("/com/fr/design/images/zh_traditional_emptydata.png"); - - public EmptyDataMark() { - map.put(Locale.CHINA, ZH_EMPTY_DATA); - map.put(Locale.US, US_EMPTY_DATA); - map.put(Locale.TAIWAN, ZH_TRADITIONAL_EMPTY_DATA); - } - @Override - public BufferedImage getValue() { - BufferedImage result = map.get(GeneralContext.getLocale()); - return result == null ? US_EMPTY_DATA : result; - } - -} diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java index 702dcab39..df5baf243 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java @@ -15,8 +15,8 @@ import com.fr.design.style.background.image.ImagePreviewPane; import com.fr.design.utils.ImageUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.GeneralContext; -import com.fr.plugin.chart.locale.impl.LocaleImageFactory; -import com.fr.plugin.chart.locale.impl.LocaleImageMark; +import com.fr.general.locale.image.LocaleImageFactory; +import com.fr.general.locale.image.LocaleImageMarkWithAttachID; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; import com.fr.stable.StringUtils; @@ -62,9 +62,10 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { private Image emptyDataImage = DEFAULT_EMPTY_DATA_IMAGE; private SwingWorker imageWorker; + private static final String EMPTY_DATA_IMAGE_PATH = "/com/fr/design/images/emptydata.png"; static { - LocaleImageMark localeImageMark = LocaleImageFactory.getOrCreateLocaleMark("/com/fr/design/images/", "emptydata.png"); + LocaleImageMarkWithAttachID localeImageMark = LocaleImageFactory.getOrCreateLocaleMarkWithAttachID(EMPTY_DATA_IMAGE_PATH); DEFAULT_EMPTY_DATA_IMAGE = localeImageMark.getImageWithLocale(GeneralContext.getLocale()); } diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_tw_emptydata.png similarity index 100% rename from designer-chart/src/main/resources/com/fr/design/images/zh_traditional_emptydata.png rename to designer-chart/src/main/resources/com/fr/design/images/zh_tw_emptydata.png From d4da6af2bf39bc63c81bb79c64729ae25dda9440 Mon Sep 17 00:00:00 2001 From: obo Date: Wed, 29 Mar 2023 10:24:09 +0800 Subject: [PATCH 54/70] =?UTF-8?q?REPORT-82787=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E7=A9=BA=E6=95=B0=E6=8D=AE=E6=8F=90=E7=A4=BA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=9C=80=E8=A1=A5=E5=85=85=E7=B9=81=E4=B8=AD=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/module/ChartEmptyDataStylePane.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java index df5baf243..3895d660a 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java @@ -16,7 +16,7 @@ import com.fr.design.utils.ImageUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.GeneralContext; import com.fr.general.locale.image.LocaleImageFactory; -import com.fr.general.locale.image.LocaleImageMarkWithAttachID; +import com.fr.general.locale.image.LocaleImageMark; import com.fr.stable.Constants; import com.fr.stable.CoreGraphHelper; import com.fr.stable.StringUtils; @@ -65,7 +65,7 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { private static final String EMPTY_DATA_IMAGE_PATH = "/com/fr/design/images/emptydata.png"; static { - LocaleImageMarkWithAttachID localeImageMark = LocaleImageFactory.getOrCreateLocaleMarkWithAttachID(EMPTY_DATA_IMAGE_PATH); + LocaleImageMark localeImageMark = LocaleImageFactory.getOrCreateLocaleMark(EMPTY_DATA_IMAGE_PATH); DEFAULT_EMPTY_DATA_IMAGE = localeImageMark.getImageWithLocale(GeneralContext.getLocale()); } From fd5d8048adb314aea99fc91f461d57c1084ab29f Mon Sep 17 00:00:00 2001 From: obo Date: Wed, 29 Mar 2023 14:02:27 +0800 Subject: [PATCH 55/70] =?UTF-8?q?REPORT-82787=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E7=A9=BA=E6=95=B0=E6=8D=AE=E6=8F=90=E7=A4=BA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=9C=80=E8=A1=A5=E5=85=85=E7=B9=81=E4=B8=AD=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/module/ChartEmptyDataStylePane.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java index 3895d660a..f014efed0 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartEmptyDataStylePane.java @@ -14,7 +14,6 @@ import com.fr.design.style.background.image.ImageFileChooser; import com.fr.design.style.background.image.ImagePreviewPane; import com.fr.design.utils.ImageUtils; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.general.GeneralContext; import com.fr.general.locale.image.LocaleImageFactory; import com.fr.general.locale.image.LocaleImageMark; import com.fr.stable.Constants; @@ -66,7 +65,7 @@ public class ChartEmptyDataStylePane extends AbstractAttrNoScrollPane { static { LocaleImageMark localeImageMark = LocaleImageFactory.getOrCreateLocaleMark(EMPTY_DATA_IMAGE_PATH); - DEFAULT_EMPTY_DATA_IMAGE = localeImageMark.getImageWithLocale(GeneralContext.getLocale()); + DEFAULT_EMPTY_DATA_IMAGE = localeImageMark.getValue(); } @Override From 07c29bb0b35b0dd2ecc0200dc7f48a4fb38e5941 Mon Sep 17 00:00:00 2001 From: obo Date: Wed, 29 Mar 2023 15:30:39 +0800 Subject: [PATCH 56/70] =?UTF-8?q?REPORT-82787=20=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=E7=A9=BA=E6=95=B0=E6=8D=AE=E6=8F=90=E7=A4=BA=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E9=BB=98=E8=AE=A4=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E9=9C=80=E8=A1=A5=E5=85=85=E7=B9=81=E4=B8=AD=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{us_emptydata.png => en_us_emptydata.png} | Bin .../{zh_emptydata.png => zh_cn_emptydata.png} | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename designer-chart/src/main/resources/com/fr/design/images/{us_emptydata.png => en_us_emptydata.png} (100%) rename designer-chart/src/main/resources/com/fr/design/images/{zh_emptydata.png => zh_cn_emptydata.png} (100%) diff --git a/designer-chart/src/main/resources/com/fr/design/images/us_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/en_us_emptydata.png similarity index 100% rename from designer-chart/src/main/resources/com/fr/design/images/us_emptydata.png rename to designer-chart/src/main/resources/com/fr/design/images/en_us_emptydata.png diff --git a/designer-chart/src/main/resources/com/fr/design/images/zh_emptydata.png b/designer-chart/src/main/resources/com/fr/design/images/zh_cn_emptydata.png similarity index 100% rename from designer-chart/src/main/resources/com/fr/design/images/zh_emptydata.png rename to designer-chart/src/main/resources/com/fr/design/images/zh_cn_emptydata.png From 764d729328452fb8059a031824f18c9235a238e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Wed, 29 Mar 2023 18:31:35 +0800 Subject: [PATCH 57/70] =?UTF-8?q?REPORT-92506=20=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=B8=BB=E9=A2=98=E5=88=87=E6=8D=A2-?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=86=B3=E7=AD=96=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E7=9A=84=E5=8F=82=E6=95=B0=E9=9D=A2=E6=9D=BF=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E4=B8=8D=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/parameter/RootDesignDefinePane.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/parameter/RootDesignDefinePane.java b/designer-form/src/main/java/com/fr/design/parameter/RootDesignDefinePane.java index 86e3f4998..a794a7bd6 100644 --- a/designer-form/src/main/java/com/fr/design/parameter/RootDesignDefinePane.java +++ b/designer-form/src/main/java/com/fr/design/parameter/RootDesignDefinePane.java @@ -368,12 +368,11 @@ public class RootDesignDefinePane extends AbstractDataModify { wParameterLayout.setParamsFireStopEdit(fireAfterEditor.isSelected()); JTemplate jTemplate = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); jTemplate.needAddTemplateIdAttr(useParamsTemplate.isSelected()); - wParameterLayout.setBackground((Background) background.getValue()); if (extraPaneList.isEmpty()) { - background.setValue(wParameterLayout.getBackground()); + wParameterLayout.setBackground((Background) background.getValue()); } else { for (BasicBeanPane pane : extraPaneList) { - pane.populateBean(wParameterLayout); + pane.updateBean(wParameterLayout); } } //设置参数模板面板的高度 From 9309a2265b0e49ef665926ae0e4fab557adcdc29 Mon Sep 17 00:00:00 2001 From: "coral.chen@fanruan.com" Date: Thu, 30 Mar 2023 16:07:17 +0800 Subject: [PATCH 58/70] =?UTF-8?q?REPORT-90316=20=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E7=AB=AF=E6=8E=A7=E4=BB=B6=E7=BF=BB=E6=96=B0----=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=83=A8=E5=88=86=E9=85=8D=E7=BD=AE=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/creator/XNumberEditor.java | 16 +++- .../fr/design/designer/creator/XPassword.java | 6 ++ .../fr/design/designer/creator/XTextArea.java | 10 +- .../mobile/NumberEditorMobilePropertyUI.java | 37 ++++++++ .../mobile/PasswordMobilePropertyUI.java | 37 ++++++++ .../mobile/TextAreaMobilePropertyUI.java | 37 ++++++++ .../BaseTextEditorMobileDefinePane.java | 94 +++++++++++++++++++ .../mobile/NumberEditorMobileDefinePane.java | 33 +++++++ .../mobile/PasswordMobileDefinePane.java | 25 +++++ .../mobile/ScanCodeMobileDefinePane.java | 57 +++++------ .../mobile/TextAreaAdvancedDefinePane.java | 25 +++++ .../MobilePasswordEditSettingPane.java | 43 +++++++++ .../component/MobileTextAreaSettingPane.java | 38 ++++++++ .../component/MobileTextEditSettingPane.java | 59 ++++++++++++ .../MobileTextFieldInputSettingPane.java | 28 ++++-- 15 files changed, 499 insertions(+), 46 deletions(-) create mode 100644 designer-form/src/main/java/com/fr/design/designer/properties/mobile/NumberEditorMobilePropertyUI.java create mode 100644 designer-form/src/main/java/com/fr/design/designer/properties/mobile/PasswordMobilePropertyUI.java create mode 100644 designer-form/src/main/java/com/fr/design/designer/properties/mobile/TextAreaMobilePropertyUI.java create mode 100644 designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/BaseTextEditorMobileDefinePane.java create mode 100644 designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/NumberEditorMobileDefinePane.java create mode 100644 designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/PasswordMobileDefinePane.java create mode 100644 designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/TextAreaAdvancedDefinePane.java create mode 100644 designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobilePasswordEditSettingPane.java create mode 100644 designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextAreaSettingPane.java create mode 100644 designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextEditSettingPane.java diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XNumberEditor.java b/designer-form/src/main/java/com/fr/design/designer/creator/XNumberEditor.java index 15cd30c6f..8861d6fcb 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XNumberEditor.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XNumberEditor.java @@ -6,7 +6,9 @@ package com.fr.design.designer.creator; import com.fr.base.BaseUtils; import com.fr.base.ScreenResolution; import com.fr.base.Style; +import com.fr.design.designer.properties.mobile.NumberEditorMobilePropertyUI; import com.fr.design.form.util.XCreatorConstants; +import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.mainframe.widget.editors.InChangeBooleanEditor; import com.fr.design.mainframe.widget.editors.SpinnerMaxNumberEditor; import com.fr.design.mainframe.widget.editors.SpinnerMinNumberEditor; @@ -91,15 +93,19 @@ public class XNumberEditor extends XWrapperedFieldEditor { } } - @Override + @Override protected JComponent initEditor() { setBorder(FIELDBORDER); return this; } - @Override - protected String getIconName() { - return "number_field_16.png"; - } + @Override + protected String getIconName() { + return "number_field_16.png"; + } + @Override + public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { + return new WidgetPropertyUIProvider[]{new NumberEditorMobilePropertyUI(this)}; + } } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XPassword.java b/designer-form/src/main/java/com/fr/design/designer/creator/XPassword.java index 4194e4be0..29de6c9d0 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XPassword.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XPassword.java @@ -3,7 +3,9 @@ */ package com.fr.design.designer.creator; +import com.fr.design.designer.properties.mobile.PasswordMobilePropertyUI; import com.fr.design.form.util.XCreatorConstants; +import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.gui.ibutton.UIPasswordField; import com.fr.design.mainframe.widget.editors.RegexEditor; import com.fr.design.mainframe.widget.editors.WidgetValueEditor; @@ -68,4 +70,8 @@ public class XPassword extends XWrapperedFieldEditor { (CRPropertyDescriptor[]) ArrayUtils.addAll(sup, new CRPropertyDescriptor[]{regex, waterMark}); } + @Override + public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { + return new WidgetPropertyUIProvider[]{new PasswordMobilePropertyUI(this)}; + } } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java b/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java index 845fe43d9..f23c24fea 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java @@ -6,7 +6,9 @@ package com.fr.design.designer.creator; import com.fr.base.BaseUtils; import com.fr.base.ScreenResolution; import com.fr.base.Style; +import com.fr.design.designer.properties.mobile.TextAreaMobilePropertyUI; import com.fr.design.form.util.XCreatorConstants; +import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.mainframe.widget.editors.RegexEditor; import com.fr.design.mainframe.widget.editors.WidgetValueEditor; import com.fr.design.mainframe.widget.renderer.RegexCellRencerer; @@ -26,7 +28,7 @@ import java.beans.IntrospectionException; * @author richer * @since 6.5.3 */ -public class XTextArea extends XFieldEditor { +public class XTextArea extends XWrapperedFieldEditor { public XTextArea(TextArea widget, Dimension initSize) { super(widget, initSize); @@ -81,4 +83,10 @@ public class XTextArea extends XFieldEditor { protected String getIconName() { return "text_area_16.png"; } + + @Override + public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { + return new WidgetPropertyUIProvider[]{new TextAreaMobilePropertyUI(this)}; + } + } diff --git a/designer-form/src/main/java/com/fr/design/designer/properties/mobile/NumberEditorMobilePropertyUI.java b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/NumberEditorMobilePropertyUI.java new file mode 100644 index 000000000..67a8569f7 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/NumberEditorMobilePropertyUI.java @@ -0,0 +1,37 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.dialog.BasicPane; +import com.fr.design.fun.impl.AbstractWidgetPropertyUIProvider; +import com.fr.design.gui.itable.AbstractPropertyTable; +import com.fr.design.widget.ui.designer.mobile.NumberEditorMobileDefinePane; + +/** + * 数字控件属性面板注册 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/30 + */ +public class NumberEditorMobilePropertyUI extends AbstractWidgetPropertyUIProvider { + private XCreator xCreator; + + public NumberEditorMobilePropertyUI(XCreator xCreator) { + this.xCreator = xCreator; + } + + @Override + public AbstractPropertyTable createWidgetAttrTable() { + return null; + } + + @Override + public BasicPane createWidgetAttrPane() { + return new NumberEditorMobileDefinePane(xCreator); + } + + @Override + public String tableTitle() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Mobile_Attr"); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/designer/properties/mobile/PasswordMobilePropertyUI.java b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/PasswordMobilePropertyUI.java new file mode 100644 index 000000000..2c3b3b227 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/PasswordMobilePropertyUI.java @@ -0,0 +1,37 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.dialog.BasicPane; +import com.fr.design.fun.impl.AbstractWidgetPropertyUIProvider; +import com.fr.design.gui.itable.AbstractPropertyTable; +import com.fr.design.widget.ui.designer.mobile.PasswordMobileDefinePane; + +/** + * 密码控件移动端属性注册 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/30 + */ +public class PasswordMobilePropertyUI extends AbstractWidgetPropertyUIProvider { + private XCreator xCreator; + + public PasswordMobilePropertyUI(XCreator xCreator) { + this.xCreator = xCreator; + } + + @Override + public AbstractPropertyTable createWidgetAttrTable() { + return null; + } + + @Override + public BasicPane createWidgetAttrPane() { + return new PasswordMobileDefinePane(xCreator); + } + + @Override + public String tableTitle() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Mobile_Attr"); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/designer/properties/mobile/TextAreaMobilePropertyUI.java b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/TextAreaMobilePropertyUI.java new file mode 100644 index 000000000..1c24e06bc --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/designer/properties/mobile/TextAreaMobilePropertyUI.java @@ -0,0 +1,37 @@ +package com.fr.design.designer.properties.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.dialog.BasicPane; +import com.fr.design.fun.impl.AbstractWidgetPropertyUIProvider; +import com.fr.design.gui.itable.AbstractPropertyTable; +import com.fr.design.widget.ui.designer.mobile.TextAreaAdvancedDefinePane; + +/** + * 文本域控件移动端属性 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/29 + */ +public class TextAreaMobilePropertyUI extends AbstractWidgetPropertyUIProvider { + private XCreator xCreator; + + public TextAreaMobilePropertyUI(XCreator xCreator) { + this.xCreator = xCreator; + } + + @Override + public AbstractPropertyTable createWidgetAttrTable() { + return null; + } + + @Override + public BasicPane createWidgetAttrPane() { + return new TextAreaAdvancedDefinePane(xCreator); + } + + @Override + public String tableTitle() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Mobile_Attr"); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/BaseTextEditorMobileDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/BaseTextEditorMobileDefinePane.java new file mode 100644 index 000000000..57faab6a7 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/BaseTextEditorMobileDefinePane.java @@ -0,0 +1,94 @@ +package com.fr.design.widget.ui.designer.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.foldablepane.UIExpandablePane; +import com.fr.design.gui.frpane.AttributeChangeListener; +import com.fr.design.i18n.Toolkit; +import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.FormDesigner; +import com.fr.design.widget.ui.designer.mobile.component.MobileTextEditSettingPane; +import com.fr.form.ui.TextEditor; + +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.FlowLayout; + +/** + *

文本类组件移动端高级属性的定义面板,基础扩展可以直接继承此面板 + *

往内部添加其他配置 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/30 + */ +public class BaseTextEditorMobileDefinePane extends MobileWidgetDefinePane { + + private XCreator xCreator; + protected MobileTextEditSettingPane textSettingPane; + + public BaseTextEditorMobileDefinePane(XCreator xCreator) { + this.xCreator = xCreator; + } + + @Override + public void initPropertyGroups(Object source) { + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel container = FRGUIPaneFactory.createVerticalFlowLayout_Pane(true, FlowLayout.LEADING, 0, 5); + addPropertyPanesToContainer(container); + this.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 20, container), BorderLayout.NORTH); + this.repaint(); + } + + /** + * 添加其他属性面板 + * + * @param container 展开容器 + */ + protected void addPropertyPanesToContainer(JPanel container) { + initSettingPane(container); + } + + /** + * 初始化文本类基础面板 + * + * @param container + */ + protected void initSettingPane(JPanel container) { + textSettingPane = new MobileTextEditSettingPane(); + container.add(textSettingPane); + } + + @Override + public void populate(FormDesigner designer) { + TextEditor textEditor = (TextEditor) xCreator.toData(); + textSettingPane.populateBean(textEditor.getMobileTextEditAttr()); + this.bindListeners2Widgets(); + } + + protected void bindListeners2Widgets() { + reInitAllListeners(); + AttributeChangeListener changeListener = new AttributeChangeListener() { + @Override + public void attributeChange() { + update(); + } + }; + this.addAttributeChangeListener(changeListener); + } + + private void reInitAllListeners() { + initListener(this); + } + + @Override + public void update() { + TextEditor textEditor = (TextEditor) xCreator.toData(); + textSettingPane.updateBean(textEditor.getMobileTextEditAttr()); + DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); + } + + public XCreator getxCreator() { + return xCreator; + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/NumberEditorMobileDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/NumberEditorMobileDefinePane.java new file mode 100644 index 000000000..75c6dbefc --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/NumberEditorMobileDefinePane.java @@ -0,0 +1,33 @@ +package com.fr.design.widget.ui.designer.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.FormDesigner; +import com.fr.form.ui.NumberEditor; + +/** + * 数字控件 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/30 + */ +public class NumberEditorMobileDefinePane extends BaseTextEditorMobileDefinePane { + public NumberEditorMobileDefinePane(XCreator xCreator) { + super(xCreator); + } + + @Override + public void populate(FormDesigner designer) { + NumberEditor numberEditor = (NumberEditor) getxCreator().toData(); + textSettingPane.populateBean(numberEditor.getMobileTextEditAttr()); + this.bindListeners2Widgets(); + } + + @Override + public void update() { + NumberEditor numberEditor = (NumberEditor) getxCreator().toData(); + textSettingPane.updateBean(numberEditor.getMobileTextEditAttr()); + DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/PasswordMobileDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/PasswordMobileDefinePane.java new file mode 100644 index 000000000..68c878b45 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/PasswordMobileDefinePane.java @@ -0,0 +1,25 @@ +package com.fr.design.widget.ui.designer.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.widget.ui.designer.mobile.component.MobilePasswordEditSettingPane; + +import javax.swing.JPanel; + +/** + * 密码控件移动端高级属性 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/30 + */ +public class PasswordMobileDefinePane extends BaseTextEditorMobileDefinePane { + public PasswordMobileDefinePane(XCreator xCreator) { + super(xCreator); + } + + @Override + protected void initSettingPane(JPanel container) { + textSettingPane = new MobilePasswordEditSettingPane(); + container.add(textSettingPane); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ScanCodeMobileDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ScanCodeMobileDefinePane.java index a9876b7a3..bb785c27d 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ScanCodeMobileDefinePane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/ScanCodeMobileDefinePane.java @@ -1,61 +1,50 @@ package com.fr.design.widget.ui.designer.mobile; -import com.fr.base.mobile.MobileScanCodeAttr; import com.fr.design.designer.creator.XCreator; -import com.fr.design.foldablepane.UIExpandablePane; -import com.fr.design.gui.frpane.AttributeChangeListener; -import com.fr.design.i18n.Toolkit; -import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.FormDesigner; +import com.fr.design.widget.ui.designer.mobile.component.MobileTextEditSettingPane; import com.fr.design.widget.ui.designer.mobile.component.MobileTextFieldInputSettingPane; import com.fr.form.ui.TextEditor; -import java.awt.BorderLayout; +import javax.swing.JPanel; -public class ScanCodeMobileDefinePane extends MobileWidgetDefinePane { +/** + * 输入方式: + * + * @author hades + * @since 11.0 + * Created on 2018/11/27 + */ +public class ScanCodeMobileDefinePane extends BaseTextEditorMobileDefinePane { - private XCreator xCreator; - private MobileTextFieldInputSettingPane settingPane; + private MobileTextFieldInputSettingPane inputSettingPane; public ScanCodeMobileDefinePane(XCreator xCreator) { - this.xCreator = xCreator; + super(xCreator); } @Override - public void initPropertyGroups(Object source) { - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - settingPane = new MobileTextFieldInputSettingPane(); - this.add(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Report_Advanced"), 280, 20, settingPane), BorderLayout.NORTH); - this.repaint(); + protected void initSettingPane(JPanel container) { + inputSettingPane = new MobileTextFieldInputSettingPane(); + textSettingPane = new MobileTextEditSettingPane(); + container.add(inputSettingPane); + container.add(textSettingPane); } - private void bindListeners2Widgets() { - reInitAllListeners(); - AttributeChangeListener changeListener = new AttributeChangeListener() { - @Override - public void attributeChange() { - update(); - } - }; - this.addAttributeChangeListener(changeListener); - } - - private void reInitAllListeners() { - initListener(this); - } @Override public void populate(FormDesigner designer) { - MobileScanCodeAttr mobileScanCodeAttr = ((TextEditor) xCreator.toData()).getMobileScanCodeAttr(); - settingPane.populateBean(mobileScanCodeAttr); + super.populate(designer); + TextEditor textEditor = (TextEditor) getxCreator().toData(); + inputSettingPane.populateBean(textEditor.getMobileScanCodeAttr()); this.bindListeners2Widgets(); } - @Override public void update() { - MobileScanCodeAttr mobileScanCodeAttr = ((TextEditor) xCreator.toData()).getMobileScanCodeAttr(); - settingPane.updateBean(mobileScanCodeAttr); + super.update(); + TextEditor textEditor = (TextEditor) getxCreator().toData(); + inputSettingPane.updateBean(textEditor.getMobileScanCodeAttr()); DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); } diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/TextAreaAdvancedDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/TextAreaAdvancedDefinePane.java new file mode 100644 index 000000000..ccc3194f9 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/TextAreaAdvancedDefinePane.java @@ -0,0 +1,25 @@ +package com.fr.design.widget.ui.designer.mobile; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.widget.ui.designer.mobile.component.MobileTextAreaSettingPane; + +import javax.swing.JPanel; + +/** + * 文本域控件 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/29 + */ +public class TextAreaAdvancedDefinePane extends BaseTextEditorMobileDefinePane { + public TextAreaAdvancedDefinePane(XCreator xCreator) { + super(xCreator); + } + + @Override + protected void initSettingPane(JPanel container) { + textSettingPane = new MobileTextAreaSettingPane(); + container.add(textSettingPane); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobilePasswordEditSettingPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobilePasswordEditSettingPane.java new file mode 100644 index 000000000..db475dc56 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobilePasswordEditSettingPane.java @@ -0,0 +1,43 @@ +package com.fr.design.widget.ui.designer.mobile.component; + +import com.fr.base.mobile.MobileTextEditAttr; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.i18n.Toolkit; + +import java.awt.BorderLayout; + +/** + * 密码控件编辑属性设置面板 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/30 + */ +public class MobilePasswordEditSettingPane extends MobileTextEditSettingPane { + // 显示字数统计 + private UICheckBox showPassword; + + public MobilePasswordEditSettingPane() { + super(); + showPassword = new UICheckBox(Toolkit.i18nText("Fine-Design_Mobile_Show_Password"), false); + this.add(showPassword, BorderLayout.NORTH); + } + + @Override + protected boolean getClearDefaultState() { + return true; + } + + @Override + public void populateBean(MobileTextEditAttr ob) { + super.populateBean(ob); + // 要兼容处理一下,为null 的话赋默认值,默认开启 + this.showPassword.setSelected(ob.isShowPassword() == null || ob.isShowPassword()); + } + + @Override + public void updateBean(MobileTextEditAttr ob) { + super.updateBean(ob); + ob.setShowPassword(showPassword.isSelected()); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextAreaSettingPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextAreaSettingPane.java new file mode 100644 index 000000000..d660508e6 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextAreaSettingPane.java @@ -0,0 +1,38 @@ +package com.fr.design.widget.ui.designer.mobile.component; + +import com.fr.base.mobile.MobileTextEditAttr; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.i18n.Toolkit; + +import java.awt.BorderLayout; + +/** + * 文本域控件 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/29 + */ +public class MobileTextAreaSettingPane extends MobileTextEditSettingPane { + // 显示字数统计 + private UICheckBox showWordCount; + + public MobileTextAreaSettingPane() { + super(); + showWordCount = new UICheckBox(Toolkit.i18nText("Fine-Design_Mobile_Show_Word_Count"), false); + this.add(showWordCount, BorderLayout.NORTH); + } + + @Override + public void populateBean(MobileTextEditAttr ob) { + super.populateBean(ob); + // 要兼容处理一下,为null 的话赋默认值,默认不开启 + this.showWordCount.setSelected(ob.isShowWordCount() != null && ob.isShowWordCount()); + } + + @Override + public void updateBean(MobileTextEditAttr ob) { + super.updateBean(ob); + ob.setShowWordCount(showWordCount.isSelected()); + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextEditSettingPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextEditSettingPane.java new file mode 100644 index 000000000..56d340e4d --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextEditSettingPane.java @@ -0,0 +1,59 @@ +package com.fr.design.widget.ui.designer.mobile.component; + +import com.fr.base.mobile.MobileTextEditAttr; +import com.fr.design.beans.BasicBeanPane; +import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.i18n.Toolkit; +import com.fr.design.layout.VerticalFlowLayout; + +import java.awt.BorderLayout; +import java.awt.FlowLayout; + +/** + * 文本类基础设置 + * + * @author Coral.Chen + * @since 11.0 + * Created on 2023/3/29 + */ +public class MobileTextEditSettingPane extends BasicBeanPane { + // 允许一键清空 + protected UICheckBox allowOneClickClear; + + public MobileTextEditSettingPane() { + initLayout(); + allowOneClickClear = new UICheckBox(Toolkit.i18nText("Fine-Design_Mobile_Allow_One_Click_Clear"), getClearDefaultState()); + this.add(allowOneClickClear, BorderLayout.NORTH); + } + + protected boolean getClearDefaultState() { + return false; + } + + protected void initLayout() { + VerticalFlowLayout verticalFlowLayout = new VerticalFlowLayout(FlowLayout.LEADING, 0, 5); + verticalFlowLayout.setAlignLeft(true); + this.setLayout(verticalFlowLayout); + } + + @Override + public void populateBean(MobileTextEditAttr ob) { + allowOneClickClear.setSelected(ob.isAllowOneClickClear() != null && ob.isAllowOneClickClear()); + } + + @Override + public MobileTextEditAttr updateBean() { + // do nothing + return null; + } + + @Override + public void updateBean(MobileTextEditAttr ob) { + ob.setAllowOneClickClear(allowOneClickClear.isSelected()); + } + + @Override + protected String title4PopupWindow() { + return null; + } +} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextFieldInputSettingPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextFieldInputSettingPane.java index 75d924e53..faaec45bc 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextFieldInputSettingPane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/mobile/component/MobileTextFieldInputSettingPane.java @@ -2,12 +2,17 @@ package com.fr.design.widget.ui.designer.mobile.component; import com.fr.base.mobile.MobileScanCodeAttr; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.constants.LayoutConstants; import com.fr.design.gui.icheckbox.UICheckBox; +import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; -import java.awt.BorderLayout; -import java.awt.FlowLayout; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; + import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; /** * @author hades @@ -22,13 +27,24 @@ public class MobileTextFieldInputSettingPane extends BasicBeanPane Date: Thu, 30 Mar 2023 16:14:44 +0800 Subject: [PATCH 59/70] =?UTF-8?q?REPORT-90316=20=E7=A7=BB=E5=8A=A8?= =?UTF-8?q?=E7=AB=AF=E6=8E=A7=E4=BB=B6=E7=BF=BB=E6=96=B0----=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=83=A8=E5=88=86=E9=85=8D=E7=BD=AE=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/designer/creator/XTextArea.java | 1 + 1 file changed, 1 insertion(+) diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java b/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java index f23c24fea..88d0391ce 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java @@ -27,6 +27,7 @@ import java.beans.IntrospectionException; /** * @author richer * @since 6.5.3 + * Created on 2016/3/29 */ public class XTextArea extends XWrapperedFieldEditor { From 74037b9b0f3191845667f612329165ffa16477e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Fri, 31 Mar 2023 10:46:10 +0800 Subject: [PATCH 60/70] =?UTF-8?q?REPORT-92893=20=E9=94=81=E5=AE=9A?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E6=9D=BF=EF=BC=8C=E9=87=8D=E5=A4=8D=E5=8F=A6?= =?UTF-8?q?=E5=AD=98=E5=89=AF=E6=9C=AC=EF=BC=8C=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=A8=A1=E6=9D=BF=E5=86=85=E5=AE=B9=E4=B8=8D?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/lock/LockInfoDialog.java | 2 +- .../com/fr/design/utils/TemplateUtils.java | 140 ++++++++++++++---- 2 files changed, 114 insertions(+), 28 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java b/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java index 003215ca6..44c95c44c 100644 --- a/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java +++ b/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java @@ -99,7 +99,7 @@ public class LockInfoDialog extends JDialog { return; } final String selectedFilePath = StableUtils.pathJoin(ProjectConstants.REPORTLETS_NAME, TemplateTreePane.getInstance().getFilePath()); - TemplateUtils.createAndOpenTemplate( + TemplateUtils.createAndReOpenTemplate( Toolkit.i18nText("Fine_Design_Template_Lock_Copy"), new FileNodeFILE(new FileNode(selectedFilePath, false)), false, diff --git a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java index 9fb1e632a..1c9f90ab9 100644 --- a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java @@ -16,8 +16,10 @@ import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.CoreConstants; import com.fr.stable.ProductConstants; +import com.fr.stable.StringUtils; import com.fr.workspace.WorkContext; import com.fr.workspace.server.lock.TplOperator; +import org.jetbrains.annotations.Nullable; import javax.swing.SwingWorker; import java.io.OutputStream; @@ -33,22 +35,63 @@ public class TemplateUtils { /** * 创建新的模板文件并打开模板 - * @param prefix 模板文件名称前缀 - * @param file 模板文件 + * + * @param prefix 模板文件名称前缀 + * @param file 模板文件 * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 * 为true时以CurrentEditingTemplate为准创建新模板 * 为false时以传入的File文件为准创建新模板,此文件可以不是编辑状态 - * @param openNewTemplate 是否需要在创建后打开模板 + * @param openNewTemplate 是否需要在创建后打开模板 */ public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate) { - String fileName = file.getName(); + createAndOpenTemplate(prefix, file, createByEditingTemplate, openNewTemplate, () -> {}); + } + + /** + * 创建新的模板文件并并判断新的模板文件是否之前已经被开打,如果已经打开需要reOpen + * + * @param prefix 模板文件名称前缀 + * @param file 模板文件 + * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 + * 为true时以CurrentEditingTemplate为准创建新模板 + * 为false时以传入的File文件为准创建新模板,此文件可以不是编辑状态 + * @param openNewTemplate 是否需要在创建后打开模板 + */ + public static void createAndReOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate) { String oldPath = file.getPath(); + file = getSavedFile(prefix, file); + if (file == null) { + return; + } + Runnable doAfterCreateTemplate; + //判断一下要保存的文件是否已打开 + int index = HistoryTemplateListCache.getInstance().contains(file); + if (index == -1) { + doAfterCreateTemplate = () -> {}; + } else { + JTemplate template = HistoryTemplateListCache.getInstance().getHistoryList().get(index); + doAfterCreateTemplate = () -> HistoryTemplateListCache.getInstance().closeSelectedReport(template); + } + createAndOpenTemplate0(file, oldPath, createByEditingTemplate, openNewTemplate, doAfterCreateTemplate); + } + + + /** + * 返回值可以为null, 为null表示点击保存按钮或者传递进来的文件file本身不满足格式要求 + * + * @param prefix 模板文件名称前缀 + * @param file 模板文件 + * @return 最后选择的要保存的文件 + */ + @Nullable + private static FILE getSavedFile(String prefix, FILE file) { + String fileName = file.getName(); int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT); if (indexOfLastDot < 0) { - return; + return null; } String suffix = fileName.substring(indexOfLastDot + 1); - FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true); + FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true); fileChooserPane.setFileNameTextField(prefix + fileName, suffix); FileExtension fileExtension = FileExtension.parse(suffix); fileChooserPane.addChooseFILEFilter(new ChooseFileFilter(fileExtension, ProductConstants.APP_NAME + Toolkit.i18nText("Fine-Design_Report_Template_File"))); @@ -57,36 +100,52 @@ public class TemplateUtils { fileChooserPane.enableFileNameTextFiled(); if (isCancel(result)) { - return; + return null; } if (isOk(result)) { - file = fileChooserPane.getSelectedFILE(); - _createAndOpenTemplate(file, oldPath, createByEditingTemplate, openNewTemplate); + return fileChooserPane.getSelectedFILE(); } + + return null; } + /** + * 创建新的模板文件并打开模板,并在创建备份模板成功后执行doAfterCreate + * + * @param prefix 模板文件名称前缀 + * @param file 模板文件 + * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 + * 为true时以CurrentEditingTemplate为准创建新模板 + * 为false时以传入的File文件为准创建新模板,此文件可以不是编辑状态 + * @param openNewTemplate 是否需要在创建后打开模板 + * @param doAfterCreateTemplate 创建备份模板成功后调用 + */ + public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) { + String oldPath = file.getPath(); + file = getSavedFile(prefix, file); + if (file == null) { + return; + } - private static void _createAndOpenTemplate(FILE file, String oldPath, boolean createByEditingTemplate, boolean openNewTemplate){ - new SwingWorker() { + createAndOpenTemplate0(file, oldPath, createByEditingTemplate, openNewTemplate, doAfterCreateTemplate); + } + + private static void createAndOpenTemplate0(FILE file, String oldPath, boolean createByEditingTemplate, boolean openNewTemplate, Runnable doAfterCreateTemplate) { + new SwingWorker() { @Override - protected Void doInBackground() throws Exception { - byte[] content = new byte[0]; - if (createByEditingTemplate) { - // 从当前编辑模板中生成备份文件 - JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - content = template.exportData(); - } else { - content = WorkContext.getWorkResource().readFully(oldPath); - } - if (ArrayUtils.isEmpty(content)) { - throw new Exception(oldPath + " content is empty" ); - } + protected Boolean doInBackground() throws Exception { + // 读取模板数据 + byte[] content = getTemplateData(createByEditingTemplate, oldPath); OutputStream out = null; try { // 加锁 - WorkContext.getCurrent().get(TplOperator.class).saveAs(file.getPath()); + boolean saveAsLock = WorkContext.getCurrent().get(TplOperator.class).saveAs(file.getPath()); + if (!saveAsLock) { + // 加锁失败时,直接返回 + return false; + } out = file.asOutputStream(); out.write(content); } finally { @@ -98,15 +157,18 @@ public class TemplateUtils { // 解锁 WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath()); } - } - return null; + return true; } @Override protected void done() { try { - get(); + if (!get()) { + throw new Exception("[RemoteDesign] back up template file failed"); + } + // 创建备份成功后,关闭原模板 + doAfterCreateTemplate.run(); if (openNewTemplate) { DesignerContext.getDesignerFrame().openTemplate(file); } @@ -118,7 +180,31 @@ public class TemplateUtils { } } }.execute(); + } + /** + * 读取模板文件数据 + * + * @param readCurrentEditingTemplate 是否读取当前编辑模板 + * @param path 模板路径 + * @return 模板文件数据 + */ + private static byte[] getTemplateData(boolean readCurrentEditingTemplate, String path) throws Exception { + byte[] content = new byte[0]; + if (readCurrentEditingTemplate) { + // 从当前编辑模板中读取模板文件数据 + JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + if (JTemplate.isValid(template)) { + content = template.exportData(); + } + } else { + // 从给定的模板路径中读取模板文件数据 + content = WorkContext.getWorkResource().readFully(path); + } + if (ArrayUtils.isEmpty(content)) { + throw new Exception(StringUtils.messageFormat("{} content is empty", path)); + } + return content; } private static boolean isCancel(int result) { From 938ced8b6d21a9eac28936706745d562db4cd831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=2EYing-=E5=BA=94=E5=BF=97=E6=B5=A9?= Date: Fri, 31 Mar 2023 11:10:06 +0800 Subject: [PATCH 61/70] =?UTF-8?q?REPORT-92893=20=E9=94=81=E5=AE=9A?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E6=9D=BF=EF=BC=8C=E9=87=8D=E5=A4=8D=E5=8F=A6?= =?UTF-8?q?=E5=AD=98=E5=89=AF=E6=9C=AC=EF=BC=8C=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=A8=A1=E6=9D=BF=E5=86=85=E5=AE=B9=E4=B8=8D?= =?UTF-8?q?=E6=9B=B4=E6=96=B0--=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/utils/TemplateUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java index 1c9f90ab9..f3d062946 100644 --- a/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java @@ -77,7 +77,7 @@ public class TemplateUtils { /** - * 返回值可以为null, 为null表示点击保存按钮或者传递进来的文件file本身不满足格式要求 + * 返回值可以为null, 为null表示没有点击保存按钮或者传递进来的文件file本身不满足格式要求 * * @param prefix 模板文件名称前缀 * @param file 模板文件 From cafb3d21303863dd97e58e1cd2369f9563756567 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 31 Mar 2023 18:25:30 +0800 Subject: [PATCH 62/70] =?UTF-8?q?REPORT-92953=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=90=8E=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/EnvChangeEntrance.java | 4 ++++ .../src/main/java/com/fr/design/gui/ilist/JNameEdList.java | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java index d38def283..9771239ea 100644 --- a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java +++ b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java @@ -116,6 +116,10 @@ public class EnvChangeEntrance { if (!checkValid) { return false; } + //如果是相同环境就不会做done操作,因此不会更新名字,需要先判断一下,如果是相同环境也要更新一下名字(可能会重命名) + if (AssistUtils.equals(WorkContext.getCurrent(), workspace)) { + DesignerEnvManager.getEnvManager().setCurEnvName(envName); + } WorkContext.switchTo(workspace, new WorkContextCallback() { @Override diff --git a/designer-base/src/main/java/com/fr/design/gui/ilist/JNameEdList.java b/designer-base/src/main/java/com/fr/design/gui/ilist/JNameEdList.java index 4c530c0fc..4a489e50f 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ilist/JNameEdList.java +++ b/designer-base/src/main/java/com/fr/design/gui/ilist/JNameEdList.java @@ -175,7 +175,8 @@ public class JNameEdList extends UIList implements CellEditorListener { } public void setIllegalIndex(int index) { - setNameAt(NameInspector.ILLEGAL_NAME_HOLDER, index); + //环境如果重名会被命名为请重命名,这个”请重命名“也会重复,后面加个索引区别一下 + setNameAt(NameInspector.ILLEGAL_NAME_HOLDER + index, index); this.repaint(); } From 58109181e0e97126fed713fc3c621441812826ce Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 31 Mar 2023 18:31:06 +0800 Subject: [PATCH 63/70] =?UTF-8?q?REPORT-92953=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=90=8E=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/gui/ilist/JNameEdList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/ilist/JNameEdList.java b/designer-base/src/main/java/com/fr/design/gui/ilist/JNameEdList.java index 4a489e50f..c12a22505 100644 --- a/designer-base/src/main/java/com/fr/design/gui/ilist/JNameEdList.java +++ b/designer-base/src/main/java/com/fr/design/gui/ilist/JNameEdList.java @@ -175,7 +175,7 @@ public class JNameEdList extends UIList implements CellEditorListener { } public void setIllegalIndex(int index) { - //环境如果重名会被命名为请重命名,这个”请重命名“也会重复,后面加个索引区别一下 + //环境如果重名会被命名为请重命名,这个请重命名也会重复,后面加个索引区别一下 setNameAt(NameInspector.ILLEGAL_NAME_HOLDER + index, index); this.repaint(); } From 07991b53e5801e9c6b30f4a24de1ca26b892b41f Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 3 Apr 2023 15:15:09 +0800 Subject: [PATCH 64/70] =?UTF-8?q?REPORT-92953=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=90=8E=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/EnvChangeEntrance.java | 102 ++++++++++++------ 1 file changed, 68 insertions(+), 34 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java index 9771239ea..59b8e8e53 100644 --- a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java +++ b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java @@ -120,19 +120,14 @@ public class EnvChangeEntrance { if (AssistUtils.equals(WorkContext.getCurrent(), workspace)) { DesignerEnvManager.getEnvManager().setCurEnvName(envName); } - - WorkContext.switchTo(workspace, new WorkContextCallback() { - @Override - public void done() { - DesignerEnvManager.getEnvManager().setCurEnvName(envName); - DesignUtils.refreshDesignerFrame(); - DesignTableDataManager.fireDSChanged(new HashMap()); - if (WorkContext.getCurrent().isLocal()) { - //初始化一下serverTray - ServerTray.init(); - } - } - }); + //如果是相同环境 + if (isSameEnv(workspace)) { + //目前切换到相同环境需要更新一下名字,后续如果有别的操作直接往里面加就行了 + switch2SameEnv(envName); + } else { + //切换到新环境,做下封装 + switch2OtherEnv(workspace, envName); + } // REPORT-25688如果是war包部署的服务器,给与提示 if (WorkContext.getCurrent().isWarDeploy()) { FineJOptionPane.showMessageDialog(null, Toolkit.i18nText("Fine-Design_Basic_War_Deploy_Tip"), @@ -160,6 +155,41 @@ public class EnvChangeEntrance { return true; } + private void switch2OtherEnv(Workspace workspace, String envName) { + WorkContext.switchTo(workspace, new WorkContextCallback() { + @Override + public void done() { + DesignerEnvManager.getEnvManager().setCurEnvName(envName); + DesignUtils.refreshDesignerFrame(); + DesignTableDataManager.fireDSChanged(new HashMap()); + if (WorkContext.getCurrent().isLocal()) { + //初始化一下serverTray + ServerTray.init(); + } + } + }); + } + + /** + * 切换到相同环境要做的事情 + * + * @param envName 当前的环境名 + */ + private void switch2SameEnv(String envName) { + //当前环境名称可能重命名更改过,需要更新一下,防止启动失败 + DesignerEnvManager.getEnvManager().setCurEnvName(envName); + } + + /** + * 是否切换到相同环境 + * + * @param workspace 要切换的环境 + * @return 是则返回true + */ + private boolean isSameEnv(Workspace workspace) { + return AssistUtils.equals(WorkContext.getCurrent(), workspace); + } + /** * 这个功能留着,可能会加回来,先做注释处理 * 切换远程环境之前,进行版本检测,当版本不一致的时候,提示。 @@ -205,13 +235,14 @@ public class EnvChangeEntrance { return true; } - /** + /** * 对选择的环境做服务检测 + * * @param selectedEnv 选择的工作环境 */ public void showServiceDialog(DesignerWorkspaceInfo selectedEnv) throws Exception { //是否需要做服务校验 - if(needCheckBranch(selectedEnv)) { + if (needCheckBranch(selectedEnv)) { String localBranch; String remoteBranch; WorkspaceConnectionInfo connectionInfo = selectedEnv.getConnection(); @@ -232,18 +263,18 @@ public class EnvChangeEntrance { StringBuilder textBuilder = new StringBuilder(); for (Class clazz : noExistServiceSet) { WorkspaceAPI workspaceAPI = (WorkspaceAPI) clazz.getAnnotation(WorkspaceAPI.class); - if(workspaceAPI == null){ + if (workspaceAPI == null) { FineLoggerFactory.getLogger().info("workspace service {} get annotation failed", clazz); continue; } - if(workspaceAPI.ignore()){ + if (workspaceAPI.ignore()) { continue; } String descriptionOfCN = InterProviderFactory.getProvider().getLocText(workspaceAPI.description()); textBuilder.append(descriptionOfCN).append("\n"); } String areaText = textBuilder.toString(); - if(StringUtils.isEmpty(areaText)){ + if (StringUtils.isEmpty(areaText)) { return; } @@ -255,24 +286,25 @@ public class EnvChangeEntrance { * 判断是否需要做版本验证,判断依据为 * 1、选择的环境为远程环境 * 2、一个月内不弹出是否勾选 + * * @param selectedEnv 选择的环境 * @return */ - private boolean needCheckBranch(DesignerWorkspaceInfo selectedEnv){ - if(selectedEnv.getType() == DesignerWorkspaceType.Remote){ + private boolean needCheckBranch(DesignerWorkspaceInfo selectedEnv) { + if (selectedEnv.getType() == DesignerWorkspaceType.Remote) { try { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); - if(StringUtils.isEmpty(selectedEnv.getRemindTime())){ + if (StringUtils.isEmpty(selectedEnv.getRemindTime())) { return true; } //获取记录的时间 Date remindTime = format.parse(selectedEnv.getRemindTime()); calendar.setTime(remindTime); //获取一个月后的时间 - calendar.add(Calendar.MONTH,1); + calendar.add(Calendar.MONTH, 1); //与当前时间作对比,然后判断是否提示 - if(new Date().after(calendar.getTime())){ + if (new Date().after(calendar.getTime())) { return true; } } catch (ParseException e) { @@ -284,21 +316,22 @@ public class EnvChangeEntrance { /** * 获取不存在的服务列表 + * * @param info 环境连接信息 * @return 以Set形式返回不存在的服务 */ - public Set getNoExistServiceSet(WorkspaceConnectionInfo info){ + public Set getNoExistServiceSet(WorkspaceConnectionInfo info) { Set noExistServiceSet = new HashSet(); Set remoteServiceSet = new HashSet(); Set localServiceSet = FineObjectPool.getInstance().getServerPool().keySet(); try { JSONArray serviceArray = new FunctionalHttpRequest(info).getServiceList(); - for(int i = 0; i < serviceArray.size(); i++){ - try{ + for (int i = 0; i < serviceArray.size(); i++) { + try { Class clazz = Class.forName((String) serviceArray.get(i)); remoteServiceSet.add(clazz); - } catch (Exception e){ + } catch (Exception e) { continue; } } @@ -308,12 +341,12 @@ public class EnvChangeEntrance { } catch (WorkspaceConnectionException e) { FineLoggerFactory.getLogger().info(e.getMessage()); //根据本地的服务列表做逐一检测 - for(Class clazz : localServiceSet) { + for (Class clazz : localServiceSet) { Method testMethod = Reflect.on(Method.class).create(clazz, "connectTest", new Class[0], String.class, new Class[0], 1025, 8, null, null, null, null).get(); WorkspaceProxyPool proxyPool = (WorkspaceProxyPool) (((RemoteWorkspace) WorkContext.getCurrent()).getClient()).getPool(); Result result = proxyPool.testInvoker(testMethod); Exception invokeException = (Exception) result.getException(); - if(invokeException != null){ + if (invokeException != null) { Exception cause = (Exception) invokeException.getCause(); //获取被包装最底层的异常 while (cause != null) { @@ -321,25 +354,26 @@ public class EnvChangeEntrance { cause = (Exception) invokeException.getCause(); } //该异常表示服务不存在 - if(invokeException instanceof ClassNotFoundException){ + if (invokeException instanceof ClassNotFoundException) { noExistServiceSet.add(clazz); } } } return noExistServiceSet; - } catch (Exception e){ - FineLoggerFactory.getLogger().error(e.getMessage(),e); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); return noExistServiceSet; } } /** * 格式化分支版本号 + * * @param branch 初始的分支版本号 * @return 格式化后的版本号 */ - private String formatBranch(String branch){ - if(branch.contains("#")){ + private String formatBranch(String branch) { + if (branch.contains("#")) { return branch.substring(branch.lastIndexOf("-") + 1, branch.length() - 13); } return branch; From b983e1ebdb00ba82cf01f43d925353618e0bd467 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 3 Apr 2023 15:15:46 +0800 Subject: [PATCH 65/70] =?UTF-8?q?REPORT-92953=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=90=8E=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/EnvChangeEntrance.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java index 59b8e8e53..cb78d5643 100644 --- a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java +++ b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java @@ -155,6 +155,12 @@ public class EnvChangeEntrance { return true; } + /** + * 切换到其他环境 + * + * @param workspace 要切换的环境 + * @param envName 要切换的环境名称 + */ private void switch2OtherEnv(Workspace workspace, String envName) { WorkContext.switchTo(workspace, new WorkContextCallback() { @Override From b68a0841db5c1d12015b297adfda388f4c0d5cd8 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 3 Apr 2023 15:16:38 +0800 Subject: [PATCH 66/70] =?UTF-8?q?REPORT-92953=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=90=8E=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/EnvChangeEntrance.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java index cb78d5643..4300ba039 100644 --- a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java +++ b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java @@ -116,10 +116,6 @@ public class EnvChangeEntrance { if (!checkValid) { return false; } - //如果是相同环境就不会做done操作,因此不会更新名字,需要先判断一下,如果是相同环境也要更新一下名字(可能会重命名) - if (AssistUtils.equals(WorkContext.getCurrent(), workspace)) { - DesignerEnvManager.getEnvManager().setCurEnvName(envName); - } //如果是相同环境 if (isSameEnv(workspace)) { //目前切换到相同环境需要更新一下名字,后续如果有别的操作直接往里面加就行了 From dd8dec870b475f5beb2e4917fcfd5cc421170705 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 3 Apr 2023 15:31:30 +0800 Subject: [PATCH 67/70] =?UTF-8?q?REPORT-92953=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E4=BF=AE=E6=94=B9=E9=BB=98=E8=AE=A4=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=90=8E=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=20=E6=94=B9=E4=B8=80=E4=B8=8B=E8=80=81=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=AD=94=E6=B3=95=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/EnvChangeEntrance.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java index 4300ba039..17d7d5883 100644 --- a/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java +++ b/designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java @@ -65,6 +65,9 @@ import java.util.HashSet; import static javax.swing.JOptionPane.QUESTION_MESSAGE; public class EnvChangeEntrance { + private static final String BRANCH_TAG = "#"; + private static final String BRANCH_BEGIN = "-"; + private static final int BRANCH_SUB_LENGTH = 13; public static EnvChangeEntrance getInstance() { return HOLDER.singleton; @@ -375,8 +378,8 @@ public class EnvChangeEntrance { * @return 格式化后的版本号 */ private String formatBranch(String branch) { - if (branch.contains("#")) { - return branch.substring(branch.lastIndexOf("-") + 1, branch.length() - 13); + if (branch.contains(BRANCH_TAG)) { + return branch.substring(branch.lastIndexOf(BRANCH_BEGIN) + 1, branch.length() - BRANCH_SUB_LENGTH); } return branch; } From bbc5a3f916cffa104c6020e5dbe5bb18f4cc8d09 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 3 Apr 2023 17:22:00 +0800 Subject: [PATCH 68/70] =?UTF-8?q?REPORT-90581=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=B7=BB=E5=8A=A0=E4=BA=8B=E4=BB=B6=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=85=85=E6=BB=A1=EF=BC=8C=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E7=95=99=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/controlpane/UIListGroupControlPane.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java index ed07ecc2d..41e40d8b1 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java @@ -28,14 +28,7 @@ import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import java.awt.AlphaComposite; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.FontMetrics; -import java.awt.Graphics; -import java.awt.Graphics2D; +import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.lang.reflect.Constructor; @@ -336,7 +329,9 @@ public abstract class UIListGroupControlPane extends UIControlPane implements Li Map.Entry entry = iterator.next(); ListWrapperPane wrapperPane = entry.getValue(); UIList uiList = wrapperPane.getNameEdList(); - uiList.setFixedCellWidth(width); + //contentPane是外层的Panel,如果不进行判断的话宽度就可能会小于contentPanel,右侧会有空隙 + //所以需要判断一下,如果外层比较宽就取外层的宽度,防止空隙出现 + uiList.setFixedCellWidth(Math.max(width, contentPane == null? 0 : contentPane.getWidth())); } } From 704028d58a89a0d648560ce78c1bb6b396411d56 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Mon, 3 Apr 2023 17:28:41 +0800 Subject: [PATCH 69/70] =?UTF-8?q?REPORT-90581=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=B7=BB=E5=8A=A0=E4=BA=8B=E4=BB=B6=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=85=85=E6=BB=A1=EF=BC=8C=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E7=95=99=E7=99=BD=20=E6=A0=BC=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/controlpane/UIListGroupControlPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java index 41e40d8b1..890d56da6 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java @@ -331,7 +331,7 @@ public abstract class UIListGroupControlPane extends UIControlPane implements Li UIList uiList = wrapperPane.getNameEdList(); //contentPane是外层的Panel,如果不进行判断的话宽度就可能会小于contentPanel,右侧会有空隙 //所以需要判断一下,如果外层比较宽就取外层的宽度,防止空隙出现 - uiList.setFixedCellWidth(Math.max(width, contentPane == null? 0 : contentPane.getWidth())); + uiList.setFixedCellWidth(Math.max(width, contentPane == null ? 0 : contentPane.getWidth())); } } From 5cb91f8270f1590d3b0112aa2aaacfd7c2492e18 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 4 Apr 2023 14:03:07 +0800 Subject: [PATCH 70/70] =?UTF-8?q?REPORT-90581=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=B7=BB=E5=8A=A0=E4=BA=8B=E4=BB=B6=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=85=85=E6=BB=A1=EF=BC=8C=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=E7=95=99=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controlpane/UIListGroupControlPane.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java index 890d56da6..47581fb62 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java @@ -139,7 +139,7 @@ public abstract class UIListGroupControlPane extends UIControlPane implements Li } this.checkButtonEnabled(); refreshEventListWrapperPane(); - this.checkGroupPaneSize(); + this.updateGroupPaneSize(contentPane); isPopulating = false; } @@ -207,7 +207,7 @@ public abstract class UIListGroupControlPane extends UIControlPane implements Li nameEdList.addModNameActionListener(new ModNameActionListener() { @Override public void nameModed(int index, String oldName, String newName) { - checkGroupPaneSize(); + updateGroupPaneSize(contentPane); saveSettings(); } }); @@ -297,24 +297,30 @@ public abstract class UIListGroupControlPane extends UIControlPane implements Li public void onAddItem(NameableCreator creator) { updateSelectedNameList(creator); getCommonHandlers().onAddItem(creator); - checkGroupPaneSize(); + updateGroupPaneSize(contentPane); } @Override public void onRemoveItem() { getCommonHandlers().onRemoveItem(); refreshEventListWrapperPane(); - checkGroupPaneSize(); + updateGroupPaneSize(contentPane); } @Override public void onCopyItem() { getCommonHandlers().onCopyItem(); - checkGroupPaneSize(); + updateGroupPaneSize(contentPane); } - private void checkGroupPaneSize() { + /** + * 根据父面板更新对应的面板宽度 + * (如果小于父面板的宽度就填充到与父面板宽度一致) + * + * @param parentPane 父面板 + */ + private void updateGroupPaneSize(JPanel parentPane) { int width = 180; Iterator> iterator = nameEdListMap.entrySet().iterator(); while (iterator.hasNext()) { @@ -324,14 +330,14 @@ public abstract class UIListGroupControlPane extends UIControlPane implements Li width = Math.max(width, calculateUIListMaxCellWidth(uiList.getModel(), uiList.getFontMetrics(uiList.getFont()))); } iterator = nameEdListMap.entrySet().iterator(); - width += 30; + //contentPane是外层的Panel,如果不进行判断的话宽度就可能会小于contentPanel,右侧会有空隙 + //所以需要判断一下,如果外层比较宽就取外层的宽度,防止空隙出现 + width = Math.max(width + 30, parentPane == null ? 0 : parentPane.getWidth()); while (iterator.hasNext()) { Map.Entry entry = iterator.next(); ListWrapperPane wrapperPane = entry.getValue(); UIList uiList = wrapperPane.getNameEdList(); - //contentPane是外层的Panel,如果不进行判断的话宽度就可能会小于contentPanel,右侧会有空隙 - //所以需要判断一下,如果外层比较宽就取外层的宽度,防止空隙出现 - uiList.setFixedCellWidth(Math.max(width, contentPane == null ? 0 : contentPane.getWidth())); + uiList.setFixedCellWidth(width); } }