diff --git a/src/main/resources/icons/logo-512.png b/assets/linux/MooInfo.png
similarity index 100%
rename from src/main/resources/icons/logo-512.png
rename to assets/linux/MooInfo.png
diff --git a/assets/logo/MooInfo.svg b/assets/logo/MooInfo.svg
index 64500f0..17dde3f 100644
--- a/assets/logo/MooInfo.svg
+++ b/assets/logo/MooInfo.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/assets/mac/MooInfo.icns b/assets/mac/MooInfo.icns
new file mode 100644
index 0000000..69508cb
Binary files /dev/null and b/assets/mac/MooInfo.icns differ
diff --git a/assets/material/gui_build.png b/assets/material/gui_build.png
new file mode 100644
index 0000000..a33d0b1
Binary files /dev/null and b/assets/material/gui_build.png differ
diff --git a/assets/windows/MooInfo.ico b/assets/windows/MooInfo.ico
new file mode 100644
index 0000000..8d1e487
Binary files /dev/null and b/assets/windows/MooInfo.ico differ
diff --git a/pom.xml b/pom.xml
index 87b455c..d27d69e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,19 +18,18 @@
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.2
- 1.6.2
- 5.6.3
- 1.2.74
+ 1.18.22
+ 5.8.2
+ 3.12.0
+ 31.0.1-jre
+ 4.9.3
+ 2.2
+ 2.2
+ 2.2
+ 5.7.21
+ 1.2.79
@@ -54,12 +53,6 @@
${forms_rt.version}
-
- com.apple
- AppleJavaExtensions
- ${AppleJavaExtensions.version}
-
-
org.projectlombok
lombok
@@ -83,6 +76,12 @@
com.squareup.okhttp3
okhttp
${okhttp.version}
+
+
+ kotlin-stdlib
+ org.jetbrains.kotlin
+
+
@@ -97,6 +96,12 @@
${flatlaf-extras.version}
+
+ com.formdev
+ flatlaf-intellij-themes
+ ${flatlaf-intellij-themes.version}
+
+
cn.hutool
hutool-all
@@ -115,7 +120,7 @@
io.github.fvarrui
javapackager
- 1.6.2
+ 1.6.5
true
com.luoboduner.moo.info.App
@@ -141,7 +146,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 7818b64..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 @@
* @author RememBerBer
* @since 2021/11/07.
*/
+@Slf4j
public class App {
public static ConfigUtil config = ConfigUtil.getInstance();
@@ -32,9 +41,40 @@ public static void main(String[] args) {
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("apple.awt.application.name", "MooInfo");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "MooInfo");
+ 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..089fcce 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,18 @@
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.*;
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 +86,6 @@ public static void initOthers() {
* 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 +93,49 @@ public static void initTheme() {
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;
+ case "Xcode-Dark":
+ FlatXcodeDarkIJTheme.setup();
+ break;
+ case "Vuesion":
+ FlatVuesionIJTheme.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/UiConsts.java b/src/main/java/com/luoboduner/moo/info/ui/UiConsts.java
index e4e33d0..c966d3c 100644
--- a/src/main/java/com/luoboduner/moo/info/ui/UiConsts.java
+++ b/src/main/java/com/luoboduner/moo/info/ui/UiConsts.java
@@ -1,7 +1,5 @@
package com.luoboduner.moo.info.ui;
-import java.awt.*;
-
/**
* constants about UI
*
@@ -15,64 +13,9 @@ public class UiConsts {
public static final int TABLE_ROW_HEIGHT = 36;
- /**
- * Logo-1024*1024
- */
- public static final Image IMAGE_LOGO_1024 = Toolkit.getDefaultToolkit()
- .getImage(UiConsts.class.getResource("/icons/logo-1024.png"));
-
- /**
- * Logo-512*512
- */
- public static final Image IMAGE_LOGO_512 = Toolkit.getDefaultToolkit()
- .getImage(UiConsts.class.getResource("/icons/logo-512.png"));
-
- /**
- * Logo-256*256
- */
- public static final Image IMAGE_LOGO_256 = Toolkit.getDefaultToolkit()
- .getImage(UiConsts.class.getResource("/icons/logo-256.png"));
-
- /**
- * Logo-128*128
- */
- public static final Image IMAGE_LOGO_128 = Toolkit.getDefaultToolkit()
- .getImage(UiConsts.class.getResource("/icons/logo-128.png"));
-
- /**
- * Logo-64*64
- */
- public static final Image IMAGE_LOGO_64 = Toolkit.getDefaultToolkit()
- .getImage(UiConsts.class.getResource("/icons/logo-64.png"));
-
- /**
- * Logo-48*48
- */
- public static final Image IMAGE_LOGO_48 = Toolkit.getDefaultToolkit()
- .getImage(UiConsts.class.getResource("/icons/logo-48.png"));
-
- /**
- * Logo-32*32
- */
- public static final Image IMAGE_LOGO_32 = Toolkit.getDefaultToolkit()
- .getImage(UiConsts.class.getResource("/icons/logo-32.png"));
-
- /**
- * Logo-24*24
- */
- public static final Image IMAGE_LOGO_24 = Toolkit.getDefaultToolkit()
- .getImage(UiConsts.class.getResource("/icons/logo-24.png"));
-
- /**
- * Logo-16*16
- */
- public static final Image IMAGE_LOGO_16 = Toolkit.getDefaultToolkit()
- .getImage(UiConsts.class.getResource("/icons/logo-16.png"));
-
/**
* update checking url
*/
public static final String CHECK_VERSION_URL = "https://gitee.com/zhoubochina/MooInfo/raw/master/src/main/resources/version_summary.json";
-
}
diff --git a/src/main/java/com/luoboduner/moo/info/ui/component/TopMenuBar.java b/src/main/java/com/luoboduner/moo/info/ui/component/TopMenuBar.java
index eba7a4f..15a7dab 100644
--- a/src/main/java/com/luoboduner/moo/info/ui/component/TopMenuBar.java
+++ b/src/main/java/com/luoboduner/moo/info/ui/component/TopMenuBar.java
@@ -1,5 +1,6 @@
package com.luoboduner.moo.info.ui.component;
+import cn.hutool.core.thread.ThreadUtil;
import com.formdev.flatlaf.FlatLaf;
import com.formdev.flatlaf.extras.FlatAnimatedLafChange;
import com.luoboduner.moo.info.App;
@@ -9,6 +10,7 @@
import com.luoboduner.moo.info.ui.dialog.SystemEnvResultDialog;
import com.luoboduner.moo.info.ui.form.MainWindow;
import com.luoboduner.moo.info.util.SystemUtil;
+import com.luoboduner.moo.info.util.UpgradeUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
@@ -50,7 +52,9 @@ public class TopMenuBar extends JMenuBar {
"Flat Darcula(Recommended)",
"Dark purple",
"IntelliJ Cyan",
- "IntelliJ Light"};
+ "IntelliJ Light",
+ "Xcode-Dark",
+ "Vuesion"};
private static String[] fontNames = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
@@ -98,6 +102,19 @@ public void init() {
settingMenuItem.setText("Settings");
settingMenuItem.addActionListener(e -> settingActionPerformed());
appMenu.add(settingMenuItem);
+
+ // Show logs
+ JMenuItem logMenuItem = new JMenuItem();
+ logMenuItem.setText("Show logs");
+ logMenuItem.addActionListener(e -> logActionPerformed());
+ appMenu.add(logMenuItem);
+
+ // System environment variables
+ JMenuItem sysEnvMenuItem = new JMenuItem();
+ sysEnvMenuItem.setText("System environment variables");
+ sysEnvMenuItem.addActionListener(e -> sysEnvActionPerformed());
+ appMenu.add(sysEnvMenuItem);
+
// Exit
JMenuItem exitMenuItem = new JMenuItem();
exitMenuItem.setText("Exit");
@@ -154,27 +171,17 @@ public void init() {
appearanceMenu.add(fontSizeMenu);
topMenuBar.add(appearanceMenu);
- // ---------Debug
- JMenu debugMenu = new JMenu();
- debugMenu.setText("Debug");
- // Show logs
- JMenuItem logMenuItem = new JMenuItem();
- logMenuItem.setText("Show logs");
- logMenuItem.addActionListener(e -> logActionPerformed());
-
- debugMenu.add(logMenuItem);
- // System environment variables
- JMenuItem sysEnvMenuItem = new JMenuItem();
- sysEnvMenuItem.setText("System environment variables");
- sysEnvMenuItem.addActionListener(e -> sysEnvActionPerformed());
-
- debugMenu.add(sysEnvMenuItem);
- topMenuBar.add(debugMenu);
// ---------About
JMenu aboutMenu = new JMenu();
aboutMenu.setText("About");
+ // Check for Updates
+ JMenuItem checkForUpdatesItem = new JMenuItem();
+ checkForUpdatesItem.setText("Check for Updates");
+ checkForUpdatesItem.addActionListener(e -> checkForUpdatesActionPerformed());
+ aboutMenu.add(checkForUpdatesItem);
+
// About
JMenuItem aboutMenuItem = new JMenuItem();
aboutMenuItem.setText("About");
@@ -184,6 +191,10 @@ public void init() {
topMenuBar.add(aboutMenu);
}
+ private void checkForUpdatesActionPerformed() {
+ ThreadUtil.execute(() -> UpgradeUtil.checkUpdate(false));
+ }
+
public void initFontSizeMenu() {
if (initialFontSizeItemCount < 0)
diff --git a/src/main/java/com/luoboduner/moo/info/ui/dialog/AboutDialog.form b/src/main/java/com/luoboduner/moo/info/ui/dialog/AboutDialog.form
index 4281be4..5643344 100644
--- a/src/main/java/com/luoboduner/moo/info/ui/dialog/AboutDialog.form
+++ b/src/main/java/com/luoboduner/moo/info/ui/dialog/AboutDialog.form
@@ -1,7 +1,7 @@