📄 jfoperationrotate.java
字号:
/**
* $Id:JFOperationRotate.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.geom.Angle;
import com.jfimagine.jfgraph.shape.base.AbstractObject;
import com.jfimagine.jfgraph.shape.base.AbstractShape;
import com.jfimagine.jfgraph.shape.union.JFPage;
/**
* Class JFOperationRotate is used to record a move operation.
*/
public class JFOperationRotate extends JFOperationModifyPorts{
/** rotateCenter The rotate center point. */
private JFPoint m_rotateCenter =new JFPoint();
/** originalAngle An original angle of this object.*/
private double m_originalAngle =0;
/** finalAngle A final angle of this object.*/
private double m_finalAngle =0;
/**
* Constructor.
* @param page A page that used to do opeation.
* @param obj The object has been moved(this object must be AbstractObject or a list of AbstractObject).
* @param rotateCenter The rotate center point.
* @param originalAngle Original angle of the object.
* @param finalAngle Final angle of the object.
*/
public JFOperationRotate(JFPage page,Object obj,JFPoint rotateCenter,double originalAngle, double finalAngle){
m_page =page;
setActionId(JFOperation.OPER_ROTATE);
if (obj instanceof AbstractObject){
AbstractObject aObj =(AbstractObject)obj;
setObjectId(aObj.getObjectId());
List l =new ArrayList();
l.add(aObj);
setModifyPortsList(l);
}else{
List aList =(List)obj;
setObjectList(aList);
setModifyPortsList(aList);
}
m_rotateCenter.setValue(rotateCenter);
m_originalAngle =originalAngle;
m_finalAngle =finalAngle;
}
/**
* Constructor.
* @param page A page that used to do opeation.
* @param obj The object has been moved(this object must be AbstractObject or a list of AbstractObject).
* @param rotateCenter The rotate center point.
* @param x1,y1 The first reference point according to rotate center.
* @param x2,y2 The second reference point according to rotate center.
*/
public JFOperationRotate(JFPage page,Object obj,JFPoint rotateCenter,double x1, double y1, double x2, double y2){
m_page =page;
setActionId(JFOperation.OPER_ROTATE);
if (obj instanceof AbstractObject){
AbstractObject aObj =(AbstractObject)obj;
setObjectId(aObj.getObjectId());
List l =new ArrayList();
l.add(aObj);
setModifyPortsList(l);
}else{
List aList =(List)obj;
setObjectList(aList);
setModifyPortsList(aList);
}
m_rotateCenter.setValue(rotateCenter);
double centerX =rotateCenter.getX();
double centerY =rotateCenter.getY();
m_originalAngle =Angle.getAngle(centerX,centerY,x1,y1,false);
m_finalAngle =Angle.getAngle(centerX,centerY,x2,y2,false);
}
/** undo this operation
* @return new objects selected
*/
public List undo(){
JFPoint center =m_rotateCenter;
double angle =m_finalAngle - m_originalAngle;
List objList =getObjectList();
Iterator it =objList.iterator();
while (it!=null && it.hasNext()){
AbstractShape aShape =(AbstractShape)it.next();
aShape.rotateBy(center.getX(),center.getY(),-angle);
}
//restore ports list first.
restorePorts();
moveRelationalPorts();
return objList;
}
/** redo this operation
* @return new objects selected
*/
public List redo(){
JFPoint center =m_rotateCenter;
double angle =m_finalAngle - m_originalAngle;
List objList =getObjectList();
Iterator it =objList.iterator();
while (it!=null && it.hasNext()){
AbstractShape aShape =(AbstractShape)it.next();
aShape.rotateBy(center.getX(),center.getY(),angle);
}
moveRelationalPorts();
return objList;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -