Skip to content

Commit b32f51d

Browse files
Scene editor: when uses chromium sends the key data.
1 parent f9d64e5 commit b32f51d

File tree

10 files changed

+109
-24
lines changed

10 files changed

+109
-24
lines changed

source/v2/phasereditor/phasereditor.scene.ui.editor.html/html/Editor.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
namespace PhaserEditor2D {
22

3+
34
export class Editor {
45

6+
57
private static _instance: Editor;
68
private _socket: WebSocket;
79
private _game: Phaser.Game;
@@ -12,6 +14,7 @@ namespace PhaserEditor2D {
1214
private _pendingMouseDownEvent: MouseEvent;
1315
private _closed = false;
1416
private _isReloading = false;
17+
private _sendKeyData = false;
1518

1619
sceneProperties: any;
1720
selection: any[] = [];
@@ -115,6 +118,21 @@ namespace PhaserEditor2D {
115118

116119
}
117120

121+
sendKeyDown(e: KeyboardEvent) {
122+
if (this._sendKeyData) {
123+
const data = {
124+
keyCode: e.keyCode,
125+
ctrlKey: e.ctrlKey,
126+
shiftKey: e.shiftKey,
127+
};
128+
129+
this.sendMessage({
130+
method: "KeyDown",
131+
data: data
132+
})
133+
}
134+
}
135+
118136
private onResize() {
119137

120138
for (let scene of this._game.scene.scenes) {
@@ -258,6 +276,7 @@ namespace PhaserEditor2D {
258276
// update the model
259277

260278
this._webgl = msg.webgl;
279+
this._sendKeyData = msg.sendKeyData || false;
261280
this.sceneProperties = msg.sceneProperties;
262281

263282
// create the game

source/v2/phasereditor/phasereditor.scene.ui.editor.html/html/main.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,11 @@ function main() {
22
new PhaserEditor2D.Editor();
33
}
44

5-
window.addEventListener("keydown", function (e) {
5+
window.addEventListener("keydown", function (e : KeyboardEvent) {
6+
PhaserEditor2D.Editor.getInstance().sendKeyDown(e);
67
e.preventDefault();
78
e.stopImmediatePropagation();
89
});
910

1011

11-
window.addEventListener("load", main);
12-
13-
14-
var CONSOLE_LOG = false;
15-
function consoleLog(msg: any) {
16-
if (CONSOLE_LOG) {
17-
console.log(msg);
18-
}
19-
}
12+
window.addEventListener("load", main);

source/v2/phasereditor/phasereditor.scene.ui.editor.html/html/out/Editor.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var PhaserEditor2D;
44
function Editor() {
55
this._closed = false;
66
this._isReloading = false;
7+
this._sendKeyData = false;
78
this.selection = [];
89
Editor._instance = this;
910
this.openSocket();
@@ -81,6 +82,19 @@ var PhaserEditor2D;
8182
method: "GetInitialState"
8283
});
8384
};
85+
Editor.prototype.sendKeyDown = function (e) {
86+
if (this._sendKeyData) {
87+
var data = {
88+
keyCode: e.keyCode,
89+
ctrlKey: e.ctrlKey,
90+
shiftKey: e.shiftKey
91+
};
92+
this.sendMessage({
93+
method: "KeyDown",
94+
data: data
95+
});
96+
}
97+
};
8498
Editor.prototype.onResize = function () {
8599
for (var _i = 0, _a = this._game.scene.scenes; _i < _a.length; _i++) {
86100
var scene = _a[_i];
@@ -191,6 +205,7 @@ var PhaserEditor2D;
191205
};
192206
Editor.prototype.onCreateGame = function (msg) {
193207
this._webgl = msg.webgl;
208+
this._sendKeyData = msg.sendKeyData || false;
194209
this.sceneProperties = msg.sceneProperties;
195210
this._create = new PhaserEditor2D.Create();
196211
this._game = new Phaser.Game({

source/v2/phasereditor/phasereditor.scene.ui.editor.html/html/out/main.js

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,8 @@ function main() {
22
new PhaserEditor2D.Editor();
33
}
44
window.addEventListener("keydown", function (e) {
5+
PhaserEditor2D.Editor.getInstance().sendKeyDown(e);
56
e.preventDefault();
67
e.stopImmediatePropagation();
78
});
89
window.addEventListener("load", main);
9-
var CONSOLE_LOG = false;
10-
function consoleLog(msg) {
11-
if (CONSOLE_LOG) {
12-
console.log(msg);
13-
}
14-
}

source/v2/phasereditor/phasereditor.scene.ui.editor.html/html/out/screenshot.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,5 +134,3 @@ var PhaserEditor2D;
134134
})(Screenshot = PhaserEditor2D.Screenshot || (PhaserEditor2D.Screenshot = {}));
135135
})(PhaserEditor2D || (PhaserEditor2D = {}));
136136
window.addEventListener("load", PhaserEditor2D.Screenshot.mainScreenshot);
137-
function consoleLog(msg) {
138-
}

source/v2/phasereditor/phasereditor.scene.ui.editor.html/html/out/workaround.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@ window.addEventListener("onerror", function (e) {
22
alert("WebView ERROR: " + e);
33
});
44
window.AudioContext = function () { };
5+
var CONSOLE_LOG = false;
6+
function consoleLog(msg) {
7+
if (CONSOLE_LOG) {
8+
console.log(msg);
9+
}
10+
}
511
var PhaserEditor2D;
612
(function (PhaserEditor2D) {
713
function isLeftButton(e) {

source/v2/phasereditor/phasereditor.scene.ui.editor.html/html/screenshot.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,4 @@ namespace PhaserEditor2D.Screenshot {
137137
}
138138
}
139139

140-
window.addEventListener("load", PhaserEditor2D.Screenshot.mainScreenshot);
141-
142-
function consoleLog(msg) {
143-
// do nothing
144-
}
140+
window.addEventListener("load", PhaserEditor2D.Screenshot.mainScreenshot);

source/v2/phasereditor/phasereditor.scene.ui.editor.html/html/workaround.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@ window.addEventListener("onerror", function (e) {
66
(<any>window).AudioContext = function () {};
77

88

9+
// disable log on production
10+
var CONSOLE_LOG = false;
11+
function consoleLog(msg: any) {
12+
if (CONSOLE_LOG) {
13+
console.log(msg);
14+
}
15+
}
16+
17+
918
namespace PhaserEditor2D {
1019
export function isLeftButton(e : MouseEvent) {
1120
if (e.buttons === undefined) {

source/v2/phasereditor/phasereditor.scene.ui.editor/src/phasereditor/scene/ui/editor/SceneEditorBroker.java

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,17 @@
2424
import static phasereditor.ui.PhaserEditorUI.swtRun;
2525

2626
import java.util.ArrayList;
27+
import java.util.Collection;
2728
import java.util.List;
2829
import java.util.function.BiConsumer;
2930

31+
import org.eclipse.jface.bindings.Binding;
32+
import org.eclipse.jface.bindings.keys.KeySequence;
33+
import org.eclipse.jface.bindings.keys.KeyStroke;
3034
import org.eclipse.jface.util.LocalSelectionTransfer;
3135
import org.eclipse.jface.viewers.IStructuredSelection;
36+
import org.eclipse.swt.SWT;
37+
import org.eclipse.ui.keys.IBindingService;
3238
import org.json.JSONObject;
3339

3440
import phasereditor.scene.core.DisplayComponent;
@@ -156,6 +162,9 @@ private void messageReceived(Object client, JSONObject msg) {
156162
case "PasteEvent":
157163
onPasteEvent(msg);
158164
break;
165+
case "KeyDown":
166+
onKeyDown(msg);
167+
break;
159168
default:
160169
break;
161170
}
@@ -164,6 +173,47 @@ private void messageReceived(Object client, JSONObject msg) {
164173
}
165174
}
166175

176+
private void onKeyDown(JSONObject msg) {
177+
var args = msg.getJSONObject("data");
178+
int keyCode = args.optInt("keyCode");
179+
boolean isCtrl = args.optBoolean("ctrl");
180+
boolean isShift = args.optBoolean("shift");
181+
182+
var bindingService = _editor.getSite().getService(IBindingService.class);
183+
int modifier = 0;
184+
if (isCtrl)
185+
modifier = SWT.CTRL;
186+
if (isShift)
187+
modifier = SWT.SHIFT | modifier;
188+
if (keyCode == 46 || keyCode == 8)
189+
keyCode = SWT.DEL;
190+
else if (keyCode == 115)
191+
keyCode = SWT.F4;
192+
var perfectMatch = bindingService
193+
.getPerfectMatch(KeySequence.getInstance(KeyStroke.getInstance(modifier, keyCode)));
194+
if (perfectMatch == null) {
195+
@SuppressWarnings("unchecked")
196+
Collection<Binding> partialMatches = bindingService
197+
.getConflictsFor(KeySequence.getInstance(KeyStroke.getInstance(modifier, keyCode)));
198+
if (partialMatches != null)
199+
for (Binding bid : partialMatches) {
200+
if (bid.getParameterizedCommand().getCommand().isEnabled()) {
201+
perfectMatch = bid;
202+
}
203+
}
204+
}
205+
if (perfectMatch != null && perfectMatch.getParameterizedCommand().getCommand().isEnabled()) {
206+
var perfectMatch2 = perfectMatch;
207+
swtRun(() -> {
208+
try {
209+
perfectMatch2.getParameterizedCommand().executeWithChecks(null, null);
210+
} catch (Exception e) {
211+
SceneUIEditor.logError(e);
212+
}
213+
});
214+
}
215+
}
216+
167217
private void onPasteEvent(JSONObject msg) {
168218
var x = msg.getFloat("x");
169219
var y = msg.getFloat("y");

source/v2/phasereditor/phasereditor.scene.ui.editor/src/phasereditor/scene/ui/editor/messages/CreateGameMessage.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import phasereditor.scene.core.PackReferencesCollector;
3434
import phasereditor.scene.ui.editor.SceneEditor;
3535
import phasereditor.scene.ui.editor.SceneUIEditor;
36+
import phasereditor.ui.PhaserEditorUI;
3637
import phasereditor.webrun.core.ApiMessage;
3738
import phasereditor.webrun.core.WebRunCore;
3839

@@ -71,9 +72,12 @@ public CreateGameMessage(SceneEditor editor) {
7172
break;
7273
}
7374
}
74-
75+
76+
var sendKeyData = PhaserEditorUI.useChromuiumBrowser();
77+
7578
_data.put("method", "CreateGame");
7679
_data.put("webgl", webgl);
80+
_data.put("sendKeyData", sendKeyData);
7781
_data.put("displayList", displayListData);
7882
_data.put("sceneProperties", scenePropertiesData);
7983
}

0 commit comments

Comments
 (0)