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.TWaverConst;
import twaver.chart.PercentChart;
import twaver.table.TPropertySheet;
/**
* 内存信息面板
* 接口
* setUsedMemeory
* setMemoryCount
*/
public class MemoryViewPanel extends JPanel {
private TDataBox dataBox = new TDataBox();
private Element usedElement = new Node();
private double memoryCount = 0;
private double usedMemory = 0;
private Element attribute = new Node();
private PercentChart chart = new PercentChart(dataBox) {
public Color getPercentColor(Element element) {
Color color = Color.GREEN;
if (element.getChartValue() >= 60) {
color = Color.ORANGE;
}
if (element.getChartValue() >= 80) {
color = Color.RED;
}
return color;
}
};
private TPropertySheet sheet = new TPropertySheet();
public MemoryViewPanel() {
chart.setXGap(20);
chart.setThickness(100);
chart.setGradient(true);
dataBox.addElement(usedElement);
chart.setSpareFill(true);
chart.setSegmentCount(20);
usedElement.putChartPercentStyle(TWaverConst.PERCENT_STYLE_SEGMENT);
initSheet();
initGUI();
}
private void initGUI() {
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;
}
/**
* 设置已用内存
*
* @param number
*/
public void setUsedMemeory(double number) {
usedMemory = number;
if (memoryCount != 0) {
usedElement.putChartValue(usedMemory / memoryCount * 100);
} else {
usedElement.putChartValue(0);
}
attribute.putClientProperty("used", number + "");
}
/**
* 设置内存总量
* @param number
*/
public void setMemoryCount(double number) {
memoryCount = number;
if (memoryCount != 0) {
usedElement.putChartValue(usedMemory / memoryCount * 100);
} else {
usedElement.putChartValue(0);
}
attribute.putClientProperty("all", number + "");
}
}