📄 monitordemo.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.databox;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Point;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Random;
import java.util.Vector;
import javax.swing.JSplitPane;
import twaver.Element;
import twaver.Link;
import twaver.Node;
import twaver.TDataBox;
import twaver.TWaverConst;
import twaver.TaskAdapter;
import twaver.TaskScheduler;
import twaver.background.TextureBackground;
import twaver.chart.BarChart;
import twaver.chart.Item;
import twaver.chart.LineChart;
import twaver.chart.LineItem;
import twaver.network.TNetwork;
import demo.DemoPane;
import twaver.FlexionLink;
public class MonitorDemo extends DemoPane {
LineChart lineChart;
BarChart barChart;
TDataBox box = new TDataBox();
TNetwork network = new TNetwork(box);
Random random = new Random();
public MonitorDemo() {
network.setNetworkBackground(new TextureBackground("/demo/resource/background/DefaultTexture.gif"));
// init box
final Node start = new Node("S");
start.setName("start");
box.addElement(start);
final Node end = new Node("E");
end.setName("end");
box.addElement(end);
final Link link = new FlexionLink("L", start, end);
link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_3D, Boolean.TRUE);
link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_WIDTH, new Integer(6));
box.addElement(link);
// init chart
Vector items = new Vector();
final LineItem red = new LineItem("red", 0, Color.RED);
final LineItem green = new LineItem("green", 0, Color.GREEN);
final LineItem blue = new LineItem("blue", 0, Color.BLUE);
items.addElement(red);
items.addElement(green);
items.addElement(blue);
lineChart = new LineChart(items, "Link Color Value", Color.BLACK, Color.WHITE);
items = new Vector();
final Item startX = new Item("startX", 0, Color.RED);
final Item startY = new Item("startY", 0, Color.BLUE);
final Item endX = new Item("endX", 0, Color.RED);
final Item endY = new Item("endY", 0, Color.BLUE);
items.addElement(startX);
items.addElement(startY);
items.addElement(endX);
items.addElement(endY);
barChart = new BarChart(items, "Coordinate", Color.WHITE);
JSplitPane chartSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, barChart, lineChart);
JSplitPane mainSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, network, chartSplit);
mainSplit.setDividerLocation(200);
this.add(mainSplit, BorderLayout.CENTER);
// listen node's location property
box.addElementPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals(TWaverConst.PROPERTYNAME_LOCATION)) {
Element element = (Element) evt.getSource();
if (element == start) {
Point loaction = element.getLocation();
startX.setValue(loaction.x);
startY.setValue(loaction.y);
startX.setToolTipText("startX=" + loaction.x);
startY.setToolTipText("startY=" + loaction.y);
}
if (element == end) {
Point loaction = element.getLocation();
endX.setValue(loaction.x);
endY.setValue(loaction.y);
endX.setToolTipText("endX=" + loaction.x);
endY.setToolTipText("endY=" + loaction.y);
}
}
}
});
// listen link client property
link.getPropertyChangeSupport().addPropertyChangeListener(
TWaverConst.CLIENT_PROPERTY_PREFIX + TWaverConst.PROPERTYNAME_LINK_COLOR,
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
Element element = (Element) evt.getSource();
if (element == link) {
Color color = (Color) evt.getNewValue();
red.addValue(color.getRed());
green.addValue(color.getGreen());
blue.addValue(color.getBlue());
if (lineChart.valueCount() > 30) {
lineChart.removeHead(1);
}
}
}
});
// init value
start.setLocation(100, 100);
end.setLocation(400, 30);
link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_COLOR, Color.MAGENTA);
link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_COLOR, Color.CYAN);
// init task
TaskScheduler.getInstance().register(new TaskAdapter() {
public void run(long clock) {
int r = random.nextInt(255);
int g = random.nextInt(255);
int b = random.nextInt(255);
link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_COLOR, new Color(r, g, b));
}
public int getInterval() {
return 1000;
}
});
}
public String getTitle() {
return "Monitor Element Property";
}
public String getHelp() {
return "This demo shows how to monitor element's property changed event. " +
"All changes are on record and displayed on line chart." +
"<p>Location of changes will displayed on bar chart.";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -