1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/editor/composer/src/nsComposerController.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,140 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#include "mozilla/mozalloc.h" // for operator new 1.10 +#include "nsComposerCommands.h" // for nsStyleUpdatingCommand, etc 1.11 +#include "nsComposerController.h" 1.12 +#include "nsError.h" // for NS_OK 1.13 +#include "nsGkAtoms.h" // for nsGkAtoms, nsGkAtoms::a, etc 1.14 +#include "nsIControllerCommandTable.h" // for nsIControllerCommandTable 1.15 + 1.16 +class nsIControllerCommand; 1.17 + 1.18 +#define NS_REGISTER_ONE_COMMAND(_cmdClass, _cmdName) \ 1.19 + { \ 1.20 + _cmdClass* theCmd = new _cmdClass(); \ 1.21 + inCommandTable->RegisterCommand(_cmdName, \ 1.22 + static_cast<nsIControllerCommand *>(theCmd)); \ 1.23 + } 1.24 + 1.25 +#define NS_REGISTER_FIRST_COMMAND(_cmdClass, _cmdName) \ 1.26 + { \ 1.27 + _cmdClass* theCmd = new _cmdClass(); \ 1.28 + inCommandTable->RegisterCommand(_cmdName, \ 1.29 + static_cast<nsIControllerCommand *>(theCmd)); 1.30 + 1.31 +#define NS_REGISTER_NEXT_COMMAND(_cmdClass, _cmdName) \ 1.32 + inCommandTable->RegisterCommand(_cmdName, \ 1.33 + static_cast<nsIControllerCommand *>(theCmd)); 1.34 + 1.35 +#define NS_REGISTER_LAST_COMMAND(_cmdClass, _cmdName) \ 1.36 + inCommandTable->RegisterCommand(_cmdName, \ 1.37 + static_cast<nsIControllerCommand *>(theCmd)); \ 1.38 + } 1.39 + 1.40 +#define NS_REGISTER_STYLE_COMMAND(_cmdClass, _cmdName, _styleTag) \ 1.41 + { \ 1.42 + _cmdClass* theCmd = new _cmdClass(_styleTag); \ 1.43 + inCommandTable->RegisterCommand(_cmdName, \ 1.44 + static_cast<nsIControllerCommand *>(theCmd)); \ 1.45 + } 1.46 + 1.47 +#define NS_REGISTER_TAG_COMMAND(_cmdClass, _cmdName, _tagName) \ 1.48 + { \ 1.49 + _cmdClass* theCmd = new _cmdClass(_tagName); \ 1.50 + inCommandTable->RegisterCommand(_cmdName, \ 1.51 + static_cast<nsIControllerCommand *>(theCmd)); \ 1.52 + } 1.53 + 1.54 + 1.55 +// static 1.56 +nsresult 1.57 +nsComposerController::RegisterEditorDocStateCommands( 1.58 + nsIControllerCommandTable *inCommandTable) 1.59 +{ 1.60 + // observer commands for document state 1.61 + NS_REGISTER_FIRST_COMMAND(nsDocumentStateCommand, "obs_documentCreated") 1.62 + NS_REGISTER_NEXT_COMMAND(nsDocumentStateCommand, "obs_documentWillBeDestroyed") 1.63 + NS_REGISTER_LAST_COMMAND(nsDocumentStateCommand, "obs_documentLocationChanged") 1.64 + 1.65 + // commands that may get or change state 1.66 + NS_REGISTER_FIRST_COMMAND(nsSetDocumentStateCommand, "cmd_setDocumentModified") 1.67 + NS_REGISTER_NEXT_COMMAND(nsSetDocumentStateCommand, "cmd_setDocumentUseCSS") 1.68 + NS_REGISTER_NEXT_COMMAND(nsSetDocumentStateCommand, "cmd_setDocumentReadOnly") 1.69 + NS_REGISTER_NEXT_COMMAND(nsSetDocumentStateCommand, "cmd_insertBrOnReturn") 1.70 + NS_REGISTER_NEXT_COMMAND(nsSetDocumentStateCommand, "cmd_enableObjectResizing") 1.71 + NS_REGISTER_LAST_COMMAND(nsSetDocumentStateCommand, "cmd_enableInlineTableEditing") 1.72 + 1.73 + NS_REGISTER_ONE_COMMAND(nsSetDocumentOptionsCommand, "cmd_setDocumentOptions") 1.74 + 1.75 + return NS_OK; 1.76 +} 1.77 + 1.78 +// static 1.79 +nsresult 1.80 +nsComposerController::RegisterHTMLEditorCommands( 1.81 + nsIControllerCommandTable *inCommandTable) 1.82 +{ 1.83 + // Edit menu 1.84 + NS_REGISTER_ONE_COMMAND(nsPasteNoFormattingCommand, "cmd_pasteNoFormatting"); 1.85 + 1.86 + // indent/outdent 1.87 + NS_REGISTER_ONE_COMMAND(nsIndentCommand, "cmd_indent"); 1.88 + NS_REGISTER_ONE_COMMAND(nsOutdentCommand, "cmd_outdent"); 1.89 + 1.90 + // Styles 1.91 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_bold", nsGkAtoms::b); 1.92 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_italic", nsGkAtoms::i); 1.93 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_underline", nsGkAtoms::u); 1.94 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_tt", nsGkAtoms::tt); 1.95 + 1.96 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_strikethrough", nsGkAtoms::strike); 1.97 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_superscript", nsGkAtoms::sup); 1.98 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_subscript", nsGkAtoms::sub); 1.99 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_nobreak", nsGkAtoms::nobr); 1.100 + 1.101 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_em", nsGkAtoms::em); 1.102 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_strong", nsGkAtoms::strong); 1.103 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_cite", nsGkAtoms::cite); 1.104 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_abbr", nsGkAtoms::abbr); 1.105 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_acronym", nsGkAtoms::acronym); 1.106 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_code", nsGkAtoms::code); 1.107 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_samp", nsGkAtoms::samp); 1.108 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_var", nsGkAtoms::var); 1.109 + NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_removeLinks", nsGkAtoms::href); 1.110 + 1.111 + // lists 1.112 + NS_REGISTER_STYLE_COMMAND(nsListCommand, "cmd_ol", nsGkAtoms::ol); 1.113 + NS_REGISTER_STYLE_COMMAND(nsListCommand, "cmd_ul", nsGkAtoms::ul); 1.114 + NS_REGISTER_STYLE_COMMAND(nsListItemCommand, "cmd_dt", nsGkAtoms::dt); 1.115 + NS_REGISTER_STYLE_COMMAND(nsListItemCommand, "cmd_dd", nsGkAtoms::dd); 1.116 + NS_REGISTER_ONE_COMMAND(nsRemoveListCommand, "cmd_removeList"); 1.117 + 1.118 + // format stuff 1.119 + NS_REGISTER_ONE_COMMAND(nsParagraphStateCommand, "cmd_paragraphState"); 1.120 + NS_REGISTER_ONE_COMMAND(nsFontFaceStateCommand, "cmd_fontFace"); 1.121 + NS_REGISTER_ONE_COMMAND(nsFontSizeStateCommand, "cmd_fontSize"); 1.122 + NS_REGISTER_ONE_COMMAND(nsFontColorStateCommand, "cmd_fontColor"); 1.123 + NS_REGISTER_ONE_COMMAND(nsBackgroundColorStateCommand, "cmd_backgroundColor"); 1.124 + NS_REGISTER_ONE_COMMAND(nsHighlightColorStateCommand, "cmd_highlight"); 1.125 + 1.126 + NS_REGISTER_ONE_COMMAND(nsAlignCommand, "cmd_align"); 1.127 + NS_REGISTER_ONE_COMMAND(nsRemoveStylesCommand, "cmd_removeStyles"); 1.128 + 1.129 + NS_REGISTER_ONE_COMMAND(nsIncreaseFontSizeCommand, "cmd_increaseFont"); 1.130 + NS_REGISTER_ONE_COMMAND(nsDecreaseFontSizeCommand, "cmd_decreaseFont"); 1.131 + 1.132 + // Insert content 1.133 + NS_REGISTER_ONE_COMMAND(nsInsertHTMLCommand, "cmd_insertHTML"); 1.134 + NS_REGISTER_TAG_COMMAND(nsInsertTagCommand, "cmd_insertLinkNoUI", nsGkAtoms::a); 1.135 + NS_REGISTER_TAG_COMMAND(nsInsertTagCommand, "cmd_insertImageNoUI", nsGkAtoms::img); 1.136 + NS_REGISTER_TAG_COMMAND(nsInsertTagCommand, "cmd_insertHR", nsGkAtoms::hr); 1.137 + 1.138 + NS_REGISTER_ONE_COMMAND(nsAbsolutePositioningCommand, "cmd_absPos"); 1.139 + NS_REGISTER_ONE_COMMAND(nsDecreaseZIndexCommand, "cmd_decreaseZIndex"); 1.140 + NS_REGISTER_ONE_COMMAND(nsIncreaseZIndexCommand, "cmd_increaseZIndex"); 1.141 + 1.142 + return NS_OK; 1.143 +}