📄 treeapplet.java
字号:
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 + -