| /* -*- 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 <sfraser@netscape.com> |
| * Mike Judge <mjudge@netscape.com> |
| * Charles Manske <cmanske@netscape.com> |
| * |
| * 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); |
| }; |
| |