|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.trolltech.qt.internal.QSignalEmitterInternal
com.trolltech.qt.QSignalEmitter
com.trolltech.qt.QtJambiObject
com.trolltech.qt.gui.QUndoCommand
public class QUndoCommand
The QUndoCommand class is the base class of all commands stored on a QUndoStack
. For an overview of Qt's Undo Framework, see the overview document.
A QUndoCommand represents a single editing action on a document; for example, inserting or deleting a block of text in a text editor. QUndoCommand can apply a change to the document with redo()
and undo the change with undo()
. The implementations for these functions must be provided in a derived class.
public class AppendText extends QUndoCommand { private String m_document; private String m_text; public AppendText(String doc, String text) { m_document = doc; m_text= text; setText("append text"); } public void undo() { m_document = m_document.substring(0, m_document.length() -m_text.length()); } public void redo() { m_document += m_text; } }A QUndoCommand has an associated
text()
. This is a short string describing what the command does. It is used to update the text properties of the stack's undo and redo actions; see QUndoStack::createUndoAction()
and QUndoStack::createRedoAction()
. QUndoCommand objects are owned by the stack they were pushed on. QUndoStack
deletes a command if it has been undone and a new command is pushed. For example:
MyCommand command1 = new MyCommand(); stack.push(command1); MyCommand command2 = new MyCommand(); stack.push(command2); stack.undo(); MyCommand command3 = new MyCommand(); stack.push(command3); // command2 gets deletedIn effect, when a command is pushed, it becomes the top-most command on the stack.
To support command compression, QUndoCommand has an id()
and the virtual function mergeWith()
. These functions are used by QUndoStack::push()
.
To support command macros, a QUndoCommand object can have any number of child commands. Undoing or redoing the parent command will cause the child commands to be undone or redone. A command can be assigned to a parent explicitly in the constructor. In this case, the command will be owned by the parent.
The parent in this case is usually an empty command, in that it doesn't provide its own implementation of undo()
and redo()
. Instead, it uses the base implementations of these functions, which simply call undo()
or redo()
on all its children. The parent should, however, have a meaningful text()
.
QUndoCommand insertRed = new QUndoCommand(); // an empty command insertRed.setText("insert red text"); new InsertText(document, idx, text, insertRed); // becomes child of insertRed new SetColor(document, idx, text.length(), Qt.GlobalColor.red, insertRed); stack.push(insertRed);Another way to create macros is to use the convenience functions
QUndoStack::beginMacro()
and QUndoStack::endMacro()
. QUndoStack
.
Nested Class Summary |
---|
Nested classes/interfaces inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
com.trolltech.qt.internal.QSignalEmitterInternal.AbstractSignalInternal |
Field Summary |
---|
Fields inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
currentSender |
Constructor Summary | |
---|---|
QUndoCommand()
Constructs a QUndoCommand object with parent parent. |
|
QUndoCommand(QUndoCommand parent)
Constructs a QUndoCommand object with parent parent. |
|
QUndoCommand(java.lang.String text)
Constructs a QUndoCommand object with the given parent and text. |
|
QUndoCommand(java.lang.String text,
QUndoCommand parent)
Constructs a QUndoCommand object with the given parent and text. |
Method Summary | |
---|---|
QUndoCommand |
child(int index)
Returns the child command at index. |
int |
childCount()
Returns the number of child commands in this command. |
int |
id()
Returns the ID of this command. |
boolean |
mergeWith(QUndoCommand other)
Attempts to merge this command with command. |
void |
redo()
Applies a change to the document. |
void |
setText(java.lang.String text)
Sets the command's text to be the text specified. |
java.lang.String |
text()
Returns a short text string describing what this command does; for example, "insert text". |
void |
undo()
Reverts a change to the document. |
Methods inherited from class com.trolltech.qt.QtJambiObject |
---|
dispose, disposed, equals, finalize, reassignNativeResources, tr, tr, tr |
Methods inherited from class com.trolltech.qt.QSignalEmitter |
---|
blockSignals, disconnect, disconnect, signalsBlocked, signalSender, thread |
Methods inherited from class com.trolltech.qt.internal.QSignalEmitterInternal |
---|
__qt_signalInitialization |
Methods inherited from class java.lang.Object |
---|
clone, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface com.trolltech.qt.QtJambiInterface |
---|
disableGarbageCollection, nativeId, nativePointer, reenableGarbageCollection, setJavaOwnership |
Constructor Detail |
---|
public QUndoCommand()
If parent is not 0, this command is appended to parent's child list. The parent command then owns this command and will delete it in its destructor.
public QUndoCommand(QUndoCommand parent)
If parent is not 0, this command is appended to parent's child list. The parent command then owns this command and will delete it in its destructor.
public QUndoCommand(java.lang.String text)
If parent is not 0, this command is appended to parent's child list. The parent command then owns this command and will delete it in its destructor.
public QUndoCommand(java.lang.String text, QUndoCommand parent)
If parent is not 0, this command is appended to parent's child list. The parent command then owns this command and will delete it in its destructor.
Method Detail |
---|
public final QUndoCommand child(int index)
childCount()
, and QUndoStack::command()
.
public final int childCount()
child()
.
public final void setText(java.lang.String text)
The specified text should be a short user-readable string describing what this command does.
text()
, QUndoStack::createUndoAction()
, and QUndoStack::createRedoAction()
.
public final java.lang.String text()
The text is used when the text properties of the stack's undo and redo actions are updated.
setText()
, QUndoStack::createUndoAction()
, and QUndoStack::createRedoAction()
.
public int id()
A command ID is used in command compression. It must be an integer unique to this command's class, or -1 if the command doesn't support compression.
If the command supports compression this function must be overridden in the derived class to return the correct ID. The base implementation returns -1.
QUndoStack::push()
will only try to merge two commands if they have the same ID, and the ID is not -1.
mergeWith()
, and QUndoStack::push()
.
public boolean mergeWith(QUndoCommand other)
If this function returns true, calling this command's redo()
must have the same effect as redoing both this command and command. Similarly, calling this command's undo()
must have the same effect as undoing command and this command.
QUndoStack
will only try to merge two commands if they have the same id, and the id is not -1.
The default implementation returns false.
public boolean mergeWith(QUndoCommand other) { if (other.id() != id()) // make sure other is also an AppendText command return false; m_text += ((AppendText)other).m_text; return true; }
id()
, and QUndoStack::push()
.
public void redo()
QUndoStack::push()
, QUndoStack::undo()
or QUndoStack::redo()
from this function leads to undefined beahavior. The default implementation calls redo()
on all child commands.
undo()
.
public void undo()
undo()
is called, the state of the document should be the same as before redo()
was called. This function must be implemented in the derived class. Calling QUndoStack::push()
, QUndoStack::undo()
or QUndoStack::redo()
from this function leads to undefined beahavior. The default implementation calls undo()
on all child commands in reverse order.
redo()
.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |