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());
}
}