|
|
|
@ -2,6 +2,8 @@ package com.fr.design.mainframe.share.ui.actions;
|
|
|
|
|
|
|
|
|
|
import com.fr.design.constants.UIConstants; |
|
|
|
|
import com.fr.design.gui.imenu.UIMenuItemUI; |
|
|
|
|
import com.fr.design.gui.imenu.UIPopupMenu; |
|
|
|
|
import com.fr.design.mainframe.share.ui.constants.ColorConstants; |
|
|
|
|
import com.fr.design.utils.gui.GUIPaintUtils; |
|
|
|
|
import com.fr.stable.Constants; |
|
|
|
|
|
|
|
|
@ -10,6 +12,8 @@ import javax.swing.JMenu;
|
|
|
|
|
import javax.swing.JMenuItem; |
|
|
|
|
import javax.swing.MenuSelectionManager; |
|
|
|
|
import java.awt.Color; |
|
|
|
|
import java.awt.Component; |
|
|
|
|
import java.awt.Container; |
|
|
|
|
import java.awt.Graphics; |
|
|
|
|
import java.awt.Graphics2D; |
|
|
|
|
|
|
|
|
@ -20,16 +24,6 @@ import java.awt.Graphics2D;
|
|
|
|
|
*/ |
|
|
|
|
public class SharedComponentActionMenuItemUI extends UIMenuItemUI { |
|
|
|
|
|
|
|
|
|
private final boolean autoClosePopup; |
|
|
|
|
|
|
|
|
|
public SharedComponentActionMenuItemUI(boolean autoClosePopup) { |
|
|
|
|
this.autoClosePopup = autoClosePopup; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public SharedComponentActionMenuItemUI() { |
|
|
|
|
this(true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected void paintBackground(Graphics g, JMenuItem menuItem, Color bgColor) { |
|
|
|
|
ButtonModel model = menuItem.getModel(); |
|
|
|
@ -37,19 +31,45 @@ public class SharedComponentActionMenuItemUI extends UIMenuItemUI {
|
|
|
|
|
int menuWidth = menuItem.getWidth(); |
|
|
|
|
int menuHeight = menuItem.getHeight(); |
|
|
|
|
|
|
|
|
|
g.setColor(ColorConstants.BACKGROUND); |
|
|
|
|
g.fillRect(0, 0, menuWidth, menuHeight); |
|
|
|
|
if (menuItem.isOpaque()) { |
|
|
|
|
if (model.isArmed() || (menuItem instanceof JMenu && model.isSelected())) { |
|
|
|
|
GUIPaintUtils.fillPaint((Graphics2D) g, 0, 0, menuWidth, menuHeight, true, Constants.NULL, UIConstants.FLESH_BLUE, 0); |
|
|
|
|
GUIPaintUtils.fillPaint((Graphics2D) g, 0, 0, menuWidth, menuHeight, true, Constants.NULL, UIConstants.FLESH_BLUE, 7); |
|
|
|
|
} else { |
|
|
|
|
GUIPaintUtils.fillPaint((Graphics2D) g, 0, 0, menuWidth, menuHeight, true, Constants.NULL, menuItem.getBackground(), 7); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
g.setColor(oldColor); |
|
|
|
|
} else if (model.isArmed() || (menuItem instanceof JMenu && |
|
|
|
|
model.isSelected())) { |
|
|
|
|
GUIPaintUtils.fillPaint((Graphics2D) g, 0, 0, menuWidth, menuHeight, true, Constants.NULL, UIConstants.FLESH_BLUE, 7); |
|
|
|
|
g.setColor(oldColor); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
protected void doClick(MenuSelectionManager msm) { |
|
|
|
|
if (autoClosePopup) { |
|
|
|
|
super.doClick(msm); |
|
|
|
|
} else { |
|
|
|
|
if (hasLoadingMenuItem()) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (menuItem instanceof LoadingMenuItem) { |
|
|
|
|
menuItem.doClick(0); |
|
|
|
|
} else { |
|
|
|
|
super.doClick(msm); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean hasLoadingMenuItem() { |
|
|
|
|
Container parent = menuItem.getParent(); |
|
|
|
|
if (parent instanceof UIPopupMenu) { |
|
|
|
|
Component[] components = parent.getComponents(); |
|
|
|
|
for (Component component: components) { |
|
|
|
|
if (component instanceof LoadingMenuItem && ((LoadingMenuItem) component).isLoading()) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|