|
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/mozalloc.h" // for operator new |
|
7 #include "nsComposerCommands.h" // for nsStyleUpdatingCommand, etc |
|
8 #include "nsComposerController.h" |
|
9 #include "nsError.h" // for NS_OK |
|
10 #include "nsGkAtoms.h" // for nsGkAtoms, nsGkAtoms::a, etc |
|
11 #include "nsIControllerCommandTable.h" // for nsIControllerCommandTable |
|
12 |
|
13 class nsIControllerCommand; |
|
14 |
|
15 #define NS_REGISTER_ONE_COMMAND(_cmdClass, _cmdName) \ |
|
16 { \ |
|
17 _cmdClass* theCmd = new _cmdClass(); \ |
|
18 inCommandTable->RegisterCommand(_cmdName, \ |
|
19 static_cast<nsIControllerCommand *>(theCmd)); \ |
|
20 } |
|
21 |
|
22 #define NS_REGISTER_FIRST_COMMAND(_cmdClass, _cmdName) \ |
|
23 { \ |
|
24 _cmdClass* theCmd = new _cmdClass(); \ |
|
25 inCommandTable->RegisterCommand(_cmdName, \ |
|
26 static_cast<nsIControllerCommand *>(theCmd)); |
|
27 |
|
28 #define NS_REGISTER_NEXT_COMMAND(_cmdClass, _cmdName) \ |
|
29 inCommandTable->RegisterCommand(_cmdName, \ |
|
30 static_cast<nsIControllerCommand *>(theCmd)); |
|
31 |
|
32 #define NS_REGISTER_LAST_COMMAND(_cmdClass, _cmdName) \ |
|
33 inCommandTable->RegisterCommand(_cmdName, \ |
|
34 static_cast<nsIControllerCommand *>(theCmd)); \ |
|
35 } |
|
36 |
|
37 #define NS_REGISTER_STYLE_COMMAND(_cmdClass, _cmdName, _styleTag) \ |
|
38 { \ |
|
39 _cmdClass* theCmd = new _cmdClass(_styleTag); \ |
|
40 inCommandTable->RegisterCommand(_cmdName, \ |
|
41 static_cast<nsIControllerCommand *>(theCmd)); \ |
|
42 } |
|
43 |
|
44 #define NS_REGISTER_TAG_COMMAND(_cmdClass, _cmdName, _tagName) \ |
|
45 { \ |
|
46 _cmdClass* theCmd = new _cmdClass(_tagName); \ |
|
47 inCommandTable->RegisterCommand(_cmdName, \ |
|
48 static_cast<nsIControllerCommand *>(theCmd)); \ |
|
49 } |
|
50 |
|
51 |
|
52 // static |
|
53 nsresult |
|
54 nsComposerController::RegisterEditorDocStateCommands( |
|
55 nsIControllerCommandTable *inCommandTable) |
|
56 { |
|
57 // observer commands for document state |
|
58 NS_REGISTER_FIRST_COMMAND(nsDocumentStateCommand, "obs_documentCreated") |
|
59 NS_REGISTER_NEXT_COMMAND(nsDocumentStateCommand, "obs_documentWillBeDestroyed") |
|
60 NS_REGISTER_LAST_COMMAND(nsDocumentStateCommand, "obs_documentLocationChanged") |
|
61 |
|
62 // commands that may get or change state |
|
63 NS_REGISTER_FIRST_COMMAND(nsSetDocumentStateCommand, "cmd_setDocumentModified") |
|
64 NS_REGISTER_NEXT_COMMAND(nsSetDocumentStateCommand, "cmd_setDocumentUseCSS") |
|
65 NS_REGISTER_NEXT_COMMAND(nsSetDocumentStateCommand, "cmd_setDocumentReadOnly") |
|
66 NS_REGISTER_NEXT_COMMAND(nsSetDocumentStateCommand, "cmd_insertBrOnReturn") |
|
67 NS_REGISTER_NEXT_COMMAND(nsSetDocumentStateCommand, "cmd_enableObjectResizing") |
|
68 NS_REGISTER_LAST_COMMAND(nsSetDocumentStateCommand, "cmd_enableInlineTableEditing") |
|
69 |
|
70 NS_REGISTER_ONE_COMMAND(nsSetDocumentOptionsCommand, "cmd_setDocumentOptions") |
|
71 |
|
72 return NS_OK; |
|
73 } |
|
74 |
|
75 // static |
|
76 nsresult |
|
77 nsComposerController::RegisterHTMLEditorCommands( |
|
78 nsIControllerCommandTable *inCommandTable) |
|
79 { |
|
80 // Edit menu |
|
81 NS_REGISTER_ONE_COMMAND(nsPasteNoFormattingCommand, "cmd_pasteNoFormatting"); |
|
82 |
|
83 // indent/outdent |
|
84 NS_REGISTER_ONE_COMMAND(nsIndentCommand, "cmd_indent"); |
|
85 NS_REGISTER_ONE_COMMAND(nsOutdentCommand, "cmd_outdent"); |
|
86 |
|
87 // Styles |
|
88 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_bold", nsGkAtoms::b); |
|
89 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_italic", nsGkAtoms::i); |
|
90 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_underline", nsGkAtoms::u); |
|
91 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_tt", nsGkAtoms::tt); |
|
92 |
|
93 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_strikethrough", nsGkAtoms::strike); |
|
94 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_superscript", nsGkAtoms::sup); |
|
95 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_subscript", nsGkAtoms::sub); |
|
96 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_nobreak", nsGkAtoms::nobr); |
|
97 |
|
98 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_em", nsGkAtoms::em); |
|
99 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_strong", nsGkAtoms::strong); |
|
100 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_cite", nsGkAtoms::cite); |
|
101 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_abbr", nsGkAtoms::abbr); |
|
102 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_acronym", nsGkAtoms::acronym); |
|
103 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_code", nsGkAtoms::code); |
|
104 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_samp", nsGkAtoms::samp); |
|
105 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_var", nsGkAtoms::var); |
|
106 NS_REGISTER_STYLE_COMMAND(nsStyleUpdatingCommand, "cmd_removeLinks", nsGkAtoms::href); |
|
107 |
|
108 // lists |
|
109 NS_REGISTER_STYLE_COMMAND(nsListCommand, "cmd_ol", nsGkAtoms::ol); |
|
110 NS_REGISTER_STYLE_COMMAND(nsListCommand, "cmd_ul", nsGkAtoms::ul); |
|
111 NS_REGISTER_STYLE_COMMAND(nsListItemCommand, "cmd_dt", nsGkAtoms::dt); |
|
112 NS_REGISTER_STYLE_COMMAND(nsListItemCommand, "cmd_dd", nsGkAtoms::dd); |
|
113 NS_REGISTER_ONE_COMMAND(nsRemoveListCommand, "cmd_removeList"); |
|
114 |
|
115 // format stuff |
|
116 NS_REGISTER_ONE_COMMAND(nsParagraphStateCommand, "cmd_paragraphState"); |
|
117 NS_REGISTER_ONE_COMMAND(nsFontFaceStateCommand, "cmd_fontFace"); |
|
118 NS_REGISTER_ONE_COMMAND(nsFontSizeStateCommand, "cmd_fontSize"); |
|
119 NS_REGISTER_ONE_COMMAND(nsFontColorStateCommand, "cmd_fontColor"); |
|
120 NS_REGISTER_ONE_COMMAND(nsBackgroundColorStateCommand, "cmd_backgroundColor"); |
|
121 NS_REGISTER_ONE_COMMAND(nsHighlightColorStateCommand, "cmd_highlight"); |
|
122 |
|
123 NS_REGISTER_ONE_COMMAND(nsAlignCommand, "cmd_align"); |
|
124 NS_REGISTER_ONE_COMMAND(nsRemoveStylesCommand, "cmd_removeStyles"); |
|
125 |
|
126 NS_REGISTER_ONE_COMMAND(nsIncreaseFontSizeCommand, "cmd_increaseFont"); |
|
127 NS_REGISTER_ONE_COMMAND(nsDecreaseFontSizeCommand, "cmd_decreaseFont"); |
|
128 |
|
129 // Insert content |
|
130 NS_REGISTER_ONE_COMMAND(nsInsertHTMLCommand, "cmd_insertHTML"); |
|
131 NS_REGISTER_TAG_COMMAND(nsInsertTagCommand, "cmd_insertLinkNoUI", nsGkAtoms::a); |
|
132 NS_REGISTER_TAG_COMMAND(nsInsertTagCommand, "cmd_insertImageNoUI", nsGkAtoms::img); |
|
133 NS_REGISTER_TAG_COMMAND(nsInsertTagCommand, "cmd_insertHR", nsGkAtoms::hr); |
|
134 |
|
135 NS_REGISTER_ONE_COMMAND(nsAbsolutePositioningCommand, "cmd_absPos"); |
|
136 NS_REGISTER_ONE_COMMAND(nsDecreaseZIndexCommand, "cmd_decreaseZIndex"); |
|
137 NS_REGISTER_ONE_COMMAND(nsIncreaseZIndexCommand, "cmd_increaseZIndex"); |
|
138 |
|
139 return NS_OK; |
|
140 } |