1 8 package com.nightlabs.editor2d.command; 9 10 import java.util.HashMap ; 11 import java.util.Iterator ; 12 import java.util.Map ; 13 14 import org.eclipse.draw2d.geometry.Point; 15 import org.eclipse.gef.EditPart; 16 import org.eclipse.gef.commands.Command; 17 18 import com.nightlabs.editor2d.DrawComponent; 19 import com.nightlabs.editor2d.EditorPlugin; 20 import com.nightlabs.editor2d.request.EditorRotateCenterRequest; 21 import com.nightlabs.editor2d.util.EditorUtil; 22 23 24 public class RotateCenterCommand 25 extends Command 26 { 27 protected Map dc2RotationCenter; 28 protected EditorRotateCenterRequest request; 29 30 protected Point rotationCenter; 31 public Point getRotationCenter() { 32 return rotationCenter; 33 } 34 public void setRotationCenter(Point rotationCenter) { 35 this.rotationCenter = rotationCenter; 36 } 37 38 protected boolean multiple = false; 39 public boolean isMultiple() { 40 return multiple; 41 } 42 public void setMultiple(boolean multiple) { 43 this.multiple = multiple; 44 } 45 46 public RotateCenterCommand(EditorRotateCenterRequest request) 47 { 48 super(); 49 this.request = request; 50 this.multiple = request.isMultiple(); 51 setLabel(EditorPlugin.getResourceString("command.rotate.center")); 52 } 53 54 public void execute() 55 { 56 dc2RotationCenter = new HashMap (request.getEditParts().size()); 57 for (Iterator it = request.getEditParts().iterator(); it.hasNext(); ) 58 { 59 EditPart editPart = (EditPart) it.next(); 60 DrawComponent dc = (DrawComponent) editPart.getModel(); 61 Point oldRotationCenter = new Point(dc.getRotationX(), dc.getRotationY()); 62 dc2RotationCenter.put(dc, oldRotationCenter); 63 if (isMultiple()) { 64 dc.setTmpRotationX(rotationCenter.x); 65 dc.setTmpRotationY(rotationCenter.y); 66 } else { 67 dc.setRotationX(rotationCenter.x); 68 dc.setRotationY(rotationCenter.y); 69 } 70 } 71 EditorUtil.selectEditParts(request.getEditParts()); 72 } 73 74 public void redo() 75 { 76 for (Iterator it = dc2RotationCenter.keySet().iterator(); it.hasNext(); ) 77 { 78 DrawComponent dc = (DrawComponent) it.next(); 79 if (isMultiple()) { 80 dc.setTmpRotationX(rotationCenter.x); 81 dc.setTmpRotationY(rotationCenter.y); 82 } else { 83 dc.setRotationX(rotationCenter.x); 84 dc.setRotationY(rotationCenter.y); 85 } 86 } 87 EditorUtil.selectEditParts(request.getEditParts()); 88 } 89 90 public void undo() 91 { 92 for (Iterator it = dc2RotationCenter.keySet().iterator(); it.hasNext(); ) 93 { 94 DrawComponent dc = (DrawComponent) it.next(); 95 Point oldRotationCenter = (Point) dc2RotationCenter.get(dc); 96 if (isMultiple()) { 97 dc.setTmpRotationX(DrawComponent.ROTATION_X_DEFAULT); 98 dc.setTmpRotationY(DrawComponent.ROTATION_Y_DEFAULT); 99 } else { 100 dc.setRotationX(oldRotationCenter.x); 101 dc.setRotationY(oldRotationCenter.y); 102 } 103 } 104 EditorUtil.selectEditParts(request.getEditParts()); 105 } 106 } 107 | Popular Tags |