1 8 package com.nightlabs.editor2d.command; 9 10 import java.awt.geom.AffineTransform ; 11 import java.util.HashMap ; 12 import java.util.Iterator ; 13 import java.util.List ; 14 import java.util.Map ; 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 dc2AffineTransform; 27 public AbstractTransformCommand() 28 { 29 super(); 30 setLabel(EditorPlugin.getResourceString("command.transform")); 31 } 32 33 protected List editParts; 34 public List getEditParts() { 35 return editParts; 36 } 37 public void setEditParts(List editParts) { 38 this.editParts = editParts; 39 } 40 41 protected AffineTransform affineTransform; 42 public AffineTransform getAffineTransform() { 43 return affineTransform; 44 } 45 public void setAffineTransform(AffineTransform affineTransform) { 46 this.affineTransform = affineTransform; 47 } 48 49 public void execute() 50 { 51 dc2AffineTransform = new HashMap (getEditParts().size()); 52 for (Iterator it = getEditParts().iterator(); it.hasNext(); ) 53 { 54 EditPart editPart = (EditPart) it.next(); 55 DrawComponent dc = (DrawComponent) editPart.getModel(); 56 AffineTransform oldAffineTransform = dc.getAffineTransform(); 57 dc2AffineTransform.put(dc, oldAffineTransform); 58 AffineTransform at = new AffineTransform (oldAffineTransform); 59 at.preConcatenate(getAffineTransform()); 60 dc.setAffineTransform(at); 61 } 62 } 63 public void redo() 64 { 65 for (Iterator 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 it = dc2AffineTransform.keySet().iterator(); it.hasNext(); ) 74 { 75 DrawComponent dc = (DrawComponent) it.next(); 76 AffineTransform oldAffineTransform = (AffineTransform ) dc2AffineTransform.get(dc); 77 dc.setAffineTransform(oldAffineTransform); 78 } 79 } 80 } 81 | Popular Tags |