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

📄 treeapplet.java

📁 是一个Tcp和Udp网络通信的小程序
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package com.qamsystem.esm.topo.show.tree;

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;

import javax.swing.ButtonGroup;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import twaver.DataBoxAdapter;
import twaver.DataBoxEvent;
import twaver.DataBoxSelectionEvent;
import twaver.DataBoxSelectionListener;
import twaver.Dummy;
import twaver.Element;
import twaver.Group;
import twaver.Link;
import twaver.Node;
import twaver.PersistenceManager;
import twaver.PopupMenuGenerator;
import twaver.TDataBox;
import twaver.TView;
import twaver.TWaverConst;
import twaver.TWaverUtil;
import twaver.TaskScheduler;
import twaver.tree.DefaultDnDHandler;
import twaver.tree.TTree;

import com.qamsystem.esm.biz.topo.entity.TopoServerConstants;
import com.qamsystem.esm.biz.topo.networkdevice.entity.ResInterfaceBean;
import com.qamsystem.esm.biz.topo.networkdevice.entity.ResNodeBean;
import com.qamsystem.esm.topo.comm.entity.ActionResponseObject;
import com.qamsystem.esm.topo.comm.entity.TopoClientConstants;
import com.qamsystem.esm.topo.comm.impl.TopoActionManager;
import com.qamsystem.esm.topo.show.entity.FetchTopoAlarmThread;
import com.qamsystem.esm.topo.show.network.NetworkApplet;
import com.qamsystem.esm.topo.show.util.TopoClientUtil;

public class TreeApplet extends JApplet {
	private static final long serialVersionUID = 1917779735088872473L;
	
	public static Applet myselftApplet = null;
	public NetworkApplet networkApplet=null;
	public PopupMenuGenerator popupMenuGenerator = null;
	private JPanel treePanel = null;
	private TTree topoTree = null;
	
	// 视图ID
	private String strViewID = null;
	// 访问的URL
	private String strTopoURL = null;
	// 告警详细页面URL
	private String strAlarmDetailURL = null;
	// 节点或链路详细页面URL
	private String strNodeOrLinkDetailURL = null;
	// TDataBox
	public TDataBox dataBox = null;
	// 当前视图对应的背景图片
	private String strCurrViewBackImage = null;
	// 所有视图可供选择的背景图片列表
	private HashMap<String, String> hmAllViewBackImageList = null;
	// 当前视图是否手动布局过
	private String strCurrViewIsLayouted = null;
	// 生成事件管理器
	private TopoActionManager topoActionMngr = null;
	
	/** 节点相关的资源与拓扑表信息 **/
	// 节点资源<Key: 节点的ID    Value:ResNodeBean>
	private static HashMap<String, ResNodeBean> hmNodeResources = null;
	
	// 节点上的物理接口信息<Key: 节点ID    Value:节点上的接口信息列表ArrayList<ResInfBean>>
	private static HashMap<String, ArrayList<ResInterfaceBean>> hmNodeInfsInfos = null;
	
	// 是否由TDataBox通过解析服务端来的XML文件已添加该链路
	private static boolean blnIsParsedXmlAddedLink = false;
	
	/**
	 * 初始化Applet
	 */
	public void init() {
		// 生成Applet面板
		if (treePanel == null) {
			treePanel = new JPanel(new BorderLayout());
		}
		// 生成TDataBox数据容器
		if (dataBox == null) {
			dataBox = new TDataBox();
		}
		
		// 增加节点排序事件监听器
		addSortNodeListener(dataBox);
		// 增加多选控制事件监听器
		addMultiSelectedListener(dataBox);
		
		// 取Applet标签参数
		getAppletArguments();
		try {
			topoActionMngr = new TopoActionManager(strTopoURL);
		} catch (IOException ex) {
			ex.printStackTrace();
			return;
		}
		
		// 加载拓扑树的数据
		if (topoActionMngr != null) {
			try {
				loadTreeData(topoActionMngr);
			} catch (Exception ex) {
				ex.printStackTrace();
				return;
			}
		}
		
		// 为告警添加调度任务监听器
		TaskScheduler.getInstance().register(new FetchTopoAlarmThread(topoActionMngr, dataBox, strViewID));
		
		//添加节点监听器
		setAddElementListener(topoActionMngr, dataBox);
		// 生成拓扑树对象
		topoTree = new TTree(dataBox);
		// 设定根DataBox不可见
		topoTree.setRootVisible(false);
		//展开根结点
		topoTree.expand(1); //expand(dataBox.getElementByID(strViewID));
		topoTree.setElementDraggable(true);
		// 添加弹出式菜单对象
		topoTree.setPopupMenuGenerator(getPopupMenuGenerator(topoTree.getFont(), topoActionMngr));
		// 设置拓扑树的事件监听器
		setTopoTreeListener(topoTree, topoActionMngr);

		// 添加拓扑树到滚动面板
		JScrollPane scroll = new JScrollPane(topoTree);
		treePanel.add(scroll, BorderLayout.CENTER);
		
		JPanel secondPanel=new JPanel();
		secondPanel.add(new JLabel("I'm tree 2"));
		JPanel thirdPanel=new JPanel();
		thirdPanel.add(new JLabel("I'm tree 3"));
		
		
		JTabbedPane pane=new JTabbedPane(JTabbedPane.TOP ,JTabbedPane.SCROLL_TAB_LAYOUT);
		pane.add(treePanel,"设备",0);
		pane.add(secondPanel,"应用",1);
		pane.add(thirdPanel,"业务",2);
		pane.addChangeListener(new ChangeListener()
		{
			public void stateChanged(ChangeEvent event)
			{
				if(networkApplet!=null)
				{
					JTabbedPane pane=(JTabbedPane)event.getSource();
					int index=pane.getSelectedIndex();
					networkApplet.showPane(index);
				}
			}
		});
		
		
		this.add(pane);
		
		// 存储自身Applet的句柄
		myselftApplet = this;
	}
	
	/**
	 * 取Applet标签参数。
	 */
	private void getAppletArguments() {
		// 取得连接参数
		strTopoURL = this.getParameter("topoURL");
		strViewID = this.getParameter("viewID");
		if (strTopoURL == null || strTopoURL.equals("")) {
			System.out.println("[URL参数为空]");
			return;
		}
		// 告警详细页面URL
		strAlarmDetailURL = this.getParameter("alarmDetailURL");
		// 节点或链路详细页面URL
		strNodeOrLinkDetailURL = this.getParameter("nodeOrLinkDetailURL");
	}
	
	// 不需要外围类引用
	private static class DialogPanel extends JPanel {
		private static final long serialVersionUID = 1842366117042994680L;
		
		private JDialog dialog=null;
		private JTextField textField=null;
		private JRadioButton yesButton=null;
		private JRadioButton noButton=null;
		private ButtonGroup buttonGroup=null;
		private boolean ok=false;
		private boolean isVisible=false;
		
		public DialogPanel() {
			textField = new JTextField(20);
			yesButton = new JRadioButton("是", true);
			yesButton.setActionCommand("yes");
			noButton = new JRadioButton("否");
			noButton.setActionCommand("no");
			buttonGroup = new ButtonGroup();
			buttonGroup.add(yesButton);
			buttonGroup.add(noButton);
			setLayout(new BorderLayout());

			JPanel textPanel = new JPanel();
			textPanel.add(new JLabel("输入名称:"));
			textPanel.add(textField);

			JPanel middlePanel = new JPanel();
			middlePanel.add(new JLabel("是否显示:"));
			middlePanel.add(yesButton);
			middlePanel.add(noButton);

			JPanel topPanel = new JPanel();
			topPanel.setLayout(new GridLayout(2, 1));
			topPanel.add(textPanel);
			topPanel.add(middlePanel);
			JButton okButton = new JButton("确定");
			okButton.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent event) {
					dialog.setVisible(false);
					ok = true;
				}
			});
			JButton cancelButton = new JButton("取消");
			cancelButton.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent event) {
					dialog.setVisible(false);
				}
			});
			JPanel buttonPanel = new JPanel();
			buttonPanel.add(okButton);
			buttonPanel.add(cancelButton);

			add(topPanel, BorderLayout.CENTER);
			add(buttonPanel, BorderLayout.SOUTH);
		}
		
		public String[] getResult() {
			String isVisibleStr;
			if (isVisible) {
				isVisibleStr = "true";
			} else {
				isVisibleStr = "false";
			}
			return new String[] { textField.getText(), isVisibleStr };
		}
		
		public boolean showDialog(Component parent, String title) {
			ok=false;
			Frame owner=null;
			if(parent instanceof Frame)
				owner=(Frame)parent;
			else
				owner=(Frame)SwingUtilities.getAncestorOfClass(Frame.class,parent);

			if (dialog == null || dialog.getOwner() != owner) {
				dialog = new JDialog(owner, true);
				dialog.setResizable(false);
				dialog.add(this);
				dialog.pack();
			}

			dialog.setTitle(title);
			TWaverUtil.centerWindow(dialog);
			dialog.setVisible(true);
			if (buttonGroup.getSelection().getActionCommand().equals("yes")) {
				isVisible = true;
			} else if (buttonGroup.getSelection().getActionCommand().equals(
					"no")) {
				isVisible = false;
			}
			
			return ok;
		}
	}
	
	
	// 不需要外围类引用,手动拖动添加链路提示对话框
	private static class LinkDialogPanel extends JPanel {
		private static final long serialVersionUID = -1465801588407452237L;
		private JDialog dialog=null;
		private JTextField nameField=null;
		private JLabel nameLabel=null;
		private JLabel sourceLabel=null;
		private JLabel targetLabel=null;
		private JComboBox sourceComboBox=null;
		private JComboBox targetComboBox=null;
		private boolean ok = false;
		
		public static LinkDialogPanel getInstance(TDataBox dataBox, String strViewID, TopoActionManager topoActionMngr, Link link) {
			Node fromNode = link.getFrom();
			Node toNode = link.getTo();
			if ((fromNode instanceof Group || fromNode instanceof Dummy) 

⌨️ 快捷键说明

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