1999-02-12 02:10:20 +03:00
|
|
|
/* -*- 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"
|
1999-07-15 22:19:03 +04:00
|
|
|
#include "nsIDOMSelection.h"
|
1999-07-21 04:12:23 +04:00
|
|
|
#include "nsIPresShell.h"
|
1999-02-12 02:10:20 +03:00
|
|
|
|
|
|
|
// IID for the nsIFrameSelection interface
|
|
|
|
#define NS_IFRAMESELECTION_IID \
|
|
|
|
{ 0xf46e4171, 0xdeaa, 0x11d1, \
|
|
|
|
{ 0x97, 0xfc, 0x0, 0x60, 0x97, 0x3, 0xc1, 0x4e } }
|
|
|
|
|
1999-03-12 03:17:14 +03:00
|
|
|
|
1999-02-12 02:10:20 +03:00
|
|
|
//----------------------------------------------------------------------
|
|
|
|
|
|
|
|
// Selection interface
|
1999-07-15 22:19:03 +04:00
|
|
|
|
|
|
|
struct SelectionDetails
|
|
|
|
{
|
|
|
|
PRInt32 mStart;
|
|
|
|
PRInt32 mEnd;
|
|
|
|
SelectionType mType;
|
|
|
|
SelectionDetails *mNext;
|
|
|
|
};
|
|
|
|
|
1999-02-12 02:10:20 +03:00
|
|
|
class nsIFrameSelection : public nsISupports {
|
|
|
|
public:
|
1999-03-03 22:48:57 +03:00
|
|
|
static const nsIID& GetIID() { static nsIID iid = NS_IFRAMESELECTION_IID; return iid; }
|
1999-02-12 02:10:20 +03:00
|
|
|
|
1999-04-26 08:02:04 +04:00
|
|
|
/** 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;
|
|
|
|
|
1999-03-20 02:36:20 +03:00
|
|
|
/** HandleKeyEvent will accept an event and frame and
|
|
|
|
* will return NS_OK if it handles the event or NS_COMFALSE if not.
|
|
|
|
* <P>DOES NOT ADDREF<P>
|
|
|
|
* @param aGuiEvent is the event that should be dealt with by aFocusFrame
|
|
|
|
* @param aFrame is the frame that MAY handle the event
|
|
|
|
*/
|
1999-04-26 08:02:04 +04:00
|
|
|
NS_IMETHOD HandleTextEvent(nsGUIEvent *aGuiEvent) = 0;
|
1999-03-20 02:36:20 +03:00
|
|
|
|
1999-02-12 02:10:20 +03:00
|
|
|
/** HandleKeyEvent will accept an event and frame and
|
|
|
|
* will return NS_OK if it handles the event or NS_COMFALSE if not.
|
|
|
|
* <P>DOES NOT ADDREF<P>
|
|
|
|
* @param aGuiEvent is the event that should be dealt with by aFocusFrame
|
|
|
|
* @param aFrame is the frame that MAY handle the event
|
|
|
|
*/
|
1999-04-26 08:02:04 +04:00
|
|
|
NS_IMETHOD HandleKeyEvent(nsGUIEvent *aGuiEvent) = 0;
|
1999-02-12 02:10:20 +03:00
|
|
|
|
|
|
|
/** 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
|
1999-04-26 08:02:04 +04:00
|
|
|
* @param aNewfocus is the content that wants the focus
|
|
|
|
* @param aContentOffset is the content offset of the parent aNewFocus
|
1999-05-17 04:21:18 +04:00
|
|
|
* @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
|
1999-02-12 02:10:20 +03:00
|
|
|
* @param aContinueSelection is the flag that tells the selection to keep the old anchor point or not.
|
1999-07-15 22:19:03 +04:00
|
|
|
* @param aMultipleSelection will tell the frame selector to replace /or not the old selection.
|
|
|
|
* cannot coexist with aContinueSelection
|
1999-02-12 02:10:20 +03:00
|
|
|
*/
|
1999-07-15 22:19:03 +04:00
|
|
|
NS_IMETHOD TakeFocus(nsIContent *aNewFocus, PRUint32 aContentOffset, PRUint32 aContentEndOffset ,
|
|
|
|
PRBool aContinueSelection, PRBool aMultipleSelection) = 0;
|
1999-02-12 02:10:20 +03:00
|
|
|
|
1999-02-20 02:47:36 +03:00
|
|
|
/** 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;
|
1999-04-26 08:02:04 +04:00
|
|
|
|
|
|
|
/** 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
|
1999-07-15 22:19:03 +04:00
|
|
|
* @param aReturnDetails linkedlist of return values for the selection.
|
1999-04-26 08:02:04 +04:00
|
|
|
*/
|
|
|
|
NS_IMETHOD LookUpSelection(nsIContent *aContent, PRInt32 aContentOffset, PRInt32 aContentLength,
|
1999-07-15 22:19:03 +04:00
|
|
|
SelectionDetails **aReturnDetails) = 0;
|
1999-05-08 01:12:59 +04:00
|
|
|
|
|
|
|
/** 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;
|
|
|
|
|
1999-07-18 06:27:19 +04:00
|
|
|
/** 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;
|
|
|
|
|
1999-02-12 02:10:20 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
|
1999-07-15 22:19:03 +04:00
|
|
|
|
1999-02-12 02:10:20 +03:00
|
|
|
#endif /* nsIFrameSelection_h___ */
|