michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #include "mozilla/mozalloc.h" michael@0: #include "nsDebug.h" michael@0: #include "nsEditorCommands.h" michael@0: #include "nsEditorController.h" michael@0: #include "nsError.h" michael@0: #include "nsIControllerCommandTable.h" michael@0: michael@0: class nsIControllerCommand; michael@0: michael@0: michael@0: michael@0: #define NS_REGISTER_ONE_COMMAND(_cmdClass, _cmdName) \ michael@0: { \ michael@0: _cmdClass* theCmd = new _cmdClass(); \ michael@0: NS_ENSURE_TRUE(theCmd, NS_ERROR_OUT_OF_MEMORY); \ michael@0: inCommandTable->RegisterCommand(_cmdName, \ michael@0: static_cast(theCmd)); \ michael@0: } michael@0: michael@0: #define NS_REGISTER_FIRST_COMMAND(_cmdClass, _cmdName) \ michael@0: { \ michael@0: _cmdClass* theCmd = new _cmdClass(); \ michael@0: NS_ENSURE_TRUE(theCmd, NS_ERROR_OUT_OF_MEMORY); \ michael@0: inCommandTable->RegisterCommand(_cmdName, \ michael@0: static_cast(theCmd)); michael@0: michael@0: #define NS_REGISTER_NEXT_COMMAND(_cmdClass, _cmdName) \ michael@0: inCommandTable->RegisterCommand(_cmdName, \ michael@0: static_cast(theCmd)); michael@0: michael@0: #define NS_REGISTER_LAST_COMMAND(_cmdClass, _cmdName) \ michael@0: inCommandTable->RegisterCommand(_cmdName, \ michael@0: static_cast(theCmd)); \ michael@0: } michael@0: michael@0: michael@0: // static michael@0: nsresult nsEditorController::RegisterEditingCommands(nsIControllerCommandTable *inCommandTable) michael@0: { michael@0: // now register all our commands michael@0: // These are commands that will be used in text widgets, and in composer michael@0: michael@0: NS_REGISTER_ONE_COMMAND(nsUndoCommand, "cmd_undo"); michael@0: NS_REGISTER_ONE_COMMAND(nsRedoCommand, "cmd_redo"); michael@0: NS_REGISTER_ONE_COMMAND(nsClearUndoCommand, "cmd_clearUndo"); michael@0: michael@0: NS_REGISTER_ONE_COMMAND(nsCutCommand, "cmd_cut"); michael@0: NS_REGISTER_ONE_COMMAND(nsCutOrDeleteCommand, "cmd_cutOrDelete"); michael@0: NS_REGISTER_ONE_COMMAND(nsCopyCommand, "cmd_copy"); michael@0: NS_REGISTER_ONE_COMMAND(nsCopyOrDeleteCommand, "cmd_copyOrDelete"); michael@0: NS_REGISTER_ONE_COMMAND(nsSelectAllCommand, "cmd_selectAll"); michael@0: michael@0: NS_REGISTER_ONE_COMMAND(nsPasteCommand, "cmd_paste"); michael@0: NS_REGISTER_ONE_COMMAND(nsPasteTransferableCommand, "cmd_pasteTransferable"); michael@0: michael@0: NS_REGISTER_ONE_COMMAND(nsSwitchTextDirectionCommand, "cmd_switchTextDirection"); michael@0: michael@0: NS_REGISTER_FIRST_COMMAND(nsDeleteCommand, "cmd_delete"); michael@0: NS_REGISTER_NEXT_COMMAND(nsDeleteCommand, "cmd_deleteCharBackward"); michael@0: NS_REGISTER_NEXT_COMMAND(nsDeleteCommand, "cmd_deleteCharForward"); michael@0: NS_REGISTER_NEXT_COMMAND(nsDeleteCommand, "cmd_deleteWordBackward"); michael@0: NS_REGISTER_NEXT_COMMAND(nsDeleteCommand, "cmd_deleteWordForward"); michael@0: NS_REGISTER_NEXT_COMMAND(nsDeleteCommand, "cmd_deleteToBeginningOfLine"); michael@0: NS_REGISTER_LAST_COMMAND(nsDeleteCommand, "cmd_deleteToEndOfLine"); michael@0: michael@0: // Insert content michael@0: NS_REGISTER_ONE_COMMAND(nsInsertPlaintextCommand, "cmd_insertText"); michael@0: NS_REGISTER_ONE_COMMAND(nsPasteQuotationCommand, "cmd_pasteQuote"); michael@0: michael@0: return NS_OK; michael@0: } michael@0: michael@0: michael@0: // static michael@0: nsresult nsEditorController::RegisterEditorCommands(nsIControllerCommandTable *inCommandTable) michael@0: { michael@0: // These are commands that will be used in text widgets only. michael@0: michael@0: NS_REGISTER_FIRST_COMMAND(nsSelectionMoveCommands, "cmd_scrollTop"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_scrollBottom"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_moveTop"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_moveBottom"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectTop"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectBottom"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_lineNext"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_linePrevious"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectLineNext"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectLinePrevious"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_charPrevious"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_charNext"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectCharPrevious"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectCharNext"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_beginLine"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_endLine"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectBeginLine"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectEndLine"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_wordPrevious"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_wordNext"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectWordPrevious"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectWordNext"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_scrollPageUp"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_scrollPageDown"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_scrollLineUp"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_scrollLineDown"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_movePageUp"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_movePageDown"); michael@0: NS_REGISTER_NEXT_COMMAND(nsSelectionMoveCommands, "cmd_selectPageUp"); michael@0: NS_REGISTER_LAST_COMMAND(nsSelectionMoveCommands, "cmd_selectPageDown"); michael@0: michael@0: return NS_OK; michael@0: } michael@0: