diff --git a/designer-base/src/main/java/com/fine/theme/light/ui/FineOptionPaneUI.java b/designer-base/src/main/java/com/fine/theme/light/ui/FineOptionPaneUI.java index 517db0f72b..6d19ef966b 100644 --- a/designer-base/src/main/java/com/fine/theme/light/ui/FineOptionPaneUI.java +++ b/designer-base/src/main/java/com/fine/theme/light/ui/FineOptionPaneUI.java @@ -1,14 +1,33 @@ package com.fine.theme.light.ui; +import com.fine.swing.ui.layout.Layouts; +import com.fine.theme.icon.LazyIcon; +import com.fine.theme.utils.FineUIScale; import com.fine.theme.utils.FineUIStyle; import com.formdev.flatlaf.ui.FlatOptionPaneUI; +import com.fr.design.gui.ilable.UILabel; +import sun.swing.DefaultLookup; +import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JComponent; +import javax.swing.JPanel; +import javax.swing.SwingConstants; import javax.swing.UIManager; +import javax.swing.border.Border; import javax.swing.plaf.ComponentUI; +import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; +import java.awt.Dimension; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; + +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.column; +import static com.fine.swing.ui.layout.Layouts.flex; +import static com.fine.swing.ui.layout.Layouts.row; /** * @author Renekton @@ -35,4 +54,92 @@ public class FineOptionPaneUI extends FlatOptionPaneUI { } } } + + protected void installComponents() { + optionPane.setLayout(new BorderLayout()); + optionPane.add(createMessageArea()); + optionPane.add(createButtonArea(), BorderLayout.SOUTH); + optionPane.applyComponentOrientation(optionPane.getComponentOrientation()); + } + + protected Container createMessageArea() { + JPanel top = new JPanel(); + Border topBorder = (Border) DefaultLookup.get(optionPane, this, + "OptionPane.messageAreaBorder"); + if (topBorder != null) { + top.setBorder(topBorder); + } + top.setLayout(new BorderLayout()); + + /* Fill the body. */ + Container body = new JPanel(new GridBagLayout()); + Container realBody = new JPanel(new BorderLayout()); + + body.setName("OptionPane.body"); + realBody.setName("OptionPane.realBody"); + realBody.add(body, BorderLayout.NORTH); + + GridBagConstraints cons = new GridBagConstraints(); + cons.gridx = cons.gridy = 0; + cons.gridwidth = GridBagConstraints.REMAINDER; + cons.gridheight = 1; + cons.anchor = DefaultLookup.getInt(optionPane, this, + "OptionPane.messageAnchor", GridBagConstraints.CENTER); + cons.insets = new Insets(0,0,3,0); + + addMessageComponents(body, cons, getMessage(), + getMaxCharactersPerLineCount(), false); + top.add(realBody, BorderLayout.CENTER); + + addIcon(top); + top.setAlignmentX(Component.CENTER_ALIGNMENT); + return row(flex(), column(flex(), cell(top), flex()), flex()).getComponent(); + } + + @Override + protected void addIcon(Container top) { + Icon sideIcon = getIcon(); + + if (sideIcon != null) { + UILabel iconLabel = new UILabel(sideIcon); + iconLabel.setName("OptionPane.iconLabel"); + iconLabel.setVerticalAlignment(SwingConstants.TOP); + top.add(row(cell(iconLabel), Layouts.fix(10)).getComponent(), BorderLayout.BEFORE_LINE_BEGINS); + } + } + + @Override + protected Icon getIconForType(int messageType) { + String iconId = null; + switch (messageType) { + case 0: + iconId = "error"; + break; + case 1: + iconId = "information"; + break; + case 2: + iconId = "warning"; + break; + case 3: + iconId = "question"; + break; + default: + break; + } + if (iconId != null) { + return new LazyIcon(iconId, 20); + } + return null; + } + + public Dimension getPreferredSize(JComponent c) { + if (c == optionPane) { + Dimension size = super.getPreferredSize(c); + size.width = Math.max(FineUIScale.scale(360), size.width); + size.height = Math.max(FineUIScale.scale(130), size.height); + return size; + } + return null; + } } diff --git a/designer-base/src/main/java/com/fine/theme/utils/FineUIStyle.java b/designer-base/src/main/java/com/fine/theme/utils/FineUIStyle.java index 925c0a438d..5348a0b6ed 100644 --- a/designer-base/src/main/java/com/fine/theme/utils/FineUIStyle.java +++ b/designer-base/src/main/java/com/fine/theme/utils/FineUIStyle.java @@ -28,6 +28,7 @@ public interface FineUIStyle { String BRAND_COLOR_LABEL = "brandColorLabel"; String BUTTON_TAB_ACTION = "tabAction"; String LABEL_BOLD = "boldLabel"; + String LABEL_TIP_WINDOW_TITLE = "tipWindowTitleLabel"; String LABEL_SECONDARY = "secondaryLabel"; String LABEL_TIP = "tipLabel"; String LABEL_WARNING_TIP = "warningTipLabel"; diff --git a/designer-base/src/main/java/com/fr/design/components/notification/NotificationDialog.java b/designer-base/src/main/java/com/fr/design/components/notification/NotificationDialog.java index d9a1cf0c21..190cafe6fe 100644 --- a/designer-base/src/main/java/com/fr/design/components/notification/NotificationDialog.java +++ b/designer-base/src/main/java/com/fr/design/components/notification/NotificationDialog.java @@ -1,5 +1,8 @@ package com.fr.design.components.notification; +import com.fine.theme.icon.LazyIcon; +import com.fine.theme.utils.FineUIScale; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.base.function.ThrowableRunnable; import com.fr.base.svg.IconUtils; import com.fr.design.components.page.PageControlModel; @@ -53,7 +56,7 @@ public class NotificationDialog extends JDialog { */ private static final int CONTENT_SCROLL_WIDTH = 280; - private static final int CONTENT_WIDTH = 300; + private static final int CONTENT_WIDTH = 360; private static final int CONTENT_HEIGHT = 100; /** * 通知框的外部宽高 @@ -148,21 +151,20 @@ public class NotificationDialog extends JDialog { protected JPanel createContentPanel() { JPanel contentPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); - contentPanel.setBorder(BorderFactory.createEmptyBorder(8, 10, 8, 10)); + contentPanel.setBorder(new ScaledEmptyBorder(8, 10, 8, 10)); contentPanel.setName("contentPanel"); NotificationModel model = getCurrentModel(); UILabel icon = new UILabel(getIconForType(model.getType())); - icon.setPreferredSize(new Dimension(16, 16)); JPanel iconPanel = FRGUIPaneFactory.createBorderLayout_L_Pane(); - iconPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 10, 8)); + iconPanel.setBorder(new ScaledEmptyBorder(0, 5, 10, 8)); iconPanel.add(icon, BorderLayout.NORTH); contentPanel.add(iconPanel, BorderLayout.WEST); JPanel centerPanel = FRGUIPaneFactory.createBorderLayout_S_Pane(); - centerPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 5, 5)); + centerPanel.setBorder(new ScaledEmptyBorder(0, 0, 5, 5)); NotificationMessage[] messages = model.getMessages(); List messageComponents = Arrays.stream(messages) @@ -213,7 +215,7 @@ public class NotificationDialog extends JDialog { jScrollPane.setBorder(BorderFactory.createEmptyBorder()); centerPanel.add(jScrollPane, BorderLayout.CENTER); - centerPanel.setPreferredSize(CONTENT_SIZE); + centerPanel.setPreferredSize(FineUIScale.scale(CONTENT_SIZE)); contentPanel.add(centerPanel, BorderLayout.CENTER); @@ -282,7 +284,7 @@ public class NotificationDialog extends JDialog { NotificationAction action = currentModel.getAction(); if (action != null) { UIButton actionButton = new UIButton(action.name()); - actionButton.setPreferredSize(BUTTON_DIMENSION); + actionButton.setPreferredSize(FineUIScale.scale(BUTTON_DIMENSION)); actionButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -293,7 +295,7 @@ public class NotificationDialog extends JDialog { } UIButton knowButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Know")); - knowButton.setPreferredSize(BUTTON_DIMENSION); + knowButton.setPreferredSize(FineUIScale.scale(BUTTON_DIMENSION)); knowButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -359,21 +361,21 @@ public class NotificationDialog extends JDialog { protected Icon getIconForType(NotificationType type) { - String iconPath; + String iconId; switch (type) { case ERROR: - iconPath = "/com/fr/design/standard/reminder/reminder_error.svg"; + iconId = "error"; break; case INFO: - iconPath = "/com/fr/design/standard/reminder/reminder_success.svg"; + iconId = "success"; break; case WARNING: - iconPath = "/com/fr/design/standard/reminder/reminder_warning.svg"; + iconId = "warning"; break; default: return null; } - return IconUtils.readIcon(iconPath); + return new LazyIcon(iconId, 20); } private void destroy() { diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java index a50a35b11d..3d178194bf 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java @@ -1,6 +1,7 @@ package com.fr.design.data.datapane; import com.fine.theme.icon.LazyIcon; +import com.fine.theme.light.ui.FineRoundBorder; import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.base.TableData; import com.fr.data.MultiResultTableData; @@ -1116,6 +1117,7 @@ public class TableDataTreePane extends BasicTableDataTreePane { }; basicPane.setLayout(new BorderLayout()); basicPane.add(tips, BorderLayout.NORTH); + scrollPane.setBorder(new FineRoundBorder()); basicPane.add(scrollPane, BorderLayout.CENTER); BasicDialog basicDialog = basicPane.showSmallWindow(SwingUtilities.getWindowAncestor(TableDataTreePane.this), new DialogActionAdapter() { @Override diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java b/designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java index ded29560fe..be39360327 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/preview/PreviewTablePane.java @@ -102,7 +102,7 @@ public class PreviewTablePane extends BasicPane { private PreviewTableDesensitizationPane desensitizationPane; private static final int PREVIEW_TABLE_MIN_COLUMN_WIDTH = FineUIScale.scale(75); - private static final int PREVIEW_TABLE_WIDTH = FineUIScale.scale(600); + private static final int PREVIEW_TABLE_WIDTH = FineUIScale.scale(610); /** * 用于refreshLabel的鼠标监听 diff --git a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/EmbeddedTableDataPane.java b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/EmbeddedTableDataPane.java index 8ab58d8603..984d170343 100644 --- a/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/EmbeddedTableDataPane.java +++ b/designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/EmbeddedTableDataPane.java @@ -1,5 +1,6 @@ package com.fr.design.data.tabledata.tabledatapane; +import com.fine.theme.light.ui.FineTableHeaderUI; import com.fine.theme.utils.FineUIScale; import com.fr.data.impl.EmbeddedTableData; import com.fr.design.constants.LayoutConstants; @@ -40,9 +41,9 @@ import static com.fine.swing.ui.layout.Layouts.column; import static com.fine.swing.ui.layout.Layouts.flex; public class EmbeddedTableDataPane extends AbstractTableDataPane { - private static final int MIN_CELL_WIDTH = 30; + private static final int MIN_CELL_WIDTH = FineUIScale.scale(30); private static final int PREVIEW_TABLE_MIN_COLUMN_WIDTH = FineUIScale.scale(75); - private static final int PREVIEW_TABLE_WIDTH = FineUIScale.scale(600); + private static final int PREVIEW_TABLE_WIDTH = FineUIScale.scale(860); private JTable dataJTable ; private UITableScrollPane scrollPane; private UILabel coordinatelabel; @@ -68,7 +69,8 @@ public class EmbeddedTableDataPane extends AbstractTableDataPane OPTION_MAP = new HashMap<>(); + public Icon successMessageIcon; + static { OPTION_MAP.put(DEFAULT_OPTION, OPTION_DEFAULT); OPTION_MAP.put(YES_NO_OPTION, OPTION_YES_NO); @@ -42,6 +45,17 @@ public class FineJOptionPane extends JOptionPane { private final static String CONFIRM_DIALOG_TITLE = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Dialog_Prompt"); private final static String INPUT_DIALOG_TITLE = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"); + public FineJOptionPane(Object message, int messageType, int optionType, + Icon icon, Object[] options, Object initialValue, + boolean successMessage) { + super(message, messageType, optionType, icon, options, initialValue); + if (successMessage) { + successMessageIcon = new LazyIcon("success", 20); + } + } + + + /** * 使用默认 标题 和 消息类型 的消息提示弹出框 * @param parentComponent 父容器 @@ -54,6 +68,34 @@ public class FineJOptionPane extends JOptionPane { INFORMATION_MESSAGE); } + /** + * 使用 success 图标、 默认 标题 和 消息类型 的消息提示弹出框 + * @param parentComponent 父容器 + * @param message 具体的提示消息 + * @throws HeadlessException + */ + public static void showSuccessMessageDialog(Component parentComponent, Object message) + throws HeadlessException { + showMessageDialog(parentComponent, message, MESSAGE_DIALOG_TITLE, INFORMATION_MESSAGE, true); + } + + + /** + * 使用默认 标题 和 消息类型 的消息提示弹出框 + * @param parentComponent 父容器 + * @param message 具体的提示消息 + * @param title 标题 + * @param messageType 消息类型 + * @param isSuccessMessage 是否使用 success 图标,如果不是则根据消息类型生成图标 + * @throws HeadlessException + */ + public static void showMessageDialog(Component parentComponent, Object message, + String title, int messageType, boolean isSuccessMessage) + throws HeadlessException { + showOptionDialog(parentComponent, message, title, DEFAULT_OPTION, + messageType, null, OPTION_DEFAULT, null, isSuccessMessage); + } + /** * 使用默认 Icon 的消息提示弹出框 * @param parentComponent 父容器 @@ -101,7 +143,7 @@ public class FineJOptionPane extends JOptionPane { Icon icon, Object[] options, Object initialValue) throws HeadlessException { showOptionDialog(parentComponent, message, title, optionType, - messageType, icon, options, initialValue); + messageType, icon, options, initialValue, false); } /** @@ -182,7 +224,7 @@ public class FineJOptionPane extends JOptionPane { Object[] options, Object initialValue) throws HeadlessException { return showOptionDialog(parentComponent, message, title, optionType, - messageType, icon, options, initialValue); + messageType, icon, options, initialValue, false); } /** @@ -199,7 +241,7 @@ public class FineJOptionPane extends JOptionPane { String title, Icon icon, Object initialValue, ActionListener listener) throws HeadlessException { int val = showOptionDialog(parentComponent, message, title, JOptionPane.DEFAULT_OPTION, - FineJOptionPane.WARNING_MESSAGE, icon, OPTION_OK_CANCEL, initialValue); + FineJOptionPane.WARNING_MESSAGE, icon, OPTION_OK_CANCEL, initialValue, false); if (val == JOptionPane.OK_OPTION && listener!=null) { listener.actionPerformed(null); } @@ -315,4 +357,76 @@ public class FineJOptionPane extends JOptionPane { return value; } + /** + * 根据 message type 生成 icon + * @return + */ + public Icon getIcon() { + if (successMessageIcon != null) { + return successMessageIcon; + } + switch (messageType) { + case ERROR_MESSAGE: + return new LazyIcon("error", 20); + case WARNING_MESSAGE: + return new LazyIcon("warning", 20); + case INFORMATION_MESSAGE: + return new LazyIcon("information", 20); + case QUESTION_MESSAGE: + return new LazyIcon("question", 20); + default: + return icon; + } + } + + /** + * 自定义的确认弹出框 + * @param parentComponent 父容器 + * @param message 具体的提示消息 + * @param title 标题 + * @param optionType 选项类型 + * @param messageType 消息类型 + * @param icon 图标 + * @param options 选项 + * @param initialValue 初始选项 + * @param isSuccessMessage 是否使用 success 图标 + */ + public static int showOptionDialog(Component parentComponent, Object message, + String title, int optionType, int messageType, + Icon icon, Object[] options, Object initialValue, + boolean isSuccessMessage) { + FineJOptionPane pane = new FineJOptionPane(message, messageType, + optionType, icon, + options, initialValue, isSuccessMessage); + + pane.setInitialValue(initialValue); + pane.setComponentOrientation(((parentComponent == null) ? + getRootFrame() : parentComponent).getComponentOrientation()); + + JDialog dialog = pane.createDialog(parentComponent, title); + + pane.selectInitialValue(); + dialog.show(); + dialog.dispose(); + + Object selectedValue = pane.getValue(); + + if (selectedValue == null){ + return CLOSED_OPTION; + } + if (options == null) { + if (selectedValue instanceof Integer) { + return ((Integer) selectedValue).intValue(); + } + return CLOSED_OPTION; + } + for(int counter = 0, maxCounter = options.length; + counter < maxCounter; counter++) { + if (options[counter].equals(selectedValue)) { + return counter; + } + } + return CLOSED_OPTION; + } + } diff --git a/designer-base/src/main/java/com/fr/design/dialog/UIDetailErrorLinkDialog.java b/designer-base/src/main/java/com/fr/design/dialog/UIDetailErrorLinkDialog.java index 24ff7e10c7..ac4298fba8 100644 --- a/designer-base/src/main/java/com/fr/design/dialog/UIDetailErrorLinkDialog.java +++ b/designer-base/src/main/java/com/fr/design/dialog/UIDetailErrorLinkDialog.java @@ -1,5 +1,9 @@ package com.fr.design.dialog; +import com.fine.theme.icon.LazyIcon; +import com.fine.theme.utils.FineUIScale; +import com.fine.theme.utils.FineUIStyle; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.base.GraphHelper; import com.fr.design.dialog.link.MessageWithLink; import com.fr.design.gui.ibutton.UIButton; @@ -7,6 +11,7 @@ import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextarea.UITextArea; import com.fr.design.i18n.Toolkit; +import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.DesignUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.IOUtils; @@ -30,6 +35,11 @@ import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.SwingUtilities; +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.column; +import static com.fine.swing.ui.layout.Layouts.fix; +import static com.fine.swing.ui.layout.Layouts.row; + /** * 带链接的错误详情弹窗 * @@ -40,13 +50,13 @@ import javax.swing.SwingUtilities; public class UIDetailErrorLinkDialog extends UIDialog { private static final Color LINK_COLOR = new Color(51, 152, 253); - private static final int GAP_5 = 5; + private static final int GAP_8 = 8; private static final int GAP_10 = 10; private static final String TAG_A_START = ""; private static final String TAG_A_END = ""; private static final double SCALE = 1.2; - private final Dimension dimension = new Dimension(300, 180); + private final Dimension dimension = new Dimension(360, 180); public static Builder newBuilder() { return new Builder(); @@ -65,15 +75,12 @@ public class UIDetailErrorLinkDialog extends UIDialog { private void init(Builder builder) { this.setTitle(builder.title); // 顶部 图标和提示 - UILabel errorIcon = new UILabel(IOUtils.readIcon("com/fr/design/images/lookandfeel/Information_Icon_Error_32x32.png")); + UILabel errorIcon = new UILabel(new LazyIcon("error", 20)); UILabel errorInfo= new UILabel(builder.reason); - JPanel topPane = new JPanel(new FlowLayout(FlowLayout.LEFT, GAP_10, GAP_5)); - topPane.add(errorIcon); - topPane.add(errorInfo); + FineUIStyle.setStyle(errorInfo, FineUIStyle.LABEL_TIP_WINDOW_TITLE); // 中部 详细内容 - JPanel contentPane = new JPanel(new BorderLayout()); - contentPane.setBorder(BorderFactory.createEmptyBorder(0, GAP_5,0,0)); + JPanel contentPane = new JPanel(FRGUIPaneFactory.createScaledBorderLayout(GAP_10, GAP_10)); UILabel errorCodeLabel = new UILabel(Toolkit.i18nText("Fine_Design_Basic_Error_Code", builder.errorCode)); UILabel link = new UILabel(Toolkit.i18nText("Fine_Design_Basic_Show_Error_Stack")); link.setForeground(LINK_COLOR); @@ -92,13 +99,17 @@ public class UIDetailErrorLinkDialog extends UIDialog { contentPane.add(link, BorderLayout.SOUTH); // 确定 + 取消 - JPanel actionPane = new JPanel(new FlowLayout(FlowLayout.RIGHT, GAP_10, GAP_5)); + JPanel actionPane = new JPanel(new FlowLayout(FlowLayout.RIGHT, GAP_10, GAP_8)); actionPane.add(createButton(Toolkit.i18nText("Fine-Design_Report_OK"))); actionPane.add(createButton(Toolkit.i18nText("Fine-Design_Basic_Cancel"))); - this.getContentPane().add(topPane, BorderLayout.NORTH); - this.getContentPane().add(contentPane, BorderLayout.CENTER); + + this.getContentPane().add(column(10, + row(10, cell(errorIcon), cell(errorInfo)), + row(10, fix(20), cell(contentPane)) + ).with(it -> it.setBorder(new ScaledEmptyBorder(GAP_10, GAP_10, GAP_10, GAP_10))).getComponent()); + this.getContentPane().add(actionPane, BorderLayout.SOUTH); - this.setSize(dimension); + this.setSize(FineUIScale.scale(dimension)); this.setResizable(false); this.setModal(true); GUICoreUtils.centerWindow(this); diff --git a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java index 7c24d0636f..af825fb4a6 100644 --- a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java +++ b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java @@ -41,6 +41,7 @@ import com.fr.design.gui.itextarea.UITextArea; import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxTextArea; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.SyntaxConstants; +import com.fr.design.i18n.DesignSizeI18nManager; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; @@ -743,7 +744,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula { } public BasicDialog showLargeWindow(Window window, DialogActionListener l) { - Dimension dimension = new Dimension(900, 640); + Dimension dimension = DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.formula.FormulaPane"); BasicDialog basicDialog = super.showWindowWithCustomSize(window, l, dimension); basicDialog.setResizable(true); return basicDialog; @@ -915,7 +916,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula { private void showMessageDialog(String message, boolean formulaValid, boolean calException) { if (formulaValid && !calException) { - FineJOptionPane.showMessageDialog( + FineJOptionPane.showSuccessMessageDialog( FormulaPane.this, message); } else { diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/JListControlPane.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/JListControlPane.java index 5b6bc8cdea..828d9f845f 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/JListControlPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/JListControlPane.java @@ -383,7 +383,7 @@ public abstract class JListControlPane extends JControlPane implements ListContr @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - setPreferredSize(FineUIScale.scale(new Dimension(list.getWidth(), 24))); + setPreferredSize(new Dimension(list.getWidth(), FineUIScale.scale(24))); if (value instanceof ListModelElement) { ListModelElement element = ((ListModelElement) value); Nameable nameable = element.wrapper; diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/ListControlPaneHelper.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/ListControlPaneHelper.java index 7fe1a27efe..701bdeefb7 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/ListControlPaneHelper.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/ListControlPaneHelper.java @@ -1,5 +1,6 @@ package com.fr.design.gui.controlpane; +import com.fine.theme.utils.FineUIScale; import com.fr.design.beans.BasicBeanPane; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.gui.ilist.JNameEdList; @@ -38,6 +39,7 @@ import java.util.Map; */ class ListControlPaneHelper { private static final int EDIT_RANGE = 25; // 编辑按钮的x坐标范围 + private static final int DIALOG_GAP = 25; // 编辑按钮的x坐标范围 private ListControlPaneProvider listControlPane; @@ -160,7 +162,7 @@ class ListControlPaneHelper { // 不能太低 int maxY = frame.getLocationOnScreen().y + frame.getHeight() - popupEditDialog.getHeight(); if (resultPos.y > maxY) { - resultPos.y = maxY; + resultPos.y = maxY - FineUIScale.scale(DIALOG_GAP); } // 也不能太高 int minY = frame.getLocationOnScreen().y + EDIT_RANGE; diff --git a/designer-base/src/main/java/com/fr/design/gui/syntax/ui/rtextarea/RTextAreaBase.java b/designer-base/src/main/java/com/fr/design/gui/syntax/ui/rtextarea/RTextAreaBase.java index db3f50c327..9a39e31fcb 100644 --- a/designer-base/src/main/java/com/fr/design/gui/syntax/ui/rtextarea/RTextAreaBase.java +++ b/designer-base/src/main/java/com/fr/design/gui/syntax/ui/rtextarea/RTextAreaBase.java @@ -24,6 +24,7 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JTextArea; +import javax.swing.UIManager; import javax.swing.event.CaretEvent; import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.TextUI; @@ -73,7 +74,7 @@ int currentCaretY; // Used to know when to rehighlight current line. private RTAMouseListener mouseListener; private static final Color DEFAULT_CARET_COLOR = new ColorUIResource(255,51,51); - private static final Color DEFAULT_CURRENT_LINE_HIGHLIGHT_COLOR = new Color(255,255,170); + private static final Color DEFAULT_CURRENT_LINE_HIGHLIGHT_COLOR = UIManager.getColor("TextArea.currentLineHighlightColor"); private static final Color DEFAULT_MARGIN_LINE_COLOR = new Color(255,224,224); private static final int DEFAULT_TAB_SIZE = 4; private static final int DEFAULT_MARGIN_LINE_POSITION = 80; diff --git a/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java b/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java index c183dac2e9..5bac69c3f8 100644 --- a/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java +++ b/designer-base/src/main/java/com/fr/design/lock/LockInfoDialog.java @@ -1,7 +1,11 @@ package com.fr.design.lock; +import com.fine.theme.icon.LazyIcon; +import com.fine.theme.utils.FineUIScale; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.design.file.TemplateTreePane; import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.DesignSizeI18nManager; import com.fr.design.i18n.Toolkit; @@ -39,12 +43,12 @@ public class LockInfoDialog extends JDialog { super(DesignerContext.getDesignerFrame()); this.saveEnum = saveEnum; JPanel panel = new JPanel(new BorderLayout()); - panel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0)); + panel.setBorder(new ScaledEmptyBorder(0, 10, 0, 0)); panel.add(createContentPane(userInfo), BorderLayout.CENTER); panel.add(createControlPane(), BorderLayout.SOUTH); this.getContentPane().add(panel); this.setTitle(Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Title_Hint")); - this.setSize(DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.lock.LockInfoDialog")); + this.setSize(FineUIScale.scale(DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.lock.LockInfoDialog"))); this.setResizable(false); this.setModal(true); GUICoreUtils.centerWindow(this); @@ -53,40 +57,37 @@ public class LockInfoDialog extends JDialog { private JPanel createContentPane(UserInfo userInfo) { JPanel contentPanel = new JPanel(new BorderLayout()); - contentPanel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); - JPanel messagePane = new JPanel(new BorderLayout(13, 0)); - UILabel iconLabel = new UILabel(IOUtils.readIcon("/com/fr/design/images/warnings/warning32.png")); - iconLabel.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0)); + contentPanel.setBorder(new ScaledEmptyBorder(10, 0, 10, 10)); + JPanel messagePane = FRGUIPaneFactory.createScaledBorderLayout_S_Pane(10, 0); + UILabel iconLabel = new UILabel(new LazyIcon("warning", 20)); messagePane.add(iconLabel, BorderLayout.WEST); UILabel tipLabel = new UILabel(Toolkit.i18nText("Fine-Design_Template_Lock_And_SaveAs_Tip")); - tipLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); messagePane.add(tipLabel, BorderLayout.CENTER); contentPanel.add(messagePane, BorderLayout.NORTH); JPanel detailInfoPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); - detailInfoPane.setBorder(BorderFactory.createEmptyBorder(0, 45, 0,0)); + detailInfoPane.setBorder(new ScaledEmptyBorder(0, 30, 0,0)); if (userInfo != null && StringUtils.isNotEmpty(userInfo.getUserName())) { UILabel label = createLabel(Toolkit.i18nText("Fine-Design_Template_Lock_Holder", userInfo.getUserName())); - label .setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0)); detailInfoPane.add(label); } if (userInfo != null && StringUtils.isNotEmpty(userInfo.getIp())) { detailInfoPane.add(createLabel(Toolkit.i18nText("Fine-Design_Template_Lock_Holder_Ip", userInfo.getIp()) )); } detailInfoPane.add(createLabel(Toolkit.i18nText("Fine-Design_Template_Lock_Get_Time", FORMATTER.format(LocalDateTime.now())))); - contentPanel.add(detailInfoPane, BorderLayout.CENTER); + contentPanel.add(new UIScrollPane(detailInfoPane), BorderLayout.CENTER); return contentPanel; } private UILabel createLabel(String text) { UILabel label = new UILabel(text); label.setForeground(Color.GRAY); - label.setBorder(BorderFactory.createEmptyBorder(8, 0, 0, 0)); + label.setBorder(new ScaledEmptyBorder(10, 0, 0, 0)); return label; } private JPanel createControlPane() { - JPanel controlPane = new JPanel(new FlowLayout(FlowLayout.RIGHT, 10, 5)); - controlPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0,5)); + JPanel controlPane = new JPanel(new FlowLayout(FlowLayout.RIGHT, FineUIScale.scale(10), 0)); + controlPane.setBorder(new ScaledEmptyBorder(0, 0, 10,10)); UIButton saveAsButton = new UIButton(Toolkit.i18nText("Fine_Design_Template_Lock_Save_As")); UIButton cancelButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Button_Cancel")); saveAsButton.addActionListener(new ActionListener() { diff --git a/designer-base/src/main/java/com/fr/design/parameter/ParameterInputPane.java b/designer-base/src/main/java/com/fr/design/parameter/ParameterInputPane.java index 7c8f675b1e..6c34eb9618 100644 --- a/designer-base/src/main/java/com/fr/design/parameter/ParameterInputPane.java +++ b/designer-base/src/main/java/com/fr/design/parameter/ParameterInputPane.java @@ -3,6 +3,7 @@ */ package com.fr.design.parameter; +import com.fine.theme.utils.FineUIUtils; import com.fr.base.BaseFormula; import com.fr.base.StoreProcedureParameter; import com.fr.base.Utils; @@ -75,8 +76,8 @@ public class ParameterInputPane extends BasicPane { //Content Pane. JPanel contentPane = FRGUIPaneFactory.createY_AXISBoxInnerContainer_S_Pane(); - this.add(new JScrollPane(contentPane), BorderLayout.CENTER); - contentPane.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Parameters") + ":")); + this.add(FineUIUtils.wrapComponentWithTitle(new JScrollPane( + contentPane), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Parameters")), BorderLayout.CENTER); flowTableLayoutHelper = new FlowTableLayoutHelper(); diff --git a/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java b/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java index d2d04b8d4c..013a3d1e7d 100644 --- a/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java +++ b/designer-base/src/main/java/com/fr/design/remote/button/IconButton.java @@ -1,5 +1,6 @@ package com.fr.design.remote.button; +import com.fine.theme.icon.LazyIcon; import com.fr.base.BaseUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.stable.StringUtils; @@ -26,7 +27,7 @@ public final class IconButton extends JButton { } public IconButton() { - this(BaseUtils.readIcon("com/fr/design/remote/images/icon_tab_close_normal.png")); + this(new LazyIcon("close")); } @Override diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/AbstractListControlPane.java b/designer-base/src/main/java/com/fr/design/remote/ui/AbstractListControlPane.java index bca0422eab..985394a6e4 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/AbstractListControlPane.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/AbstractListControlPane.java @@ -1,8 +1,12 @@ package com.fr.design.remote.ui; +import com.fine.theme.icon.LazyIcon; +import com.formdev.flatlaf.ui.FlatUIUtils; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.base.BaseUtils; import com.fr.design.actions.UpdateAction; import com.fr.design.beans.BasicBeanPane; +import com.fr.design.border.FineBorderFactory; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.DialogActionAdapter; @@ -35,8 +39,7 @@ import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import java.awt.BorderLayout; -import java.awt.CardLayout; +import java.awt.*; import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.List; @@ -100,7 +103,6 @@ public abstract class AbstractListControlPane extends BasicPane { // 左右分割布局 JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true, leftPane, cardPane); - mainSplitPane.setBorder(BorderFactory.createLineBorder(GUICoreUtils.getTitleLineBorderColor())); mainSplitPane.setOneTouchExpandable(true); add(mainSplitPane, BorderLayout.CENTER); mainSplitPane.setDividerLocation(shortCuts.length * SHORT_WIDTH); @@ -120,6 +122,12 @@ public abstract class AbstractListControlPane extends BasicPane { toolbarDef.addShortCut(sj.getShortCut()); } toolBar = ToolBarDef.createJToolBar(); + toolBar.setBackground(FlatUIUtils.getUIColor("background.normal", Color.WHITE)); + toolBar.setBorder(BorderFactory.createCompoundBorder( + FineBorderFactory.createUnderlineBorder(FlatUIUtils.getUIColor("defaultBorderColor", Color.GRAY)), + new ScaledEmptyBorder(3, 0, 3, 0) + )); + toolBar.setBorderPainted(true); toolbarDef.updateToolBar(toolBar); leftPane.add(toolBar, BorderLayout.NORTH); } @@ -128,7 +136,9 @@ public abstract class AbstractListControlPane extends BasicPane { private void initLeftList(JPanel leftPane) { authorityList = createList(); authorityList.setName(LIST_NAME); + authorityList.setBackground(FlatUIUtils.getUIColor("background.normal", Color.WHITE)); leftPane.add(new UIScrollPane(authorityList), BorderLayout.CENTER); + leftPane.setBorder(FineBorderFactory.createWrappedRoundBorder()); authorityList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); @@ -503,7 +513,7 @@ public abstract class AbstractListControlPane extends BasicPane { AddItemUpdateAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Action_Choose")); this.setMnemonic('A'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png")); + this.setSmallIcon(new LazyIcon("add_popup")); } @Override @@ -572,8 +582,7 @@ public abstract class AbstractListControlPane extends BasicPane { RemoveItemAction() { this.setName(Toolkit.i18nText("Fine-Design_Basic_Action_Remove")); this.setMnemonic('R'); - this.setSmallIcon(BaseUtils - .readIcon(IconPathConstants.TD_REMOVE_ICON_PATH)); + this.setSmallIcon(new LazyIcon("remove")); } @Override diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/AbstractManagerPane.java b/designer-base/src/main/java/com/fr/design/remote/ui/AbstractManagerPane.java index c92a7a8513..0259cd5797 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/AbstractManagerPane.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/AbstractManagerPane.java @@ -1,5 +1,11 @@ package com.fr.design.remote.ui; +import com.fine.theme.light.ui.FineRoundBorder; +import com.fine.theme.utils.FineUIScale; +import com.fine.theme.utils.FineUIStyle; +import com.fine.theme.utils.FineUIUtils; +import com.formdev.flatlaf.ui.FlatUIUtils; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.base.BaseUtils; import com.fr.design.constants.LayoutConstants; import com.fr.design.dialog.BasicPane; @@ -46,6 +52,9 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.row; + /** * 选择设计角色、用户面板的基类 @@ -197,7 +206,7 @@ public abstract class AbstractManagerPane extends BasicPane { public AbstractManagerPane() { - this.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 4)); + this.setBorder(new ScaledEmptyBorder(10, 10, 10, 10)); this.setLayout(new BorderLayout()); this.add( TableLayoutHelper.createCommonTableLayoutPane( @@ -235,22 +244,19 @@ public abstract class AbstractManagerPane extends BasicPane { } protected abstract JPanel leftPanel(); + protected abstract String leftPanelTitle(); private JPanel createLeftPanel() { JPanel content = leftPanel(); // 搜索 - JPanel searchPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 5)); - searchPanel.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5)); - keyField.setPreferredSize(new Dimension(270, 20)); + JPanel searchPanel = new JPanel(new BorderLayout()); keyField.requestFocus(); keyField.addKeyListener(keyFieldKeyListener); keyField.getDocument().addDocumentListener(documentListener); - keyButton.setIcon(BaseUtils.readIcon("com/fr/design/images/buttonicon/user_search_normal.png")); - keyButton.setToolTipText(Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Search")); + keyButton.setText(Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Search")); keyButton.addActionListener(keyButtonActionListener); - searchPanel.add(keyField); - searchPanel.add(keyButton); + searchPanel.add(row(10, cell(keyField).weight(0.45), cell(keyButton).weight(0.1)).getComponent()); // 内容列表 addingListModel = new DefaultListModel<>(); @@ -283,7 +289,10 @@ public abstract class AbstractManagerPane extends BasicPane { content.add(searchPanel, BorderLayout.NORTH); content.add(listPane, BorderLayout.CENTER); - return content; + + JPanel pane = new JPanel(new BorderLayout()); + pane.add(FineUIUtils.wrapComponentWithTitle(content, leftPanelTitle())); + return pane; } protected abstract AddingMemberListCellRender getAddingMemberListCellRender(); @@ -291,6 +300,7 @@ public abstract class AbstractManagerPane extends BasicPane { protected abstract AddedMemberListCellRender getAddedMemberListCellRender(); protected abstract JPanel rightPanel(); + protected abstract String rightPanelTitle(); private JPanel createRightPanel() { JPanel content = rightPanel(); @@ -301,8 +311,8 @@ public abstract class AbstractManagerPane extends BasicPane { Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Selected_Member_Count", String.valueOf(addedMembers.size())) ); - countLabel.setBorder(BorderFactory.createEmptyBorder(7, 12, 8, 0)); - countLabel.setForeground(new Color(0x8F8F92)); + FineUIStyle.setStyle(countLabel, FineUIStyle.LABEL_TIP); + countLabel.setPreferredSize(new Dimension((int) countLabel.getPreferredSize().getWidth(), FineUIScale.scale(20))); addedListModel = new DefaultListModel<>(); addedList = new AddedMemberList(addedListModel); @@ -316,7 +326,9 @@ public abstract class AbstractManagerPane extends BasicPane { content.add(countLabel, BorderLayout.NORTH); content.add(listPane, BorderLayout.CENTER); - return content; + JPanel pane = new JPanel(new BorderLayout()); + pane.add(FineUIUtils.wrapComponentWithTitle(content, rightPanelTitle())); + return pane; } diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityEditorPane.java b/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityEditorPane.java index da5817b853..3ac9cdc9d4 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityEditorPane.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityEditorPane.java @@ -1,5 +1,7 @@ package com.fr.design.remote.ui; +import com.fine.theme.utils.FineUIUtils; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.design.beans.BasicBeanPane; import com.fr.design.border.UITitledBorder; import com.fr.design.gui.icontainer.UIScrollPane; @@ -30,20 +32,13 @@ public class AuthorityEditorPane extends BasicBeanPane { // 模板设计权限配置 public AuthorityEditorPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); - this.setBorder( - BorderFactory.createCompoundBorder( - new EmptyBorder(6, 0, 6, 6), - UITitledBorder.createBorderWithTitle( - com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Template_Authority_Config") - ) - ) - ); IOFileNodeFilter filter = new IOFileNodeFilter(new String[]{".cptx", ".cpt", ".class", ".frm", ".form"}); tree.setDigIn(true); tree.setFileNodeFilter(filter); UIScrollPane scrollPane = new UIScrollPane(tree); scrollPane.setBorder(BorderFactory.createEmptyBorder()); - this.add(scrollPane, BorderLayout.CENTER); + this.add(FineUIUtils.wrapComponentWithTitle(scrollPane, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Template_Authority_Config")), BorderLayout.CENTER); + this.setBorder(new ScaledEmptyBorder(0, 15, 0, 0)); tree.refreshEnv(); } diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityListCustomRolePane.java b/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityListCustomRolePane.java index 3ae6a097b3..fbb3259f7a 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityListCustomRolePane.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityListCustomRolePane.java @@ -1,5 +1,6 @@ package com.fr.design.remote.ui; +import com.fine.theme.icon.LazyIcon; import com.fr.base.BaseUtils; import com.fr.design.i18n.Toolkit; import com.fr.design.remote.RemoteDesignAuthorityCreator; @@ -15,7 +16,7 @@ public class AuthorityListCustomRolePane extends AbstractListControlPane { new RemoteDesignAuthorityCreator( // 远程设计用户 Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Custom"), - BaseUtils.readIcon("com/fr/design/remote/images/icon_Member_normal@1x.png"), + new LazyIcon("member"), DesignAuthority.class, AuthorityEditorPane.class) }; diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityListUserPane.java b/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityListUserPane.java index ccc85049a5..5b0abd8e2c 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityListUserPane.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityListUserPane.java @@ -1,5 +1,6 @@ package com.fr.design.remote.ui; +import com.fine.theme.icon.LazyIcon; import com.fr.base.BaseUtils; import com.fr.design.i18n.Toolkit; import com.fr.design.remote.RemoteDesignAuthorityCreator; @@ -15,7 +16,7 @@ public class AuthorityListUserPane extends AbstractListControlPane { new RemoteDesignAuthorityCreator( // 远程设计用户 Toolkit.i18nText("Fine-Design_Basic_Remote_Design_User"), - BaseUtils.readIcon("com/fr/design/remote/images/icon_Member_normal@1x.png"), + new LazyIcon("member"), DesignAuthority.class, AuthorityEditorPane.class) }; diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityManagerPane.java b/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityManagerPane.java index 2e68cd27a9..648f816372 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityManagerPane.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/AuthorityManagerPane.java @@ -1,6 +1,7 @@ package com.fr.design.remote.ui; import com.fr.design.dialog.BasicPane; +import com.fr.design.gui.frpane.FineTabbedPane; import com.fr.design.gui.frpane.UITabbedPane; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; @@ -18,12 +19,12 @@ public class AuthorityManagerPane extends BasicPane { this.setLayout(FRGUIPaneFactory.createBorderLayout()); //Tabbed Pane - UITabbedPane tabbedPane = new UITabbedPane(); + FineTabbedPane tabbedPane = FineTabbedPane.builder() + .addTab(Toolkit.i18nText("Fine-Design_Basic_User"), userList) + .addTab(Toolkit.i18nText("Fine-Design_Basic_Role"), roleList) + .withHeadRatio(0.2f).build(); this.add(tabbedPane, BorderLayout.CENTER); - tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_User"), userList); - tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_Role"), roleList); - } @Override diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/CustomRoleManagerPane.java b/designer-base/src/main/java/com/fr/design/remote/ui/CustomRoleManagerPane.java index eeedd6eca6..3a0bc12672 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/CustomRoleManagerPane.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/CustomRoleManagerPane.java @@ -1,7 +1,9 @@ package com.fr.design.remote.ui; +import com.fine.theme.utils.FineUIUtils; import com.fr.design.border.UITitledBorder; import com.fr.design.i18n.Toolkit; +import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.remote.ui.list.AddedMemberListCellRender; import com.fr.design.remote.ui.list.AddingMemberListCellRender; import com.fr.design.remote.ui.list.cell.AddedCustomRoleListCellRender; @@ -30,37 +32,26 @@ public class CustomRoleManagerPane extends AbstractManagerPane { @Override protected JPanel rightPanel(){ - JPanel content = new JPanel(new BorderLayout()); - - content.setBorder( - BorderFactory.createCompoundBorder( - new EmptyBorder(6, 0, 0, 0), - UITitledBorder.createBorderWithTitle( - // 已选择的设计角色 - Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Selected_Custom"), - 4 - ) - ) - ); + JPanel content = new JPanel(FRGUIPaneFactory.createScaledBorderLayout(0, 10)); return content; } @Override - protected JPanel leftPanel(){ - JPanel content = new JPanel(new BorderLayout()); + protected String rightPanelTitle() { + return Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Selected_Custom"); + } - content.setBorder( - BorderFactory.createCompoundBorder( - new EmptyBorder(6, 0, 0, 0), - UITitledBorder.createBorderWithTitle( - // 决策系统角色 - Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Decision_Custom"), - 4) - ) - ); + @Override + protected JPanel leftPanel(){ + JPanel content = new JPanel(FRGUIPaneFactory.createScaledBorderLayout(0, 10)); return content; } + @Override + protected String leftPanelTitle() { + return Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Decision_Custom"); + } + @Override protected AddingMemberListCellRender getAddingMemberListCellRender() { return new AddingCustomRoleListCellRender(); diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/UserManagerPane.java b/designer-base/src/main/java/com/fr/design/remote/ui/UserManagerPane.java index 900f98031b..25ab410615 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/UserManagerPane.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/UserManagerPane.java @@ -2,6 +2,7 @@ package com.fr.design.remote.ui; import com.fr.design.border.UITitledBorder; import com.fr.design.i18n.Toolkit; +import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.remote.ui.list.AddedMemberListCellRender; import com.fr.design.remote.ui.list.AddingMemberListCellRender; import com.fr.design.remote.ui.list.cell.AddedUserListCellRender; @@ -30,37 +31,26 @@ public class UserManagerPane extends AbstractManagerPane { @Override protected JPanel rightPanel(){ - JPanel content = new JPanel(new BorderLayout()); - - content.setBorder( - BorderFactory.createCompoundBorder( - new EmptyBorder(6, 0, 0, 0), - UITitledBorder.createBorderWithTitle( - // 已选择的设计用户 - Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Selected_User"), - 4 - ) - ) - ); + JPanel content = new JPanel(FRGUIPaneFactory.createScaledBorderLayout(0, 10)); return content; } @Override - protected JPanel leftPanel(){ - JPanel content = new JPanel(new BorderLayout()); + protected String rightPanelTitle() { + return Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Selected_User"); + } - content.setBorder( - BorderFactory.createCompoundBorder( - new EmptyBorder(6, 0, 0, 0), - UITitledBorder.createBorderWithTitle( - // 决策系统用户 - Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Decision_User"), - 4) - ) - ); + @Override + protected JPanel leftPanel(){ + JPanel content = new JPanel(FRGUIPaneFactory.createScaledBorderLayout(0, 10)); return content; } + @Override + protected String leftPanelTitle() { + return Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Decision_User"); + } + @Override protected AddingMemberListCellRender getAddingMemberListCellRender() { return new AddingUserListCellRender(); diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/list/AddedMemberListCellRender.java b/designer-base/src/main/java/com/fr/design/remote/ui/list/AddedMemberListCellRender.java index 74dba29fad..87b1e5c5f6 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/list/AddedMemberListCellRender.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/list/AddedMemberListCellRender.java @@ -1,5 +1,8 @@ package com.fr.design.remote.ui.list; +import com.fine.swing.ui.layout.Layouts; +import com.fine.theme.utils.FineUIScale; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.design.gui.ilable.UILabel; import com.fr.design.remote.button.IconButton; import com.fr.workspace.server.authority.RemoteDesignMember; @@ -9,9 +12,9 @@ import javax.swing.Icon; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.ListCellRenderer; +import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; -import java.awt.FlowLayout; public abstract class AddedMemberListCellRender extends JPanel implements ListCellRenderer { @@ -19,16 +22,14 @@ public abstract class AddedMemberListCellRender extends JPanel implements ListCe private UILabel label; public AddedMemberListCellRender() { - this.setBorder(BorderFactory.createEmptyBorder()); - this.setLayout(new FlowLayout(FlowLayout.LEFT)); + this.setBorder(new ScaledEmptyBorder(0, 4, 0, 0)); + this.setLayout(new BorderLayout()); label = new UILabel(); - label.setPreferredSize(new Dimension(264, 20)); - this.setPreferredSize(new Dimension(this.getPreferredSize().width, 25)); label.setIcon(getMemberIcon()); - this.add(label); - this.add(new IconButton()); + this.add(Layouts.row(Layouts.cell(label), Layouts.flex(), Layouts.cell(new IconButton())) + .with(it -> it.setPreferredSize(new Dimension((int) it.getPreferredSize().getWidth(), FineUIScale.scale( 20)))).getComponent()); } @Override diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/list/AddingMemberListCellRender.java b/designer-base/src/main/java/com/fr/design/remote/ui/list/AddingMemberListCellRender.java index d25702780e..b688bdccae 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/list/AddingMemberListCellRender.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/list/AddingMemberListCellRender.java @@ -1,7 +1,11 @@ package com.fr.design.remote.ui.list; +import com.fine.swing.ui.layout.Layouts; +import com.fine.theme.utils.FineUIScale; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.remote.button.IconButton; import com.fr.workspace.server.authority.RemoteDesignMember; import javax.swing.BorderFactory; @@ -10,9 +14,7 @@ import javax.swing.JList; import javax.swing.JPanel; import javax.swing.ListCellRenderer; import javax.swing.SwingConstants; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.FlowLayout; +import java.awt.*; public abstract class AddingMemberListCellRender extends JPanel implements ListCellRenderer { @@ -21,20 +23,21 @@ public abstract class AddingMemberListCellRender extends JPanel implements ListC public AddingMemberListCellRender() { - this.setBorder(BorderFactory.createEmptyBorder()); - this.setLayout(new FlowLayout(FlowLayout.LEFT)); + this.setBorder(new ScaledEmptyBorder(0, 4, 0, 0)); + this.setLayout(new BorderLayout()); label = new UILabel(); - label.setPreferredSize(new Dimension(260, 20)); - this.setPreferredSize(new Dimension(this.getPreferredSize().width, 25)); label.setIcon(getMemberIcon()); check = new UICheckBox(); check.setSelected(false); check.setEnabled(true); - this.add(label); - this.add(check); + label = new UILabel(); + label.setIcon(getMemberIcon()); + + this.add(Layouts.row(Layouts.cell(label), Layouts.flex(), Layouts.cell(check)) + .with(it -> it.setPreferredSize(new Dimension((int) it.getPreferredSize().getWidth(), FineUIScale.scale( 20)))).getComponent()); } diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/list/AuthorityListCellRenderer.java b/designer-base/src/main/java/com/fr/design/remote/ui/list/AuthorityListCellRenderer.java index 506c86664e..9aca2e383a 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/list/AuthorityListCellRenderer.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/list/AuthorityListCellRenderer.java @@ -1,5 +1,7 @@ package com.fr.design.remote.ui.list; +import com.formdev.flatlaf.ui.FlatUIUtils; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.report.DesignAuthority; import sun.swing.DefaultLookup; @@ -9,8 +11,7 @@ import javax.swing.JList; import javax.swing.ListCellRenderer; import javax.swing.border.Border; import javax.swing.border.EmptyBorder; -import java.awt.Color; -import java.awt.Component; +import java.awt.*; public abstract class AuthorityListCellRenderer extends JLabel implements ListCellRenderer { diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddedCustomRoleListCellRender.java b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddedCustomRoleListCellRender.java index 9680f63368..2ea79f51b2 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddedCustomRoleListCellRender.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddedCustomRoleListCellRender.java @@ -1,5 +1,6 @@ package com.fr.design.remote.ui.list.cell; +import com.fine.theme.icon.LazyIcon; import com.fr.base.BaseUtils; import com.fr.design.remote.constants.MemberIcon; import com.fr.design.remote.ui.list.AddedMemberListCellRender; @@ -15,7 +16,7 @@ import javax.swing.Icon; public class AddedCustomRoleListCellRender extends AddedMemberListCellRender { @Override protected Icon getMemberIcon() { - return BaseUtils.readIcon(MemberIcon.CUSTOM_ROLE_ICON); + return new LazyIcon("role"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddedUserListCellRender.java b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddedUserListCellRender.java index 2a78e2a034..b2d1001956 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddedUserListCellRender.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddedUserListCellRender.java @@ -1,5 +1,6 @@ package com.fr.design.remote.ui.list.cell; +import com.fine.theme.icon.LazyIcon; import com.fr.base.BaseUtils; import com.fr.design.remote.constants.MemberIcon; import com.fr.design.remote.ui.list.AddedMemberListCellRender; @@ -15,7 +16,7 @@ import javax.swing.Icon; public class AddedUserListCellRender extends AddedMemberListCellRender { @Override protected Icon getMemberIcon() { - return BaseUtils.readIcon(MemberIcon.USER_ICON); + return new LazyIcon("member"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddingCustomRoleListCellRender.java b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddingCustomRoleListCellRender.java index fa51f201ee..05d3caf5fd 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddingCustomRoleListCellRender.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddingCustomRoleListCellRender.java @@ -1,5 +1,6 @@ package com.fr.design.remote.ui.list.cell; +import com.fine.theme.icon.LazyIcon; import com.fr.base.BaseUtils; import com.fr.design.remote.constants.MemberIcon; import com.fr.design.remote.ui.list.AddingMemberListCellRender; @@ -15,7 +16,7 @@ import javax.swing.Icon; public class AddingCustomRoleListCellRender extends AddingMemberListCellRender { @Override protected Icon getMemberIcon() { - return BaseUtils.readIcon(MemberIcon.CUSTOM_ROLE_ICON); + return new LazyIcon("role"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddingUserListCellRender.java b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddingUserListCellRender.java index 1df731afc0..a04635cc51 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddingUserListCellRender.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AddingUserListCellRender.java @@ -1,5 +1,6 @@ package com.fr.design.remote.ui.list.cell; +import com.fine.theme.icon.LazyIcon; import com.fr.base.BaseUtils; import com.fr.design.remote.constants.MemberIcon; import com.fr.design.remote.ui.list.AddingMemberListCellRender; @@ -15,7 +16,7 @@ import javax.swing.Icon; public class AddingUserListCellRender extends AddingMemberListCellRender { @Override protected Icon getMemberIcon() { - return BaseUtils.readIcon(MemberIcon.USER_ICON); + return new LazyIcon("member"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AuthorityCustomRoleListCellRender.java b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AuthorityCustomRoleListCellRender.java index ece2a8a2cf..8355f731bd 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AuthorityCustomRoleListCellRender.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AuthorityCustomRoleListCellRender.java @@ -1,5 +1,6 @@ package com.fr.design.remote.ui.list.cell; +import com.fine.theme.icon.LazyIcon; import com.fr.base.BaseUtils; import com.fr.design.remote.constants.MemberIcon; import com.fr.design.remote.ui.list.AuthorityListCellRenderer; @@ -15,7 +16,7 @@ import javax.swing.Icon; public class AuthorityCustomRoleListCellRender extends AuthorityListCellRenderer { @Override protected Icon getMemberIcon() { - return BaseUtils.readIcon(MemberIcon.CUSTOM_ROLE_ICON); + return new LazyIcon("role"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AuthorityUserListCellRender.java b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AuthorityUserListCellRender.java index 9b04a44413..66f34b6118 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AuthorityUserListCellRender.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/list/cell/AuthorityUserListCellRender.java @@ -1,5 +1,6 @@ package com.fr.design.remote.ui.list.cell; +import com.fine.theme.icon.LazyIcon; import com.fr.base.BaseUtils; import com.fr.design.remote.constants.MemberIcon; import com.fr.design.remote.ui.list.AuthorityListCellRenderer; @@ -15,7 +16,7 @@ import javax.swing.Icon; public class AuthorityUserListCellRender extends AuthorityListCellRenderer { @Override protected Icon getMemberIcon() { - return BaseUtils.readIcon(MemberIcon.USER_ICON); + return new LazyIcon("member"); } @Override diff --git a/designer-base/src/main/java/com/fr/design/remote/ui/tree/FileAuthorityTree.java b/designer-base/src/main/java/com/fr/design/remote/ui/tree/FileAuthorityTree.java index feb3895169..26f754fe45 100644 --- a/designer-base/src/main/java/com/fr/design/remote/ui/tree/FileAuthorityTree.java +++ b/designer-base/src/main/java/com/fr/design/remote/ui/tree/FileAuthorityTree.java @@ -32,6 +32,9 @@ public class FileAuthorityTree extends TemplateFileTree { for (int i = 0, len = treeNode.getChildCount(); i < len; i++) { ExpandMutableTreeNode childTreeNode = (ExpandMutableTreeNode) treeNode.getChildAt(i); for (String path : paths) { + if (path == null) { + continue; + } TreePath tPath = getSelectingPath(childTreeNode, StringUtils.EMPTY, path, model); if (tPath != null) { res.add(tPath); diff --git a/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java b/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java index 4036a078ed..25dd2d450e 100644 --- a/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java +++ b/designer-base/src/main/java/com/fr/design/style/color/ColorAdjustPane.java @@ -14,7 +14,6 @@ import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; @@ -27,6 +26,8 @@ import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; +import static com.fine.theme.utils.FineUIScale.scale; + /** * 配色方案选择组合色之后,可以调整颜色的组件 * @@ -38,7 +39,11 @@ public class ColorAdjustPane extends JPanel implements UIObserver { public static final Color[] DEFAULT_COLORS = ChartConstants.NEW_FEATURES; - private static final int COUNT_OF_ROW = 12; + private int defaultMaxCountOfRow = 8; + + private int maxCountOfRow = defaultMaxCountOfRow; + + public static final int WIDTH = scale(20); private static final int MAX_BUTTON = 40; @@ -53,6 +58,12 @@ public class ColorAdjustPane extends JPanel implements UIObserver { this(DEFAULT_COLORS); } + public ColorAdjustPane(int maxCountOfRow) { + this(DEFAULT_COLORS); + this.defaultMaxCountOfRow = maxCountOfRow; + this.maxCountOfRow = maxCountOfRow; + } + public ColorAdjustPane(Color[] colors) { iniListener(); createColorButton(colors); @@ -80,22 +91,49 @@ public class ColorAdjustPane extends JPanel implements UIObserver { this.repaint(); } + /** + * 如果颜色块长度超过当前区域,则重绘 contentPane + */ + public void repaint() { + adjustCountOfRowAndRepaint(); + super.repaint(); + } + + private void adjustCountOfRowAndRepaint() { + int size = super.getSize().width; + if (size == 0) { + return; + } + int preferSize = (colorButtons.size() + 1) * WIDTH; + int oldMaxCountOfRow = maxCountOfRow; + if (preferSize > size) { + maxCountOfRow = size / WIDTH; + } else { + maxCountOfRow = defaultMaxCountOfRow; + } + + if (oldMaxCountOfRow != maxCountOfRow) { + this.removeAll(); + createContentPane(); + } + } + private void createContentPane() { VerticalFlowLayout layout = new VerticalFlowLayout(0, 0, 0); layout.setAlignLeft(true); this.setLayout(layout); - for (int i = 0, size = colorButtons.size(); i < size; i += COUNT_OF_ROW) { - JPanel panel = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(2, 2); - int count = i + COUNT_OF_ROW > colorButtons.size() ? colorButtons.size() : i + COUNT_OF_ROW; + for (int i = 0, size = colorButtons.size(); i < size; i += maxCountOfRow) { + JPanel panel = FRGUIPaneFactory.createBoxFlowInnerContainer_S_Pane(scale(2), scale(2)); + int count = Math.min(i + maxCountOfRow, colorButtons.size()); for (int j = i; j < count; j++) { colorButtons.get(j).setLastButton(false); panel.add(colorButtons.get(j)); } - if (i + COUNT_OF_ROW > colorButtons.size()) { + if (i + maxCountOfRow > colorButtons.size()) { panel.add(new AddColorButton()); this.add(panel); - } else if (i + COUNT_OF_ROW == colorButtons.size() && colorButtons.size() != MAX_BUTTON) { + } else if (i + maxCountOfRow == colorButtons.size() && colorButtons.size() != MAX_BUTTON) { this.add(panel); this.add(new AddColorButton()); } else { diff --git a/designer-base/src/main/java/com/fr/design/style/color/ColorButton.java b/designer-base/src/main/java/com/fr/design/style/color/ColorButton.java index 5ad794c79c..03f8d28376 100644 --- a/designer-base/src/main/java/com/fr/design/style/color/ColorButton.java +++ b/designer-base/src/main/java/com/fr/design/style/color/ColorButton.java @@ -1,5 +1,6 @@ package com.fr.design.style.color; +import com.fine.theme.utils.FineUIScale; import com.fr.base.BaseUtils; import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.DesignerContext; @@ -25,7 +26,7 @@ public class ColorButton extends JComponent implements ColorSelectable { private static final double DEL_WIDTH = 7; - public static final int WIDTH = 18; + public static final int WIDTH = FineUIScale.scale(18); private BufferedImage closeIcon = BaseUtils.readImageWithCache("com/fr/design/images/toolbarbtn/chartChangeClose.png"); diff --git a/designer-base/src/main/java/com/fr/design/versioncheck/VersionCheckUtils.java b/designer-base/src/main/java/com/fr/design/versioncheck/VersionCheckUtils.java index 0d10600b64..509b103a41 100644 --- a/designer-base/src/main/java/com/fr/design/versioncheck/VersionCheckUtils.java +++ b/designer-base/src/main/java/com/fr/design/versioncheck/VersionCheckUtils.java @@ -1,5 +1,6 @@ package com.fr.design.versioncheck; +import com.fine.theme.utils.FineUIScale; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.dialog.NotificationDialog; @@ -146,7 +147,7 @@ public class VersionCheckUtils { CheckServiceDialog checkServiceDialog = new CheckServiceDialog(DesignerContext.getDesignerFrame(), GeneralUtils.readFullBuildNO(), getRemoteBranch(envName), getNoExistServiceDescription(envName)); checkServiceDialog.setVisible(true); } - },DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.version.check.dialog")); + }, FineUIScale.scale(DesignSizeI18nManager.getInstance().i18nDimension("com.fr.design.version.check.dialog"))); notificationDialog.setVisible(true); } diff --git a/designer-base/src/main/resources/com/fine/theme/icon/close/platform_close_disable.svg b/designer-base/src/main/resources/com/fine/theme/icon/close/platform_close_disable.svg new file mode 100644 index 0000000000..cb917bb243 --- /dev/null +++ b/designer-base/src/main/resources/com/fine/theme/icon/close/platform_close_disable.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/designer-base/src/main/resources/com/fine/theme/icon/debug.svg b/designer-base/src/main/resources/com/fine/theme/icon/debug.svg new file mode 100644 index 0000000000..3e7608a5be --- /dev/null +++ b/designer-base/src/main/resources/com/fine/theme/icon/debug.svg @@ -0,0 +1,3 @@ + + + diff --git a/designer-base/src/main/resources/com/fine/theme/icon/toolbar/member.svg b/designer-base/src/main/resources/com/fine/theme/icon/toolbar/member.svg new file mode 100644 index 0000000000..2c068c2277 --- /dev/null +++ b/designer-base/src/main/resources/com/fine/theme/icon/toolbar/member.svg @@ -0,0 +1,3 @@ + + + diff --git a/designer-base/src/main/resources/com/fine/theme/icon/toolbar/role.svg b/designer-base/src/main/resources/com/fine/theme/icon/toolbar/role.svg new file mode 100644 index 0000000000..fcf3ecb12f --- /dev/null +++ b/designer-base/src/main/resources/com/fine/theme/icon/toolbar/role.svg @@ -0,0 +1,3 @@ + + + diff --git a/designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json b/designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json index fb26dcc0ba..638c872b71 100644 --- a/designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json +++ b/designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json @@ -288,6 +288,8 @@ "templateStore": "toolbar/templateStore.svg", "bug": "toolbar/bug.svg", "need": "toolbar/need.svg", + "member": "toolbar/member.svg", + "role": "toolbar/role.svg", "workOrderCenter": "toolbar/workOrderCenter.svg", "actCenter": "toolbar/actCenter.svg", "sign": "toolbar/sign.svg", @@ -323,6 +325,7 @@ "close": "close/close.svg", "close_round": "close/close_round.svg", "platform_close": "close/platform_close.svg", + "platform_close_disabled": "close/platform_close_disable.svg", "add_parenthesis": "font/add_parenthesis.svg", "remove_parenthesis": "font/remove_parenthesis.svg", "shadow": "font/shadow.svg", diff --git a/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties b/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties index 9c0ee9c9f8..8815f16b42 100644 --- a/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties +++ b/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties @@ -33,14 +33,17 @@ # font weights # Windows [win]defaultFont = "Microsoft YaHei", "Microsoft JhengHei", MingLiU, Arial +[win]titleFont = 14, "Microsoft YaHei", "Microsoft JhengHei", MingLiU, Arial [win]light.font = "Microsoft YaHei", "Microsoft JhengHei", MingLiU, "Arial [win]semibold.font = "Microsoft YaHei", "Microsoft JhengHei", MingLiU, Arial # macOS [mac]defaultFont = 12 "PingFang SC", "Apple LiGothic", "Apple LiSun", Arial +[mac]titleFont = 14 "PingFang SC", "Apple LiGothic", "Apple LiSun", Arial [mac]light.font = "PingFang SC", "Apple LiGothic", "Apple LiSun", Arial [mac]semibold.font = "PingFang SC", "Apple LiGothic", "Apple LiSun", Arial # Linux [linux]defaultFont = 12 "Noto SansCJK", SimHei, Arial, Ubuntu +[linux]titleFont = 14 "Noto SansCJK", SimHei, Arial, Ubuntu [linux]light.font = "Noto SansCJK", SimHei, Arial, Ubuntu [linux]semibold.font = "Noto SansCJK", SimHei, Arial, Ubuntu @@ -944,6 +947,7 @@ TextArea.selectionBackground=$color.brand4 TextArea.selectionForeground=$text.white TextArea.inactiveForeground=fade(@foreground, 29%) TextArea.disabledBackground=$fill.disabled +TextArea.currentLineHighlightColor=#fffae8 #---- TextComponent ---- @@ -1336,6 +1340,9 @@ chart.selectedBorderColor = #2576EF [style]Label.boldLabel = \ font: bold $defaultFont +[style]Label.tipWindowTitleLabel = \ + font: bold $titleFont + [style]Label.tipLabel = \ foreground: $Label.tipColor diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties index 24cc2ad5aa..bd57c7c32a 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_en.properties @@ -25,7 +25,7 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369 com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.file.MultiTemplateTabPane.popUpMenu=350*65 com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 -com.fr.design.formula.FormulaPane=900*600 +com.fr.design.formula.FormulaPane=1200*640 com.fr.design.formula.FormulaPaneWhenReserveFormula=1200*600 com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=130*20 com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=140*20 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties index d052ead680..b0b998ddac 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ja_JP.properties @@ -24,7 +24,7 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369 com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65 com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 -com.fr.design.formula.FormulaPane=900*600 +com.fr.design.formula.FormulaPane=900*640 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=100*20 com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=130*20 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties index 525bfe56ad..9aa1bde25b 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_ko_KR.properties @@ -24,7 +24,7 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369 com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.file.MultiTemplateTabPane.popUpMenu=240*65 com.fr.design.data.datapane.preview.desensitization.view.rule.DesensitizationRuleChoosePane.ruleEditPane=800*600 -com.fr.design.formula.FormulaPane=900*600 +com.fr.design.formula.FormulaPane=900*640 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20 com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties index 3e54c98a84..c9b48d9b7f 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh.properties @@ -4,7 +4,7 @@ com.fr.design.mainframe.check.CheckFontInfoDialog.collapse=360*185 com.fr.design.mainframe.check.CheckFontInfoDialog.messageWithLink=325*31 com.fr.design.mainframe.check.CheckFontInfoDialog.unfold=360*280 com.fr.env.RemoteEnvPane.dialog=308*132 -com.fr.design.version.check.dialog=230*95 +com.fr.design.version.check.dialog=360*160 com.fr.design.version.detail.label=450*30 com.fr.design.version.detail.dialog=600*500 com.fr.env.SyncFailedPluginsDialog.messageWithLink=316*20 @@ -13,7 +13,7 @@ com.fr.design.actions.server.dialog=660*600 com.fr.design.report.fit.templatePane.dialog=600*400 com.fr.design.report.fit.firstColumn=80*20 com.fr.design.report.fit.column=100*20 -com.fr.design.lock.LockInfoDialog=400*180 +com.fr.design.lock.LockInfoDialog=360*160 com.fr.design.mainframe.ForbiddenPane.refreshButton=68*24 com.fr.start.common.DesignerOpenEmptyPanel.createButton=70*24 com.fr.design.cell.expand.sort.pane=227*155 @@ -24,7 +24,7 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.dialog=600*500 com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369 com.fr.design.report.WatermarkSettingPane=660*600 com.fr.design.file.MultiTemplateTabPane.popUpMenu=170*65 -com.fr.design.formula.FormulaPane=900*600 +com.fr.design.formula.FormulaPane=900*640 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20 com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20 diff --git a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties index e1bcdba473..6296fb0c87 100644 --- a/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties +++ b/designer-base/src/main/resources/com/fr/design/i18n/dimension_zh_TW.properties @@ -23,7 +23,7 @@ com.fr.design.plugin.remind.PluginInvalidateRemindDialog.dialog=600*500 com.fr.design.plugin.remind.PluginInvalidateRemindDialog.centerPane=580*369 com.fr.design.report.WatermarkSettingPane=720*600 com.fr.design.file.MultiTemplateTabPane.popUpMenu=170*65 -com.fr.design.formula.FormulaPane=900*600 +com.fr.design.formula.FormulaPane=900*640 com.fr.design.formula.FormulaPaneWhenReserveFormula=900*600 com.fr.design.mainframe.mobile.ui.MobileStyleDefinePane.configLabel=75*20 com.fr.design.mainframe.mobile.utils.DesignerUtils.configLabel=100*20 diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java index 862bcc9e7c..50f498c30a 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.chart.gui.style.series; import com.fine.theme.utils.FineLayoutBuilder; +import com.fine.theme.utils.FineUIScale; import com.fr.base.BaseFormula; import com.fr.chart.base.AreaColor; import com.fr.chart.base.ChartBaseUtils; @@ -44,6 +45,7 @@ import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; +import static com.fine.swing.ui.layout.Layouts.cell; import static com.fine.theme.utils.FineUIScale.scale; public class UIColorPickerPane extends BasicPane implements UIObserver { @@ -55,7 +57,7 @@ public class UIColorPickerPane extends BasicPane implements UIObserver { private static final int COLOR_REC_WIDTH = scale(30); protected static final int TEXTFIELD_HEIGHT = scale(20); protected static final int TEXTFIELD_WIDTH = scale(130); - protected static final int UPCONTROLPANE_WIDTH = scale(218); + protected static final int UPCONTROLPANE_WIDTH = scale(224); private static final int LAYOUR_DET = scale(6); public static final double VALUE = 100; @@ -652,7 +654,7 @@ public class UIColorPickerPane extends BasicPane implements UIObserver { }; protected int getBoundX() { - return MARGIN_LEFT; + return 0; } protected int getBoundY() { diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartPreFillStylePane.java b/designer-chart/src/main/java/com/fr/design/module/ChartPreFillStylePane.java index 7368ea951d..15ab98fd8a 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartPreFillStylePane.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartPreFillStylePane.java @@ -50,6 +50,7 @@ public class ChartPreFillStylePane extends BasicBeanPane { private final Integer COLOR_ADJUST_PANE_WIDTH = 240; private final Integer COLOR_ADJUST_PANE_HEIGHT = 88; + private final Integer MAX_COLOR_COUNT_OF_ROW = 12; public ChartPreFillStylePane() { initComponents(); @@ -62,7 +63,7 @@ public class ChartPreFillStylePane extends BasicBeanPane { groupButton.setSelectedIndex(0); changeColorSetPane = new JPanel(cardLayout = new CardLayout()); changeColorSetPane.add(colorGradient = new FixedGradientBarNoTheme(4, 150), "gradient"); - changeColorSetPane.add(colorAdjustPane = new ColorAdjustPane(), "acc"); + changeColorSetPane.add(colorAdjustPane = new ColorAdjustPane(MAX_COLOR_COUNT_OF_ROW), "acc"); cardLayout.show(changeColorSetPane, "acc"); colorGradient.getSelectColorPointBtnP1().setColorInner(Color.WHITE); diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java index ce4a6492b5..b7ac9a7265 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartTooltipContentPane.java @@ -1,7 +1,9 @@ package com.fr.van.chart.designer.component; +import com.fine.swing.ui.layout.Layouts; import com.fine.theme.utils.FineLayoutBuilder; import com.fine.theme.utils.FineUIScale; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.design.beans.BasicBeanPane; import com.fr.design.dialog.BasicDialog; import com.fr.design.dialog.DialogActionAdapter; @@ -52,10 +54,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import static com.fine.swing.ui.layout.Layouts.cell; -import static com.fine.swing.ui.layout.Layouts.column; -import static com.fine.swing.ui.layout.Layouts.row; - /** * 数据点提示内容界面,含有通用设置、富文本编辑器、自定义JS界面 */ @@ -300,7 +298,8 @@ public class VanChartTooltipContentPane extends BasicBeanPaneit.setBorder(new ScaledEmptyBorder(0, 0, 10, 0))).getComponent(); } public JPanel createCommonStylePane() { @@ -310,11 +309,11 @@ public class VanChartTooltipContentPane extends BasicBeanPane align; private JPanel alignPane; @@ -210,7 +209,6 @@ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane { protected void checkStyleUse() { textFontPane.setVisible(true); - textFontPane.setPreferredSize(new Dimension(0, TEXT_FONT_PANE_HEIGHT)); } protected boolean hasLabelAlign() { diff --git a/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/series/VanChartGanttSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/series/VanChartGanttSeriesPane.java index 380047194b..63fd3a7209 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/series/VanChartGanttSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/style/series/VanChartGanttSeriesPane.java @@ -42,6 +42,7 @@ public class VanChartGanttSeriesPane extends VanChartAbstractPlotSeriesPane { contentPane = FineLayoutBuilder.createVerticalLayout(0, createGanntStylePane(), createLinkLinePane(), + createMarkerPane(), createLargeDataModelPane(), createGuideLinePane() ); diff --git a/designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeSeriesPane.java index 1b32d2fbf9..60c8bc5c4b 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/gauge/VanChartGaugeSeriesPane.java @@ -115,7 +115,7 @@ public class VanChartGaugeSeriesPane extends VanChartMultiColorSeriesPane { } protected JPanel createColorDividePane() { - JPanel panel = new JPanel(new BorderLayout(0, 0)); + JPanel panel = new JPanel(new BorderLayout(0, FineUIScale.scale(10))); valueFillStylePane = getVanChartFillStylePane(); JPanel stylePane = valueFillStylePane == null ? new JPanel() : valueFillStylePane;