From 03198ccc23d16e227f56756f5e9f7812b5b56544 Mon Sep 17 00:00:00 2001 From: RememBerBer Date: Tue, 22 Feb 2022 22:12:02 +0800 Subject: [PATCH] merge --- pom.xml | 46 ++++--- .../java/com/luoboduner/moo/info/App.java | 41 ++++++- .../java/com/luoboduner/moo/info/ui/Init.java | 116 +++++------------- .../moo/info/ui/dialog/UpdateDialog.form | 6 +- .../moo/info/ui/dialog/UpdateDialog.java | 6 +- .../moo/info/ui/dialog/UpdateInfoDialog.form | 4 +- .../moo/info/ui/dialog/UpdateInfoDialog.java | 4 +- .../com/luoboduner/moo/info/util/UIUtil.java | 1 + 8 files changed, 107 insertions(+), 117 deletions(-) diff --git a/pom.xml b/pom.xml index d166eb7..d6a0adf 100644 --- a/pom.xml +++ b/pom.xml @@ -18,19 +18,19 @@ 1.8 1.8 - 1.8 - 1.2.3 + 1.2.10 7.0.3 - 1.4 - 1.18.20 - 5.8.1 - 3.11 - 29.0-jre - 4.9.0 - 1.6.3 - 1.6.3 - 5.6.3 - 1.2.74 + 1.18.22 + 5.8.2 + 3.12.0 + 31.0.1-jre + 4.9.3 + 2.0.1 + 2.0.1 + 2.0.1 + 5.7.21 + 1.2.79 + 1.5.3 @@ -54,12 +54,6 @@ ${forms_rt.version} - - com.apple - AppleJavaExtensions - ${AppleJavaExtensions.version} - - org.projectlombok lombok @@ -83,6 +77,12 @@ com.squareup.okhttp3 okhttp ${okhttp.version} + + + kotlin-stdlib + org.jetbrains.kotlin + + @@ -97,6 +97,12 @@ ${flatlaf-extras.version} + + com.formdev + flatlaf-intellij-themes + ${flatlaf-intellij-themes.version} + + cn.hutool hutool-all @@ -115,7 +121,7 @@ io.github.fvarrui javapackager - 1.6.2 + 1.6.3 true com.luoboduner.moo.info.App @@ -141,7 +147,7 @@ installForAllUsers - + true false false diff --git a/src/main/java/com/luoboduner/moo/info/App.java b/src/main/java/com/luoboduner/moo/info/App.java index 38fef13..5ee0b13 100644 --- a/src/main/java/com/luoboduner/moo/info/App.java +++ b/src/main/java/com/luoboduner/moo/info/App.java @@ -1,12 +1,20 @@ 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; +import com.luoboduner.moo.info.ui.dialog.SettingDialog; import com.luoboduner.moo.info.ui.form.LoadingForm; import com.luoboduner.moo.info.ui.form.MainWindow; import com.luoboduner.moo.info.ui.frame.MainFrame; import com.luoboduner.moo.info.util.ConfigUtil; +import com.luoboduner.moo.info.util.UIUtil; import com.luoboduner.moo.info.util.UpgradeUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.exception.ExceptionUtils; import javax.swing.*; import java.awt.*; @@ -17,6 +25,7 @@ import java.awt.*; * @author RememBerBer * @since 2021/11/07. */ +@Slf4j public class App { public static ConfigUtil config = ConfigUtil.getInstance(); @@ -32,10 +41,40 @@ public class App { System.setProperty("apple.laf.useScreenMenuBar", "true"); System.setProperty("apple.awt.application.name", "MooInfo"); System.setProperty("com.apple.mrj.application.apple.menu.about.name", "MooInfo"); - System.setProperty("apple.awt.application.appearance", "system"); + if (UIUtil.isDarkLaf()) { + System.setProperty("apple.awt.application.appearance", "system"); + } + + FlatDesktop.setAboutHandler(() -> { + try { + AboutDialog dialog = new AboutDialog(); + + dialog.pack(); + dialog.setVisible(true); + } catch (Exception e2) { + log.error(ExceptionUtils.getStackTrace(e2)); + } + }); + FlatDesktop.setPreferencesHandler(() -> { + try { + SettingDialog dialog = new SettingDialog(); + + dialog.pack(); + dialog.setVisible(true); + } catch (Exception e2) { + log.error(ExceptionUtils.getStackTrace(e2)); + } + }); + FlatDesktop.setQuitHandler(FlatDesktop.QuitResponse::performQuit); + } 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 e848236..56022bc 100644 --- a/src/main/java/com/luoboduner/moo/info/ui/Init.java +++ b/src/main/java/com/luoboduner/moo/info/ui/Init.java @@ -2,15 +2,20 @@ package com.luoboduner.moo.info.ui; import cn.hutool.log.Log; import cn.hutool.log.LogFactory; +import com.formdev.flatlaf.FlatDarculaLaf; +import com.formdev.flatlaf.FlatDarkLaf; +import com.formdev.flatlaf.FlatIntelliJLaf; import com.formdev.flatlaf.FlatLightLaf; -import com.formdev.flatlaf.IntelliJTheme; +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.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; @@ -83,24 +88,6 @@ public class Init { * init look and feel */ public static void initTheme() { - if (SystemUtil.isMacM1() || SystemUtil.isLinuxOs()) { - 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()) { @@ -108,86 +95,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(); + } + + 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); } diff --git a/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateDialog.form b/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateDialog.form index 084f7c4..6180000 100644 --- a/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateDialog.form +++ b/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateDialog.form @@ -34,7 +34,7 @@ - + @@ -42,7 +42,7 @@ - + @@ -50,7 +50,7 @@ - + diff --git a/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateDialog.java b/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateDialog.java index 46e6b11..9a7dfb6 100644 --- a/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateDialog.java +++ b/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateDialog.java @@ -158,13 +158,13 @@ public class UpdateDialog extends JDialog { panel2.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); panel1.add(panel2, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); buttonOK = new JButton(); - buttonOK.setText("立即安装"); + buttonOK.setText("Install Now"); panel2.add(buttonOK, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); buttonCancel = new JButton(); - buttonCancel.setText("取消"); + buttonCancel.setText("Cancel"); panel2.add(buttonCancel, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); buttonDownloadFromWeb = new JButton(); - buttonDownloadFromWeb.setText("打开下载页面"); + buttonDownloadFromWeb.setText("Open Download Page"); panel2.add(buttonDownloadFromWeb, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final JPanel panel3 = new JPanel(); panel3.setLayout(new GridLayoutManager(4, 1, new Insets(0, 0, 0, 0), -1, -1)); diff --git a/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateInfoDialog.form b/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateInfoDialog.form index 479456c..2f8f921 100644 --- a/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateInfoDialog.form +++ b/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateInfoDialog.form @@ -34,7 +34,7 @@ - + @@ -42,7 +42,7 @@ - + diff --git a/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateInfoDialog.java b/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateInfoDialog.java index 948743e..1915900 100644 --- a/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateInfoDialog.java +++ b/src/main/java/com/luoboduner/moo/info/ui/dialog/UpdateInfoDialog.java @@ -128,10 +128,10 @@ public class UpdateInfoDialog extends JDialog { panel2.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); panel1.add(panel2, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); buttonOK = new JButton(); - buttonOK.setText("立即下载"); + buttonOK.setText("Download Now"); panel2.add(buttonOK, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); buttonCancel = new JButton(); - buttonCancel.setText("取消"); + buttonCancel.setText("Cancel"); panel2.add(buttonCancel, new GridConstraints(0, 1, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); final Spacer spacer2 = new Spacer(); panel1.add(spacer2, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); diff --git a/src/main/java/com/luoboduner/moo/info/util/UIUtil.java b/src/main/java/com/luoboduner/moo/info/util/UIUtil.java index 6f09989..cf8c3ca 100644 --- a/src/main/java/com/luoboduner/moo/info/util/UIUtil.java +++ b/src/main/java/com/luoboduner/moo/info/util/UIUtil.java @@ -59,6 +59,7 @@ public class UIUtil { || "Darcula(Recommended)".equals(App.config.getTheme()) || "Flat Dark".equals(App.config.getTheme()) || "Flat Darcula".equals(App.config.getTheme()) + || "Dark purple".equals(App.config.getTheme()) || "Flat Darcula(Recommended)".equals(App.config.getTheme()); } }