From 1a4a7831f6a73e358084e51de75f627e83515daa Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 26 Feb 2020 23:34:49 +0100 Subject: [PATCH] UI defaults: support dumping 3rd party LaFs --- .../testing/uidefaults/UIDefaultsDump.java | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java index 069ff3a7..086056a7 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/uidefaults/UIDefaultsDump.java @@ -26,6 +26,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.reflect.Array; +import java.lang.reflect.Field; import java.util.Arrays; import java.util.List; import java.util.function.Predicate; @@ -33,6 +34,7 @@ import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.InputMap; import javax.swing.JComponent; +import javax.swing.JInternalFrame; import javax.swing.JToolBar; import javax.swing.KeyStroke; import javax.swing.ListCellRenderer; @@ -44,6 +46,7 @@ import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.border.CompoundBorder; import javax.swing.border.LineBorder; +import javax.swing.plaf.BorderUIResource; import javax.swing.plaf.UIResource; import javax.swing.plaf.basic.BasicLookAndFeel; import com.formdev.flatlaf.FlatDarkLaf; @@ -81,6 +84,18 @@ public class UIDefaultsDump // dump( "com.sun.java.swing.plaf.windows.WindowsLookAndFeel", dir ); // else if( SystemInfo.IS_MAC ) // dump( "com.apple.laf.AquaLookAndFeel", dir ); +// +// dump( "com.jgoodies.looks.plastic.PlasticLookAndFeel", dir ); +// dump( "com.jgoodies.looks.windows.WindowsLookAndFeel", dir ); +// dump( "com.alee.laf.WebLookAndFeel", dir ); +// try { +// EventQueue.invokeAndWait( () -> { +// dump( "org.pushingpixels.substance.api.skin.SubstanceGraphiteAquaLookAndFeel", dir ); +// } ); +// } catch( Exception ex ) { +// // TODO Auto-generated catch block +// ex.printStackTrace(); +// } } private static void dump( String lookAndFeelClassName, File dir ) { @@ -278,8 +293,29 @@ public class UIDefaultsDump dummyComponent = new JComponent() {}; JComponent c = dummyComponent; - if( border.getClass().getName().equals( "com.apple.laf.AquaToolBarUI$ToolBarBorder" ) ) - c = new JToolBar(); + + String borderClassName = border.getClass().getName(); + if( border instanceof BorderUIResource ) { + try { + Field f = BorderUIResource.class.getDeclaredField( "delegate" ); + f.setAccessible( true ); + Object delegate = f.get( border ); + borderClassName = delegate.getClass().getName(); + } catch( Exception ex ) { + ex.printStackTrace(); + } + } + + switch( borderClassName ) { + case "com.apple.laf.AquaToolBarUI$ToolBarBorder": + case "org.pushingpixels.substance.internal.utils.border.SubstanceToolBarBorder": + c = new JToolBar(); + break; + + case "com.jgoodies.looks.plastic.PlasticBorders$InternalFrameBorder": + c = new JInternalFrame(); + break; + } Insets insets = border.getBorderInsets( c ); out.printf( "%d,%d,%d,%d %b %s",