customuidemo.java
来自「全面实现ilog地功能,没有使用第三方lib.」· Java 代码 · 共 139 行
JAVA
139 行
/*
* 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.network.customui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.util.Random;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.SwingUtilities;
import twaver.AlarmSeverity;
import twaver.Element;
import twaver.Link;
import twaver.MovableFilter;
import twaver.Node;
import twaver.TDataBox;
import twaver.TWaverConst;
import twaver.network.TNetwork;
import twaver.network.ui.IconAttachmentHolder;
import twaver.table.TPropertySheet;
import twaver.tree.TTree;
import demo.DemoPane;
public class CustomUIDemo extends DemoPane {
TDataBox box = new TDataBox();
TNetwork network = new TNetwork(box);
TTree tree = new TTree(box);
TPropertySheet sheet = new TPropertySheet(box);
Random r = new Random();
public CustomUIDemo() {
tree.setElementMakedVisibleOnSelected(true);
this.sheet.setElementEditable(true);
JSplitPane leftSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, new JScrollPane(tree), new JScrollPane(sheet));
JSplitPane rootSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftSplit, network);
leftSplit.setDividerLocation(100);
leftSplit.setContinuousLayout(true);
rootSplit.setDividerLocation(200);
rootSplit.setContinuousLayout(true);
this.add(rootSplit, BorderLayout.CENTER);
IconAttachmentHolder.addAttachment("Thermometer", ThermometerAttachment.class);
IconAttachmentHolder.addAttachment("KPI", KPIAttachment.class);
final Node node1 = new CustomUINode();
node1.setLocation(80, 80);
node1.putClientProperty("StateIcon:Thermometer", Boolean.TRUE);
node1.putClientProperty("StateIcon:KPI", Boolean.TRUE);
node1.setName("equipment 1");
node1.setSelected(true);
network.getDataBox().addElement(node1);
final Node node2 = new CustomUINode();
node2.setLocation(250, 300);
node2.setName("equipment 2");
box.addElement(node2);
final Link link = new Link(node1, node2);
link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_FLOWING_COLOR, Color.RED);
link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_WIDTH, new Integer(6));
link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_FLOWING_WIDTH, new Integer(6));
link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_3D, Boolean.TRUE);
box.addElement(link);
this.network.addMovableFilter(new MovableFilter() {
public boolean isMovable(Element element) {
if (element == node2) {
Boolean state = (Boolean) node2.getClientProperty("equipment.state");
if (state != null && state.booleanValue()) {
return false;
}
}
return true;
}
});
Thread thread = new Thread() {
public void run() {
while (true) {
for (int i = 20; i > 0; i--) {
final int step = i;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// set node1
final Integer temperature = new Integer(step);
node1.putClientProperty("temperature", temperature);
for (int k = 0; k < KPIAttachment.KYES.length; k++) {
double value = r.nextInt(100) / 100.0;
String key = KPIAttachment.KYES[k];
node1.putClientProperty(KPIAttachment.KYES[k], key + ":" + value);
}
Boolean state = step < 10 ? Boolean.TRUE : Boolean.FALSE;
if (state == Boolean.TRUE) {
node1.getAlarmState().increaseNewAlarm(AlarmSeverity.CRITICAL, 1);
} else {
node1.getAlarmState().decreaseNewAlarm(AlarmSeverity.CRITICAL, 1);
}
// set node2
node2.putClientProperty("equipment.state", state);
node2.putClientProperty("equipment.value", new Integer(step));
// set link
link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_FLOWING, new Boolean(!state.booleanValue()));
}
});
try {
Thread.sleep(200);
}
catch (InterruptedException ex) {
}
}
}
}
};
thread.start();
}
public String getHelp() {
return "This demo customize element UI";
}
public String getTitle() {
return "Element Custom UI";
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?