diff --git a/pom.xml b/pom.xml
index 87b455c..af7e7bc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,6 +31,7 @@
1.6.2
5.6.3
1.2.74
+ 5.8.3
@@ -108,6 +109,12 @@
fastjson
${fastjson.version}
+
+
+ com.github.oshi
+ oshi-core
+ ${oshi-core.version}
+
diff --git a/src/main/java/com/luoboduner/moo/info/App.java b/src/main/java/com/luoboduner/moo/info/App.java
index 7818b64..f2e1c1c 100644
--- a/src/main/java/com/luoboduner/moo/info/App.java
+++ b/src/main/java/com/luoboduner/moo/info/App.java
@@ -23,6 +23,7 @@ public class App {
public static MainFrame mainFrame;
+ public static oshi.SystemInfo si = new oshi.SystemInfo();
public static void main(String[] args) {
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..1b1ebaf 100644
--- a/src/main/java/com/luoboduner/moo/info/ui/Init.java
+++ b/src/main/java/com/luoboduner/moo/info/ui/Init.java
@@ -1,11 +1,13 @@
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.luoboduner.moo.info.App;
import com.luoboduner.moo.info.ui.component.TopMenuBar;
+import com.luoboduner.moo.info.ui.form.OverviewForm;
import com.luoboduner.moo.info.util.SystemUtil;
import com.luoboduner.moo.info.util.UIUtil;
import com.luoboduner.moo.info.util.UpgradeUtil;
@@ -198,6 +200,8 @@ public class Init {
*/
public static void initAllTab() {
+ ThreadUtil.execute(OverviewForm::init);
+
// Check the new version
if (App.config.isAutoCheckUpdate()) {
ScheduledThreadPoolExecutor threadPoolExecutor = new ScheduledThreadPoolExecutor(1);
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..458dc43 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
@@ -179,7 +179,7 @@
-
+
@@ -197,17 +197,25 @@
-
+
+
+
+
+
+
+
+
+
-
+
diff --git a/src/main/java/com/luoboduner/moo/info/ui/dialog/AboutDialog.java b/src/main/java/com/luoboduner/moo/info/ui/dialog/AboutDialog.java
index eac4080..1fee2f9 100644
--- a/src/main/java/com/luoboduner/moo/info/ui/dialog/AboutDialog.java
+++ b/src/main/java/com/luoboduner/moo/info/ui/dialog/AboutDialog.java
@@ -36,6 +36,7 @@ public class AboutDialog extends JDialog {
private JLabel flatLafLabel;
private JPanel mooToolPanel;
private JLabel httpsGithubComRememberberLabel;
+ private JLabel oshiLabel;
public AboutDialog() {
@@ -199,6 +200,29 @@ public class AboutDialog extends JDialog {
e.getComponent().setCursor(new Cursor(Cursor.HAND_CURSOR));
}
});
+ oshiLabel.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ super.mouseClicked(e);
+ Desktop desktop = Desktop.getDesktop();
+ try {
+ desktop.browse(new URI("https://github.com/oshi/oshi"));
+ } catch (IOException | URISyntaxException e1) {
+ e1.printStackTrace();
+ }
+ }
+
+ @Override
+ public void mousePressed(MouseEvent e) {
+ super.mousePressed(e);
+ }
+
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ super.mouseEntered(e);
+ e.getComponent().setCursor(new Cursor(Cursor.HAND_CURSOR));
+ }
+ });
hutoolLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
@@ -397,18 +421,21 @@ public class AboutDialog extends JDialog {
issueLabel.setText("https://github.com/rememberber/MooInfo/issues");
panel5.add(issueLabel, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
final JPanel panel6 = new JPanel();
- panel6.setLayout(new GridLayoutManager(3, 1, new Insets(5, 3, 20, 0), -1, -1));
+ panel6.setLayout(new GridLayoutManager(4, 1, new Insets(5, 3, 20, 0), -1, -1));
panel1.add(panel6, new GridConstraints(5, 0, 1, 2, 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));
panel6.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), "THANKS TO", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, this.$$$getFont$$$(null, Font.BOLD, -1, panel6.getFont()), null));
flatLafLabel = new JLabel();
flatLafLabel.setText("FlatLaf");
panel6.add(flatLafLabel, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ oshiLabel = new JLabel();
+ oshiLabel.setText("oshi");
+ panel6.add(oshiLabel, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
hutoolLabel = new JLabel();
hutoolLabel.setText("Hutool");
- panel6.add(hutoolLabel, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ panel6.add(hutoolLabel, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
vsCodeIconsLabel = new JLabel();
vsCodeIconsLabel.setText("vscode-icons");
- panel6.add(vsCodeIconsLabel, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ panel6.add(vsCodeIconsLabel, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
final JPanel panel7 = new JPanel();
panel7.setLayout(new GridLayoutManager(1, 1, new Insets(5, 3, 20, 0), -1, -1));
panel1.add(panel7, new GridConstraints(6, 0, 1, 2, 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));
diff --git a/src/main/java/com/luoboduner/moo/info/ui/form/MainWindow.form b/src/main/java/com/luoboduner/moo/info/ui/form/MainWindow.form
index 3000706..336a723 100644
--- a/src/main/java/com/luoboduner/moo/info/ui/form/MainWindow.form
+++ b/src/main/java/com/luoboduner/moo/info/ui/form/MainWindow.form
@@ -19,7 +19,7 @@
-
+
@@ -28,6 +28,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/luoboduner/moo/info/ui/form/MainWindow.java b/src/main/java/com/luoboduner/moo/info/ui/form/MainWindow.java
index 742e5be..f6e915a 100644
--- a/src/main/java/com/luoboduner/moo/info/ui/form/MainWindow.java
+++ b/src/main/java/com/luoboduner/moo/info/ui/form/MainWindow.java
@@ -17,7 +17,7 @@ import java.awt.*;
public class MainWindow {
private JTabbedPane tabbedPane;
private JPanel mainPanel;
- private JPanel overViewPanel;
+ private JPanel overviewPanel;
private static MainWindow mainWindow;
@@ -35,6 +35,7 @@ public class MainWindow {
public void init() {
mainWindow = getInstance();
+ mainWindow.getOverviewPanel().add(OverviewForm.getInstance().getMainPanel(), gridConstraints);
mainWindow.getMainPanel().updateUI();
}
@@ -58,9 +59,33 @@ public class MainWindow {
tabbedPane = new JTabbedPane();
tabbedPane.setTabLayoutPolicy(1);
mainPanel.add(tabbedPane, new GridConstraints(0, 0, 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, new Dimension(200, 200), null, 0, false));
- overViewPanel = new JPanel();
- overViewPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
- tabbedPane.addTab("Overview", overViewPanel);
+ overviewPanel = new JPanel();
+ overviewPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane.addTab("Overview", overviewPanel);
+ final JPanel panel1 = new JPanel();
+ panel1.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane.addTab("Detail", panel1);
+ final JPanel panel2 = new JPanel();
+ panel2.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane.addTab("Memory", panel2);
+ final JPanel panel3 = new JPanel();
+ panel3.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane.addTab("CPU", panel3);
+ final JPanel panel4 = new JPanel();
+ panel4.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane.addTab("Disk", panel4);
+ final JPanel panel5 = new JPanel();
+ panel5.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane.addTab("Network", panel5);
+ final JPanel panel6 = new JPanel();
+ panel6.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane.addTab("Variables", panel6);
+ final JPanel panel7 = new JPanel();
+ panel7.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane.addTab("Processes", panel7);
+ final JPanel panel8 = new JPanel();
+ panel8.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ tabbedPane.addTab("USB Devices", panel8);
}
/**
diff --git a/src/main/java/com/luoboduner/moo/info/ui/form/OverviewForm.form b/src/main/java/com/luoboduner/moo/info/ui/form/OverviewForm.form
new file mode 100644
index 0000000..a2ea854
--- /dev/null
+++ b/src/main/java/com/luoboduner/moo/info/ui/form/OverviewForm.form
@@ -0,0 +1,96 @@
+
+
diff --git a/src/main/java/com/luoboduner/moo/info/ui/form/OverviewForm.java b/src/main/java/com/luoboduner/moo/info/ui/form/OverviewForm.java
new file mode 100644
index 0000000..4963c08
--- /dev/null
+++ b/src/main/java/com/luoboduner/moo/info/ui/form/OverviewForm.java
@@ -0,0 +1,124 @@
+package com.luoboduner.moo.info.ui.form;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.log.Log;
+import cn.hutool.log.LogFactory;
+import com.intellij.uiDesigner.core.GridConstraints;
+import com.intellij.uiDesigner.core.GridLayoutManager;
+import com.intellij.uiDesigner.core.Spacer;
+import com.luoboduner.moo.info.App;
+import lombok.Getter;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import oshi.software.os.OperatingSystem;
+
+import javax.swing.*;
+import javax.swing.border.TitledBorder;
+import java.awt.*;
+
+/**
+ * OverviewForm
+ *
+ * @author RememBerBer
+ * @since 2021/11/12.
+ */
+@Getter
+public class OverviewForm {
+ private static final Log logger = LogFactory.get();
+
+ private static OverviewForm overviewForm;
+ private JPanel mainPanel;
+ private JTextPane osTextPane;
+ private JTextPane procTextPane;
+
+ public static OverviewForm getInstance() {
+ if (overviewForm == null) {
+ overviewForm = new OverviewForm();
+ }
+ return overviewForm;
+ }
+
+ public static void init() {
+ overviewForm = getInstance();
+
+ initUi();
+ initInfo();
+ }
+
+ private static void initUi() {
+ }
+
+ private static void initInfo() {
+ JTextPane osTextPane = overviewForm.getOsTextPane();
+ osTextPane.setContentType("text/plain; charset=utf-8");
+ osTextPane.setEditable(false);
+
+ StringBuilder sb = new StringBuilder();
+ OperatingSystem os = App.si.getOperatingSystem();
+ sb.append(os);
+ sb.append("\n\n").append("Booted: ").append(DateFormatUtils.format(os.getSystemBootTime() * 1000, DatePattern.NORM_DATETIME_PATTERN)).append('\n');
+ osTextPane.setText(sb.toString());
+
+ JTextPane procTextPane = overviewForm.getProcTextPane();
+ procTextPane.setContentType("text/plain; charset=utf-8");
+ procTextPane.setEditable(false);
+
+ sb = new StringBuilder();
+ sb.append(App.si.getHardware().getProcessor());
+ procTextPane.setText(sb.toString());
+ }
+
+ {
+// GUI initializer generated by IntelliJ IDEA GUI Designer
+// >>> IMPORTANT!! <<<
+// DO NOT EDIT OR ADD ANY CODE HERE!
+ $$$setupUI$$$();
+ }
+
+ /**
+ * Method generated by IntelliJ IDEA GUI Designer
+ * >>> IMPORTANT!! <<<
+ * DO NOT edit this method OR call it in your code!
+ *
+ * @noinspection ALL
+ */
+ private void $$$setupUI$$$() {
+ mainPanel = new JPanel();
+ mainPanel.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1));
+ final JScrollPane scrollPane1 = new JScrollPane();
+ mainPanel.add(scrollPane1, new GridConstraints(0, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
+ scrollPane1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEmptyBorder(), null, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
+ final JPanel panel1 = new JPanel();
+ panel1.setLayout(new GridLayoutManager(1, 2, new Insets(10, 10, 10, 10), -1, -1));
+ scrollPane1.setViewportView(panel1);
+ final JPanel panel2 = new JPanel();
+ panel2.setLayout(new GridLayoutManager(5, 2, new Insets(0, 0, 0, 0), -1, -1));
+ panel1.add(panel2, new GridConstraints(0, 0, 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));
+ final JLabel label1 = new JLabel();
+ label1.setText("Operating System");
+ panel2.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ final Spacer spacer1 = new Spacer();
+ panel2.add(spacer1, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
+ osTextPane = new JTextPane();
+ panel2.add(osTextPane, new GridConstraints(0, 1, 2, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, new Dimension(150, 50), null, 0, false));
+ final Spacer spacer2 = new Spacer();
+ panel2.add(spacer2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
+ final JLabel label2 = new JLabel();
+ label2.setText("Processor");
+ panel2.add(label2, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false));
+ procTextPane = new JTextPane();
+ panel2.add(procTextPane, new GridConstraints(2, 1, 2, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, new Dimension(150, 50), null, 0, false));
+ final Spacer spacer3 = new Spacer();
+ panel2.add(spacer3, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false));
+ final JPanel panel3 = new JPanel();
+ panel3.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1));
+ panel1.add(panel3, 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));
+ }
+
+ /**
+ * @noinspection ALL
+ */
+ public JComponent $$$getRootComponent$$$() {
+ return mainPanel;
+ }
+
+}
diff --git a/src/main/java/com/luoboduner/moo/info/ui/frame/MainFrame.java b/src/main/java/com/luoboduner/moo/info/ui/frame/MainFrame.java
index dd7e6e4..261a5f6 100644
--- a/src/main/java/com/luoboduner/moo/info/ui/frame/MainFrame.java
+++ b/src/main/java/com/luoboduner/moo/info/ui/frame/MainFrame.java
@@ -24,7 +24,7 @@ public class MainFrame extends JFrame {
TopMenuBar topMenuBar = TopMenuBar.getInstance();
topMenuBar.init();
setJMenuBar(topMenuBar);
- ComponentUtil.setPreferSizeAndLocateToCenter(this, 0.8, 0.88);
+ ComponentUtil.setPreferSizeAndLocateToCenter(this, 0.6, 0.66);
}
/**