@ -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 ;
}
}