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

📄 jfoperationmodifyports.java

📁 用Java开发的、实现类似Visio功能的应用程序源码
💻 JAVA
字号:
/**
 *    $Id:JFOperationModifyPorts.java $
 *
 *    Copyright 2004 ~ 2005  JingFei International Cooperation LTD. All rights reserved. *
 */
package com.jfimagine.jfgraph.shape.action;


import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Comparator;
import java.util.Collections;

import com.jfimagine.jfgraph.geom.JFPoint;
import com.jfimagine.jfgraph.shape.base.AbstractObject;
import com.jfimagine.jfgraph.shape.base.AbstractShape;
import com.jfimagine.jfgraph.shape.base.ObjectList;
import com.jfimagine.jfgraph.shape.base.Port;
import com.jfimagine.jfgraph.shape.base.PortList;

import com.jfimagine.jfgraph.shape.union.JFPage;
import com.jfimagine.jfgraph.shape.union.JFLayer;
import com.jfimagine.jfgraph.shape.union.JFGroup;



/**
 *  Class JFOperationModifyPorts is used to record a modify ports operation.
 *  we treat a rotate, move, flip or mirror operation as a modify ports operation.
 */
public abstract class JFOperationModifyPorts extends JFOperation{


	private static final int   OBJTYPE_SINGLE	=1;
	private static final int   OBJTYPE_GROUP	=2;

	protected class ModifyPorts{
	
		/** object id 
	 	*/
		private int m_objectId	=0;
		public int getObjectId(){
			return m_objectId;
		}
		public void setObjectId(int objectId){
			m_objectId	=objectId;
		}


		/** object type, single or group 
	 	*/
		private int m_objectType =0;
		public int getObjectType(){
			return m_objectType;
		}
		public void setObjectType(int objectType){
			m_objectType	=objectType;
		}

		/** current port list.
		 */
		private PortList m_portList	=null;
		public PortList getPortList(){
			return m_portList;
		}

		/** if object type is OBJTYPE_GROUP, recursively store 
	 	*  sub port list here.
	 	*/
		private List m_modifyPortsList		=new ArrayList();
		public List getModifyPortsList(){
			return m_modifyPortsList;
		}
	
		public ModifyPorts(AbstractObject obj){
			m_objectId	=obj.getObjectId();
			if (obj instanceof JFGroup)
				m_objectType	=OBJTYPE_GROUP;
			else
				m_objectType	=OBJTYPE_SINGLE;
		
			try{
				m_portList	=(PortList)(((AbstractShape)obj).getPortList().clone());
			}catch(Exception e){ 
			}
		}
	}


	/** a modify port list stored.*/
	protected List m_modifyPortList	=new ArrayList();


	/** set a modify ports list by an abstractObject list **/
	protected void setModifyPortsList(List objList){
		setModifyPortsList(objList,m_modifyPortList);
	}

	/** set a modify ports list by an abstractObject list **/
	protected void setModifyPortsList(List objList, List modifyPortsList){
		Iterator it	=objList.iterator();
		while (it!=null && it.hasNext()){ 
			AbstractObject obj	=(AbstractObject)it.next();
			ModifyPorts modifyPorts	=new ModifyPorts(obj);
			modifyPortsList.add(modifyPorts); 
			if (obj instanceof JFGroup){
				JFGroup g	=(JFGroup)obj;
				//recursively get port list from group's sub list.
				setModifyPortsList(g.getList().getList(),modifyPorts.getModifyPortsList());
			}
		}
		
	}

	//set an object's port list by a new port list.	
	private void setPortList(AbstractObject obj, PortList portList){
		AbstractShape aShape	=(AbstractShape)obj;

		try{		
			Iterator it	=portList.getList().iterator();
			while (it!=null && it.hasNext()){
				Port newPort	=(Port)it.next();
				Port oldPort	=aShape.getPortByObjectId(newPort.getObjectId());
			
				oldPort.setAttachedListStr(newPort.getAttachedListStr());
				oldPort.attachRealPort(m_page.getCurrentLayer().getShapeList());
			}
		}catch(Exception e){
		}
	}
        
        /** to find each modify ports object from a list, then restore them(ports list and its attached) into each object.
	 */
	protected  void restorePorts(){
		restorePorts(m_modifyPortList);
	}


        /** to find each modify ports object from a list, then restore them(ports list and its attached) into each object.
	 *  @param modifyPortsList A ModifyPorts object list.
	 */
	protected  void restorePorts(List modifyPortsList){


		if (modifyPortsList==null || modifyPortsList.size()==0)
			return;

			
		Iterator it	=modifyPortsList.iterator();
		while (it!=null && it.hasNext()){
			Object obj	=it.next();
			if (obj instanceof ModifyPorts){
				//restore ports list from current ModifyPorts object.
				ModifyPorts modifyPorts =(ModifyPorts)obj;
				int objectId	=modifyPorts.getObjectId();
				int objectType	=modifyPorts.getObjectType();
				PortList portList =modifyPorts.getPortList();


				AbstractObject aObj	=getObject(objectId,false);
				if (aObj!=null){
					setPortList(aObj,portList);
					if (objectType==OBJTYPE_GROUP){
						//recursively restore ports list from current object's sub ports list.
						restorePorts(modifyPorts.getModifyPortsList());
					}
				}
			}	
		}
		
	}

       
        //get current top-level object list in m_modifyPortList.
	/*protected List getCurrentObjectList(){
		//return a selection of objects.
		List ret	=new ArrayList();
		Iterator it	=m_modifyPortList.iterator();
		while (it!=null && it.hasNext()){
			ModifyPorts modifyPorts =(ModifyPorts)it.next();
			int objectId	=modifyPorts.getObjectId();
			
			AbstractObject obj=getObject(objectId,false);
			if (obj!=null){
				ret.add(obj);
			}
		}

		return ret;
	} */






	
}

⌨️ 快捷键说明

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