diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /devtools/client/projecteditor/lib/plugins/save | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/projecteditor/lib/plugins/save')
-rw-r--r-- | devtools/client/projecteditor/lib/plugins/save/moz.build | 9 | ||||
-rw-r--r-- | devtools/client/projecteditor/lib/plugins/save/save.js | 93 |
2 files changed, 102 insertions, 0 deletions
diff --git a/devtools/client/projecteditor/lib/plugins/save/moz.build b/devtools/client/projecteditor/lib/plugins/save/moz.build new file mode 100644 index 000000000..66df054eb --- /dev/null +++ b/devtools/client/projecteditor/lib/plugins/save/moz.build @@ -0,0 +1,9 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +DevToolsModules( + 'save.js', +) diff --git a/devtools/client/projecteditor/lib/plugins/save/save.js b/devtools/client/projecteditor/lib/plugins/save/save.js new file mode 100644 index 000000000..43b2185d2 --- /dev/null +++ b/devtools/client/projecteditor/lib/plugins/save/save.js @@ -0,0 +1,93 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* 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/. */ + +const { Class } = require("sdk/core/heritage"); +const { registerPlugin, Plugin } = require("devtools/client/projecteditor/lib/plugins/core"); +const picker = require("devtools/client/projecteditor/lib/helpers/file-picker"); +const { getLocalizedString } = require("devtools/client/projecteditor/lib/helpers/l10n"); + +// Handles the save command. +var SavePlugin = Class({ + extends: Plugin, + + init: function (host) { + + this.host.addCommand(this, { + id: "cmd-save", + key: getLocalizedString("projecteditor.save.commandkey"), + modifiers: "accel" + }); + this.host.addCommand(this, { + id: "cmd-saveas", + key: getLocalizedString("projecteditor.save.commandkey"), + modifiers: "accel shift" + }); + this.host.createMenuItem({ + parent: this.host.fileMenuPopup, + label: getLocalizedString("projecteditor.saveLabel"), + command: "cmd-save", + key: "key_cmd-save" + }); + this.host.createMenuItem({ + parent: this.host.fileMenuPopup, + label: getLocalizedString("projecteditor.saveAsLabel"), + command: "cmd-saveas", + key: "key_cmd-saveas" + }); + }, + + isCommandEnabled: function (cmd) { + let currentEditor = this.host.currentEditor; + return currentEditor.isEditable; + }, + + onCommand: function (cmd) { + if (cmd === "cmd-save") { + this.onEditorSaveRequested(); + } else if (cmd === "cmd-saveas") { + this.saveAs(); + } + }, + + saveAs: function () { + let editor = this.host.currentEditor; + let project = this.host.resourceFor(editor); + + let resource; + picker.showSave({ + window: this.host.window, + directory: project && project.parent ? project.parent.path : null, + defaultName: project ? project.basename : null, + }).then(path => { + return this.createResource(path); + }).then(res => { + resource = res; + return this.saveResource(editor, resource); + }).then(() => { + this.host.openResource(resource); + }).then(null, console.error); + }, + + onEditorSaveRequested: function () { + let editor = this.host.currentEditor; + let resource = this.host.resourceFor(editor); + if (!resource) { + return this.saveAs(); + } + + return this.saveResource(editor, resource); + }, + + createResource: function (path) { + return this.host.project.resourceFor(path, { create: true }); + }, + + saveResource: function (editor, resource) { + return editor.save(resource); + } +}); +exports.SavePlugin = SavePlugin; +registerPlugin(SavePlugin); |