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 ) )
value = value.substring( REF_PREFIX.length() );
boolean optional = false;
if( value.startsWith( "?" ) ) {
value = value.substring( 1 );
optional = true;
}
String newValue = properties.getProperty( value );
if( newValue == null ) {
if( optional )
return "null";
System.err.println( "variable or reference '" + value + "' not found" );
throw new IllegalArgumentException( value );
}

View File

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

View File

@@ -149,8 +149,12 @@ HelpButton.icon=com.formdev.flatlaf.icons.FlatHelpButtonIcon
HelpButton.borderColor=@@CheckBox.icon.borderColor
HelpButton.disabledBorderColor=@@CheckBox.icon.disabledBorderColor
HelpButton.focusedBorderColor=@@CheckBox.icon.focusedBorderColor
HelpButton.hoverBorderColor=@@?CheckBox.icon.hoverBorderColor
HelpButton.background=@@CheckBox.icon.background
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.disabledQuestionMarkColor=@@CheckBox.icon.disabledCheckmarkColor