1 27 28 package org.nightlabs.editor2d.command; 29 30 import java.awt.geom.AffineTransform ; 31 import java.util.HashMap ; 32 import java.util.Iterator ; 33 import java.util.List ; 34 import java.util.Map ; 35 36 import org.eclipse.gef.EditPart; 37 import org.eclipse.gef.commands.Command; 38 39 import org.nightlabs.editor2d.DrawComponent; 40 import org.nightlabs.editor2d.EditorPlugin; 41 42 43 public class AbstractTransformCommand 44 extends Command 45 { 46 protected Map dc2AffineTransform; 47 public AbstractTransformCommand() 48 { 49 super(); 50 setLabel(EditorPlugin.getResourceString("command.transform")); 51 } 52 53 protected List editParts; 54 public List getEditParts() { 55 return editParts; 56 } 57 public void setEditParts(List editParts) { 58 this.editParts = editParts; 59 } 60 61 protected AffineTransform affineTransform; 62 public AffineTransform getAffineTransform() { 63 return affineTransform; 64 } 65 public void setAffineTransform(AffineTransform affineTransform) { 66 this.affineTransform = affineTransform; 67 } 68 69 public void execute() 70 { 71 dc2AffineTransform = new HashMap (getEditParts().size()); 72 for (Iterator it = getEditParts().iterator(); it.hasNext(); ) 73 { 74 EditPart editPart = (EditPart) it.next(); 75 DrawComponent dc = (DrawComponent) editPart.getModel(); 76 AffineTransform oldAffineTransform = dc.getAffineTransform(); 77 dc2AffineTransform.put(dc, oldAffineTransform); 78 AffineTransform at = new AffineTransform (oldAffineTransform); 79 at.preConcatenate(getAffineTransform()); 80 dc.setAffineTransform(at); 81 } 82 } 83 public void redo() 84 { 85 for (Iterator it = dc2AffineTransform.keySet().iterator(); it.hasNext(); ) 86 { 87 DrawComponent dc = (DrawComponent) it.next(); 88 dc.setAffineTransform(getAffineTransform()); 89 } 90 } 91 92 public void undo() 93 { 94 for (Iterator it = dc2AffineTransform.keySet().iterator(); it.hasNext(); ) 95 { 96 DrawComponent dc = (DrawComponent) it.next(); 97 AffineTransform oldAffineTransform = (AffineTransform ) dc2AffineTransform.get(dc); 98 dc.setAffineTransform(oldAffineTransform); 99 } 100 } 101 } 102 | Popular Tags |