mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2025-12-07 14:30:56 +03:00
Styling: support Help button
This commit is contained in:
@@ -24,7 +24,9 @@ import java.awt.geom.Ellipse2D;
|
||||
import java.awt.geom.Path2D;
|
||||
import javax.swing.UIManager;
|
||||
import com.formdev.flatlaf.ui.FlatButtonUI;
|
||||
import com.formdev.flatlaf.ui.FlatStyleSupport;
|
||||
import com.formdev.flatlaf.ui.FlatUIUtils;
|
||||
import com.formdev.flatlaf.ui.FlatStyleSupport.Styleable;
|
||||
|
||||
/**
|
||||
* Help button icon for {@link javax.swing.JButton}.
|
||||
@@ -50,29 +52,34 @@ import com.formdev.flatlaf.ui.FlatUIUtils;
|
||||
public class FlatHelpButtonIcon
|
||||
extends FlatAbstractIcon
|
||||
{
|
||||
protected final int focusWidth = UIManager.getInt( "Component.focusWidth" );
|
||||
protected final Color focusColor = UIManager.getColor( "Component.focusColor" );
|
||||
protected final float innerFocusWidth = FlatUIUtils.getUIFloat( "HelpButton.innerFocusWidth", FlatUIUtils.getUIFloat( "Component.innerFocusWidth", 0 ) );
|
||||
protected final int borderWidth = FlatUIUtils.getUIInt( "HelpButton.borderWidth", 1 );
|
||||
@Styleable protected int focusWidth = UIManager.getInt( "Component.focusWidth" );
|
||||
@Styleable protected Color focusColor = UIManager.getColor( "Component.focusColor" );
|
||||
@Styleable protected float innerFocusWidth = FlatUIUtils.getUIFloat( "HelpButton.innerFocusWidth", FlatUIUtils.getUIFloat( "Component.innerFocusWidth", 0 ) );
|
||||
@Styleable protected int borderWidth = FlatUIUtils.getUIInt( "HelpButton.borderWidth", 1 );
|
||||
|
||||
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" );
|
||||
|
||||
protected final int iconSize = 22 + (focusWidth * 2);
|
||||
@Styleable protected Color borderColor = UIManager.getColor( "HelpButton.borderColor" );
|
||||
@Styleable protected Color disabledBorderColor = UIManager.getColor( "HelpButton.disabledBorderColor" );
|
||||
@Styleable protected Color focusedBorderColor = UIManager.getColor( "HelpButton.focusedBorderColor" );
|
||||
@Styleable protected Color hoverBorderColor = UIManager.getColor( "HelpButton.hoverBorderColor" );
|
||||
@Styleable protected Color background = UIManager.getColor( "HelpButton.background" );
|
||||
@Styleable protected Color disabledBackground = UIManager.getColor( "HelpButton.disabledBackground" );
|
||||
@Styleable protected Color focusedBackground = UIManager.getColor( "HelpButton.focusedBackground" );
|
||||
@Styleable protected Color hoverBackground = UIManager.getColor( "HelpButton.hoverBackground" );
|
||||
@Styleable protected Color pressedBackground = UIManager.getColor( "HelpButton.pressedBackground" );
|
||||
@Styleable protected Color questionMarkColor = UIManager.getColor( "HelpButton.questionMarkColor" );
|
||||
@Styleable protected Color disabledQuestionMarkColor = UIManager.getColor( "HelpButton.disabledQuestionMarkColor" );
|
||||
|
||||
public FlatHelpButtonIcon() {
|
||||
super( 0, 0, null );
|
||||
}
|
||||
|
||||
/**
|
||||
* @since TODO
|
||||
*/
|
||||
public Object applyStyleProperty( String key, Object value ) {
|
||||
return FlatStyleSupport.applyToAnnotatedObject( this, key, value );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintIcon( Component c, Graphics2D g2 ) {
|
||||
/*
|
||||
@@ -89,7 +96,7 @@ public class FlatHelpButtonIcon
|
||||
boolean focused = FlatUIUtils.isPermanentFocusOwner( c );
|
||||
|
||||
float xy = 0.5f;
|
||||
float wh = iconSize - 1;
|
||||
float wh = iconSize() - 1;
|
||||
|
||||
// paint outer focus border
|
||||
if( focused && FlatButtonUI.isFocusPainted( c ) ) {
|
||||
@@ -151,11 +158,15 @@ public class FlatHelpButtonIcon
|
||||
|
||||
@Override
|
||||
public int getIconWidth() {
|
||||
return scale( iconSize );
|
||||
return scale( iconSize() );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getIconHeight() {
|
||||
return scale( iconSize );
|
||||
return scale( iconSize() );
|
||||
}
|
||||
|
||||
private int iconSize() {
|
||||
return 22 + (focusWidth * 2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ import javax.swing.plaf.UIResource;
|
||||
import javax.swing.plaf.basic.BasicButtonListener;
|
||||
import javax.swing.plaf.basic.BasicButtonUI;
|
||||
import com.formdev.flatlaf.FlatLaf;
|
||||
import com.formdev.flatlaf.icons.FlatHelpButtonIcon;
|
||||
import com.formdev.flatlaf.ui.FlatStyleSupport.Styleable;
|
||||
import com.formdev.flatlaf.ui.FlatStyleSupport.UnknownStyleException;
|
||||
import com.formdev.flatlaf.util.UIScale;
|
||||
@@ -137,6 +138,7 @@ public class FlatButtonUI
|
||||
|
||||
private final boolean shared;
|
||||
private boolean borderShared = true;
|
||||
private boolean helpButtonIconShared = true;
|
||||
private boolean defaults_initialized = false;
|
||||
private Map<String, Object> oldStyleValues;
|
||||
|
||||
@@ -274,6 +276,19 @@ public class FlatButtonUI
|
||||
* @since TODO
|
||||
*/
|
||||
protected Object applyStyleProperty( AbstractButton b, String key, Object value ) {
|
||||
if( key.startsWith( "help." ) ) {
|
||||
if( !(helpButtonIcon instanceof FlatHelpButtonIcon) )
|
||||
return new UnknownStyleException( key );
|
||||
|
||||
if( helpButtonIconShared ) {
|
||||
helpButtonIcon = FlatStyleSupport.cloneIcon( helpButtonIcon );
|
||||
helpButtonIconShared = false;
|
||||
}
|
||||
|
||||
key = key.substring( "help.".length() );
|
||||
return ((FlatHelpButtonIcon)helpButtonIcon).applyStyleProperty( key, value );
|
||||
}
|
||||
|
||||
try {
|
||||
return FlatStyleSupport.applyToAnnotatedObject( this, key, value );
|
||||
} catch( UnknownStyleException ex ) {
|
||||
|
||||
@@ -37,6 +37,7 @@ import javax.swing.plaf.basic.BasicRadioButtonUI;
|
||||
import com.formdev.flatlaf.FlatClientProperties;
|
||||
import com.formdev.flatlaf.icons.FlatCheckBoxIcon;
|
||||
import com.formdev.flatlaf.ui.FlatStyleSupport.Styleable;
|
||||
import com.formdev.flatlaf.ui.FlatStyleSupport.UnknownStyleException;
|
||||
import com.formdev.flatlaf.util.UIScale;
|
||||
|
||||
/**
|
||||
@@ -164,16 +165,15 @@ public class FlatRadioButtonUI
|
||||
protected Object applyStyleProperty( String key, Object value ) {
|
||||
// style icon
|
||||
if( key.startsWith( "icon." ) ) {
|
||||
key = key.substring( "icon.".length() );
|
||||
|
||||
if( !(icon instanceof FlatCheckBoxIcon) )
|
||||
return null;
|
||||
return new UnknownStyleException( key );
|
||||
|
||||
if( iconShared ) {
|
||||
icon = FlatStyleSupport.cloneIcon( icon );
|
||||
iconShared = false;
|
||||
}
|
||||
|
||||
key = key.substring( "icon.".length() );
|
||||
return ((FlatCheckBoxIcon)icon).applyStyleProperty( key, value );
|
||||
}
|
||||
|
||||
|
||||
@@ -70,6 +70,25 @@ public class FlatStylingTests
|
||||
ui.installUI( b );
|
||||
|
||||
button( b, ui );
|
||||
|
||||
//---- FlatHelpButtonIcon ----
|
||||
|
||||
ui.applyStyle( b, "help.focusWidth: 2" );
|
||||
ui.applyStyle( b, "help.focusColor: #fff" );
|
||||
ui.applyStyle( b, "help.innerFocusWidth: {float}0.5" );
|
||||
ui.applyStyle( b, "help.borderWidth: 1" );
|
||||
|
||||
ui.applyStyle( b, "help.borderColor: #fff" );
|
||||
ui.applyStyle( b, "help.disabledBorderColor: #fff" );
|
||||
ui.applyStyle( b, "help.focusedBorderColor: #fff" );
|
||||
ui.applyStyle( b, "help.hoverBorderColor: #fff" );
|
||||
ui.applyStyle( b, "help.background: #fff" );
|
||||
ui.applyStyle( b, "help.disabledBackground: #fff" );
|
||||
ui.applyStyle( b, "help.focusedBackground: #fff" );
|
||||
ui.applyStyle( b, "help.hoverBackground: #fff" );
|
||||
ui.applyStyle( b, "help.pressedBackground: #fff" );
|
||||
ui.applyStyle( b, "help.questionMarkColor: #fff" );
|
||||
ui.applyStyle( b, "help.disabledQuestionMarkColor: #fff" );
|
||||
}
|
||||
|
||||
private void button( AbstractButton b, FlatButtonUI ui ) {
|
||||
@@ -821,4 +840,25 @@ public class FlatStylingTests
|
||||
icon.applyStyleProperty( "disabledArrowColor", Color.WHITE );
|
||||
icon.applyStyleProperty( "selectionForeground", Color.WHITE );
|
||||
}
|
||||
@Test
|
||||
void flatHelpButtonIcon() {
|
||||
FlatHelpButtonIcon icon = new FlatHelpButtonIcon();
|
||||
|
||||
icon.applyStyleProperty( "focusWidth", 2 );
|
||||
icon.applyStyleProperty( "focusColor", Color.WHITE );
|
||||
icon.applyStyleProperty( "innerFocusWidth", 0.5f );
|
||||
icon.applyStyleProperty( "borderWidth", 1 );
|
||||
|
||||
icon.applyStyleProperty( "borderColor", Color.WHITE );
|
||||
icon.applyStyleProperty( "disabledBorderColor", Color.WHITE );
|
||||
icon.applyStyleProperty( "focusedBorderColor", Color.WHITE );
|
||||
icon.applyStyleProperty( "hoverBorderColor", Color.WHITE );
|
||||
icon.applyStyleProperty( "background", Color.WHITE );
|
||||
icon.applyStyleProperty( "disabledBackground", Color.WHITE );
|
||||
icon.applyStyleProperty( "focusedBackground", Color.WHITE );
|
||||
icon.applyStyleProperty( "hoverBackground", Color.WHITE );
|
||||
icon.applyStyleProperty( "pressedBackground", Color.WHITE );
|
||||
icon.applyStyleProperty( "questionMarkColor", Color.WHITE );
|
||||
icon.applyStyleProperty( "disabledQuestionMarkColor", Color.WHITE );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user