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

📄 displaymanager.java

📁 无线通信的主要编程软件,是无线通信工作人员的必备工具,关天相关教程我会在后续传上.
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
    //*************************************************************    //*************************************************************    public void AddNodePainter(NodePainter painter)    {	nodePainters.add(painter);//add the painters to the painter list    }    public void RemoveNodePainter(NodePainter painter)    {	nodePainters.remove(painter);//add the painters to the painter list    }    public void AddEdgePainter(EdgePainter painter)    {	edgePainters.add(painter);//add the painters to the painter list    }    public void RemoveEdgePainter(EdgePainter painter)    {	edgePainters.remove(painter);//add the painters to the painter list    }    public void AddScreenPainter(ScreenPainter painter)    {	screenPainters.add(painter);//add the painters to the painter list    }    public void RemoveScreenPainter(ScreenPainter painter)    {	screenPainters.remove(painter);//add the painters to the painter list    }    //------------------------------------------------------------------------    //*****---TRIGGER NODE CLICKED EVENT---******//    //this function sends an event to all node clicked listeners    protected void TriggerNodeClickedEvent(Integer pNodeNumber)    {	for(int index = 0; index < NodeClickedEventListeners.size(); index++)	    {		NodeClickedEvent e = new NodeClickedEvent(this, pNodeNumber, Calendar.getInstance().getTime());		((NodeClickedEventListener)NodeClickedEventListeners.get(index)).NodeClicked(e);	    }    }    //*****---TRIGGER NODE CLICKED EVENT---******//    //------------------------------------------------------------------------    //------------------------------------------------------------------------    //*****---TRIGGER EDGE CLICKED EVENT---******//    //this function sends an event to all edge-clicked listeners    protected void TriggerEdgeClickedEvent(Integer pSourceNodeNumber, Integer pDestinationNodeNumber)    {	for(int index = 0; index < EdgeClickedEventListeners.size(); index++)	    {		EdgeClickedEvent e = new EdgeClickedEvent(this, pSourceNodeNumber, pDestinationNodeNumber, Calendar.getInstance().getTime());		((EdgeClickedEventListener)EdgeClickedEventListeners.get(index)).EdgeClicked(e);	    }    }    //*****---TRIGGER EDGE CLICKED EVENT---******//    //------------------------------------------------------------------------    //------------------------------------------------------------------------    //*****---DRAG NEAREST NODE---******//    //when in select mode, the mouse draw will drag the nearest node with it    public void DragNearestNode(int startX, int startY, MouseEvent e)    {	LocationAnalyzer.NodeInfo selectedNode = FindNearestNode(startX, startY);	if(selectedNode!=null)	    {   		selectedNode.SetX(MainClass.mainFrame.GetGraphDisplayPanel().ScaleScreenXCoordToNodeCoord(e.getX()).doubleValue());		selectedNode.SetY(MainClass.mainFrame.GetGraphDisplayPanel().ScaleScreenYCoordToNodeCoord(e.getY()).doubleValue());		selectedNode.SetFixed(true);		// selectedNode.RecordLocation();		this.RefreshScreenNow();	    }    }    //*****---DRAG NEAREST NODE---******//    //    //*****---SCROLL WITH MOUSE DRAG---******//    //------------------------------------------------------------------------    //------------------------------------------------------------------------    //*****---SCROLL WITH MOUSE DRAG---******//    //when in hand mode, the mouse draw will scroll the screen    public void ScrollWithMouseDrag(int startX, int startY, MouseEvent e)    {	int endX = e.getX();	int endY = e.getY();	Point currentPosition = MainClass.mainFrame.GetMainScrollPane().getViewport().getViewPosition();	Point newPosition = new Point(currentPosition.x +(endX-startX), currentPosition.y +(endY-startY));	MainClass.mainFrame.GetMainScrollPane().getViewport().setViewPosition(newPosition);    }    //*****---SCROLL WITH MOUSE DRAG---******//    //------------------------------------------------------------------------    //------------------------------------------------------------------------    //*****---ZOOM TO MOUSE DRAG RECTANGLE---******//    //when in zoom mode, the mouse drag will zoom to the selected rectangle    public void ZoomToMouseDragRectangle(int startX, int startY, MouseEvent e)    {	int x,y, width, height;	double scale;	Dimension graphPanelSize = MainClass.mainFrame.GetGraphDisplayPanel().getSize();	Dimension scrollPaneSize = MainClass.mainFrame.GetMainScrollPane().getSize();	int endX = e.getX();	int endY = e.getY();	if(startX < endX)//use the edge of the rectangle that is longer in proportion that the proportion of the window size	    {		x = startX;		width = endX-startX;	    }	else	    {		x = endX;		width = startX - endX;	    }	if(startY < endY)	    {		y = startY;		height = endY-startY;	    }	else	    {		y = endY;		height = startY - endY;	    }	if( (height==0) || (width==0)) return;	if(width/height > graphPanelSize.getWidth()/graphPanelSize.getHeight())//zoom so that the longer of the width/height of the new rectangle is in view (Since the rect will not be the same proportion as the window)	    {		scale = scrollPaneSize.getWidth()/width;	    }	else	    {		scale = scrollPaneSize.getHeight()/height;	    }	scale = scale*MainClass.displayManager.GetScaleFactor();	this.MultiplyGraphDisplayPanelSize(scale);	MainClass.mainFrame.GetMainScrollPane().getViewport().setViewPosition(new Point(x,y));    }                                                //*****---ZOOM TO MOUSE DRAG RECTANGLE---******//    //*****---FIND NEAREST NODE---******//    public LocationAnalyzer.NodeInfo FindNearestNode(int x, int y)    {	LocationAnalyzer.NodeInfo selectedNode = null;	LocationAnalyzer.NodeInfo tempNode = null;	double dist = Double.MAX_VALUE;	double bestdist = Double.MAX_VALUE;	double xDist, yDist;	GraphDisplayPanel display = MainClass.mainFrame.GetGraphDisplayPanel();	for(Enumeration nodes = MainClass.locationAnalyzer.GetNodeInfo(); nodes.hasMoreElements();) 	    {		tempNode = (LocationAnalyzer.NodeInfo)nodes.nextElement();		//			synchronized(tempNode)		//			{		xDist = Math.pow(display.ScaleNodeXCoordToScreenCoord(tempNode.GetX()) - x,2.0);		yDist = Math.pow(display.ScaleNodeYCoordToScreenCoord(tempNode.GetY()) - y,2.0);		dist = Math.sqrt(xDist + yDist);		//			}		if (dist < bestdist) {		    selectedNode = tempNode;		    bestdist = dist;		}	    }	return selectedNode;    }    //*****---FIND NEAREST NODE---******//    //*****---FIND NEAREST EDGE---******//    public LocationAnalyzer.EdgeInfo FindNearestEdge(int x, int y)    {	LocationAnalyzer.EdgeInfo selectedEdge = null;	LocationAnalyzer.EdgeInfo tempEdge = null;	double dist = Double.MAX_VALUE;	double bestdist = Double.MAX_VALUE;	GraphDisplayPanel display = MainClass.mainFrame.GetGraphDisplayPanel();	for(Enumeration edges = MainClass.locationAnalyzer.GetEdgeInfo(); edges.hasMoreElements();) 	    {		double x1, y1, x2, y2, xCenter, yCenter;		tempEdge = (LocationAnalyzer.EdgeInfo)edges.nextElement();		//		synchronized(tempEdge)		//		{		Integer sourceNodeNumber = tempEdge.GetSourceNodeNumber();		Integer destinationNodeNumber = tempEdge.GetDestinationNodeNumber();		x1=MainClass.locationAnalyzer.GetX(sourceNodeNumber);		y1=MainClass.locationAnalyzer.GetY(sourceNodeNumber);		x2=MainClass.locationAnalyzer.GetX(destinationNodeNumber);		y2=MainClass.locationAnalyzer.GetY(destinationNodeNumber);		xCenter= display.ScaleNodeXCoordToScreenCoord((x1 + x2)/2);		yCenter= display.ScaleNodeYCoordToScreenCoord((y1 + y2)/2);		dist = Math.sqrt(Math.pow(xCenter-x,2) + Math.pow(yCenter-y,2));		if (dist < bestdist) {		    selectedEdge = tempEdge;		    bestdist = dist;		}		//	}	    }	return selectedEdge;    }    //*****---FIND NEAREST EDGE---******//  //------------------------------------------------------------------------  //*****---DISPLAY NODE PROPERTY DIALOG---******//  //this function displays the dialog showing all node properties    protected void DisplayNodePropertyDialog(Integer pNodeNumber)    {	// so when the user clicks a node, only want one dialog box to show up	// so just store a boolean in nodeInfo indicating whether a dialog box exists for that node	NodeInfo nodeInfo = (NodeInfo)proprietaryNodeInfo.get(pNodeNumber);	if (nodeInfo.GetDialogShowing()) {	    JOptionPane.showMessageDialog(null, "already exists " + pNodeNumber);	    return;	}	nodeInfo.SetDialogShowing (true);	TabbedDialog nodeDialog = new TabbedDialog("Node Properties");			ActivePanel currentPanel;	NodeDialogContributor listener;	for(Enumeration e = nodeDialogContributors.elements(); e.hasMoreElements();)	    {		listener = ((NodeDialogContributor)e.nextElement());		currentPanel = listener.GetProprietaryNodeInfoPanel(pNodeNumber);		if(currentPanel != null)//if you don't have proprietary info, return a null panel		    {			if(currentPanel.GetCancelInfoDialog())			    {//if you don't want a node dialog to show up, return an Active Component with this set to true				return;			    }			nodeDialog.AddActivePanel(currentPanel.GetTabTitle(), currentPanel);		    }	    }    	// tabbed dialog needs to be able to access the node number	// 1.) when dialog box closes, need to change the color of the node	//     - actually to do this, could access from the tab pane	// 2.) to change the nodeinfo.dialogshowing variable, need a handle	nodeDialog.nodeNumber = pNodeNumber;	nodeInfo.SetColor(Color.red);    	nodeDialog.setModal(false);	nodeDialog.show();    }    // dchi - only way to access the nodeinfo for call from tabbedDialog    public void ChangeNodeColor(Integer pNodeNumber) {	NodeInfo nodeInfo = (NodeInfo)proprietaryNodeInfo.get(pNodeNumber);	nodeInfo.SetColor(Color.green);    }    public void SetDialogShowing(Integer pNodeNumber, boolean isShowing) {	NodeInfo nodeInfo = (NodeInfo)proprietaryNodeInfo.get(pNodeNumber);	nodeInfo.SetDialogShowing(isShowing);    }    //*****---DISPLAY NODE PROPERTY DIALOG---******//    //------------------------------------------------------------------------    //------------------------------------------------------------------------    //*****---DISPLAY EDGEPROPERTY DIALOG---******//    //this function displays the dialog showing all edge properties    protected void DisplayEdgePropertyDialog(Integer pSourceNodeNumber, Integer pDestinationNodeNumber)    {	TabbedDialog edgeDialog = new TabbedDialog("Edge Properties");			ActivePanel currentPanel;	for(Enumeration e = edgeDialogContributors.elements(); e.hasMoreElements();)	    {		currentPanel = ((EdgeDialogContributor)e.nextElement()).GetProprietaryEdgeInfoPanel(pSourceNodeNumber, pDestinationNodeNumber);		if(currentPanel != null)//if you don't have proprietary info, return a null panel		    {			if(currentPanel.GetCancelInfoDialog())			    {//if you don't want a node dialog to show up, return an Active Component with this set to true				return;			    }			edgeDialog.AddActivePanel(currentPanel.GetTabTitle(),currentPanel);		    }	    }	edgeDialog.setModal(false);	edgeDialog.show();    }    //*****---DISPLAY EDGEPROPERTY DIALOG---******//    //------------------------------------------------------------------------    //*****---refresh screen NOW---******//    //this function will redraw the main screen with all nodes and edges in current positions    public static void RefreshScreenNow()    {	synchronized (MainClass.mainFrame) {	    MainClass.mainFrame.repaint();	}    }    //*****---refresh screen NOW---******//  //-----------------------------------------------------------------------  //*****---MultiplyGraphDisplayPanelSize---******//    public static void MultiplyGraphDisplayPanelSize(double factor)    {	Insets inset = MainClass.mainFrame.GetMainScrollPane().getInsets();	 	Dimension d = MainClass.mainFrame.GetMainScrollPane().getSize();		int x = (int)( (d.width-(inset.left+inset.right))*factor);	int y = (int)( (d.height-(inset.top+inset.bottom))*factor);	MainClass.mainFrame.GetGraphDisplayPanel().setSize(new Dimension(x, y));//this line makes the scroll pane put scroll bars if necessary	MainClass.mainFrame.GetGraphDisplayPanel().setPreferredSize(new Dimension(x, y));//this line changes the size, and the node coordinates are automatically rescaled	MainClass.mainFrame.GetMainScrollPane().setViewportView(MainClass.mainFrame.GetGraphDisplayPanel());//this line allows the scroll pane to reevaluate whether scroll bars are needed    }    //*****---MultiplyGraphDisplayPanelSize---******//

⌨️ 快捷键说明

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