/* UndoableEdit and AbstractUndoableEdit */
AbstractUndoableEdit edit = new AbstractUndoableEdit();
// methods fall into 3 categories
// 1.undoable operations
// if the alive field is false, all operation fail
// the hasBeenDone field affect the behaviours of canUndo and canRedo method
if (edit.canUndo()) {
edit.undo(); // the behaviour depends on canUndo
}
if (edit.canRedo()) {
edit.redo(); // the behaviour depends on canRedo
}
edit.die(); // set alive to be false
// 2.edit management
edit.isSignificant(); // if the edit affect model state, default implementation return false
edit.addEdit(null); // edit queued in some UndoableEditListener, and try to absorb another edit
edit.replaceEdit(null); // try to replace another edit queued in some UndoableEditListener
// 3.representation
edit.getPresentationName();
// the following 2 methods use result of getPresentationName and add undo/redo text in UIManager
edit.getUndoPresentationName();
edit.getRedoPresentationName();
/* CompoundEdit */
// implements the composition pattern, manages a set of edits
CompoundEdit compound = new CompoundEdit();
// undoable operations (except die) fail if inProgress is true
// edit management methods (except isSignificant) fail if inProgress is false
compound.isInProgress();
compound.end(); // set inProgress to be false
// representation methods try to use information of the last edit
/* UndoManager */
UndoManager manager = new UndoManager();
// extends undoable operations when inProgress is true
// undo/redo now stop at the latest significant edit
// limit the maximal number of edits
manager.setLimit(0);
manager.getLimit();
manager.discardAllEdits(); // clear all edits
// extends representation methods when inProgress is true
// undo/redo methods try to use information of the latest edit to be undo/redo
// add undoOrRedo methods
if (manager.canUndoOrRedo()) {
manager.undoOrRedo();
}
manager.getUndoOrRedoPresentationName();
/* StateEditable */
// stateful object should be able to store and restore its state
StateEditable stateEditable = new StateEditable() {
public void restoreState(Hashtable<?, ?> state) {}
public void storeState(Hashtable<Object, Object> state) {}
};
/* StateEdit */
// extends AbstractUndoableEdit to add the ability to use StateEditable
// store pre-state
StateEdit stateEdit = new StateEdit(stateEditable);
// store post-state
stateEdit.end();
// restore the state of stateEditable
stateEdit.undo();
stateEdit.redo();
/* UndoableEditSupport */
UndoableEditSupport support = new UndoableEditSupport(new Object());
// methods fall into 2 categories
// 1.manage a set of UndoableEditListener
support.addUndoableEditListener(null);
support.removeUndoableEditListener(null);
support.getUndoableEditListeners();
// 2.send UndoableEditEvent
// if updateLevel is 0, all UndoableEditEvent would be sent immediately
// else UndoableEdit will be saved in CompoundUndoableEdit and wait util updateLevel change to 0
support.beginUpdate(); // increase updateLevel
// send UndoableEditEvent if updateLevel is 0 or save edit in CompoundUndoableEdit
support.postEdit(null);
support.endUpdate(); // decrease unpdateLeve and send UndoableEditEvent if necessary
分享到:
相关推荐
javax.swing.undo javax.transaction javax.transaction.xa javax.xml javax.xml.datatype javax.xml.namespace javax.xml.parsers javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax ...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo javax.tools javax.transaction javax.transaction.xa javax.xml javax.xml.bind javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml....
javax.swing.undo javax.tools javax.transaction javax.transaction.xa javax.xml javax.xml.bind javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml....
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.tree [15 examples] javax.swing.undo [1 examples] javax.xml.parsers [8 examples] javax.xml.transform [5 examples] javax.xml.transform.sax [1 examples] org.w3c.dom ...
javax.swing.undo javax.tools javax.transaction javax.transaction.xa javax.xml javax.xml.bind javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml....
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
Java编写的记事本程序,import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.awt.color.*;...import javax.swing.undo.*;
import javax.swing.undo.*; <br>public class Note extends JFrame { boolean isChange=false; boolean wasChange=false; JMenuBar menuBar=new JMenuBar(); <br>JMenu menuFile=new ...
import javax.swing.*; class Gobang extends JFrame implements Runnable, ActionListener { final static int Player=1; final static int AI =-1; ClassLoader cl = this.getClass().getClassLoader(); ...