KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > editor2d > command > RotateCenterCommand


1 /**
2  * <p> Project: com.nightlabs.editor2d </p>
3  * <p> Copyright: Copyright (c) 2004 </p>
4  * <p> Company: NightLabs GmbH (Germany) </p>
5  * <p> Creation Date: 13.04.2005 </p>
6  * <p> Author: Daniel Mazurek </p>
7 **/

8 package com.nightlabs.editor2d.command;
9
10 import java.util.HashMap JavaDoc;
11 import java.util.Iterator JavaDoc;
12 import java.util.Map JavaDoc;
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 JavaDoc 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 JavaDoc(request.getEditParts().size());
57     for (Iterator JavaDoc 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 JavaDoc 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 JavaDoc 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