public boolean addEdit(UndoableEdit edit) { boolean result = super.addEdit(edit); if (result && editedTime == 0) { editedTime = System.currentTimeMillis(); } return result; }
private void process(MouseEvent e) { textComponent.requestFocus(); boolean enabled = textComponent.isEnabled(); boolean editable = textComponent.isEditable(); boolean nonempty = !(textComponent.getText() == null || textComponent.getText().equals("")); boolean marked = textComponent.getSelectedText() != null; boolean pasteAvailable = Toolkit.getDefaultToolkit().getSystemClipboard() .getContents(null).isDataFlavorSupported(DataFlavor.stringFlavor); undoAction.setEnabled(enabled && editable && undoManager.canUndo()); redoAction.setEnabled(enabled && editable && undoManager.canRedo()); cutAction.setEnabled(enabled && editable && marked); copyAction.setEnabled(enabled && marked); pasteAction.setEnabled(enabled && editable && pasteAvailable); deleteAction.setEnabled(enabled && editable && marked); selectAllAction.setEnabled(enabled && nonempty); int nx = e.getX(); if (nx > 500) { nx = nx - popup.getSize().width; } popup.show(e.getComponent(), nx, e.getY() - popup.getSize().height); } }
public void redo() throws javax.swing.undo.CannotRedoException { compoundEdit.end(); if (firstModified == 0) { firstModified = ((StructuredEdit) editToBeRedone()).editedTime(); } boolean undoable = canUndo(); boolean changed = hasChanged(); super.redo(); firePropertyChangeEvent(UndoManager.UndoName, undoable, canUndo()); }
public void undo() throws javax.swing.undo.CannotUndoException { compoundEdit.end(); UndoableEdit edit = editToBeUndone(); if (((StructuredEdit) editToBeUndone()).editedTime() == firstModified) { firstModified = 0; } else if (firstModified == 0) { firstModified = ((StructuredEdit) editToBeUndone()).editedTime(); } boolean redoable = canRedo(); boolean changed = hasChanged(); super.undo(); firePropertyChangeEvent(UndoManager.RedoName, redoable, canRedo()); }
@Override public void undoableEditHappened(UndoableEditEvent evt) { undoManager.addEdit(evt.getEdit()); } });
public TextStandardActions(JTextComponent textComponent) { this.textComponent = textComponent; this.undoManager = new UndoManager(); initActions(); addPopupItems(); addKeyActions(); registerListeners(); }
public void discardAllEdits() { boolean undoable = canUndo(); boolean redoable = canRedo(); boolean changed = hasChanged(); super.discardAllEdits(); modificationMarker = editToBeUndone(); firePropertyChangeEvent(UndoManager.UndoName, undoable, canUndo()); firePropertyChangeEvent(UndoManager.UndoName, redoable, canRedo()); }
protected void redoTo(UndoableEdit edit) { compoundEdit.end(); if (firstModified == 0) { firstModified = ((StructuredEdit) editToBeRedone()).editedTime(); } boolean undoable = canUndo(); boolean changed = hasChanged(); super.redoTo(edit); firePropertyChangeEvent(UndoManager.UndoName, undoable, canUndo()); }
public void die() { boolean undoable = canUndo(); super.die(); firePropertyChangeEvent(UndoManager.UndoName, undoable, canUndo()); }
protected void trimEdits(int from, int to) { boolean undoable = canUndo(); boolean redoable = canRedo(); boolean changed = hasChanged(); super.trimEdits(from, to); firePropertyChangeEvent(UndoManager.UndoName, undoable, canUndo()); firePropertyChangeEvent(UndoManager.RedoName, redoable, canRedo()); }
@Override public String toString() { return super.toString() + " hasBeenDone: " + hasBeenDone + " alive: " + alive + " inProgress: " + inProgress + " edits: " + edits + " limit: " + limit + " indexOfNextAdd: " + indexOfNextAdd; }
private void registerListeners() { textComponent.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { if (e.getButton() == 3 && e.getSource() == textComponent) { process(e); } } }); textComponent.getDocument().addUndoableEditListener(event -> undoManager.addEdit(event.getEdit())); }
private static void makeTextComponentUndoable(JTextComponent textConponent) { final UndoManager undoManager = new UndoManager(); textConponent.getDocument().addUndoableEditListener(new UndoableEditListener() { @Override