?? alarmdemo.java
字號:
/*
* This source code is part of TWaver 1.3.1
*
* SERVA Software PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* Copyright 2000-2005 SERVA Software, Inc. All rights reserved.
*/
package demo.alarm;
import java.awt.BorderLayout;
import java.util.Date;
import java.util.Random;
import java.util.Vector;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import twaver.Alarm;
import twaver.AlarmProbableCause;
import twaver.AlarmSeverity;
import twaver.AlarmTrendIndication;
import twaver.AlarmType;
import twaver.AlarmUI;
import twaver.Dummy;
import twaver.Element;
import twaver.Link;
import twaver.Node;
import twaver.TAlarmOverview;
import twaver.TDataBox;
import twaver.TaskAdapter;
import twaver.TaskScheduler;
import twaver.base.LinkType;
import twaver.network.TNetwork;
import twaver.network.layout.FlexionLinkLayouter;
import twaver.table.TAlarmTable;
import twaver.table.TTableAdapter;
import twaver.table.TTableColumn;
import twaver.table.TTableNavigator;
import twaver.tree.TTree;
import demo.DemoPane;
public class AlarmDemo extends DemoPane {
int counter = 0;
TDataBox box = new TDataBox("My Box");
TNetwork network = new TNetwork(box);
TTree tree = new TTree(box);
TAlarmOverview overview = new TAlarmOverview(box);
JSplitPane rootSplit = new JSplitPane();
JSplitPane leftSplit = new JSplitPane();
JSplitPane rigthSplit = new JSplitPane();
TAlarmTable alarmTable = new TAlarmTable(box);
Object[] causes = AlarmProbableCause.BACK_PLANE_FAILURE.getValues();
Object[] types = AlarmType.COMMUNICATIONS_ALARM.getValues();
Object[] trends = AlarmTrendIndication.LESS_SEVERE.getValues();
public AlarmDemo() {
this.add(rootSplit, BorderLayout.CENTER);
rootSplit.setContinuousLayout(true);
rootSplit.add(rigthSplit, JSplitPane.RIGHT);
rootSplit.add(leftSplit, JSplitPane.LEFT);
leftSplit.setOrientation(JSplitPane.VERTICAL_SPLIT);
leftSplit.setActionMap(null);
leftSplit.setContinuousLayout(true);
leftSplit.add(new JScrollPane(tree), JSplitPane.TOP);
leftSplit.add(overview, JSplitPane.BOTTOM);
JPanel tablePanel = new JPanel(new BorderLayout());
alarmTable.getTableModel().setPageRowSize(20);
tablePanel.add(new TTableNavigator(alarmTable.getTableModel(), new int[] {20, 30, 50, 0}), BorderLayout.NORTH);
tablePanel.add(new JScrollPane(alarmTable), BorderLayout.CENTER);
rigthSplit.setOrientation(JSplitPane.VERTICAL_SPLIT);
rigthSplit.add(network, JSplitPane.TOP);
rigthSplit.add(tablePanel, JSplitPane.BOTTOM);
tree.setElementMakedVisibleOnSelected(true);
network.setLinkLayout(new FlexionLinkLayouter(network));
network.setElementDeletable(true);
rootSplit.setDividerLocation(200);
leftSplit.setDividerLocation(300);
rigthSplit.setDividerLocation(250);
alarmTable.addColumn(new TTableColumn("key1").setEditable(true));
alarmTable.addColumn(new TTableColumn("key2"));
alarmTable.addColumn(new TTableColumn("key3"));
alarmTable.addColumn(new TTableColumn("counter").setEditable(true).setJavaClass(Integer.class));
alarmTable.getTableModel().addTableListener(new TTableAdapter() {
public void rowClicked(int clickCount, Vector rowData, int columnIndex) {
if (clickCount == 1) {
Object elementID = rowData.get(5);
Element element = box.getElementByID(elementID);
box.getSelectionModel().setSelection(element);
} else if (clickCount == 2) {
Object oid = rowData.get(0);
Alarm alarm = alarmTable.getAlarmByOID(oid);
AlarmUI.createFrameAlarmUI(alarm).show();
}
}
});
initData();
start();
}
private void initData() {
Node center = new Node("center");
center.setName("center");
center.setLocation(200, 200);
center.setImage("/demo/resource/cloud.png");
box.addElement(center);
Dummy nodes = new Dummy("My Nodes");
nodes.setName("My Nodes");
box.addElement(nodes);
Dummy links = new Dummy("My Links");
links.setName("My Links");
box.addElement(links);
int count = 10;
int r = 150;
for (int i = 0; i < count; i++) {
Node node = new Node("NODE" + i);
node.setName("Computer" + i);
node.setParent(nodes);
double angle = Math.PI * 2 / count * i;
int x = center.getLocation().x + center.getWidth() / 2;
x = x + (int) (r * Math.cos(angle));
x = x - node.getWidth() / 2;
int y = center.getLocation().y + center.getHeight() / 2;
y = y + (int) (r * Math.sin(angle));
y = y - node.getHeight() / 2;
node.setLocation(x, y);
box.addElement(node);
Link link = new Link("C_TO_" + node.getID(), center, node);
link.setParent(links);
link.putClientProperty("link.width", new Integer(6));
link.putClientProperty("link.3d", Boolean.TRUE);
link.setType(LinkType.CNET);
box.addElement(link);
}
}
private void start() {
TaskScheduler.getInstance().register(new TaskAdapter() {
Vector severities = new Vector(AlarmSeverity.getAllSeverity());
Random random = new Random();
public void run(long clock) {
if(box.getAlarmModel().size() >= 50){
box.getAlarmModel().removeAllAlarms();
}
Element element = box.getElement(random.nextInt(box.size()));
final AlarmSeverity severity = (AlarmSeverity) severities.get(random.nextInt(severities.size() - 1));
box.getAlarmModel().setAutoSyncAlarmState(true);
Alarm alarm = new Alarm(new Integer(counter++), element.getID(), severity);
alarm.setAcked(random.nextBoolean());
alarm.setAckTime(new Date());
alarm.setAckUserID("sailing8036");
alarm.setAdditionalText("additionalText");
alarm.setProbableCause( (AlarmProbableCause) causes[random.nextInt(causes.length)]);
alarm.setAlarmType( (AlarmType) types[random.nextInt(types.length)]);
alarm.setCleared(false);
alarm.setTrendIndication( (AlarmTrendIndication) trends[random.nextInt(trends.length)]);
alarm.setLastChangedTime(new Date());
alarm.setClearedTime(new Date());
alarm.setRaisedTime(new Date());
alarm.setClearUserID("Clear user name");
alarm.addComment("first comment");
alarm.addComment("second comment");
alarm.addCorrelatedAlarmID("ALM0008");
alarm.addCorrelatedAlarmID("ALM0009");
alarm.setProposedRepairAction("Junk it now");
alarm.setSpecificProblem("no specific problem");
alarm.putClientProperty("key1", "This is key1 value.");
alarm.putClientProperty("key2", new Date());
alarm.putClientProperty("key3", "test value.");
alarm.putClientProperty("counter", new Integer(counter));
box.getAlarmModel().addAlarm(alarm);
alarm = alarmTable.getAlarmByOID(new Integer(1));
if (alarm != null) {
alarm.setAlarmSeverity(severity);
alarm.putClientProperty("counter", new Integer(counter));
}
}
public int getInterval() {
return 3000;
}
});
}
public String getHelp() {
return "This demo demonstrate you how to create alarm objects, " +
"and present the alarm state by Tree, Network, Table and AlarmOverview components." +
"<p>This demo generate alarms randomly, all alarms will list " +
"in the alarm table. In the same time, the alarm state on other componentswill " +
"update coincidently.";
}
public String getTitle() {
return "Using Alarm Demo";
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -