| /******************************************************************************* |
| * Copyright (c) 2003, 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.common.internal.emfworkbench.edit; |
| |
| |
| |
| import org.eclipse.emf.common.command.Command; |
| import org.eclipse.wst.common.internal.emfworkbench.integration.AbstractEditModelCommand; |
| import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel; |
| import org.eclipse.wst.common.internal.emfworkbench.integration.EditModelCommand; |
| |
| /** |
| * Insert the type's description here. Creation date: (05/22/01 8:57:56 AM) |
| * |
| * @author: Administrator |
| */ |
| public class ChildCommand extends EditModelCommand { |
| private ParentCommand parent; |
| private EditModelRetriever modelRetriever; |
| |
| public ChildCommand(ParentCommand parentCmd, Command targetCmd, EditModelRetriever retriever) { |
| super(targetCmd); |
| parent = parentCmd; |
| modelRetriever = retriever; |
| } |
| |
| @Override |
| public boolean canExecute() { |
| return true; |
| } |
| |
| /** |
| * Does nothing |
| */ |
| public void execute() { |
| //does nothing |
| } |
| |
| @Override |
| protected void executeInModel(AbstractEditModelCommand cmd) { |
| EditModel model = modelRetriever.getEditModelForWrite(this); |
| try { |
| model.getCommandStack().execute(cmd); |
| model.saveIfNecessary(this); |
| } finally { |
| model.releaseAccess(this); |
| } |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (05/22/01 9:35:36 AM) |
| * |
| * @return java.lang.Object |
| */ |
| public java.lang.Object getEditModelKey() { |
| return modelRetriever.getEditModelID(); |
| } |
| |
| /** |
| * Insert the method's description here. Creation date: (05/22/01 9:35:36 AM) |
| * |
| * @return com.ibm.etools.j2ee.workbench.ParentCommand |
| */ |
| public ParentCommand getParent() { |
| return parent; |
| } |
| |
| public void redo() { |
| redoInModel(); |
| getParent().redoFrom(this); |
| } |
| |
| protected void redoInModel() { |
| EditModel model = modelRetriever.getEditModelForWrite(this); |
| try { |
| getTarget().redo(); |
| model.saveIfNecessary(this); |
| } finally { |
| model.releaseAccess(this); |
| } |
| } |
| |
| @Override |
| public void undo() { |
| undoInModel(); |
| getParent().undoFrom(this); |
| } |
| |
| protected void undoInModel() { |
| EditModel model = modelRetriever.getEditModelForWrite(this); |
| try { |
| getTarget().undo(); |
| model.saveIfNecessary(this); |
| } finally { |
| model.releaseAccess(this); |
| } |
| } |
| } |