iconattachmentdemo.java

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

JAVA
149
字号
/*
 * 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.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Iterator;
import java.util.Random;

import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

import twaver.AlarmSeverity;
import twaver.Link;
import twaver.Node;
import twaver.TDataBox;
import twaver.TWaverConst;
import twaver.TaskAdapter;
import twaver.TaskScheduler;
import twaver.network.TNetwork;
import twaver.network.layout.FlexionLinkLayouter;
import demo.DemoPane;

public class IconAttachmentDemo extends DemoPane implements ActionListener{
	TDataBox box = new TDataBox();
	TNetwork network = new TNetwork(box);
	
	public IconAttachmentDemo(){
		network.setLinkLayout(new FlexionLinkLayouter(network));
		
		JPanel panel = new JPanel(new FlowLayout());
		ButtonGroup group = new ButtonGroup();
		
		JRadioButton button = new JRadioButton("consider transparent Area");
		button.setForeground(Color.RED);
		button.addActionListener(this);
		group.add(button);
		panel.add(button);
		
		button = new JRadioButton("ignore transparent Area");
		button.setForeground(Color.BLUE);
		button.addActionListener(this);
		group.add(button);
		panel.add(button);
		
		network.setTransparentAreaSelectable(true);
		button.setSelected(true);
		
		this.add(network, BorderLayout.CENTER);
		this.add(panel, BorderLayout.SOUTH);

		Node node1 = new Node();
		box.addElement(node1);
		node1.setImage("/demo/resource/logo.png");
		node1.setLocation(250, 50);
		node1.putClientProperty("severity", AlarmSeverity.INDETERMINATE);
		
		Node node2 = new Node();
		box.addElement(node2);
		node2.setImage("/demo/resource/logo.png");
		node2.setLocation(20, 150);
		node2.putClientProperty("severity", AlarmSeverity.MAJOR);
		
		Node node3 = new Node();
		box.addElement(node3);
		node3.setImage("/demo/resource/logo.png");
		node3.setLocation(500, 150);
		node3.putClientProperty("severity", AlarmSeverity.MINOR);
		
		Node node4 = new Node();
		box.addElement(node4);
		node4.setImage("/demo/resource/logo.png");
		node4.setLocation(250, 250);
		node4.putClientProperty("severity", AlarmSeverity.WARNING);
		
        Link link = new Link(node1, node2);
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_3D, Boolean.TRUE);
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_WIDTH, new Integer(6));
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_COLOR, Color.RED);
        box.addElement(link);
		
        link = new Link(node4, node3);
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_3D, Boolean.TRUE);
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_WIDTH, new Integer(6));
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_COLOR, Color.YELLOW);
        box.addElement(link);
        
        link = new Link(node3, node1);
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_3D, Boolean.TRUE);
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_WIDTH, new Integer(6));
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_COLOR, Color.BLUE);
        box.addElement(link);
        
        link = new Link(node4, node2);
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_3D, Boolean.TRUE);
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_WIDTH, new Integer(6));
        link.putClientProperty(TWaverConst.PROPERTYNAME_LINK_COLOR, Color.GREEN);
        box.addElement(link);
        
		TaskScheduler.getInstance().register(new TaskAdapter(){
			Random random = new Random();
			public void run(long clock) {
				String prefix = TWaverConst.ELEMENT_STATE_ICON_PREFIX;
				Iterator it = box.iterator(Node.class);
				while(it.hasNext()){
					Node node = (Node)it.next();
					for(int i=1; i<=6; i++){
						boolean display = random.nextBoolean();
						node.putClientProperty(prefix + "attachment" + i, Boolean.valueOf(display));
					}
					AlarmSeverity severity = (AlarmSeverity)node.getClientProperty("severity");
					node.getAlarmState().addNewAlarm(severity);
					node.putClientProperty(TWaverConst.PROPERTYNAME_ELEMENT_IMAGE_ALPHA, new Float(random.nextFloat()));
				}
			}
			public int getInterval() {
				return 500;
			}
		});
	}
	
	public void actionPerformed(ActionEvent e) {
		if(((JRadioButton)e.getSource()).getText().startsWith("ignore")){
			network.setTransparentAreaSelectable(true);
		}else{
			network.setTransparentAreaSelectable(false);
		}
	}
	
	public String getTitle() {
		return "Icon Attachment Demo";
	}

	public String getHelp() {
		return "This demo shows how to use attachment icons";
	}


}

⌨️ 快捷键说明

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