-
Notifications
You must be signed in to change notification settings - Fork 4
/
GitRunDialogView.js
89 lines (67 loc) · 2.99 KB
/
GitRunDialogView.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*jslint vars: true, plusplus: true, devel: true, nomen: true, regexp: true, indent: 4, maxerr: 50 */
/*global define, $, brackets, window, console, Mustache */
define(function (require, exports, module) {
"use strict";
var Dialogs = brackets.getModule("widgets/Dialogs"),
I18n = require("GitManagerI18n"),
runCommandDialogTemplate = require("text!GitRunDialogView.html");
function GitRunDialogView(manager) {
this.manager = manager;
this.$runDialog = undefined;
}
GitRunDialogView.RUN_DIALOG_CLASS = "GitManager-dialog-run";
GitRunDialogView.RUN_DIALOG_INPUT_CLASS = "run-input";
GitRunDialogView.RUN_DIALOG_RUN_BUTTON_CLASS = "btn.run-git-command";
GitRunDialogView.RUN_DIALOG_OUTPUT_CLASS = "run-output";
GitRunDialogView.RUN_DIALOG_STATE_RUNNING = "running";
GitRunDialogView.prototype.show = function () {
var $t, self = this, $input, $button;
this.$runDialog = $t = $(Mustache.render(runCommandDialogTemplate, I18n));
$input = $t.find("." + GitRunDialogView.RUN_DIALOG_INPUT_CLASS);
$button = $t.find("." + GitRunDialogView.RUN_DIALOG_RUN_BUTTON_CLASS);
$button.on("click", function (e) {
self.runCommand();
});
$input.on("keyup", function (e) {
if (e.keyCode === 13) {
e.stopImmediatePropagation();
e.preventDefault();
self.runCommand();
}
});
Dialogs.showModalDialogUsingTemplate($t);
$input.focus();
};
GitRunDialogView.prototype.close = function () {
Dialogs.cancelModalDialogIfOpen(GitRunDialogView.RUN_DIALOG_CLASS);
};
GitRunDialogView.prototype.runCommand = function () {
var promise, $t = this.$runDialog, self = this, command = $t.find("." + GitRunDialogView.RUN_DIALOG_INPUT_CLASS).val();
$t.addClass(GitRunDialogView.RUN_DIALOG_STATE_RUNNING);
self.clearRunDialog();
promise = this.manager.runCommand(command).then(
function (data) {
self.writeOutput(data);
},
function (error) {
// this isn't always an error. Some of the longer running commands end up here with valid input.
self.writeOutput(error);
},
function (data) {
self.writeOutput(data);
}
);
};
GitRunDialogView.prototype.writeOutput = function (data) {
this.$runDialog.find("." + GitRunDialogView.RUN_DIALOG_OUTPUT_CLASS).append(data);
};
GitRunDialogView.prototype.clearRunDialog = function () {
if (!this.$runDialog) {
return;
}
var $t = this.$runDialog;
$t.find("." + GitRunDialogView.RUN_DIALOG_INPUT_CLASS).val('');
$t.find("." + GitRunDialogView.RUN_DIALOG_OUTPUT_CLASS).html('');
};
module.exports = GitRunDialogView;
});