/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The contents of this file are subject to the Netscape Public License * Version 1.0 (the "NPL"); you may not use this file except in * compliance with the NPL. You may obtain a copy of the NPL at * http://www.mozilla.org/NPL/ * * Software distributed under the NPL is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL * for the specific language governing rights and limitations under the * NPL. * * The Initial Developer of this code under the NPL is Netscape * Communications Corporation. Portions created by Netscape are * Copyright (C) 1998 Netscape Communications Corporation. All Rights * Reserved. */ /* * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * NOTE!! This is not a general class, but specific to layout and frames. * Consumers looking for the general selection interface should look at * nsIDOMSelection. */ #ifndef nsIFrameSelection_h___ #define nsIFrameSelection_h___ #include "nsISupports.h" #include "nsIFrame.h" #include "nsIFocusTracker.h" #include "nsIDOMSelection.h" #include "nsIPresShell.h" // IID for the nsIFrameSelection interface #define NS_IFRAMESELECTION_IID \ { 0xf46e4171, 0xdeaa, 0x11d1, \ { 0x97, 0xfc, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } } //---------------------------------------------------------------------- // Selection interface struct SelectionDetails { PRInt32 mStart; PRInt32 mEnd; SelectionType mType; SelectionDetails *mNext; }; class nsIFrameSelection : public nsISupports { public: static const nsIID& GetIID() { static nsIID iid = NS_IFRAMESELECTION_IID; return iid; } /** Init will initialize the frame selector with the necessary focus tracker to * be used by most of the methods * @param aTracker is the parameter to be used for most of the other calls for callbacks ect */ NS_IMETHOD Init(nsIFocusTracker *aTracker) = 0; /** ShutDown will be called when the owner of the frame selection is shutting down * this should be the time to release all member variable interfaces. all methods * called after ShutDown should return NS_ERROR_FAILURE */ NS_IMETHOD ShutDown() = 0; /** HandleKeyEvent will accept an event and frame and * will return NS_OK if it handles the event or NS_COMFALSE if not. *

DOES NOT ADDREF

* @param aGuiEvent is the event that should be dealt with by aFocusFrame * @param aFrame is the frame that MAY handle the event */ NS_IMETHOD HandleTextEvent(nsGUIEvent *aGuiEvent) = 0; /** HandleKeyEvent will accept an event and frame and * will return NS_OK if it handles the event or NS_COMFALSE if not. *

DOES NOT ADDREF

* @param aGuiEvent is the event that should be dealt with by aFocusFrame * @param aFrame is the frame that MAY handle the event */ NS_IMETHOD HandleKeyEvent(nsGUIEvent *aGuiEvent) = 0; /** TakeFocus will take the focus to the new frame at the new offset and * will either extend the selection from the old anchor, or replace the old anchor. * the old anchor and focus position may also be used to deselect things * @param aNewfocus is the content that wants the focus * @param aContentOffset is the content offset of the parent aNewFocus * @param aContentOffsetEnd is the content offset of the parent aNewFocus and is specified different * when you need to select to and include both start and end points * @param aContinueSelection is the flag that tells the selection to keep the old anchor point or not. * @param aMultipleSelection will tell the frame selector to replace /or not the old selection. * cannot coexist with aContinueSelection */ NS_IMETHOD TakeFocus(nsIContent *aNewFocus, PRUint32 aContentOffset, PRUint32 aContentEndOffset , PRBool aContinueSelection, PRBool aMultipleSelection) = 0; /** EnableFrameNotification * mutch like start batching, except all dirty calls are ignored. no notifications will go * out until enableNotifications with a PR_TRUE is called */ NS_IMETHOD EnableFrameNotification(PRBool aEnable) = 0; /** Lookup Selection * returns in frame coordinates the selection beginning and ending with the type of selection given * @param aContent is the content asking * @param aContentOffset is the starting content boundary * @param aContentLength is the length of the content piece asking * @param aReturnDetails linkedlist of return values for the selection. */ NS_IMETHOD LookUpSelection(nsIContent *aContent, PRInt32 aContentOffset, PRInt32 aContentLength, SelectionDetails **aReturnDetails) = 0; /** SetMouseDownState(PRBool); * sets the mouse state to aState for resons of drag state. * @param aState is the new state of mousedown */ NS_IMETHOD SetMouseDownState(PRBool aState)=0; /** GetMouseDownState(PRBool *); * gets the mouse state to aState for resons of drag state. * @param aState will hold the state of mousedown */ NS_IMETHOD GetMouseDownState(PRBool *aState)=0; /** GetSelection * no query interface for selection. must use this method now. * @param aSelectionType enum value defined in nsIDOMSelection for the domseleciton you want. */ NS_IMETHOD GetSelection(SelectionType aSelectionType, nsIDOMSelection **aDomSelection)=0; /** * ScrollSelectionIntoView scrolls a region of the selection, * so that it is visible in the scrolled view. * * @param aType the selection to scroll into view. * @param aRegion the region inside the selection to scroll into view. */ NS_IMETHOD ScrollSelectionIntoView(SelectionType aSelectionType, SelectionRegion aRegion)=0; /** RepaintSelection repaints the selected frames that are inside the selection * specified by aSelectionType. * @param aSelectionType enum value defined in nsIDOMSelection for the domseleciton you want. */ NS_IMETHOD RepaintSelection(SelectionType aSelectionType)=0; }; #endif /* nsIFrameSelection_h___ */