| /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- |
| * |
| * ***** BEGIN LICENSE BLOCK ***** |
| * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| * |
| * The contents of this file are subject to the Mozilla Public License Version |
| * 1.1 (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * http://www.mozilla.org/MPL/ |
| * |
| * Software distributed under the License is distributed on an "AS IS" basis, |
| * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
| * for the specific language governing rights and limitations under the |
| * License. |
| * |
| * The Original Code is mozilla.org code. |
| * |
| * The Initial Developer of the Original Code is |
| * Netscape Communications Corporation. |
| * Portions created by the Initial Developer are Copyright (C) 1998 |
| * the Initial Developer. All Rights Reserved. |
| * |
| * Contributor(s): |
| * Sammy Ford |
| * |
| * Alternatively, the contents of this file may be used under the terms of |
| * either of the GNU General Public License Version 2 or later (the "GPL"), |
| * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
| * in which case the provisions of the GPL or the LGPL are applicable instead |
| * of those above. If you wish to allow use of your version of this file only |
| * under the terms of either the GPL or the LGPL, and not to allow others to |
| * use your version of this file under the terms of the MPL, indicate your |
| * decision by deleting the provisions above and replace them with the notice |
| * and other provisions required by the GPL or the LGPL. If you do not delete |
| * the provisions above, a recipient may use your version of this file under |
| * the terms of any one of the MPL, the GPL or the LGPL. |
| * |
| * ***** END LICENSE BLOCK ***** */ |
| |
| |
| #include "nsISupports.idl" |
| #include "nsISelection.idl" |
| #include "nsISelectionDisplay.idl" |
| |
| %{C++ |
| typedef short SelectionType; |
| typedef short SelectionRegion; |
| %} |
| |
| interface nsIDOMNode; |
| interface nsISelection; |
| interface nsISelectionDisplay; |
| |
| [scriptable, uuid(5f8f41cb-f182-4010-9e38-7c873e8e8a9f)] |
| interface nsISelectionController : nsISelectionDisplay |
| { |
| const short SELECTION_NONE=0; |
| const short SELECTION_NORMAL=1; |
| const short SELECTION_SPELLCHECK=2; |
| const short SELECTION_IME_RAWINPUT=4; |
| const short SELECTION_IME_SELECTEDRAWTEXT=8; |
| const short SELECTION_IME_CONVERTEDTEXT=16; |
| const short SELECTION_IME_SELECTEDCONVERTEDTEXT=32; |
| const short SELECTION_ACCESSIBILITY=64; // For accessibility API usage |
| const short NUM_SELECTIONTYPES=8; |
| |
| const short SELECTION_ANCHOR_REGION = 0; |
| const short SELECTION_FOCUS_REGION = 1; |
| const short NUM_SELECTION_REGIONS = 2; |
| |
| const short SELECTION_OFF = 0; |
| const short SELECTION_HIDDEN =1;//>HIDDEN displays selection |
| const short SELECTION_ON = 2; |
| const short SELECTION_DISABLED = 3; |
| const short SELECTION_ATTENTION = 4; |
| |
| /** |
| * SetDisplaySelection will set the display mode for the selection. OFF,ON,DISABLED |
| */ |
| void setDisplaySelection(in short toggle); |
| |
| /** |
| * GetDisplaySelection will get the display mode for the selection. OFF,ON,DISABLED |
| */ |
| short getDisplaySelection(); |
| |
| /** |
| * GetSelection will return the selection that the presentation |
| * shell may implement. |
| * |
| * @param aType will hold the type of selection //SelectionType |
| * @param _return will hold the return value |
| */ |
| nsISelection getSelection(in short type); |
| |
| /** |
| * ScrollSelectionIntoView scrolls a region of the selection, |
| * so that it is visible in the scrolled view. |
| * |
| * @param aType the selection to scroll into view. //SelectionType |
| * @param aRegion the region inside the selection to scroll into view. //SelectionRegion |
| * @param aIsSynchronous when true, scrolls the selection into view |
| * before returning. If false, posts a request which is processed |
| * at some point after the method returns. |
| * |
| * Note that if isSynchronous is true, then this might flush the pending |
| * reflow. It's dangerous for some objects. See bug 418470 comment 12. |
| */ |
| void scrollSelectionIntoView(in short type, in short region, in boolean isSynchronous); |
| /** |
| * RepaintSelection repaints the selection specified by aType. |
| * |
| * @param aType specifies the selection to repaint. |
| */ |
| void repaintSelection(in short type); |
| |
| /** |
| * Set the caret as enabled or disabled. An enabled caret will |
| * draw or blink when made visible. A disabled caret will never show up. |
| * Can be called any time. |
| * @param aEnable PR_TRUE to enable caret. PR_FALSE to disable. |
| * @return always NS_OK |
| */ |
| |
| void setCaretEnabled(in boolean enabled); |
| |
| /** |
| * Set the caret readonly or not. An readonly caret will |
| * draw but not blink when made visible. |
| * @param aReadOnly PR_TRUE to enable caret. PR_FALSE to disable. |
| * @return always NS_OK |
| */ |
| void setCaretReadOnly(in boolean readOnly); |
| |
| /** |
| * Gets the current state of the caret. |
| * @param aEnabled [OUT] set to the current caret state, as set by SetCaretEnabled |
| * @return if aOutEnabled==null, returns NS_ERROR_INVALID_ARG |
| * else NS_OK |
| */ |
| boolean getCaretEnabled(); |
| |
| /** |
| * This is true if the caret is enabled, visible, and currently blinking. |
| * This is still true when the caret is enabled, visible, but in its "off" |
| * blink cycle. |
| */ |
| readonly attribute boolean caretVisible; |
| |
| /** |
| * Show the caret even in selections. By default the caret is hidden unless the |
| * selection is collapsed. Use this function to show the caret even in selections. |
| * @param aVisibility PR_TRUE to show the caret in selections. PR_FALSE to hide. |
| * @return always NS_OK |
| */ |
| void setCaretVisibilityDuringSelection(in boolean visibility); |
| |
| /** CharacterMove will move the selection one character forward/backward in the document. |
| * this will also have the effect of collapsing the selection if the aExtend = PR_FALSE |
| * the "point" of selection that is extended is considered the "focus" point. |
| * or the last point adjusted by the selection. |
| * @param aForward forward or backward if PR_FALSE |
| * @param aExtend should it collapse the selection of extend it? |
| */ |
| void characterMove(in boolean forward, in boolean extend); |
| |
| /** WordMove will move the selection one word forward/backward in the document. |
| * this will also have the effect of collapsing the selection if the aExtend = PR_FALSE |
| * the "point" of selection that is extended is considered the "focus" point. |
| * or the last point adjusted by the selection. |
| * @param aForward forward or backward if PR_FALSE |
| * @param aExtend should it collapse the selection of extend it? |
| */ |
| |
| void wordMove(in boolean forward, in boolean extend); |
| |
| /** wordExtendForDelete will extend the selection one word forward/backward in the document. |
| * this method is used internally for handling ctrl[option]-backspace and ctrl[option]-del. |
| * @param aForward forward or backward if PR_FALSE |
| */ |
| [noscript] void wordExtendForDelete(in boolean forward); |
| |
| /** LineMove will move the selection one line forward/backward in the document. |
| * this will also have the effect of collapsing the selection if the aExtend = PR_FALSE |
| * the "point" of selection that is extended is considered the "focus" point. |
| * or the last point adjusted by the selection. |
| * @param aForward forward or backward if PR_FALSE |
| * @param aExtend should it collapse the selection of extend it? |
| */ |
| void lineMove(in boolean forward, in boolean extend); |
| |
| /** IntraLineMove will move the selection to the front of the line or end of the line |
| * in the document. |
| * this will also have the effect of collapsing the selection if the aExtend = PR_FALSE |
| * the "point" of selection that is extended is considered the "focus" point. |
| * or the last point adjusted by the selection. |
| * @param aForward forward or backward if PR_FALSE |
| * @param aExtend should it collapse the selection of extend it? |
| */ |
| void intraLineMove(in boolean forward, in boolean extend); |
| |
| /** PageMove will move the selection one page forward/backward in the document. |
| * this will also have the effect of collapsing the selection if the aExtend = PR_FALSE |
| * the "point" of selection that is extended is considered the "focus" point. |
| * or the last point adjusted by the selection. |
| * @param aForward forward or backward if PR_FALSE |
| * @param aExtend should it collapse the selection of extend it? |
| */ |
| void pageMove(in boolean forward, in boolean extend); |
| |
| /** CompleteScroll will move page view to the top or bottom of the document |
| * @param aForward forward or backward if PR_FALSE |
| */ |
| void completeScroll(in boolean forward); |
| |
| /** CompleteMove will move page view to the top or bottom of the document |
| * this will also have the effect of collapsing the selection if the aExtend = PR_FALSE |
| * the "point" of selection that is extended is considered the "focus" point. |
| * or the last point adjusted by the selection. |
| * @param aForward forward or backward if PR_FALSE |
| * @param aExtend should it collapse the selection of extend it? |
| */ |
| void completeMove(in boolean forward, in boolean extend); |
| |
| |
| /** ScrollPage will scroll the page without affecting the selection. |
| * @param aForward scroll forward or backwards in selection |
| */ |
| void scrollPage(in boolean forward); |
| |
| /** ScrolLine will scroll line up or down dependent on the boolean |
| * @param aForward scroll forward or backwards in selection |
| */ |
| void scrollLine(in boolean forward); |
| |
| /** ScrolHorizontal will scroll left or right dependent on the boolean |
| * @param aLeft if true will scroll left. if not will scroll right. |
| */ |
| void scrollHorizontal(in boolean left); |
| /** SelectAll will select the whole page |
| */ |
| void selectAll(); |
| |
| /** CheckVisibility will return true if textnode and offsets are actually rendered |
| * in the current precontext. |
| * @param aNode textNode to test |
| * @param aStartOffset offset in dom to first char of textnode to test |
| * @param aEndOffset offset in dom to last char of textnode to test |
| * @param aReturnBool boolean returned TRUE if visible FALSE if not |
| */ |
| boolean checkVisibility(in nsIDOMNode node, in short startOffset, in short endOffset); |
| |
| }; |
| %{ C++ |
| #define NS_ISELECTIONCONTROLLER_CID \ |
| { 0x513b9460, 0xd56a, 0x4c4e, \ |
| { 0xb6, 0xf9, 0x0b, 0x8a, 0xe4, 0x37, 0x2a, 0x3b }} |
| %} |