diff options
Diffstat (limited to 'editor/txmgr/nsITransactionListener.idl')
-rw-r--r-- | editor/txmgr/nsITransactionListener.idl | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/editor/txmgr/nsITransactionListener.idl b/editor/txmgr/nsITransactionListener.idl new file mode 100644 index 000000000..c63f9e3b8 --- /dev/null +++ b/editor/txmgr/nsITransactionListener.idl @@ -0,0 +1,170 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" + +interface nsITransaction; +interface nsITransactionManager; + +/** + * The nsITransactionListener interface. + * <P> + * This interface is implemented by an object that tracks transactions. + */ +[scriptable, uuid(58e330c4-7b48-11d2-98b9-00805f297d89)] +interface nsITransactionListener : nsISupports +{ + /** + * Called before a transaction manager calls a transaction's + * doTransaction() method. + * @param aManager the transaction manager doing the transaction. + * @param aTransaction the transaction being executed. + * @result boolean value returned by listener which indicates + * its desire to interrupt normal control flow. Listeners should + * return true if they want to interrupt normal control flow, without + * throwing an error. + */ + boolean willDo(in nsITransactionManager aManager, + in nsITransaction aTransaction); + + /** + * Called after a transaction manager calls the doTransaction() method of + * a transaction. + * @param aManager the transaction manager that did the transaction. + * @param aTransaction the transaction that was executed. + * @param aDoResult the nsresult returned after executing + * the transaction. + */ + void didDo(in nsITransactionManager aManager, + in nsITransaction aTransaction, + in nsresult aDoResult); + + /** + * Called before a transaction manager calls the Undo() method of + * a transaction. + * @param aManager the transaction manager undoing the transaction. + * @param aTransaction the transaction being undone. + * @result boolean value returned by listener which indicates + * its desire to interrupt normal control flow. Listeners should + * return true if they want to interrupt normal control flow, without + * throwing an error. Note that listeners can also interrupt normal + * control flow by throwing an nsresult that indicates an error. + */ + boolean willUndo(in nsITransactionManager aManager, + in nsITransaction aTransaction); + + /** + * Called after a transaction manager calls the Undo() method of + * a transaction. + * @param aManager the transaction manager undoing the transaction. + * @param aTransaction the transaction being undone. + * @param aUndoResult the nsresult returned after undoing the transaction. + */ + void didUndo(in nsITransactionManager aManager, + in nsITransaction aTransaction, + in nsresult aUndoResult); + + /** + * Called before a transaction manager calls the Redo() method of + * a transaction. + * @param aManager the transaction manager redoing the transaction. + * @param aTransaction the transaction being redone. + * @result boolean value returned by listener which indicates + * its desire to interrupt normal control flow. Listeners should + * return true if they want to interrupt normal control flow, without + * throwing an error. Note that listeners can also interrupt normal + * control flow by throwing an nsresult that indicates an error. + */ + boolean willRedo(in nsITransactionManager aManager, + in nsITransaction aTransaction); + + /** + * Called after a transaction manager calls the Redo() method of + * a transaction. + * @param aManager the transaction manager redoing the transaction. + * @param aTransaction the transaction being redone. + * @param aRedoResult the nsresult returned after redoing the transaction. + */ + void didRedo(in nsITransactionManager aManager, + in nsITransaction aTransaction, + in nsresult aRedoResult); + + /** + * Called before a transaction manager begins a batch. + * @param aManager the transaction manager beginning a batch. + * @result boolean value returned by listener which indicates + * its desire to interrupt normal control flow. Listeners should + * return true if they want to interrupt normal control flow, without + * throwing an error. Note that listeners can also interrupt normal + * control flow by throwing an nsresult that indicates an error. + */ + boolean willBeginBatch(in nsITransactionManager aManager); + + /** + * Called after a transaction manager begins a batch. + * @param aManager the transaction manager that began a batch. + * @param aResult the nsresult returned after beginning a batch. + */ + void didBeginBatch(in nsITransactionManager aManager, + in nsresult aResult); + + /** + * Called before a transaction manager ends a batch. + * @param aManager the transaction manager ending a batch. + * @result boolean value returned by listener which indicates + * its desire to interrupt normal control flow. Listeners should + * return true if they want to interrupt normal control flow, without + * throwing an error. Note that listeners can also interrupt normal + * control flow by throwing an nsresult that indicates an error. + */ + boolean willEndBatch(in nsITransactionManager aManager); + + /** + * Called after a transaction manager ends a batch. + * @param aManager the transaction manager ending a batch. + * @param aResult the nsresult returned after ending a batch. + */ + void didEndBatch(in nsITransactionManager aManager, + in nsresult aResult); + + /** + * Called before a transaction manager tries to merge + * a transaction, that was just executed, with the + * transaction at the top of the undo stack. + * @param aManager the transaction manager ending a batch. + * @param aTopTransaction the transaction at the top of the undo stack. + * @param aTransactionToMerge the transaction to merge. + * @result boolean value returned by listener which indicates + * its desire to interrupt normal control flow. Listeners should + * return true if they want to interrupt normal control flow, without + * throwing an error. Note that listeners can also interrupt normal + * control flow by throwing an nsresult that indicates an error. + */ + boolean willMerge(in nsITransactionManager aManager, + in nsITransaction aTopTransaction, + in nsITransaction aTransactionToMerge); + + /** + * Called after a transaction manager tries to merge + * a transaction, that was just executed, with the + * transaction at the top of the undo stack. + * @param aManager the transaction manager ending a batch. + * @param aTopTransaction the transaction at the top of the undo stack. + * @param aTransactionToMerge the transaction to merge. + * @param aDidMerge true if transaction was merged, else false. + * @param aMergeResult the nsresult returned after the merge attempt. + * @param aInterrupt listeners should set this to PR_TRUE if they + * want to interrupt normal control flow, without throwing an error. + */ + void didMerge(in nsITransactionManager aManager, + in nsITransaction aTopTransaction, + in nsITransaction aTransactionToMerge, + in boolean aDidMerge, + in nsresult aMergeResult); + + + /* XXX: We should probably add pruning notification methods. */ +}; + |