📄 displaymanager.java
字号:
//----------------------------------------------------------------------- public void PaintUnderScreen(Graphics g) { ScreenPainter screenPainter; for(Enumeration painters = screenPainters.elements(); painters.hasMoreElements();) { screenPainter = (ScreenPainter)painters.nextElement(); screenPainter.PaintScreenBefore(g); } } public void PaintOverScreen(Graphics g) { ScreenPainter screenPainter; for(Enumeration painters = screenPainters.elements(); painters.hasMoreElements();) { screenPainter = (ScreenPainter)painters.nextElement(); screenPainter.PaintScreenAfter(g); } } public void PaintAllNodes(Integer pNodeNumber, int x1, int y1, int x2, int y2, Graphics g) { NodePainter nodePainter; NodeInfo displayInfo = (NodeInfo)proprietaryNodeInfo.get(pNodeNumber); if( (displayInfo == null) || (displayInfo.GetDisplayThisNode() == false) ) return; for(Enumeration painters = nodePainters.elements(); painters.hasMoreElements();) { nodePainter = (NodePainter)painters.nextElement(); nodePainter.PaintNode(pNodeNumber, x1, y1, x2, y2, g); } } public void PaintAllEdges(Integer pSourceNodeNumber, Integer pDestinationNodeNumber, int x1, int y1, int x2, int y2, Graphics g) { EdgePainter edgePainter; NodeInfo sourceDisplayInfo = (NodeInfo)proprietaryNodeInfo.get(pSourceNodeNumber); NodeInfo destinationDisplayInfo= (NodeInfo)proprietaryNodeInfo.get(pDestinationNodeNumber); if( (sourceDisplayInfo == null) || (destinationDisplayInfo == null) || (sourceDisplayInfo.GetDisplayThisNode() == false) || (destinationDisplayInfo.GetDisplayThisNode() == false)) return; for(Enumeration painters = edgePainters.elements(); painters.hasMoreElements();) { edgePainter = (EdgePainter)painters.nextElement(); edgePainter.PaintEdge(pSourceNodeNumber, pDestinationNodeNumber, x1, y1, x2, y2, g); } } //-------------------------------------------------------------------------- //*****---PAINT---******// public void PaintNode(Integer pNodeNumber, int x1, int y1, int x2, int y2, Graphics g) { NodeInfo nodeInfo = (NodeInfo)proprietaryNodeInfo.get(pNodeNumber); //g.setColor(nodeInfo.GetColor()); //g.setColor(new Color(0, 153, 102)); if (pNodeNumber == MainClass.mainFrame.focusedNode) { g.setColor(new Color(255, 255, 0)); } else { g.setColor(new Color(0, 153, 102)); } g.fillOval(x1, y1, x2-x1, y2-y1); if(ObjectMaintainer.isBase(pNodeNumber)){ g.drawImage(nodeInfo.GetImage(), x1, y1, x2-x1+100, y2-y1+100, null); } if(nodeInfo.GetDisplayNodeNumber() == true && pNodeNumber.intValue() != 121) { g.setColor(MainFrame.labelColor); g.setFont(MainFrame.boldFont); String s = pNodeNumber.toString(); g.drawString(s, (x1+x2)/2, y2-(y2-y1)/4 - 20); } } void drawLine(Graphics g, int x1, int y1, int x2, int y2, int lineWidth) { if (lineWidth == 1) g.drawLine(x1, y1, x2, y2); else { double angle; double halfWidth = ((double)lineWidth)/2.0; double deltaX = (double)(x2 - x1); double deltaY = (double)(y2 - y1); if (x1 == x2) angle=Math.PI; else angle=Math.atan(deltaY/deltaX)+Math.PI/2; int xOffset = (int)(halfWidth*Math.cos(angle)); int yOffset = (int)(halfWidth*Math.sin(angle)); int[] xCorners = { x1-xOffset, x2-xOffset+1, x2+xOffset+1, x1+xOffset }; int[] yCorners = { y1-yOffset, y2-yOffset, y2+yOffset+1, y1+yOffset+1 }; g.fillPolygon(xCorners, yCorners, 4); } } public void PaintEdge(Integer pSourceNodeNumber, Integer pDestinationNodeNumber, int x1, int y1, int x2, int y2, Graphics g) { g.setColor(Color.red); drawLine(g, x1, y1, x2, y2, 1); } //*****---run---******// //this function runs in the background and repaints the screen //at the user determined refresh rate public void run() { while(!stopped) try { sleep(refreshRate); RefreshScreenNow(); } catch(Exception e) { e.printStackTrace(); } } //*****---run---******// //------------------------------------------------------------------------ //*****---GET/SET FUNCTIONS---******// public static double GetScaleFactor() { Dimension d1 = MainClass.mainFrame.GetMainScrollPane().getSize(); Insets inset = MainClass.mainFrame.GetMainScrollPane().getInsets(); Dimension d2 = MainClass.mainFrame.GetGraphDisplayPanel().getSize(); return (d2.getHeight()+(inset.top+inset.bottom))/d1.getHeight(); } public static long GetRefreshRate(){return refreshRate;} public static void SetRefreshRate(long pRefreshRate){refreshRate = pRefreshRate; } public boolean GetSelectMode(){return selectMode;} public boolean GetHandMode(){return handMode;} public boolean GetZoomMode(){return zoomMode;} public void SetSelectMode(boolean b){selectMode=b;} public void SetHandMode(boolean b){handMode=b;} public void SetZoomMode(boolean b){zoomMode=b;} public NodeInfo GetNodeInfo(Integer nodeNumber){return (NodeInfo)proprietaryNodeInfo.get(nodeNumber);} public EdgeInfo GetEdgeInfo(Integer sourceNumber, Integer destinationNumber){return (EdgeInfo)proprietaryEdgeInfo.get(sourceNumber,destinationNumber);} public Enumeration GetNodeInfo(){return proprietaryNodeInfo.elements();} public Enumeration GetEdgeInfo(){return proprietaryEdgeInfo.elements();} //*****---GET/SET FUNCTIONS---******// //------------------------------------------------------------------------ //*****---Thread commands---******// public void start(){ try { System.err.println("Starting DisplayManager thread..."); refreshScreenThread = new Thread(this); refreshScreenThread.start(); } catch (Exception e) { e.printStackTrace(); } } // public void stop(){ try{ refreshScreenThread.stop();} catch(Exception e){e.printStackTrace();}} public static void sleep(long p){ try{ refreshScreenThread.sleep(p);} catch(Exception e){e.printStackTrace();}} public static void setPriority(int p) { try{refreshScreenThread.setPriority(p);} catch(Exception e){e.printStackTrace();}} //*****---Thread commands---******// //------------------------------------------------------------------------ //*****---Node Created---******// //this function defines what you do when a new node is created public synchronized void NodeCreated(NodeEvent e) { proprietaryNodeInfo.put(e.GetNodeNumber(), new NodeInfo(e)); } //*****---Node Created---******// //------------------------------------------------------------------------ //------------------------------------------------------------------------ //*****---Node Deleted---******// //this function defines what you do when a new node is deleted public synchronized void NodeDeleted(NodeEvent e) { Integer deletedNodeNumber = e.GetNodeNumber();//you probably want to delete the info pbject to track the data of this new node proprietaryNodeInfo.remove(deletedNodeNumber); } //*****---Node Deleted---******// //------------------------------------------------------------------------ //------------------------------------------------------------------------ //*****---Edge Created---******// //this function defines what you do when a new edge is created public synchronized void EdgeCreated(EdgeEvent e) { Integer sourceNodeNumber = e.GetSourceNodeNumber(); Integer destinationNodeNumber = e.GetDestinationNodeNumber();//you probably want to create a new info pbject to track the data of this new node proprietaryEdgeInfo.put(sourceNodeNumber, destinationNodeNumber, new EdgeInfo(sourceNodeNumber, destinationNodeNumber)); } //*****---Edge Created---******// //------------------------------------------------------------------------ //------------------------------------------------------------------------ //*****---Edge Deleted---******// //this function defines what you do when a new edge is deleted public synchronized void EdgeDeleted(EdgeEvent e) { Integer sourceNodeNumber = e.GetSourceNodeNumber(); Integer destinationNodeNumber = e.GetDestinationNodeNumber();//you probably want to create a new info pbject to track the data of this new node proprietaryEdgeInfo.remove(sourceNodeNumber, destinationNodeNumber); } //*****---EdgeDeleted---******// //------------------------------------------------------------------------ //------------------------------------------------------------------------ //*****---GRAPHICS COMMANDS---******// public void NodeClicked(NodeClickedEvent e){} public void EdgeClicked(EdgeClickedEvent e){} public ActivePanel GetProprietaryNodeInfoPanel(Integer pNodeNumber) { ProprietaryNodeInfoPanel panel = new ProprietaryNodeInfoPanel((NodeInfo)proprietaryNodeInfo.get(pNodeNumber)); return (ActivePanel)panel; } public ActivePanel GetProprietaryEdgeInfoPanel(Integer pSourceNodeNumber, Integer pDestinationNodeNumber) { return null; /* ProprietaryNodeInfoPanel panel = new ProprietaryNodeInfoPanel((NodeInfo)proprietaryNodeInfo.get(pEdge.GetSource().GetNodeNumber())); return (ActivePanel)panel;*/ } public void ShowPropertiesDialog() { StandardDialog newDialog = new StandardDialog(new DisplayPropertiesPanel()); newDialog.show(); } //*****---GRAPHICS COMMANDS---******// //------------------------------------------------------------------------ //********************************************************* //********************************************************* //********************************************************* //NODE INFO CLASS //this class should hold any special information you hold about the //node, for example time created or a history of the number of packets //forwarded through this mote or whetever it is you are studying public class NodeInfo { protected Integer nodeNumber; protected ImageIcon imageHelper; protected Image image; // dchi protected Color nodeColor; protected boolean isShowing; protected double imageWidth, imageHeight; protected boolean displayThisNode; protected boolean displayNodeNumber; protected boolean fitOnScreen; protected String infoString; public NodeInfo(NodeEvent e) { nodeNumber = e.GetNodeNumber(); // dchi nodeColor = Color.green; isShowing = false; imageHelper = new ImageIcon("images/base.gif","images/base.gif"); image = imageHelper.getImage(); imageWidth = 5;//note that this width and height is in node coordinates (hence it scales automatically with the size of the network, but must be initialized properly) imageHeight = 5; displayThisNode = true; displayNodeNumber = true; fitOnScreen = true; } // dchi public void SetColor(Color newColor) {nodeColor = newColor;} public Color GetColor() { return nodeColor;} public void SetDialogShowing (boolean value) { isShowing = value; } public boolean GetDialogShowing () { return isShowing; } public Integer GetNodeNumber(){return nodeNumber;} public ImageIcon GetImageHelper(){ return imageHelper;} public Image GetImage(){ return image;} public double GetImageWidth(){ return imageWidth;} public double GetImageHeight(){ return imageHeight;} public boolean GetDisplayThisNode(){ return displayThisNode;} public boolean GetDisplayNodeNumber(){ return displayNodeNumber;} public boolean GetFitOnScreen(){ return fitOnScreen;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -