1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/editor/composer/src/nsComposerCommandsUpdater.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,101 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- 1.5 + * 1.6 + * This Source Code Form is subject to the terms of the Mozilla Public 1.7 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.8 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.9 + 1.10 + 1.11 + 1.12 + 1.13 +#ifndef nsComposerCommandsUpdater_h__ 1.14 +#define nsComposerCommandsUpdater_h__ 1.15 + 1.16 +#include "nsCOMPtr.h" // for already_AddRefed, nsCOMPtr 1.17 +#include "nsIDocumentStateListener.h" 1.18 +#include "nsISelectionListener.h" 1.19 +#include "nsISupportsImpl.h" // for NS_DECL_ISUPPORTS 1.20 +#include "nsITimer.h" // for NS_DECL_NSITIMERCALLBACK, etc 1.21 +#include "nsITransactionListener.h" // for nsITransactionListener 1.22 +#include "nsIWeakReferenceUtils.h" // for nsWeakPtr 1.23 +#include "nscore.h" // for NS_IMETHOD, nsresult, etc 1.24 + 1.25 +class nsIDOMWindow; 1.26 +class nsITransaction; 1.27 +class nsITransactionManager; 1.28 +class nsPICommandUpdater; 1.29 + 1.30 +class nsComposerCommandsUpdater : public nsISelectionListener, 1.31 + public nsIDocumentStateListener, 1.32 + public nsITransactionListener, 1.33 + public nsITimerCallback 1.34 +{ 1.35 +public: 1.36 + 1.37 + nsComposerCommandsUpdater(); 1.38 + virtual ~nsComposerCommandsUpdater(); 1.39 + 1.40 + // nsISupports 1.41 + NS_DECL_ISUPPORTS 1.42 + 1.43 + // nsISelectionListener 1.44 + NS_DECL_NSISELECTIONLISTENER 1.45 + 1.46 + // nsIDocumentStateListener 1.47 + NS_DECL_NSIDOCUMENTSTATELISTENER 1.48 + 1.49 + // nsITimerCallback interfaces 1.50 + NS_DECL_NSITIMERCALLBACK 1.51 + 1.52 + /** nsITransactionListener interfaces 1.53 + */ 1.54 + NS_IMETHOD WillDo(nsITransactionManager *aManager, nsITransaction *aTransaction, bool *aInterrupt); 1.55 + NS_IMETHOD DidDo(nsITransactionManager *aManager, nsITransaction *aTransaction, nsresult aDoResult); 1.56 + NS_IMETHOD WillUndo(nsITransactionManager *aManager, nsITransaction *aTransaction, bool *aInterrupt); 1.57 + NS_IMETHOD DidUndo(nsITransactionManager *aManager, nsITransaction *aTransaction, nsresult aUndoResult); 1.58 + NS_IMETHOD WillRedo(nsITransactionManager *aManager, nsITransaction *aTransaction, bool *aInterrupt); 1.59 + NS_IMETHOD DidRedo(nsITransactionManager *aManager, nsITransaction *aTransaction, nsresult aRedoResult); 1.60 + NS_IMETHOD WillBeginBatch(nsITransactionManager *aManager, bool *aInterrupt); 1.61 + NS_IMETHOD DidBeginBatch(nsITransactionManager *aManager, nsresult aResult); 1.62 + NS_IMETHOD WillEndBatch(nsITransactionManager *aManager, bool *aInterrupt); 1.63 + NS_IMETHOD DidEndBatch(nsITransactionManager *aManager, nsresult aResult); 1.64 + NS_IMETHOD WillMerge(nsITransactionManager *aManager, nsITransaction *aTopTransaction, 1.65 + nsITransaction *aTransactionToMerge, bool *aInterrupt); 1.66 + NS_IMETHOD DidMerge(nsITransactionManager *aManager, nsITransaction *aTopTransaction, 1.67 + nsITransaction *aTransactionToMerge, 1.68 + bool aDidMerge, nsresult aMergeResult); 1.69 + 1.70 + 1.71 + nsresult Init(nsIDOMWindow* aDOMWindow); 1.72 + 1.73 +protected: 1.74 + 1.75 + enum { 1.76 + eStateUninitialized = -1, 1.77 + eStateOff = false, 1.78 + eStateOn = true 1.79 + }; 1.80 + 1.81 + bool SelectionIsCollapsed(); 1.82 + nsresult UpdateDirtyState(bool aNowDirty); 1.83 + nsresult UpdateOneCommand(const char* aCommand); 1.84 + nsresult UpdateCommandGroup(const nsAString& aCommandGroup); 1.85 + 1.86 + already_AddRefed<nsPICommandUpdater> GetCommandUpdater(); 1.87 + 1.88 + nsresult PrimeUpdateTimer(); 1.89 + void TimerCallback(); 1.90 + nsCOMPtr<nsITimer> mUpdateTimer; 1.91 + 1.92 + nsWeakPtr mDOMWindow; 1.93 + nsWeakPtr mDocShell; 1.94 + int8_t mDirtyState; 1.95 + int8_t mSelectionCollapsed; 1.96 + bool mFirstDoOfFirstUndo; 1.97 + 1.98 + 1.99 +}; 1.100 + 1.101 +extern "C" nsresult NS_NewComposerCommandsUpdater(nsISelectionListener** aInstancePtrResult); 1.102 + 1.103 + 1.104 +#endif // nsComposerCommandsUpdater_h__