package com.windowtester.examples.gef.uml.commands; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.commands.Command; import com.windowtester.examples.gef.uml.model.ClassDiagram; import com.windowtester.examples.gef.uml.model.ClassElement; /** * <p> * Copyright (c) 2007, Instantiations, Inc.<br> * All Rights Reserved * * @author Phil Quitslund * */ public class ClassElementCreateCommand extends Command { private final ClassElement _newClass; private final ClassDiagram _parent; private final Rectangle _bounds; public ClassElementCreateCommand(ClassElement newClass, ClassDiagram parent, Rectangle bounds) { _newClass = newClass; _parent = parent; _bounds = bounds; } public ClassElement getNewClass() { return _newClass; } public ClassDiagram getParent() { return _parent; } public Rectangle getBounds() { return _bounds; } /** * Can execute if all the necessary information has been provided. * @see org.eclipse.gef.commands.Command#canExecute() */ public boolean canExecute() { return getNewClass() != null && getParent() != null && getBounds() != null; } /* (non-Javadoc) * @see org.eclipse.gef.commands.Command#execute() */ public void execute() { ClassElement newClass = getNewClass(); Rectangle bounds = getBounds(); newClass.setLocation(bounds.getLocation()); // Dimension size = bounds.getSize(); // if (size.width > 0 && size.height > 0) // newClass.setSize(size); redo(); } /* (non-Javadoc) * @see org.eclipse.gef.commands.Command#redo() */ public void redo() { getParent().addChild(getNewClass()); } /* (non-Javadoc) * @see org.eclipse.gef.commands.Command#undo() */ public void undo() { getParent().removeChild(getNewClass()); } }