|
| 1 | +/*----------------------------------------------------------------------------- |
| 2 | +| Copyright (c) 2014-2015, PhosphorJS Contributors |
| 3 | +| |
| 4 | +| Distributed under the terms of the BSD 3-Clause License. |
| 5 | +| |
| 6 | +| The full license is in the file LICENSE, distributed with this software. |
| 7 | +|----------------------------------------------------------------------------*/ |
| 8 | +'use strict'; |
| 9 | +var __extends = (this && this.__extends) || function (d, b) { |
| 10 | + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; |
| 11 | + function __() { this.constructor = d; } |
| 12 | + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); |
| 13 | +}; |
| 14 | +var phosphor_dockpanel_1 = require('phosphor-dockpanel'); |
| 15 | +var phosphor_tabs_1 = require('phosphor-tabs'); |
| 16 | +var phosphor_widget_1 = require('phosphor-widget'); |
| 17 | +require('./index.css'); |
| 18 | +/** |
| 19 | + * A widget which hosts a CodeMirror editor. |
| 20 | + */ |
| 21 | +var CodeMirrorWidget = (function (_super) { |
| 22 | + __extends(CodeMirrorWidget, _super); |
| 23 | + function CodeMirrorWidget(config) { |
| 24 | + _super.call(this); |
| 25 | + this.addClass('CodeMirrorWidget'); |
| 26 | + this._editor = CodeMirror(this.node, config); |
| 27 | + } |
| 28 | + Object.defineProperty(CodeMirrorWidget.prototype, "editor", { |
| 29 | + get: function () { |
| 30 | + return this._editor; |
| 31 | + }, |
| 32 | + enumerable: true, |
| 33 | + configurable: true |
| 34 | + }); |
| 35 | + CodeMirrorWidget.prototype.loadTarget = function (target) { |
| 36 | + var doc = this._editor.getDoc(); |
| 37 | + var xhr = new XMLHttpRequest(); |
| 38 | + xhr.open('GET', target); |
| 39 | + xhr.onreadystatechange = function () { return doc.setValue(xhr.responseText); }; |
| 40 | + xhr.send(); |
| 41 | + }; |
| 42 | + CodeMirrorWidget.prototype.onAfterAttach = function (msg) { |
| 43 | + this._editor.refresh(); |
| 44 | + }; |
| 45 | + CodeMirrorWidget.prototype.onResize = function (msg) { |
| 46 | + if (msg.width < 0 || msg.height < 0) { |
| 47 | + this._editor.refresh(); |
| 48 | + } |
| 49 | + else { |
| 50 | + this._editor.setSize(msg.width, msg.height); |
| 51 | + } |
| 52 | + }; |
| 53 | + return CodeMirrorWidget; |
| 54 | +})(phosphor_widget_1.Widget); |
| 55 | +function createContent(title) { |
| 56 | + var widget = new phosphor_widget_1.Widget(); |
| 57 | + widget.addClass('content'); |
| 58 | + widget.addClass(title.toLowerCase()); |
| 59 | + var tab = new phosphor_tabs_1.Tab(title); |
| 60 | + tab.closable = true; |
| 61 | + phosphor_dockpanel_1.DockPanel.setTab(widget, tab); |
| 62 | + return widget; |
| 63 | +} |
| 64 | +function main() { |
| 65 | + var r1 = createContent('Red'); |
| 66 | + var r2 = createContent('Red'); |
| 67 | + var r3 = createContent('Red'); |
| 68 | + var b1 = createContent('Blue'); |
| 69 | + var b2 = createContent('Blue'); |
| 70 | + var g1 = createContent('Green'); |
| 71 | + var g2 = createContent('Green'); |
| 72 | + var g3 = createContent('Green'); |
| 73 | + var y1 = createContent('Yellow'); |
| 74 | + var y2 = createContent('Yellow'); |
| 75 | + var panel = new phosphor_dockpanel_1.DockPanel(); |
| 76 | + panel.id = 'main'; |
| 77 | + // Create the CodeMirror widget with a typescript mode. |
| 78 | + var cmSource = new CodeMirrorWidget({ |
| 79 | + mode: 'text/typescript', |
| 80 | + lineNumbers: true, |
| 81 | + tabSize: 2, |
| 82 | + }); |
| 83 | + cmSource.loadTarget('./index.ts'); |
| 84 | + var cmCss = new CodeMirrorWidget({ |
| 85 | + mode: 'text/css', |
| 86 | + lineNumbers: true, |
| 87 | + tabSize: 2, |
| 88 | + }); |
| 89 | + cmCss.loadTarget('./index.css'); |
| 90 | + var sourceTab = new phosphor_tabs_1.Tab('Source'); |
| 91 | + phosphor_dockpanel_1.DockPanel.setTab(cmSource, sourceTab); |
| 92 | + var cssTab = new phosphor_tabs_1.Tab('CSS'); |
| 93 | + phosphor_dockpanel_1.DockPanel.setTab(cmCss, cssTab); |
| 94 | + panel.addWidget(r1); |
| 95 | + panel.addWidget(b1, phosphor_dockpanel_1.DockPanel.SplitRight, r1); |
| 96 | + panel.addWidget(y1, phosphor_dockpanel_1.DockPanel.SplitBottom, b1); |
| 97 | + panel.addWidget(g1, phosphor_dockpanel_1.DockPanel.SplitLeft, y1); |
| 98 | + panel.addWidget(b2, phosphor_dockpanel_1.DockPanel.SplitBottom); |
| 99 | + panel.addWidget(cmCss, phosphor_dockpanel_1.DockPanel.TabBefore, r1); |
| 100 | + panel.addWidget(cmSource, phosphor_dockpanel_1.DockPanel.TabBefore, cmCss); |
| 101 | + panel.addWidget(g2, phosphor_dockpanel_1.DockPanel.TabBefore, b2); |
| 102 | + panel.addWidget(y2, phosphor_dockpanel_1.DockPanel.TabBefore, g2); |
| 103 | + panel.addWidget(g3, phosphor_dockpanel_1.DockPanel.TabBefore, y2); |
| 104 | + panel.addWidget(r2, phosphor_dockpanel_1.DockPanel.TabBefore, b1); |
| 105 | + panel.addWidget(r3, phosphor_dockpanel_1.DockPanel.TabBefore, y1); |
| 106 | + phosphor_widget_1.attachWidget(panel, document.body); |
| 107 | + window.onresize = function () { return panel.update(); }; |
| 108 | +} |
| 109 | +window.onload = main; |
0 commit comments