HelpButton: support hover, pressed and focused backgrounds and borders

This commit is contained in:
Karl Tauber
2019-09-13 00:04:10 +02:00
parent 5eabcef795
commit dee1f77c51
3 changed files with 34 additions and 6 deletions

View File

@@ -221,8 +221,17 @@ public abstract class FlatLaf
if( value.startsWith( REF_PREFIX ) ) if( value.startsWith( REF_PREFIX ) )
value = value.substring( REF_PREFIX.length() ); value = value.substring( REF_PREFIX.length() );
boolean optional = false;
if( value.startsWith( "?" ) ) {
value = value.substring( 1 );
optional = true;
}
String newValue = properties.getProperty( value ); String newValue = properties.getProperty( value );
if( newValue == null ) { if( newValue == null ) {
if( optional )
return "null";
System.err.println( "variable or reference '" + value + "' not found" ); System.err.println( "variable or reference '" + value + "' not found" );
throw new IllegalArgumentException( value ); throw new IllegalArgumentException( value );
} }

View File

@@ -23,6 +23,7 @@ import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D; import java.awt.geom.Ellipse2D;
import java.awt.geom.Path2D; import java.awt.geom.Path2D;
import javax.swing.UIManager; import javax.swing.UIManager;
import com.formdev.flatlaf.ui.FlatButtonUI;
/** /**
* Help button icon for {@link javax.swing.JButton}. * Help button icon for {@link javax.swing.JButton}.
@@ -32,8 +33,12 @@ import javax.swing.UIManager;
* @uiDefault HelpButton.borderColor Color * @uiDefault HelpButton.borderColor Color
* @uiDefault HelpButton.disabledBorderColor Color * @uiDefault HelpButton.disabledBorderColor Color
* @uiDefault HelpButton.focusedBorderColor Color * @uiDefault HelpButton.focusedBorderColor Color
* @uiDefault HelpButton.hoverBorderColor Color optional
* @uiDefault HelpButton.background Color * @uiDefault HelpButton.background Color
* @uiDefault HelpButton.disabledBackground Color * @uiDefault HelpButton.disabledBackground Color
* @uiDefault HelpButton.focusedBackground Color optional
* @uiDefault HelpButton.hoverBackground Color optional
* @uiDefault HelpButton.pressedBackground Color optional
* @uiDefault HelpButton.questionMarkColor Color * @uiDefault HelpButton.questionMarkColor Color
* @uiDefault HelpButton.disabledQuestionMarkColor Color * @uiDefault HelpButton.disabledQuestionMarkColor Color
* *
@@ -48,8 +53,12 @@ public class FlatHelpButtonIcon
protected final Color borderColor = UIManager.getColor( "HelpButton.borderColor" ); protected final Color borderColor = UIManager.getColor( "HelpButton.borderColor" );
protected final Color disabledBorderColor = UIManager.getColor( "HelpButton.disabledBorderColor" ); protected final Color disabledBorderColor = UIManager.getColor( "HelpButton.disabledBorderColor" );
protected final Color focusedBorderColor = UIManager.getColor( "HelpButton.focusedBorderColor" ); protected final Color focusedBorderColor = UIManager.getColor( "HelpButton.focusedBorderColor" );
protected final Color hoverBorderColor = UIManager.getColor( "HelpButton.hoverBorderColor" );
protected final Color background = UIManager.getColor( "HelpButton.background" ); protected final Color background = UIManager.getColor( "HelpButton.background" );
protected final Color disabledBackground = UIManager.getColor( "HelpButton.disabledBackground" ); protected final Color disabledBackground = UIManager.getColor( "HelpButton.disabledBackground" );
protected final Color focusedBackground = UIManager.getColor( "HelpButton.focusedBackground" );
protected final Color hoverBackground = UIManager.getColor( "HelpButton.hoverBackground" );
protected final Color pressedBackground = UIManager.getColor( "HelpButton.pressedBackground" );
protected final Color questionMarkColor = UIManager.getColor( "HelpButton.questionMarkColor" ); protected final Color questionMarkColor = UIManager.getColor( "HelpButton.questionMarkColor" );
protected final Color disabledQuestionMarkColor = UIManager.getColor( "HelpButton.disabledQuestionMarkColor" ); protected final Color disabledQuestionMarkColor = UIManager.getColor( "HelpButton.disabledQuestionMarkColor" );
@@ -81,15 +90,21 @@ public class FlatHelpButtonIcon
} }
// paint border // paint border
g2.setColor( enabled g2.setColor( FlatButtonUI.buttonStateColor( c,
? (focused ? focusedBorderColor : borderColor) borderColor,
: disabledBorderColor ); disabledBorderColor,
focusedBorderColor,
hoverBorderColor,
null ) );
g2.fill( new Ellipse2D.Float( focusWidth + 0.5f, focusWidth + 0.5f, 21, 21 ) ); g2.fill( new Ellipse2D.Float( focusWidth + 0.5f, focusWidth + 0.5f, 21, 21 ) );
// paint background // paint background
g2.setColor( enabled g2.setColor( FlatButtonUI.buttonStateColor( c,
? background background,
: disabledBackground ); disabledBackground,
focusedBackground,
hoverBackground,
pressedBackground ) );
g2.fill( new Ellipse2D.Float( focusWidth + 1.5f, focusWidth + 1.5f, 19, 19 ) ); g2.fill( new Ellipse2D.Float( focusWidth + 1.5f, focusWidth + 1.5f, 19, 19 ) );
// paint question mark // paint question mark

View File

@@ -149,8 +149,12 @@ HelpButton.icon=com.formdev.flatlaf.icons.FlatHelpButtonIcon
HelpButton.borderColor=@@CheckBox.icon.borderColor HelpButton.borderColor=@@CheckBox.icon.borderColor
HelpButton.disabledBorderColor=@@CheckBox.icon.disabledBorderColor HelpButton.disabledBorderColor=@@CheckBox.icon.disabledBorderColor
HelpButton.focusedBorderColor=@@CheckBox.icon.focusedBorderColor HelpButton.focusedBorderColor=@@CheckBox.icon.focusedBorderColor
HelpButton.hoverBorderColor=@@?CheckBox.icon.hoverBorderColor
HelpButton.background=@@CheckBox.icon.background HelpButton.background=@@CheckBox.icon.background
HelpButton.disabledBackground=@@CheckBox.icon.disabledBackground HelpButton.disabledBackground=@@CheckBox.icon.disabledBackground
HelpButton.focusedBackground=@@?CheckBox.icon.focusedBackground
HelpButton.hoverBackground=@@?CheckBox.icon.hoverBackground
HelpButton.pressedBackground=@@?CheckBox.icon.pressedBackground
HelpButton.questionMarkColor=@@CheckBox.icon.checkmarkColor HelpButton.questionMarkColor=@@CheckBox.icon.checkmarkColor
HelpButton.disabledQuestionMarkColor=@@CheckBox.icon.disabledCheckmarkColor HelpButton.disabledQuestionMarkColor=@@CheckBox.icon.disabledCheckmarkColor