📄 jfoperationmodifyports.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 + -