diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index a8153576..4ee44705 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -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 ); } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatHelpButtonIcon.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatHelpButtonIcon.java index f53a5e25..05590acb 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatHelpButtonIcon.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/icons/FlatHelpButtonIcon.java @@ -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 diff --git a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties index 6591f114..472d46e2 100644 --- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties +++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties @@ -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