diff --git a/CHANGELOG.md b/CHANGELOG.md
index 17a60019..c9bef8e1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,7 +12,9 @@ FlatLaf Change Log
property `JComponent.minimumHeight` to an integer). (issue #44)
- Button and ToggleButton: Do not apply minimum width if button border was
changed (is no longer an instance of `FlatButtonBorder`).
-- ToggleButton: No longer use focus width for underline style toggle buttons to
+- ToggleButton: Renamed toggle button type "underline" to "tab" (value of client
+ property `JButton.buttonType` is now `tab`).
+- ToggleButton: No longer use focus width for tab-style toggle buttons to
compute component size, which reduces/fixes component size in "Flat IntelliJ"
and "Flat Darcula" themes.
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java
index 45081cae..be2707d6 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatClientProperties.java
@@ -43,13 +43,13 @@ public interface FlatClientProperties
String BUTTON_TYPE_SQUARE = "square";
/**
- * Paint the toggle button in underline style.
+ * Paint the toggle button in tab style.
*
* Components {@link javax.swing.JToggleButton}
*
* @see #TOGGLE_BUTTON_TYPE
*/
- String BUTTON_TYPE_UNDERLINE = "underline";
+ String BUTTON_TYPE_TAB = "tab";
/**
* Paint a help button (circle with question mark).
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
index 7c556807..33f7dfdc 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java
@@ -445,11 +445,11 @@ public class IntelliJTheme
for( Map.Entry e : uiKeyMapping.entrySet() )
uiKeyInverseMapping.put( e.getValue(), e.getKey() );
- uiKeyCopying.put( "ToggleButton.underline.underlineColor", "TabbedPane.underlineColor" );
- uiKeyCopying.put( "ToggleButton.underline.disabledUnderlineColor", "TabbedPane.disabledUnderlineColor" );
- uiKeyCopying.put( "ToggleButton.underline.selectedBackground", "TabbedPane.selectedBackground" );
- uiKeyCopying.put( "ToggleButton.underline.hoverBackground", "TabbedPane.hoverColor" );
- uiKeyCopying.put( "ToggleButton.underline.focusBackground", "TabbedPane.focusColor" );
+ uiKeyCopying.put( "ToggleButton.tab.underlineColor", "TabbedPane.underlineColor" );
+ uiKeyCopying.put( "ToggleButton.tab.disabledUnderlineColor", "TabbedPane.disabledUnderlineColor" );
+ uiKeyCopying.put( "ToggleButton.tab.selectedBackground", "TabbedPane.selectedBackground" );
+ uiKeyCopying.put( "ToggleButton.tab.hoverBackground", "TabbedPane.hoverColor" );
+ uiKeyCopying.put( "ToggleButton.tab.focusBackground", "TabbedPane.focusColor" );
checkboxKeyMapping.put( "Checkbox.Background.Default", "CheckBox.icon.background" );
checkboxKeyMapping.put( "Checkbox.Background.Disabled", "CheckBox.icon.disabledBackground" );
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java
index 4fd505b3..f8ebe5a6 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonBorder.java
@@ -65,7 +65,7 @@ public class FlatButtonBorder
@Override
public void paintBorder( Component c, Graphics g, int x, int y, int width, int height ) {
- if( FlatButtonUI.isContentAreaFilled( c ) && !FlatButtonUI.isHelpButton( c ) && !FlatToggleButtonUI.isUnderlineButton( c ) )
+ if( FlatButtonUI.isContentAreaFilled( c ) && !FlatButtonUI.isHelpButton( c ) && !FlatToggleButtonUI.isTabButton( c ) )
super.paintBorder( c, g, x, y, width, height );
}
@@ -106,7 +106,7 @@ public class FlatButtonBorder
@Override
protected float getFocusWidth( Component c ) {
- return FlatToggleButtonUI.isUnderlineButton( c ) ? 0 : super.getFocusWidth(c );
+ return FlatToggleButtonUI.isTabButton( c ) ? 0 : super.getFocusWidth(c );
}
@Override
diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java
index f313b64e..2c232de3 100644
--- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java
+++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToggleButtonUI.java
@@ -61,12 +61,12 @@ import com.formdev.flatlaf.util.UIScale;
* @uiDefault ToggleButton.disabledSelectedBackground Color
* @uiDefault ToggleButton.toolbar.selectedBackground Color
*
- * @uiDefault ToggleButton.underline.underlineHeight int
- * @uiDefault ToggleButton.underline.underlineColor Color
- * @uiDefault ToggleButton.underline.disabledUnderlineColor Color
- * @uiDefault ToggleButton.underline.selectedBackground Color optional
- * @uiDefault ToggleButton.underline.hoverBackground Color
- * @uiDefault ToggleButton.underline.focusBackground Color
+ * @uiDefault ToggleButton.tab.underlineHeight int
+ * @uiDefault ToggleButton.tab.underlineColor Color
+ * @uiDefault ToggleButton.tab.disabledUnderlineColor Color
+ * @uiDefault ToggleButton.tab.selectedBackground Color optional
+ * @uiDefault ToggleButton.tab.hoverBackground Color
+ * @uiDefault ToggleButton.tab.focusBackground Color
*
*
* @author Karl Tauber
@@ -80,12 +80,12 @@ public class FlatToggleButtonUI
protected Color toolbarSelectedBackground;
- protected int underlineHeight;
- protected Color underlineColor;
- protected Color disabledUnderlineColor;
- protected Color underlineSelectedBackground;
- protected Color underlineHoverBackground;
- protected Color underlineFocusBackground;
+ protected int tabUnderlineHeight;
+ protected Color tabUnderlineColor;
+ protected Color tabDisabledUnderlineColor;
+ protected Color tabSelectedBackground;
+ protected Color tabHoverBackground;
+ protected Color tabFocusBackground;
private boolean defaults_initialized = false;
@@ -113,12 +113,12 @@ public class FlatToggleButtonUI
toolbarSelectedBackground = UIManager.getColor( "ToggleButton.toolbar.selectedBackground" );
- underlineHeight = UIManager.getInt( "ToggleButton.underline.underlineHeight" );
- underlineColor = UIManager.getColor( "ToggleButton.underline.underlineColor" );
- disabledUnderlineColor = UIManager.getColor( "ToggleButton.underline.disabledUnderlineColor" );
- underlineSelectedBackground = UIManager.getColor( "ToggleButton.underline.selectedBackground" );
- underlineHoverBackground = UIManager.getColor( "ToggleButton.underline.hoverBackground" );
- underlineFocusBackground = UIManager.getColor( "ToggleButton.underline.focusBackground" );
+ tabUnderlineHeight = UIManager.getInt( "ToggleButton.tab.underlineHeight" );
+ tabUnderlineColor = UIManager.getColor( "ToggleButton.tab.underlineColor" );
+ tabDisabledUnderlineColor = UIManager.getColor( "ToggleButton.tab.disabledUnderlineColor" );
+ tabSelectedBackground = UIManager.getColor( "ToggleButton.tab.selectedBackground" );
+ tabHoverBackground = UIManager.getColor( "ToggleButton.tab.hoverBackground" );
+ tabFocusBackground = UIManager.getColor( "ToggleButton.tab.focusBackground" );
defaults_initialized = true;
}
@@ -136,7 +136,7 @@ public class FlatToggleButtonUI
switch( e.getPropertyName() ) {
case BUTTON_TYPE:
- if( BUTTON_TYPE_UNDERLINE.equals( e.getOldValue() ) || BUTTON_TYPE_UNDERLINE.equals( e.getNewValue() ) ) {
+ if( BUTTON_TYPE_TAB.equals( e.getOldValue() ) || BUTTON_TYPE_TAB.equals( e.getNewValue() ) ) {
MigLayoutVisualPadding.uninstall( b );
MigLayoutVisualPadding.install( b, getFocusWidth( b ) );
b.revalidate();
@@ -147,21 +147,21 @@ public class FlatToggleButtonUI
}
}
- static boolean isUnderlineButton( Component c ) {
- return c instanceof JToggleButton && clientPropertyEquals( (JToggleButton) c, BUTTON_TYPE, BUTTON_TYPE_UNDERLINE );
+ static boolean isTabButton( Component c ) {
+ return c instanceof JToggleButton && clientPropertyEquals( (JToggleButton) c, BUTTON_TYPE, BUTTON_TYPE_TAB );
}
@Override
protected void paintBackground( Graphics g, JComponent c ) {
- if( isUnderlineButton( c ) ) {
+ if( isTabButton( c ) ) {
int height = c.getHeight();
int width = c.getWidth();
boolean selected = ((AbstractButton)c).isSelected();
// paint background
Color background = buttonStateColor( c,
- selected ? underlineSelectedBackground : null,
- null, underlineFocusBackground, underlineHoverBackground, null );
+ selected ? tabSelectedBackground : null,
+ null, tabFocusBackground, tabHoverBackground, null );
if( background != null ) {
g.setColor( background );
g.fillRect( 0, 0, width, height );
@@ -169,8 +169,8 @@ public class FlatToggleButtonUI
// paint underline if selected
if( selected ) {
- int underlineHeight = UIScale.scale( this.underlineHeight );
- g.setColor( c.isEnabled() ? underlineColor : disabledUnderlineColor );
+ int underlineHeight = UIScale.scale( tabUnderlineHeight );
+ g.setColor( c.isEnabled() ? tabUnderlineColor : tabDisabledUnderlineColor );
g.fillRect( 0, height - underlineHeight, width, underlineHeight );
}
} else
@@ -207,6 +207,6 @@ public class FlatToggleButtonUI
@Override
protected int getFocusWidth( JComponent c ) {
- return isUnderlineButton( c ) ? 0 : super.getFocusWidth( c );
+ return isTabButton( c ) ? 0 : super.getFocusWidth( c );
}
}
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 a1d878fa..8dc57f3f 100644
--- a/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties
+++ b/flatlaf-core/src/main/resources/com/formdev/flatlaf/FlatLaf.properties
@@ -439,13 +439,13 @@ ToggleButton.pressedBackground=$Button.pressedBackground
ToggleButton.toolbar.hoverBackground=$Button.toolbar.hoverBackground
ToggleButton.toolbar.pressedBackground=$Button.toolbar.pressedBackground
-# button type "underline"
-ToggleButton.underline.underlineHeight=2
-ToggleButton.underline.underlineColor=$TabbedPane.underlineColor
-ToggleButton.underline.disabledUnderlineColor=$TabbedPane.disabledUnderlineColor
-ToggleButton.underline.selectedBackground=$?TabbedPane.selectedBackground
-ToggleButton.underline.hoverBackground=$TabbedPane.hoverColor
-ToggleButton.underline.focusBackground=$TabbedPane.focusColor
+# button type "tab"
+ToggleButton.tab.underlineHeight=2
+ToggleButton.tab.underlineColor=$TabbedPane.underlineColor
+ToggleButton.tab.disabledUnderlineColor=$TabbedPane.disabledUnderlineColor
+ToggleButton.tab.selectedBackground=$?TabbedPane.selectedBackground
+ToggleButton.tab.hoverBackground=$TabbedPane.hoverColor
+ToggleButton.tab.focusBackground=$TabbedPane.focusColor
#---- ToolBar ----
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java
index e7c1c58a..9c3c9ffe 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.java
@@ -344,14 +344,14 @@ public class FlatComponentsTest
add(toggleButton4, "cell 4 2");
//---- toggleButton5 ----
- toggleButton5.setText("underline");
- toggleButton5.putClientProperty("JButton.buttonType", "underline");
+ toggleButton5.setText("tab");
+ toggleButton5.putClientProperty("JButton.buttonType", "tab");
toggleButton5.setSelected(true);
add(toggleButton5, "cell 5 2");
//---- toggleButton8 ----
- toggleButton8.setText("underline");
- toggleButton8.putClientProperty("JButton.buttonType", "underline");
+ toggleButton8.setText("tab");
+ toggleButton8.putClientProperty("JButton.buttonType", "tab");
toggleButton8.setEnabled(false);
toggleButton8.setSelected(true);
add(toggleButton8, "cell 5 2");
diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd
index 61ac0eeb..48ccc963 100644
--- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd
+++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatComponentsTest.jfd
@@ -171,16 +171,16 @@ new FormModel {
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton5"
- "text": "underline"
- "$client.JButton.buttonType": "underline"
+ "text": "tab"
+ "$client.JButton.buttonType": "tab"
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {
"value": "cell 5 2"
} )
add( new FormComponent( "javax.swing.JToggleButton" ) {
name: "toggleButton8"
- "text": "underline"
- "$client.JButton.buttonType": "underline"
+ "text": "tab"
+ "$client.JButton.buttonType": "tab"
"enabled": false
"selected": true
}, new FormLayoutConstraints( class net.miginfocom.layout.CC ) {