From 560ec437b9f8f6f393ee3211f416afda6706fde2 Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 15 Sep 2021 10:57:52 +0200 Subject: [PATCH] Styling: avoid duplicate applying styles to buttons, labels and separators (which use shared UI delegates) --- .../com/formdev/flatlaf/ui/FlatButtonUI.java | 22 +++++++-------- .../com/formdev/flatlaf/ui/FlatLabelUI.java | 27 +++++++++---------- .../formdev/flatlaf/ui/FlatRadioButtonUI.java | 22 +++++++-------- .../formdev/flatlaf/ui/FlatSeparatorUI.java | 9 +++---- .../flatlaf/ui/FlatToolBarSeparatorUI.java | 9 +++---- 5 files changed, 38 insertions(+), 51 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java index cc2990d8..a171cfe2 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatButtonUI.java @@ -254,23 +254,19 @@ public class FlatButtonUI break; case STYLE: - applyStyle( b, this, e.getNewValue() ); + Object style = e.getNewValue(); + if( style != null && shared ) { + // unshare component UI if necessary + // updateUI() invokes applyStyle() from installUI() + b.updateUI(); + } else + applyStyle( b, style ); + b.revalidate(); + b.repaint(); break; } } - private static void applyStyle( AbstractButton b, FlatButtonUI ui, Object style ) { - // unshare component UI if necessary - if( style != null && ui.shared ) { - b.updateUI(); - ui = (FlatButtonUI) b.getUI(); - } - - ui.applyStyle( b, style ); - b.revalidate(); - b.repaint(); - } - /** * @since 2 */ diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java index 8877a7dd..6334cd6e 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatLabelUI.java @@ -119,24 +119,21 @@ public class FlatLabelUI if( name == "text" || name == "font" || name == "foreground" ) { JLabel label = (JLabel) e.getSource(); updateHTMLRenderer( label, label.getText(), true ); - } else if( name.equals( FlatClientProperties.STYLE ) ) - applyStyle( (JLabel) e.getSource(), this, e.getNewValue() ); - else + } else if( name.equals( FlatClientProperties.STYLE ) ) { + JLabel label = (JLabel) e.getSource(); + Object style = e.getNewValue(); + if( style != null && shared ) { + // unshare component UI if necessary + // updateUI() invokes applyStyle() from installUI() + label.updateUI(); + } else + applyStyle( label, style ); + label.revalidate(); + label.repaint(); + } else super.propertyChange( e ); } - private static void applyStyle( JLabel c, FlatLabelUI ui, Object style ) { - // unshare component UI if necessary - if( style != null && ui.shared ) { - c.updateUI(); - ui = (FlatLabelUI) c.getUI(); - } - - ui.applyStyle( c, style ); - c.revalidate(); - c.repaint(); - } - /** * @since 2 */ diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java index 73ea534e..642e09a0 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatRadioButtonUI.java @@ -138,23 +138,19 @@ public class FlatRadioButtonUI protected void propertyChange( AbstractButton b, PropertyChangeEvent e ) { switch( e.getPropertyName() ) { case FlatClientProperties.STYLE: - applyStyle( b, this, e.getNewValue() ); + Object style = e.getNewValue(); + if( style != null && shared ) { + // unshare component UI if necessary + // updateUI() invokes applyStyle() from installUI() + b.updateUI(); + } else + applyStyle( b, style ); + b.revalidate(); + b.repaint(); break; } } - private static void applyStyle( AbstractButton b, FlatRadioButtonUI ui, Object style ) { - // unshare component UI if necessary - if( style != null && ui.shared ) { - b.updateUI(); - ui = (FlatRadioButtonUI) b.getUI(); - } - - ui.applyStyle( b, style ); - b.revalidate(); - b.repaint(); - } - /** * @since 2 */ diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSeparatorUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSeparatorUI.java index 4712d058..8310e59e 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSeparatorUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatSeparatorUI.java @@ -125,13 +125,12 @@ public class FlatSeparatorUI } private static void applyStyle( JSeparator s, FlatSeparatorUI ui, Object style ) { - // unshare component UI if necessary if( style != null && ui.shared ) { + // unshare component UI if necessary + // updateUI() invokes applyStyle() from installUI() s.updateUI(); - ui = (FlatSeparatorUI) s.getUI(); - } - - ui.applyStyle( s, style ); + } else + ui.applyStyle( s, style ); s.revalidate(); s.repaint(); } diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarSeparatorUI.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarSeparatorUI.java index daaf999a..31881e2b 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarSeparatorUI.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/ui/FlatToolBarSeparatorUI.java @@ -121,13 +121,12 @@ public class FlatToolBarSeparatorUI } private static void applyStyle( JSeparator s, FlatToolBarSeparatorUI ui, Object style ) { - // unshare component UI if necessary if( style != null && ui.shared ) { + // unshare component UI if necessary + // updateUI() invokes applyStyle() from installUI() s.updateUI(); - ui = (FlatToolBarSeparatorUI) s.getUI(); - } - - ui.applyStyle( style ); + } else + ui.applyStyle( style ); s.revalidate(); s.repaint(); }