animationdemo.java

来自「全面实现ilog地功能,没有使用第三方lib.」· Java 代码 · 共 168 行

JAVA
168
字号
/* * 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;

import java.awt.Color;import java.awt.GridLayout;import java.util.Iterator;import java.util.Random;import twaver.AlarmSeverity;import twaver.AnimatingRuler;import twaver.Element;import twaver.Link;import twaver.Node;import twaver.TDataBox;import twaver.TUIManager;import twaver.TWaverConst;import twaver.TWaverUtil;import twaver.TaskAdapter;import twaver.TaskScheduler;import twaver.background.TextureBackground;import twaver.network.TNetwork;import twaver.network.ui.ElementUI;import demo.DemoPane;
public class AnimationDemo extends DemoPane {
	
	final Node finalNode;
    TDataBox box = new TDataBox();
    TNetwork network1 = new TNetwork(box);
    TNetwork network2 = new TNetwork(box);
    TNetwork network3 = new TNetwork(box);
    TNetwork network4 = new TNetwork(box);
    
	class CustomAnimatingRuler implements AnimatingRuler{
		public boolean interested(TNetwork network, Element element, ElementUI ui) {
			// don't blink at any condition
			if(network == network1){
				return false;
			}
			// blink when element have new alarm and element is visible
			if(network == network2){
				AlarmSeverity severity = element.getAlarmState().getHighestNewAlarmSeverity();
				if(severity != null){
			        if(network.getCanvas().isVisible() && network.isVisible(element)){  
			        	return true;
			        }
				}
				return false;
			}
			// blink when element's new alarm severity is more urgent than 
			// warning level and element is visible
			if(network == network3){
				AlarmSeverity severity = element.getAlarmState().getHighestNewAlarmSeverity();
				if(severity != null && severity.getValue() >= AlarmSeverity.VALUE_MINOR){
			        if(network.getCanvas().isVisible() && network.isVisible(element)){  
			        	return true;
			        }
				}
				return false;
			}
			// blink always except final node 
			if(network == network4){
				if(finalNode != element){
					return true;
				}
				return false;
			}
			return false;
		}
	}
	

    
    public AnimationDemo() {
    	TUIManager.setAnimatingRuler(new CustomAnimatingRuler());
    	TUIManager.registerDefault(TWaverConst.PROPERTYNAME_ANIMATING_BLINK_INTERVAL, new Integer(500));

    	network1.setNetworkBackground(new TextureBackground("/demo/resource/background/DefaultTexture.jpg"));
    	network2.setNetworkBackground(new TextureBackground("/demo/resource/background/DefaultTexture.jpg"));
    	network3.setNetworkBackground(new TextureBackground("/demo/resource/background/DefaultTexture.jpg"));
    	network4.setNetworkBackground(new TextureBackground("/demo/resource/background/DefaultTexture.jpg"));

        this.setLayout(new GridLayout(4, 1));
        this.add(network1, null);
        this.add(network2, null);
        this.add(network3, null);
        this.add(network4, null);

        Iterator it = AlarmSeverity.getAllSeverity().iterator();
        int x = 80;
        Node node = null;
        int i = 0;
        while(it.hasNext()){
        	i++;
        	Node lastNode = node;
        	// add node
        	AlarmSeverity severity = (AlarmSeverity)it.next();
        	node = new Node();
        	node.setName(TWaverUtil.getString("Alarm.Severity." + severity.getName()));
        	
        	node.setLocation(x, 50);
        	node.getAlarmState().addNewAlarm(severity);
        	box.addElement(node);
        	
        	// custom blink interval
        	if(severity.getValue() > 0){
        		network4.getRenderer().getElementUI(node).setInterval(500 + i * 200);
        	}
        	
        	// add link
        	if(lastNode != null){
        		Link link = new Link(lastNode, node);
        		link.getAlarmState().addNewAlarm(severity);
        		box.addElement(link);
        		
            	// custom blink interval
        		if(severity.getValue() > 0){
        			network4.getRenderer().getElementUI(link).setInterval(500 + i * 200);
        		}
            	
        	}
        	lastNode = node;
        	x += 120;
        }
   

        //simulate the status change event, change its body and outline color.
        finalNode = node;
        TaskScheduler.getInstance().register(new TaskAdapter() {
            Random random = new Random();
            public int getInterval() {
                return 500;
            }
            public void run(long long0) {
            	finalNode.putClientProperty(
                        TWaverConst.PROPERTYNAME_ELEMENT_BODY_COLOR,
                        new Color(random.nextInt(255),
                                  random.nextInt(255),
                                  random.nextInt(255),
                                  random.nextInt(255)));
            	finalNode.putClientProperty(
                        TWaverConst.PROPERTYNAME_ELEMENT_OUTLINE_COLOR,
                        new Color(random.nextInt(255),
                                  random.nextInt(255),
                                  random.nextInt(255)));
            	finalNode.putClientProperty(
            			TWaverConst.PROPERTYNAME_DRAW_IMAGE_SHAPE,
            			new Boolean(random.nextBoolean())
            			);
            }
        });
        
    }

	public String getTitle() {
		return "Custom Animation Ruler";
	}

	public String getHelp() {
		return "This demo creates four networks, each one has independent animating ruler.";
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?