jfoperationremove.java

来自「用Java开发的、实现类似Visio功能的应用程序源码」· Java 代码 · 共 96 行

JAVA
96
字号
/**
 *    $Id:JFOperationRemove.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 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.union.JFPage;
import com.jfimagine.jfgraph.shape.union.JFLayer;
import com.jfimagine.jfgraph.shape.union.JFGroup;

/**
 *  Class JFOperationRemove is used to record a remove operation.
 */
public class JFOperationRemove extends JFOperation{

	/** a cloned object list */
	private ObjectList m_objectList;

	/**  
	 *    Constructor.
	 *    @param page A page that used to do opeation.
	 *    @param objList An object list to be removed.
	 */        
        public JFOperationRemove(JFPage page,ObjectList objList){
        	m_page	=page;
		setActionId(JFOperation.OPER_REMOVE);
		try{
			m_objectList	=(ObjectList)objList.clone();
		}catch(Exception e){
			m_objectList	=null;
		}
	}

	/** undo this operation 
	 *  @return new objects selected
	 */
	public List undo(){

		if (m_objectList==null || m_objectList.size()==0)
			return null;
		
		try{
			ObjectList objList =(ObjectList)(m_objectList.clone());
			ObjectList currShapeList=m_page.getCurrentLayer().getShapeList();
			
			ObjectList attachToList =new ObjectList();
			attachToList.getList().addAll(objList.getList());
			attachToList.getList().addAll(currShapeList.getList());
						
			//bind real ports.
			objList.attachRealPort(attachToList); 
			
			//re-set parent objects.
			Iterator  it	=objList.getList().iterator();
			while (it!=null && it.hasNext()){
				AbstractShape shape	=(AbstractShape)it.next();
				shape.setParent();
			}
			objList.setZoomScale(m_page.getZoomScale());
			
			currShapeList.getList().addAll(objList.getList());
			return objList.getList();
		}catch(Exception e){
			return null;
		}
	}


	/** redo this operation
	 *  @return new objects selected
	 */
	public List redo(){

		try{
			m_page.getCurrentLayer().getShapeList().removeAll(m_objectList.getList());
		}catch(Exception e){
		}

		return null;
	}

	
}

⌨️ 快捷键说明

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