HTMLEditorController.cpp (5742B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #include "mozilla/HTMLEditorController.h" 7 8 #include "mozilla/EditorCommands.h" // for StyleUpdatingCommand, etc 9 #include "mozilla/mozalloc.h" // for operator new 10 #include "nsControllerCommandTable.h" // for nsControllerCommandTable 11 #include "nsError.h" // for NS_OK 12 13 namespace mozilla { 14 15 #define NS_REGISTER_COMMAND(_cmdClass, _cmdName) \ 16 aCommandTable->RegisterCommand(_cmdName ""_ns, _cmdClass::GetInstance()); 17 18 // static 19 void HTMLEditorController::RegisterEditorDocStateCommands( 20 nsControllerCommandTable* aCommandTable) { 21 // observer commands for document state 22 NS_REGISTER_COMMAND(DocumentStateCommand, "obs_documentCreated") 23 NS_REGISTER_COMMAND(DocumentStateCommand, "obs_documentWillBeDestroyed") 24 NS_REGISTER_COMMAND(DocumentStateCommand, "obs_documentLocationChanged") 25 26 // commands that may get or change state 27 NS_REGISTER_COMMAND(SetDocumentStateCommand, "cmd_setDocumentModified") 28 NS_REGISTER_COMMAND(SetDocumentStateCommand, "cmd_setDocumentUseCSS") 29 NS_REGISTER_COMMAND(SetDocumentStateCommand, "cmd_setDocumentReadOnly") 30 NS_REGISTER_COMMAND(SetDocumentStateCommand, "cmd_insertBrOnReturn") 31 NS_REGISTER_COMMAND(SetDocumentStateCommand, "cmd_defaultParagraphSeparator") 32 NS_REGISTER_COMMAND(SetDocumentStateCommand, "cmd_enableObjectResizing") 33 NS_REGISTER_COMMAND(SetDocumentStateCommand, "cmd_enableInlineTableEditing") 34 NS_REGISTER_COMMAND(SetDocumentStateCommand, 35 "cmd_enableAbsolutePositionEditing") 36 NS_REGISTER_COMMAND(SetDocumentStateCommand, 37 "cmd_enableCompatibleJoinSplitNodeDirection") 38 } 39 40 // static 41 void HTMLEditorController::RegisterHTMLEditorCommands( 42 nsControllerCommandTable* aCommandTable) { 43 // Edit menu 44 NS_REGISTER_COMMAND(PasteNoFormattingCommand, "cmd_pasteNoFormatting"); 45 46 // indent/outdent 47 NS_REGISTER_COMMAND(IndentCommand, "cmd_indent"); 48 NS_REGISTER_COMMAND(OutdentCommand, "cmd_outdent"); 49 50 // Styles 51 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_bold"); 52 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_italic"); 53 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_underline"); 54 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_tt"); 55 56 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_strikethrough"); 57 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_superscript"); 58 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_subscript"); 59 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_nobreak"); 60 61 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_em"); 62 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_strong"); 63 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_cite"); 64 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_abbr"); 65 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_acronym"); 66 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_code"); 67 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_samp"); 68 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_var"); 69 NS_REGISTER_COMMAND(StyleUpdatingCommand, "cmd_removeLinks"); 70 71 // lists 72 NS_REGISTER_COMMAND(ListCommand, "cmd_ol"); 73 NS_REGISTER_COMMAND(ListCommand, "cmd_ul"); 74 NS_REGISTER_COMMAND(ListItemCommand, "cmd_dt"); 75 NS_REGISTER_COMMAND(ListItemCommand, "cmd_dd"); 76 NS_REGISTER_COMMAND(RemoveListCommand, "cmd_removeList"); 77 78 // format stuff 79 NS_REGISTER_COMMAND(FormatBlockStateCommand, "cmd_formatBlock"); 80 NS_REGISTER_COMMAND(ParagraphStateCommand, "cmd_paragraphState"); 81 NS_REGISTER_COMMAND(FontFaceStateCommand, "cmd_fontFace"); 82 NS_REGISTER_COMMAND(FontSizeStateCommand, "cmd_fontSize"); 83 NS_REGISTER_COMMAND(FontColorStateCommand, "cmd_fontColor"); 84 NS_REGISTER_COMMAND(BackgroundColorStateCommand, "cmd_backgroundColor"); 85 NS_REGISTER_COMMAND(HighlightColorStateCommand, "cmd_highlight"); 86 87 NS_REGISTER_COMMAND(AlignCommand, "cmd_align"); 88 NS_REGISTER_COMMAND(RemoveStylesCommand, "cmd_removeStyles"); 89 90 NS_REGISTER_COMMAND(IncreaseFontSizeCommand, "cmd_increaseFont"); 91 NS_REGISTER_COMMAND(DecreaseFontSizeCommand, "cmd_decreaseFont"); 92 93 // Insert content 94 NS_REGISTER_COMMAND(InsertHTMLCommand, "cmd_insertHTML"); 95 NS_REGISTER_COMMAND(InsertTagCommand, "cmd_insertLinkNoUI"); 96 NS_REGISTER_COMMAND(InsertTagCommand, "cmd_insertImageNoUI"); 97 NS_REGISTER_COMMAND(InsertTagCommand, "cmd_insertHR"); 98 99 NS_REGISTER_COMMAND(AbsolutePositioningCommand, "cmd_absPos"); 100 NS_REGISTER_COMMAND(DecreaseZIndexCommand, "cmd_decreaseZIndex"); 101 NS_REGISTER_COMMAND(IncreaseZIndexCommand, "cmd_increaseZIndex"); 102 } 103 104 // static 105 void HTMLEditorController::Shutdown() { 106 // EditorDocStateCommands 107 DocumentStateCommand::Shutdown(); 108 SetDocumentStateCommand::Shutdown(); 109 110 // HTMLEditorCommands 111 PasteNoFormattingCommand::Shutdown(); 112 IndentCommand::Shutdown(); 113 OutdentCommand::Shutdown(); 114 StyleUpdatingCommand::Shutdown(); 115 ListCommand::Shutdown(); 116 ListItemCommand::Shutdown(); 117 RemoveListCommand::Shutdown(); 118 FormatBlockStateCommand::Shutdown(); 119 ParagraphStateCommand::Shutdown(); 120 FontFaceStateCommand::Shutdown(); 121 FontSizeStateCommand::Shutdown(); 122 FontColorStateCommand::Shutdown(); 123 BackgroundColorStateCommand::Shutdown(); 124 HighlightColorStateCommand::Shutdown(); 125 AlignCommand::Shutdown(); 126 RemoveStylesCommand::Shutdown(); 127 IncreaseFontSizeCommand::Shutdown(); 128 DecreaseFontSizeCommand::Shutdown(); 129 InsertHTMLCommand::Shutdown(); 130 InsertTagCommand::Shutdown(); 131 AbsolutePositioningCommand::Shutdown(); 132 DecreaseZIndexCommand::Shutdown(); 133 IncreaseZIndexCommand::Shutdown(); 134 } 135 136 } // namespace mozilla