mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
Bug 1397366 - restore source-editor commands controller for scratchpad & styleeditor menus;r=ochameau
MozReview-Commit-ID: Cfgws8fqgvp --HG-- extra : rebase_source : 45f03264527acc9fe70a49931c08a76e97ee778a
This commit is contained in:
parent
8a5629f928
commit
9f4f847021
@ -1732,6 +1732,9 @@ var Scratchpad = {
|
||||
this.editor.focus();
|
||||
this.editor.setCursor({ line: lines.length, ch: lines.pop().length });
|
||||
|
||||
// Add the commands controller for the source-editor.
|
||||
this.editor.insertCommandsController();
|
||||
|
||||
if (state)
|
||||
this.dirty = !state.saved;
|
||||
|
||||
|
97
devtools/client/sourceeditor/editor-commands-controller.js
Normal file
97
devtools/client/sourceeditor/editor-commands-controller.js
Normal file
@ -0,0 +1,97 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* The source editor exposes XUL commands that can be used when embedded in a XUL
|
||||
* document. This controller drives the availability and behavior of the commands. When
|
||||
* the editor input field is focused, this controller will update the matching menu item
|
||||
* entries found in application menus or context menus.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Returns a controller object that can be used for editor-specific commands:
|
||||
* - find
|
||||
* - find again
|
||||
* - go to line
|
||||
* - undo
|
||||
* - redo
|
||||
* - delete
|
||||
* - select all
|
||||
*/
|
||||
function createController(ed) {
|
||||
return {
|
||||
supportsCommand: function (cmd) {
|
||||
switch (cmd) {
|
||||
case "cmd_find":
|
||||
case "cmd_findAgain":
|
||||
case "cmd_gotoLine":
|
||||
case "cmd_undo":
|
||||
case "cmd_redo":
|
||||
case "cmd_delete":
|
||||
case "cmd_selectAll":
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
isCommandEnabled: function (cmd) {
|
||||
let cm = ed.codeMirror;
|
||||
|
||||
switch (cmd) {
|
||||
case "cmd_find":
|
||||
case "cmd_gotoLine":
|
||||
case "cmd_selectAll":
|
||||
return true;
|
||||
case "cmd_findAgain":
|
||||
return cm.state.search != null && cm.state.search.query != null;
|
||||
case "cmd_undo":
|
||||
return ed.canUndo();
|
||||
case "cmd_redo":
|
||||
return ed.canRedo();
|
||||
case "cmd_delete":
|
||||
return ed.somethingSelected();
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
doCommand: function (cmd) {
|
||||
let cm = ed.codeMirror;
|
||||
|
||||
let map = {
|
||||
"cmd_selectAll": "selectAll",
|
||||
"cmd_find": "find",
|
||||
"cmd_undo": "undo",
|
||||
"cmd_redo": "redo",
|
||||
"cmd_delete": "delCharAfter",
|
||||
"cmd_findAgain": "findNext"
|
||||
};
|
||||
|
||||
if (map[cmd]) {
|
||||
cm.execCommand(map[cmd]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cmd == "cmd_gotoLine") {
|
||||
ed.jumpToLine();
|
||||
}
|
||||
},
|
||||
|
||||
onEvent: function () {}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Create and insert a commands controller for the provided SourceEditor instance.
|
||||
*/
|
||||
function insertCommandsController(sourceEditor) {
|
||||
let input = sourceEditor.codeMirror.getInputField();
|
||||
let controller = createController(sourceEditor);
|
||||
input.controllers.insertControllerAt(0, controller);
|
||||
}
|
||||
|
||||
module.exports = { insertCommandsController };
|
@ -483,6 +483,16 @@ Editor.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* The source editor can expose several commands linked from system and context menus.
|
||||
* Kept for backward compatibility with scratchpad and styleeditor.
|
||||
*/
|
||||
insertCommandsController: function () {
|
||||
const { insertCommandsController } =
|
||||
require("devtools/client/sourceeditor/editor-commands-controller");
|
||||
insertCommandsController(this);
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns text from the text area. If line argument is provided
|
||||
* the method returns only that line.
|
||||
|
@ -12,11 +12,12 @@ DevToolsModules(
|
||||
'autocomplete.js',
|
||||
'css-autocompleter.js',
|
||||
'debugger.js',
|
||||
'editor-commands-controller.js',
|
||||
'editor.js',
|
||||
'wasm.js'
|
||||
)
|
||||
|
||||
BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
|
||||
|
||||
with Files('**'):
|
||||
BUG_COMPONENT = ('Firefox', 'Developer Tools: Source Editor')
|
||||
with Files('**'):
|
||||
BUG_COMPONENT = ('Firefox', 'Developer Tools: Source Editor')
|
||||
|
@ -469,6 +469,9 @@ StyleSheetEditor.prototype = {
|
||||
sourceEditor.container.addEventListener("mousemove", this._onMouseMove);
|
||||
}
|
||||
|
||||
// Add the commands controller for the source-editor.
|
||||
sourceEditor.insertCommandsController();
|
||||
|
||||
this.emit("source-editor-load");
|
||||
});
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user