package org.infosec.ismp.applet.manager.component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import org.infosec.ismp.applet.manager.application.action.ActionInfo; import org.infosec.ismp.applet.manager.model.NodeModel; import org.infosec.ismp.applet.manager.model.TopoDatabaseModel; import org.infosec.ismp.applet.manager.model.TopoSensorModel; import org.infosec.ismp.applet.manager.model.TopoWeblogicModel; import org.infosec.ismp.applet.manager.utilities.TopoConst; import twaver.DataBoxSelectionEvent; import twaver.DataBoxSelectionListener; import twaver.Element; import twaver.MovableFilter; import twaver.Node; import twaver.ResizableFilter; import twaver.ResizableNode; import twaver.ShapeLink; import twaver.ShapeNode; import twaver.TDataBox; import twaver.TSubNetwork; import twaver.network.TNetwork; @SuppressWarnings("serial") public class TopoNetwork extends TNetwork{ /** * 编辑状态 */ private boolean isEditable = true; public TopoNetwork(TDataBox box){ super(box); init(); } /** * 设置是否启用键盘事件 * @param b */ public void setKeyboard(boolean b) { this.setEnableDeleteWithKeyboard(b);//键盘可以删除 } /** * 初始化网络面板 */ private void init() { this.setEnableUndoRedoWithKeyboard(true);//键盘对重做和恢复成效 this.setEnsureVisibleOnSelected(false);//确保所选内容可见 this.setEnableDeleteWithKeyboard(true);//键盘可以删除 this.setEnableCopyPasteWithKeyboard(false);//键盘可以Copy/Paste this.setEnableDoubleClickToUp(false);//禁掉twaver的双击事件 this.setEnableAttachmentDefaultAction(false); //设备编辑文本过滤器事件 // this.setElementLabelEditableFilter(new EditableFilter(){ // public boolean isEditable(Element element) { // return isEditable; // } // }); //设备移动过滤器事件 this.setMovableFilter(new MovableFilter(){ public boolean isMovable(Element element) { return isEditable; } }); //设备大小过滤器 this.setResizableFilter(new ResizableFilter(){ public boolean isResizable(Element element) { if(!isEditable){ return false; } return element instanceof ResizableNode || element instanceof ShapeLink || element instanceof ShapeNode; } }); /** * 自定义双击事件 */ this.addElementDoubleClickedActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Element element = (Element)e.getSource(); if(element instanceof NodeModel) { NodeModel node = (NodeModel)element; if(node instanceof TopoDatabaseModel) { ActionInfo.actionDatabaseInfo(node); } else if(node instanceof TopoSensorModel) { ActionInfo.actionSensorInfo(node); } else if(node instanceof TopoWeblogicModel) { ActionInfo.actionWeblogicInfo(node); } else { ActionInfo.actionDeviceInfo(node); } } } }); this.setPopupMenuGenerator(new TopoPopupMenuGenerator(this)); this.getSelectionModel().addDataBoxSelectionListener( new DataBoxSelectionListener() { public void selectionChanged(DataBoxSelectionEvent e) { //Element element = (Element)e.getSource(); Element lastSelectedElement = TopoConst.BOX.getLastSelectedElement(); if(lastSelectedElement == null || !(lastSelectedElement instanceof Node)) { return; } Element parent = lastSelectedElement.getParent(); if(parent == null) { TopoNetwork.this.setCurrentSubNetwork(null); } if(parent instanceof TSubNetwork) { if(parent != null) { TopoNetwork.this.setCurrentSubNetwork((TSubNetwork)parent); } else { TopoNetwork.this.setCurrentSubNetwork(null); } } } }); } }