OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 /** | |
6 * @constructor | |
7 * @extends {WebInspector.VBox} | |
8 */ | |
9 WebInspector.TerminalWidget = function() | |
10 { | |
11 WebInspector.VBox.call(this, false); | |
12 this.registerRequiredCSS("terminal/xterm.js/build/xterm.css"); | |
13 this.registerRequiredCSS("terminal/terminal.css"); | |
14 WebInspector.serviceManager.lookupService("Terminal").then(this._init.bind(t his)); | |
15 this.element.addEventListener("mousemove", this._mouseMove.bind(this), false ); | |
16 } | |
17 | |
18 WebInspector.TerminalWidget.prototype = { | |
19 /** | |
20 * @param {?WebInspector.ServiceManager.Service} backend | |
21 */ | |
22 _init: function(backend) | |
23 { | |
24 if (!backend) { | |
25 console.error("Terminal service not available."); | |
dgozman
2016/09/27 19:25:48
Let's show something instead of completely white w
| |
26 return; | |
27 } | |
28 | |
29 this._backend = backend; | |
30 this._term = new Terminal({ cursorBlink: true }); | |
31 this._term.open(this.contentElement); | |
32 this._term.on("data", data => { | |
33 this._backend.send("write", { data: data }); | |
34 }); | |
35 this._term.on("resize", size => { | |
36 this._backend.send("resize", { cols: size.cols, rows: size.rows }); | |
37 }); | |
38 this._backend.send("init", { colos: 80, rows: 25 }).then(result => { | |
39 if (result) | |
40 this._term.fit(); | |
41 }); | |
42 this._backend.on("data", result => { | |
43 this._term.write(result.data); | |
44 this._linkifyUpToDate = false; | |
45 }); | |
46 this._backend.on("disposed", this._disposed.bind(this)); | |
47 }, | |
48 | |
49 _mouseMove: function() | |
50 { | |
51 if (this._linkifyUpToDate) | |
52 return; | |
53 this._term.linkify(); | |
54 this._linkifyUpToDate = true; | |
55 }, | |
56 | |
57 onResize: function() | |
58 { | |
59 if (this._term) | |
60 this._term.fit(); | |
61 }, | |
62 | |
63 _disposed: function() | |
64 { | |
65 this.contentElement.classList.add("disabled"); | |
66 }, | |
67 | |
68 /** | |
69 * @override | |
70 */ | |
71 wasDetachedFromHierarchy: function() | |
dgozman
2016/09/27 19:25:48
Does this ever happen in the drawer?
| |
72 { | |
73 if (this._backend) | |
74 this._backend.dispose(); | |
75 }, | |
76 | |
77 __proto__: WebInspector.VBox.prototype | |
78 } | |
OLD | NEW |