diff --git a/jhotdraw-actions/src/main/java/org/jhotdraw/action/edit/UndoAction.java b/jhotdraw-actions/src/main/java/org/jhotdraw/action/edit/UndoAction.java index 74c4f2cea..96c18e328 100644 --- a/jhotdraw-actions/src/main/java/org/jhotdraw/action/edit/UndoAction.java +++ b/jhotdraw-actions/src/main/java/org/jhotdraw/action/edit/UndoAction.java @@ -19,7 +19,7 @@ * Undoes the last user action. *
* This action requires that the View returns a project - * specific undo action when invoking getActionMap("redo") on a View. + * specific Undo.java action when invoking getActionMap("redo") on a View. *
* This action is called when the user selects the Undo item in the Edit * menu. The menu item is automatically created by the application. @@ -34,7 +34,7 @@ public class UndoAction extends AbstractViewAction { private static final long serialVersionUID = 1L; - public static final String ID = "edit.undo"; + public static final String ID = "edit.Undo.java"; private ResourceBundleUtil labels = ResourceBundleUtil.getBundle("org.jhotdraw.action.Labels"); private PropertyChangeListener redoActionPropertyListener = new PropertyChangeListener() { @Override diff --git a/jhotdraw-core/src/main/java/org/jhotdraw/draw/AttributeKey.java b/jhotdraw-core/src/main/java/org/jhotdraw/draw/AttributeKey.java index e08b6a159..656e5f84c 100644 --- a/jhotdraw-core/src/main/java/org/jhotdraw/draw/AttributeKey.java +++ b/jhotdraw-core/src/main/java/org/jhotdraw/draw/AttributeKey.java @@ -185,7 +185,7 @@ public void set(Figure f, T value) { /** * Sets the attribute and returns an UndoableEditEvent which can be used - * to undo it. + * to Undo.java it. *
* Note: Unlike in previous versions of JHotDraw 7, this method does * not call {@code f.willChange()} before setting the value, and diff --git a/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/AttributeChangeEdit.java b/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/AttributeChangeEdit.java index adc4747c4..8af5f4685 100644 --- a/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/AttributeChangeEdit.java +++ b/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/AttributeChangeEdit.java @@ -12,7 +12,7 @@ import org.jhotdraw.draw.*; /** - * An {@code UndoableEdit} event which can undo a change of a {@link Figure} + * An {@code UndoableEdit} event which can Undo.java a change of a {@link Figure} * attribute. * * @author Werner Randelshofer diff --git a/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/BezierNodeEdit.java b/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/BezierNodeEdit.java index c07d174c0..e77dae307 100644 --- a/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/BezierNodeEdit.java +++ b/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/BezierNodeEdit.java @@ -16,7 +16,7 @@ import org.jhotdraw.util.ResourceBundleUtil; /** - * An {@code UndoableEdit} event which can undo a change of a node in + * An {@code UndoableEdit} event which can Undo.java a change of a node in * a {@link BezierFigure}. * * @version $Id: BezierNodeEdit.java -1 $ diff --git a/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/TransformEdit.java b/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/TransformEdit.java index 3fa3b444e..d462b5336 100644 --- a/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/TransformEdit.java +++ b/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/TransformEdit.java @@ -15,7 +15,7 @@ import org.jhotdraw.util.*; /** - * An {@code UndoableEdit} event which can undo a lossless transform of + * An {@code UndoableEdit} event which can Undo.java a lossless transform of * {@link Figure}s by applying the inverse of the transform to the figures. *
* This object is useful for undoing lossless transformations, such as the diff --git a/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/TransformRestoreEdit.java b/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/TransformRestoreEdit.java index 971bad72f..274374659 100644 --- a/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/TransformRestoreEdit.java +++ b/jhotdraw-core/src/main/java/org/jhotdraw/draw/event/TransformRestoreEdit.java @@ -13,7 +13,7 @@ import org.jhotdraw.util.*; /** - * An {@code UndoableEdit} event which can undo a lossy transform of a single + * An {@code UndoableEdit} event which can Undo.java a lossy transform of a single * {@link Figure} by restoring the figure using its transform restore data. *
* This object is useful for undoing lossy transformations, such as the diff --git a/jhotdraw-core/src/main/java/org/jhotdraw/draw/figure/Figure.java b/jhotdraw-core/src/main/java/org/jhotdraw/draw/figure/Figure.java index 2e9b9ab11..0ed45f30e 100644 --- a/jhotdraw-core/src/main/java/org/jhotdraw/draw/figure/Figure.java +++ b/jhotdraw-core/src/main/java/org/jhotdraw/draw/figure/Figure.java @@ -274,7 +274,7 @@ public interface Figure extends Cloneable, Serializable { * Transforms the shape of the Figure. Transformations using double * precision arithmethics are inherently lossy operations. Therefore it is * recommended to use getTransformRestoreData() restoreTransformTo() to - * provide lossless undo/redo functionality. + * provide lossless Undo.java/redo functionality. *
* This is a basic operation which does not fire events. Use the following
* code sequence, if you need event firing:
diff --git a/jhotdraw-core/src/main/java/org/jhotdraw/draw/figure/LineConnectionFigure.java b/jhotdraw-core/src/main/java/org/jhotdraw/draw/figure/LineConnectionFigure.java
index df413a988..8aaf4c464 100644
--- a/jhotdraw-core/src/main/java/org/jhotdraw/draw/figure/LineConnectionFigure.java
+++ b/jhotdraw-core/src/main/java/org/jhotdraw/draw/figure/LineConnectionFigure.java
@@ -306,7 +306,7 @@ public void removeNotify(Drawing drawing) {
}
// Note: we do not set the connectors to null here, because we
// need them when we are added back to a drawing again. For example,
- // when an undo is performed, after the LineConnection has been
+ // when an Undo.java is performed, after the LineConnection has been
// deleted.
/*
setStartConnector(null);
diff --git a/jhotdraw-core/src/main/java/org/jhotdraw/draw/handle/ResizeHandleKit.java b/jhotdraw-core/src/main/java/org/jhotdraw/draw/handle/ResizeHandleKit.java
index 87b1d3255..21add24e6 100644
--- a/jhotdraw-core/src/main/java/org/jhotdraw/draw/handle/ResizeHandleKit.java
+++ b/jhotdraw-core/src/main/java/org/jhotdraw/draw/handle/ResizeHandleKit.java
@@ -112,7 +112,7 @@ private static class ResizeHandle extends LocatorHandle {
*/
private int sx, sy;
/**
- * Geometry for undo.
+ * Geometry for Undo.java.
*/
private Object geometry;
/**
diff --git a/jhotdraw-gui/src/main/java/org/jhotdraw/gui/plaf/palette/PaletteFontChooserUI.java b/jhotdraw-gui/src/main/java/org/jhotdraw/gui/plaf/palette/PaletteFontChooserUI.java
index ae38e1a61..c6180b0a7 100644
--- a/jhotdraw-gui/src/main/java/org/jhotdraw/gui/plaf/palette/PaletteFontChooserUI.java
+++ b/jhotdraw-gui/src/main/java/org/jhotdraw/gui/plaf/palette/PaletteFontChooserUI.java
@@ -131,7 +131,7 @@ protected void installListeners(JFontChooser fc) {
* Reverses configuration which was done on the specified component during
* installUI. This method is invoked when this
* UIComponent instance is being removed as the UI delegate
- * for the specified component. This method should undo the
+ * for the specified component. This method should Undo.java the
* configuration performed in installUI, being careful to
* leave the JComponent instance in a clean state (no
* extraneous listeners, look-and-feel-specific property objects, etc.).
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/draw/DrawView.java b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/draw/DrawView.java
index ef2f80d99..9bd832875 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/draw/DrawView.java
+++ b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/draw/DrawView.java
@@ -53,7 +53,7 @@ public class DrawView extends AbstractView {
private static final long serialVersionUID = 1L;
/**
- * Each DrawView uses its own undo redo manager.
+ * Each DrawView uses its own Undo.java redo manager.
* This allows for undoing and redoing actions per view.
*/
private UndoRedoManager undo;
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/net/NetView.java b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/net/NetView.java
index 380d42e72..96a64a9d6 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/net/NetView.java
+++ b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/net/NetView.java
@@ -50,7 +50,7 @@ public class NetView extends AbstractView {
private static final long serialVersionUID = 1L;
public static final String GRID_VISIBLE_PROPERTY = "gridVisible";
/**
- * Each NetView uses its own undo redo manager.
+ * Each NetView uses its own Undo.java redo manager.
* This allows for undoing and redoing actions per view.
*/
private UndoRedoManager undo;
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/odg/ODGView.java b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/odg/ODGView.java
index 83a1eba02..f7c17ebf0 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/odg/ODGView.java
+++ b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/odg/ODGView.java
@@ -62,7 +62,7 @@ public class ODGView extends AbstractView {
public static final String GRID_VISIBLE_PROPERTY = "gridVisible";
protected JFileURIChooser exportChooser;
/**
- * Each ODGView uses its own undo redo manager.
+ * Each ODGView uses its own Undo.java redo manager.
* This allows for undoing and redoing actions per view.
*/
private UndoRedoManager undo;
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/pert/PertView.java b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/pert/PertView.java
index e50c022e2..8031ad44a 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/pert/PertView.java
+++ b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/pert/PertView.java
@@ -49,7 +49,7 @@ public class PertView extends AbstractView {
private static final long serialVersionUID = 1L;
public static final String GRID_VISIBLE_PROPERTY = "gridVisible";
/**
- * Each view uses its own undo redo manager.
+ * Each view uses its own Undo.java redo manager.
* This allows for undoing and redoing actions per view.
*/
private UndoRedoManager undo;
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/SVGView.java b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/SVGView.java
index c09b41fef..a341ae090 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/SVGView.java
+++ b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/SVGView.java
@@ -45,7 +45,7 @@ public class SVGView extends AbstractView {
public static final String GRID_VISIBLE_PROPERTY = "gridVisible";
protected JFileURIChooser exportChooser;
/**
- * Each SVGView uses its own undo redo manager.
+ * Each SVGView uses its own Undo.java redo manager.
* This allows for undoing and redoing actions per view.
*/
private UndoRedoManager undo;
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/gui/ActionsToolBar.java b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/gui/ActionsToolBar.java
index 0a40d2f6a..81087e7c8 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/gui/ActionsToolBar.java
+++ b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/gui/ActionsToolBar.java
@@ -130,7 +130,7 @@ protected JComponent createDisclosedComponent(int state) {
btn = new JButton(undoManager.getUndoAction());
btn.setUI((PaletteButtonUI) PaletteButtonUI.createUI(btn));
btn.setText(null);
- labels.configureToolBarButton(btn, "edit.undo");
+ labels.configureToolBarButton(btn, "edit.Undo.java");
btn.putClientProperty("hideActionText", Boolean.TRUE);
gbc = new GridBagConstraints();
gbc.gridy = 0;
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/teddy/TeddyView.java b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/teddy/TeddyView.java
index 137b88dbd..77ef1688f 100755
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/teddy/TeddyView.java
+++ b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/teddy/TeddyView.java
@@ -96,7 +96,7 @@ public boolean getScrollableTracksViewportHeight() {
}
protected EditorPanel editorViewport;
/**
- * The undo/redo manager.
+ * The Undo.java/redo manager.
*/
protected UndoRedoManager undoManager;
/**
diff --git a/jhotdraw-utils/src/main/java/org/jhotdraw/undo/CompositeEdit.java b/jhotdraw-utils/src/main/java/org/jhotdraw/undo/CompositeEdit.java
index dc097d75f..9f7446ca3 100644
--- a/jhotdraw-utils/src/main/java/org/jhotdraw/undo/CompositeEdit.java
+++ b/jhotdraw-utils/src/main/java/org/jhotdraw/undo/CompositeEdit.java
@@ -10,7 +10,7 @@
import javax.swing.undo.*;
/**
- * This is basically the same like javax.swing.undo.CompoundEdit but
+ * This is basically the same like javax.swing.Undo.java.CompoundEdit but
* it has a slightly different behaviour:
* The compound edit ends, when it is added to itself. This way it
* can be fired two times to an UndoManager: The first time, when
@@ -105,7 +105,7 @@ public String getPresentationName() {
}
/**
- * Returns the undo presentation name.
+ * Returns the Undo.java presentation name.
* If the presentation name is null, then CompoundEdit.getUndoPresentationName
* is returned.
*
diff --git a/jhotdraw-utils/src/main/java/org/jhotdraw/undo/PropertyChangeEdit.java b/jhotdraw-utils/src/main/java/org/jhotdraw/undo/PropertyChangeEdit.java
index c2eaeb0cf..da4c8dc42 100644
--- a/jhotdraw-utils/src/main/java/org/jhotdraw/undo/PropertyChangeEdit.java
+++ b/jhotdraw-utils/src/main/java/org/jhotdraw/undo/PropertyChangeEdit.java
@@ -15,7 +15,7 @@
import javax.swing.undo.UndoableEdit;
/**
- * An {@code UndoableEdit} event which can undo a change of a JavaBeans property.
+ * An {@code UndoableEdit} event which can Undo.java a change of a JavaBeans property.
*
* @author Werner Randelshofer
* @version $Id$
diff --git a/jhotdraw-utils/src/main/java/org/jhotdraw/undo/UndoRedoManager.java b/jhotdraw-utils/src/main/java/org/jhotdraw/undo/UndoRedoManager.java
index 40ac0b4ce..7000c8640 100644
--- a/jhotdraw-utils/src/main/java/org/jhotdraw/undo/UndoRedoManager.java
+++ b/jhotdraw-utils/src/main/java/org/jhotdraw/undo/UndoRedoManager.java
@@ -10,18 +10,19 @@
import java.awt.event.*;
import java.beans.*;
import java.util.*;
+import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.undo.*;
import org.jhotdraw.util.*;
/**
- * Same as javax.swing.UndoManager but provides actions for undo and
+ * Same as javax.swing.UndoManager but provides actions for Undo.java and
* redo operations.
*
* @author Werner Randelshofer
* @version $Id$
*/
-public class UndoRedoManager extends UndoManager { //javax.swing.undo.UndoManager {
+public class UndoRedoManager extends UndoManager { //javax.swing.Undo.java.UndoManager {
private static final long serialVersionUID = 1L;
protected PropertyChangeSupport propertySupport = new PropertyChangeSupport(this);
@@ -38,7 +39,7 @@ public class UndoRedoManager extends UndoManager { //javax.swing.undo.UndoManage
*/
private boolean hasSignificantEdits = false;
/**
- * This flag is set to true when an undo or redo
+ * This flag is set to true when an Undo.java or redo
* operation is in progress. The UndoRedoManager
* ignores all incoming UndoableEdit events while
* this flag is true.
@@ -71,7 +72,7 @@ private class UndoAction
private static final long serialVersionUID = 1L;
public UndoAction() {
- labels.configureAction(this, "edit.undo");
+ labels.configureAction(this, "edit.Undo.java");
setEnabled(false);
}
@@ -83,7 +84,7 @@ public void actionPerformed(ActionEvent evt) {
try {
undo();
} catch (CannotUndoException e) {
- System.err.println("Cannot undo: " + e);
+ System.err.println("Cannot Undo.java: " + e);
e.printStackTrace();
}
}
@@ -115,7 +116,7 @@ public void actionPerformed(ActionEvent evt) {
}
}
/**
- * The undo action instance.
+ * The Undo.java action instance.
*/
private UndoAction undoAction;
/**
@@ -125,7 +126,7 @@ public void actionPerformed(ActionEvent evt) {
public static ResourceBundleUtil getLabels() {
if (labels == null) {
- labels = ResourceBundleUtil.getBundle("org.jhotdraw.undo.Labels");
+ labels = ResourceBundleUtil.getBundle("org.jhotdraw.Undo.java.Labels");
}
return labels;
}
@@ -139,8 +140,8 @@ public UndoRedoManager() {
redoAction = new RedoAction();
}
- public void setLocale(Locale l) {
- labels = ResourceBundleUtil.getBundle("org.jhotdraw.undo.Labels", l);
+ public static void setLocale(Locale l) {
+ labels = ResourceBundleUtil.getBundle("org.jhotdraw.Undo.java.Labels", l);
}
/**
@@ -203,7 +204,7 @@ public boolean addEdit(UndoableEdit anEdit) {
}
/**
- * Gets the undo action for use as an Undo menu item.
+ * Gets the Undo.java action for use as an Undo menu item.
*/
public Action getUndoAction() {
return undoAction;
@@ -250,7 +251,7 @@ private void updateActions() {
/**
* Undoes the last edit event.
* The UndoRedoManager ignores all incoming UndoableEdit events,
- * while undo is in progress.
+ * while Undo.java is in progress.
*/
@Override
public void undo()
@@ -284,7 +285,7 @@ public void redo()
/**
* Undoes or redoes the last edit event.
* The UndoRedoManager ignores all incoming UndoableEdit events,
- * while undo or redo is in progress.
+ * while Undo.java or redo is in progress.
*/
@Override
public void undoOrRedo()
diff --git a/jhotdraw-utils/src/main/java/org/jhotdraw/undo/package-info.java b/jhotdraw-utils/src/main/java/org/jhotdraw/undo/package-info.java
index a1f1760cb..4dae4f60a 100644
--- a/jhotdraw-utils/src/main/java/org/jhotdraw/undo/package-info.java
+++ b/jhotdraw-utils/src/main/java/org/jhotdraw/undo/package-info.java
@@ -8,7 +8,7 @@
* @version $Id$
*/
/**
- * Provides undo/redo support leveraging the javax.swing.undo package.
+ * Provides Undo.java/redo support leveraging the javax.swing.Undo.java package.
*
*/
package org.jhotdraw.undo;
diff --git a/jhotdraw-utils/src/main/java/org/jhotdraw/util/ResourceBundleUtil.java b/jhotdraw-utils/src/main/java/org/jhotdraw/util/ResourceBundleUtil.java
index 2945c8223..a2df1653c 100644
--- a/jhotdraw-utils/src/main/java/org/jhotdraw/util/ResourceBundleUtil.java
+++ b/jhotdraw-utils/src/main/java/org/jhotdraw/util/ResourceBundleUtil.java
@@ -25,9 +25,9 @@
* property name and format type between "${" and "}".
*
* For example, if there is a {@code "imagedir"} property with the value
- * {@code "/org/jhotdraw/undo/images"}, then this could be used in an attribute
+ * {@code "/org/jhotdraw/Undo.java/images"}, then this could be used in an attribute
* like this: ${imagedir}/editUndo.png. This is resolved at run-time
- * as {@code /org/jhotdraw/undo/images/editUndo.png}.
+ * as {@code /org/jhotdraw/Undo.java/images/editUndo.png}.
*
* Property names in placeholders can contain modifiers. Modifiers are written
* between @code "[$"} and {@code "]"}. Each modifier has a fallback chain.
diff --git a/jhotdraw-utils/src/test/java/org/jhotdraw/geom/BezierPathNGTest.java b/jhotdraw-utils/src/test/java/org/jhotdraw/geom/BezierPathNGTest.java
deleted file mode 100644
index c798f13fc..000000000
--- a/jhotdraw-utils/src/test/java/org/jhotdraw/geom/BezierPathNGTest.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2015 JHotDraw.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301 USA
- */
-package org.jhotdraw.geom;
-
-import java.awt.geom.Path2D;
-import java.awt.geom.PathIterator;
-import java.awt.geom.Point2D;
-import static org.testng.Assert.*;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/**
- *
- * @author toben
- */
-public class BezierPathNGTest {
-
- public BezierPathNGTest() {
- }
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @BeforeMethod
- public void setUpMethod() throws Exception {
- }
-
- @AfterMethod
- public void tearDownMethod() throws Exception {
- }
-
- @Test
- public void testToGeneralPath() {
- BezierPath instance = new BezierPath();
- Point2D.Double c0 = new Point2D.Double(0.0004, 0.002);
- instance.add(c0);
- c0 = new Point2D.Double(21.0004, 56.92827);
- instance.add(c0);
- Path2D.Double gp = instance.toGeneralPath();
- PathIterator pathIterator = gp.getPathIterator(null);
- double[] coords = new double[2];
- int i = 0;
- while (pathIterator.isDone() == false) {
- pathIterator.currentSegment(coords);
- for (int j = 0; j < 3; j++) {
- assertEquals(coords[0], instance.get(i).getControlPoint(j).x);
- assertEquals(coords[1], instance.get(i).getControlPoint(j).y);
- }
- i++;
- pathIterator.next();
- }
- }
-
- /**
- * Test of toPolygonArray method, of class BezierPath.
- */
- @Test
- public void testToPolygonArray() {
- BezierPath instance = new BezierPath();
- Point2D.Double c0 = new Point2D.Double(0.0004, 0.002);
- instance.add(c0);
- c0 = new Point2D.Double(21.0004, 56.92827);
- instance.add(c0);
- Point2D.Double[] toPolygonArray = instance.toPolygonArray();
- assertEquals(toPolygonArray.length, 2);
- for (int i = 0; i < toPolygonArray.length; i++) {
- for (int j = 0; j < 3; j++) {
- assertEquals(toPolygonArray[i], instance.get(i).getControlPoint(j));
- }
- }
- }
-
- @Test
- public void testPathIterator() {
- BezierPath instance = new BezierPath();
- Point2D.Double c0 = new Point2D.Double(0.0004, 0.002);
- instance.add(c0);
- c0 = new Point2D.Double(21.0004, 56.92827);
- instance.add(c0);
- PathIterator pathIterator = instance.getPathIterator(null);
- double[] coords = new double[2];
- int i = 0;
- while (pathIterator.isDone() == false) {
- pathIterator.currentSegment(coords);
- for (int j = 0; j < 3; j++) {
- assertEquals(coords[0], instance.get(i).getControlPoint(j).x);
- assertEquals(coords[1], instance.get(i).getControlPoint(j).y);
- }
- i++;
- pathIterator.next();
- }
- }
-
- @Test
- public void testPathIterator2() {
- BezierPath instance = new BezierPath();
- Point2D.Double c0 = new Point2D.Double(0.0004, 0.002);
- instance.add(c0);
- c0 = new Point2D.Double(21.0004, 56.92827);
- instance.add(c0);
- PathIterator pathIterator = instance.getPathIterator(null, 4);
- double[] coords = new double[2];
- int i = 0;
- while (pathIterator.isDone() == false) {
- pathIterator.currentSegment(coords);
- for (int j = 0; j < 3; j++) {
- assertEquals(coords[0], instance.get(i).getControlPoint(j).x);
- assertEquals(coords[1], instance.get(i).getControlPoint(j).y);
- }
- i++;
- pathIterator.next();
- }
- }
-}
diff --git a/jhotdraw-utils/test/java/org.jhotdraw/undo/ReentrantEdit.java b/jhotdraw-utils/test/java/org.jhotdraw/undo/ReentrantEdit.java
new file mode 100644
index 000000000..fbbc43743
--- /dev/null
+++ b/jhotdraw-utils/test/java/org.jhotdraw/undo/ReentrantEdit.java
@@ -0,0 +1,22 @@
+package org.jhotdraw.undo;
+
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.undo.CannotUndoException;
+
+/** Edit that tries to register another edit while being undone (BR7). */
+class ReentrantEdit extends AbstractUndoableEdit {
+ private static final long serialVersionUID = 1L;
+ private final UndoRedoManager manager;
+ private final TestEdit nested;
+
+ ReentrantEdit(UndoRedoManager manager, TestEdit nested) {
+ this.manager = manager;
+ this.nested = nested;
+ }
+
+ @Override public void undo() throws CannotUndoException {
+ super.undo();
+ manager.addEdit(nested); // must be ignored & killed by the manager
+ }
+ @Override public boolean isSignificant() { return true; }
+}
\ No newline at end of file
diff --git a/jhotdraw-utils/test/java/org.jhotdraw/undo/TestEdit.java b/jhotdraw-utils/test/java/org.jhotdraw/undo/TestEdit.java
new file mode 100644
index 000000000..5a2b87f4f
--- /dev/null
+++ b/jhotdraw-utils/test/java/org.jhotdraw/undo/TestEdit.java
@@ -0,0 +1,38 @@
+package org.jhotdraw.undo
+
+import javax.swing.undo.AbstractUndoableEdit;
+import javax.swing.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
+
+class TestEdit extends AbstractUndoableEdit {
+ private static final long serialVersionUID = 1L;
+ private final StringBuilder model; private final String token;
+ private final boolean significant;
+ int undoCount = 0, redoCount = 0, dieCount = 0;
+
+ TestEdit(StringBuilder model, String token) { this(model, token, true); }
+
+ TestEdit(StringBuilder model, String token, boolean significant) {
+ this.model = model;
+ this.token = token;
+ this.significant = significant;
+ this.model.append(token); // simulate the original "do"
+ }
+
+ @Override public void undo() throws CannotUndoException {
+ super.undo();
+ undoCount++;
+ int idx = model.lastIndexOf(token);
+ if (idx >= 0) model.delete(idx, idx + token.length());
+ }
+
+ @Override public void redo() throws CannotRedoException {
+ super.redo();
+ redoCount++;
+ model.append(token);
+ }
+
+ @Override public void die() { super.die(); dieCount++; }
+ @Override public boolean isSignificant() { return significant; }
+ @Override public String getPresentationName() { return token; }
+}
\ No newline at end of file
diff --git a/jhotdraw-utils/test/java/org.jhotdraw/undo/UndoRedoManagerTest.java b/jhotdraw-utils/test/java/org.jhotdraw/undo/UndoRedoManagerTest.java
new file mode 100644
index 000000000..a5c24b8f4
--- /dev/null
+++ b/jhotdraw-utils/test/java/org.jhotdraw/undo/UndoRedoManagerTest.java
@@ -0,0 +1,184 @@
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.swing.Action;
+import javax.swing.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+/** * Class-level unit tests for the Undo/Redo feature (UndoRedoManager). * Each test is mapped to a business rule (BRx) documented in the test plan. */
+public class UndoRedoManagerTest {
+ private UndoRedoManager manager;
+ private StringBuilder model;
+ @Before
+ public void setUp() {
+ manager = new UndoRedoManager();
+ model = new StringBuilder();
+ }
+
+ // ===== BR1 : Undo reverts the most recent edit =======================
+ @Test
+ public void undo_revertsLastEdit() {
+ manager.addEdit(new TestEdit(model, "A"));
+ assertEquals("A", model.toString());
+
+ manager.undo();
+
+ assertEquals("Undo must revert the last edit", "", model.toString());
+ }
+
+ // ===== BR2 : Multiple undos revert in reverse order ==================
+ @Test
+ public void undo_revertsInReverseOrder() {
+ manager.addEdit(new TestEdit(model, "A"));
+ manager.addEdit(new TestEdit(model, "B"));
+ manager.addEdit(new TestEdit(model, "C"));
+ assertEquals("ABC", model.toString());
+
+ manager.undo();
+ assertEquals("AB", model.toString());
+ manager.undo();
+ assertEquals("A", model.toString());
+ manager.undo();
+ assertEquals("", model.toString());
+ }
+
+ // ===== BR3 : Redo re-applies the most recently undone edit ===========
+ @Test
+ public void redo_reappliesUndoneEdit() {
+ manager.addEdit(new TestEdit(model, "A"));
+ manager.undo();
+ assertEquals("", model.toString());
+
+ manager.redo();
+ assertEquals("Redo must re-apply the undone edit", "A", model.toString());
+ }
+
+ // ===== BR4 : Multiple redos re-apply in original order ===============
+ @Test
+ public void redo_reappliesInOriginalOrder() {
+ manager.addEdit(new TestEdit(model, "A"));
+ manager.addEdit(new TestEdit(model, "B"));
+ manager.undo();
+ manager.undo();
+ assertEquals("", model.toString());
+
+ manager.redo();
+ assertEquals("A", model.toString());
+ manager.redo();
+ assertEquals("AB", model.toString());
+ }
+
+ // ===== BR5 : New edit after undo discards redo history ===============
+ @Test
+ public void addEdit_afterUndo_clearsRedoHistory() {
+ manager.addEdit(new TestEdit(model, "A"));
+ manager.addEdit(new TestEdit(model, "B"));
+ manager.undo(); // -> "A", redo available
+ assertTrue(manager.canRedo());
+
+ manager.addEdit(new TestEdit(model, "C")); // -> "AC"
+ assertFalse("A new edit must clear the redo stack", manager.canRedo());
+ assertEquals("AC", model.toString());
+ }
+
+ // ===== BR6 : Undo/redo fail safely when unavailable ==================
+ @Test(expected = CannotUndoException.class)
+ public void undo_withNothingToUndo_throws() {
+ manager.undo();
+ }
+
+ @Test(expected = CannotRedoException.class)
+ public void redo_withNothingToRedo_throws() {
+ manager.addEdit(new TestEdit(model, "A"));
+ manager.redo(); // nothing has been undone
+ }
+
+ // ===== BR7 : Edits during undo are ignored and killed ================
+ @Test
+ public void editsAddedDuringUndo_areIgnoredAndDie() {
+ TestEdit nested = new TestEdit(new StringBuilder(), "N");
+ manager.addEdit(new ReentrantEdit(manager, nested));
+
+ manager.undo();
+
+ assertEquals("Edit added during undo must be die()'d", 1, nested.dieCount);
+ assertEquals("Killed edit must not run its undo logic", 0, nested.undoCount);
+ }
+
+ // ===== BR8 : canUndo / canRedo reflect state =========================
+ @Test
+ public void canUndoCanRedo_reflectAvailableOperations() {
+ assertFalse(manager.canUndo());
+ assertFalse(manager.canRedo());
+
+ manager.addEdit(new TestEdit(model, "A"));
+ assertTrue(manager.canUndo());
+ assertFalse(manager.canRedo());
+
+ manager.undo();
+ assertFalse(manager.canUndo());
+ assertTrue(manager.canRedo());
+
+ manager.redo();
+ assertTrue(manager.canUndo());
+ assertFalse(manager.canRedo());
+ }
+
+ // ===== BR9 : Significant-edit flag + change event ====================
+ @Test
+ public void significantEdit_setsFlagAndFiresEvent() {
+ final List