package org.infosec.ismp.applet.manager.component.panel.view.infoview; import java.awt.BorderLayout; import java.awt.Color; import java.util.ArrayList; import java.util.List; import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import twaver.Element; import twaver.ElementAttribute; import twaver.Node; import twaver.TDataBox; import twaver.chart.PieChart; import twaver.table.TPropertySheet; /** * 硬盘信息一览面板 * 接口: * setUsedDisk * setDiskCount */ public class DiskViewPanel extends JPanel { private TDataBox box = new TDataBox(); private PieChart chart = new PieChart(box) { protected String getFormatedText(Element element, double value) { return element.getName() + ":" + super.getFormatedText(element, value); } }; private TPropertySheet sheet = new TPropertySheet(); private Element attribute = new Node(); private Element used = new Node(); private Element unUsed = new Node(); private double usedDisk; private double diskCount; public DiskViewPanel() { initGUI(); initSheet(); } private void initGUI() { chart.set3D(true); chart.setValueTextPercent(true); chart.getLegendPane().setVisible(false); used.putChartColor(Color.RED); unUsed.putChartColor(Color.GREEN); used.setName("已用"); unUsed.setName("未用"); box.addElement(used); box.addElement(unUsed); this.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); this.setLayout(new BorderLayout()); JSplitPane pane = new JSplitPane(); pane.setDividerSize(2); pane.setRightComponent(chart); pane.setLeftComponent(new JScrollPane(sheet)); pane.setDividerLocation(300); this.add(pane, BorderLayout.CENTER); } private void initSheet() { sheet.setElement(attribute); List list = new ArrayList(); list.add(getElementaAttribute("硬盘容量(KByte)", "all")); list.add(getElementaAttribute("硬盘已用容量(KByte)", "used")); sheet.registerElementClassAttributes(Node.class, list); } private ElementAttribute getElementaAttribute(String name, String key) { ElementAttribute attribute = new ElementAttribute(); attribute.setDisplayName(name); attribute.setClientPropertyKey(key); return attribute; } public double getUsedDisk() { return usedDisk; } /** * 设置未使用硬盘容量 * * @param usedDisk */ public void setUsedDisk(double usedDisk) { this.usedDisk = usedDisk; used.putChartValue(usedDisk); attribute.putClientProperty("used", usedDisk + ""); } public double getDiskCount() { return diskCount; } /** * 设置硬盘容量总数 * * @param diskCount */ public void setDiskCount(double diskCount) { this.diskCount = diskCount; unUsed.putChartValue(diskCount - usedDisk); attribute.putClientProperty("all", diskCount + ""); } }