summaryrefslogtreecommitdiffstats
path: root/editor/txtsvc/nsITextServicesDocument.h
diff options
context:
space:
mode:
Diffstat (limited to 'editor/txtsvc/nsITextServicesDocument.h')
-rw-r--r--editor/txtsvc/nsITextServicesDocument.h185
1 files changed, 185 insertions, 0 deletions
diff --git a/editor/txtsvc/nsITextServicesDocument.h b/editor/txtsvc/nsITextServicesDocument.h
new file mode 100644
index 000000000..8b9d9e506
--- /dev/null
+++ b/editor/txtsvc/nsITextServicesDocument.h
@@ -0,0 +1,185 @@
+/* -*- 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/. */
+
+#ifndef nsITextServicesDocument_h__
+#define nsITextServicesDocument_h__
+
+#include "nsISupports.h"
+
+class nsIDOMDocument;
+class nsIDOMRange;
+class nsIEditor;
+class nsString;
+class nsITextServicesFilter;
+
+/*
+TextServicesDocument interface to outside world
+*/
+
+#define NS_ITEXTSERVICESDOCUMENT_IID \
+{ /* 019718E1-CDB5-11d2-8D3C-000000000000 */ \
+0x019718e1, 0xcdb5, 0x11d2, \
+{ 0x8d, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } }
+
+
+/**
+ * The nsITextServicesDocument presents the document in as a
+ * bunch of flattened text blocks. Each text block can be retrieved
+ * as an nsString (array of characters).
+ */
+class nsITextServicesDocument : public nsISupports{
+public:
+
+ NS_DECLARE_STATIC_IID_ACCESSOR(NS_ITEXTSERVICESDOCUMENT_IID)
+
+ typedef enum { eDSNormal=0, eDSUndlerline } TSDDisplayStyle;
+
+ typedef enum { eBlockNotFound=0, // There is no text block (TB) in or before the selection (S).
+ eBlockOutside, // No TB in S, but found one before/after S.
+ eBlockInside, // S extends beyond the start and end of TB.
+ eBlockContains, // TB contains entire S.
+ eBlockPartial // S begins or ends in TB but extends outside of TB.
+ } TSDBlockSelectionStatus;
+
+ /**
+ * Get the DOM document for the document in use.
+ * @return aDocument the dom document [OUT]
+ */
+ NS_IMETHOD GetDocument(nsIDOMDocument **aDocument) = 0;
+
+ /**
+ * Initializes the text services document to use a particular
+ * editor. The text services document will use the DOM document
+ * and presentation shell used by the editor.
+ * @param aEditor is the editor to use. The editor is AddRef'd
+ * by this method.
+ */
+ NS_IMETHOD InitWithEditor(nsIEditor *aEditor) = 0;
+
+ /**
+ * Sets the range/extent over which the text services document
+ * will iterate. Note that InitWithEditor() should have been called prior to
+ * calling this method. If this method is never called, the text services
+ * defaults to iterating over the entire document.
+ *
+ * @param aDOMRange is the range to use. aDOMRange must point to a
+ * valid range object.
+ */
+ NS_IMETHOD SetExtent(nsIDOMRange* aDOMRange) = 0;
+
+ /**
+ * Expands the end points of the range so that it spans complete words.
+ * This call does not change any internal state of the text services document.
+ *
+ * @param aDOMRange the range to be expanded/adjusted.
+ */
+ NS_IMETHOD ExpandRangeToWordBoundaries(nsIDOMRange *aRange) = 0;
+
+ /**
+ * Sets the filter to be used while iterating over content.
+ * @param aFilter filter to be used while iterating over content.
+ */
+ NS_IMETHOD SetFilter(nsITextServicesFilter *aFilter) = 0;
+
+ /**
+ * Returns the text in the current text block.
+ * @param aStr will contain the text.
+ */
+
+ NS_IMETHOD GetCurrentTextBlock(nsString *aStr) = 0;
+
+ /**
+ * Tells the document to point to the first text block
+ * in the document. This method does not adjust the current
+ * cursor position or selection.
+ */
+
+ NS_IMETHOD FirstBlock() = 0;
+
+ /**
+ * Tells the document to point to the last text block that
+ * contains the current selection or caret.
+ * @param aSelectionStatus will contain the text block selection status
+ * @param aSelectionOffset will contain the offset into the
+ * string returned by GetCurrentTextBlock() where the selection
+ * begins.
+ * @param aLength will contain the number of characters that are
+ * selected in the string.
+ */
+
+ NS_IMETHOD LastSelectedBlock(TSDBlockSelectionStatus *aSelectionStatus, int32_t *aSelectionOffset, int32_t *aSelectionLength) = 0;
+
+ /**
+ * Tells the document to point to the text block before
+ * the current one. This method will return NS_OK, even
+ * if there is no previous block. Callers should call IsDone()
+ * to check if we have gone beyond the first text block in
+ * the document.
+ */
+
+ NS_IMETHOD PrevBlock() = 0;
+
+ /**
+ * Tells the document to point to the text block after
+ * the current one. This method will return NS_OK, even
+ * if there is no next block. Callers should call IsDone()
+ * to check if we have gone beyond the last text block
+ * in the document.
+ */
+
+ NS_IMETHOD NextBlock() = 0;
+
+ /**
+ * IsDone() will always set aIsDone == false unless
+ * the document contains no text, PrevBlock() was called
+ * while the document was already pointing to the first
+ * text block in the document, or NextBlock() was called
+ * while the document was already pointing to the last
+ * text block in the document.
+ * @param aIsDone will contain the result.
+ */
+
+ NS_IMETHOD IsDone(bool *aIsDone) = 0;
+
+ /**
+ * SetSelection() allows the caller to set the selection
+ * based on an offset into the string returned by
+ * GetCurrentTextBlock(). A length of zero places the cursor
+ * at that offset. A positive non-zero length "n" selects
+ * n characters in the string.
+ * @param aOffset offset into string returned by GetCurrentTextBlock().
+ * @param aLength number characters selected.
+ */
+
+ NS_IMETHOD SetSelection(int32_t aOffset, int32_t aLength) = 0;
+
+ /**
+ * Scrolls the document so that the current selection is visible.
+ */
+
+ NS_IMETHOD ScrollSelectionIntoView() = 0;
+
+ /**
+ * Deletes the text selected by SetSelection(). Calling
+ * DeleteSelection with nothing selected, or with a collapsed
+ * selection (cursor) does nothing and returns NS_OK.
+ */
+
+ NS_IMETHOD DeleteSelection() = 0;
+
+ /**
+ * Inserts the given text at the current cursor position.
+ * If there is a selection, it will be deleted before the
+ * text is inserted.
+ */
+
+ NS_IMETHOD InsertText(const nsString *aText) = 0;
+};
+
+NS_DEFINE_STATIC_IID_ACCESSOR(nsITextServicesDocument,
+ NS_ITEXTSERVICESDOCUMENT_IID)
+
+#endif // nsITextServicesDocument_h__
+