@Override public boolean addEdit(UndoableEdit anEdit) { boolean retVal; // Trim from the indexOfNextAdd to the end, as we'll // never reach these edits once the new one is added. trimEdits(indexOfNextAdd, edits.size()-1); if (!inProgress) { retVal = false; } else { UndoableEdit last = lastEdit(); if (last == null) { edits.addElement(anEdit); } else if (!last.addEdit(anEdit)) { if (anEdit.replaceEdit(last)) { edits.removeElementAt(edits.size() - 1); } edits.addElement(anEdit); } retVal = true; } // Maybe super added this edit, maybe it didn't (perhaps // an in progress compound edit took it instead. Or perhaps // this UndoManager is no longer in progress). So make sure // the indexOfNextAdd is pointed at the right place. indexOfNextAdd = edits.size(); // Enforce the limit trimForLimit(); return retVal; }
@Override public String getUndoPresentationName() { // The following code does an original code of: return this.canUndo() ? super.getUndoPresentationName() : ""; if (canUndo()) { // UndoManager.getUndoPresentationName() follows if (inProgress) { if (canUndo()) { return editToBeUndone().getUndoPresentationName(); } else { return UIManager.getString("AbstractUndoableEdit.undoText"); } } else { UndoableEdit last = lastEdit(); if (last != null) { return last.getUndoPresentationName(); } else { String name = getPresentationName(); if (!"".equals(name)) { name = UIManager.getString("AbstractUndoableEdit.undoText") + " " + name; } else { name = UIManager.getString("AbstractUndoableEdit.undoText"); } return name; } } } else { return ""; } }
@Override public String getRedoPresentationName() { // The following code does an original code of: return this.canRedo() ? super.getRedoPresentationName() : ""; if (canRedo()) { // UndoManager.getRedoPresentationName() follows UndoableEdit last = lastEdit(); if (last != null) { if (inProgress) { if (canRedo()) { return editToBeRedone().getRedoPresentationName(); } else { return UIManager.getString("AbstractUndoableEdit.redoText"); } } else { return super.getRedoPresentationName(); } } else { String name = getPresentationName(); if (!"".equals(name)) { name = UIManager.getString("AbstractUndoableEdit.redoText") + " " + name; } else { name = UIManager.getString("AbstractUndoableEdit.redoText"); } return name; } } else { return ""; } }
@Override public String getPresentationName() { UndoableEdit last = lastEdit(); if (last != null) { return last.getPresentationName(); } else { return ""; } }