Skip to content

Commit df15e2b

Browse files
committed
Added "terminate" button and automatic focus for the preview.
1 parent 50791af commit df15e2b

File tree

9 files changed

+323
-265
lines changed

9 files changed

+323
-265
lines changed

package-lock.json

Lines changed: 239 additions & 239 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/cache/cache.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ cwc.Cache.prototype.getFile = function(name) {
145145
*/
146146
cwc.Cache.prototype.addLibraryFile = function(name, content) {
147147
let filename = name.includes('/library/') ? name : '/library/' + name;
148+
if (content.includes('data:')) {
149+
content = atob(content.split(',')[1]);
150+
}
148151
this.database_.addFile(filename, content, '__library__');
149152
};
150153

src/mode/modder.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ cwc.mode.Modder.prototype.postMode = function(mode = this.mode) {
157157
this.setAutoUpdate(true);
158158
} else if (modeConfig.runPreview) {
159159
this.runPreview();
160+
this.helper.getInstance('preview').focus();
160161
}
161162

162163
// Handle file data, if needed.
@@ -261,6 +262,7 @@ cwc.mode.Modder.prototype.syncLibrary = function() {
261262

262263
/**
263264
* Runs the preview.
265+
* @param {boolean} focus
264266
*/
265267
cwc.mode.Modder.prototype.runPreview = function() {
266268
let previewInstance = this.helper.getInstance('preview');

src/ui/library/library.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,11 @@ cwc.ui.Library.prototype.getFiles = function() {
328328
* @param {string=} optType
329329
*/
330330
cwc.ui.Library.prototype.addFile = function(name, content, optType) {
331+
let cacheInstance = this.helper.getInstance('cache');
332+
if (cacheInstance) {
333+
cacheInstance.addLibraryFile(name, content);
334+
}
335+
331336
let fileInstance = this.helper.getInstance('file');
332337
if (fileInstance) {
333338
let newFile = fileInstance.addLibraryFile(name, content, optType);

src/ui/preview/infobar/preview_infobar.js

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -251,23 +251,32 @@ cwc.ui.PreviewInfobar.prototype.addMessage = function(event) {
251251
let logLevel = goog.debug.Logger.Level.getPredefinedLevel('ALL');
252252
let logLevelName = 'Unknown';
253253

254-
if (level == cwc.ui.PreviewInfobarLevel.DEBUG) {
255-
this.debugNum = (this.debugNum || 0) + 1;
256-
logLevel = goog.debug.Logger.Level.getPredefinedLevel('FINE');
257-
logLevelName = 'Debug';
258-
message = goog.debug.expose(event);
259-
} else if (level == cwc.ui.PreviewInfobarLevel.INFO) {
260-
this.infoNum = (this.infoNum || 0) + 1;
261-
logLevel = goog.debug.Logger.Level.getPredefinedLevel('INFO');
262-
logLevelName = 'Info';
263-
} else if (level == cwc.ui.PreviewInfobarLevel.WARN) {
264-
this.warnNum = (this.warnNum || 0) + 1;
265-
logLevel = goog.debug.Logger.Level.getPredefinedLevel('WARNING');
266-
logLevelName = 'Warn';
267-
} else if (level == cwc.ui.PreviewInfobarLevel.ERROR) {
268-
this.errorNum = (this.errorNum || 0) + 1;
269-
logLevel = goog.debug.Logger.Level.getPredefinedLevel('SEVERE');
270-
logLevelName = 'Error';
254+
switch (level) {
255+
case cwc.ui.PreviewInfobarLevel.DEBUG:
256+
this.debugNum = (this.debugNum || 0) + 1;
257+
logLevel = goog.debug.Logger.Level.getPredefinedLevel('FINE');
258+
logLevelName = 'Debug';
259+
message = goog.debug.expose(event);
260+
break;
261+
case cwc.ui.PreviewInfobarLevel.INFO:
262+
this.infoNum = (this.infoNum || 0) + 1;
263+
logLevel = goog.debug.Logger.Level.getPredefinedLevel('INFO');
264+
logLevelName = 'Info';
265+
break;
266+
case cwc.ui.PreviewInfobarLevel.WARN:
267+
if (message.startsWith('AudioParam value setter') ||
268+
message.startsWith('GainNode.gain.value setter')) {
269+
return;
270+
}
271+
this.warnNum = (this.warnNum || 0) + 1;
272+
logLevel = goog.debug.Logger.Level.getPredefinedLevel('WARNING');
273+
logLevelName = 'Warn';
274+
break;
275+
case cwc.ui.PreviewInfobarLevel.ERROR:
276+
this.errorNum = (this.errorNum || 0) + 1;
277+
logLevel = goog.debug.Logger.Level.getPredefinedLevel('SEVERE');
278+
logLevelName = 'Error';
279+
break;
271280
}
272281

273282
this.addLogRecord(logLevel, message, logLevelName);

src/ui/preview/preview.js

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143,19 +143,28 @@ cwc.ui.Preview.prototype.decorate = function(node) {
143143
this.statusbar.decorate(nodeStatusbar);
144144
}
145145

146-
// Statusbutton and actions
146+
// Status Button and actions
147147
let nodeStatusButton = goog.dom.getElement(this.prefix + 'statusbutton');
148148
if (nodeStatusButton) {
149149
this.statusButton.decorate(nodeStatusButton)
150150
.setBrowserAction(this.openInBrowser.bind(this))
151-
.setFullscreenAction(function() {
151+
.setFullscreenAction(() => {
152152
this.helper.getInstance('layout').setFullscreenPreview(true);
153-
}.bind(this))
154-
.setFullscreenExitAction(function() {
153+
this.focus();
154+
})
155+
.setFullscreenExitAction(() => {
155156
this.helper.getInstance('layout').setFullscreenPreview(false);
156-
}.bind(this))
157-
.setReloadAction(this.refresh.bind(this))
158-
.setRunAction(this.run.bind(this))
157+
this.focus();
158+
})
159+
.setReloadAction(() => {
160+
this.refresh();
161+
this.focus();
162+
})
163+
.setTerminateAction(this.terminate.bind(this))
164+
.setRunAction(() => {
165+
this.run();
166+
this.focus();
167+
})
159168
.setStopAction(this.stop.bind(this));
160169
}
161170

@@ -382,6 +391,7 @@ cwc.ui.Preview.prototype.setAutoUpdate = function(active) {
382391
goog.ui.Component.EventType.CHANGE, this.delayAutoUpdate, false,
383392
this);
384393
}
394+
this.focus();
385395
} else if (!active && this.autoUpdateEvent) {
386396
this.log_.info('Deactivate AutoUpdate...');
387397
goog.events.unlistenByKey(this.autoUpdateEvent);
@@ -410,12 +420,18 @@ cwc.ui.Preview.prototype.doAutoUpdate = function() {
410420
if (!this.autoUpdate) {
411421
return;
412422
}
413-
414423
this.log_.info('Perform auto update ...');
415424
this.run();
416425
};
417426

418427

428+
cwc.ui.Preview.prototype.focus = function() {
429+
if (this.content) {
430+
this.content.focus();
431+
}
432+
};
433+
434+
419435
/**
420436
* @param {Event=} opt_event
421437
* @private

src/ui/status_button/status_button.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ cwc.ui.StatusButton = function(helper) {
6060
/** @type {Element} */
6161
this.nodeReload = null;
6262

63+
/** @type {Element} */
64+
this.nodeTerminate = null;
65+
6366
/** @type {Element} */
6467
this.nodeFullscreen = null;
6568

@@ -99,13 +102,15 @@ cwc.ui.StatusButton.prototype.decorate = function(node) {
99102
this.nodeFullscreenExit =
100103
goog.dom.getElement(this.prefix + 'fullscreen_exit');
101104
this.nodeReload = goog.dom.getElement(this.prefix + 'reload');
105+
this.nodeTerminate = goog.dom.getElement(this.prefix + 'terminate');
102106
this.nodeRun = goog.dom.getElement(this.prefix + 'run');
103107
this.nodeStop = goog.dom.getElement(this.prefix + 'stop');
104108

105109
goog.style.setElementShown(this.nodeBrowser, false);
106110
goog.style.setElementShown(this.nodeFullscreen, false);
107111
goog.style.setElementShown(this.nodeFullscreenExit, false);
108112
goog.style.setElementShown(this.nodeReload, false);
113+
goog.style.setElementShown(this.nodeTerminate, false);
109114
goog.style.setElementShown(this.nodeRun, true);
110115
goog.style.setElementShown(this.nodeStop, false);
111116
return this;
@@ -169,6 +174,18 @@ cwc.ui.StatusButton.prototype.setReloadAction = function(func) {
169174
};
170175

171176

177+
/**
178+
* @param {function(?)} func
179+
* @return {THIS}
180+
* @template THIS
181+
*/
182+
cwc.ui.StatusButton.prototype.setTerminateAction = function(func) {
183+
goog.style.setElementShown(this.nodeTerminate, true);
184+
this.events_.listen('terminate-action', goog.events.EventType.CLICK, func);
185+
return this;
186+
};
187+
188+
172189
/**
173190
* @param {function(?)} func
174191
* @return {THIS}

src/ui/status_button/status_button.soy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@
4545
{param text: 'Collapse View' /}
4646
{/call}
4747

48+
{call .actionIcon_ data="all"}
49+
{param id: 'terminate' /}
50+
{param icon: 'pan_tool' /}
51+
{param text: 'Terminate View' /}
52+
{/call}
53+
4854
{call .actionIcon_ data="all"}
4955
{param id: 'reload' /}
5056
{param icon: 'refresh' /}

third_party/phaser-ce

0 commit comments

Comments
 (0)