jfoperationflip.java

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

JAVA
87
字号
/**
 *    $Id:JFOperationFlip.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.union.JFPage;

/**
 *  Class JFOperationFlip is used to record a flip operation.
 */
public class JFOperationFlip extends JFOperationModifyPorts{


	/**a base y coordinate for flip*/
	private double m_baseY=0;

	/**  
	 *    Constructor.
	 *    @param page A page that used to do opeation.
	 *    @param obj The object has been flipped(this object must be AbstractObject or a list of AbstractObject).
	 *    @param baseY a base y coordinate for flip.
	 */        
        public JFOperationFlip(JFPage page,Object obj,double baseY){
        	m_page	=page;
		setActionId(JFOperation.OPER_FLIP);
		
		if (obj instanceof AbstractObject){
			AbstractObject aObj	=(AbstractObject)obj;
			setObjectId(aObj.getObjectId());
			List l	=new ArrayList();
			l.add(obj);
			setModifyPortsList(l);
		}else{
			List aList	=(List)obj;
			setObjectList(aList);
			setModifyPortsList(aList);
		}
		m_baseY	=baseY;
	}


	/** undo this operation
	 *  @return new objects selected
	 */
	public List undo(){
		List objList	=getObjectList();
		Iterator it	=objList.iterator();
		while (it!=null && it.hasNext()){
			AbstractShape	aShape	=(AbstractShape)it.next();
			aShape.flipBy(m_baseY);
		}

		//restore ports list first.
		restorePorts();
		moveRelationalPorts();
						
		return objList;
	}


	/** redo this operation
	 *  @return new objects selected
	 */
	public List redo(){
		List objList	=getObjectList();
		Iterator it	=objList.iterator();
		while (it!=null && it.hasNext()){
			AbstractShape	aShape	=(AbstractShape)it.next();
			aShape.flipBy(m_baseY);
		}

		moveRelationalPorts();
		return objList;
	}

}

⌨️ 快捷键说明

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