Browse Source

Merge pull request #11817 in DESIGN/design from release/11.0 to final/11.0

* commit '62f4e0e000e08cec8187da901a84680da486e356': (56 commits)
  REPORT-92492 超管强制解锁,普通用户触发保存,弹窗提示和实际效果不符--改下注释
  REPORT-92492 超管强制解锁,普通用户触发保存,弹窗提示和实际效果不符
  REPORT-83689 单元格为存储过程数据列的时候无法设置数据集排列 【问题原因】设置数据集排列,获取当前模版所有数据集时,未考虑存储过程数据集,导致获取的tableDataWrapper为空 【改动思路】获取所有数据集时,包括存储过程。
  REPORT-92430 设计器-图标-mac下文件图标都丢失了,windows下正常
  REPORT-82787 图表空数据提示配置页面,默认图片需补充繁中版
  REPORT-82787 图表空数据提示配置页面,默认图片需补充繁中版
  REPORT-92440 mac-数据源带叹号的宽度不正常
  REPORT-92440 mac-数据源带叹号的宽度不正常
  REPORT-92440 mac-数据源带叹号的宽度不正常
  REPORT-92439 mac下-展开收起图标的问题
  REPORT-92439 mac下-展开收起图标的问题
  REPORT-92440 mac-数据源带叹号的宽度不正常
  REPORT-92440 mac-数据源带叹号的宽度不正常
  REPORT-92439 mac下-展开收起图标的问题
  REPORT-92440 增加了SvgPaintWorker的execute方法的注释
  REPORT-92430 设计器-图标-mac下文件图标都丢失了,windows下正常
  REPORT-92439 mac下-展开收起图标的问题
  REPORT-92440 mac-数据源带叹号的宽度不正常
  REPORT-92439 优化了计算svg位置x,y的写法
  REPORT-92439 mac下-展开收起图标的问题
  ...
new-design
superman 2 years ago
parent
commit
4f9bea4495
  1. 12
      designer-base/src/main/java/com/fr/base/svg/SVGIcon.java
  2. 2
      designer-base/src/main/java/com/fr/design/actions/edit/CopyAction.java
  3. 2
      designer-base/src/main/java/com/fr/design/actions/edit/CutAction.java
  4. 2
      designer-base/src/main/java/com/fr/design/actions/edit/PasteAction.java
  5. 2
      designer-base/src/main/java/com/fr/design/actions/file/DelFileAction.java
  6. 2
      designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java
  7. 3
      designer-base/src/main/java/com/fr/design/actions/file/PreferenceAction.java
  8. 2
      designer-base/src/main/java/com/fr/design/actions/file/RenameAction.java
  9. 67
      designer-base/src/main/java/com/fr/design/constants/UIConstants.java
  10. 7
      designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java
  11. 28
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java
  12. 12
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java
  13. 13
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataTree.java
  14. 14
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java
  15. 3
      designer-base/src/main/java/com/fr/design/data/datapane/connect/ConnectionTableProcedurePane.java
  16. 4
      designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java
  17. 15
      designer-base/src/main/java/com/fr/design/data/datapane/preview/desensitization/view/rule/DesensitizationRuleChoosePane.java
  18. 8
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/MultiResultTableDataWrapperHelper.java
  19. 22
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/ServerTableDataWrapper.java
  20. 4
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureDataWrapper.java
  21. 4
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureNameWrapper.java
  22. 20
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java
  23. 7
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TemplateTableDataWrapper.java
  24. 2
      designer-base/src/main/java/com/fr/design/extra/exe/callback/handle/PluginTaskResultErrorDialog.java
  25. 22
      designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java
  26. 3
      designer-base/src/main/java/com/fr/design/gui/UILookAndFeel.java
  27. 7
      designer-base/src/main/java/com/fr/design/gui/controlpane/AbstractNameableCreator.java
  28. 18
      designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java
  29. 2
      designer-base/src/main/java/com/fr/design/gui/icontainer/UIModeControlContainer.java
  30. 29
      designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java
  31. 5
      designer-base/src/main/java/com/fr/design/gui/itree/UITreeUI.java
  32. 15
      designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileTreeIcon.java
  33. 8
      designer-base/src/main/java/com/fr/design/icon/IconPathConstants.java
  34. 41
      designer-base/src/main/java/com/fr/design/icon/WarningIcon.java
  35. 13
      designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java
  36. 12
      designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java
  37. 5
      designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java
  38. 7
      designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java
  39. 8
      designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java
  40. 3
      designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java
  41. 4
      designer-base/src/main/java/com/fr/design/mainframe/manager/search/searcher/control/pane/TemplateTreeSearchToolbarPane.java
  42. 33
      designer-base/src/main/java/com/fr/design/menu/MenuDef.java
  43. 7
      designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java
  44. 4
      designer-base/src/main/java/com/fr/design/preview/FormPreview.java
  45. 4
      designer-base/src/main/java/com/fr/design/preview/MobilePreview.java
  46. 4
      designer-base/src/main/java/com/fr/design/preview/PagePreview.java
  47. 4
      designer-base/src/main/java/com/fr/design/preview/ViewPreview.java
  48. 4
      designer-base/src/main/java/com/fr/design/preview/WritePreview.java
  49. 2
      designer-base/src/main/java/com/fr/design/style/color/UIToolbarColorButton.java
  50. 16
      designer-base/src/main/java/com/fr/design/utils/SvgDraw.java
  51. 73
      designer-base/src/main/java/com/fr/design/utils/SvgDrawUtils.java
  52. 28
      designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java
  53. 85
      designer-base/src/main/java/com/fr/design/utils/TemplateUtils.java
  54. 14
      designer-base/src/main/java/com/fr/design/worker/save/SaveFailureHandler.java
  55. 3
      designer-base/src/main/java/com/fr/file/FileNodeFILE.java
  56. 2
      designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java
  57. 4
      designer-base/src/main/java/com/fr/startup/ui/StartupPageWorkspacePanel.java
  58. 1
      designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties
  59. 1
      designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties
  60. 1
      designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties
  61. BIN
      designer-base/src/main/resources/com/fr/design/images/control/dot-line.png
  62. BIN
      designer-base/src/main/resources/com/fr/design/images/control/down_arrow.png
  63. BIN
      designer-base/src/main/resources/com/fr/design/images/control/east_arrow.png
  64. BIN
      designer-base/src/main/resources/com/fr/design/images/control/up_arrow.png
  65. BIN
      designer-base/src/main/resources/com/fr/design/images/control/west_arrow.png
  66. BIN
      designer-base/src/main/resources/com/fr/design/images/gui/modern_style_cht_file_icon_16x16.png
  67. BIN
      designer-base/src/main/resources/com/fr/design/images/gui/modern_style_cpt_file_icon_16x16.png
  68. BIN
      designer-base/src/main/resources/com/fr/design/images/gui/modern_style_frm_file_icon_16x16.png
  69. 8
      designer-base/src/main/resources/com/fr/design/images/lookandfeel/FileIcon.svg
  70. 4
      designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg
  71. BIN
      designer-base/src/main/resources/com/fr/design/mainframe/guide/guide.png
  72. BIN
      designer-base/src/main/resources/com/fr/design/notification/ui/notificationCenter.png
  73. BIN
      designer-base/src/main/resources/com/fr/design/notification/ui/notificationCenterDot.png
  74. 0
      designer-base/src/main/resources/com/fr/design/standard/add_polysheet_normal.svg
  75. 17
      designer-base/src/main/resources/com/fr/design/standard/add_worksheet_normal.svg
  76. 4
      designer-base/src/main/resources/com/fr/design/standard/addicon/add_press.svg
  77. 3
      designer-base/src/main/resources/com/fr/design/standard/addicon/addicon_normal.svg
  78. 16
      designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_disabled.svg
  79. 14
      designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_normal.svg
  80. 3
      designer-base/src/main/resources/com/fr/design/standard/alpha_fine_normal.svg
  81. 3
      designer-base/src/main/resources/com/fr/design/standard/arrowlinear/down_arrow.svg
  82. 3
      designer-base/src/main/resources/com/fr/design/standard/arrowlinear/east_arrow.svg
  83. 3
      designer-base/src/main/resources/com/fr/design/standard/arrowlinear/up_arrow.svg
  84. 3
      designer-base/src/main/resources/com/fr/design/standard/arrowlinear/west_arrow.svg
  85. 7
      designer-base/src/main/resources/com/fr/design/standard/background_normal.svg
  86. 5
      designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_disabled.svg
  87. 3
      designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_normal.svg
  88. 5
      designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_disabled.svg
  89. 3
      designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_normal.svg
  90. 7
      designer-base/src/main/resources/com/fr/design/standard/bias/bias_disabled.svg
  91. 7
      designer-base/src/main/resources/com/fr/design/standard/bias/bias_normal.svg
  92. 7
      designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_disabled.svg
  93. 7
      designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_normal.svg
  94. 7
      designer-base/src/main/resources/com/fr/design/standard/bold/bold_normal.svg
  95. 7
      designer-base/src/main/resources/com/fr/design/standard/bold/bold_selected.svg
  96. 13
      designer-base/src/main/resources/com/fr/design/standard/cell_default_normal.svg
  97. 7
      designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_normal.svg
  98. 7
      designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_selected.svg
  99. 7
      designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_normal.svg
  100. 7
      designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_selected.svg
  101. Some files were not shown because too many files have changed in this diff Show More

12
designer-base/src/main/java/com/fr/base/svg/SVGIcon.java

@ -1,9 +1,12 @@
package com.fr.base.svg; package com.fr.base.svg;
import com.fr.design.utils.SvgDrawUtils;
import com.fr.general.IOUtils; import com.fr.general.IOUtils;
import javax.swing.*; import javax.swing.Icon;
import java.awt.*; import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
@ -34,10 +37,7 @@ public class SVGIcon implements Icon {
public void paintIcon(Component c, Graphics g, int x, int y) { public void paintIcon(Component c, Graphics g, int x, int y) {
if (HI_DPI_SURPORT) { if (HI_DPI_SURPORT) {
Graphics2D graphics = (Graphics2D) g.create(x, y, image.getWidth(null), image.getHeight(null)); Graphics2D graphics = (Graphics2D) g.create(x, y, image.getWidth(null), image.getHeight(null));
float scale = SYSTEM_SCALE; SvgDrawUtils.doDrawSVG(graphics, () -> SvgDrawUtils.drawImage(graphics, image, 0, 0, null));
graphics.scale(1 / scale, 1 / scale);
graphics.drawImage(image, 0, 0, null);
graphics.scale(1.0D, 1.0D);
graphics.dispose(); graphics.dispose();
} else { } else {
g.drawImage(image, x, y, null); g.drawImage(image, x, y, null);

2
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.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Copy"));
this.setMnemonic('C'); 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.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER));
this.setEnabled(!DesignModeContext.isBanCopyAndCut()); this.setEnabled(!DesignModeContext.isBanCopyAndCut());
} }

2
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.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Cut"));
this.setMnemonic('T'); 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.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER));
this.setEnabled(!DesignModeContext.isBanCopyAndCut()); this.setEnabled(!DesignModeContext.isBanCopyAndCut());
} }

2
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.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_M_Edit_Paste"));
this.setMnemonic('P'); 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)); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, DEFAULT_MODIFIER));
} }

2
designer-base/src/main/java/com/fr/design/actions/file/DelFileAction.java

@ -22,7 +22,7 @@ public class DelFileAction extends UpdateAction {
public DelFileAction() { public DelFileAction() {
this.setName(Toolkit.i18nText("Fine-Design_Basic_Remove")); 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 @Override

2
designer-base/src/main/java/com/fr/design/actions/file/LocateAction.java

@ -28,7 +28,7 @@ public class LocateAction extends UpdateAction {
public LocateAction() { public LocateAction() {
this.setName(Toolkit.i18nText("Fine-Design_Basic_Locate")); this.setName(Toolkit.i18nText("Fine-Design_Basic_Locate"));
this.setSmallIcon("/com/fr/design/images/FileDealerPaneIcon/locate.png"); this.setSmallIcon("/com/fr/design/standard/locate/locate");
} }
@Override @Override

3
designer-base/src/main/java/com/fr/design/actions/file/PreferenceAction.java

@ -40,7 +40,8 @@ public class PreferenceAction extends UpdateAction {
DesignerEnvManager.loadLogSetting(); DesignerEnvManager.loadLogSetting();
DesignerEnvManager.getEnvManager().saveXMLFile(); DesignerEnvManager.getEnvManager().saveXMLFile();
JTemplate jt = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); JTemplate jt = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
if (jt != null) { //不能只单纯判断!=null,JTemplate还有可能是JNullTemplate.NULL,这个时候模板也是空内容的
if (JTemplate.isValid(jt)) {
jt.refreshToolArea(); jt.refreshToolArea();
} }
preferencePane.showRestartDialog(); preferencePane.showRestartDialog();

2
designer-base/src/main/java/com/fr/design/actions/file/RenameAction.java

@ -62,7 +62,7 @@ public class RenameAction extends UpdateAction {
public RenameAction() { public RenameAction() {
this.setName(Toolkit.i18nText("Fine-Design_Basic_Rename")); 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 @Override

67
designer-base/src/main/java/com/fr/design/constants/UIConstants.java

@ -4,14 +4,13 @@
package com.fr.design.constants; package com.fr.design.constants;
import com.fr.base.svg.IconUtils; 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.general.IOUtils;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.border.Border; import javax.swing.border.Border;
import java.awt.BasicStroke; import java.awt.BasicStroke;
import java.awt.Color; import java.awt.Color;
@ -154,53 +153,55 @@ public interface UIConstants {
public static final BufferedImage DRAG_BAR = IOUtils.readImage("com/fr/design/images/control/bar.png"); 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 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 Image ARROW_NORTH = SVGLoader.load("/com/fr/design/standard/arrowlinear/up_arrow.svg");
public static final BufferedImage ARROW_SOUTH = IOUtils.readImage("com/fr/design/images/control/down_arrow.png"); public static final Image ARROW_SOUTH = SVGLoader.load("/com/fr/design/standard/arrowlinear/down_arrow.svg");
public static final BufferedImage ARROW_EAST = IOUtils.readImage("com/fr/design/images/control/east_arrow.png"); public static final Image ARROW_EAST = SVGLoader.load("/com/fr/design/standard/arrowlinear/east_arrow.svg");
public static final BufferedImage ARROW_WEST = IOUtils.readImage("com/fr/design/images/control/west_arrow.png"); 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_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_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 Image DRAG_UP_NORMAL = SVGLoader.load("/com/fr/design/standard/triangle.arrow/up_normal.svg");
public static final BufferedImage DRAG_UP_PRESS = IOUtils.readImage("com/fr/design/images/control/uppre.png"); public static final Image DRAG_UP_PRESS = SVGLoader.load("/com/fr/design/standard/triangle.arrow/up_hover.svg");
public static final BufferedImage DRAG_DOWN_NORMAL = IOUtils.readImage("com/fr/design/images/control/downnor.png"); public static final Image DRAG_DOWN_NORMAL = SVGLoader.load("/com/fr/design/standard/triangle.arrow/down_normal.svg");
public static final BufferedImage DRAG_DOWN_PRESS = IOUtils.readImage("com/fr/design/images/control/downpre.png"); public static final Image DRAG_DOWN_PRESS = SVGLoader.load("/com/fr/design/standard/triangle.arrow/down_hover.svg");
public static final BufferedImage DRAG_RIGHT_NORMAL = IOUtils.readImage("com/fr/design/images/control/rightnor.png"); public static final Image DRAG_RIGHT_NORMAL = SVGLoader.load("/com/fr/design/standard/drag/right_normal.svg");
public static final BufferedImage DRAG_RIGHT_PRESS = IOUtils.readImage("com/fr/design/images/control/rightpre.png"); public static final Image DRAG_RIGHT_PRESS = SVGLoader.load("/com/fr/design/standard/drag/right_pressed.svg");
public static final BufferedImage DRAG_LEFT_NORMAL = IOUtils.readImage("com/fr/design/images/control/leftnor.png"); public static final Image DRAG_LEFT_NORMAL = SVGLoader.load("/com/fr/design/standard/drag/left_normal.svg");
public static final BufferedImage DRAG_LEFT_PRESS = IOUtils.readImage("com/fr/design/images/control/leftpre.png"); 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_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_normal.svg");
public static final BufferedImage ACCESSIBLE_EDITOR_DOT = IOUtils.readImage("com/fr/design/images/control/dot.png"); 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 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 Image POP_BUTTON_DOWN = SVGLoader.load("/com/fr/design/standard/poparrow/pop_down_arrow.svg");
public static final BufferedImage POP_BUTTON_UP = IOUtils.readImage("com/fr/design/images/buttonicon/popuparrow.png"); 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_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 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 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_NORMAL = 0;
public static final int MODEL_PRESS = 1; 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 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 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 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_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 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_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit");
public static final Icon EDIT_PRESSED_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/editp.png"); public static final Icon EDIT_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/edit_pressed.svg");
public static final Icon HIDE_NORMAL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/hiden.png"); public static final Icon HIDE_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide");
public static final Icon HIDE_PRESSED_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/hidep.png"); public static final Icon HIDE_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/hide_pressed.svg");
public static final Icon VIEW_NORMAL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/viewn.png"); public static final Icon VIEW_NORMAL_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/view");
public static final Icon VIEW_PRESSED_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/viewp.png"); //public static final Icon VIEW_PRESSED_ICON = IconUtils.readIcon("/com/fr/design/standard/uimode/view");
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 RUN_BIG_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/run24.svg");
public static final Icon PAGE_BIG_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/pageb24.png"); public static final Icon RUN_SMALL_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/runs.svg");
public static final Icon WRITE_BIG_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/writeb24.png"); public static final Icon PAGE_BIG_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/pageb24.svg");
public static final Icon ANA_BIG_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/anab24.png"); public static final Icon WRITE_BIG_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/writeb24.svg");
public static final Icon PAGE_SMALL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/pages.png"); public static final Icon ANA_BIG_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/anab24.svg");
public static final Icon WRITE_SMALL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/writes.png"); public static final Icon PAGE_SMALL_ICON = IconUtils.readIcon("/com/fr/design/standard/preview/pages.svg");
public static final Icon ANA_SMALL_ICON = IOUtils.readIcon("com/fr/design/images/buttonicon/anas.png"); 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 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 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"); public static final Icon AUTO_FONT_ICON = IOUtils.readIcon("/com/fr/design/images/gui/color/autoForeground.png");
@ -220,7 +221,7 @@ public interface UIConstants {
public static final int BUTTON_GROUP_ARC = 0; public static final int BUTTON_GROUP_ARC = 0;
public static final int LARGEARC = 6; 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 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_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_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"); public static final Icon CLOSE_PRESS_AUTHORITY = IOUtils.readIcon("/com/fr/design/images/m_report/close_press.png");

7
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.BaseUtils;
import com.fr.base.TableData; import com.fr.base.TableData;
import com.fr.base.svg.IconUtils;
import com.fr.data.MultiResultTableData; import com.fr.data.MultiResultTableData;
import com.fr.data.TableDataSource; import com.fr.data.TableDataSource;
import com.fr.design.DesignModelAdapter; import com.fr.design.DesignModelAdapter;
@ -114,7 +115,7 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp
*/ */
@Override @Override
public Icon getViewIcon() { 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) { public PreviewTableDataAction(TableDataTree dataTree) {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview")); this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Preview"));
this.setMnemonic('p'); this.setMnemonic('p');
this.setSmallIcon("/com/fr/design/images/m_file/preview"); this.setSmallIcon("/com/fr/design/standard/previewdateset/preview");
this.dataTree = dataTree; this.dataTree = dataTree;
} }
@ -463,7 +464,7 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp
public ConnectionTableAction() { public ConnectionTableAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Server_Define_Data_Connection")); this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Server_Define_Data_Connection"));
this.setMnemonic('D'); this.setMnemonic('D');
this.setSmallIcon("/com/fr/design/images/m_web/connection"); this.setSmallIcon("/com/fr/design/standard/connection", false);
} }
@Override @Override

28
designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java

@ -33,33 +33,33 @@ public class TableDataCreatorProducer {
public TableDataNameObjectCreator[] createReportTableDataCreator() { public TableDataNameObjectCreator[] createReportTableDataCreator() {
TableDataNameObjectCreator dataBase = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Database_Query"), TableDataNameObjectCreator dataBase = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Database_Query"),
"ds", "ds",
"/com/fr/design/images/data/database.png", 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"), TableDataNameObjectCreator ds_Class = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Class"),
"Class", "Class",
"/com/fr/design/images/data/source/classTableData.png", 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"), TableDataNameObjectCreator table = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Embedded"),
"Embedded", "Embedded",
"/com/fr/design/images/data/dataTable.png", 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"), TableDataNameObjectCreator multiTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Relation"),
"Multi", "Multi",
"/com/fr/design/images/data/multi.png", ConditionTableData.class, MultiTDTableDataPane.class) { "/com/fr/design/standard/multi_normal.svg", ConditionTableData.class, MultiTDTableDataPane.class) {
public boolean isNeedParameterWhenPopulateJControlPane() { public boolean isNeedParameterWhenPopulateJControlPane() {
return true; return true;
} }
}; };
TableDataNameObjectCreator fileTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_File"), TableDataNameObjectCreator fileTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_File"),
"File", "File",
"/com/fr/design/images/data/file.png", 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"), TableDataNameObjectCreator treeTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Tree"),
"Tree", "Tree",
"/com/fr/design/images/data/tree.png", RecursionTableData.class, TreeTableDataPane.class) { "/com/fr/design/standard/tree_normal.svg", RecursionTableData.class, TreeTableDataPane.class) {
public boolean isNeedParameterWhenPopulateJControlPane() { public boolean isNeedParameterWhenPopulateJControlPane() {
return true; return true;
} }
}; };
TableDataNameObjectCreator storeProcedure = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Stored_Procedure"), TableDataNameObjectCreator storeProcedure = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Stored_Procedure"),
"Proc", "Proc",
"/com/fr/design/images/data/store_procedure.png", "/com/fr/design/standard/store_procedure_normal.svg",
StoreProcedure.class, ProcedureDataPane.class) { StoreProcedure.class, ProcedureDataPane.class) {
@Override @Override
public boolean shouldInsertSeparator() { public boolean shouldInsertSeparator() {
@ -72,33 +72,33 @@ public class TableDataCreatorProducer {
public TableDataNameObjectCreator[] createServerTableDataCreator() { public TableDataNameObjectCreator[] createServerTableDataCreator() {
TableDataNameObjectCreator dataBase = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_DS_Database_Query"), 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_normal.svg", DBTableData.class,
DBTableDataPane.class); DBTableDataPane.class);
TableDataNameObjectCreator ds_Class = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_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_normal.svg", ClassTableData.class,
ClassTableDataPane.class); ClassTableDataPane.class);
TableDataNameObjectCreator table = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Embedded"), 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_normal.svg", EmbeddedTableData.class,
EmbeddedTableDataPane.class); EmbeddedTableDataPane.class);
TableDataNameObjectCreator fileTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_File"), 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_normal.svg", FileTableData.class,
FileTableDataSmallPane.class); FileTableDataSmallPane.class);
TableDataNameObjectCreator treeTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Tree"), 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_normal.svg",
RecursionTableData.class, GlobalTreeTableDataPane.class) { RecursionTableData.class, GlobalTreeTableDataPane.class) {
public boolean isNeedParameterWhenPopulateJControlPane() { public boolean isNeedParameterWhenPopulateJControlPane() {
return true; return true;
} }
}; };
TableDataNameObjectCreator multiTable = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Relation"), 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_normal.svg",
ConditionTableData.class, GlobalMultiTDTableDataPane.class) { ConditionTableData.class, GlobalMultiTDTableDataPane.class) {
public boolean isNeedParameterWhenPopulateJControlPane() { public boolean isNeedParameterWhenPopulateJControlPane() {
return true; return true;
} }
}; };
TableDataNameObjectCreator storeProcedure = new TableDataNameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tabledata_Type_Stored_Procedure"), 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_normal.svg",
StoreProcedure.class, ProcedureDataPane.class) { StoreProcedure.class, ProcedureDataPane.class) {
@Override @Override
public boolean shouldInsertSeparator() { public boolean shouldInsertSeparator() {

12
designer-base/src/main/java/com/fr/design/data/datapane/TableDataNameObjectCreator.java

@ -1,6 +1,8 @@
package com.fr.design.data.datapane; package com.fr.design.data.datapane;
import com.fr.base.BaseUtils; 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.data.impl.DBTableData;
import com.fr.design.actions.tabledata.TableDataAction; import com.fr.design.actions.tabledata.TableDataAction;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
@ -39,7 +41,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator {
public TableDataNameObjectCreator(TableDataAction action) { public TableDataNameObjectCreator(TableDataAction action) {
super(action.getDisplayName(), action.getIconPath(), action.getTableDataClass(), action.getUpdateTableDataPaneClass()); super(action.getDisplayName(), action.getIconPath(), action.getTableDataClass(), action.getUpdateTableDataPaneClass());
this.iconPath = action.getIconPath(); this.iconPath = action.getIconPath();
menuImage = BaseUtils.readImage(iconPath); menuImage = SVGLoader.load(iconPath);
isNeedInsertSeparator = action.isNeedInsertSeparator(); isNeedInsertSeparator = action.isNeedInsertSeparator();
prefix = action.getPrefix(); prefix = action.getPrefix();
} }
@ -54,7 +56,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator {
super(menuName, iconPath, clazz, updatePane); super(menuName, iconPath, clazz, updatePane);
if (iconPath != null) { if (iconPath != null) {
this.iconPath = iconPath; 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); super(menuName, iconPath, clazz, updatePane);
if (iconPath != null) { if (iconPath != null) {
this.iconPath = iconPath; this.iconPath = iconPath;
menuImage = BaseUtils.readImage(iconPath); menuImage = SVGLoader.load(iconPath);
} }
this.prefix = prefix; this.prefix = prefix;
} }
@ -71,7 +73,7 @@ public class TableDataNameObjectCreator extends NameObjectCreator {
super(menuName, iconPath, clazz, clazz4Init, updatePane); super(menuName, iconPath, clazz, clazz4Init, updatePane);
if (iconPath != null) { if (iconPath != null) {
this.iconPath = iconPath; 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); super(menuName, iconPath, clazz, clazz4Init, updatePane);
if (iconPath != null) { if (iconPath != null) {
this.iconPath = iconPath; this.iconPath = iconPath;
menuImage = BaseUtils.readImage(iconPath); menuImage = SVGLoader.load(iconPath);
} }
this.prefix = prefix; this.prefix = prefix;
} }

13
designer-base/src/main/java/com/fr/design/data/datapane/TableDataTree.java

@ -1,10 +1,9 @@
package com.fr.design.data.datapane; 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.data.MultiResultTableData;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.data.datapane.management.search.TableDataTreeSearchManager; 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.data.tabledata.wrapper.TableDataWrapper;
import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode; import com.fr.design.gui.itree.refreshabletree.ExpandMutableTreeNode;
import com.fr.design.gui.itree.refreshabletree.UserObjectRefreshJTree; import com.fr.design.gui.itree.refreshabletree.UserObjectRefreshJTree;
@ -55,7 +54,7 @@ public class TableDataTree extends UserObjectRefreshJTree<TableDataSourceOP> {
Object userObj = treeNode.getUserObject(); Object userObj = treeNode.getUserObject();
if (userObj instanceof String) { if (userObj instanceof String) {
// p:这个是column field. // p:这个是column field.
this.setIcon(BaseUtils.readIcon("com/fr/design/images/data/field.png")); this.setIcon(IconUtils.readIcon("/com/fr/design/standard/field"));
this.setText((String) userObj); this.setText((String) userObj);
} else if (userObj instanceof NameObject) { } else if (userObj instanceof NameObject) {
NameObject nameObject = (NameObject) userObj; NameObject nameObject = (NameObject) userObj;
@ -66,14 +65,14 @@ public class TableDataTree extends UserObjectRefreshJTree<TableDataSourceOP> {
} else if (nameObject.getObject() instanceof Integer) { } else if (nameObject.getObject() instanceof Integer) {
int num = (Integer) nameObject.getObject(); int num = (Integer) nameObject.getObject();
if (num == TableDataSourceOP.SERVER_TABLE_DATA) { 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) { } 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 { } else {
this.setIcon(BaseUtils.readIcon(IconPathConstants.DS_QUERY_ICON_PATH)); this.setIcon(IconUtils.readIcon(IconPathConstants.DS_QUERY_ICON_PATH));
} }
} else { } 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) { } else if (userObj == PENDING) {
this.setIcon(null); this.setIcon(null);

14
designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java

@ -229,7 +229,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
private TreeSearchToolbarPane initToolBarPane() { private TreeSearchToolbarPane initToolBarPane() {
// toolbar // toolbar
addMenuDef = new MenuDef(Toolkit.i18nText("Fine-Design_Basic_Action_Add")); addMenuDef = new MenuDef(Toolkit.i18nText("Fine-Design_Basic_Action_Add"));
addMenuDef.setIconPath("/com/fr/design/images/control/addPopup"); addMenuDef.setDisabledIcon("/com/fr/design/standard/addpopup/addPopup", true);
createAddMenuDef(); createAddMenuDef();
// 创建插件监听 // 创建插件监听
createPluginListener(); createPluginListener();
@ -895,7 +895,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
@Override @Override
public String getIconResource() { public String getIconResource() {
return "/com/fr/design/images/control/batch_esd_on"; return "/com/fr/design/standard/batchesdon/batch_esd_on";
} }
@Override @Override
@ -942,7 +942,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
@Override @Override
public String getIconResource() { public String getIconResource() {
return "/com/fr/design/images/control/batch_esd_off"; return "/com/fr/design/standard/batchesdoff/batch_esd_off";
} }
@Override @Override
@ -1036,7 +1036,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
public EditAction() { public EditAction() {
this.setName(Toolkit.i18nText("Fine-Design_Basic_Edit")); this.setName(Toolkit.i18nText("Fine-Design_Basic_Edit"));
this.setMnemonic('E'); this.setMnemonic('E');
this.setSmallIcon("/com/fr/design/images/control/edit"); this.setSmallIcon("/com/fr/design/standard/editdataset/edit");
} }
@Override @Override
@ -1101,7 +1101,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
public RemoveAction() { public RemoveAction() {
this.setName(Toolkit.i18nText("Fine-Design_Basic_Remove")); this.setName(Toolkit.i18nText("Fine-Design_Basic_Remove"));
this.setMnemonic('R'); this.setMnemonic('R');
this.setSmallIcon("/com/fr/design/images/control/remove"); this.setSmallIcon("/com/fr/design/standard/remove/remove");
} }
@Override @Override
@ -1177,7 +1177,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
public CopyAction() { public CopyAction() {
this.setName(Toolkit.i18nText("Fine-Design_Basic_Copy")); this.setName(Toolkit.i18nText("Fine-Design_Basic_Copy"));
this.setMnemonic('C'); this.setMnemonic('C');
this.setSmallIcon("/com/fr/design/images/m_edit/copy"); this.setSmallIcon("/com/fr/design/standard/copy/copy");
} }
@Override @Override
@ -1227,7 +1227,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
public SwitchAction() { public SwitchAction() {
this.setName(Toolkit.i18nText("Fine-Design_Basic_Search")); this.setName(Toolkit.i18nText("Fine-Design_Basic_Search"));
this.setMnemonic('S'); this.setMnemonic('S');
this.setSmallIcon("/com/fr/design/images/data/search"); this.setSmallIcon("/com/fr/design/standard/search", false);
} }
@Override @Override

3
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 com.fr.stable.ArrayUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.ToolTipManager; import javax.swing.ToolTipManager;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
@ -109,6 +110,8 @@ public class ConnectionTableProcedurePane extends BasicPane {
if (parent != null) { if (parent != null) {
parent.switchTo(SwitchableTableDataPane.CONTENT_PANE_NAME); parent.switchTo(SwitchableTableDataPane.CONTENT_PANE_NAME);
} }
DefaultComboBoxModel model = ((DefaultComboBoxModel) itemComboBox.getModel());
model.removeElement(EMPTY);
} }
@Override @Override

4
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.setBorder(BorderFactory.createLineBorder(UIConstants.TOOLBAR_BORDER_COLOR));
searchPane.setBackground(Color.WHITE); 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"));
searchLabel.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0)); searchLabel.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0));
searchLabel.addMouseListener(new MouseAdapter() { searchLabel.addMouseListener(new MouseAdapter() {
@Override @Override
@ -149,7 +149,7 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha
}); });
this.searchTextField.addKeyListener(enterPressed); 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"));
returnLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Tree_Search_Return")); returnLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Tree_Search_Return"));
returnLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 11)); returnLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 11));
returnLabel.addMouseListener(new MouseAdapter() { returnLabel.addMouseListener(new MouseAdapter() {

15
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.UITableEditAction;
import com.fr.design.gui.itableeditorpane.UITableEditorPane; import com.fr.design.gui.itableeditorpane.UITableEditorPane;
import com.fr.design.gui.itableeditorpane.UITableModelAdapter; import com.fr.design.gui.itableeditorpane.UITableModelAdapter;
import com.fr.design.i18n.DesignSizeI18nManager;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.collections.CollectionUtils; import com.fr.stable.collections.CollectionUtils;
@ -25,6 +26,7 @@ import javax.swing.table.TableCellRenderer;
import java.awt.CardLayout; import java.awt.CardLayout;
import java.awt.Color; import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
@ -177,6 +179,15 @@ public class DesensitizationRuleChoosePane extends JPanel {
.collect(Collectors.toSet()); .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() { public void doCancel() {
super.doCancel(); super.doCancel();
} }
}, BasicDialog.DEFAULT); }, getRuleEditPaneDimensionByLocale());
basicDialog.setVisible(true); basicDialog.setVisible(true);
} }
} }
@ -301,7 +312,7 @@ public class DesensitizationRuleChoosePane extends JPanel {
public void doCancel() { public void doCancel() {
super.doCancel(); super.doCancel();
} }
}, BasicDialog.DEFAULT); }, getRuleEditPaneDimensionByLocale());
basicDialog.setVisible(true); basicDialog.setVisible(true);
} }
} }

8
designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/MultiResultTableDataWrapperHelper.java

@ -1,6 +1,7 @@
package com.fr.design.data.tabledata.wrapper; package com.fr.design.data.tabledata.wrapper;
import com.fr.base.TableData; import com.fr.base.TableData;
import com.fr.base.svg.IconUtils;
import com.fr.design.data.datapane.TableDataCreatorProducer; import com.fr.design.data.datapane.TableDataCreatorProducer;
import com.fr.design.data.datapane.TableDataNameObjectCreator; import com.fr.design.data.datapane.TableDataNameObjectCreator;
import com.fr.design.fun.ServerTableDataDefineProvider; import com.fr.design.fun.ServerTableDataDefineProvider;
@ -8,7 +9,6 @@ import com.fr.design.fun.TableDataDefineProvider;
import com.fr.event.Event; import com.fr.event.Event;
import com.fr.event.EventDispatcher; import com.fr.event.EventDispatcher;
import com.fr.event.Listener; import com.fr.event.Listener;
import com.fr.general.IOUtils;
import com.fr.plugin.context.PluginContext; import com.fr.plugin.context.PluginContext;
import com.fr.plugin.observer.PluginEventType; import com.fr.plugin.observer.PluginEventType;
import com.fr.stable.Filter; import com.fr.stable.Filter;
@ -25,7 +25,7 @@ import java.util.Map;
*/ */
class MultiResultTableDataWrapperHelper { class MultiResultTableDataWrapperHelper {
private static final Map<Class<? extends TableData>, Icon> TABLE_DATA_ICON_PATHS = new HashMap<>(); private static final Map<Class<? extends TableData>, 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";
static { static {
@ -45,10 +45,10 @@ class MultiResultTableDataWrapperHelper {
return TABLE_DATA_ICON_PATHS.computeIfAbsent(tableDataClass, cls -> { return TABLE_DATA_ICON_PATHS.computeIfAbsent(tableDataClass, cls -> {
for (TableDataNameObjectCreator creator : TableDataCreatorProducer.getInstance().createReportTableDataCreator()) { for (TableDataNameObjectCreator creator : TableDataCreatorProducer.getInstance().createReportTableDataCreator()) {
if (creator.createObject().getClass().isAssignableFrom(tableDataClass)) { 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);
}); });
} }
} }

22
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.BaseUtils;
import com.fr.base.TableData; 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.ClassTableData;
import com.fr.data.impl.DBTableData; import com.fr.data.impl.DBTableData;
import com.fr.data.impl.EmbeddedTableData; import com.fr.data.impl.EmbeddedTableData;
@ -24,20 +26,22 @@ public final class ServerTableDataWrapper extends AbstractTableDataWrapper {
@Override @Override
public Icon getIcon() { public Icon getIcon() {
if (tabledata instanceof DBTableData) { if (tabledata instanceof DBTableData) {
if (StringUtils.isBlank(((DBTableData) tabledata).getQuery())) 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_normal.svg"));
else }
return BaseUtils.readIcon("/com/fr/design/images/data/dock/serverdatabase.png"); else {
return IconUtils.readIcon("/com/fr/design/standard/server_database");
}
} else if (tabledata instanceof ClassTableData) { } 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");
} else if (tabledata instanceof EmbeddedTableData) { } 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");
}else if(tabledata instanceof RecursionTableData){ }else if(tabledata instanceof RecursionTableData){
return BaseUtils.readIcon("/com/fr/design/images/data/tree.png"); return IconUtils.readIcon("/com/fr/design/standard/tree");
} else if (tabledata instanceof StoreProcedure) { } 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");
} }
return BaseUtils.readIcon("/com/fr/design/images/data/dock/serverdatabase.png"); return IconUtils.readIcon("/com/fr/design/standard/server_database");
} }
/** /**

4
designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureDataWrapper.java

@ -1,7 +1,7 @@
package com.fr.design.data.tabledata.wrapper; package com.fr.design.data.tabledata.wrapper;
import com.fr.base.BaseUtils;
import com.fr.base.TableData; import com.fr.base.TableData;
import com.fr.base.svg.IconUtils;
import com.fr.data.impl.storeproc.ProcedureDataModel; import com.fr.data.impl.storeproc.ProcedureDataModel;
import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.data.impl.storeproc.StoreProcedure;
import com.fr.data.operator.DataOperator; import com.fr.data.operator.DataOperator;
@ -150,7 +150,7 @@ public final class StoreProcedureDataWrapper implements TableDataWrapper {
@Override @Override
public Icon getIcon() { public Icon getIcon() {
return BaseUtils.readIcon("/com/fr/design/images/data/store_procedure.png"); return IconUtils.readIcon("/com/fr/design/standard/store_procedure");
} }
/** /**

4
designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/StoreProcedureNameWrapper.java

@ -1,7 +1,7 @@
package com.fr.design.data.tabledata.wrapper; package com.fr.design.data.tabledata.wrapper;
import com.fr.base.BaseUtils;
import com.fr.base.TableData; import com.fr.base.TableData;
import com.fr.base.svg.IconUtils;
import com.fr.data.impl.storeproc.ProcedureDataModel; import com.fr.data.impl.storeproc.ProcedureDataModel;
import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.data.impl.storeproc.StoreProcedure;
import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.DesignTableDataManager;
@ -71,7 +71,7 @@ public final class StoreProcedureNameWrapper implements TableDataWrapper {
@Override @Override
public Icon getIcon() { public Icon getIcon() {
return BaseUtils.readIcon("/com/fr/design/images/data/store_procedure.png"); return IconUtils.readIcon("/com/fr/design/standard/store_procedure");
} }
private void createStore(boolean needLoadingBar) { private void createStore(boolean needLoadingBar) {

20
designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java

@ -55,15 +55,15 @@ public abstract class TableDataFactory {
* 同一类型的只能加一次,就加最上层的类,因为要排序如果将所有的 FileTableData都加进来那么FileTableData的排序就不正确了 * 同一类型的只能加一次,就加最上层的类,因为要排序如果将所有的 FileTableData都加进来那么FileTableData的排序就不正确了
*/ */
static { static {
defaultMap.put(DBTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/images/data/database.png", DBTableData.class, DBTableDataPane.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/images/data/source/classTableData.png", ClassTableData.class, ClassTableDataPane.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/images/data/dataTable.png", EmbeddedTableData.class, EmbeddedTableDataPane.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/images/data/multi.png", DecoratedTableData.class, DecoratedTableDataPane.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/images/data/multi.png", MultiTDTableData.class, MultiTDTableDataPane.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/images/data/file.png", FileTableData.class, FileTableDataPane.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/images/data/tree.png", RecursionTableData.class, TreeTableDataPane.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/images/data/database.png", MultiFieldTableData.class, null)); defaultMap.put(MultiFieldTableData.class.getName(), new TableDataNameObjectCreator(null, "/com/fr/design/standard/database_normal.svg", MultiFieldTableData.class, null));
map.putAll(defaultMap); map.putAll(defaultMap);
} }
@ -151,7 +151,7 @@ public abstract class TableDataFactory {
if (tableDataNameObjectCreator != null && tableDataNameObjectCreator.getIconPath() != null) { if (tableDataNameObjectCreator != null && tableDataNameObjectCreator.getIconPath() != null) {
return tableDataNameObjectCreator.getIconPath(); return tableDataNameObjectCreator.getIconPath();
} }
return "/com/fr/design/images/data/database.png"; return "/com/fr/design/standard/database_normal.svg";
} }
/** /**

7
designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TemplateTableDataWrapper.java

@ -2,8 +2,9 @@ package com.fr.design.data.tabledata.wrapper;
import javax.swing.Icon; import javax.swing.Icon;
import com.fr.base.BaseUtils;
import com.fr.base.TableData; 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.data.impl.DBTableData;
import com.fr.design.icon.WarningIcon; import com.fr.design.icon.WarningIcon;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
@ -20,9 +21,9 @@ public final class TemplateTableDataWrapper extends AbstractTableDataWrapper {
@Override @Override
public Icon getIcon() { public Icon getIcon() {
if (tabledata instanceof DBTableData && StringUtils.isBlank(((DBTableData) tabledata).getQuery())) { 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_normal.svg"));
} }
return BaseUtils.readIcon(TableDataFactory.getIconPath(tabledata)); return IconUtils.readIcon(TableDataFactory.getIconPath(tabledata));
} }
@Override @Override

2
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() { private void initContentPane() {
this.contentPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); this.contentPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
// error图标 // 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.setPreferredSize(LABEL);
errorLabel.setBorder(BorderFactory.createEmptyBorder(10, 20, 40, 20)); errorLabel.setBorder(BorderFactory.createEmptyBorder(10, 20, 40, 20));
// 提示内容 // 提示内容

22
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.BaseUtils;
import com.fr.base.GraphHelper; import com.fr.base.GraphHelper;
import com.fr.base.svg.IconUtils;
import com.fr.base.vcs.DesignerMode; import com.fr.base.vcs.DesignerMode;
import com.fr.design.actions.UpdateAction; import com.fr.design.actions.UpdateAction;
import com.fr.design.actions.file.LocateAction; import com.fr.design.actions.file.LocateAction;
@ -85,12 +86,12 @@ import static javax.swing.JOptionPane.WARNING_MESSAGE;
**/ **/
public class MultiTemplateTabPane extends JComponent { public class MultiTemplateTabPane extends JComponent {
private static Icon LIST_DOWN = BaseUtils.readIcon("/com/fr/design/images/buttonicon/list_normal.png"); private static Icon LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list");
private static Icon MOUSE_OVER_LIST_DOWN = BaseUtils.readIcon("/com/fr/design/images/buttonicon/list_pressed.png"); private static Icon MOUSE_OVER_LIST_DOWN = IconUtils.readIcon("/com/fr/design/standard/list/list_pressed.svg");
private static Icon MOUSE_PRESS_LIST_DOWN = BaseUtils.readIcon("/com/fr/design/images/buttonicon/list_pressed.png"); 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 CLOSE = IconUtils.readIcon("/com/fr/design/standard/close/close");
private static Icon MOUSE_OVER_CLOSE = BaseUtils.readIcon("/com/fr/design/images/buttonicon/mouseoverclose icon.png"); private static Icon MOUSE_OVER_CLOSE = IconUtils.readIcon("/com/fr/design/standard/close/close_mouseover.svg");
private static Icon MOUSE_PRESS_CLOSE = BaseUtils.readIcon("/com/fr/design/images/buttonicon/pressclose icon.png"); 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 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 Icon GREY_SAVING_CLOSE_ICON = new ImageIcon(IOUtils.readImage("/com/fr/design/images/file/grey_saving_close.gif"));
private static final String ELLIPSIS = "..."; private static final String ELLIPSIS = "...";
@ -1171,6 +1172,10 @@ public class MultiTemplateTabPane extends JComponent {
return; return;
} }
} }
//参考CloseCurrentTemplateAction,在closeFormat与closeSpecifiedTemplate之前要先设定isCloseCurrent,这样关闭之后才会自动切换tab
if (checkCurrentClose(template)) {
setIsCloseCurrent(true);
}
closeFormat(template); closeFormat(template);
closeSpecifiedTemplate(template); closeSpecifiedTemplate(template);
DesignerContext.getDesignerFrame().getContentFrame().repaint(); DesignerContext.getDesignerFrame().getContentFrame().repaint();
@ -1204,6 +1209,11 @@ public class MultiTemplateTabPane extends JComponent {
} }
private boolean checkCurrentClose(JTemplate template) {
JTemplate currentTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
return JTemplate.isValid(currentTemplate) && ComparatorUtils.equals(template.getPath(), currentTemplate.getPath());
}
private class MultiTemplateTabMouseMotionListener implements MouseMotionListener { private class MultiTemplateTabMouseMotionListener implements MouseMotionListener {
/** /**
* 鼠标拖拽 * 鼠标拖拽

3
designer-base/src/main/java/com/fr/design/gui/UILookAndFeel.java

@ -1,5 +1,6 @@
package com.fr.design.gui; package com.fr.design.gui;
import com.fr.base.svg.IconUtils;
import com.fr.design.gui.borders.UIFrameBorder; import com.fr.design.gui.borders.UIFrameBorder;
import com.fr.design.gui.borders.UIInternalFrameBorder; import com.fr.design.gui.borders.UIInternalFrameBorder;
import com.fr.design.gui.borders.UITableHeaderBorder; import com.fr.design.gui.borders.UITableHeaderBorder;
@ -163,7 +164,7 @@ public class UILookAndFeel extends MetalLookAndFeel {
table.put("Tree.leafIcon", loadIcon("TreeLeafIcon.png", this)); table.put("Tree.leafIcon", loadIcon("TreeLeafIcon.png", this));
table.put("FileView.directoryIcon", loadIcon("DirectoryIcon.png", this)); table.put("FileView.directoryIcon", loadIcon("DirectoryIcon.png", this));
table.put("FileView.computerIcon", loadIcon("ComputerIcon.png", this)); table.put("FileView.computerIcon", loadIcon("ComputerIcon.png", this));
table.put("FileView.fileIcon", loadIcon("FileIcon.png", 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.floppyDriveIcon", loadIcon("FloppyIcon.png", this));
table.put("FileView.hardDriveIcon", loadIcon("HarddiskIcon.png", this)); table.put("FileView.hardDriveIcon", loadIcon("HarddiskIcon.png", this));
table.put("FileChooser.detailsViewIcon", loadIcon("FileDetailsIcon.png", this)); table.put("FileChooser.detailsViewIcon", loadIcon("FileDetailsIcon.png", this));

7
designer-base/src/main/java/com/fr/design/gui/controlpane/AbstractNameableCreator.java

@ -1,6 +1,7 @@
package com.fr.design.gui.controlpane; package com.fr.design.gui.controlpane;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.base.svg.IconUtils;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.NameObject; import com.fr.general.NameObject;
@ -25,14 +26,14 @@ public abstract class AbstractNameableCreator implements NameableCreator {
public AbstractNameableCreator(String menuName, String iconPath, Class clazz) { public AbstractNameableCreator(String menuName, String iconPath, Class clazz) {
this.menuName = menuName; this.menuName = menuName;
this.menuIcon = BaseUtils.readIcon(iconPath); this.menuIcon = IconUtils.readIcon(iconPath);
this.clazzOfObject = clazz; this.clazzOfObject = clazz;
this.clazzOfInitCase = clazz; this.clazzOfInitCase = clazz;
} }
public AbstractNameableCreator(String menuName, String iconPath, Class clazz, Class<? extends BasicBeanPane> clazzOfEditor) { public AbstractNameableCreator(String menuName, String iconPath, Class clazz, Class<? extends BasicBeanPane> clazzOfEditor) {
this.menuName = menuName; this.menuName = menuName;
this.menuIcon = BaseUtils.readIcon(iconPath); this.menuIcon = IconUtils.readIcon(iconPath);
this.clazzOfObject = clazz; this.clazzOfObject = clazz;
this.clazzOfEditor = clazzOfEditor; this.clazzOfEditor = clazzOfEditor;
this.clazzOfInitCase = clazz; this.clazzOfInitCase = clazz;
@ -40,7 +41,7 @@ public abstract class AbstractNameableCreator implements NameableCreator {
public AbstractNameableCreator(String menuName, String iconPath, Class clazz, Class clazz4Init, Class<? extends BasicBeanPane> clazzOfEditor) { public AbstractNameableCreator(String menuName, String iconPath, Class clazz, Class clazz4Init, Class<? extends BasicBeanPane> clazzOfEditor) {
this.menuName = menuName; this.menuName = menuName;
this.menuIcon = BaseUtils.readIcon(iconPath); this.menuIcon = IconUtils.readIcon(iconPath);
this.clazzOfObject = clazz; this.clazzOfObject = clazz;
this.clazzOfEditor = clazzOfEditor; this.clazzOfEditor = clazzOfEditor;
this.clazzOfInitCase = clazz; this.clazzOfInitCase = clazz;

18
designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java

@ -5,10 +5,21 @@ import com.fr.design.base.mode.DesignModeContext;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.utils.SvgDrawUtils;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.*; import javax.swing.JComponent;
import java.awt.*; 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.Image;
import java.awt.LayoutManager;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener; import java.awt.event.MouseMotionListener;
@ -313,7 +324,6 @@ public class UIEastResizableContainer extends JPanel {
@Override @Override
public void paint(Graphics g) { public void paint(Graphics g) {
Image button; Image button;
if (containerWidth == leftPaneWidth) { if (containerWidth == leftPaneWidth) {
if (model == UIConstants.MODEL_NORMAL) { if (model == UIConstants.MODEL_NORMAL) {
button = UIConstants.DRAG_LEFT_NORMAL; button = UIConstants.DRAG_LEFT_NORMAL;
@ -327,7 +337,7 @@ public class UIEastResizableContainer extends JPanel {
button = UIConstants.DRAG_RIGHT_PRESS; button = UIConstants.DRAG_RIGHT_PRESS;
} }
} }
g.drawImage(button, 18, 7, 5, 10, null); SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, button, 10, 7, null));
} }
} }
} }

2
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)); setLayout(new FlowLayout(FlowLayout.CENTER, 10, -3));
setBackground(UIConstants.NORMAL_BACKGROUND); setBackground(UIConstants.NORMAL_BACKGROUND);
add(new UILabel("<html><font size='5' face='Microsoft YaHei' color='#999999999'><B>" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Parameter_Panel") + "</B></font></html>")); add(new UILabel("<html><font size='5' face='Microsoft YaHei' color='#999999999'><B>" + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Parameter_Panel") + "</B></font></html>"));
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 @Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
return new Dimension(32, 32); return new Dimension(32, 32);

29
designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java

@ -3,11 +3,22 @@ package com.fr.design.gui.icontainer;
import com.fr.base.vcs.DesignerMode; import com.fr.base.vcs.DesignerMode;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.stable.Constants; import com.fr.design.utils.SvgDrawUtils;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.stable.Constants;
import javax.swing.*; import javax.swing.JComponent;
import java.awt.*; 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.Image;
import java.awt.LayoutManager;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener; import java.awt.event.MouseMotionListener;
@ -406,13 +417,13 @@ public class UIResizableContainer extends JPanel {
@Override @Override
public void paint(Graphics g) { public void paint(Graphics g) {
Image upButton = (upModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_UP_NORMAL : UIConstants.DRAG_UP_PRESS); 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); 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); g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null);
g.drawImage(UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, toolPaneHeight, 5, null); SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, null));
g.drawImage(upButton, ARROW_MARGIN, 3, toolPaneHeight, 5, null); SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, upButton, ARROW_MARGIN, 0, null));
g.drawImage(downButton, getWidth() - toolPaneHeight - ARROW_MARGIN, 3, toolPaneHeight, 5, null); SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, downButton, (getWidth() - toolPaneHeight - ARROW_MARGIN), 0, null));
} }
} }
@ -509,7 +520,7 @@ public class UIResizableContainer extends JPanel {
button = UIConstants.DRAG_LEFT_PRESS; button = UIConstants.DRAG_LEFT_PRESS;
} }
} }
g.drawImage(button, 3, ARROW_MARGIN_VERTICAL, 5, toolPaneHeight, null); SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, button, -6, ARROW_MARGIN_VERTICAL, VerticalToolPane.this));
} else { } else {
g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null); g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null);
if (containerWidth == toolPaneHeight) { if (containerWidth == toolPaneHeight) {
@ -525,7 +536,7 @@ public class UIResizableContainer extends JPanel {
button = UIConstants.DRAG_RIGHT_PRESS; button = UIConstants.DRAG_RIGHT_PRESS;
} }
} }
g.drawImage(button, 2, ARROW_MARGIN_VERTICAL, 5, toolPaneHeight, null); SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, button, 10, ARROW_MARGIN_VERTICAL, VerticalToolPane.this));
} }
if (isLeftRightDragEnabled) { if (isLeftRightDragEnabled) {
g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null); g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null);

5
designer-base/src/main/java/com/fr/design/gui/itree/UITreeUI.java

@ -1,6 +1,7 @@
package com.fr.design.gui.itree; package com.fr.design.gui.itree;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.base.svg.IconUtils;
import com.fr.design.utils.ThemeUtils; import com.fr.design.utils.ThemeUtils;
import javax.swing.*; import javax.swing.*;
@ -27,8 +28,8 @@ public class UITreeUI extends MetalTreeUI {
protected void installDefaults() { protected void installDefaults() {
super.installDefaults(); super.installDefaults();
setExpandedIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/minus.png")); setExpandedIcon(IconUtils.readIcon("/com/fr/design/standard/fileicon/minus.svg"));
setCollapsedIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/plus.png")); setCollapsedIcon(IconUtils.readIcon("/com/fr/design/standard/fileicon/plus.svg"));
if (tree.getCellRenderer() instanceof DefaultTreeCellRenderer) { if (tree.getCellRenderer() instanceof DefaultTreeCellRenderer) {
DefaultTreeCellRenderer r = (DefaultTreeCellRenderer) tree.getCellRenderer(); DefaultTreeCellRenderer r = (DefaultTreeCellRenderer) tree.getCellRenderer();
r.setBackgroundNonSelectionColor(ThemeUtils.TEXT_BG_COLOR); r.setBackgroundNonSelectionColor(ThemeUtils.TEXT_BG_COLOR);

15
designer-base/src/main/java/com/fr/design/gui/itree/filetree/FileTreeIcon.java

@ -1,6 +1,7 @@
package com.fr.design.gui.itree.filetree; package com.fr.design.gui.itree.filetree;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.base.svg.IconUtils;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.icon.LocalFileIcon; import com.fr.design.icon.LocalFileIcon;
import com.fr.design.icon.LockIcon; 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 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 = 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/folder_half_authority.svg");
public static final Icon FILE_IMAGE_ICON = UIManager.getIcon("FileView.fileIcon"); 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 CHT_FILE_IMAGE_ICON = BaseUtils.readIcon("/com/fr/design/images/gui/cht.png");
public static final Icon MODERN_CPT_FILE_IMAGE_ICON = 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/cpt_icon.svg");
public static final Icon MODERN_FRM_FILE_IMAGE_ICON = 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/frm_icon.svg");
public static final Icon MODERN_CHT_FILE_IMAGE_ICON = 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/cht_icon.svg");
public static final Icon CPTX_ICON = BaseUtils.readIcon("/com/fr/nx/app/designer/cptx_file_icon.png"); public static final Icon CPTX_ICON = IconUtils.readIcon("/com/fr/design/standard/fileicon/cptx_icon.svg");
public static final Icon CPTX_LOCKED_ICON = BaseUtils.readIcon("/com/fr/nx/app/designer/cptx_file_icon_locked.png"); 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 = public static final LockIcon FOLDER_LOCK_ICON =
new LockIcon(BaseUtils.readImage("/com/fr/design/images/gui/fold.png")); new LockIcon(BaseUtils.readImage("/com/fr/design/images/gui/fold.png"));

8
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 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";
public static final String CLASS_TD_ICON_PATH = "/com/fr/design/images/data/source/classTableData.png"; 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 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 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 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_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";
public static final String PREVIEW_ICON_PATH = "/com/fr/design/images/m_file/preview.png"; 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_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_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_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_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 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 SP_SHOW_ICON_PATH = "/com/fr/design/standard/store_procedure";
public static final String STD_SHOW_ICON_PATH = "/com/fr/design/images/data/dock/serverdatabase.png"; 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 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 FORBID_ICON_PATH = "/com/fr/web/images/form/forbid.png";
public static final String EDIT_ICON_PATH = "/com/fr/design/images/control/newEdit.png"; public static final String EDIT_ICON_PATH = "/com/fr/design/images/control/newEdit.png";

41
designer-base/src/main/java/com/fr/design/icon/WarningIcon.java

@ -1,12 +1,15 @@
package com.fr.design.icon; package com.fr.design.icon;
import com.fr.base.BaseUtils; import com.fr.base.svg.SVGLoader;
import com.fr.base.svg.SystemScaleUtils;
import com.fr.design.utils.SvgDrawUtils;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import javax.swing.GrayFilter; import javax.swing.GrayFilter;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import java.awt.Component; import java.awt.Component;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image; import java.awt.Image;
import java.awt.MediaTracker; import java.awt.MediaTracker;
import java.awt.image.ImageObserver; import java.awt.image.ImageObserver;
@ -18,11 +21,12 @@ import java.awt.image.ImageObserver;
* @since 2012-3-28下午10:20:29 * @since 2012-3-28下午10:20:29
*/ */
public class WarningIcon extends ImageIcon { 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); 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 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 Image mainImage = null;
private ImageObserver imageObserver; private ImageObserver imageObserver;
private int width = -1; private int width = -1;
@ -38,12 +42,15 @@ public class WarningIcon extends ImageIcon {
@Override @Override
public synchronized void paintIcon(Component c, Graphics g, int x, int y) { 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));
if (mainImage != null) { if (mainImage != null) {
g.drawImage(mainImage, x, y, c); SvgDrawUtils.doDrawSVG(graphics, () -> SvgDrawUtils.drawImage(graphics, mainImage, x, y, null));
} }
if (warnighImage != null) { if (WARNING_IMAGE != null) {
g.drawImage(warnighImage, x, y, c); SvgDrawUtils.doDrawSVG(graphics, () -> SvgDrawUtils.drawImage(graphics, WARNING_IMAGE, x, y, null));
} }
graphics.dispose();
} }
/** /**
@ -53,17 +60,17 @@ public class WarningIcon extends ImageIcon {
* the image * the image
*/ */
protected void loadImage(Image image) { protected void loadImage(Image image) {
synchronized (tracker) { synchronized (TRACKER) {
tracker.addImage(image, 0); TRACKER.addImage(image, 0);
try { try {
tracker.waitForID(0, 0); TRACKER.waitForID(0, 0);
} catch (InterruptedException e) { } catch (InterruptedException e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e); FineLoggerFactory.getLogger().error(e.getMessage(), e);
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
} }
tracker.statusID(0, false); TRACKER.statusID(0, false);
tracker.removeImage(image, 0); TRACKER.removeImage(image, 0);
width = image.getWidth(imageObserver); width = image.getWidth(imageObserver);
height = image.getHeight(imageObserver); height = image.getHeight(imageObserver);
@ -91,7 +98,8 @@ public class WarningIcon extends ImageIcon {
* @return the width in pixels of this icon * @return the width in pixels of this icon
*/ */
public int getIconWidth() { public int getIconWidth() {
return width; //如果环境支持高清化,drawImage可能会缩放绘制的图像比例,需要保证svg正常显示的同时调整绘制范围
return HI_DPI_SUPPORT ? (int) (width / SYSTEM_SCALE) : width;
} }
/** /**
@ -100,10 +108,11 @@ public class WarningIcon extends ImageIcon {
* @return the height in pixels of this icon * @return the height in pixels of this icon
*/ */
public int getIconHeight() { public int getIconHeight() {
return height; //如果环境支持高清化,drawImage可能会缩放绘制的图像比例,需要保证svg正常显示的同时调整绘制范围
return HI_DPI_SUPPORT ? (int) (height / SYSTEM_SCALE) : height;
} }
{ {
loadImage(warnighImage); loadImage(WARNING_IMAGE);
} }
} }

13
designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java

@ -48,8 +48,7 @@ public abstract class JavaScriptActionPane extends UIComboBoxPane<JavaScript> {
contentDBManiPane.add(createDBManipulationPane()); contentDBManiPane.add(createDBManipulationPane());
paneList.add(new Commit2DBJavaScriptPane(this, contentDBManiPane)); paneList.add(new Commit2DBJavaScriptPane(this, contentDBManiPane));
paneList.add(initEmaiPane()); paneList.add(initEmaiPane());
boolean workbook = DesignerContext.getDesignerFrame().getSelectedJTemplate().isJWorkBook(); if (isWorkBookValid()) {
if (workbook) {
paneList.add(new ExportJavaScriptPane()); paneList.add(new ExportJavaScriptPane());
} }
paneList.add(new MobilePopupPane()); paneList.add(new MobilePopupPane());
@ -66,6 +65,16 @@ public abstract class JavaScriptActionPane extends UIComboBoxPane<JavaScript> {
return paneList; return paneList;
} }
/**
* 选中的JTemplate是否有效并且是否是工作簿
*
* @return 选中的JTemplate有效并且是工作簿则返回true
*/
private boolean isWorkBookValid() {
return DesignerContext.getDesignerFrame().getSelectedJTemplate() != null
&& DesignerContext.getDesignerFrame().getSelectedJTemplate().isJWorkBook();
}
protected EmailPane initEmaiPane() { protected EmailPane initEmaiPane() {
return new EmailPane(); return new EmailPane();
} }

12
designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java

@ -427,7 +427,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
public NewFolderAction() { public NewFolderAction() {
this.setName(KeySetUtils.NEW_FOLDER.getMenuKeySetName()); 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 @Override
@ -452,7 +452,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
public SwitchAction() { public SwitchAction() {
this.setName(Toolkit.i18nText("Fine-Design_Basic_Search")); this.setName(Toolkit.i18nText("Fine-Design_Basic_Search"));
this.setMnemonic('S'); this.setMnemonic('S');
this.setSmallIcon("/com/fr/design/images/data/search"); this.setSmallIcon("/com/fr/design/standard/search", false);
} }
@Override @Override
@ -469,7 +469,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
public CollapseAllAction() { public CollapseAllAction() {
this.setName(Toolkit.i18nText("Fine-Design_Basic_Collapse_All")); 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", false);
} }
@Override @Override
@ -485,7 +485,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
private class VcsAction extends UpdateAction { private class VcsAction extends UpdateAction {
public VcsAction() { public VcsAction() {
this.setSmallIcon("/com/fr/design/images/FileDealerPaneIcon/vcs_list"); this.setSmallIcon("/com/fr/design/standard/vcslist/vcs_list");
} }
@Override @Override
@ -567,7 +567,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
public ShowInExplorerAction() { public ShowInExplorerAction() {
this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Show_In_Containing_Folder")); 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 @Override
@ -584,7 +584,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt
public RefreshTreeAction() { public RefreshTreeAction() {
this.setName(Toolkit.i18nText("Fine-Design_Basic_Refresh")); 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 @Override

5
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.notification.SnapChatFactory;
import com.fr.design.ui.util.UIUtil; import com.fr.design.ui.util.UIUtil;
import com.fr.design.utils.DesignUtils; import com.fr.design.utils.DesignUtils;
import com.fr.design.utils.SvgDrawUtils;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.design.utils.gui.GUIPaintUtils; import com.fr.design.utils.gui.GUIPaintUtils;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
@ -729,7 +730,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
private Set<PropertyMode> enableModes; private Set<PropertyMode> enableModes;
// 完整icon路径为 ICON_BASE_DIR + btnIconName + iconSuffix // 完整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_NORMAL = "_normal.svg";
private static final String ICON_SUFFIX_DISABLED = "_disabled.svg"; private static final String ICON_SUFFIX_DISABLED = "_disabled.svg";
private static final String ICON_SUFFIX_SELECTED = "_selected.svg"; private static final String ICON_SUFFIX_SELECTED = "_selected.svg";
@ -1313,7 +1314,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
} else { } else {
button = UIConstants.POP_BUTTON_UP; button = UIConstants.POP_BUTTON_UP;
} }
g.drawImage(button, ARROW_RANGE_START + 8, 4, 16, 16, null); SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, button, (ARROW_RANGE_START + 8), 4, null));
} }
} }

7
designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java

@ -1,6 +1,5 @@
package com.fr.design.mainframe; package com.fr.design.mainframe;
import com.fr.base.BaseUtils;
import com.fr.base.Parameter; import com.fr.base.Parameter;
import com.fr.base.TRL; import com.fr.base.TRL;
import com.fr.base.extension.FileExtension; import com.fr.base.extension.FileExtension;
@ -8,6 +7,7 @@ import com.fr.base.io.BaseBook;
import com.fr.base.iofile.attr.DesignBanCopyAttrMark; import com.fr.base.iofile.attr.DesignBanCopyAttrMark;
import com.fr.base.iofile.attr.TemplateIdAttrMark; import com.fr.base.iofile.attr.TemplateIdAttrMark;
import com.fr.base.iofile.attr.TemplateThemeAttrMark; import com.fr.base.iofile.attr.TemplateThemeAttrMark;
import com.fr.base.svg.IconUtils;
import com.fr.base.theme.TemplateTheme; import com.fr.base.theme.TemplateTheme;
import com.fr.base.theme.TemplateThemeCompatible; import com.fr.base.theme.TemplateThemeCompatible;
import com.fr.base.theme.TemplateThemeConfig; import com.fr.base.theme.TemplateThemeConfig;
@ -72,7 +72,6 @@ import com.fr.file.StashedFILE;
import com.fr.form.ui.NoneWidget; import com.fr.form.ui.NoneWidget;
import com.fr.form.ui.Widget; import com.fr.form.ui.Widget;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.IOUtils;
import com.fr.locale.InterProviderFactory; import com.fr.locale.InterProviderFactory;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.nx.app.designer.toolbar.TemplateTransformer; import com.fr.nx.app.designer.toolbar.TemplateTransformer;
@ -1425,7 +1424,7 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
public Icon getPreviewLargeIcon() { public Icon getPreviewLargeIcon() {
PreviewProvider provider = getPreviewType(); PreviewProvider provider = getPreviewType();
String iconPath = provider.iconPathForLarge(); String iconPath = provider.iconPathForLarge();
return BaseUtils.readIcon(iconPath); return IconUtils.readIcon(iconPath);
} }
/** /**
@ -1573,7 +1572,7 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
} }
protected UIButton createTemplateThemeButton() { 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")) {
@Override @Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
FontMetrics metrics = getFontMetrics(getFont()); FontMetrics metrics = getFontMetrics(getFont());

8
designer-base/src/main/java/com/fr/design/mainframe/ToolBarNewTemplatePane.java

@ -1,6 +1,6 @@
package com.fr.design.mainframe; package com.fr.design.mainframe;
import com.fr.base.BaseUtils; import com.fr.base.svg.IconUtils;
import com.fr.design.file.NewTemplatePane; import com.fr.design.file.NewTemplatePane;
import javax.swing.Icon; import javax.swing.Icon;
@ -21,16 +21,16 @@ public class ToolBarNewTemplatePane extends NewTemplatePane {
@Override @Override
public Icon getNew() { public Icon getNew() {
return BaseUtils.readIcon("/com/fr/design/images/buttonicon/addicon.png"); return IconUtils.readIcon("/com/fr/design/standard/addicon/addicon");
} }
@Override @Override
public Icon getMouseOverNew() { 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 @Override
public Icon getMousePressNew() { 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");
} }
} }

3
designer-base/src/main/java/com/fr/design/mainframe/check/CheckButton.java

@ -1,6 +1,7 @@
package com.fr.design.mainframe.check; package com.fr.design.mainframe.check;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.base.svg.IconUtils;
import com.fr.design.dialog.FineJOptionPane; import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
@ -44,7 +45,7 @@ public class CheckButton extends UIButton {
private UILabel imageLabel; private UILabel imageLabel;
public CheckButton() { public CheckButton() {
this.setIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/check.png")); this.setIcon(IconUtils.readIcon("/com/fr/design/standard/font_miss_check"));
this.setToolTipText(Toolkit.i18nText("Fine_Designer_Check_Font")); this.setToolTipText(Toolkit.i18nText("Fine_Designer_Check_Font"));
this.set4ToolbarButton(); this.set4ToolbarButton();
this.addActionListener(checkListener); this.addActionListener(checkListener);

4
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.setBorder(BorderFactory.createLineBorder(UIConstants.TOOLBAR_BORDER_COLOR));
searchPane.setBackground(Color.WHITE); 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"));
searchLabel.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0)); searchLabel.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0));
searchLabel.addMouseListener(new MouseAdapter() { searchLabel.addMouseListener(new MouseAdapter() {
@Override @Override
@ -118,7 +118,7 @@ public class TemplateTreeSearchToolbarPane extends JPanel implements TreeSearchS
// 中间输入框 // 中间输入框
initSearchTextField(); initSearchTextField();
// 右侧返回图标 // 右侧返回图标
UILabel returnLabel = new UILabel(IconUtils.readIcon("/com/fr/design/images/data/clear")); UILabel returnLabel = new UILabel(IconUtils.readIcon("/com/fr/design/standard/clear"));
returnLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Tree_Search_Return")); returnLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Tree_Search_Return"));
returnLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 11)); returnLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 11));
returnLabel.addMouseListener(new MouseAdapter() { returnLabel.addMouseListener(new MouseAdapter() {

33
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.base.svg.IconUtils;
import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.HistoryTemplateListCache;
import com.fr.design.gui.ibutton.UIButton; 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.gui.iscrollbar.UIScrollBar;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.JTemplate;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import java.util.HashSet; import javax.swing.JMenu;
import java.util.Set; import javax.swing.JPopupMenu;
import javax.swing.*; import javax.swing.JToolBar;
import javax.swing.event.MenuEvent; import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener; 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.ContainerListener;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* Define Menu. * Define Menu.
@ -46,6 +53,7 @@ public class MenuDef extends ShortCut {
protected Boolean isEastAttr = false; protected Boolean isEastAttr = false;
protected char mnemonic; protected char mnemonic;
protected String iconPath; protected String iconPath;
private boolean needDisabled;
protected String tooltip; protected String tooltip;
//item List. //item List.
private List<ShortCut> shortcutList = new ArrayList<ShortCut>(); private List<ShortCut> shortcutList = new ArrayList<ShortCut>();
@ -112,9 +120,19 @@ public class MenuDef extends ShortCut {
} }
public void setIconPath(String iconPath) { 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() { public int getShortCutCount() {
return this.shortcutList.size(); return this.shortcutList.size();
} }
@ -183,6 +201,9 @@ public class MenuDef extends ShortCut {
if (createdButton == null) { if (createdButton == null) {
if (iconPath != null) { if (iconPath != null) {
createdButton = new UIButton(IconUtils.readIcon(iconPath)); createdButton = new UIButton(IconUtils.readIcon(iconPath));
if(needDisabled) {
createdButton.setDisabledIcon(IconUtils.readIcon(iconPath + IconUtils.ICON_TYPE_DISABLED));
}
createdButton.set4ToolbarButton(); createdButton.set4ToolbarButton();
} else { } else {
createdButton = new UIButton(name); createdButton = new UIButton(name);

7
designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java

@ -1,5 +1,6 @@
package com.fr.design.notification.ui; package com.fr.design.notification.ui;
import com.fr.base.svg.IconUtils;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
@ -20,7 +21,7 @@ public class NotificationCenterPane extends BasicPane {
setPreferredSize(new Dimension(24, 24)); setPreferredSize(new Dimension(24, 24));
setLayout(new BorderLayout()); setLayout(new BorderLayout());
notificationCenterButton = new UIButton(); notificationCenterButton = new UIButton();
notificationCenterButton.setIcon(IOUtils.readIcon("/com/fr/design/notification/ui/notificationCenter.png")); notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification"));
notificationCenterButton.setToolTipText(Toolkit.i18nText("Fine-Design_Basic_Show_Notification")); notificationCenterButton.setToolTipText(Toolkit.i18nText("Fine-Design_Basic_Show_Notification"));
notificationCenterButton.set4ToolbarButton(); notificationCenterButton.set4ToolbarButton();
notificationCenterButton.setRolloverEnabled(false); notificationCenterButton.setRolloverEnabled(false);
@ -41,9 +42,9 @@ public class NotificationCenterPane extends BasicPane {
public void refreshButton() { public void refreshButton() {
if (NotificationCenter.getInstance().getNotificationsCount() > 0) { 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 { } else {
notificationCenterButton.setIcon(IOUtils.readIcon("/com/fr/design/notification/ui/notificationCenter.png")); notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification"));
} }
} }

4
designer-base/src/main/java/com/fr/design/preview/FormPreview.java

@ -18,12 +18,12 @@ public class FormPreview extends AbstractPreviewProvider {
@Override @Override
public String iconPathForPopupItem() { public String iconPathForPopupItem() {
return "com/fr/design/images/buttonicon/runs.png"; return "/com/fr/design/standard/preview/runs.svg";
} }
@Override @Override
public String iconPathForLarge() { public String iconPathForLarge() {
return "com/fr/design/images/buttonicon/run24.png"; return "/com/fr/design/standard/preview/run24.svg";
} }
@Override @Override

4
designer-base/src/main/java/com/fr/design/preview/MobilePreview.java

@ -19,12 +19,12 @@ public class MobilePreview extends AbstractPreviewProvider {
@Override @Override
public String iconPathForPopupItem() { public String iconPathForPopupItem() {
return "com/fr/design/images/buttonicon/mobile.png"; return "/com/fr/design/standard/preview/mobile.svg";
} }
@Override @Override
public String iconPathForLarge() { public String iconPathForLarge() {
return "com/fr/design/images/buttonicon/mobileb24.png"; return "/com/fr/design/standard/preview/mobileb24.svg";
} }
@Override @Override

4
designer-base/src/main/java/com/fr/design/preview/PagePreview.java

@ -17,12 +17,12 @@ public class PagePreview extends AbstractPreviewProvider {
@Override @Override
public String iconPathForPopupItem() { public String iconPathForPopupItem() {
return "com/fr/design/images/buttonicon/pages.png"; return "/com/fr/design/standard/preview/pages.svg";
} }
@Override @Override
public String iconPathForLarge() { public String iconPathForLarge() {
return "com/fr/design/images/buttonicon/pageb24.png"; return "/com/fr/design/standard/preview/pageb24.svg";
} }
@Override @Override

4
designer-base/src/main/java/com/fr/design/preview/ViewPreview.java

@ -20,12 +20,12 @@ public class ViewPreview extends AbstractPreviewProvider {
@Override @Override
public String iconPathForPopupItem() { public String iconPathForPopupItem() {
return "com/fr/design/images/buttonicon/anas.png"; return "/com/fr/design/standard/preview/anas.svg";
} }
@Override @Override
public String iconPathForLarge() { public String iconPathForLarge() {
return "com/fr/design/images/buttonicon/anab24.png"; return "/com/fr/design/standard/preview/anab24.svg";
} }
@Override @Override

4
designer-base/src/main/java/com/fr/design/preview/WritePreview.java

@ -20,12 +20,12 @@ public class WritePreview extends AbstractPreviewProvider {
@Override @Override
public String iconPathForPopupItem() { public String iconPathForPopupItem() {
return "com/fr/design/images/buttonicon/writes.png"; return "/com/fr/design/standard/preview/writes.svg";
} }
@Override @Override
public String iconPathForLarge() { public String iconPathForLarge() {
return "com/fr/design/images/buttonicon/writeb24.png"; return "/com/fr/design/standard/preview/writeb24.svg";
} }
@Override @Override

2
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; private UIObserverListener uiObserverListener;
public UIToolbarColorButton(Icon icon) { 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); getLeftButton().setEventBanned(true);
getRightButton().addFocusListener(new FocusListener() { getRightButton().addFocusListener(new FocusListener() {

16
designer-base/src/main/java/com/fr/design/utils/SvgDraw.java

@ -0,0 +1,16 @@
package com.fr.design.utils;
/**
* 绘制SVG图标的函数式接口
*
* @author obo
* @since 11.0
* Created on 2023/3/24
*/
public interface SvgDraw<T> {
/**
* 绘制svg图标的具体逻辑,方法体
* */
void drawSVG();
}

73
designer-base/src/main/java/com/fr/design/utils/SvgDrawUtils.java

@ -0,0 +1,73 @@
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图片缩放(高分屏下)
*
* @author hades
* @since 11.0
* Created on 2022/5/6
*/
public class SvgDrawUtils {
private static final boolean HI_DPI_ENABLED = SystemScaleUtils.isJreHiDPIEnabled();
/**
* 绘制svg前若环境支持高清化则对缩放比例进行适配
* */
public static void beforeDraw(Graphics2D g2) {
if (HI_DPI_ENABLED) {
g2.scale(1 / SVGLoader.SYSTEM_SCALE, 1 / SVGLoader.SYSTEM_SCALE);
}
}
/**
* 绘制svg后还原缩放矩阵
* */
public static void afterDraw(Graphics2D g2) {
if (HI_DPI_ENABLED) {
g2.scale(SVGLoader.SYSTEM_SCALE, SVGLoader.SYSTEM_SCALE);
}
}
/**
* 计算高缩放下绘制svg图标时新的的位置x,y
* @param position 旧坐标的值
* @return 新的position值
* */
public static int calculatePosition(int position) {
return HI_DPI_ENABLED ? (int) (position * SVGLoader.SYSTEM_SCALE) : position;
}
/**
* 绘制svg图像的完整逻辑
* @param graphics 绘图
* @param svgDraw 具体绘制逻辑
* */
public static void doDrawSVG(@NotNull Graphics graphics, @NotNull final SvgDraw<Graphics> svgDraw) {
SvgDrawUtils.beforeDraw((Graphics2D) graphics);
svgDraw.drawSVG();
SvgDrawUtils.afterDraw((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, SvgDrawUtils.calculatePosition(x), SvgDrawUtils.calculatePosition(y), imageObserver);
}
}

28
designer-base/src/main/java/com/fr/design/utils/SvgPaintUtils.java

@ -1,28 +0,0 @@
package com.fr.design.utils;
import com.fr.base.svg.SVGLoader;
import com.fr.base.svg.SystemScaleUtils;
import java.awt.Graphics2D;
/**
* 用于绘制svg图片缩放(高分屏下)
*
* @author hades
* @version 11.0
* Created by hades on 2022/5/6
*/
public class SvgPaintUtils {
public static void beforePaint(Graphics2D g2) {
if (SystemScaleUtils.isJreHiDPIEnabled()) {
g2.scale(1 / SVGLoader.SYSTEM_SCALE, 1 / SVGLoader.SYSTEM_SCALE);
}
}
public static void afterPaint(Graphics2D g2) {
if (SystemScaleUtils.isJreHiDPIEnabled()) {
g2.scale(SVGLoader.SYSTEM_SCALE, SVGLoader.SYSTEM_SCALE);
}
}
}

85
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.ArrayUtils;
import com.fr.stable.CoreConstants; import com.fr.stable.CoreConstants;
import com.fr.stable.ProductConstants; import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.server.lock.TplOperator; import com.fr.workspace.server.lock.TplOperator;
@ -33,14 +34,30 @@ public class TemplateUtils {
/** /**
* 创建新的模板文件并打开模板 * 创建新的模板文件并打开模板
* @param prefix 模板文件名称前缀 *
* @param file 模板文件 * @param prefix 模板文件名称前缀
* @param file 模板文件
* @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板 * @param createByEditingTemplate 是否根据 当前编辑模板 来创建新模板
* 为true时以CurrentEditingTemplate为准创建新模板 * 为true时以CurrentEditingTemplate为准创建新模板
* 为false时以传入的File文件为准创建新模板此文件可以不是编辑状态 * 为false时以传入的File文件为准创建新模板此文件可以不是编辑状态
* @param openNewTemplate 是否需要在创建后打开模板 * @param openNewTemplate 是否需要在创建后打开模板
*/ */
public static void createAndOpenTemplate(String prefix, FILE file, boolean createByEditingTemplate, boolean 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 fileName = file.getName();
String oldPath = file.getPath(); String oldPath = file.getPath();
int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT); int indexOfLastDot = fileName.lastIndexOf(CoreConstants.DOT);
@ -48,7 +65,7 @@ public class TemplateUtils {
return; return;
} }
String suffix = fileName.substring(indexOfLastDot + 1); String suffix = fileName.substring(indexOfLastDot + 1);
FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true); FILEChooserPane fileChooserPane = FILEChooserPane.getInstance(true, true);
fileChooserPane.setFileNameTextField(prefix + fileName, suffix); fileChooserPane.setFileNameTextField(prefix + fileName, suffix);
FileExtension fileExtension = FileExtension.parse(suffix); FileExtension fileExtension = FileExtension.parse(suffix);
fileChooserPane.addChooseFILEFilter(new ChooseFileFilter(fileExtension, ProductConstants.APP_NAME + Toolkit.i18nText("Fine-Design_Report_Template_File"))); fileChooserPane.addChooseFILEFilter(new ChooseFileFilter(fileExtension, ProductConstants.APP_NAME + Toolkit.i18nText("Fine-Design_Report_Template_File")));
@ -62,31 +79,26 @@ public class TemplateUtils {
if (isOk(result)) { if (isOk(result)) {
file = fileChooserPane.getSelectedFILE(); 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<Void, Void>() { new SwingWorker<Boolean, Void>() {
@Override @Override
protected Void doInBackground() throws Exception { protected Boolean doInBackground() throws Exception {
byte[] content = new byte[0]; // 读取模板数据
if (createByEditingTemplate) { byte[] content = getTemplateData(createByEditingTemplate, oldPath);
// 从当前编辑模板中生成备份文件
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; OutputStream out = null;
try { 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 = file.asOutputStream();
out.write(content); out.write(content);
} finally { } finally {
@ -98,15 +110,18 @@ public class TemplateUtils {
// 解锁 // 解锁
WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath()); WorkContext.getCurrent().get(TplOperator.class).closeAndFreeFile(file.getPath());
} }
} }
return null; return true;
} }
@Override @Override
protected void done() { protected void done() {
try { try {
get(); if (!get()) {
throw new Exception("[RemoteDesign] back up template file failed");
}
// 创建备份成功后,关闭原模板
doAfterCreateTemplate.run();
if (openNewTemplate) { if (openNewTemplate) {
DesignerContext.getDesignerFrame().openTemplate(file); DesignerContext.getDesignerFrame().openTemplate(file);
} }
@ -118,7 +133,31 @@ public class TemplateUtils {
} }
} }
}.execute(); }.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) { private static boolean isCancel(int result) {

14
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); new Object[] {Toolkit.i18nText("Fine_Design_Template_SaveAs_Backup"), Toolkit.i18nText("Fine-Design_Basic_Button_Cancel")}, null);
if (option == JOptionPane.YES_OPTION) { if (option == JOptionPane.YES_OPTION) {
JTemplate<?, ?> template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); JTemplate<?, ?> template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
if (template != null) { if (JTemplate.isValid(template)) {
TemplateUtils.createAndOpenTemplate( TemplateUtils.createAndOpenTemplate(
Toolkit.i18nText("Fine_Design_Template_Backup"), Toolkit.i18nText("Fine_Design_Template_Backup"),
new FileNodeFILE(new FileNode(template.getPath(), false)), new FileNodeFILE(new FileNode(template.getPath(), false)),
true, true,
false); true,
// 创建并打开备份模板后,关闭原模板,无需释放原模板锁(因为已经被超管手动清除了)
() -> HistoryTemplateListCache.getInstance().closeSelectedReport(template));
} }
} }
} }
@ -133,14 +135,14 @@ public class SaveFailureHandler implements ThrowableHandler {
new Object[] {Toolkit.i18nText("Fine_Design_Template_SaveAs_Backup"), Toolkit.i18nText("Fine-Design_Basic_Button_Cancel")}, null); new Object[] {Toolkit.i18nText("Fine_Design_Template_SaveAs_Backup"), Toolkit.i18nText("Fine-Design_Basic_Button_Cancel")}, null);
if (option == JOptionPane.YES_OPTION) { if (option == JOptionPane.YES_OPTION) {
JTemplate<?, ?> template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); JTemplate<?, ?> template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
if (template != null) { if (JTemplate.isValid(template)) {
TemplateUtils.createAndOpenTemplate( TemplateUtils.createAndOpenTemplate(
Toolkit.i18nText("Fine_Design_Template_Backup"), Toolkit.i18nText("Fine_Design_Template_Backup"),
new FileNodeFILE(new FileNode(template.getPath(), false)), new FileNodeFILE(new FileNode(template.getPath(), false)),
true, true,
true); true,
// 创建并打开备份模板后,关闭原模板 // 创建并打开备份模板后,关闭原模板,无需释放原模板锁(锁定信息不一致 = 此用户模板锁信息已被清除)
HistoryTemplateListCache.getInstance().closeSelectedReport(template); () -> HistoryTemplateListCache.getInstance().closeSelectedReport(template));
} }
} }
} }

3
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.BaseUtils;
import com.fr.base.FRContext; import com.fr.base.FRContext;
import com.fr.base.svg.IconUtils;
import com.fr.design.file.TemplateResourceManager; import com.fr.design.file.TemplateResourceManager;
import com.fr.io.FineEncryptUtils; import com.fr.io.FineEncryptUtils;
import com.fr.base.io.XMLEncryptUtils; import com.fr.base.io.XMLEncryptUtils;
@ -168,7 +169,7 @@ public class FileNodeFILE implements FILE {
} }
if (ComparatorUtils.equals(node.getEnvPath(), ProjectConstants.REPORTLETS_NAME)) { 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 { } else {
if (!hasFullAuth) { if (!hasFullAuth) {

2
designer-base/src/main/java/com/fr/startup/ui/StartupPageWindow.java

@ -363,7 +363,7 @@ public class StartupPageWindow extends JFrame {
for (String recentFile : recentFiles) { for (String recentFile : recentFiles) {
JPanel recentItemPanel = new JPanel(); JPanel recentItemPanel = new JPanel();
recentItemPanel.setLayout(new FlowLayout(FlowLayout.LEFT, ITEM_VERTICAL_GAP, 0)); 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); UILabel recentFileLabel = new UILabel(recentFile);
Color recentFileLabelForeground = recentFileLabel.getForeground(); Color recentFileLabelForeground = recentFileLabel.getForeground();
recentItemPanel.add(recentFileLabel); recentItemPanel.add(recentFileLabel);

4
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.setBorder(new EmptyBorder(0, 0, 0, 0));
selectAndCreatePanel.setLayout(new BorderLayout()); 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.setPreferredSize(new Dimension(ARC_DIAMETER, ARC_DIAMETER));
label.setForeground(HOVER_COLOR); label.setForeground(HOVER_COLOR);
selectAndCreatePanel.add(label, BorderLayout.CENTER); selectAndCreatePanel.add(label, BorderLayout.CENTER);
@ -540,7 +540,7 @@ public class StartupPageWorkspacePanel extends JPanel {
@Override @Override
public void mouseExited(MouseEvent e) { public void mouseExited(MouseEvent e) {
borderColorRef.set(null); 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(); repaintAll();
} }
@Override @Override

1
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.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369
com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.report.WatermarkSettingPane=720*600
com.fr.design.file.MultiTemplateTabPane.popUpMenu=350*65 com.fr.design.file.MultiTemplateTabPane.popUpMenu=350*65
com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600

1
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.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369
com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.report.WatermarkSettingPane=720*600
com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65 com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65
com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600

1
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.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369
com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.report.WatermarkSettingPane=720*600
com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65 com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65
com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600

BIN
designer-base/src/main/resources/com/fr/design/images/control/dot-line.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 B

BIN
designer-base/src/main/resources/com/fr/design/images/control/down_arrow.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

BIN
designer-base/src/main/resources/com/fr/design/images/control/east_arrow.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 241 B

BIN
designer-base/src/main/resources/com/fr/design/images/control/up_arrow.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

BIN
designer-base/src/main/resources/com/fr/design/images/control/west_arrow.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

BIN
designer-base/src/main/resources/com/fr/design/images/gui/modern_style_cht_file_icon_16x16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 609 B

BIN
designer-base/src/main/resources/com/fr/design/images/gui/modern_style_cpt_file_icon_16x16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

BIN
designer-base/src/main/resources/com/fr/design/images/gui/modern_style_frm_file_icon_16x16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 497 B

8
designer-base/src/main/resources/com/fr/design/images/lookandfeel/FileIcon.svg

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_列表_文件_normal</title>
<g id="icon_列表_文件_normal" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M10,1 L14,5.001 L14,15 L2,15 L2,1 L10,1 Z M9,2 L3,2 L3,14 L13,14 L13,6.0002 L9,6.0002 L9,2 Z M10,2.414 L10,5 L12.586,5 L10,2.414 Z" id="Combined-Shape" fill="#333334"></path>
<path d="M4,13 L4,3 L8,3 L8,7 L12,7 L12,13 L4,13 Z" id="Combined-Shape" fill="#FEFBDE"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 641 B

4
designer-base/src/main/resources/com/fr/design/images/lookandfeel/TreeLeafIcon.svg

@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2 15V1H10L14 5.001V15H2ZM9 2H3V14H13V6.0002H10H9V5.0002V2ZM10 2.41412V5.0002H12.5853L10 2.41412Z" fill="#333334"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 3H4V13H6H8H12V7H8V3Z" fill="#FEF6DE"/>
</svg>

After

Width:  |  Height:  |  Size: 366 B

BIN
designer-base/src/main/resources/com/fr/design/mainframe/guide/guide.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

BIN
designer-base/src/main/resources/com/fr/design/notification/ui/notificationCenter.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 347 B

BIN
designer-base/src/main/resources/com/fr/design/notification/ui/notificationCenterDot.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 491 B

0
designer-base/src/main/resources/com/fr/design/images/sheet/add_polysheet_normal.svg → designer-base/src/main/resources/com/fr/design/standard/add_polysheet_normal.svg

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

17
designer-base/src/main/resources/com/fr/design/standard/add_worksheet_normal.svg

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="22px" height="12px" viewBox="0 0 22 12" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_sheet_添加一页_normal</title>
<g id="icon_sheet_添加一页_normal" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M22,0.0004 L20.0367403,2.61866614 C19.7176826,2.45251885 19.3802905,2.31673535 19.0283951,2.2151467 L20,1 L1,1 L1,11 L12,11 L12.6797985,10.1508283 C12.9113978,10.571067 13.196355,10.9577711 13.5255391,11.3018093 L13,12.0004 L0,12.0004 L0,0.0004 L22,0.0004 Z" id="Combined-Shape" fill="#333334"></path>
<line x1="17" y1="6" x2="17" y2="11" id="Fill-8" fill="#16C153"></line>
<g id="Group" transform="translate(13.000000, 3.000000)">
<path d="M9,4.5 C9,6.985 6.985,9 4.5,9 C2.015,9 0,6.985 0,4.5 C0,2.015 2.015,0 4.5,0 C6.985,0 9,2.015 9,4.5" id="Fill-6" fill="#16C153"></path>
<path d="M4.5,1.5 C4.776,1.5 5,1.724 5,2 L5,4 L7,4 C7.276,4 7.5,4.224 7.5,4.5 C7.5,4.776 7.276,5 7,5 L5,5 L5,7 C5,7.276 4.776,7.5 4.5,7.5 C4.224,7.5 4,7.276 4,7 L4,5 L2,5 C1.724,5 1.5,4.776 1.5,4.5 C1.5,4.224 1.724,4 2,4 L4,4 L4,2 C4,1.724 4.224,1.5 4.5,1.5 Z" id="Combined-Shape" fill="#FFFFFF"></path>
</g>
<line x1="15" y1="9" x2="20" y2="9" id="Fill-12" fill="#16C153"></line>
<g id="Group-Copy" transform="translate(2.000000, 2.000000)">
<path d="M3,8 L0,8 L0,1.50473881 C0,0.673694512 0.665797234,0 1.5,0 L3,0 L3,3 L5,3 L5,5 L3,5 L3,8 Z" id="Combined-Shape" fill="#0353A1"></path>
<path d="M8,6.49526119 C8,7.32630549 7.33420277,8 6.5,8 L5,8 L5,3 L3,3 L3,0 L8,0 L8,6.49526119 Z" id="Combined-Shape" fill="#34A8E0"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

4
designer-base/src/main/resources/com/fr/design/standard/addicon/add_press.svg

@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="16" height="16" rx="2" fill="#DADADD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9 1H6H5H2H1V2V5V6V9V10V13V14H2H5H6H7V13H6V10H7V9H6V6H9V7H10V6H13V7H14V1H13H10H9ZM13 2V5H10V2H13ZM9 2H6V5H9V2ZM2 2H5V5H2V2ZM2 6H5V9H2V6ZM2 10H5V13H2V10ZM14.5 11C14.7761 11 15 11.2239 15 11.5C15 11.7761 14.7761 12 14.5 12H12V14.5C12 14.7761 11.7761 15 11.5 15C11.2239 15 11 14.7761 11 14.5V12H8.5C8.22386 12 8 11.7761 8 11.5C8 11.2239 8.22386 11 8.5 11H11V8.5C11 8.22386 11.2239 8 11.5 8C11.7761 8 12 8.22386 12 8.5V11H14.5Z" fill="#333334"/>
</svg>

After

Width:  |  Height:  |  Size: 646 B

3
designer-base/src/main/resources/com/fr/design/standard/addicon/addicon_normal.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M9 1H6H5H2H1V2V5V6V9V10V13V14H2H5H6H7V13H6V10H7V9H6V6H9V7H10V6H13V7H14V1H13H10H9ZM13 2V5H10V2H13ZM9 2H6V5H9V2ZM2 2H5V5H2V2ZM2 6H5V9H2V6ZM2 10H5V13H2V10ZM14.5 11C14.7761 11 15 11.2239 15 11.5C15 11.7761 14.7761 12 14.5 12H12V14.5C12 14.7761 11.7761 15 11.5 15C11.2239 15 11 14.7761 11 14.5V12H8.5C8.22386 12 8 11.7761 8 11.5C8 11.2239 8.22386 11 8.5 11H11V8.5C11 8.22386 11.2239 8 11.5 8C11.7761 8 12 8.22386 12 8.5V11H14.5Z" fill="#333334"/>
</svg>

After

Width:  |  Height:  |  Size: 593 B

16
designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_disabled.svg

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="16px" viewBox="0 0 24 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组</title>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.3">
<g id="工具栏/导入数据集" transform="translate(-8.000000, -6.000000)">
<g id="编组" transform="translate(8.000000, 6.000000)">
<g fill="#333334" id="Combined-Shape">
<path d="M8,2 C8.38659932,2 8.7,2.32097101 8.7,2.69703907 L8.7,7.3 L13.3029609,7.3 C13.6558446,7.3 13.9474813,7.56107882 13.9936369,7.90444795 L14,8 C14,8.38659932 13.679029,8.7 13.3029609,8.7 L8.7,8.699 L8.7,13.3029609 C8.7,13.6558446 8.43892118,13.9474813 8.09555205,13.9936369 L8,14 C7.61340068,14 7.3,13.679029 7.3,13.3029609 L7.3,8.699 L2.69703907,8.7 C2.34415536,8.7 2.05251868,8.43892118 2.00636315,8.09555205 L2,8 C2,7.61340068 2.32097101,7.3 2.69703907,7.3 L7.3,7.3 L7.3,2.69703907 C7.3,2.34415536 7.56107882,2.05251868 7.90444795,2.00636315 L8,2 Z"></path>
</g>
<g transform="translate(16.000000, 4.000000)" fill="#8F8F92" id="Rectangle-6">
<path d="M2,0.997030139 C2,0.446385598 2.31387329,0.313873291 2.70591205,0.705912054 L6,4 L2.70591205,7.29408795 C2.31604759,7.68395241 2,7.54696369 2,7.00296986 L2,0.997030139 Z" transform="translate(4.000000, 4.000000) rotate(90.000000) translate(-4.000000, -4.000000) "></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

14
designer-base/src/main/resources/com/fr/design/standard/addpopup/addPopup_normal.svg

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="16px" viewBox="0 0 24 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组备份</title>
<g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组备份">
<g id="Combined-Shape" fill="#333334">
<path d="M8,2 C8.38659932,2 8.7,2.32097101 8.7,2.69703907 L8.7,7.3 L13.3029609,7.3 C13.6558446,7.3 13.9474813,7.56107882 13.9936369,7.90444795 L14,8 C14,8.38659932 13.679029,8.7 13.3029609,8.7 L8.7,8.699 L8.7,13.3029609 C8.7,13.6558446 8.43892118,13.9474813 8.09555205,13.9936369 L8,14 C7.61340068,14 7.3,13.679029 7.3,13.3029609 L7.3,8.699 L2.69703907,8.7 C2.34415536,8.7 2.05251868,8.43892118 2.00636315,8.09555205 L2,8 C2,7.61340068 2.32097101,7.3 2.69703907,7.3 L7.3,7.3 L7.3,2.69703907 C7.3,2.34415536 7.56107882,2.05251868 7.90444795,2.00636315 L8,2 Z"></path>
</g>
<g id="Rectangle-6" transform="translate(16.000000, 4.000000)" fill="#8F8F92">
<path d="M2,0.997030139 C2,0.446385598 2.31387329,0.313873291 2.70591205,0.705912054 L6,4 L2.70591205,7.29408795 C2.31604759,7.68395241 2,7.54696369 2,7.00296986 L2,0.997030139 Z" transform="translate(4.000000, 4.000000) rotate(90.000000) translate(-4.000000, -4.000000) "></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

3
designer-base/src/main/resources/com/fr/design/standard/alpha_fine_normal.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.90857 12.5269C3.871 12.5269 1.40857 10.0644 1.40857 7.02686C1.40857 3.98929 3.871 1.52686 6.90857 1.52686C9.94614 1.52686 12.4086 3.98929 12.4086 7.02686C12.4086 8.28787 11.9842 9.44977 11.2705 10.3775L14.3701 13.5236C14.6528 13.8062 14.6528 14.2645 14.3701 14.5472C14.0874 14.8298 13.6292 14.8298 13.3465 14.5472L10.2452 11.3995C9.31981 12.1067 8.16326 12.5269 6.90857 12.5269ZM11.4086 7.02686C11.4086 9.51214 9.39385 11.5269 6.90857 11.5269C4.42329 11.5269 2.40857 9.51214 2.40857 7.02686C2.40857 4.54157 4.42329 2.52686 6.90857 2.52686C9.39385 2.52686 11.4086 4.54157 11.4086 7.02686Z" fill="#333334"/>
</svg>

After

Width:  |  Height:  |  Size: 761 B

3
designer-base/src/main/resources/com/fr/design/standard/arrowlinear/down_arrow.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8 9.29289L11.6464 5.64645C11.8417 5.45118 12.1583 5.45118 12.3536 5.64645C12.5488 5.84171 12.5488 6.15829 12.3536 6.35355L8.35355 10.3536C8.15829 10.5488 7.84171 10.5488 7.64645 10.3536L3.64645 6.35355C3.45118 6.15829 3.45118 5.84171 3.64645 5.64645C3.84171 5.45118 4.15829 5.45118 4.35355 5.64645L8 9.29289Z" fill="#333334"/>
</svg>

After

Width:  |  Height:  |  Size: 443 B

3
designer-base/src/main/resources/com/fr/design/standard/arrowlinear/east_arrow.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.29289 8L5.64645 11.6464C5.45118 11.8417 5.45118 12.1583 5.64645 12.3536C5.84171 12.5488 6.15829 12.5488 6.35355 12.3536L10.3536 8.35355C10.5488 8.15829 10.5488 7.84171 10.3536 7.64645L6.35355 3.64645C6.15829 3.45118 5.84171 3.45118 5.64645 3.64645C5.45118 3.84171 5.45118 4.15829 5.64645 4.35355L9.29289 8Z" fill="#333334"/>
</svg>

After

Width:  |  Height:  |  Size: 443 B

3
designer-base/src/main/resources/com/fr/design/standard/arrowlinear/up_arrow.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.5 7.20711L4.85355 10.8536C4.65829 11.0488 4.34171 11.0488 4.14645 10.8536C3.95118 10.6583 3.95118 10.3417 4.14645 10.1464L8.14645 6.14645C8.34171 5.95118 8.65829 5.95118 8.85355 6.14645L12.8536 10.1464C13.0488 10.3417 13.0488 10.6583 12.8536 10.8536C12.6583 11.0488 12.3417 11.0488 12.1464 10.8536L8.5 7.20711Z" fill="#333334"/>
</svg>

After

Width:  |  Height:  |  Size: 447 B

3
designer-base/src/main/resources/com/fr/design/standard/arrowlinear/west_arrow.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.70711 8L10.3536 11.6464C10.5488 11.8417 10.5488 12.1583 10.3536 12.3536C10.1583 12.5488 9.84171 12.5488 9.64645 12.3536L5.64645 8.35355C5.45118 8.15829 5.45118 7.84171 5.64645 7.64645L9.64645 3.64645C9.84171 3.45118 10.1583 3.45118 10.3536 3.64645C10.5488 3.84171 10.5488 4.15829 10.3536 4.35355L6.70711 8Z" fill="#333334"/>
</svg>

After

Width:  |  Height:  |  Size: 443 B

7
designer-base/src/main/resources/com/fr/design/standard/background_normal.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_文本背景色_normal</title>
<g id="icon_文本背景色_normal" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M9,0 L8.9993,1.656 L11.3546845,4.01296053 C12.496044,4.07957725 16,4.48860182 16,7 C16,10 13,12 13,12 C13,12 13.4489375,10.2042499 12.842809,7.81595247 L7.6363,13.021 L1.9793,7.364 L4.9993,4.344 L5,0 L9,0 Z M7.9993,2.756 L3.3933,7.364 L7.6363,11.606 L12.5054659,6.73651111 C12.4728171,6.64900228 12.4386503,6.56099677 12.4029036,6.47254402 L8.9993,3.07 L9,6 L8,6 L7.9993,2.756 Z M7.9993,1 L5.9993,1 L5.9993,3.344 L7.9993,1.344 L7.9993,1 Z" id="Combined-Shape" fill="#333334"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 850 B

5
designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_disabled.svg

@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g opacity="0.3">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14 3.33333C14 4.622 11.3137 5.66667 8 5.66667C4.68629 5.66667 2 4.622 2 3.33333C2 2.04467 4.68629 1 8 1C11.3137 1 14 2.04467 14 3.33333ZM8 6.83333C11.3137 6.83333 14 5.78866 14 4.5V7.75777C15.206 8.56504 16 9.93979 16 11.5C16 13.9853 13.9853 16 11.5 16C10.4205 16 9.42985 15.6199 8.65446 14.9863C8.43951 14.9953 8.22115 15 8 15C4.68629 15 2 13.9553 2 12.6667V9.16667C2 10.3228 4.16235 11.2826 7.00012 11.4677C7.00293 11.0674 7.058 10.6796 7.15887 10.3106C4.24338 10.1515 2 9.17765 2 8V4.5C2 5.78866 4.68629 6.83333 8 6.83333ZM11.5 8C12.3224 8 13.0785 8.28364 13.6759 8.75842C14.4827 9.3996 15 10.3894 15 11.5C15 13.433 13.433 15 11.5 15C11.1026 15 10.7208 14.9338 10.3648 14.8118C8.98898 14.3403 8 13.0356 8 11.5C8 11.0905 8.07035 10.6973 8.19961 10.3321C8.68044 8.97334 9.97655 8 11.5 8ZM12.9142 9.37868L13.6213 10.0858L12.2071 11.5L13.6213 12.9142L12.9142 13.6213L11.5 12.2071L10.0858 13.6213L9.37868 12.9142L10.7929 11.5L9.37868 10.0858L10.0858 9.37868L11.5 10.7929L12.9142 9.37868Z" fill="#333334"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

3
designer-base/src/main/resources/com/fr/design/standard/batchesdoff/batch_esd_off_normal.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14 3.33333C14 4.622 11.3137 5.66667 8 5.66667C4.68629 5.66667 2 4.622 2 3.33333C2 2.04467 4.68629 1 8 1C11.3137 1 14 2.04467 14 3.33333ZM8 6.83333C11.3137 6.83333 14 5.78866 14 4.5V7.75777C15.206 8.56504 16 9.93979 16 11.5C16 13.9853 13.9853 16 11.5 16C10.4205 16 9.42985 15.6199 8.65446 14.9863C8.43951 14.9953 8.22115 15 8 15C4.68629 15 2 13.9553 2 12.6667V9.16667C2 10.3228 4.16235 11.2826 7.00012 11.4677C7.00293 11.0674 7.058 10.6796 7.15887 10.3106C4.24338 10.1515 2 9.17765 2 8V4.5C2 5.78866 4.68629 6.83333 8 6.83333ZM11.5 8C12.3224 8 13.0785 8.28364 13.6759 8.75842C14.4827 9.3996 15 10.3894 15 11.5C15 13.433 13.433 15 11.5 15C11.1026 15 10.7208 14.9338 10.3648 14.8118C8.98898 14.3403 8 13.0356 8 11.5C8 11.0905 8.07035 10.6973 8.19961 10.3321C8.68044 8.97334 9.97655 8 11.5 8ZM12.9142 9.37868L13.6213 10.0858L12.2071 11.5L13.6213 12.9142L12.9142 13.6213L11.5 12.2071L10.0858 13.6213L9.37868 12.9142L10.7929 11.5L9.37868 10.0858L10.0858 9.37868L11.5 10.7929L12.9142 9.37868Z" fill="#333334"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

5
designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_disabled.svg

@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g opacity="0.3">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14 3.33333C14 4.622 11.3137 5.66667 8 5.66667C4.68629 5.66667 2 4.622 2 3.33333C2 2.04467 4.68629 1 8 1C11.3137 1 14 2.04467 14 3.33333ZM8 6.83333C11.3137 6.83333 14 5.78866 14 4.5V7.75777C15.206 8.56504 16 9.93979 16 11.5C16 13.9853 13.9853 16 11.5 16C10.4205 16 9.42985 15.6199 8.65446 14.9863C8.43951 14.9953 8.22115 15 8 15C4.68629 15 2 13.9553 2 12.6667V9.16667C2 10.3228 4.16235 11.2826 7.00012 11.4677C7.00293 11.0674 7.058 10.6796 7.15887 10.3106C4.24338 10.1515 2 9.17765 2 8V4.5C2 5.78866 4.68629 6.83333 8 6.83333ZM11.5 8C12.3224 8 13.0785 8.28364 13.6759 8.75842C14.4827 9.3996 15 10.3894 15 11.5C15 13.433 13.433 15 11.5 15C11.1026 15 10.7208 14.9338 10.3648 14.8118C8.98898 14.3403 8 13.0356 8 11.5C8 11.0905 8.07035 10.6973 8.19961 10.3321C8.68044 8.97334 9.97655 8 11.5 8ZM10.6482 13.5372L13.4434 11.5L10.6482 9.53723V13.5372Z" fill="#333334"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

3
designer-base/src/main/resources/com/fr/design/standard/batchesdon/batch_esd_on_normal.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14 3.33333C14 4.622 11.3137 5.66667 8 5.66667C4.68629 5.66667 2 4.622 2 3.33333C2 2.04467 4.68629 1 8 1C11.3137 1 14 2.04467 14 3.33333ZM8 6.83333C11.3137 6.83333 14 5.78866 14 4.5V7.75777C15.206 8.56504 16 9.93979 16 11.5C16 13.9853 13.9853 16 11.5 16C10.4205 16 9.42985 15.6199 8.65446 14.9863C8.43951 14.9953 8.22115 15 8 15C4.68629 15 2 13.9553 2 12.6667V9.16667C2 10.3228 4.16235 11.2826 7.00012 11.4677C7.00293 11.0674 7.058 10.6796 7.15887 10.3106C4.24338 10.1515 2 9.17765 2 8V4.5C2 5.78866 4.68629 6.83333 8 6.83333ZM11.5 8C12.3224 8 13.0785 8.28364 13.6759 8.75842C14.4827 9.3996 15 10.3894 15 11.5C15 13.433 13.433 15 11.5 15C11.1026 15 10.7208 14.9338 10.3648 14.8118C8.98898 14.3403 8 13.0356 8 11.5C8 11.0905 8.07035 10.6973 8.19961 10.3321C8.68044 8.97334 9.97655 8 11.5 8ZM10.6482 13.5372L13.4434 11.5L10.6482 9.53723V13.5372Z" fill="#333334"/>
</svg>

After

Width:  |  Height:  |  Size: 1014 B

7
designer-base/src/main/resources/com/fr/design/standard/bias/bias_disabled.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_斜线_disabled</title>
<g id="icon_斜线_disabled" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.3">
<polygon id="Page-1" fill="#333334" points="1 1.000525 8.99925 14.5744 9.75 14.12465 3.296 3.1259 14.608875 8.61915 15 7.836025"></polygon>
</g>
</svg>

After

Width:  |  Height:  |  Size: 499 B

7
designer-base/src/main/resources/com/fr/design/standard/bias/bias_normal.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_斜线_normal</title>
<g id="icon_斜线_normal" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<polygon id="Page-1" fill="#333334" points="1 1.000525 8.99925 14.5744 9.75 14.12465 3.296 3.1259 14.608875 8.61915 15 7.836025"></polygon>
</g>
</svg>

After

Width:  |  Height:  |  Size: 481 B

7
designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_disabled.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_插入数据列_disabled</title>
<g id="icon_插入数据列_disabled" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.3">
<path d="M15,5 L15,10 L1,10 L1,5 L15,5 Z M5,6 L2,6 L2,9 L5,9 L5,6 Z M14,6 L6,6 L6,9 L14,9 L14,6 Z M4,7 L4,8 L3,8 L3,7 L4,7 Z M13,7 L13,8 L7,8 L7,7 L13,7 Z" id="形状结合" fill="#333334"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 574 B

7
designer-base/src/main/resources/com/fr/design/standard/bindcolunm/bind_column_normal.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_插入数据列_nomal</title>
<g id="icon_插入数据列_nomal" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M15,5 L15,10 L1,10 L1,5 L15,5 Z M5,6 L2,6 L2,9 L5,9 L5,6 Z M14,6 L6,6 L6,9 L14,9 L14,6 Z M4,7 L4,8 L3,8 L3,7 L4,7 Z M13,7 L13,8 L7,8 L7,7 L13,7 Z" id="形状结合" fill="#333334" fill-rule="nonzero"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 574 B

7
designer-base/src/main/resources/com/fr/design/standard/bold/bold_normal.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_文本工具_加粗_nomal</title>
<g id="icon_文本工具_加粗_nomal" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M8.9795,8.9814 C8.9795,8.7254 8.9245,8.5294 8.8145,8.3904 C8.7035,8.2524 8.5155,8.1494 8.2505,8.0814 C8.0695,8.0344 7.8195,8.0084 7.5015,8.0054 C7.1845,8.0024 6.8525,8.0004 6.5065,8.0004 L6.0005,8.0004 L6.0005,10.0004 L6.1685,10.0004 C6.8205,10.0004 7.2875,9.9984 7.5685,9.9944 C7.8495,9.9914 8.1095,9.9444 8.3465,9.8544 C8.5875,9.7644 8.7535,9.6454 8.8445,9.4964 C8.9345,9.3464 8.9795,9.1744 8.9795,8.9814 M8.4175,5.9394 C8.4175,5.7834 8.3805,5.6274 8.3055,5.4694 C8.2315,5.3134 8.0995,5.1974 7.9105,5.1204 C7.7415,5.0524 7.5305,5.0154 7.2785,5.0094 C7.0265,5.0024 6.6725,5.0004 6.2175,5.0004 L6.0005,5.0004 L6.0005,7.0004 L6.3625,7.0004 C6.7295,7.0004 7.0425,6.9944 7.2995,6.9814 C7.5575,6.9684 7.7605,6.9254 7.9105,6.8534 C8.1195,6.7564 8.2565,6.6304 8.3215,6.4764 C8.3855,6.3214 8.4175,6.1424 8.4175,5.9394 M11.7005,9.2444 C11.7005,9.6784 11.6125,10.0674 11.4375,10.4104 C11.2625,10.7524 11.0215,11.0374 10.7145,11.2624 C10.3605,11.5284 9.9705,11.7174 9.5455,11.8314 C9.1205,11.9434 8.5825,12.0004 7.9285,12.0004 L4.0005,12.0004 L4.0005,3.0004 L7.4935,3.0004 C8.2185,3.0004 8.7505,3.0244 9.0855,3.0724 C9.4225,3.1214 9.7555,3.2274 10.0865,3.3924 C10.4285,3.5664 10.6835,3.7984 10.8515,4.0904 C11.0185,4.3824 11.1025,4.7164 11.1025,5.0904 C11.1025,5.5264 10.9875,5.9104 10.7575,6.2434 C10.5285,6.5754 10.2035,6.8344 9.7845,7.0194 L9.7845,7.0674 C10.3735,7.1844 10.8385,7.4264 11.1835,7.7934 C11.5285,8.1604 11.7005,8.6434 11.7005,9.2444" id="Fill-1" fill="#333334"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

7
designer-base/src/main/resources/com/fr/design/standard/bold/bold_selected.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_文本工具_加粗_selected</title>
<g id="icon_文本工具_加粗_selected" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M8.9795,8.9814 C8.9795,8.7254 8.9245,8.5294 8.8145,8.3904 C8.7035,8.2524 8.5155,8.1494 8.2505,8.0814 C8.0695,8.0344 7.8195,8.0084 7.5015,8.0054 C7.1845,8.0024 6.8525,8.0004 6.5065,8.0004 L6.0005,8.0004 L6.0005,10.0004 L6.1685,10.0004 C6.8205,10.0004 7.2875,9.9984 7.5685,9.9944 C7.8495,9.9914 8.1095,9.9444 8.3465,9.8544 C8.5875,9.7644 8.7535,9.6454 8.8445,9.4964 C8.9345,9.3464 8.9795,9.1744 8.9795,8.9814 M8.4175,5.9394 C8.4175,5.7834 8.3805,5.6274 8.3055,5.4694 C8.2315,5.3134 8.0995,5.1974 7.9105,5.1204 C7.7415,5.0524 7.5305,5.0154 7.2785,5.0094 C7.0265,5.0024 6.6725,5.0004 6.2175,5.0004 L6.0005,5.0004 L6.0005,7.0004 L6.3625,7.0004 C6.7295,7.0004 7.0425,6.9944 7.2995,6.9814 C7.5575,6.9684 7.7605,6.9254 7.9105,6.8534 C8.1195,6.7564 8.2565,6.6304 8.3215,6.4764 C8.3855,6.3214 8.4175,6.1424 8.4175,5.9394 M11.7005,9.2444 C11.7005,9.6784 11.6125,10.0674 11.4375,10.4104 C11.2625,10.7524 11.0215,11.0374 10.7145,11.2624 C10.3605,11.5284 9.9705,11.7174 9.5455,11.8314 C9.1205,11.9434 8.5825,12.0004 7.9285,12.0004 L4.0005,12.0004 L4.0005,3.0004 L7.4935,3.0004 C8.2185,3.0004 8.7505,3.0244 9.0855,3.0724 C9.4225,3.1214 9.7555,3.2274 10.0865,3.3924 C10.4285,3.5664 10.6835,3.7984 10.8515,4.0904 C11.0185,4.3824 11.1025,4.7164 11.1025,5.0904 C11.1025,5.5264 10.9875,5.9104 10.7575,6.2434 C10.5285,6.5754 10.2035,6.8344 9.7845,7.0194 L9.7845,7.0674 C10.3735,7.1844 10.8385,7.4264 11.1835,7.7934 C11.5285,8.1604 11.7005,8.6434 11.7005,9.2444" id="Fill-1" fill="#FFFFFF"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

13
designer-base/src/main/resources/com/fr/design/standard/cell_default_normal.svg

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon/鼠标状态/十字光标</title>
<g id="icon/鼠标状态/十字光标" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="编组" transform="translate(8.000000, 7.000000)" fill-rule="nonzero">
<g id="编组-2">
<path d="M12,0 L12,1 L13,1 L13,4 L16,4 L16,5 L17,5 L17,13 L13,13 L13,17 L5,17 L5,16 L4,16 L4,13 L1,13 L1,12 L0,12 L0,4 L4,4 L4,0 L12,0 Z M12,2 L5,2 L5,5 L1,5 L2,11 L5,12 L5,14 L12,14 L12,10 L16,10 L14,6 L12,5 L12,2 Z" id="形状结合" fill="#FFFFFF"></path>
<path d="M12,2 L6,2 L6,6 L2,6 L2,12 L6,12 L6,16 L12,16 L12,12 L16,12 L16,6 L12,6 L12,2 Z M11,3 L11,7 L15,7 L15,11 L11,11 L11,15 L7,15 L7,11 L3,11 L3,7 L7,7 L7,3 L11,3 Z" id="形状结合备份" fill="#333334"></path>
<path d="M10.5,1.5 L10.5,5.49912498 L14.5,5.50012498 L14.5,10.500125 L10.499125,10.499125 L10.500125,14.5 L5.50012495,14.5 L5.49912498,10.499125 L1.5,10.500125 L1.5,5.50012498 L5.5,5.49912498 L5.5,1.5 L10.5,1.5 Z" id="形状结合" stroke="#333334" fill="#FFFFFF"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

7
designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_normal.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_对齐 居中对齐_normal</title>
<g id="icon_对齐-居中对齐_normal" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M13,13 L13,14 L3,14 L3,13 L13,13 Z M15,11 L15,12 L1,12 L1,11 L15,11 Z M13,9 L13,10 L3,10 L3,9 L13,9 Z M15,7 L15,8 L1,8 L1,7 L15,7 Z M13,5 L13,6 L3,6 L3,5 L13,5 Z M15,3 L15,4 L1,4 L1,3 L15,3 Z" id="Combined-Shape" fill="#333334"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 612 B

7
designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_center_selected.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_对齐 居中对齐_selected</title>
<g id="icon_对齐-居中对齐_selected" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M13,13 L13,14 L3,14 L3,13 L13,13 Z M15,11 L15,12 L1,12 L1,11 L15,11 Z M13,9 L13,10 L3,10 L3,9 L13,9 Z M15,7 L15,8 L1,8 L1,7 L15,7 Z M13,5 L13,6 L3,6 L3,5 L13,5 Z M15,3 L15,4 L1,4 L1,3 L15,3 Z" id="Combined-Shape" fill="#FFFFFF"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 616 B

7
designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_normal.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_对齐 左对齐_normal</title>
<g id="icon_对齐-左对齐_normal" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M11,13 L11,14 L1,14 L1,13 L11,13 Z M15,11 L15,12 L1,12 L1,11 L15,11 Z M11,9 L11,10 L1,10 L1,9 L11,9 Z M15,7 L15,8 L1,8 L1,7 L15,7 Z M11,5 L11,6 L1,6 L1,5 L11,5 Z M15,3 L15,4 L1,4 L1,3 L15,3 Z" id="Combined-Shape" fill="#333334"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 606 B

7
designer-base/src/main/resources/com/fr/design/standard/cellstyle/h_left_selected.svg

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>icon_对齐 左对齐_selected</title>
<g id="icon_对齐-左对齐_selected" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M11,13 L11,14 L1,14 L1,13 L11,13 Z M15,11 L15,12 L1,12 L1,11 L15,11 Z M11,9 L11,10 L1,10 L1,9 L11,9 Z M15,7 L15,8 L1,8 L1,7 L15,7 Z M11,5 L11,6 L1,6 L1,5 L11,5 Z M15,3 L15,4 L1,4 L1,3 L15,3 Z" id="Combined-Shape" fill="#FFFFFF"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 610 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save