package org.infosec.ismp.applet.manager.component.panel; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JPanel; import javax.swing.JTabbedPane; import org.infosec.ismp.applet.manager.application.dynamicInfo.DynamicInfo; import org.infosec.ismp.applet.manager.component.panel.HostDeviceInfoPanel.DataRefresh; import org.infosec.ismp.applet.manager.component.panel.progress.ProcessPanel; import org.infosec.ismp.applet.manager.component.panel.reflash.SensorRefreshPanelUI; import org.infosec.ismp.applet.manager.component.panel.utils.SJTUUtils; import org.infosec.ismp.applet.manager.model.NodeModel; import org.infosec.ismp.applet.manager.utilities.NullFilter; import org.infosec.ismp.manager.rmi.tm.manager.model.DeviceInformation; public class SensorInfoPanel extends JPanel{ private NodeModel model; private EquipmentPanel equipment; private ProcessPanel process; private InfoPanel info; private boolean flag ; private DataRefresh dataRefresh; public SensorInfoPanel(final NodeModel node) { model = node; JTabbedPane pane = new JTabbedPane(); equipment = new EquipmentPanel(true); info = new InfoPanel(); process = new ProcessPanel(); pane.add("详细信息", equipment); pane.add("动态信息", info); pane.add("进程管理", process); this.add(pane); SJTUUtils.showCompoentInFrame(pane,node); DynamicInfo.startGetDynamicInfo(node); flag = true; node.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if(evt.getPropertyName().equals("CP:"+NodeModel.DEVICE_INFORMATION)) { DeviceInformation deviceInfo = (DeviceInformation)evt.getNewValue(); if(flag) { dataRefresh = new DataRefresh(deviceInfo); dataRefresh.start(); flag = false; } dataRefresh.setDeviceInfo(deviceInfo); } } }); } /** * 引用数据线程。 */ class DataRefresh extends Thread { DeviceInformation deviceInfo = null; NullFilter filter; public DataRefresh(DeviceInformation info) { this.deviceInfo = info; filter = new NullFilter(model,deviceInfo); } public void run() { SensorRefreshPanelUI refresh = new SensorRefreshPanelUI(filter); //----------指定面板的刷新频率 refresh.refreshDevice(equipment.getDeviceInfoPanel(), 10000); refresh.refreshAsset(equipment.getAssetDevicePanel(), 20000); refresh.refreshIsActive(model, 1500); refresh.refreshSensor(equipment.getSensorPanel(), 1500); refresh.refreshCPU(equipment.getInfoViewPanel().getCpuPanel(), 1500); refresh.refreshHardDisk(equipment.getInfoViewPanel().getDiskViewPanel(), 1500); refresh.refreshMemory(equipment.getInfoViewPanel().getMemoryPanel(), 1500); refresh.refreshNetwork(equipment.getNetworkStatusPanel(), 5000); refresh.refreshMidMemory(info.getMemoryPanel(), 1500); refresh.refreshMidHardDisk(info.getFilePanel(), 6000); refresh.refreshMidNetwork(info.getNetPortPanel(), 1000); refresh.refreshMidCPUs(info.getCpupPanel(), 1000); refresh.refreshProcess(process.getProcessPane(),info.getWaitQueuePanel(),3000); info.routinePanel.setOs("windows"); } public void setDeviceInfo(DeviceInformation deviceInfo) { this.deviceInfo = deviceInfo; filter.setInfo(deviceInfo); } } public EquipmentPanel getEquipment() { return equipment; } public ProcessPanel getProcess() { return process; } public InfoPanel getInfo() { return info; } public NodeModel getModel() { return model; } public void setModel(NodeModel model) { this.model = model; } }