Styling: avoid duplicate applying styles to buttons, labels and separators (which use shared UI delegates)

This commit is contained in:
Karl Tauber
2021-09-15 10:57:52 +02:00
parent ccd0597b35
commit 560ec437b9
5 changed files with 38 additions and 51 deletions

View File

@@ -254,21 +254,17 @@ public class FlatButtonUI
break; break;
case STYLE: case STYLE:
applyStyle( b, this, e.getNewValue() ); Object style = e.getNewValue();
break; if( style != null && shared ) {
}
}
private static void applyStyle( AbstractButton b, FlatButtonUI ui, Object style ) {
// unshare component UI if necessary // unshare component UI if necessary
if( style != null && ui.shared ) { // updateUI() invokes applyStyle() from installUI()
b.updateUI(); b.updateUI();
ui = (FlatButtonUI) b.getUI(); } else
} applyStyle( b, style );
ui.applyStyle( b, style );
b.revalidate(); b.revalidate();
b.repaint(); b.repaint();
break;
}
} }
/** /**

View File

@@ -119,22 +119,19 @@ public class FlatLabelUI
if( name == "text" || name == "font" || name == "foreground" ) { if( name == "text" || name == "font" || name == "foreground" ) {
JLabel label = (JLabel) e.getSource(); JLabel label = (JLabel) e.getSource();
updateHTMLRenderer( label, label.getText(), true ); updateHTMLRenderer( label, label.getText(), true );
} else if( name.equals( FlatClientProperties.STYLE ) ) } else if( name.equals( FlatClientProperties.STYLE ) ) {
applyStyle( (JLabel) e.getSource(), this, e.getNewValue() ); JLabel label = (JLabel) e.getSource();
else Object style = e.getNewValue();
super.propertyChange( e ); if( style != null && shared ) {
}
private static void applyStyle( JLabel c, FlatLabelUI ui, Object style ) {
// unshare component UI if necessary // unshare component UI if necessary
if( style != null && ui.shared ) { // updateUI() invokes applyStyle() from installUI()
c.updateUI(); label.updateUI();
ui = (FlatLabelUI) c.getUI(); } else
} applyStyle( label, style );
label.revalidate();
ui.applyStyle( c, style ); label.repaint();
c.revalidate(); } else
c.repaint(); super.propertyChange( e );
} }
/** /**

View File

@@ -138,21 +138,17 @@ public class FlatRadioButtonUI
protected void propertyChange( AbstractButton b, PropertyChangeEvent e ) { protected void propertyChange( AbstractButton b, PropertyChangeEvent e ) {
switch( e.getPropertyName() ) { switch( e.getPropertyName() ) {
case FlatClientProperties.STYLE: case FlatClientProperties.STYLE:
applyStyle( b, this, e.getNewValue() ); Object style = e.getNewValue();
break; if( style != null && shared ) {
}
}
private static void applyStyle( AbstractButton b, FlatRadioButtonUI ui, Object style ) {
// unshare component UI if necessary // unshare component UI if necessary
if( style != null && ui.shared ) { // updateUI() invokes applyStyle() from installUI()
b.updateUI(); b.updateUI();
ui = (FlatRadioButtonUI) b.getUI(); } else
} applyStyle( b, style );
ui.applyStyle( b, style );
b.revalidate(); b.revalidate();
b.repaint(); b.repaint();
break;
}
} }
/** /**

View File

@@ -125,12 +125,11 @@ public class FlatSeparatorUI
} }
private static void applyStyle( JSeparator s, FlatSeparatorUI ui, Object style ) { private static void applyStyle( JSeparator s, FlatSeparatorUI ui, Object style ) {
// unshare component UI if necessary
if( style != null && ui.shared ) { if( style != null && ui.shared ) {
// unshare component UI if necessary
// updateUI() invokes applyStyle() from installUI()
s.updateUI(); s.updateUI();
ui = (FlatSeparatorUI) s.getUI(); } else
}
ui.applyStyle( s, style ); ui.applyStyle( s, style );
s.revalidate(); s.revalidate();
s.repaint(); s.repaint();

View File

@@ -121,12 +121,11 @@ public class FlatToolBarSeparatorUI
} }
private static void applyStyle( JSeparator s, FlatToolBarSeparatorUI ui, Object style ) { private static void applyStyle( JSeparator s, FlatToolBarSeparatorUI ui, Object style ) {
// unshare component UI if necessary
if( style != null && ui.shared ) { if( style != null && ui.shared ) {
// unshare component UI if necessary
// updateUI() invokes applyStyle() from installUI()
s.updateUI(); s.updateUI();
ui = (FlatToolBarSeparatorUI) s.getUI(); } else
}
ui.applyStyle( style ); ui.applyStyle( style );
s.revalidate(); s.revalidate();
s.repaint(); s.repaint();