From e9aea68472cd34efa587b4a4bbf433e83a037d41 Mon Sep 17 00:00:00 2001 From: RememBerBer Date: Fri, 12 Nov 2021 01:37:04 +0800 Subject: [PATCH] oshi first --- pom.xml | 7 + .../java/com/luoboduner/moo/info/App.java | 1 + .../java/com/luoboduner/moo/info/ui/Init.java | 4 + .../moo/info/ui/dialog/AboutDialog.form | 14 +- .../moo/info/ui/dialog/AboutDialog.java | 33 ++++- .../moo/info/ui/form/MainWindow.form | 74 ++++++++++- .../moo/info/ui/form/MainWindow.java | 33 ++++- .../moo/info/ui/form/OverviewForm.form | 96 ++++++++++++++ .../moo/info/ui/form/OverviewForm.java | 124 ++++++++++++++++++ .../moo/info/ui/frame/MainFrame.java | 2 +- 10 files changed, 376 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/luoboduner/moo/info/ui/form/OverviewForm.form create mode 100644 src/main/java/com/luoboduner/moo/info/ui/form/OverviewForm.java 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); } /**