KickJava   Java API By Example, From Geeks To Geeks.

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


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: 14.04.2005 </p>
6  * <p> Author: Daniel Mazurek </p>
7 **/

8 package com.nightlabs.editor2d.command;
9
10 import java.awt.geom.AffineTransform JavaDoc;
11 import java.util.HashMap JavaDoc;
12 import java.util.Iterator JavaDoc;
13 import java.util.List JavaDoc;
14 import java.util.Map JavaDoc;
15
16 import org.eclipse.gef.EditPart;
17 import org.eclipse.gef.commands.Command;
18
19 import com.nightlabs.editor2d.DrawComponent;
20 import com.nightlabs.editor2d.EditorPlugin;
21
22
23 public abstract class AbstractTransformCommand
24 extends Command
25 {
26   protected Map JavaDoc dc2AffineTransform;
27   public AbstractTransformCommand()
28   {
29     super();
30     setLabel(EditorPlugin.getResourceString("command.transform"));
31   }
32
33   protected List JavaDoc editParts;
34   public List JavaDoc getEditParts() {
35     return editParts;
36   }
37   public void setEditParts(List JavaDoc editParts) {
38     this.editParts = editParts;
39   }
40   
41   protected AffineTransform JavaDoc affineTransform;
42   public AffineTransform JavaDoc getAffineTransform() {
43     return affineTransform;
44   }
45   public void setAffineTransform(AffineTransform JavaDoc affineTransform) {
46     this.affineTransform = affineTransform;
47   }
48   
49   public void execute()
50   {
51     dc2AffineTransform = new HashMap JavaDoc(getEditParts().size());
52     for (Iterator JavaDoc it = getEditParts().iterator(); it.hasNext(); )
53     {
54       EditPart editPart = (EditPart) it.next();
55       DrawComponent dc = (DrawComponent) editPart.getModel();
56       AffineTransform JavaDoc oldAffineTransform = dc.getAffineTransform();
57       dc2AffineTransform.put(dc, oldAffineTransform);
58       AffineTransform JavaDoc at = new AffineTransform JavaDoc(oldAffineTransform);
59       at.preConcatenate(getAffineTransform());
60       dc.setAffineTransform(at);
61     }
62   }
63   public void redo()
64   {
65     for (Iterator JavaDoc it = dc2AffineTransform.keySet().iterator(); it.hasNext(); )
66     {
67       DrawComponent dc = (DrawComponent) it.next();
68       dc.setAffineTransform(getAffineTransform());
69     }
70   }
71   public void undo()
72   {
73     for (Iterator JavaDoc it = dc2AffineTransform.keySet().iterator(); it.hasNext(); )
74     {
75       DrawComponent dc = (DrawComponent) it.next();
76       AffineTransform JavaDoc oldAffineTransform = (AffineTransform JavaDoc) dc2AffineTransform.get(dc);
77       dc.setAffineTransform(oldAffineTransform);
78     }
79   }
80 }
81
Popular Tags