svn commit: r13490 - trunk/src_new/org/argouml: kernel uml/diagram

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2007-09-04 15:54:04-0700
New Revision: 13490

Added:
   trunk/src_new/org/argouml/kernel/AbstractCommand.java
      - copied, changed from r13489, /trunk/src_new/org/argouml/kernel/AbstractUndoableCommand.java
   trunk/src_new/org/argouml/kernel/Command.java
      - copied, changed from r13489, /trunk/src_new/org/argouml/kernel/UndoableCommand.java
   trunk/src_new/org/argouml/kernel/DefaultUndoManager.java
      - copied, changed from r13489, /trunk/src_new/org/argouml/kernel/UndoManager.java
Removed:
   trunk/src_new/org/argouml/kernel/AbstractUndoableCommand.java
   trunk/src_new/org/argouml/kernel/UndoableCommand.java
Modified:
   trunk/src_new/org/argouml/kernel/ProjectImpl.java
   trunk/src_new/org/argouml/kernel/ProjectManager.java
   trunk/src_new/org/argouml/uml/diagram/DiagramUndoManager.java

Log:
Move to a single Command interface. UndoManager becomes interface. Added javadoc

Copied: trunk/src_new/org/argouml/kernel/AbstractCommand.java (from r13489, /trunk/src_new/org/argouml/kernel/AbstractUndoableCommand.java)
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/kernel/AbstractCommand.java?view=diff&rev=13490&p1=/trunk/src_new/org/argouml/kernel/AbstractUndoableCommand.java&p2=trunk/src_new/org/argouml/kernel/AbstractCommand.java&r1=13489&r2=13490
==============================================================================
--- /trunk/src_new/org/argouml/kernel/AbstractUndoableCommand.java	(original)
+++ trunk/src_new/org/argouml/kernel/AbstractCommand.java	2007-09-04 15:54:04-0700
@@ -25,10 +25,10 @@
 package org.argouml.kernel;
 
 /**
- * The base class for any actions that can be undone by ActionUndo.
+ * The base class for any commands that can be undone by ActionUndo.
  * @author Bob Tarling
  */
-public abstract class AbstractUndoableCommand implements UndoableCommand {
+public abstract class AbstractCommand implements Command {
     
     public abstract void execute();
     

Removed: trunk/src_new/org/argouml/kernel/AbstractUndoableCommand.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/kernel/AbstractUndoableCommand.java?view=auto&rev=13489

Copied: trunk/src_new/org/argouml/kernel/Command.java (from r13489, /trunk/src_new/org/argouml/kernel/UndoableCommand.java)
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/kernel/Command.java?view=diff&rev=13490&p1=/trunk/src_new/org/argouml/kernel/UndoableCommand.java&p2=trunk/src_new/org/argouml/kernel/Command.java&r1=13489&r2=13490
==============================================================================
--- /trunk/src_new/org/argouml/kernel/UndoableCommand.java	(original)
+++ trunk/src_new/org/argouml/kernel/Command.java	2007-09-04 15:54:04-0700
@@ -29,9 +29,14 @@
  *
  * @author Bob
  */
-public interface UndoableCommand extends Command {
+public interface Command {
 
     /**
+     * To be implemented on the concrete memento to redo an instruction
+     */
+    public abstract void execute();
+    
+    /**
      * Perform undo an an undoable command that is in an undoable state
      */
     abstract void undo();

Copied: trunk/src_new/org/argouml/kernel/DefaultUndoManager.java (from r13489, /trunk/src_new/org/argouml/kernel/UndoManager.java)
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/kernel/DefaultUndoManager.java?view=diff&rev=13490&p1=/trunk/src_new/org/argouml/kernel/UndoManager.java&p2=trunk/src_new/org/argouml/kernel/DefaultUndoManager.java&r1=13489&r2=13490
==============================================================================
--- /trunk/src_new/org/argouml/kernel/UndoManager.java	(original)
+++ trunk/src_new/org/argouml/kernel/DefaultUndoManager.java	2007-09-04 15:54:04-0700
@@ -38,7 +38,7 @@
  * UndoManager is only temporarily singleton until changes are made to GEF.
  * @author Bob Tarling
  */
-public class UndoManager {
+public class DefaultUndoManager implements UndoManager {
 
     private int undoMax = 100;
     
@@ -49,12 +49,12 @@
     
     // TODO: A UndoChainStack may produce some reasuable code for
     // the undoStack and the redoStack/
-    private Stack<MacroCommand> undoStack = new Stack<MacroCommand>();
-    private Stack<MacroCommand> redoStack = new Stack<MacroCommand>();
+    private Stack<Interaction> undoStack = new Stack<Interaction>();
+    private Stack<Interaction> redoStack = new Stack<Interaction>();
     
-    private static final UndoManager INSTANCE = new UndoManager();
+    private static final UndoManager INSTANCE = new DefaultUndoManager();
 
-    private UndoManager() {
+    private DefaultUndoManager() {
         super();
     }
     
@@ -67,23 +67,19 @@
         return INSTANCE;
     }
     
-    /**
-     * Adds a new command to the undo stack.
-     * @param command the command.
-     */
     public void addCommand(Command command) {
         if (undoMax == 0) {
             return;
         }
         // Flag the command as to whether it is first in a chain
-        final MacroCommand macroCommand;
+        final Interaction macroCommand;
         if (newChain || undoStack.isEmpty()) {
             redoStack.clear();
             newChain = false;
             if (undoStack.size() > undoMax) {
                 undoStack.remove(0);
             }
-            macroCommand = new MacroCommand();
+            macroCommand = new Interaction();
             undoStack.push(macroCommand);
         } else {
             macroCommand = undoStack.peek();
@@ -91,36 +87,33 @@
         macroCommand.addCommand(command);
     }
     
-    /**
-     * Set the maximum number of command chains the stack can hold.
-     * @param max the maximum chain count
-     */
     public void setUndoMax(int max) {
         undoMax = max;
     }
 
     /**
-     * Undo the top MacroCommand on the undo stack and move
-     * it to the redo stack
+     * 
+     * @see org.argouml.kernel.UndoManager#undo()
      */
     public void undo() {
-        final MacroCommand command = undoStack.pop();
+        final Interaction command = undoStack.pop();
         command.undo();
         redoStack.push(command);
     }
     
     /**
-     * Redo the top MacroCommand on the undo stack and move
-     * it to the undo stack
+     * 
+     * @see org.argouml.kernel.UndoManager#redo()
      */
     public void redo() {
-        final MacroCommand command = redoStack.pop();
+        final Interaction command = redoStack.pop();
         command.execute();
         undoStack.push(command);
     }
     
     /**
-     * Empty all undoable and redoable items from the UndoManager
+     * 
+     * @see org.argouml.kernel.UndoManager#empty()
      */
     public void empty() {
         undoStack.clear();
@@ -128,14 +121,17 @@
     }
     
     /**
-     * Instructs the UndoManager that a new user interaction is about to take
-     * place. All commands received until this is called once more will make
-     * a single undoable unit.
+     * 
+     * @see org.argouml.kernel.UndoManager#startInteraction()
      */
     public void startInteraction() {
         newChain = true;
     }
  
+    /**
+     * @param listener
+     * @see org.argouml.kernel.UndoManager#addPropertyChangeListener(java.beans.PropertyChangeListener)
+     */
     public void addPropertyChangeListener(PropertyChangeListener listener) {
         listeners.add(listener);
     }
@@ -167,13 +163,13 @@
     }
     
     /**
-     * A MacroCommand is a Command the executes a list of sub-commands.
+     * An Interact is a Command the contains a list of sub-commands.
      * It represents a single user interaction and contains all the commands
      * executed as part of that interaction.
      *
      * @author Bob
      */
-    private class MacroCommand extends AbstractUndoableCommand {
+    private class Interaction extends AbstractCommand {
         
         private List<Command> commands = new ArrayList<Command>();
         
@@ -181,7 +177,7 @@
             final ListIterator<Command> it =
                 commands.listIterator(commands.size());
             while (it.hasPrevious()) {
-                ((UndoableCommand) it.previous()).undo();
+                it.previous().undo();
             }
         }
         
@@ -196,10 +192,7 @@
             final Iterator<Command> it = commands.iterator();
             while (it.hasNext()) {
                 final Command command = it.next();
-                if (!(command instanceof UndoableCommand)) {
-                    return false;
-                }
-                if (!((UndoableCommand) command).isUndoable()) {
+                if (!command.isUndoable()) {
                     return false;
                 }
             }

Modified: trunk/src_new/org/argouml/kernel/ProjectImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/kernel/ProjectImpl.java?view=diff&rev=13490&p1=trunk/src_new/org/argouml/kernel/ProjectImpl.java&p2=trunk/src_new/org/argouml/kernel/ProjectImpl.java&r1=13489&r2=13490
==============================================================================
--- trunk/src_new/org/argouml/kernel/ProjectImpl.java	(original)
+++ trunk/src_new/org/argouml/kernel/ProjectImpl.java	2007-09-04 15:54:04-0700
@@ -148,7 +148,7 @@
 
     private Collection trashcan = new ArrayList();
 
-    private UndoManager undoManager = UndoManager.getInstance();
+    private UndoManager undoManager = DefaultUndoManager.getInstance();
     
     /**
      * Constructor.
@@ -426,7 +426,7 @@
 
     public void setAuthorname(final String s) {
         final String oldAuthorName = authorname;
-        AbstractUndoableCommand memento = new AbstractUndoableCommand() {
+        AbstractCommand command = new AbstractCommand() {
             public void execute() {
                 authorname = s;
             }
@@ -435,8 +435,8 @@
                 authorname = oldAuthorName;
             }
         };
-        undoManager.addCommand(memento);
-        memento.execute();
+        undoManager.addCommand(command);
+        command.execute();
         setSaveEnabled(true);
     }
 
@@ -448,7 +448,7 @@
 
     public void setAuthoremail(final String s) {
         final String oldAuthorEmail = authoremail;
-        AbstractUndoableCommand memento = new AbstractUndoableCommand() {
+        AbstractCommand memento = new AbstractCommand() {
             public void execute() {
                 authoremail = s;
             }
@@ -480,7 +480,7 @@
 
     public void setDescription(final String s) {
         final String oldDescription = description;
-        AbstractUndoableCommand memento = new AbstractUndoableCommand() {
+        AbstractCommand memento = new AbstractCommand() {
             public void execute() {
                 description = s;
             }

Modified: trunk/src_new/org/argouml/kernel/ProjectManager.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/kernel/ProjectManager.java?view=diff&rev=13490&p1=trunk/src_new/org/argouml/kernel/ProjectManager.java&p2=trunk/src_new/org/argouml/kernel/ProjectManager.java&r1=13489&r2=13490
==============================================================================
--- trunk/src_new/org/argouml/kernel/ProjectManager.java	(original)
+++ trunk/src_new/org/argouml/kernel/ProjectManager.java	2007-09-04 15:54:04-0700
@@ -345,7 +345,7 @@
         if (saveAction != null) {
             saveAction.setEnabled(true);
         }
-        AbstractUndoableCommand wrappedMemento = new AbstractUndoableCommand() {
+        AbstractCommand wrappedMemento = new AbstractCommand() {
             private ModelCommand modelMemento = memento;
             public void undo() {
                 modelMemento.undo();

Removed: trunk/src_new/org/argouml/kernel/UndoableCommand.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/kernel/UndoableCommand.java?view=auto&rev=13489

Modified: trunk/src_new/org/argouml/uml/diagram/DiagramUndoManager.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/uml/diagram/DiagramUndoManager.java?view=diff&rev=13490&p1=trunk/src_new/org/argouml/uml/diagram/DiagramUndoManager.java&p2=trunk/src_new/org/argouml/uml/diagram/DiagramUndoManager.java&r1=13489&r2=13490
==============================================================================
--- trunk/src_new/org/argouml/uml/diagram/DiagramUndoManager.java	(original)
+++ trunk/src_new/org/argouml/uml/diagram/DiagramUndoManager.java	2007-09-04 15:54:04-0700
@@ -79,7 +79,7 @@
     
     
     private class DiagramCommand
-            extends org.argouml.kernel.AbstractUndoableCommand {
+            extends org.argouml.kernel.AbstractCommand {
         
         private final Memento memento;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.