From afc41e9f8ff496fb5e01c7e5bc94469a978e6d01 Mon Sep 17 00:00:00 2001 From: RememBerBer Date: Tue, 16 Nov 2021 00:55:24 +0800 Subject: [PATCH] Disk panel first step, copy from oshi --- .../java/com/luoboduner/moo/info/ui/Init.java | 1 + .../luoboduner/moo/info/ui/form/DiskForm.form | 39 +++++ .../luoboduner/moo/info/ui/form/DiskForm.java | 135 +++++++++++++++++ .../info/ui/form/DiskFormLayoutDesign.form | 141 ++++++++++++++++++ .../info/ui/form/DiskFormLayoutDesign.java | 131 ++++++++++++++++ .../moo/info/ui/form/MainWindow.form | 2 +- .../moo/info/ui/form/MainWindow.java | 8 +- .../moo/info/ui/form/ProcessesForm.java | 3 +- 8 files changed, 455 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/luoboduner/moo/info/ui/form/DiskForm.form create mode 100644 src/main/java/com/luoboduner/moo/info/ui/form/DiskForm.java create mode 100644 src/main/java/com/luoboduner/moo/info/ui/form/DiskFormLayoutDesign.form create mode 100644 src/main/java/com/luoboduner/moo/info/ui/form/DiskFormLayoutDesign.java 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 1029178..1084119 100644 --- a/src/main/java/com/luoboduner/moo/info/ui/Init.java +++ b/src/main/java/com/luoboduner/moo/info/ui/Init.java @@ -206,6 +206,7 @@ public class Init { ThreadUtil.execute(UsbForm::init); ThreadUtil.execute(VariablesForm::init); ThreadUtil.execute(ProcessesForm::init); + ThreadUtil.execute(DiskForm::init); // Check the new version if (App.config.isAutoCheckUpdate()) { diff --git a/src/main/java/com/luoboduner/moo/info/ui/form/DiskForm.form b/src/main/java/com/luoboduner/moo/info/ui/form/DiskForm.form new file mode 100644 index 0000000..c40c7e1 --- /dev/null +++ b/src/main/java/com/luoboduner/moo/info/ui/form/DiskForm.form @@ -0,0 +1,39 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/java/com/luoboduner/moo/info/ui/form/DiskForm.java b/src/main/java/com/luoboduner/moo/info/ui/form/DiskForm.java new file mode 100644 index 0000000..1923d4d --- /dev/null +++ b/src/main/java/com/luoboduner/moo/info/ui/form/DiskForm.java @@ -0,0 +1,135 @@ +package com.luoboduner.moo.info.ui.form; + +import cn.hutool.core.io.unit.DataSizeUtil; +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 oshi.PlatformEnum; +import oshi.SystemInfo; +import oshi.software.os.FileSystem; +import oshi.software.os.OSFileStore; + +import javax.swing.*; +import javax.swing.border.TitledBorder; +import java.awt.*; +import java.util.List; + +/** + * DiskForm + * + * @author RememBerBer + * @since 2021/11/15. + */ +@Getter +public class DiskForm { + private JPanel mainPanel; + private JPanel diskListPanel; + + private static final Log logger = LogFactory.get(); + + private static DiskForm diskForm; + + public static DiskForm getInstance() { + if (diskForm == null) { + diskForm = new DiskForm(); + } + return diskForm; + } + + public static void init() { + diskForm = getInstance(); + + initUi(); + initInfo(); + } + + private static void initUi() { + } + + private static void initInfo() { + FileSystem fileSystem = App.si.getOperatingSystem().getFileSystem(); + List fileStores = fileSystem.getFileStores(); + JPanel diskListPanel = getInstance().getDiskListPanel(); + + diskListPanel.setLayout(new GridLayoutManager(fileStores.size() + 1, 1, new Insets(0, 10, 0, 10), -1, -1)); + + for (int i = 0; i < fileStores.size(); i++) { + OSFileStore store = fileStores.get(i); + + JPanel diskPanel = new JPanel(); + diskPanel.setLayout(new GridLayoutManager(3, 1, new Insets(10, 0, 10, 0), -1, -1)); + JLabel title = new JLabel(); + StringBuilder titleBuilder = new StringBuilder(); + titleBuilder.append(store.getName()); + if (SystemInfo.getCurrentPlatform().equals(PlatformEnum.WINDOWS)) { + titleBuilder.append(" - "); + titleBuilder.append(store.getLabel()); + } + title.setText(titleBuilder.toString()); + Font font = new Font(diskListPanel.getFont().getName(), Font.BOLD, diskListPanel.getFont().getSize()); + title.setFont(font); + + diskPanel.add(title, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + + JProgressBar spacePercent = new JProgressBar(); + diskPanel.add(spacePercent, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + JLabel subTitle = new JLabel(); + long usable = store.getUsableSpace(); + long total = store.getTotalSpace(); + spacePercent.setMaximum(100); + int usagePercent = (int) ((total - usable) * 100 / total); + spacePercent.setValue(usagePercent); + spacePercent.setToolTipText(usagePercent + "%"); + subTitle.setText("Available: " + DataSizeUtil.format(usable) + "/" + DataSizeUtil.format(total)); + diskPanel.add(subTitle, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + + + diskListPanel.add(diskPanel, new GridConstraints(i, 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 Spacer spacer1 = new Spacer(); + diskListPanel.add(spacer1, new GridConstraints(fileStores.size(), 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + + } + + { +// 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, 1, new Insets(0, 0, 0, 0), -1, -1)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(1, 1, new Insets(10, 10, 10, 10), -1, -1)); + mainPanel.add(panel1, 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 JScrollPane scrollPane1 = new JScrollPane(); + panel1.add(scrollPane1, new GridConstraints(0, 0, 1, 1, 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)); + diskListPanel = new JPanel(); + diskListPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 10, 0, 10), -1, -1)); + scrollPane1.setViewportView(diskListPanel); + } + + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return mainPanel; + } + +} diff --git a/src/main/java/com/luoboduner/moo/info/ui/form/DiskFormLayoutDesign.form b/src/main/java/com/luoboduner/moo/info/ui/form/DiskFormLayoutDesign.form new file mode 100644 index 0000000..38d953e --- /dev/null +++ b/src/main/java/com/luoboduner/moo/info/ui/form/DiskFormLayoutDesign.form @@ -0,0 +1,141 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/main/java/com/luoboduner/moo/info/ui/form/DiskFormLayoutDesign.java b/src/main/java/com/luoboduner/moo/info/ui/form/DiskFormLayoutDesign.java new file mode 100644 index 0000000..7b5584d --- /dev/null +++ b/src/main/java/com/luoboduner/moo/info/ui/form/DiskFormLayoutDesign.java @@ -0,0 +1,131 @@ +package com.luoboduner.moo.info.ui.form; + +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 lombok.Getter; + +import javax.swing.*; +import javax.swing.border.TitledBorder; +import java.awt.*; + +/** + * DiskForm + * + * @author RememBerBer + * @since 2021/11/15. + */ +@Getter +public class DiskFormLayoutDesign { + private JPanel mainPanel; + private JProgressBar disk1ProgressBar; + private JProgressBar disk2ProgressBar; + private JProgressBar disk3ProgressBar; + private JPanel disk1Panel; + private JLabel disk1Label1; + private JLabel disk1Label2; + private JPanel disk2Panel; + private JLabel disk2Label1; + private JLabel disk2Label2; + private JPanel disk3Panel; + private JLabel disk3Label1; + private JLabel disk3Label2; + private JPanel diskListPanel; + + private static final Log logger = LogFactory.get(); + + private static DiskFormLayoutDesign diskForm; + + public static DiskFormLayoutDesign getInstance() { + if (diskForm == null) { + diskForm = new DiskFormLayoutDesign(); + } + return diskForm; + } + + public static void init() { + diskForm = getInstance(); + + initUi(); + initInfo(); + } + + private static void initUi() { + } + + private static void initInfo() { + } + + { +// 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, 1, new Insets(0, 0, 0, 0), -1, -1)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(1, 1, new Insets(10, 10, 10, 10), -1, -1)); + mainPanel.add(panel1, 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 JScrollPane scrollPane1 = new JScrollPane(); + panel1.add(scrollPane1, new GridConstraints(0, 0, 1, 1, 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)); + diskListPanel = new JPanel(); + diskListPanel.setLayout(new GridLayoutManager(4, 1, new Insets(0, 10, 0, 10), -1, -1)); + scrollPane1.setViewportView(diskListPanel); + disk1Panel = new JPanel(); + disk1Panel.setLayout(new GridLayoutManager(3, 1, new Insets(10, 0, 10, 0), -1, -1)); + diskListPanel.add(disk1Panel, 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)); + disk1Label1 = new JLabel(); + disk1Label1.setText("Label"); + disk1Panel.add(disk1Label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + disk1ProgressBar = new JProgressBar(); + disk1Panel.add(disk1ProgressBar, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + disk1Label2 = new JLabel(); + disk1Label2.setText("Label"); + disk1Panel.add(disk1Label2, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + disk2Panel = new JPanel(); + disk2Panel.setLayout(new GridLayoutManager(3, 1, new Insets(10, 0, 10, 0), -1, -1)); + diskListPanel.add(disk2Panel, new GridConstraints(1, 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)); + disk2Label1 = new JLabel(); + disk2Label1.setText("Label"); + disk2Panel.add(disk2Label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + disk2ProgressBar = new JProgressBar(); + disk2Panel.add(disk2ProgressBar, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + disk2Label2 = new JLabel(); + disk2Label2.setText("Label"); + disk2Panel.add(disk2Label2, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + disk3Panel = new JPanel(); + disk3Panel.setLayout(new GridLayoutManager(3, 1, new Insets(10, 0, 10, 0), -1, -1)); + diskListPanel.add(disk3Panel, new GridConstraints(2, 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)); + disk3Label1 = new JLabel(); + disk3Label1.setText("Label"); + disk3Panel.add(disk3Label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + disk3ProgressBar = new JProgressBar(); + disk3Panel.add(disk3ProgressBar, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + disk3Label2 = new JLabel(); + disk3Label2.setText("Label"); + disk3Panel.add(disk3Label2, new GridConstraints(2, 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(); + diskListPanel.add(spacer1, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + } + + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return mainPanel; + } + +} 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 7a6775c..4f59f7f 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 @@ -55,7 +55,7 @@ - + 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 fd3f5fc..f9a40e2 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 @@ -23,6 +23,7 @@ public class MainWindow { private JPanel usbPanel; private JPanel VariablesPanel; private JPanel processesPanel; + private JPanel diskPanel; private static MainWindow mainWindow; @@ -46,6 +47,7 @@ public class MainWindow { mainWindow.getUsbPanel().add(UsbForm.getInstance().getMainPanel(), gridConstraints); mainWindow.getVariablesPanel().add(VariablesForm.getInstance().getMainPanel(), gridConstraints); mainWindow.getProcessesPanel().add(ProcessesForm.getInstance().getMainPanel(), gridConstraints); + mainWindow.getDiskPanel().add(DiskForm.getInstance().getMainPanel(), gridConstraints); mainWindow.getMainPanel().updateUI(); } @@ -81,9 +83,9 @@ public class MainWindow { final JPanel panel2 = new JPanel(); panel2.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); tabbedPane.addTab("CPU", panel2); - final JPanel panel3 = new JPanel(); - panel3.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); - tabbedPane.addTab("Disk", panel3); + diskPanel = new JPanel(); + diskPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + tabbedPane.addTab("Disk", diskPanel); networkPanel = new JPanel(); networkPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); tabbedPane.addTab("Network", networkPanel); diff --git a/src/main/java/com/luoboduner/moo/info/ui/form/ProcessesForm.java b/src/main/java/com/luoboduner/moo/info/ui/form/ProcessesForm.java index f648d0c..c427de1 100644 --- a/src/main/java/com/luoboduner/moo/info/ui/form/ProcessesForm.java +++ b/src/main/java/com/luoboduner/moo/info/ui/form/ProcessesForm.java @@ -22,7 +22,7 @@ import java.util.List; import java.util.Map; /** - * NetworkForm + * ProcessesForm * * @author RememBerBer * @since 2021/11/15. @@ -64,6 +64,7 @@ public class ProcessesForm { JTable procTable = getInstance().getProcessTable(); procTable.setModel(model); resizeColumns(procTable.getColumnModel()); + procTable.setShowGrid(true); DefaultTableCellRenderer hr = (DefaultTableCellRenderer) procTable.getTableHeader() .getDefaultRenderer();