diff --git a/pom.xml b/pom.xml index f43bc45..ed6aab0 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,7 @@ 4.9.3 2.0 2.0 + 2.0 5.7.16 1.2.78 6.1.0 @@ -104,6 +105,12 @@ ${flatlaf-extras.version} + + com.formdev + flatlaf-intellij-themes + ${flatlaf-intellij-themes.version} + + cn.hutool hutool-all @@ -160,7 +167,7 @@ installForAllUsers - true + true false false @@ -170,30 +177,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/luoboduner/moo/info/App.java b/src/main/java/com/luoboduner/moo/info/App.java index a0ad380..0dfb849 100644 --- a/src/main/java/com/luoboduner/moo/info/App.java +++ b/src/main/java/com/luoboduner/moo/info/App.java @@ -1,6 +1,8 @@ package com.luoboduner.moo.info; import com.formdev.flatlaf.extras.FlatDesktop; +import com.formdev.flatlaf.extras.FlatInspector; +import com.formdev.flatlaf.extras.FlatUIDefaultsInspector; import com.formdev.flatlaf.util.SystemInfo; import com.luoboduner.moo.info.ui.Init; import com.luoboduner.moo.info.ui.dialog.AboutDialog; @@ -69,6 +71,11 @@ public class App { } Init.initTheme(); + + // install inspectors + FlatInspector.install( "ctrl shift alt X" ); + FlatUIDefaultsInspector.install( "ctrl shift alt Y" ); + mainFrame = new MainFrame(); mainFrame.init(); JPanel loadingPanel = new LoadingForm().getLoadingPanel(); diff --git a/src/main/java/com/luoboduner/moo/info/ui/Init.java b/src/main/java/com/luoboduner/moo/info/ui/Init.java index cca00fa..bb665e8 100644 --- a/src/main/java/com/luoboduner/moo/info/ui/Init.java +++ b/src/main/java/com/luoboduner/moo/info/ui/Init.java @@ -3,9 +3,11 @@ package com.luoboduner.moo.info.ui; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.log.Log; import cn.hutool.log.LogFactory; -import com.formdev.flatlaf.FlatLightLaf; -import com.formdev.flatlaf.IntelliJTheme; +import com.formdev.flatlaf.*; import com.formdev.flatlaf.extras.FlatSVGIcon; +import com.formdev.flatlaf.intellijthemes.FlatCyanLightIJTheme; +import com.formdev.flatlaf.intellijthemes.FlatDarkPurpleIJTheme; +import com.formdev.flatlaf.intellijthemes.FlatLightFlatIJTheme; import com.luoboduner.moo.info.App; import com.luoboduner.moo.info.ui.component.TopMenuBar; import com.luoboduner.moo.info.ui.form.*; @@ -13,7 +15,6 @@ import com.luoboduner.moo.info.util.SystemUtil; import com.luoboduner.moo.info.util.UIUtil; import com.luoboduner.moo.info.util.UpgradeUtil; import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.exception.ExceptionUtils; import javax.swing.*; import javax.swing.plaf.FontUIResource; @@ -86,24 +87,6 @@ public class Init { * init look and feel */ public static void initTheme() { - if (SystemUtil.isMacM1()) { - try { - UIManager.setLookAndFeel("com.formdev.flatlaf.FlatDarculaLaf"); - logger.warn("FlatDarculaLaf theme set."); - } catch (Exception e) { - try { - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch (Exception e2) { - logger.error(ExceptionUtils.getStackTrace(e2)); - } - logger.error(ExceptionUtils.getStackTrace(e)); - } - return; - } - - if (App.config.isUnifiedBackground()) { - UIManager.put("TitlePane.unifiedBackground", true); - } try { switch (App.config.getTheme()) { @@ -111,92 +94,43 @@ public class Init { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); break; case "Flat Light": - if (SystemUtil.isJBR()) { - JFrame.setDefaultLookAndFeelDecorated(true); - JDialog.setDefaultLookAndFeelDecorated(true); - } - FlatLightLaf.install(); + FlatLightLaf.setup(); break; case "Flat IntelliJ": - if (SystemUtil.isJBR()) { - JFrame.setDefaultLookAndFeelDecorated(true); - JDialog.setDefaultLookAndFeelDecorated(true); - } - UIManager.setLookAndFeel("com.formdev.flatlaf.FlatIntelliJLaf"); + FlatIntelliJLaf.setup(); break; case "Flat Dark": - if (SystemUtil.isJBR()) { - JFrame.setDefaultLookAndFeelDecorated(true); - JDialog.setDefaultLookAndFeelDecorated(true); - } - UIManager.setLookAndFeel("com.formdev.flatlaf.FlatDarkLaf"); - break; - case "Darcula": - case "Darcula(Recommended)": - case "Flat Darcula(Recommended)": - if (SystemUtil.isJBR()) { - JFrame.setDefaultLookAndFeelDecorated(true); - JDialog.setDefaultLookAndFeelDecorated(true); - } - UIManager.setLookAndFeel("com.formdev.flatlaf.FlatDarculaLaf"); - - UIManager.put("PopupMenu.background", UIManager.getColor("Panel.background")); - -/** - If you don't like/want it, you can disable it with: - UIManager.put( "TitlePane.useWindowDecorations", false ); - - It is also possible to disable only the embedded menu bar (and keep the dark title pane) with: - UIManager.put( "TitlePane.menuBarEmbedded", false ); - - It is also possible to disable this on command line with following VM options: - -Dflatlaf.useWindowDecorations=false - -Dflatlaf.menuBarEmbedded=false - - If you have following code in your app, you can remove it (no longer necessary): - // enable window decorations - JFrame.setDefaultLookAndFeelDecorated( true ); - JDialog.setDefaultLookAndFeelDecorated( true ); - **/ + FlatDarkLaf.setup(); break; case "Dark purple": - if (SystemUtil.isJBR()) { - JFrame.setDefaultLookAndFeelDecorated(true); - JDialog.setDefaultLookAndFeelDecorated(true); - } - IntelliJTheme.setup(App.class.getResourceAsStream( - "/theme/DarkPurple.theme.json")); + FlatDarkPurpleIJTheme.setup(); break; case "IntelliJ Cyan": - if (SystemUtil.isJBR()) { - JFrame.setDefaultLookAndFeelDecorated(true); - JDialog.setDefaultLookAndFeelDecorated(true); - } - IntelliJTheme.setup(App.class.getResourceAsStream( - "/theme/Cyan.theme.json")); + FlatCyanLightIJTheme.setup(); break; case "IntelliJ Light": - if (SystemUtil.isJBR()) { - JFrame.setDefaultLookAndFeelDecorated(true); - JDialog.setDefaultLookAndFeelDecorated(true); - } - IntelliJTheme.setup(App.class.getResourceAsStream( - "/theme/Light.theme.json")); + FlatLightFlatIJTheme.setup(); break; default: - if (SystemUtil.isJBR()) { - JFrame.setDefaultLookAndFeelDecorated(true); - JDialog.setDefaultLookAndFeelDecorated(true); - } - UIManager.setLookAndFeel("com.formdev.flatlaf.FlatDarculaLaf"); + FlatDarculaLaf.setup(); } + if (UIUtil.isDarkLaf()) { // FlatSVGIcon.ColorFilter.getInstance().setMapper(color -> color.brighter().brighter()); } else { FlatSVGIcon.ColorFilter.getInstance().setMapper(color -> color.darker().darker()); +// SwingUtilities.windowForComponent(App.mainFrame).repaint(); } -// SwingUtilities.windowForComponent(App.mainFrame).repaint(); + + if (App.config.isUnifiedBackground()) { + UIManager.put("TitlePane.unifiedBackground", true); + } + + // top menubar background + UIManager.put("PopupMenu.background", UIManager.getColor("Panel.background")); + // arrow type + UIManager.put("Component.arrowType", "chevron"); } catch (Exception e) { logger.error(e); }