⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitordemo.java

📁 全面实现ilog地功能,没有使用第三方lib.
💻 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 + -