/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** 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): * Simon Fraser * Mike Judge * Charles Manske * * 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 "domstubs.idl" interface nsIEditor; [scriptable, uuid(274cd32e-3675-47e1-9d8a-fc6504ded9ce)] interface nsIEditingSession : nsISupports { /** * Error codes when we fail to create an editor * is placed in attribute editorStatus */ const long eEditorOK = 0; const long eEditorCreationInProgress = 1; const long eEditorErrorCantEditMimeType = 2; const long eEditorErrorFileNotFound = 3; const long eEditorErrorCantEditFramesets = 8; const long eEditorErrorUnknown = 9; /** * Status after editor creation and document loading * Value is one of the above error codes */ readonly attribute unsigned long editorStatus; /** * Make this window editable * @param aWindow nsIDOMWindow, the window the embedder needs to make editable * @param aEditorType string, "html" "htmlsimple" "text" "textsimple" * @param aMakeWholeDocumentEditable if PR_TRUE make the whole document in * aWindow editable, otherwise it's the * embedder who should make the document * (or part of it) editable. * @param aInteractive if PR_FALSE turn off scripting and plugins */ void makeWindowEditable(in nsIDOMWindow window, in string aEditorType, in boolean doAfterUriLoad, in boolean aMakeWholeDocumentEditable, in boolean aInteractive); /** * Test whether a specific window has had its editable flag set; it may have an editor * now, or will get one after the uri load. * * Use this, passing the content root window, to test if we've set up editing * for this content. */ boolean windowIsEditable(in nsIDOMWindow window); /** * Get the editor for this window. May return null */ nsIEditor getEditorForWindow(in nsIDOMWindow window); /** * Setup editor and related support objects */ void setupEditorOnWindow(in nsIDOMWindow window); /** * Destroy editor and related support objects */ void tearDownEditorOnWindow(in nsIDOMWindow window); void setEditorOnControllers(in nsIDOMWindow aWindow, in nsIEditor aEditor); /** * Disable scripts and plugins in aWindow. */ void disableJSAndPlugins(in nsIDOMWindow aWindow); /** * Restore JS and plugins (enable/disable them) according to the state they * were before the last call to disableJSAndPlugins. */ void restoreJSAndPlugins(in nsIDOMWindow aWindow); /** * Removes all the editor's controllers/listeners etc and makes the window * uneditable. */ void detachFromWindow(in nsIDOMWindow aWindow); /** * Undos detachFromWindow(), reattaches this editing session/editor * to the window. */ void reattachToWindow(in nsIDOMWindow aWindow); };