[105888] don't put org.eclipse.emf.common.command in org.eclipse.wst.sse.core
diff --git a/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF
index 6c5d7e8..73e4697 100644
--- a/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.sse.core/META-INF/MANIFEST.MF
@@ -6,7 +6,7 @@
Bundle-Activator: org.eclipse.wst.sse.core.internal.SSECorePlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
-Export-Package: org.eclipse.emf.common.command,
+Export-Package:
org.eclipse.wst.sse.core.internal,
org.eclipse.wst.sse.core.internal.cleanup,
org.eclipse.wst.sse.core.internal.document,
@@ -38,5 +38,6 @@
org.eclipse.text;visibility:=reexport,
org.eclipse.core.runtime,
org.eclipse.core.filebuffers,
- org.eclipse.wst.common.uriresolver
+ org.eclipse.wst.common.uriresolver,
+ org.eclipse.emf.common
Eclipse-AutoStart: true
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/AbstractCommand.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/AbstractCommand.java
deleted file mode 100644
index 151f79d..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/AbstractCommand.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: AbstractCommand.java,v 1.3 2005/06/06 05:36:11 david_williams Exp $
- */
-package org.eclipse.emf.common.command;
-
-
-import java.util.Collection;
-import java.util.Collections;
-
-import org.eclipse.osgi.util.NLS;
-
-
-/**
- * An abstract implementation of a basic command. Each derived class
- * <bold>must</bold> implement {@link Command#execute} and
- * {@link Command#redo}, <bold>must</bold> either implement {@link #undo} or
- * implement {@link #canUndo} to return false, and <bold>must</bold> either
- * override {@link #prepare} (this is the preferred approach) or can override
- * {@link #canExecute} directly.
- *
- * <p>
- * It is very convenient to use prepare, as it is guaranteed to be called only
- * once just before canExecute is to be tested. It can be implemented to
- * create any additional commands that need to be executed, and the result it
- * yields becomes the permanent cached return value for canExecute.
- *
- */
-public abstract class AbstractCommand implements Command {
- /**
- * Keeps track of whether prepare needs to be called. It is tested in
- * {@link #canExecute} so that {@link #prepare} is called exactly once to
- * ready the command for execution.
- */
- protected boolean isPrepared;
-
- /**
- * Keeps track of whether the command is executable. It is set in
- * {@link #canExecute} to the result of calling {@link #prepare}.
- */
- protected boolean isExecutable;
-
- /**
- * Holds a short textual description of the command as returned by
- * {@link #getDescription} and set by {@link #setDescription}.
- */
- protected String description;
-
- /**
- * Holds the label of the command as returned by {@link #getLabel} and set
- * by {@link #setLabel}.
- */
- protected String label;
-
- /**
- * Creates an empty instance.
- */
- protected AbstractCommand() {
- }
-
- /**
- * Creates an instance with the given label.
- *
- * @param label
- * the label.
- */
- protected AbstractCommand(String label) {
- this.label = label;
- }
-
- /**
- * Creates and instance with the given label and description.
- *
- * @param label
- * the label.
- * @param description
- * the description.
- */
- protected AbstractCommand(String label, String description) {
- this.label = label;
- this.description = description;
- }
-
- /**
- * Called at most once in {@link #canExecute} to give the command an
- * opportunity to ready itself for execution. The returned value is stored
- * in {@link #canExecute}. In other words, you can override this method
- * to initialize and to yield a cached value for the all subsequent calls
- * to canExecute.
- *
- * @return whether the command is executable.
- */
- protected boolean prepare() {
- return false;
- }
-
- /**
- * Calls {@link #prepare}, caches the result in {@link #isExecutable},
- * and sets {@link #isPrepared} to <code>true</code>; from then on, it
- * will yield the value of isExecutable.
- *
- * @return whether the command can execute.
- */
- public boolean canExecute() {
- if (!isPrepared) {
- isExecutable = prepare();
- isPrepared = true;
- }
-
- return isExecutable;
- }
-
- /**
- * Returns <code>true</code> because most command should be undoable.
- *
- * @return <code>true</code>.
- */
- public boolean canUndo() {
- return true;
- }
-
- /**
- * Throws a runtime exception.
- *
- * @exception UnsupportedOperationException
- * always.
- */
- public void undo() {
- throw new RuntimeException(NLS.bind(UnDoCommonMessages._EXC_Method_not_implemented, this.getClass().getName() + ".undo()")); //$NON-NLS-1$
- }
-
- /**
- * Returns an empty list.
- *
- * @return an empty list.
- */
- public Collection getResult() {
- return Collections.EMPTY_LIST;
- }
-
- /**
- * Returns an empty list.
- *
- * @return an empty list.
- */
- public Collection getAffectedObjects() {
- return Collections.EMPTY_LIST;
- }
-
- /*
- * Javadoc copied from interface.
- */
- public String getLabel() {
- return label == null ? UnDoCommonMessages._UI_AbstractCommand_label : label;
- }
-
- /**
- * Sets the label after construction.
- *
- * @param label
- * the new label.
- */
- public void setLabel(String label) {
- this.label = label;
- }
-
- /*
- * Javadoc copied from interface.
- */
- public String getDescription() {
- return description == null ? UnDoCommonMessages._UI_AbstractCommand_description : description;
- }
-
- /**
- * Sets the description after construction.
- *
- * @param description
- * the new description.
- */
- public void setDescription(String description) {
- this.description = description;
- }
-
- /**
- * Creates a new compound command, containing this command and the given
- * command, that delegates chain to {@link CompoundCommand#append}.
- *
- * @param command
- * the command to chain with this one.
- * @return a new chained compound command.
- */
- public Command chain(Command command) {
- class ChainedCompoundCommand extends CompoundCommand {
- public ChainedCompoundCommand() {
- }
-
- public Command chain(Command c) {
- append(c);
- return this;
- }
- }
-
- CompoundCommand result = new ChainedCompoundCommand();
- result.append(this);
- result.append(command);
- return result;
- }
-
- /*
- * Javadoc copied from interface.
- */
- public void dispose() {
- }
-
- /**
- * Returns an abbreviated name using this object's own class' name,
- * without package qualification, followed by a space separated list of
- * <tt>field:value</tt> pairs.
- *
- * @return string representation.
- */
- public String toString() {
- String className = getClass().getName();
- int lastDotIndex = className.lastIndexOf('.');
- StringBuffer result = new StringBuffer(lastDotIndex == -1 ? className : className.substring(lastDotIndex + 1));
- result.append(" (label: " + label + ")"); //$NON-NLS-1$ //$NON-NLS-2$
- result.append(" (description: " + description + ")"); //$NON-NLS-1$ //$NON-NLS-2$
- result.append(" (isPrepared: " + isPrepared + ")"); //$NON-NLS-1$ //$NON-NLS-2$
- result.append(" (isExecutable: " + isExecutable + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-
- return result.toString();
- }
-
- /**
- * A marker interface implemented by commands that don't dirty the model.
- */
- public static interface NonDirtying {
- }
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/BasicCommandStack.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/BasicCommandStack.java
deleted file mode 100644
index 064efda..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/BasicCommandStack.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: BasicCommandStack.java,v 1.3 2005/06/06 05:36:11 david_williams Exp $
- */
-package org.eclipse.emf.common.command;
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.EventObject;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.wst.sse.core.internal.Logger;
-
-
-/**
- * A basic and obvious implementation of an undoable stack of commands. See
- * {@link Command} for more details about the command methods that this
- * implementation uses.
- */
-public class BasicCommandStack implements CommandStack {
- /**
- * The list of commands.
- */
- protected List commandList;
-
- /**
- * The current position within the list from which the next execute, undo,
- * or redo, will be performed.
- */
- protected int top;
-
- /**
- * The command most recently executed, undone, or redone.
- */
- protected Command mostRecentCommand;
-
- /**
- * The {@link CommandStackListener}s.
- */
- protected Collection listeners;
-
- /**
- * The value of {@link #top} when {@link #saveIsDone} is called.
- */
- protected int saveIndex = -1;
-
- /**
- * Creates a new empty instance.
- */
- public BasicCommandStack() {
- commandList = new ArrayList();
- top = -1;
- listeners = new ArrayList();
- }
-
- /*
- * Javadoc copied from interface.
- */
- public void execute(Command command) {
- // If the command is executable, record and execute it.
- //
- if (command != null && command.canExecute()) {
- // Clear the list past the top.
- //
- for (ListIterator commands = commandList.listIterator(top + 1); commands.hasNext(); commands.remove()) {
- Command otherCommand = (Command) commands.next();
- otherCommand.dispose();
- }
-
- try {
- command.execute();
- mostRecentCommand = command;
- commandList.add(command);
- ++top;
- }
- catch (RuntimeException exception) {
- handleError(exception);
-
- mostRecentCommand = null;
- command.dispose();
- }
-
- // This is kind of tricky.
- // If the saveIndex was in the redo part of the command list which
- // has now been wiped out,
- // then we can never reach a point where a save is not necessary,
- // not even if we undo all the way back to the beginning.
- //
- if (saveIndex >= top) {
- // This forces isSaveNeded to always be true.
- //
- saveIndex = -2;
- }
-
- notifyListeners();
- }
- else {
- command.dispose();
- }
- }
-
- /*
- * Javadoc copied from interface.
- */
- public boolean canUndo() {
- return top != -1 && ((Command) commandList.get(top)).canUndo();
- }
-
- /*
- * Javadoc copied from interface.
- */
- public void undo() {
- if (canUndo()) {
- Command command = (Command) commandList.get(top--);
- try {
- command.undo();
- mostRecentCommand = command;
- }
- catch (RuntimeException exception) {
- handleError(exception);
-
- mostRecentCommand = null;
- flush();
- }
-
- notifyListeners();
- }
- }
-
- /*
- * Javadoc copied from interface.
- */
- public boolean canRedo() {
- return top < commandList.size() - 1;
- }
-
- /*
- * Javadoc copied from interface.
- */
- public void redo() {
- if (canRedo()) {
- Command command = (Command) commandList.get(++top);
- try {
- command.redo();
- mostRecentCommand = command;
- }
- catch (RuntimeException exception) {
- handleError(exception);
-
- mostRecentCommand = null;
-
- // Clear the list past the top.
- //
- for (ListIterator commands = commandList.listIterator(top--); commands.hasNext(); commands.remove()) {
- Command otherCommand = (Command) commands.next();
- otherCommand.dispose();
- }
- }
-
- notifyListeners();
- }
- }
-
- /*
- * Javadoc copied from interface.
- */
- public void flush() {
- // Clear the list.
- //
- for (ListIterator commands = commandList.listIterator(); commands.hasNext(); commands.remove()) {
- Command command = (Command) commands.next();
- command.dispose();
- }
- commandList.clear();
- top = -1;
- saveIndex = -1;
- notifyListeners();
- mostRecentCommand = null;
- }
-
- /*
- * Javadoc copied from interface.
- */
- public Command getUndoCommand() {
- return top == -1 || top == commandList.size() ? null : (Command) commandList.get(top);
- }
-
- /*
- * Javadoc copied from interface.
- */
- public Command getRedoCommand() {
- return top + 1 >= commandList.size() ? null : (Command) commandList.get(top + 1);
- }
-
- /*
- * Javadoc copied from interface.
- */
- public Command getMostRecentCommand() {
- return mostRecentCommand;
- }
-
- /*
- * Javadoc copied from interface.
- */
- public void addCommandStackListener(CommandStackListener listener) {
- listeners.add(listener);
- }
-
- /*
- * Javadoc copied from interface.
- */
- public void removeCommandStackListener(CommandStackListener listener) {
- listeners.remove(listener);
- }
-
- /**
- * This is called to ensure that
- * {@link CommandStackListener#commandStackChanged} is called for each
- * listener.
- */
- protected void notifyListeners() {
- for (Iterator i = listeners.iterator(); i.hasNext();) {
- ((CommandStackListener) i.next()).commandStackChanged(new EventObject(this));
- }
- }
-
- /**
- * Handles an exception thrown during command execution by loging it with
- * the plugin.
- */
- protected void handleError(Exception exception) {
- Logger.logException(UnDoCommonMessages._UI_IgnoreException_exception, exception);
- }
-
- /**
- * Called after a save has been successfully performed.
- */
- public void saveIsDone() {
- // Remember where we are now.
- //
- saveIndex = top;
- }
-
- /**
- * Returns whether the model has changes since {@link #saveIsDone} was
- * call the last.
- *
- * @return whether the model has changes since <code>saveIsDone</code>
- * was call the last.
- */
- public boolean isSaveNeeded() {
- // Only if we are at the remembered index do we NOT need to save.
- //
- // return top != saveIndex;
-
- if (saveIndex < -1) {
- return true;
- }
-
- if (top > saveIndex) {
- for (int i = top; i > saveIndex; --i) {
- if (!(commandList.get(i) instanceof AbstractCommand.NonDirtying)) {
- return true;
- }
- }
- }
- else {
- for (int i = saveIndex; i > top; --i) {
- if (!(commandList.get(i) instanceof AbstractCommand.NonDirtying)) {
- return true;
- }
- }
- }
-
- return false;
- }
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/Command.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/Command.java
deleted file mode 100644
index 00af9b0..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/Command.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: Command.java,v 1.1 2005/04/15 23:31:25 david_williams Exp $
- */
-package org.eclipse.emf.common.command;
-
-
-import java.util.Collection;
-
-
-/**
- * An interface that every command is expected to support.
- * A command can be tested for executability,
- * it can be executed,
- * it can be tested for undoability,
- * it can be undone,
- * and can then be redone.
- * A comand also provides access to a result collection, an affected-objects collection,
- * a label, and a description.
- *
- * <p>
- * There are important constraints on the valid order in which the various methods may be invoked,
- * e.g., you cannot ask for the result before you've executed the command.
- * These constraints are documented with the various methods.
- */
-public interface Command
-{
- /**
- * Returns whether the comamad is valid to <code>execute</code>.
- * The {@link UnexecutableCommand#INSTANCE}.<code>canExecute()</code> always returns <code>false</code>.
- * This <b>must</b> be called before calling <code>execute</code>.
- * @return whether the comamad is valid to <code>execute</code>.
- */
- boolean canExecute();
-
- /**
- * Performs the command activity required for the effect.
- * The effect of calling <code>execute</code> when <code>canExecute</code> returns <code>false</code>,
- * or when <code>canExecute</code> hasn't been called, is undefined.
- */
- void execute();
-
- /**
- * Returns whether the command can be undone.
- * The result of calling this before <code>execute</code> is well defined,
- * but the result of calling this before calling <code>canExecute</code> is undefined, i.e.,
- * a command that returns <code>false</code> for <code>canExecute</code> may return <code>true</code> for canUndo,
- * even though that is a contradiction.
- * @return whether the command can be undone.
- */
- boolean canUndo();
-
- /**
- * Performs the command activity required to <code>undo</code> the effects of a preceding <code>execute</code> (or <code>redo</code>).
- * The effect, if any, of calling <code>undo</code> before <code>execute</code> or <code>redo</code> have been called,
- * or when canUndo returns <code>false</code>, is undefined.
- */
- void undo();
-
- /**
- * Performs the command activity required to <code>redo</code> the effect after undoing the effect.
- * The effect, if any, of calling <code>redo</code> before <code>undo</code> is called is undefined.
- * Note that if you implement <code>redo</code> to call <code>execute</code>
- * then any derived class will be restricted by that decision also.
- */
- void redo();
-
- /**
- * Returns a collection of things which this command wishes to present as it's result.
- * The result of calling this before an <code>execute</code> or <code>redo</code>, or after an <code>undo</code>, is undefined.
- * @return a collection of things which this command wishes to present as it's result.
- */
- Collection getResult();
-
- /**
- * Returns the collection of things which this command wishes to present as the objects affected by the command.
- * Typically should could be used as the selection that should be highlighted to best illustrate the effect of the command.
- * The result of calling this before an <code>execute</code>, <code>redo</code>, or <code>undo</code> is undefined.
- * The result may be different after an <code>undo</code> than it is after an <code>execute</code> or <code>redo</code>,
- * but the result should be the same (equivalent) after either an <code>execute</code> or <code>redo</code>.
- * @return the collection of things which this command wishes to present as the objects affected by the command.
- */
- Collection getAffectedObjects();
-
- /**
- * Returns a string suitable to represent the label that identifies this command.
- * @return a string suitable to represent the label that identifies this command.
- */
- String getLabel();
-
- /**
- * Returns a string suitable to help describe the effect of this command.
- * @return a string suitable to help describe the effect of this command.
- */
- String getDescription();
-
- /**
- * Called to indicate that the command will never be used again.
- * Calling any other method after this one has undefined results.
- */
- void dispose();
-
- /**
- * Returns a command that represents the composition of this command with the given command.
- * The resulting command may just be this, if this command is capabable of composition.
- * Otherwise, it will be a new command created to compose the two.
- * <p>
- * Instead of the following pattern of usage
- * <pre>
- * Command result = x;
- * if (condition) result = result.chain(y);
- * </pre>
- * you should consider using a {@link org.eclipse.emf.common.command.CompoundCommand}
- * and using {@link org.eclipse.emf.common.command.CompoundCommand#unwrap()} to optimize the result:
- * <pre>
- * CompoundCommand subcommands = new CompoundCommand();
- * subcommands.append(x);
- * if (condition) subcommands.append(y);
- * Command result = subcommands.unwrap();
- * </pre>
- * This gives you more control over how the compound command composes it's result and affected objects.
- * @param command the command to chain.
- * @return a command that represents the composition of this command with the given command.
- */
- Command chain(Command command);
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CommandStack.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CommandStack.java
deleted file mode 100644
index 19567dd..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CommandStack.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: CommandStack.java,v 1.1 2005/04/15 23:31:25 david_williams Exp $
- */
-package org.eclipse.emf.common.command;
-
-
-
-/**
- * A simple and obvious interface for an undoable stack of commands with a listener.
- * See {@link Command} for more details about the command methods that this implementation uses
- * and {@link CommandStackListener} for details about the listener.
- */
-public interface CommandStack
-{
- /**
- * Clears any redoable commands not yet redone, adds the command, and then executes the command.
- * @param command the command to execute.
- */
- void execute(Command command);
-
- /**
- * Returns whether the top command on the stack can be undone.
- * @return whether the top command on the stack can be undone.
- */
- boolean canUndo();
-
- /**
- * Moves the top of the stack down, undoing what was formerly the top command.
- */
- void undo();
-
- /**
- * Returns whether there are commands past the top of the stack that can be redone.
- * @return whether there are commands past the top of the stack that can be redone.
- */
- boolean canRedo();
-
- /**
- * Returns the command that will be undone if {@link #undo} is called.
- * @return the command that will be undone if {@link #undo} is called.
- */
- public Command getUndoCommand();
-
- /**
- * Returns the command that will be redone if {@link #redo} is called.
- * @return the command that will be redone if {@link #redo} is called.
- */
- public Command getRedoCommand();
-
- /**
- * Returns the command most recently executed, undone, or redone.
- * @return the command most recently executed, undone, or redone.
- */
- public Command getMostRecentCommand();
-
- /**
- * Moves the top of the stack up, redoing the new top command.
- */
- void redo();
-
- /**
- * Disposes all the commands in the stack.
- */
- void flush();
-
- /**
- * Adds a listener to the command stack, which will be notified whenever a command has been processed on the stack.
- * @param listener the listener to add.
- */
- void addCommandStackListener(CommandStackListener listener);
-
- /**
- * Removes a listener from the command stack.
- * @param listener the listener to remove.
- */
- void removeCommandStackListener(CommandStackListener listener);
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CommandStackListener.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CommandStackListener.java
deleted file mode 100644
index 3f81e93..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CommandStackListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: CommandStackListener.java,v 1.1 2005/04/15 23:31:25 david_williams Exp $
- */
-package org.eclipse.emf.common.command;
-
-
-import java.util.EventObject;
-
-
-/**
- * A listener to a {@link org.eclipse.emf.common.command.CommandStack}.
- */
-public interface CommandStackListener
-{
- /**
- * Called when the {@link org.eclipse.emf.common.command.CommandStack}'s state has changed.
- * @param event the event.
- */
- void commandStackChanged(EventObject event);
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CommandWrapper.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CommandWrapper.java
deleted file mode 100644
index 2b8f137..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CommandWrapper.java
+++ /dev/null
@@ -1,267 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: CommandWrapper.java,v 1.3 2005/06/06 05:36:11 david_williams Exp $
- */
-package org.eclipse.emf.common.command;
-
-
-import java.util.Collection;
-import java.util.Collections;
-
-
-/**
- * A command that wraps another command. All the {@link Command} methods are
- * delegated to the wrapped command.
- *
- * <p>
- * There are two typical usage patterns. One typical use for this command is
- * to modify the behaviour of a command that you can't subclass, i.e., a
- * decorator pattern:
- *
- * <pre>
- * Command decoratedCommand = new CommandWrapper(someOtherCommand) {
- * public void execute() {
- * doSomethingBeforeExecution();
- * super.execute();
- * doSomethingAfterExecution();
- * }
- *
- * public Collection getResult() {
- * return someOtherResult();
- * }
- * };
- * </pre>
- *
- * The other typical use is to act as a proxy for a command who's creation is
- * delayed:
- *
- * <pre>
- * Command proxyCommand = new CommandWrapper() {
- * public Command createCommand() {
- * return createACommandSomehow();
- * }
- * };
- * </pre>
- */
-public class CommandWrapper extends AbstractCommand {
- /**
- * The command for which this is a proxy or decorator.
- */
- protected Command command;
-
- /**
- * Creates a decorator instance for the given command.
- *
- * @param command
- * the command to wrap.
- */
- public CommandWrapper(Command command) {
- super(command.getLabel(), command.getDescription());
- this.command = command;
- }
-
- /**
- * Creates a decorator instance with the given label for the given
- * command.
- *
- * @param label
- * the label of the wrapper
- * @param command
- * the command to wrap.
- */
- protected CommandWrapper(String label, Command command) {
- super(label, command.getDescription());
- this.command = command;
- }
-
- /**
- * Creates a decorator instance with the given label and description for
- * the given command.
- *
- * @param label
- * the label of the wrapper
- * @param description
- * the description of the wrapper
- * @param command
- * the command to wrap.
- */
- public CommandWrapper(String label, String description, Command command) {
- super(label, description);
- this.command = command;
- }
-
- /**
- * Creates a commandless proxy instance. The wrapped command will be
- * created by a {@link #createCommand} callback. Since a proxy command
- * like this is pointless unless you override some method, this
- * constructor is protected.
- */
- protected CommandWrapper() {
- super();
- }
-
- /**
- * Creates a commandless proxy instance, with the given label. The command
- * will be created by a {@link #createCommand} callback. Since a proxy
- * command like this is pointless unless you override some method, this
- * constructor is protected.
- *
- * @param label
- * the label of the wrapper
- */
- protected CommandWrapper(String label) {
- super(label);
- }
-
- /**
- * Creates a commandless proxy instance, with the given label and
- * description. The command will be created by a {@link #createCommand}
- * callback. Since a proxy command like this is pointless unless you
- * override some method, this constructor is protected.
- *
- * @param label
- * the label of the wrapper
- * @param description
- * the description of the wrapper
- */
- protected CommandWrapper(String label, String description) {
- super(label, description);
- }
-
- /**
- * Returns the command for which this is a proxy or decorator. This may be
- * <code>null</code> before {@link #createCommand} is called.
- *
- * @return the command for which this is a proxy or decorator.
- */
- public Command getCommand() {
- return command;
- }
-
- /**
- * Create the command being proxied. This implementation just return
- * <code>null</code>. It is called by {@link #prepare}.
- *
- * @return the command being proxied.
- */
- protected Command createCommand() {
- return null;
- }
-
- /**
- * Returns whether the command can execute. This implementation creates
- * the command being proxied using {@link #createCommand}, if the command
- * wasn't given in the constructor.
- *
- * @return whether the command can execute.
- */
- protected boolean prepare() {
- if (command == null) {
- command = createCommand();
- }
-
- boolean result = command.canExecute();
- return result;
- }
-
- /**
- * Delegates to the execute method of the command.
- */
- public void execute() {
- if (command != null) {
- command.execute();
- }
- }
-
- /**
- * Delegates to the canUndo method of the command.
- */
- public boolean canUndo() {
- return command == null || command.canUndo();
- }
-
- /**
- * Delegates to the undo method of the command.
- */
- public void undo() {
- if (command != null) {
- command.undo();
- }
- }
-
- /**
- * Delegates to the redo method of the command.
- */
- public void redo() {
- if (command != null) {
- command.redo();
- }
- }
-
- /**
- * Delegates to the getResult method of the command.
- *
- * @return the result.
- */
- public Collection getResult() {
- return command == null ? Collections.EMPTY_LIST : command.getResult();
- }
-
- /**
- * Delegates to the getAffectedObjects method of the command.
- *
- * @return the result.
- */
- public Collection getAffectedObjects() {
- return command == null ? Collections.EMPTY_LIST : command.getAffectedObjects();
- }
-
- /**
- * Delegates to the getLabel method of the command.
- *
- * @return the label.
- */
- public String getLabel() {
- return label == null ? command == null ? UnDoCommonMessages._UI_CommandWrapper_label : command.getLabel() : label;
- }
-
- /**
- * Delegates to the getDescription method of the command.
- *
- * @return the description.
- */
- public String getDescription() {
- return description == null ? command == null ? UnDoCommonMessages._UI_CommandWrapper_description : command.getDescription() : description;
- }
-
- /**
- * Delegates to the dispose method of the command.
- */
- public void dispose() {
- if (command != null) {
- command.dispose();
- }
- }
-
- /*
- * Javadoc copied from base class.
- */
- public String toString() {
- StringBuffer result = new StringBuffer(super.toString());
- result.append(" (command: " + command + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-
- return result.toString();
- }
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CompoundCommand.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CompoundCommand.java
deleted file mode 100644
index c691646..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/CompoundCommand.java
+++ /dev/null
@@ -1,718 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: CompoundCommand.java,v 1.3 2005/06/06 05:36:11 david_williams Exp $
- */
-package org.eclipse.emf.common.command;
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.wst.sse.core.internal.Logger;
-
-
-/**
- * A command that comprises a sequence of subcommands. Derived classes can
- * control the way results are accumulated from the individual commands; the
- * default behaviour is to return the result of the last command.
- */
-public class CompoundCommand extends AbstractCommand {
- /**
- * The list of subcommands.
- */
- protected List commandList;
-
- /**
- * When {@link #resultIndex} is set to this, {@link #getResult} and
- * {@link #getAffectedObjects} are delegated to the last command, if any,
- * in the list.
- */
- public static final int LAST_COMMAND_ALL = Integer.MIN_VALUE;
-
- /**
- * When {@link #resultIndex} is set to this, {@link #getResult} and
- * {@link #getAffectedObjects} are set to the result of merging the
- * corresponding collection of each command in the list.
- */
- public static final int MERGE_COMMAND_ALL = Integer.MIN_VALUE - 1;
-
- /**
- * The index of the command whose result and affected objects are
- * forwarded. Negative values have special meaning, as defined by the
- * static constants. A value of -1 indicates that the last command in the
- * list should be used. We could have more special behaviours implemented
- * for other negative values.
- */
- protected int resultIndex = MERGE_COMMAND_ALL;
-
- /**
- * Creates an empty instance.
- */
- public CompoundCommand() {
- super();
- commandList = new ArrayList();
- }
-
- /**
- * Creates an instance with the given label.
- *
- * @param label
- * the label.
- */
- public CompoundCommand(String label) {
- super(label);
- commandList = new ArrayList();
- }
-
- /**
- * Creates an instance with the given label and description.
- *
- * @param label
- * the label.
- * @param description
- * the description.
- */
- public CompoundCommand(String label, String description) {
- super(label, description);
- commandList = new ArrayList();
- }
-
- /**
- * Creates an instance with the given list.
- *
- * @param commandList
- * the list of commands.
- */
- public CompoundCommand(List commandList) {
- super();
- this.commandList = commandList;
- }
-
- /**
- * Creates instance with the given label and list.
- *
- * @param label
- * the label.
- * @param commandList
- * the list of commands.
- */
- public CompoundCommand(String label, List commandList) {
- super(label);
- this.commandList = commandList;
- }
-
- /**
- * Creates an instance with the given label, description, and list.
- *
- * @param label
- * the label.
- * @param description
- * the description.
- * @param commandList
- * the list of commands.
- */
- public CompoundCommand(String label, String description, List commandList) {
- super(label, description);
- this.commandList = commandList;
- }
-
- /**
- * Creates an empty instance with the given result index.
- *
- * @param resultIndex
- * the {@link #resultIndex}.
- */
- public CompoundCommand(int resultIndex) {
- super();
- this.resultIndex = resultIndex;
- commandList = new ArrayList();
- }
-
- /**
- * Creates an instance with the given result index and label.
- *
- * @param resultIndex
- * the {@link #resultIndex}.
- * @param label
- * the label.
- */
- public CompoundCommand(int resultIndex, String label) {
- super(label);
- this.resultIndex = resultIndex;
- commandList = new ArrayList();
- }
-
- /**
- * Creates an instance with the given result index, label, and
- * description.
- *
- * @param resultIndex
- * the {@link #resultIndex}.
- * @param label
- * the label.
- * @param description
- * the description.
- */
- public CompoundCommand(int resultIndex, String label, String description) {
- super(label, description);
- this.resultIndex = resultIndex;
- commandList = new ArrayList();
- }
-
- /**
- * Creates an instance with the given result index and list.
- *
- * @param resultIndex
- * the {@link #resultIndex}.
- * @param commandList
- * the list of commands.
- */
- public CompoundCommand(int resultIndex, List commandList) {
- super();
- this.resultIndex = resultIndex;
- this.commandList = commandList;
- }
-
- /**
- * Creates an instance with the given resultIndex, label, and list.
- *
- * @param resultIndex
- * the {@link #resultIndex}.
- * @param label
- * the label.
- * @param commandList
- * the list of commands.
- */
- public CompoundCommand(int resultIndex, String label, List commandList) {
- super(label);
- this.resultIndex = resultIndex;
- this.commandList = commandList;
- }
-
- /**
- * Creates an instance with the given result index, label, description,
- * and list.
- *
- * @param resultIndex
- * the {@link #resultIndex}.
- * @param label
- * the label.
- * @param description
- * the description.
- * @param commandList
- * the list of commands.
- */
- public CompoundCommand(int resultIndex, String label, String description, List commandList) {
- super(label, description);
- this.resultIndex = resultIndex;
- this.commandList = commandList;
- }
-
- /**
- * Returns whether there are commands in the list.
- *
- * @return whether there are commands in the list.
- */
- public boolean isEmpty() {
- return commandList.isEmpty();
- }
-
- /**
- * Returns an unmodifiable view of the commands in the list.
- *
- * @return an unmodifiable view of the commands in the list.
- */
- public List getCommandList() {
- return Collections.unmodifiableList(commandList);
- }
-
- /**
- * Returns the index of the command whose result and affected objects are
- * forwarded. Negative values have special meaning, as defined by the
- * static constants.
- *
- * @return the index of the command whose result and affected objects are
- * forwarded.
- * @see #LAST_COMMAND_ALL
- * @see #MERGE_COMMAND_ALL
- */
- public int getResultIndex() {
- return resultIndex;
- }
-
- /**
- * Returns whether all the commands can execute so that
- * {@link #isExecutable} can be cached. An empty command list causes
- * <code>false</code> to be returned.
- *
- * @return whether all the commands can execute.
- */
- protected boolean prepare() {
- if (commandList.isEmpty()) {
- return false;
- }
- else {
- for (Iterator commands = commandList.listIterator(); commands.hasNext();) {
- Command command = (Command) commands.next();
- if (!command.canExecute()) {
- return false;
- }
- }
-
- return true;
- }
- }
-
- /**
- * Calls {@link Command#execute} for each command in the list.
- */
- public void execute() {
- for (ListIterator commands = commandList.listIterator(); commands.hasNext();) {
- try {
- Command command = (Command) commands.next();
- command.execute();
- }
- catch (RuntimeException exception) {
- // Skip over the command that threw the exception.
- //
- commands.previous();
-
- try {
- // Iterate back over the executed commands to undo them.
- //
- while (commands.hasPrevious()) {
- Command command = (Command) commands.previous();
- if (command.canUndo()) {
- command.undo();
- }
- else {
- break;
- }
- }
- }
- catch (RuntimeException nestedException) {
- Logger.logException(UnDoCommonMessages._UI_IgnoreException_exception, nestedException);
- }
-
- throw exception;
- }
- }
- }
-
- /**
- * Returns <code>false</code> if any of the commands return
- * <code>false</code> for {@link Command#canUndo}.
- *
- * @return <code>false</code> if any of the commands return
- * <code>false</code> for <code>canUndo</code>.
- */
- public boolean canUndo() {
- for (Iterator commands = commandList.listIterator(); commands.hasNext();) {
- Command command = (Command) commands.next();
- if (!command.canUndo()) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Calls {@link Command#undo} for each command in the list, in reverse
- * order.
- */
- public void undo() {
- for (ListIterator commands = commandList.listIterator(commandList.size()); commands.hasPrevious();) {
- try {
- Command command = (Command) commands.previous();
- command.undo();
- }
- catch (RuntimeException exception) {
- // Skip over the command that threw the exception.
- //
- commands.next();
-
- try {
- // Iterate forward over the undone commands to redo them.
- //
- while (commands.hasNext()) {
- Command command = (Command) commands.next();
- command.redo();
- }
- }
- catch (RuntimeException nestedException) {
- Logger.logException(UnDoCommonMessages._UI_IgnoreException_exception, exception);
- }
-
-
- throw exception;
- }
- }
- }
-
- /**
- * Calls {@link Command#redo} for each command in the list.
- */
- public void redo() {
- for (ListIterator commands = commandList.listIterator(); commands.hasNext();) {
- try {
- Command command = (Command) commands.next();
- command.redo();
- }
- catch (RuntimeException exception) {
- // Skip over the command that threw the exception.
- //
- commands.previous();
-
- try {
- // Iterate back over the executed commands to undo them.
- //
- while (commands.hasPrevious()) {
- Command command = (Command) commands.previous();
- command.undo();
- }
- }
- catch (RuntimeException nestedException) {
- Logger.logException(UnDoCommonMessages._UI_IgnoreException_exception, nestedException);
- }
-
- throw exception;
- }
- }
- }
-
- /**
- * Determines the result by composing the results of the commands in the
- * list; this is affected by the setting of {@link #resultIndex}.
- *
- * @return the result.
- */
- public Collection getResult() {
- if (commandList.isEmpty()) {
- return Collections.EMPTY_LIST;
- }
- else if (resultIndex == LAST_COMMAND_ALL) {
- return ((Command) commandList.get(commandList.size() - 1)).getResult();
- }
- else if (resultIndex == MERGE_COMMAND_ALL) {
- return getMergedResultCollection();
- }
- else if (resultIndex < commandList.size()) {
- return ((Command) commandList.get(resultIndex)).getResult();
- }
- else {
- return Collections.EMPTY_LIST;
- }
- }
-
- /**
- * Returns the merged collection of all command results.
- *
- * @return the merged collection of all command results.
- */
- protected Collection getMergedResultCollection() {
- Collection result = new ArrayList();
-
- for (Iterator commands = commandList.iterator(); commands.hasNext();) {
- Command command = (Command) commands.next();
- result.addAll(command.getResult());
- }
-
- return result;
- }
-
-
- /**
- * Determines the affected objects by composing the affected objects of
- * the commands in the list; this is affected by the setting of
- * {@link #resultIndex}.
- *
- * @return the affected objects.
- */
- public Collection getAffectedObjects() {
- if (commandList.isEmpty()) {
- return Collections.EMPTY_LIST;
- }
- else if (resultIndex == LAST_COMMAND_ALL) {
- return ((Command) commandList.get(commandList.size() - 1)).getAffectedObjects();
- }
- else if (resultIndex == MERGE_COMMAND_ALL) {
- return getMergedAffectedObjectsCollection();
- }
- else if (resultIndex < commandList.size()) {
- return ((Command) commandList.get(resultIndex)).getAffectedObjects();
- }
- else {
- return Collections.EMPTY_LIST;
- }
- }
-
- /**
- * Returns the merged collection of all command affected objects.
- *
- * @return the merged collection of all command affected objects.
- */
- protected Collection getMergedAffectedObjectsCollection() {
- Collection result = new ArrayList();
-
- for (Iterator commands = commandList.iterator(); commands.hasNext();) {
- Command command = (Command) commands.next();
- result.addAll(command.getAffectedObjects());
- }
-
- return result;
- }
-
- /**
- * Determines the label by composing the labels of the commands in the
- * list; this is affected by the setting of {@link #resultIndex}.
- *
- * @return the label.
- */
- public String getLabel() {
- if (label != null) {
- return label;
- }
- else if (commandList.isEmpty()) {
- return UnDoCommonMessages._UI_CompoundCommand_label;
- }
- else if (resultIndex == LAST_COMMAND_ALL || resultIndex == MERGE_COMMAND_ALL) {
- return ((Command) commandList.get(commandList.size() - 1)).getLabel();
- }
- else if (resultIndex < commandList.size()) {
- return ((Command) commandList.get(resultIndex)).getLabel();
- }
- else {
- return UnDoCommonMessages._UI_CompoundCommand_label;
- }
- }
-
- /**
- * Determines the description by composing the descriptions of the
- * commands in the list; this is affected by the setting of
- * {@link #resultIndex}.
- *
- * @return the description.
- */
- public String getDescription() {
- if (description != null) {
- return description;
- }
- else if (commandList.isEmpty()) {
- return UnDoCommonMessages._UI_CompoundCommand_description;
- }
- else if (resultIndex == LAST_COMMAND_ALL || resultIndex == MERGE_COMMAND_ALL) {
- return ((Command) commandList.get(commandList.size() - 1)).getDescription();
- }
- else if (resultIndex < commandList.size()) {
- return ((Command) commandList.get(resultIndex)).getDescription();
- }
- else {
- return UnDoCommonMessages._UI_CompoundCommand_description;
- }
- }
-
- /**
- * Adds a command to this compound command's list of commands.
- *
- * @param command
- * the command to append.
- */
- public void append(Command command) {
- if (command != null) {
- commandList.add(command);
- }
- }
-
- /**
- * Checks if the command can execute; if so, it is executed, appended to
- * the list, and true is returned, if not, it is just disposed and false
- * is returned. A typical use for this is to execute commands created
- * during the execution of another command, e.g.,
- *
- * <pre>
- * class MyCommand extends CommandBase {
- * protected Command subcommand;
- *
- * //...
- *
- * public void execute()
- * {
- * // ...
- * Compound subcommands = new CompoundCommand();
- * subcommands.appendAndExecute(new AddCommand(...));
- * if (condition) subcommands.appendAndExecute(new AddCommand(...));
- * subcommand = subcommands.unwrap();
- * } public void undo() {
- * // ...
- * subcommand.undo();
- * }
- *
- * public void redo() {
- * // ...
- * subcommand.redo();
- * }
- *
- * public void dispose() {
- * // ...
- * if (subcommand != null) {
- * subcommand.dispose();
- * }
- * }
- * }
- *
- * </pre>
- *
- * Another use is in an execute override of compound command itself:
- *
- * <pre>
- * class MyCommand extends CompoundCommand {
- * public void execute()
- * {
- * // ...
- * appendAndExecute(new AddCommand(...));
- * if (condition) appendAndExecute(new AddCommand(...));
- * }}
- *
- * </pre>
- *
- * Note that appending commands will modify what getResult and
- * getAffectedObjects return, so you may want to set the resultIndex flag.
- *
- * @param command
- * the command.
- * @return whether the command was successfully executed and appended.
- */
- public boolean appendAndExecute(Command command) {
- if (command != null) {
- if (!isPrepared) {
- if (commandList.isEmpty()) {
- isPrepared = true;
- isExecutable = true;
- }
- else {
- isExecutable = prepare();
- isPrepared = true;
- if (isExecutable) {
- execute();
- }
- }
- }
-
- if (command.canExecute()) {
- try {
- command.execute();
- commandList.add(command);
- return true;
- }
- catch (RuntimeException exception) {
- Logger.logException(UnDoCommonMessages._UI_IgnoreException_exception, exception);
- }
- }
-
- command.dispose();
- }
-
- return false;
- }
-
- /**
- * Adds a command to this compound command's the list of commands and
- * returns <code>true</code>, if
- * <code>command.{@link org.eclipse.emf.common.command.Command#canExecute() canExecute()}</code>
- * returns true; otherwise, it simply calls
- * <code>command.{@link org.eclipse.emf.common.command.Command#dispose() dispose()}</code>
- * and returns <code>false</code>.
- *
- * @param command
- * the command.
- * @return whether the command was executed and appended.
- */
- public boolean appendIfCanExecute(Command command) {
- if (command == null) {
- return false;
- }
- else if (command.canExecute()) {
- commandList.add(command);
- return true;
- }
- else {
- command.dispose();
- return false;
- }
- }
-
- /**
- * Calls {@link Command#dispose} for each command in the list.
- */
- public void dispose() {
- for (Iterator commands = commandList.listIterator(); commands.hasNext();) {
- Command command = (Command) commands.next();
- command.dispose();
- }
- }
-
- /**
- * Returns one of three things:
- * {@link org.eclipse.emf.common.command.UnexecutableCommand#INSTANCE},
- * if there are no commands, the one command, if there is exactly one
- * command, or <code>this</code>, if there are multiple commands; this
- * command is {@link #dispose}d in the first two cases. You should only
- * unwrap a compound command if you created it for that purpose, e.g.,
- *
- * <pre>
- * CompoundCommand subcommands = new CompoundCommand();
- * subcommands.append(x);
- * if (condition)
- * subcommands.append(y);
- * Command result = subcommands.unwrap();
- * </pre>
- *
- * is a good way to create an efficient accumulated result.
- *
- * @return the unwapped command.
- */
- public Command unwrap() {
- switch (commandList.size()) {
- case 0 : {
- dispose();
- return UnexecutableCommand.INSTANCE;
- }
- case 1 : {
- Command result = (Command) commandList.remove(0);
- dispose();
- return result;
- }
- default : {
- return this;
- }
- }
- }
-
- /*
- * Javadoc copied from base class.
- */
- public String toString() {
- StringBuffer result = new StringBuffer(super.toString());
- result.append("" + commandList.size() + ""); //$NON-NLS-1$ //$NON-NLS-2$
- result.append("" + resultIndex + ""); //$NON-NLS-1$ //$NON-NLS-2$
-
- return result.toString();
- }
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/IdentityCommand.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/IdentityCommand.java
deleted file mode 100644
index ced8250..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/IdentityCommand.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: IdentityCommand.java,v 1.3 2005/06/06 05:36:11 david_williams Exp $
- */
-package org.eclipse.emf.common.command;
-
-
-import java.util.Collection;
-import java.util.Collections;
-
-
-/**
- * A command that always produces the same result.
- */
-public class IdentityCommand extends AbstractCommand {
- /**
- * An empty instance of this object.
- */
- public static final IdentityCommand INSTANCE = new IdentityCommand();
-
- /**
- * Keeps track of the result returned from {@link #getResult}.
- */
- protected Collection result;
-
- {
- // This ensures that these useless state variables at least reflect
- // the right value.
- //
- isPrepared = true;
- isExecutable = true;
- }
-
- /**
- * Creates an empty instance.
- */
- public IdentityCommand() {
- super();
- this.result = Collections.EMPTY_LIST;
- }
-
- /**
- * Creates an instance with a result collection containing the given
- * result object.
- *
- * @param result
- * the one object in the result collection.
- */
- public IdentityCommand(Object result) {
- super();
- this.result = Collections.singleton(result);
- }
-
- /**
- * Creates an instance with the given result collection.
- *
- * @param result
- * the result collection.
- */
- public IdentityCommand(Collection result) {
- super();
- this.result = result;
- }
-
- /**
- * Creates an instance with the given label.
- *
- * @param label
- * the label.
- */
- public IdentityCommand(String label) {
- this.label = label;
- this.result = Collections.EMPTY_LIST;
- }
-
- /**
- * Creates an instance with the given label and a result collection
- * containing the given result object.
- *
- * @param label
- * the label.
- * @param result
- * the one object in the result collection.
- */
- public IdentityCommand(String label, Object result) {
- this.label = label;
- this.result = Collections.singleton(result);
- }
-
- /**
- * Creates an instance with the given label the result collection.
- *
- * @param label
- * the label.
- * @param result
- * the result collection.
- */
- public IdentityCommand(String label, Collection result) {
- this.label = label;
- this.result = result;
- }
-
- /**
- * Creates an instance with the given label and description.
- *
- * @param label
- * the label.
- * @param description
- * the description.
- */
- public IdentityCommand(String label, String description) {
- this.label = label;
- this.description = description;
- this.result = Collections.EMPTY_LIST;
- }
-
- /**
- * Creates an instance with the given label, description, and a result
- * collection containing the given result object.
- *
- * @param label
- * the label.
- * @param description
- * the description.
- * @param result
- * the one object in the result collection.
- */
- public IdentityCommand(String label, String description, Object result) {
- this.label = label;
- this.description = description;
- this.result = Collections.singleton(result);
- }
-
- /**
- * Creates an instance with the given label, description, result
- * collection.
- *
- * @param label
- * the label.
- * @param description
- * the description.
- * @param result
- * the result collection.
- */
- public IdentityCommand(String label, String description, Collection result) {
- this.label = label;
- this.description = description;
- this.result = result;
- }
-
- /**
- * Returns <code>true</code>.
- *
- * @return <code>true</code>.
- */
- public boolean canExecute() {
- return true;
- }
-
- /**
- * Do nothing.
- */
- public void execute() {
- }
-
- /**
- * Do nothing.
- */
- public void undo() {
- }
-
- /**
- * Do nothing.
- */
- public void redo() {
- }
-
- /*
- * Javadoc copied from base class.
- */
- public String getLabel() {
- return label == null ? UnDoCommonMessages._UI_IdentityCommand_label : label;
- }
-
- /*
- * Javadoc copied from base class.
- */
- public String getDescription() {
- return description == null ? UnDoCommonMessages._UI_IdentityCommand_description : description;
- }
-
- /**
- * Return the identity result.
- *
- * @return the identity result.
- */
- public Collection getResult() {
- return result;
- }
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/StrictCompoundCommand.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/StrictCompoundCommand.java
deleted file mode 100644
index 2b401ef..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/StrictCompoundCommand.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: StrictCompoundCommand.java,v 1.3 2005/06/06 05:36:11 david_williams Exp $
- */
-package org.eclipse.emf.common.command;
-
-
-import java.util.List;
-import java.util.ListIterator;
-
-import org.eclipse.wst.sse.core.internal.Logger;
-
-
-/**
- * A composite command which assumes that later commands in the list may
- * depend on the results and side-effects of earlier commands in the list.
- * Because of this, it must implement {@link Command#canExecute} more
- * carefully, i.e., in order to determine canExecute for the composite, it
- * doesn't simply test each command. It tests the first command to see if it
- * can execute; then, if there is another command in the list, it checks if
- * the first command can undo and then goes ahead and executes it! This
- * process is repeated until the last command that is not followed by another,
- * which then determines the final result. (For efficiency, when this
- * processing gets to the last command, that command is tested for canUndo too
- * and that result is cached.) All the commands that have been executed are
- * then undone, if {@link #isPessimistic} is <code>true</code>; by default
- * it's <code>false</code>.
- *
- * <p>
- * It is important for all but the last command to have no visible
- * side-effect! Multiple commands with visible side-effects must be composed
- * into a single command using just a {@link CompoundCommand} and that
- * composite could be the last command of a strict composite.
- *
- * <p>
- * Here is an example of how this can be used in conjunction with a
- * {@link CommandWrapper}.
- *
- * <pre>
- *
- *
- * Command strictCompoundCommand = new StrictCompoundCommand();
- * Command copyCommand = new CopyCommand(...);
- * strictCompoundCommand.add(copyCommand);
- *
- * Command addCommand =
- * new CommandWrapper()
- * {
- * public Command createCommand()
- * {
- * new AddCommand(parent, copyCommand.getResult());
- * }
- * };
- * strictCompoundCommand.append(addCommand);
- *
- *
- * </pre>
- *
- * Here the add command won't know which command to create until it has the
- * result of the copy command. The proxy makes sure the creation of the add
- * command is deferred and the strict composite ensures that execution
- * dependencies are met.
- */
-public class StrictCompoundCommand extends CompoundCommand {
- /**
- * The result for {@link Command#canUndo}.
- */
- protected boolean isUndoable;
-
- /**
- * Whether commands that have been tentatively executed need to be undone.
- */
- protected boolean isPessimistic;
-
- /**
- * Remember to call redo instead of execute for any command at or before
- * this index in the list.
- */
- protected int rightMostExecutedCommandIndex = -1;
-
- /**
- * Creates an empty instance.
- */
- public StrictCompoundCommand() {
- super();
- resultIndex = LAST_COMMAND_ALL;
- }
-
- /**
- * Creates an instance with the given label.
- *
- * @param label
- * the label.
- */
- public StrictCompoundCommand(String label) {
- super(label);
- resultIndex = LAST_COMMAND_ALL;
- }
-
- /**
- * Creates an instance with the given label and description.
- *
- * @param label
- * the label.
- * @param description
- * the description.
- */
- public StrictCompoundCommand(String label, String description) {
- super(label, description);
- resultIndex = LAST_COMMAND_ALL;
- }
-
- /**
- * Creates an instance with the given command list.
- *
- * @param commandList
- * the list of commands.
- */
- public StrictCompoundCommand(List commandList) {
- super(commandList);
- resultIndex = LAST_COMMAND_ALL;
- }
-
- /**
- * Creates an instance with the given label and command list.
- *
- * @param label
- * the label.
- * @param commandList
- * the list of commands.
- */
- public StrictCompoundCommand(String label, List commandList) {
- super(label, commandList);
- resultIndex = LAST_COMMAND_ALL;
- }
-
- /**
- * Creates an instance with the given label, description, and command
- * list.
- *
- * @param label
- * the label.
- * @param description
- * the description.
- * @param commandList
- * the list of commands.
- */
- public StrictCompoundCommand(String label, String description, List commandList) {
- super(label, description, commandList);
- resultIndex = LAST_COMMAND_ALL;
- }
-
- /**
- * Returns <code>false</code> if any command on the list returns
- * <code>false</code> for {@link Command#canExecute}, or if some
- * command before the last one can't be undone and hence we can't test all
- * the commands for executability.
- *
- * @return whether the command can execute.
- */
- protected boolean prepare() {
- // Go through the commands of the list.
- //
- ListIterator commands = commandList.listIterator();
-
- // If there are some...
- //
- if (commands.hasNext()) {
- boolean result = true;
-
- // The termination guard is in the body.
- //
- for (;;) {
- Command command = (Command) commands.next();
- if (command.canExecute()) {
- if (commands.hasNext()) {
- if (command.canUndo()) {
- try {
- if (commands.previousIndex() <= rightMostExecutedCommandIndex) {
- command.redo();
- }
- else {
- ++rightMostExecutedCommandIndex;
- command.execute();
- }
- }
- catch (RuntimeException exception) {
- Logger.logException(UnDoCommonMessages._UI_IgnoreException_exception, exception);
-
- result = false;
- break;
- }
- }
- else {
- // We can't undo it, so we'd better give up.
- //
- result = false;
- break;
- }
- }
- else {
- // Now is the best time to record isUndoable because
- // later we would have to do all the executes again!
- // This makes canUndo very simple!
- //
- isUndoable = command.canUndo();
- break;
- }
- }
- else {
- // If we can't execute this one, we just can't do it at
- // all.
- //
- result = false;
- break;
- }
- }
-
- // If we are pessimistic, then we need to undo all the commands
- // that we have executed so far.
- //
- if (isPessimistic) {
- // The most recently processed command will never have been
- // executed.
- //
- commands.previous();
-
- // We want to unroll all the effects of the previous commands.
- //
- while (commands.hasPrevious()) {
- Command command = (Command) commands.previous();
- command.undo();
- }
- }
-
- return result;
- }
- else {
- isUndoable = false;
- return false;
- }
- }
-
- /**
- * Calls {@link Command#execute} for each command in the list, but makes
- * sure to call redo for any commands that were previously executed to
- * compute canExecute. In the case that {@link #isPessimistic} is false,
- * only the last command will be executed since the others will have been
- * executed but not undone during {@link #prepare}.
- */
- public void execute() {
- if (isPessimistic) {
- for (ListIterator commands = commandList.listIterator(); commands.hasNext();) {
- try {
- // Either execute or redo the command, as appropriate.
- //
- Command command = (Command) commands.next();
- if (commands.previousIndex() <= rightMostExecutedCommandIndex) {
- command.redo();
- }
- else {
- command.execute();
- }
- }
- catch (RuntimeException exception) {
- // Skip over the command that threw the exception.
- //
- commands.previous();
-
- // Iterate back over the executed commands to undo them.
- //
- while (commands.hasPrevious()) {
- commands.previous();
- Command command = (Command) commands.previous();
- if (command.canUndo()) {
- command.undo();
- }
- else {
- break;
- }
- }
-
- throw exception;
- }
- }
- }
- else if (!commandList.isEmpty()) {
- Command command = (Command) commandList.get(commandList.size() - 1);
- command.execute();
- }
- }
-
- /**
- * Calls {@link Command#undo} for each command in the list. In the case
- * that {@link #isPessimistic} is false, only the last command will be
- * undone since the others will have been executed and not undo during
- * {@link #prepare}.
- */
- public void undo() {
- if (isPessimistic) {
- super.undo();
- }
- else if (!commandList.isEmpty()) {
- Command command = (Command) commandList.get(commandList.size() - 1);
- command.undo();
- }
- }
-
- /**
- * Calls {@link Command#redo} for each command in the list. In the case
- * that {@link #isPessimistic} is false, only the last command will be
- * redone since the others will have been executed and not undo during
- * {@link #prepare}.
- */
- public void redo() {
- if (isPessimistic) {
- super.redo();
- }
- else if (!commandList.isEmpty()) {
- Command command = (Command) commandList.get(commandList.size() - 1);
- command.redo();
- }
- }
-
- /**
- * Checks if the command can execute; if so, it is executed, appended to
- * the list, and <code>true</code> is returned, if not, it is just
- * disposed and <code>false</code> is returned. A typical use for this
- * is to execute commands created during the execution of another command,
- * e.g.,
- *
- * <pre>
- * class MyCommand extends AbstractCommand {
- * protected Command subcommand;
- *
- * //...
- *
- * public void execute()
- * {
- * // ...
- * StrictCompoundCommand subcommands = new StrictCompoundCommand();
- * subcommands.appendAndExecute(new AddCommand(...));
- * if (condition) subcommands.appendAndExecute(new AddCommand(...));
- * subcommand = subcommands.unwrap();
- * } public void undo() {
- * // ...
- * subcommand.undo();
- * }
- *
- * public void redo() {
- * // ...
- * subcommand.redo();
- * }
- *
- * public void dispose() {
- * // ...
- * if (subcommand != null) {
- * subcommand.dispose();
- * }
- * }
- * }
- *
- * </pre>
- *
- * @return whether the command was successfully executed and appended.
- */
- public boolean appendAndExecute(Command command) {
- if (command != null) {
- if (!isPrepared) {
- if (commandList.isEmpty()) {
- isPrepared = true;
- isExecutable = true;
- }
- else {
- isExecutable = prepare();
- isPrepared = true;
- isPessimistic = true;
- if (isExecutable) {
- execute();
- }
- }
- }
-
- if (command.canExecute()) {
- try {
- command.execute();
- commandList.add(command);
- ++rightMostExecutedCommandIndex;
- isUndoable = command.canUndo();
- return true;
- }
- catch (RuntimeException exception) {
- Logger.logException(UnDoCommonMessages._UI_IgnoreException_exception, exception);
- }
- }
-
- command.dispose();
- }
-
- return false;
- }
-
- /*
- * Javadoc copied from base class.
- */
- public String toString() {
- StringBuffer result = new StringBuffer(super.toString());
- result.append(" (isUndoable: " + isUndoable + ")"); //$NON-NLS-1$ //$NON-NLS-2$
- result.append(" (isPessimistic: " + isPessimistic + ")"); //$NON-NLS-1$ //$NON-NLS-2$
- result.append(" (rightMostExecutedCommandIndex: " + rightMostExecutedCommandIndex + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-
- return result.toString();
- }
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/UnDoCommonMessages.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/UnDoCommonMessages.java
deleted file mode 100644
index a5e5a9b..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/UnDoCommonMessages.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 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.emf.common.command;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- *
- */
-class UnDoCommonMessages extends NLS {
- private static final String BUNDLE_NAME = "org.eclipse.emf.common.command.UnDoCommonResources"; //$NON-NLS-1$
-
- private UnDoCommonMessages() {
- }
-
- static {
- // initialize resource bundle
- NLS.initializeMessages(BUNDLE_NAME, UnDoCommonMessages.class);
- }
- public static String _UI_UnexecutableCommand_label;
- public static String _UI_UnexecutableCommand_description;
- public static String _UI_IdentityCommand_label;
- public static String _UI_IdentityCommand_description;
- public static String _UI_IgnoreException_exception;
- public static String _UI_CompoundCommand_label;
- public static String _UI_CompoundCommand_description;
- public static String _UI_CommandWrapper_label;
- public static String _UI_CommandWrapper_description;
- public static String _EXC_Method_not_implemented;
- public static String _UI_AbstractCommand_label;
- public static String _UI_AbstractCommand_description;
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/UndoCommonResources.properties b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/UndoCommonResources.properties
deleted file mode 100644
index 5e5af74..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/UndoCommonResources.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-## These strings were copied from org.eclipse.emf.common/plugin.properties
-#
-_UI_UnexecutableCommand_label=Do Nothing
-_UI_UnexecutableCommand_description=Execute nothing whatsoever
-_UI_IdentityCommand_label=Identity
-_UI_IdentityCommand_description=Execute nothing but yield a result
-_UI_IgnoreException_exception=An exception was ignored during command execution
-_UI_CompoundCommand_label=Do Commands
-_UI_CompoundCommand_description=Execute a series of commands
-_UI_CommandWrapper_label=Wrapper
-_UI_CommandWrapper_description=Execute an empty command wrapper
-_EXC_Method_not_implemented=The method {0} is not implemented
-_UI_AbstractCommand_label=Do Command
-_UI_AbstractCommand_description=Execute a command
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/UnexecutableCommand.java b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/UnexecutableCommand.java
deleted file mode 100644
index cd87ee9..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/UnexecutableCommand.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: UnexecutableCommand.java,v 1.3 2005/06/06 05:36:11 david_williams Exp $
- */
-package org.eclipse.emf.common.command;
-
-
-
-/**
- * A singleton {@link UnexecutableCommand#INSTANCE} that cannot execute.
- */
-public class UnexecutableCommand extends AbstractCommand {
- /**
- * The one instance of this object.
- */
- public static final UnexecutableCommand INSTANCE = new UnexecutableCommand();
-
- /**
- * Only one private instance is created.
- */
- private UnexecutableCommand() {
- super(UnDoCommonMessages._UI_UnexecutableCommand_label, UnDoCommonMessages._UI_UnexecutableCommand_description);
- }
-
- /**
- * Returns <code>false</code>.
- *
- * @return <code>false</code>.
- */
- public boolean canExecute() {
- return false;
- }
-
- /**
- * Throws an exception if it should ever be called.
- *
- * @exception UnsupportedOperationException
- * always.
- */
- public void execute() {
- throw new RuntimeException("UnsupportedOperation"); //$NON-NLS-1$
- }
-
- /**
- * Returns <code>false</code>.
- *
- * @return <code>false</code>.
- */
- public boolean canUndo() {
- return false;
- }
-
- /**
- * Throws an exception if it should ever be called.
- *
- * @exception UnsupportedOperationException
- * always.
- */
- public void redo() {
- throw new RuntimeException("UnsupportedOperation"); //$NON-NLS-1$
- }
-}
diff --git a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/package.html b/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/package.html
deleted file mode 100644
index c6a2dfd..0000000
--- a/bundles/org.eclipse.wst.sse.core/src/org/eclipse/emf/common/command/package.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta name="generator" content="HTML Tidy, see www.w3.org" />
-<meta http-equiv="Content-Type"
-content="text/html; charset=ISO-8859-1" /><!--
-/**
- * <copyright>
- *
- * Copyright (c) 2002-2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- *
- * </copyright>
- *
- * $Id: package.html,v 1.2 2005/05/19 18:19:42 nitind Exp $
- */
--->
-<title></title>
-</head>
-<body>
-Provides a framework for implementing and composing commands.
-
-This was copied from the EMF common package as a temporary step
-as we transition to the new undo support in the base Eclipse.
-
-This package should be regarded as INTERNAL and UNSUPPORTED.
-
-</body>
-</html>
-
diff --git a/bundles/org.eclipse.wst.sse.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.sse.ui/META-INF/MANIFEST.MF
index 484854f..88170be 100644
--- a/bundles/org.eclipse.wst.sse.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.sse.ui/META-INF/MANIFEST.MF
@@ -58,5 +58,6 @@
org.eclipse.core.filebuffers,
org.eclipse.core.resources,
org.eclipse.core.runtime,
- org.eclipse.wst.validation
+ org.eclipse.wst.validation,
+ org.eclipse.emf.common
Eclipse-AutoStart: true