### Eclipse Workspace Patch 1.0 #P org.eclipse.gmf.runtime.diagram.core Index: src/org/eclipse/gmf/runtime/diagram/core/DiagramEditingDomainFactory.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.core/src/org/eclipse/gmf/runtime/diagram/core/DiagramEditingDomainFactory.java,v retrieving revision 1.5 diff -u -r1.5 DiagramEditingDomainFactory.java --- src/org/eclipse/gmf/runtime/diagram/core/DiagramEditingDomainFactory.java 21 Apr 2006 21:24:51 -0000 1.5 +++ src/org/eclipse/gmf/runtime/diagram/core/DiagramEditingDomainFactory.java 2 May 2006 13:59:07 -0000 @@ -38,6 +38,7 @@ import org.eclipse.emf.transaction.impl.ReadWriteValidatorImpl; import org.eclipse.emf.transaction.impl.TransactionValidator; import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl; +import org.eclipse.emf.transaction.util.ConditionalRedoCommand; import org.eclipse.emf.transaction.util.TriggerCommand; import org.eclipse.emf.workspace.WorkspaceEditingDomainFactory; import org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl; @@ -220,7 +221,9 @@ } } - private static class DiagramEventBrokerCommand extends AbstractCommand { + private static class DiagramEventBrokerCommand + extends AbstractCommand + implements ConditionalRedoCommand { private final TransactionChangeDescription change; DiagramEventBrokerCommand(TransactionChangeDescription change) { @@ -245,6 +248,10 @@ } } + public boolean canRedo() { + return (change != null) && change.canApply(); + } + public final void redo() { if (change != null) { change.applyAndReverse(); @@ -257,6 +264,8 @@ protected boolean prepare() { return true; } public void execute() {} public boolean canUndo() { return true; } + // this command does not need to implement canRedo() because it + // is assumed to be redoable, anyway, which is what we want public void undo() {} public void redo() {}}));