diff --git a/src/main/java/com/gluonhq/richtext/Selection.java b/src/main/java/com/gluonhq/richtext/Selection.java index c06d023b..655a4f93 100644 --- a/src/main/java/com/gluonhq/richtext/Selection.java +++ b/src/main/java/com/gluonhq/richtext/Selection.java @@ -51,7 +51,7 @@ public int hashCode() { @Override public String toString() { - return "Selection{" + + return "Selection {" + "start=" + start + ", end=" + end + '}'; diff --git a/src/main/java/com/gluonhq/richtext/undo/AbstractCommand.java b/src/main/java/com/gluonhq/richtext/undo/AbstractCommand.java index b38909f2..a0df10e8 100644 --- a/src/main/java/com/gluonhq/richtext/undo/AbstractCommand.java +++ b/src/main/java/com/gluonhq/richtext/undo/AbstractCommand.java @@ -8,13 +8,18 @@ public abstract class AbstractCommand { protected void storeContext(T context){} protected void restoreContext(T context){} + public final void execute(T context) { + storeContext(context); + doRedo(context); + } + public final void undo(T context) { doUndo(context); restoreContext(context); } public final void redo(T context) { - storeContext(context); + restoreContext(context); doRedo(context); } diff --git a/src/main/java/com/gluonhq/richtext/undo/CommandManager.java b/src/main/java/com/gluonhq/richtext/undo/CommandManager.java index 2eb26abd..1f26bd1f 100644 --- a/src/main/java/com/gluonhq/richtext/undo/CommandManager.java +++ b/src/main/java/com/gluonhq/richtext/undo/CommandManager.java @@ -25,7 +25,7 @@ public CommandManager(T context, Runnable runnable) { } public void execute(AbstractCommand cmd) { - Objects.requireNonNull(cmd).redo(context); + Objects.requireNonNull(cmd).execute(context); undoStack.push(cmd); redoStack.clear(); end(); diff --git a/src/main/java/com/gluonhq/richtext/viewmodel/AbstractEditCmd.java b/src/main/java/com/gluonhq/richtext/viewmodel/AbstractEditCmd.java index c2d281dd..160de589 100644 --- a/src/main/java/com/gluonhq/richtext/viewmodel/AbstractEditCmd.java +++ b/src/main/java/com/gluonhq/richtext/viewmodel/AbstractEditCmd.java @@ -27,4 +27,11 @@ protected void restoreContext( RichTextAreaViewModel viewModel ) { viewModel.setSelection(selection); } + @Override + public String toString() { + return "AbstractEditCmd { " + + "c=" + caretPosition + + ", s=[" + selection.getStart() + "," + selection.getEnd() + "] " + + "}"; + } } diff --git a/src/main/java/com/gluonhq/richtext/viewmodel/DecorateCmd.java b/src/main/java/com/gluonhq/richtext/viewmodel/DecorateCmd.java index ab97501c..0283ab87 100644 --- a/src/main/java/com/gluonhq/richtext/viewmodel/DecorateCmd.java +++ b/src/main/java/com/gluonhq/richtext/viewmodel/DecorateCmd.java @@ -25,17 +25,14 @@ public void doRedo(RichTextAreaViewModel viewModel) { @Override public void doUndo(RichTextAreaViewModel viewModel) { - if (!selection.isDefined()) { - Objects.requireNonNull(viewModel).undoDecoration(); - } else { - if (prevDecoration != null) { - Objects.requireNonNull(viewModel).setDecoration(prevDecoration); - } + if (prevDecoration != null) { + Objects.requireNonNull(viewModel).setDecoration(prevDecoration); } + Objects.requireNonNull(viewModel).undoDecoration(); } @Override public String toString() { - return "DecorateCmd[" + decoration + "]"; + return "DecorateCmd [" + super.toString() + ", " + decoration + "]"; } } diff --git a/src/main/java/com/gluonhq/richtext/viewmodel/InsertTextCmd.java b/src/main/java/com/gluonhq/richtext/viewmodel/InsertTextCmd.java index 7026a554..19d0003c 100644 --- a/src/main/java/com/gluonhq/richtext/viewmodel/InsertTextCmd.java +++ b/src/main/java/com/gluonhq/richtext/viewmodel/InsertTextCmd.java @@ -22,6 +22,6 @@ public void doUndo( RichTextAreaViewModel viewModel ) { @Override public String toString() { - return "InsertTextCmd[" + content + "]"; + return "InsertTextCmd[" + super.toString() + ", " + content + "]"; } } diff --git a/src/main/java/com/gluonhq/richtext/viewmodel/RemoveTextCmd.java b/src/main/java/com/gluonhq/richtext/viewmodel/RemoveTextCmd.java index 774680a0..31388ed7 100644 --- a/src/main/java/com/gluonhq/richtext/viewmodel/RemoveTextCmd.java +++ b/src/main/java/com/gluonhq/richtext/viewmodel/RemoveTextCmd.java @@ -24,6 +24,6 @@ public void doUndo( RichTextAreaViewModel viewModel ) { @Override public String toString() { - return "RemoveTextCmd[" + caretOffset + "]"; + return "RemoveTextCmd[" + super.toString() + ", " + caretOffset + "]"; } }