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/FineUIScale.java b/designer-base/src/main/java/com/fine/theme/utils/FineUIScale.java index 6297166c78..ddde68539b 100644 --- a/designer-base/src/main/java/com/fine/theme/utils/FineUIScale.java +++ b/designer-base/src/main/java/com/fine/theme/utils/FineUIScale.java @@ -83,4 +83,16 @@ public class FineUIScale { public static Insets scale(Insets insets) { return UIScale.scale(insets); } + + /** + * Creates a scaled {@link Dimension} object based on the specified width and height. + *

+ * This method uses the current user scale factor to adjust the provided width and height values: + * - If the user scale factor is 1 (no scaling), the original width and height values are returned unchanged. + * - If the user scale factor is different from 1, a new {@link Dimension} instance is created and returned, + * with the width and height values scaled according to the user scale factor. + */ + public static Dimension createScaleDimension(int width, int height) { + return scale(new Dimension(width, height)); + } } 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 673e55b352..0dc3c2df29 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/fine/theme/utils/FineUIUtils.java b/designer-base/src/main/java/com/fine/theme/utils/FineUIUtils.java index bf48c66c6d..92ee62ff5e 100644 --- a/designer-base/src/main/java/com/fine/theme/utils/FineUIUtils.java +++ b/designer-base/src/main/java/com/fine/theme/utils/FineUIUtils.java @@ -6,6 +6,7 @@ import com.fr.design.border.FineBorderFactory; import com.fr.design.constants.LayoutConstants; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.DesignSizeI18nManager; import com.fr.stable.os.OperatingSystem; import com.fr.value.AtomicClearableLazyValue; @@ -16,6 +17,7 @@ import javax.swing.UIManager; import java.awt.Color; import java.awt.Component; import java.awt.Composite; +import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; @@ -435,4 +437,15 @@ public class FineUIUtils { Font newSizeFont = font.deriveFont(font.getStyle(), scale(size)); c.setFont(newSizeFont); } + + /** + * 获取缩放后的国际化尺寸 + * + * @param i18nDimensionKey 国际化key值 + * @return 缩放后的国际化尺寸 + */ + public static Dimension getScaledI18nDimension(String i18nDimensionKey) { + return FineUIScale.scale(DesignSizeI18nManager.getInstance().i18nDimension(i18nDimensionKey)); + } + } diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index 6324f32b9f..4de6ab6045 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -1,6 +1,7 @@ package com.fr.design.actions.file; import com.fine.swing.ui.layout.Row; +import com.fine.theme.icon.LazyIcon; import com.fine.theme.utils.FineLayoutBuilder; import com.fine.theme.utils.FineUIScale; import com.fine.theme.utils.FineUIStyle; @@ -731,10 +732,10 @@ public class PreferencePane extends BasicPane { private Component createColorSettingPane() { // Color Setting Pane - gridLineColorTBButton = new UINoThemeColorButton(IOUtils.readIcon("/com/fr/design/images/gui/color/foreground.png")); + gridLineColorTBButton = new UINoThemeColorButton(new LazyIcon("foreground")); gridLineColorTBButton.setEnabled(this.isEnabled()); - paginationLineColorTBButton = new UINoThemeColorButton(IOUtils.readIcon("/com/fr/design/images/gui/color/foreground.png")); + paginationLineColorTBButton = new UINoThemeColorButton(new LazyIcon("foreground")); paginationLineColorTBButton.setEnabled(this.isEnabled()); JPanel colorPanel = row(10, 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 c1114eea02..96b9cd2cb0 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; @@ -1117,6 +1118,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/datapane/sqlpane/SQLEditPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/sqlpane/SQLEditPane.java index 7f5d083004..c0849032d3 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/sqlpane/SQLEditPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/sqlpane/SQLEditPane.java @@ -57,6 +57,7 @@ public class SQLEditPane extends RSyntaxTextArea { if (requestDroptarget) { new SQLPaneDropTarget(this); } + setBorder(null); } 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,71 @@ 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/editor/ValueEditorPane.java b/designer-base/src/main/java/com/fr/design/editor/ValueEditorPane.java index 5822570e1a..cbfe35b0ff 100644 --- a/designer-base/src/main/java/com/fr/design/editor/ValueEditorPane.java +++ b/designer-base/src/main/java/com/fr/design/editor/ValueEditorPane.java @@ -58,7 +58,7 @@ public class ValueEditorPane extends BasicPane implements UIObserver, GlobalName } public ValueEditorPane(Editor[] cards, String popupName, String textEditorValue) { - initComponents(cards, popupName, textEditorValue, 200); + initComponents(cards, popupName, textEditorValue, FineUIScale.scale(200)); } public ValueEditorPane(Editor[] cards, String popupName, String textEditorValue, int centerPaneWidth) { diff --git a/designer-base/src/main/java/com/fr/design/formula/DefaultTinyFormulaPane.java b/designer-base/src/main/java/com/fr/design/formula/DefaultTinyFormulaPane.java index 05053eec4f..7b69f306d5 100644 --- a/designer-base/src/main/java/com/fr/design/formula/DefaultTinyFormulaPane.java +++ b/designer-base/src/main/java/com/fr/design/formula/DefaultTinyFormulaPane.java @@ -1,6 +1,14 @@ package com.fr.design.formula; +import com.fine.theme.utils.FineUIScale; import com.fr.base.BaseFormula; +import com.fr.design.gui.ilable.UILabel; +import java.awt.Component; +import java.awt.BorderLayout; + +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.row; +import static com.fine.swing.ui.layout.Layouts.flex; /** * @author Carlson @@ -10,8 +18,44 @@ import com.fr.base.BaseFormula; **/ public class DefaultTinyFormulaPane extends TinyFormulaPane{ + /** + * 默认构造方法 + * 一个输入框和一个F(x)按钮。 + */ + public DefaultTinyFormulaPane() { + this.initComponents(); + this.initLayout(); + } + + /** + * 带标题的构造方法 + * 当需要显示标题时使用此构造方法。 + * + * @param title 要在布局中显示的标题 + */ + public DefaultTinyFormulaPane(String title) { + this.initComponents(); + this.initLayout(title); + } + + private void initLayout(String title) { + this.setLayout(new BorderLayout()); + this.add(row(cell(new UILabel(title)).weight(1.2), cell(createDefaultTinyFormulaPane()).weight(3)).getComponent()); + } + @Override protected void populateTextField(BaseFormula fm) { formulaTextField.setText(fm.getContent()); } + + @Override + protected void initLayout() { + this.setLayout(new BorderLayout()); + formulaTextFieldButton.setPreferredSize(FineUIScale.createScaleDimension(24, 24)); + this.add(createDefaultTinyFormulaPane()); + } + + private Component createDefaultTinyFormulaPane() { + return row(cell(formulaTextField).weight(2), flex(0.1), cell(formulaTextFieldButton).weight(0.4)).getComponent(); + } } 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/frpane/ClosableBubbleFloatPane.java b/designer-base/src/main/java/com/fr/design/gui/frpane/ClosableBubbleFloatPane.java index 41a4471daa..7f6a7a59f0 100644 --- a/designer-base/src/main/java/com/fr/design/gui/frpane/ClosableBubbleFloatPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/frpane/ClosableBubbleFloatPane.java @@ -1,10 +1,9 @@ package com.fr.design.gui.frpane; -import com.fr.base.BaseUtils; +import com.fine.theme.icon.LazyIcon; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ilable.UILabel; -import javax.swing.Icon; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Point; @@ -30,8 +29,7 @@ public abstract class ClosableBubbleFloatPane extends UIBubbleFloatPane { protected JPanel initTopOptionMenu() { JPanel menu = new JPanel(new BorderLayout()); - Icon icon = BaseUtils.readIcon("/com/fr/design/images/buttonicon/close_icon.png"); - UILabel label = new UILabel(icon); + UILabel label = new UILabel(new LazyIcon("close")); label.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java index d85793d5c4..b3d6e054d5 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIEastResizableContainer.java @@ -3,27 +3,26 @@ package com.fr.design.gui.icontainer; import com.fine.theme.icon.LazyIcon; import com.fine.theme.utils.FineUIScale; +import com.fine.theme.utils.FineUIUtils; import com.fr.design.base.mode.DesignModeContext; import com.fr.design.constants.UIConstants; -import com.fr.design.gui.ibutton.UIButton; import com.fr.design.layout.VerticalFlowLayout; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.utils.gui.GUICoreUtils; import javax.swing.BorderFactory; -import javax.swing.UIManager; +import javax.swing.Icon; import javax.swing.JComponent; -import javax.swing.JFrame; import javax.swing.JPanel; -import javax.swing.Icon; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; import javax.swing.border.Border; -import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics; import java.awt.LayoutManager; +import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; @@ -34,32 +33,87 @@ import java.awt.event.MouseMotionListener; public class UIEastResizableContainer extends JPanel { private static final long serialVersionUID = 1854340560790476907L; - public static final int MAX_CONTAINER_WIDTH = FineUIScale.scale(340); - public static final int MIN_CONTAINER_WIDTH = FineUIScale.scale(286); + public static final int MAX_CONTAINER_WIDTH = FineUIUtils.getScaledI18nDimension( + "com.fr.design.mainframe.EastRegionContainerPane.maximum").width; + public static final int MIN_CONTAINER_WIDTH = FineUIUtils.getScaledI18nDimension( + "com.fr.design.mainframe.EastRegionContainerPane.minimum").width; + public static final int STD_CONTAINER_WIDTH = FineUIUtils.getScaledI18nDimension( + "com.fr.design.mainframe.EastRegionContainerPane.standard").width; + + private int containerWidth = STD_CONTAINER_WIDTH; + private int preferredWidth = STD_CONTAINER_WIDTH; + protected final int leftPaneWidth = FineUIScale.scale(42); + protected final int topToolPaneHeight = FineUIScale.scale(40); - private int containerWidth = FineUIScale.scale(240); - private int preferredWidth = FineUIScale.scale(240); - private int topToolPaneHeight = FineUIScale.scale(40); - private int leftPaneWidth = FineUIScale.scale(42); + private static final int ARROW_RANGE = FineUIScale.scale(35); private JComponent leftPane; private JComponent rightPane; private TopToolPane topToolPane; - - private static final int ARROW_MARGIN = FineUIScale.scale(15); - private static final int ARROW_RANGE = FineUIScale.scale(35); - + private static final int DRAG_GAP_SIZE = 10; + private Point dragPoint; public UIEastResizableContainer() { this(new JPanel(), new JPanel()); + initMouseListener(); + } + + private void initMouseListener() { + MouseAdapter mouseAdapter = new MouseAdapter() { + @Override + public void mouseMoved(MouseEvent e) { + updateCursor(e); + } + + @Override + public void mousePressed(MouseEvent e) { + if (isEnableDrag(e)) { + dragPoint = e.getPoint(); + } + } + + @Override + public void mouseDragged(MouseEvent e) { + resizePanel(e); + } + }; + + addMouseListener(mouseAdapter); + addMouseMotionListener(mouseAdapter); + } + + private void updateCursor(MouseEvent e) { + if (isEnableDrag(e)) { + setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR)); + } else { + setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + } + } + + protected boolean isEnableDrag(MouseEvent e) { + return e.getX() <= DRAG_GAP_SIZE && isRightPaneVisible(); + } + + protected void resizePanel(MouseEvent e) { + if (!isRightPaneVisible()) { + return; + } + int dx = e.getX() - dragPoint.x; + Dimension size = getSize(); + + int newWidth = size.width - dx; + // 限制container大小为指定范围 + containerWidth = Math.max(MIN_CONTAINER_WIDTH, Math.min(newWidth, MAX_CONTAINER_WIDTH)); + + SwingUtilities.invokeLater(this::revalidate); } /** * 设置面板宽度 * - * @param width + * @param width 宽度 */ public void setContainerWidth(int width) { this.containerWidth = width; @@ -70,8 +124,6 @@ public class UIEastResizableContainer extends JPanel { return containerWidth > leftPaneWidth; } - - private void setPreferredWidth(int width) { this.preferredWidth = width; } @@ -81,7 +133,7 @@ public class UIEastResizableContainer extends JPanel { this.rightPane = rightPane; this.topToolPane = new TopToolPane(); topToolPane.setLayout(new VerticalFlowLayout(VerticalFlowLayout.TOP, 1, 0)); - topToolPane.setBorder(BorderFactory.createMatteBorder(0 ,1, 0, 1, UIManager.getColor("East.border"))); + topToolPane.setBorder(BorderFactory.createMatteBorder(0, 1, 0, 1, UIManager.getColor("East.border"))); setLayout(containerLayout); add(topToolPane); @@ -89,38 +141,6 @@ public class UIEastResizableContainer extends JPanel { add(rightPane); } - public static void main(String... args) { - JFrame jf = new JFrame("test"); - jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - JPanel content = (JPanel) jf.getContentPane(); - content.setLayout(new BorderLayout()); - - JPanel leftPane = new JPanel(); -// leftPane.setBackground(Color.yellow); - JPanel rightPane = new JPanel(); -// rightPane.setBackground(Color.green); - - UIButton b1, b2; - b1 = new UIButton("b1"); - b2 = new UIButton("b2"); - b1.setPreferredSize(new Dimension(40, 40)); - b2.setPreferredSize(new Dimension(40, 40)); - leftPane.add(b1); - leftPane.add(b2); - - - UIEastResizableContainer bb = new UIEastResizableContainer(leftPane, rightPane); - - JPanel cc = new JPanel(); -// cc.setBackground(Color.WHITE); - - content.add(bb, BorderLayout.EAST); - content.add(cc, BorderLayout.CENTER); - GUICoreUtils.centerWindow(jf); - jf.setSize(500, 500); - jf.setVisible(true); - } - /** * 将面板设置成最佳的宽度 */ @@ -156,7 +176,6 @@ public class UIEastResizableContainer extends JPanel { @Override public void removeLayoutComponent(Component comp) { - // TODO Auto-generated method stub } @@ -182,7 +201,7 @@ public class UIEastResizableContainer extends JPanel { @Override public void addLayoutComponent(String name, Component comp) { - // do nothing + } }; diff --git a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java index 6cd8e8df4f..4d1b5e69bd 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java +++ b/designer-base/src/main/java/com/fr/design/gui/icontainer/UIResizableContainer.java @@ -391,17 +391,6 @@ public class UIResizableContainer extends JPanel { repaint(); } - @Override - public void mouseClicked(MouseEvent e) { - if (e.getX() <= ARROW_RANGE) { - toolPaneY = 0; - } else if (e.getX() >= getWidth() - ARROW_RANGE) { - toolPaneY = UIResizableContainer.this.getHeight() - toolPaneHeight - getParameterPaneHeight(); - } else { - return; - } - refreshContainer(); - } }); } diff --git a/designer-base/src/main/java/com/fr/design/gui/itooltip/MultiLineToolTip.java b/designer-base/src/main/java/com/fr/design/gui/itooltip/MultiLineToolTip.java index b644ae4db6..f5ad495dfa 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itooltip/MultiLineToolTip.java +++ b/designer-base/src/main/java/com/fr/design/gui/itooltip/MultiLineToolTip.java @@ -1,10 +1,11 @@ package com.fr.design.gui.itooltip; +import com.fine.theme.light.ui.FineTooltipUI; import javax.swing.JToolTip; public class MultiLineToolTip extends JToolTip { public MultiLineToolTip() { - setUI(new MultiLineToolTipUI()); + setUI(new FineTooltipUI()); } } \ No newline at end of file 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/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index 0ee74940d6..6fae3748ff 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -142,10 +142,13 @@ public class EastRegionContainerPane extends UIEastResizableContainer { private static int containerWidth() { - if (FRContext.isChineseEnv()) { - return UIEastResizableContainer.MIN_CONTAINER_WIDTH; - } - return UIEastResizableContainer.MAX_CONTAINER_WIDTH; + return UIEastResizableContainer.STD_CONTAINER_WIDTH; + } + + @Override + protected boolean isEnableDrag(MouseEvent e) { + return super.isEnableDrag(e) + && e.getY() > topToolPaneHeight + leftPane.getPreferredSize().height; } /** 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/utils/DesignerPort.java b/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java index b57c54fbcd..cebbcf655b 100644 --- a/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java +++ b/designer-base/src/main/java/com/fr/design/utils/DesignerPort.java @@ -1,5 +1,7 @@ package com.fr.design.utils; +import com.fine.theme.icon.LazyIcon; +import com.fine.theme.utils.FineUIScale; import com.fr.common.report.ReportState; import com.fr.design.DesignerEnvManager; import com.fr.design.RestartHelper; @@ -13,7 +15,6 @@ import com.fr.design.port.DesignerPortContext; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.exit.DesignerExiter; import com.fr.general.ComparatorUtils; -import com.fr.general.IOUtils; import com.fr.process.engine.core.CarryMessageEvent; import com.fr.process.engine.core.FineProcessContext; import com.fr.stable.StringUtils; @@ -29,11 +30,12 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import java.awt.BorderLayout; import java.awt.Color; -import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import static com.fine.theme.utils.FineUIScale.scale; + /** * 为的就是能替换 DesignPort.class 实现多开,因此避免编译器常量编译展开优化 */ @@ -128,7 +130,7 @@ public class DesignerPort implements XMLReadable, XMLWriter { this.setLayout(new BorderLayout()); this.setModal(true); this.portFiled = new UITextField(); - this.portFiled.setPreferredSize(new Dimension(180, 20)); + this.portFiled.setPreferredSize(FineUIScale.createScaleDimension(180, 20)); this.portFiled.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { @@ -147,7 +149,7 @@ public class DesignerPort implements XMLReadable, XMLWriter { }); JPanel iconPanel = new JPanel(); UILabel iconLabel = new UILabel(); - iconLabel.setIcon(IOUtils.readIcon("com/fr/design/images/edit/edit_typing.png")); + iconLabel.setIcon(new LazyIcon("edit")); iconPanel.add(iconLabel); iconPanel.add(iconLabel); JPanel textPane = FRGUIPaneFactory.createVerticalFlowLayout_Pane(true, FlowLayout.LEADING, 0, 10); @@ -194,7 +196,7 @@ public class DesignerPort implements XMLReadable, XMLWriter { this.add(northPane, BorderLayout.NORTH); this.add(centerPane, BorderLayout.CENTER); this.add(southPane, BorderLayout.SOUTH); - this.setSize(300, 150); + this.setSize(scale(300), scale(150)); this.setTitle(Toolkit.i18nText("Fine-Design_Modify_Designer_Port")); this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); this.setResizable(false); 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/closeTag.svg b/designer-base/src/main/resources/com/fine/theme/icon/close/closeTag.svg new file mode 100644 index 0000000000..fa060d003f --- /dev/null +++ b/designer-base/src/main/resources/com/fine/theme/icon/close/closeTag.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + 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/debug_disable.svg b/designer-base/src/main/resources/com/fine/theme/icon/debug_disable.svg new file mode 100644 index 0000000000..442f87ac0c --- /dev/null +++ b/designer-base/src/main/resources/com/fine/theme/icon/debug_disable.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 019af2e7f8..aaa6df6d59 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", @@ -322,7 +324,9 @@ "nosort": "sort/nosort.svg", "close": "close/close.svg", "close_round": "close/close_round.svg", + "closeTag": "close/closeTag.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 759b368089..d941f77eec 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..499e824afd 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,8 +25,11 @@ 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 com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton=100*24 +com.fr.design.mainframe.EastRegionContainerPane.maximum=600*400 +com.fr.design.mainframe.EastRegionContainerPane.minimum=340*400 +com.fr.design.mainframe.EastRegionContainerPane.standard=480*400 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..e568b81094 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,8 +24,11 @@ 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 com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton=160*24 +com.fr.design.mainframe.EastRegionContainerPane.maximum=600*400 +com.fr.design.mainframe.EastRegionContainerPane.minimum=340*400 +com.fr.design.mainframe.EastRegionContainerPane.standard=480*400 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..8a0a06bf2b 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,8 +24,11 @@ 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 com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton=80*24 +com.fr.design.mainframe.EastRegionContainerPane.maximum=500*400 +com.fr.design.mainframe.EastRegionContainerPane.minimum=340*400 +com.fr.design.mainframe.EastRegionContainerPane.standard=340*400 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..484f747bb3 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,8 +24,11 @@ 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 com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton=80*24 +com.fr.design.mainframe.EastRegionContainerPane.maximum=400*400 +com.fr.design.mainframe.EastRegionContainerPane.minimum=286*400 +com.fr.design.mainframe.EastRegionContainerPane.standard=286*400 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..2faed5896d 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,8 +23,11 @@ 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 com.fr.design.update.ui.dialog.UpdateMainDialog.updateButton=80*24 +com.fr.design.mainframe.EastRegionContainerPane.maximum=400*400 +com.fr.design.mainframe.EastRegionContainerPane.minimum=286*400 +com.fr.design.mainframe.EastRegionContainerPane.standard=286*400 diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java index 57ad71a50d..7f3324a2c3 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypeButtonPane.java @@ -4,7 +4,6 @@ import com.fine.theme.icon.LazyIcon; import com.fine.theme.utils.FineLayoutBuilder; import com.fine.theme.utils.FineUIConstants; import com.fine.theme.utils.FineUIStyle; -import com.fr.base.BaseUtils; import com.fr.chart.base.AttrChangeConfig; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.charttypes.ChartTypeManager; @@ -29,12 +28,12 @@ import com.fr.stable.StringUtils; import com.fr.van.chart.config.DefaultStyleHelper4Van; import javax.swing.JPanel; +import javax.swing.Icon; import javax.swing.SwingUtilities; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; -import java.awt.Image; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -44,7 +43,6 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.geom.Rectangle2D; -import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -56,6 +54,7 @@ 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; +import static com.fine.theme.utils.FineUIScale.scale; /** * 图表 类型 增删 控制按钮界面. @@ -458,8 +457,8 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen private class ChartChangeButton extends UIToggleButton { - private static final double DEL_WIDTH = 10; - private BufferedImage closeIcon = BaseUtils.readImageWithCache("com/fr/design/images/toolbarbtn/chartChangeClose.png"); + private static final double DEL_WIDTH = 9; + private Icon closeIcon = new LazyIcon("closeTag", 8); private boolean isMoveOn = false; private String buttonName = ""; @@ -506,11 +505,8 @@ public class ChartTypeButtonPane extends BasicBeanPane implemen private void paintDeleteButton(Graphics g2d) { Rectangle2D bounds = this.getBounds(); - int x = (int) (bounds.getWidth() - DEL_WIDTH); - int y = (int) (1); - - g2d.drawImage((Image) closeIcon, x, y, closeIcon.getWidth(), closeIcon.getHeight(), null); + closeIcon.paintIcon(this, g2d, scale(x), scale(1)); } @Override diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotReportDataContentPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotReportDataContentPane.java index 944f7d2825..020433d28e 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotReportDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/report/CategoryPlotReportDataContentPane.java @@ -41,6 +41,8 @@ public class CategoryPlotReportDataContentPane extends AbstractReportDataContent filterPane = new ChartDataFilterPane(new Bar2DPlot(), parent); this.add(column( cell(categoryName), + fix(10), + cell(getSeriesPane()), fix(10).with(it -> it.setBorder(FineBorderFactory.createDefaultUnderlineBorder())), cell(new UIExpandablePane(Toolkit.i18nText("Fine-Design_Chart_Data_Filter"),filterPane)) ).getComponent()); @@ -53,7 +55,7 @@ public class CategoryPlotReportDataContentPane extends AbstractReportDataContent UILabel label = new UILabel(leftLabel); this.setLayout(new BorderLayout()); this.add(row( - cell(label).weight(1.2), cell(formulaTextField).weight(2), flex(0.1), cell(formulaTextFieldButton).weight(0.4) + cell(label).weight(1.2), row(cell(formulaTextField).weight(2), flex(0.1), cell(formulaTextFieldButton).weight(0.4)).weight(3) ).getComponent()); } diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldValuePane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldValuePane.java index f3d326f8dc..f9ef234f8a 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldValuePane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesNameUseFieldValuePane.java @@ -99,10 +99,10 @@ public class SeriesNameUseFieldValuePane extends FurtherBasicBeanPane it.setBorder(FineBorderFactory.createDefaultUnderlineBorder())) ).getComponent(); 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/box/data/report/BoxPlotReportDataContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/box/data/report/BoxPlotReportDataContentPane.java index 037c0aa70b..583d6d8936 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/box/data/report/BoxPlotReportDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/box/data/report/BoxPlotReportDataContentPane.java @@ -1,24 +1,25 @@ package com.fr.van.chart.box.data.report; +import com.fine.theme.utils.FineLayoutBuilder; import com.fr.chart.chartattr.ChartCollection; import com.fr.chart.chartattr.Plot; +import com.fr.design.constants.LayoutConstants; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.chart.gui.ChartDataPane; import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; -import com.fr.design.utils.gui.GUICoreUtils; import com.fr.plugin.chart.box.VanChartBoxPlot; import com.fr.plugin.chart.box.data.VanBoxReportDefinition; -import javax.swing.BorderFactory; import javax.swing.JPanel; import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.column; + public class BoxPlotReportDataContentPane extends AbstractReportDataContentPane { private UIButtonGroup dataType; @@ -30,37 +31,20 @@ public class BoxPlotReportDataContentPane extends AbstractReportDataContentPane public BoxPlotReportDataContentPane(Plot plot, ChartDataPane parent) { this.initplot = plot; - this.setLayout(new BorderLayout()); - - this.add(createDataTypePane(), BorderLayout.NORTH); - this.add(createSeriesPane(parent), BorderLayout.CENTER); - + this.add(column(LayoutConstants.VERTICAL_GAP, cell(createDataTypePane()), cell(createSeriesPane(parent))).getComponent()); initDataTypeListener(); checkDataPaneVisible(); } private JPanel createDataTypePane() { - JPanel pane = new JPanel(new BorderLayout(4, 0)); - pane.setBorder(BorderFactory.createMatteBorder(0, 0, 6, 1, getBackground())); - - UILabel label = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Data_Form")); - label.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH, ChartDataPane.LABEL_HEIGHT)); - String[] names = new String[]{ Toolkit.i18nText("Fine-Design_Chart_Detailed_Data"), Toolkit.i18nText("Fine-Design_Chart_Result_Data") }; - dataType = new UIButtonGroup(names); dataType.setSelectedIndex(0); - dataType.setPreferredSize(new Dimension(100, 20)); - - pane.add(GUICoreUtils.createBorderLayoutPane(new Component[]{dataType, null, null, label, null})); - pane.setPreferredSize(new Dimension(246, 30)); - pane.setBorder(BorderFactory.createEmptyBorder(0, 18, 10, 15)); - - return pane; + return FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, new UILabel(Toolkit.i18nText("Fine-Design_Chart_Data_Form")), dataType); } private JPanel createSeriesPane(ChartDataPane parent) { diff --git a/designer-chart/src/main/java/com/fr/van/chart/box/data/report/BoxPlotReportResultDataSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/box/data/report/BoxPlotReportResultDataSeriesPane.java index 6bf2a9ef28..9f5f3e4ec5 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/box/data/report/BoxPlotReportResultDataSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/box/data/report/BoxPlotReportResultDataSeriesPane.java @@ -3,7 +3,6 @@ package com.fr.van.chart.box.data.report; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.formula.DefaultTinyFormulaPane; import com.fr.design.formula.TinyFormulaPane; -import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; @@ -11,11 +10,9 @@ import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPa import com.fr.plugin.chart.box.data.VanBoxReportDefinition; import com.fr.plugin.chart.box.data.VanBoxReportResultDefinition; -import javax.swing.BorderFactory; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Component; -import java.awt.Dimension; public class BoxPlotReportResultDataSeriesPane extends AbstractReportDataContentPane { @@ -34,16 +31,13 @@ public class BoxPlotReportResultDataSeriesPane extends AbstractReportDataContent initContentComponents(); JPanel panel = createContentPane(); - - panel.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 15)); - this.add(panel, BorderLayout.CENTER); } private void initContentComponents() { - category = createTinyFormulaPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Category")); - seriesName = createTinyFormulaPaneWithTitle(Toolkit.i18nText("Fine-Design_Chart_Series_Name")); + category = new DefaultTinyFormulaPane(Toolkit.i18nText("Fine-Design_Chart_Category")); + seriesName = new DefaultTinyFormulaPane(Toolkit.i18nText("Fine-Design_Chart_Series_Name")); max = createTinyFormulaWithEditLabel(Toolkit.i18nText("Fine-Design_Chart_Data_Max")); q3 = createTinyFormulaWithEditLabel(Toolkit.i18nText("Fine-Design_Chart_Data_Q3")); @@ -71,23 +65,6 @@ public class BoxPlotReportResultDataSeriesPane extends AbstractReportDataContent return TableLayoutHelper.createTableLayoutPane(components, row, col); } - private TinyFormulaPane createTinyFormulaPaneWithTitle(final String title) { - - return new DefaultTinyFormulaPane() { - protected void initLayout() { - this.setLayout(new BorderLayout(4, 0)); - - UILabel label = new UILabel(title); - label.setPreferredSize(new Dimension(75, 20)); - this.add(label, BorderLayout.WEST); - - formulaTextField.setPreferredSize(new Dimension(100, 20)); - this.add(formulaTextField, BorderLayout.CENTER); - this.add(formulaTextFieldButton, BorderLayout.EAST); - } - }; - } - private TinyFormulaWithEditLabel createTinyFormulaWithEditLabel(String title) { return new TinyFormulaWithEditLabel(title) { diff --git a/designer-chart/src/main/java/com/fr/van/chart/box/data/report/TinyFormulaWithEditLabel.java b/designer-chart/src/main/java/com/fr/van/chart/box/data/report/TinyFormulaWithEditLabel.java index 300de5f618..f48a3c1c09 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/box/data/report/TinyFormulaWithEditLabel.java +++ b/designer-chart/src/main/java/com/fr/van/chart/box/data/report/TinyFormulaWithEditLabel.java @@ -9,7 +9,9 @@ import com.fr.design.mainframe.chart.gui.UIEditLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import java.awt.BorderLayout; -import java.awt.Dimension; + +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.row; public abstract class TinyFormulaWithEditLabel extends JPanel implements UIObserver { @@ -23,18 +25,13 @@ public abstract class TinyFormulaWithEditLabel extends JPanel implements UIObser protected void doAfterMousePress() { clearAllBackground(); } - protected boolean appendOriginalLabel() { return false; } }; - - editLabel.setPreferredSize(new Dimension(75, 20)); tinyFormulaPane = new DefaultTinyFormulaPane(); - - this.setLayout(new BorderLayout(4, 0)); - this.add(editLabel, BorderLayout.WEST); - this.add(tinyFormulaPane, BorderLayout.CENTER); + this.setLayout(new BorderLayout(0, 10)); + this.add(row(cell(editLabel).weight(1.2), cell(tinyFormulaPane).weight(3)).getComponent()); } protected abstract void clearAllBackground(); diff --git a/designer-chart/src/main/java/com/fr/van/chart/box/data/table/UIComboBoxWithEditLabel.java b/designer-chart/src/main/java/com/fr/van/chart/box/data/table/UIComboBoxWithEditLabel.java index 7b51fc5647..6cd9a0216d 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/box/data/table/UIComboBoxWithEditLabel.java +++ b/designer-chart/src/main/java/com/fr/van/chart/box/data/table/UIComboBoxWithEditLabel.java @@ -8,9 +8,11 @@ import com.fr.design.mainframe.chart.gui.UIEditLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; import java.awt.BorderLayout; -import java.awt.Dimension; import java.awt.event.ItemListener; +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.row; + public abstract class UIComboBoxWithEditLabel extends JPanel implements UIObserver { private UIEditLabel editLabel; @@ -28,14 +30,9 @@ public abstract class UIComboBoxWithEditLabel extends JPanel implements UIObserv return false; } }; - - editLabel.setPreferredSize(new Dimension(80, 20)); comboBox = new UIComboBox(); - comboBox.setPreferredSize(new Dimension(100, 20)); - - this.setLayout(new BorderLayout(4, 0)); - this.add(editLabel, BorderLayout.WEST); - this.add(comboBox, BorderLayout.CENTER); + this.setLayout(new BorderLayout(0, 10)); + this.add(row(cell(editLabel).weight(1.2), cell(comboBox).weight(3)).getComponent()); } public UIComboBox getComboBox() { diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartCustomPlotSelectPane.java b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartCustomPlotSelectPane.java index 589b03cad3..f73d23671b 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartCustomPlotSelectPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartCustomPlotSelectPane.java @@ -1,5 +1,6 @@ package com.fr.van.chart.custom.component; +import com.fine.theme.utils.FineUIScale; import com.fr.chart.base.ChartThemeStyleProvider; import com.fr.chart.chartattr.Chart; import com.fr.design.beans.BasicBeanPane; @@ -20,7 +21,6 @@ import com.fr.van.chart.custom.CustomPlotDesignerPaneFactory; import javax.swing.JOptionPane; import javax.swing.JPanel; import java.awt.BorderLayout; -import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -87,7 +87,7 @@ public class VanChartCustomPlotSelectPane extends BasicBeanPane { content = FRGUIPaneFactory.createNColumnGridInnerContainer_Pane(CUSTOM_TYPE_NUM, 0, 0); for (int i = 0; i < customTypeList.size(); i++){ - customTypeList.get(i).setPreferredSize(new Dimension(REC_WIDTH,REC_HEIGHT)); + customTypeList.get(i).setPreferredSize(FineUIScale.createScaleDimension(REC_WIDTH, REC_HEIGHT)); //是否画右边线 boolean isRightLine = (i == customTypeList.size() - 1) ? true : ((i + 1)%CUSTOM_TYPE_NUM == 0) ? true : false; diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartLabelContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartLabelContentPane.java index 54200fcdee..87605db336 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartLabelContentPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/component/VanChartLabelContentPane.java @@ -34,7 +34,8 @@ public class VanChartLabelContentPane extends VanChartTooltipContentPane { if (isInCondition() || !ChartEditContext.supportTheme()) { return super.createCommonStylePane(); } - setTextAttrPane(new LabelAttrPaneWithThemeStyle()); + // 颜色图标统一使用UIColorButton + setTextAttrPane(new ChartTextAttrPaneWithThemeStyle()); JPanel stylePanel = new JPanel(new BorderLayout()); stylePanel.add(getTextAttrPane(), BorderLayout.CENTER); 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 { } } }; + // 显示逻辑-整体显示 labelStylePane.add(wholeDisplayLabelPanel, WHOLE_DISPLAY); + // 显示逻辑-分层显示 labelStylePane.add(createCategoryStylePane(), LAYER_DISPLAY); - showLogicPane.add(TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Show_Logic"), showLogic), BorderLayout.NORTH); - showLogicPane.add(labelStylePane, BorderLayout.CENTER); + showLogicPane.add(column(LayoutConstants.VERTICAL_GAP, + cell(FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, new UILabel(Toolkit.i18nText("Fine-Design_Chart_Axis_Label_Show_Logic")), showLogic)), + cell(labelStylePane) + ).getComponent()); + showLogicPane.setVisible(false); labelContentPane.add(labelPane, BorderLayout.NORTH); labelContentPane.add(showLogicPane, BorderLayout.CENTER); @@ -654,18 +660,11 @@ public class VanChartBaseAxisPane extends FurtherBasicBeanPane { private JPanel createCateLableStylePanel() { double p = TableLayout.PREFERRED; double f = TableLayout.FILL; - double e = TableLayout4VanChartHelper.EDIT_AREA_WIDTH; double[] row = getCateLableStylePaneRow(); double[] column = {f, p}; JPanel content = TableLayoutHelper.createTableLayoutPane(getCateLabelStyleComponents(), row, column); - - Component[][] components = new Component[][]{ - new Component[]{null, null}, - new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Style_Category")), content} - }; - - return TableLayoutHelper.createTableLayoutPane(components, new double[]{p, p}, new double[]{f, e}); + return FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, new UILabel(Toolkit.i18nText("Fine-Design_Chart_Style_Category")), content); } private Component[][] getCateLabelStyleComponents() { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java index 79e4aad9bd..d723fb422b 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/axis/component/VanChartCategoryStylePaneWithCheckBox.java @@ -1,5 +1,6 @@ package com.fr.van.chart.designer.style.axis.component; +import com.fine.theme.utils.FineUIScale; import com.fr.design.gui.frpane.AbstractAttrNoScrollPane; import com.fr.design.gui.frpane.ClosableBubbleFloatPane; import com.fr.design.gui.ibutton.UIButton; @@ -68,7 +69,7 @@ public class VanChartCategoryStylePaneWithCheckBox extends JPanel { Point comPoint = settingButton.getLocationOnScreen(); Point arrowPoint = new Point(comPoint.x +settingButton.getWidth() - 25, comPoint.y + settingButton.getHeight()); Dimension size = settingPane.getPreferredSize(); - ClosableBubbleFloatPane pane = new ClosableBubbleFloatPane(Constants.LEFT, arrowPoint, settingPane, size.width, 240) { + ClosableBubbleFloatPane pane = new ClosableBubbleFloatPane(Constants.LEFT, arrowPoint, settingPane, size.width, FineUIScale.scale(240)) { @Override public void updateContentPane() { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartGaugeLabelDetailPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartGaugeLabelDetailPane.java index a5fd8ca284..cdaa4ec1a9 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartGaugeLabelDetailPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartGaugeLabelDetailPane.java @@ -31,7 +31,6 @@ import java.awt.event.ActionListener; */ public class VanChartGaugeLabelDetailPane extends VanChartPlotLabelDetailPane { - private static final int TEXT_FONT_PANE_HEIGHT = 50; private GaugeStyle gaugeStyle; private UIButtonGroup 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/designer/style/label/VanChartPlotLabelDetailPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPlotLabelDetailPane.java index fc69b85f25..ae862a170b 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPlotLabelDetailPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/label/VanChartPlotLabelDetailPane.java @@ -9,12 +9,10 @@ import com.fr.design.beans.BasicBeanPane; import com.fr.design.dialog.BasicPane; import com.fr.design.foldablepane.UIExpandablePane; import com.fr.design.gui.ibutton.UIButtonGroup; -import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.i18n.Toolkit; import com.fr.design.layout.TableLayout; -import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.gui.style.ChartTextAttrPane; import com.fr.design.style.color.ColorSelectBox; import com.fr.general.ComparatorUtils; @@ -241,10 +239,12 @@ public class VanChartPlotLabelDetailPane extends BasicPane { column.add(positionPane); if (hasLabelOrientationPane()) { + // 文本方向 column.add(createLabelOrientationPane()); } if (plot.isSupportLeadLine()) { + // 牵引线 tractionLine = new UICheckBox(Toolkit.i18nText("Fine-Design_Chart_Show_Guideline")); Component[][] comps = new Component[1][2]; comps[0] = new Component[]{new UILabel(), tractionLine}; @@ -255,6 +255,7 @@ public class VanChartPlotLabelDetailPane extends BasicPane { column.add(getLabelPositionPane(comps, row, col)); initPositionListener(); } else if (PlotFactory.plotAutoAdjustLabelPosition(plot)) { + // 重叠调整 column.add(FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, new UILabel(Toolkit.i18nText("Fine-Design_Chart_Auto_Adjust")), autoAdjust)); } @@ -281,8 +282,8 @@ public class VanChartPlotLabelDetailPane extends BasicPane { checkOrientation(); } }); - - return TableLayout4VanChartHelper.createGapTableLayoutPane(Toolkit.i18nText("Fine-Design_Chart_Text_Orientation"), orientation); + return FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, + new UILabel(Toolkit.i18nText("Fine-Design_Chart_Text_Orientation")), orientation); } protected void checkPositionPane(String title) { diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartAbstractPlotSeriesPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartAbstractPlotSeriesPane.java index df6c0415d0..cc234a7be7 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartAbstractPlotSeriesPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartAbstractPlotSeriesPane.java @@ -278,13 +278,13 @@ public abstract class VanChartAbstractPlotSeriesPane extends AbstractPlotSeriesP protected JPanel createStackedAndAxisPane() { stackAndAxisEditPane = new VanChartStackedAndAxisListControlPane(); stackAndAxisEditExpandablePane = new UIExpandablePane(stackAndAxisEditPane.getPaneTitle(), stackAndAxisEditPane, true); + stackAndAxisEditExpandablePane.setVisible(true); return stackAndAxisEditExpandablePane; } //界面上删除堆积和坐标轴设置 protected void removeStackWholePane() { - contentPane.remove(stackAndAxisEditExpandablePane); - contentPane.repaint(); + stackAndAxisEditExpandablePane.setVisible(false); } /** diff --git a/designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartEffectPane.java b/designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartEffectPane.java index c3bf0bc159..d9b70d38d1 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartEffectPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/designer/style/series/VanChartEffectPane.java @@ -1,19 +1,23 @@ package com.fr.van.chart.designer.style.series; +import com.fine.theme.utils.FineLayoutBuilder; +import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.fr.design.beans.BasicBeanPane; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; +import com.fr.design.i18n.Toolkit; import com.fr.plugin.chart.base.AttrEffect; -import com.fr.van.chart.designer.TableLayout4VanChartHelper; -import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.awt.BorderLayout; -import java.awt.Dimension; + +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.fix; +import static com.fine.swing.ui.layout.Layouts.row; /** * Created by shine on 2016/12/13. @@ -40,33 +44,32 @@ public class VanChartEffectPane extends BasicBeanPane { period = new UISpinner(0, Double.MAX_VALUE, 0.1, 0); content = createContentPane(); - JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Flash_Animation"),enabledButton); - this.setLayout(new BorderLayout(0, 5)); + JPanel panel = FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, new UILabel(Toolkit.i18nText("Fine-Design_Chart_Flash_Animation")), enabledButton); + panel.setBorder(new ScaledEmptyBorder(0, 0, 10,0)); + this.setLayout(new BorderLayout()); if(hasEnabledChoose) { this.add(panel, BorderLayout.NORTH); - setContentPaneBorder(); } this.add(content, BorderLayout.CENTER); } - protected void setContentPaneBorder() { - content.setBorder(BorderFactory.createEmptyBorder(10,25,0,15)); - } - + /** + * 闪烁动画 + * @return contentPane + */ protected JPanel createContentPane() { - JPanel panel = createPeriodPane(); - return panel; + return createPeriodPane(); } + /** + * 运动周期 + * @return periodPane + */ protected JPanel createPeriodPane(){ - JPanel periodPane = new JPanel(); - periodPane.setLayout(new BorderLayout(5, 0)); - UILabel label1= new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Flash_Period")); - label1.setPreferredSize(new Dimension((int)TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH, 20)); - periodPane.add(label1, BorderLayout.WEST); - periodPane.add(period, BorderLayout.CENTER); - periodPane.add(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Time_Second")), BorderLayout.EAST); - return periodPane; + JPanel panel = new JPanel(new BorderLayout()); + panel.add(row(cell(period).weight(1), fix(4),cell(new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Time_Second")))).getComponent()); + return FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, + new UILabel(Toolkit.i18nText("Fine-Design_Chart_Flash_Period")), panel); } @Override diff --git a/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/data/data/component/GanttReportDataContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/data/data/component/GanttReportDataContentPane.java index 398e59fbed..2533c9d3e9 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/data/data/component/GanttReportDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/data/data/component/GanttReportDataContentPane.java @@ -6,7 +6,6 @@ import com.fr.base.chart.chartdata.TopDefinitionProvider; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.formula.DefaultTinyFormulaPane; import com.fr.design.formula.TinyFormulaPane; -import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; import com.fr.plugin.chart.gantt.data.VanGanttReportDefinition; import com.fr.van.chart.gantt.designer.data.data.GanttDataPaneHelper; @@ -15,10 +14,6 @@ import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Component; -import static com.fine.swing.ui.layout.Layouts.cell; -import static com.fine.swing.ui.layout.Layouts.flex; -import static com.fine.swing.ui.layout.Layouts.row; - /** * Created by hufan on 2017/1/11. */ @@ -40,30 +35,12 @@ public class GanttReportDataContentPane extends AbstractReportDataContentPane{ } private void initAllComponent() { - seriesName = createTinyFormulaPaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Series_Name")); - - startTime = createTinyFormulaPaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Time")); - - endTime = createTinyFormulaPaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Time")); - - markerTime = createTinyFormulaPaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Marker_Time")); - - progress = createTinyFormulaPaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Process")); - - linkID = createTinyFormulaPaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Task_ID")); - } - - private TinyFormulaPane createTinyFormulaPaneWithTitle(final String title) { - return new DefaultTinyFormulaPane() { - @Override - protected void initLayout() { - this.setLayout(new BorderLayout()); - UILabel label = new UILabel(title); - this.add(row( - cell(label).weight(1.2), cell(formulaTextField).weight(2.4), flex(0.1), cell(formulaTextFieldButton).weight(0.5) - ).getComponent()); - } - }; + seriesName = new DefaultTinyFormulaPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Series_Name")); + startTime = new DefaultTinyFormulaPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Time")); + endTime = new DefaultTinyFormulaPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Time")); + markerTime = new DefaultTinyFormulaPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Marker_Time")); + progress = new DefaultTinyFormulaPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Process")); + linkID = new DefaultTinyFormulaPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Task_ID")); } private JPanel getContentPane(){ diff --git a/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/data/link/GanttLinkReportDataContentPane.java b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/data/link/GanttLinkReportDataContentPane.java index d254e15997..1e5efb7cfd 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/data/link/GanttLinkReportDataContentPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/gantt/designer/data/link/GanttLinkReportDataContentPane.java @@ -5,7 +5,6 @@ import com.fr.base.chart.chartdata.TopDefinitionProvider; import com.fr.chart.chartattr.ChartCollection; import com.fr.design.formula.DefaultTinyFormulaPane; import com.fr.design.formula.TinyFormulaPane; -import com.fr.design.gui.ilable.UILabel; import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; import com.fr.plugin.chart.gantt.data.VanGanttLinkReportDefinition; import com.fr.van.chart.gantt.designer.data.data.GanttDataPaneHelper; @@ -14,10 +13,6 @@ import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.Component; -import static com.fine.swing.ui.layout.Layouts.cell; -import static com.fine.swing.ui.layout.Layouts.flex; -import static com.fine.swing.ui.layout.Layouts.row; - /** * Created by hufan on 2017/1/12. */ @@ -33,24 +28,9 @@ public class GanttLinkReportDataContentPane extends AbstractReportDataContentPan this.add(panel, BorderLayout.CENTER); } private void initAllComponent() { - startTaskID = createTinyFormulaPaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Task_ID")); - - endTaskID = createTinyFormulaPaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Task_ID")); - - linkType = createTinyFormulaPaneWithTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Type")); - } - - private TinyFormulaPane createTinyFormulaPaneWithTitle(final String title) { - return new DefaultTinyFormulaPane() { - @Override - protected void initLayout() { - this.setLayout(new BorderLayout()); - UILabel label = new UILabel(title); - this.add(row( - cell(label).weight(1.2), cell(formulaTextField).weight(2.4), flex(0.1), cell(formulaTextFieldButton).weight(0.5) - ).getComponent()); - } - }; + startTaskID = new DefaultTinyFormulaPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Start_Task_ID")); + endTaskID = new DefaultTinyFormulaPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_End_Task_ID")); + linkType = new DefaultTinyFormulaPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Link_Type")); } private JPanel getContentPane(){ 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; diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapEffectPane.java b/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapEffectPane.java index ee6368917b..395388b2bb 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapEffectPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/map/line/VanChartLineMapEffectPane.java @@ -1,7 +1,11 @@ package com.fr.van.chart.map.line; +import com.fine.theme.utils.FineLayoutBuilder; +import com.formdev.flatlaf.util.ScaledEmptyBorder; +import com.fr.design.constants.LayoutConstants; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.Toolkit; import com.fr.general.ComparatorUtils; import com.fr.plugin.chart.base.AttrEffect; @@ -11,7 +15,6 @@ import com.fr.van.chart.designer.TableLayout4VanChartHelper; import com.fr.van.chart.designer.component.marker.VanChartImageMarkerPane; import com.fr.van.chart.designer.style.series.VanChartEffectPane; -import javax.swing.BorderFactory; import javax.swing.JPanel; import java.awt.BorderLayout; import java.awt.CardLayout; @@ -20,6 +23,9 @@ import java.awt.Dimension; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import static com.fine.swing.ui.layout.Layouts.cell; +import static com.fine.swing.ui.layout.Layouts.column; + /** * Created by hufan on 2016/12/20. */ @@ -32,39 +38,34 @@ public class VanChartLineMapEffectPane extends VanChartEffectPane { public VanChartLineMapEffectPane() { super(true); - this.add(TableLayout4VanChartHelper.createGapTableLayoutPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Line_Map_Animation"), enabledButton), BorderLayout.NORTH); + JPanel panel = FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, + new UILabel(Toolkit.i18nText("Fine-Design_Chart_Line_Map_Animation")), enabledButton); + panel.setBorder(new ScaledEmptyBorder(0, 0, 10,0)); + this.add(panel, BorderLayout.NORTH); } + /** + * 流向动画 + * @return contentPane + */ protected JPanel createContentPane() { - JPanel panel = new JPanel(new BorderLayout(0, 5)); + JPanel panel = new JPanel(new BorderLayout()); + // 运动周期 JPanel periodPane = createPeriodPane(); - + // 运动方式 animationType = new UIComboBox(LineMapAnimationType.getTypes()); initTypeContentPane(); - - JPanel animationTypePane = new JPanel(new BorderLayout(0, 5)); - - animationTypePane.add(createAnimationSelectPane(), BorderLayout.NORTH); - animationTypePane.add(typeContentPane, BorderLayout.CENTER); - - panel.add(periodPane, BorderLayout.CENTER); - panel.add(animationTypePane, BorderLayout.SOUTH); - panel.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0)); - + panel.add(column(LayoutConstants.VERTICAL_GAP, cell(periodPane), cell(createAnimationSelectPane()), cell(typeContentPane)).getComponent()); return panel; } - protected void setContentPaneBorder() { - return; - } - + /** + * 运动方式 + * @return animationSelectPane + */ private Component createAnimationSelectPane() { - JPanel panel = new JPanel(new BorderLayout(5, 0)); - UILabel label1 = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Animation_Type")); - label1.setPreferredSize(new Dimension((int) TableLayout4VanChartHelper.DESCRIPTION_AREA_WIDTH, 20)); - panel.add(label1, BorderLayout.WEST); - panel.add(animationType, BorderLayout.CENTER); - return panel; + return FineLayoutBuilder.createHorizontalLayout(0, new double[]{1.2, 3}, + new UILabel(Toolkit.i18nText("Fine-Design_Chart_Animation_Type")), animationType); } private void initTypeContentPane() { diff --git a/designer-form/src/main/java/com/fr/design/actions/TemplateParameterAction.java b/designer-form/src/main/java/com/fr/design/actions/TemplateParameterAction.java index 99e432eee1..3514ffd29b 100644 --- a/designer-form/src/main/java/com/fr/design/actions/TemplateParameterAction.java +++ b/designer-form/src/main/java/com/fr/design/actions/TemplateParameterAction.java @@ -1,6 +1,6 @@ package com.fr.design.actions; -import com.fr.base.BaseUtils; +import com.fine.theme.icon.LazyIcon; import com.fr.base.Parameter; import com.fr.design.DesignModelAdapter; import com.fr.design.dialog.BasicDialog; @@ -22,7 +22,7 @@ public class TemplateParameterAction extends JTemplateAction { this.setMenuKeySet(KeySetUtils.REPORT_PARAMETER_ATTR); this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_report/p.png")); + this.setSmallIcon(new LazyIcon("param")); } @Override diff --git a/designer-form/src/main/java/com/fr/design/actions/file/export/EmbeddedFormExportExportAction.java b/designer-form/src/main/java/com/fr/design/actions/file/export/EmbeddedFormExportExportAction.java index 6d0fe9aa52..8b8f1c723d 100644 --- a/designer-form/src/main/java/com/fr/design/actions/file/export/EmbeddedFormExportExportAction.java +++ b/designer-form/src/main/java/com/fr/design/actions/file/export/EmbeddedFormExportExportAction.java @@ -1,5 +1,6 @@ package com.fr.design.actions.file.export; +import com.fine.theme.icon.LazyIcon; import com.fr.base.BaseUtils; import com.fr.base.Parameter; import com.fr.base.extension.FileExtension; @@ -30,7 +31,7 @@ public class EmbeddedFormExportExportAction extends AbstractExportAction this.setMenuKeySet(KeySetUtils.EMBEDDED_EXPORT); this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setMnemonic(getMenuKeySet().getMnemonic()); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/oem/logo.png")); + this.setSmallIcon(new LazyIcon("logo")); } @Override diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/TabMoveCustomAction.java b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/TabMoveCustomAction.java index 8930c686c4..44f7646530 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/TabMoveCustomAction.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/TabMoveCustomAction.java @@ -1,7 +1,7 @@ package com.fr.design.designer.creator.cardlayout; +import com.fine.theme.icon.LazyIcon; import com.fr.design.mainframe.FormDesigner; -import com.fr.general.IOUtils; /** * Created by zhouping on 2017/2/9. @@ -11,7 +11,7 @@ public class TabMoveCustomAction extends TabMoveAction { public TabMoveCustomAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { super(t, xCardSwitchButton); this.setName(""); - this.setSmallIcon(IOUtils.readIcon("/com/fr/design/images/control/refresh.png")); + this.setSmallIcon(new LazyIcon("refresh")); } } diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java index 6dfae2ddd7..b802fa1602 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/TabMoveNextAction.java @@ -1,9 +1,9 @@ package com.fr.design.designer.creator.cardlayout; +import com.fine.theme.icon.LazyIcon; import com.fr.design.mainframe.FormDesigner; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.container.cardlayout.WTabFitLayout; -import com.fr.general.IOUtils; /** @@ -14,7 +14,7 @@ public class TabMoveNextAction extends TabMoveAction { public TabMoveNextAction(FormDesigner t, XCardSwitchButton xCardSwitchButton) { super(t, xCardSwitchButton); this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Move_Tab_Next")); - this.setSmallIcon(IOUtils.readIcon("com/fr/design/images/control/tab/next.png")); + this.setSmallIcon(new LazyIcon("triangle_right")); } @Override diff --git a/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontNameAction.java b/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontNameAction.java index c6f0f6416d..735802057e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontNameAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontNameAction.java @@ -3,7 +3,6 @@ */ package com.fr.design.actions.cell.style; -import com.fine.theme.utils.FineUIScale; import com.fr.design.utils.DesignUtils; import com.fr.stable.os.OperatingSystem; import java.awt.Dimension; @@ -84,7 +83,7 @@ public class ReportFontNameAction extends AbstractStyleAction { UIComboBox itemComponent = new UIComboBox(DesignUtils.getAvailableFontFamilyNames4Report()); this.putValue(UIComboBox.class.getName(), itemComponent); //设置最佳宽度. - itemComponent.setPreferredSize(FineUIScale.scale(new Dimension(140, 24))); + itemComponent.setPreferredSize(new Dimension(150, 24)); itemComponent.setEnabled(this.isEnabled()); itemComponent.addActionListener(this); diff --git a/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontSizeAction.java b/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontSizeAction.java index 5a19a507bd..f9564a8a2e 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontSizeAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/cell/style/ReportFontSizeAction.java @@ -95,8 +95,8 @@ public class ReportFontSizeAction extends AbstractStyleAction { UIComboBox itemComponent = new UIComboBox(integerList); this.putValue(UIComboBox.class.getName(), itemComponent); - itemComponent.setMinimumSize(new Dimension(50, 20)); - itemComponent.setPreferredSize(new Dimension(50, 20)); + itemComponent.setMinimumSize(new Dimension(70, 24)); + itemComponent.setPreferredSize(new Dimension(70, 24)); itemComponent.setEnabled(this.isEnabled()); itemComponent.addActionListener(this); //需求字体大小可编辑 diff --git a/designer-realize/src/main/java/com/fr/design/actions/edit/DeleteAction.java b/designer-realize/src/main/java/com/fr/design/actions/edit/DeleteAction.java index c82bf748de..0065a8dc9f 100644 --- a/designer-realize/src/main/java/com/fr/design/actions/edit/DeleteAction.java +++ b/designer-realize/src/main/java/com/fr/design/actions/edit/DeleteAction.java @@ -4,6 +4,7 @@ package com.fr.design.actions.edit; +import com.fine.theme.icon.LazyIcon; import com.fr.design.actions.ElementCaseAction; import com.fr.design.mainframe.ElementCasePane; @@ -20,7 +21,7 @@ public class DeleteAction extends ElementCaseAction { this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_M_Edit_Delete")); this.setMnemonic('D'); //Richie:删除菜单图标 - this.setSmallIcon("/com/fr/design/images/m_report/delete"); + this.setSmallIcon(new LazyIcon("remove")); // this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0)); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java index 0483a4662d..e80002e52c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java @@ -360,7 +360,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane { ).getComponent()) .addSupplier("showChar", () -> column(LayoutConstants.VERTICAL_GAP, cell(textOverflowCheckBox), - row(cell(showPartLabel).weight(1.2), cell(showPartComboBox).weight(1.6), flex(0.1), cell(numberLabel).weight(0.5), cell(showCharNums).weight(0.8)), + row(cell(showPartLabel).weight(1.2), cell(showPartComboBox).weight(1.4), flex(0.1), cell(numberLabel).weight(0.5), cell(showCharNums).weight(1.0)), row(cell(hideTypeLabel).weight(1.2), cell(textOverflowTypeComboBox).weight(3.0)) ).getComponent()) .addSupplier("showCell", () -> column(LayoutConstants.VERTICAL_GAP, diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/CellDesensitizationGroupsPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/CellDesensitizationGroupsPane.java index e741da25cd..5831e9aa0e 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/CellDesensitizationGroupsPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/desensitization/CellDesensitizationGroupsPane.java @@ -62,6 +62,7 @@ public class CellDesensitizationGroupsPane extends JPanel { private JPanel initAddPane(CellDesensitizationTableModel model) { UIButton addButton = new UIButton(model.getAction()); UILabel addLabel = new UILabel(Toolkit.i18nText("Fine-Design_Report_Desensitization_Setting")); + addLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Report_Desensitization_Setting")); return Layouts.row( cell(addLabel).weight(1.2), cell(addButton).weight(3.0) diff --git a/designer-realize/src/main/java/com/fr/poly/actions/DeleteBlockAction.java b/designer-realize/src/main/java/com/fr/poly/actions/DeleteBlockAction.java index 1acda00e68..a510be9105 100644 --- a/designer-realize/src/main/java/com/fr/poly/actions/DeleteBlockAction.java +++ b/designer-realize/src/main/java/com/fr/poly/actions/DeleteBlockAction.java @@ -3,6 +3,7 @@ */ package com.fr.poly.actions; +import com.fine.theme.icon.LazyIcon; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; @@ -26,7 +27,7 @@ public class DeleteBlockAction extends UpdateAction implements TemplateComponent this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_M_Edit_Delete")); this.setMnemonic('D'); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); - this.setSmallIcon("/com/fr/design/images/m_report/delete"); + this.setSmallIcon(new LazyIcon("remove")); } @Override