From b818ebb5d966e764dda8294930aef233916724fe Mon Sep 17 00:00:00 2001 From: "Leo.Qin" Date: Wed, 10 Jan 2024 20:23:53 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-107973=20=E5=B7=A5=E5=85=B7=E6=A0=8F?= =?UTF-8?q?=E5=8F=8D=E7=99=BD=E5=9B=BE=E6=A0=87=E7=BB=98=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fine/theme/light/ui/FineMenuUI.java | 40 ------------------- .../mainframe/EastRegionContainerPane.java | 2 + .../main/java/com/fr/design/menu/MenuDef.java | 8 ++++ .../theme/light/ui/laf/FineLaf.properties | 2 +- .../light/ui/laf/FineLightLaf.properties | 3 +- .../components/PopupMenuStoryBoard.java | 33 ++++++++++++--- 6 files changed, 40 insertions(+), 48 deletions(-) delete mode 100644 designer-base/src/main/java/com/fine/theme/light/ui/FineMenuUI.java diff --git a/designer-base/src/main/java/com/fine/theme/light/ui/FineMenuUI.java b/designer-base/src/main/java/com/fine/theme/light/ui/FineMenuUI.java deleted file mode 100644 index b71b816a0..000000000 --- a/designer-base/src/main/java/com/fine/theme/light/ui/FineMenuUI.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.fine.theme.light.ui; - -import com.fine.theme.icon.LazyIcon; -import com.formdev.flatlaf.ui.FlatMenuUI; - -import javax.swing.JComponent; -import javax.swing.plaf.ComponentUI; -import java.awt.Graphics; - -/** - * 弹窗菜单UI - * - * @author Leo.Qin - * @since 11.0 - * Created on 2024/1/8 - */ -public class FineMenuUI extends FlatMenuUI { - - - /** - * 创建UI - * - * @param c - * @return - */ - public static ComponentUI createUI(JComponent c) { - return new FineMenuUI(); - } - - @Override - protected void installDefaults() { - arrowIcon = new LazyIcon("triangle_right"); - super.installDefaults(); - } - - @Override - public void paint(Graphics g, JComponent c) { - super.paint(g, c); - } -} 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 1b782dd30..f060bf0ff 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 @@ -1,6 +1,7 @@ package com.fr.design.mainframe; import com.fine.theme.icon.LazyIcon; +import com.fine.theme.light.ui.RectangleButtonUI; import com.fine.theme.utils.FineUIScale; import com.fine.theme.utils.FineUIUtils; import com.formdev.flatlaf.FlatDarkLaf; @@ -1004,6 +1005,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer { }; button.setDisabledIcon(new LazyIcon(btnIconName + ICON_SUFFIX_DISABLED)); button.set4LargeToolbarButton(); + button.setUI(new RectangleButtonUI(false)); setStyle(button, STYLE_TEXT); button.addActionListener(new ActionListener() { @Override diff --git a/designer-base/src/main/java/com/fr/design/menu/MenuDef.java b/designer-base/src/main/java/com/fr/design/menu/MenuDef.java index 1f5de9a2d..1de6b78b3 100644 --- a/designer-base/src/main/java/com/fr/design/menu/MenuDef.java +++ b/designer-base/src/main/java/com/fr/design/menu/MenuDef.java @@ -361,11 +361,19 @@ public class MenuDef extends ShortCut { for (MenuElement subElement : subElements) { if (subElement instanceof JMenu) { JMenu jMenu = (JMenu) subElement; + Icon icon = jMenu.getIcon(); + if (icon instanceof LazyIcon && jMenu.getSelectedIcon() == null) { + jMenu.setSelectedIcon(((LazyIcon) icon).white()); + } setStyle(jMenu, FineUIStyle.MENU_TOOL_BAR); JPopupMenu childPopupMenu = jMenu.getPopupMenu(); setToolBarClientProperty(childPopupMenu); } else if (subElement instanceof JMenuItem) { JMenuItem jMenuItem = (JMenuItem) subElement; + Icon icon = jMenuItem.getIcon(); + if (icon instanceof LazyIcon && jMenuItem.getSelectedIcon() == null) { + jMenuItem.setSelectedIcon(((LazyIcon) icon).white()); + } setStyle(jMenuItem, FineUIStyle.MENU_ITEM_TOOL_BAR); } } diff --git a/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLaf.properties b/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLaf.properties index 8985e99dd..7f26ba5f1 100644 --- a/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLaf.properties +++ b/designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLaf.properties @@ -13,7 +13,7 @@ FormattedTextFieldUI=com.formdev.flatlaf.ui.FlatFormattedTextFieldUI InternalFrameUI=com.formdev.flatlaf.ui.FlatInternalFrameUI LabelUI=com.formdev.flatlaf.ui.FlatLabelUI ListUI=com.formdev.flatlaf.ui.FlatListUI -MenuUI=com.fine.theme.light.ui.FineMenuUI +MenuUI=com.formdev.flatlaf.ui.FlatMenuUI MenuBarUI=com.formdev.flatlaf.ui.FlatMenuBarUI MenuItemUI=com.fine.theme.light.ui.FineMenuItemUI OptionPaneUI=com.formdev.flatlaf.ui.FlatOptionPaneUI 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 d9deea101..d3a8bc006 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 @@ -1274,7 +1274,8 @@ CellOtherSetPane.height=$Component.defaultHeight selectionBackground : $brand.normal; \ selectionForeground : $text.white; \ acceleratorForeground : @foreground; \ - acceleratorSelectionForeground : $text.white + acceleratorSelectionForeground : $text.white; \ + icon.arrowType : triangle; [style]MenuItem.menuItemToolBar=\ selectionBackground : $brand.normal; \ selectionForeground : $text.white; \ diff --git a/designer-base/src/test/java/com/fr/design/gui/storybook/components/PopupMenuStoryBoard.java b/designer-base/src/test/java/com/fr/design/gui/storybook/components/PopupMenuStoryBoard.java index fb4354d3d..bd202b6f5 100644 --- a/designer-base/src/test/java/com/fr/design/gui/storybook/components/PopupMenuStoryBoard.java +++ b/designer-base/src/test/java/com/fr/design/gui/storybook/components/PopupMenuStoryBoard.java @@ -10,16 +10,20 @@ import com.fr.design.gui.storybook.StoryBoard; import com.fr.design.menu.DottedSeparator; import com.fr.design.menu.NameSeparator; +import javax.swing.Icon; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; +import javax.swing.KeyStroke; import javax.swing.MenuElement; +import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import static com.fine.swing.ui.layout.Layouts.cell; import static com.fine.swing.ui.layout.Layouts.column; import static com.fine.theme.utils.FineUIStyle.setStyle; +import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; /** * 弹窗组件 @@ -36,14 +40,19 @@ public class PopupMenuStoryBoard extends StoryBoard { column(70, cell(new UIButton("点击展示弹窗")).with(it -> { UIPopupMenu popupMenu = new UIPopupMenu(); - popupMenu.add(new UIMenuItem("test1", new LazyIcon("edit"))); + popupMenu.add(new UIMenuItem("test1")); popupMenu.add(new UIMenuItem("test2", new LazyIcon("cellHyperLinkAttr"))); popupMenu.addSeparator(); popupMenu.add(new UIMenuItem("test3", new LazyIcon("cellClear"))); popupMenu.add(new NameSeparator("分割线").createMenuItem()); - popupMenu.add(new UIMenuItem("test4", new LazyIcon("cellOtherAttr"))); + UIMenuItem menuItem = new UIMenuItem("test4", new LazyIcon("cellOtherAttr")); + menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, DEFAULT_MODIFIER)); + popupMenu.add(menuItem); popupMenu.add(new DottedSeparator().createMenuItem()); - popupMenu.add(new UIMenuItem("test5", new LazyIcon("cellExpandAttr"))); + JMenu test5 = new JMenu("test5"); + test5.setIcon(new LazyIcon("cellExpandAttr")); + popupMenu.add(test5); + it.addMouseListener(new MouseAdapter() { @@ -57,14 +66,18 @@ public class PopupMenuStoryBoard extends StoryBoard { cell(new UIButton("点击展示菜单栏弹窗")).with(it -> { UIPopupMenu popupMenu = new UIPopupMenu(); - popupMenu.add(new UIMenuItem("test1", new LazyIcon("edit"))); + popupMenu.add(new UIMenuItem("test1")); popupMenu.add(new UIMenuItem("test2", new LazyIcon("cellHyperLinkAttr"))); popupMenu.addSeparator(); popupMenu.add(new UIMenuItem("test3", new LazyIcon("cellClear"))); popupMenu.add(new NameSeparator("分割线").createMenuItem()); - popupMenu.add(new UIMenuItem("test4", new LazyIcon("cellOtherAttr"))); + UIMenuItem menuItem = new UIMenuItem("test4", new LazyIcon("cellOtherAttr")); + menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, DEFAULT_MODIFIER)); + popupMenu.add(menuItem); popupMenu.add(new DottedSeparator().createMenuItem()); - popupMenu.add(new UIMenuItem("test5", new LazyIcon("cellExpandAttr"))); + JMenu test5 = new JMenu("test5"); + test5.setIcon(new LazyIcon("cellExpandAttr")); + popupMenu.add(test5); it.addMouseListener(new MouseAdapter() { @@ -90,11 +103,19 @@ public class PopupMenuStoryBoard extends StoryBoard { for (MenuElement subElement : subElements) { if (subElement instanceof JMenu) { JMenu jMenu = (JMenu) subElement; + Icon icon = jMenu.getIcon(); + if (icon instanceof LazyIcon && jMenu.getSelectedIcon() == null) { + jMenu.setSelectedIcon(((LazyIcon) icon).white()); + } JPopupMenu childPopupMenu = jMenu.getPopupMenu(); setStyle(jMenu, FineUIStyle.MENU_TOOL_BAR); setToolBarClientProperty(childPopupMenu); } else if (subElement instanceof JMenuItem) { JMenuItem jMenuItem = (JMenuItem) subElement; + Icon icon = jMenuItem.getIcon(); + if (icon instanceof LazyIcon && jMenuItem.getSelectedIcon() == null) { + jMenuItem.setSelectedIcon(((LazyIcon) icon).white()); + } setStyle(jMenuItem, FineUIStyle.MENU_ITEM_TOOL_BAR); } }