Skip to content

Commit e5e0da7

Browse files
(v2) Scene editor: listen ENTER key to close the quick asset dialog.
1 parent a10c310 commit e5e0da7

File tree

4 files changed

+91
-9
lines changed

4 files changed

+91
-9
lines changed

source/v2/phasereditor/phasereditor.scene.core/src/phasereditor/scene/core/codegen/SceneCodeDomBuilder.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import phasereditor.assetpack.core.ImageAssetModel;
3232
import phasereditor.assetpack.core.SpritesheetAssetModel;
3333
import phasereditor.project.core.ProjectCore;
34+
import phasereditor.scene.core.AnimationsComponent;
3435
import phasereditor.scene.core.BitmapTextComponent;
3536
import phasereditor.scene.core.BitmapTextModel;
3637
import phasereditor.scene.core.DynamicBitmapTextComponent;
@@ -152,6 +153,10 @@ private MethodDeclDom buildCreateMethod(SceneModel sceneModel) {
152153
assignToVar = buildDynamicBitmapTextProps(methodDecl, model) || assignToVar;
153154
}
154155

156+
if (model instanceof AnimationsComponent) {
157+
assignToVar = buildAnimationsProps(methodDecl, model) || assignToVar;
158+
}
159+
155160
if (assignToVar && methodCall != null) {
156161
methodCall.setReturnToVar(varname(model));
157162
}
@@ -190,6 +195,24 @@ private MethodDeclDom buildCreateMethod(SceneModel sceneModel) {
190195
return methodDecl;
191196
}
192197

198+
@SuppressWarnings("static-method")
199+
private boolean buildAnimationsProps(MethodDeclDom methodDecl, ObjectModel model) {
200+
var key = AnimationsComponent.get_autoPlayAnimKey(model);
201+
202+
if (key == null) {
203+
return false;
204+
}
205+
206+
var name = varname(model);
207+
208+
var instr = new MethodCallDom("play", name + ".anims");
209+
instr.argLiteral(key);
210+
211+
methodDecl.getInstructions().add(instr);
212+
213+
return true;
214+
}
215+
193216
@SuppressWarnings("static-method")
194217
private boolean buildFlipProps(MethodDeclDom methodDecl, ObjectModel model) {
195218

source/v2/phasereditor/phasereditor.scene.ui/src/phasereditor/scene/ui/editor/properties/AnimationsSection.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,19 @@ public Control createContent(Composite parent) {
9595
private void clearAnimation() {
9696

9797
wrapOperation(() -> {
98+
9899
getModels().forEach(model -> AnimationsComponent.set_autoPlayAnimKey(model, null));
100+
99101
}, getModels());
100102

103+
getEditor().setDirty(true);
104+
101105
update_UI_from_Model();
102106
}
103107

104108
private void browseAnimation() {
105109
var dlg = new QuickSelectAssetDialog(getEditor().getEditorSite().getShell());
110+
dlg.setTitle("Select Animation");
106111

107112
dlg.setInput(getAnimations());
108113

@@ -114,6 +119,8 @@ private void browseAnimation() {
114119
AnimationsComponent.set_autoPlayAnimKey(model, anim.getKey());
115120
});
116121
}, getModels());
122+
123+
getEditor().setDirty(true);
117124

118125
update_UI_from_Model();
119126
}

source/v2/phasereditor/phasereditor.scene.ui/src/phasereditor/scene/ui/editor/properties/QuickSelectAssetDialog.java

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
// USE OR OTHER DEALINGS IN THE SOFTWARE.
2222
package phasereditor.scene.ui.editor.properties;
2323

24+
import org.eclipse.jface.viewers.StructuredSelection;
25+
import org.eclipse.swt.SWT;
26+
import org.eclipse.swt.events.KeyAdapter;
27+
import org.eclipse.swt.events.KeyEvent;
2428
import org.eclipse.swt.events.MouseListener;
2529
import org.eclipse.swt.widgets.Composite;
2630
import org.eclipse.swt.widgets.Shell;
@@ -44,18 +48,45 @@ protected TreeCanvasViewer createViewer(TreeCanvas tree) {
4448
var viewer = new AssetsTreeCanvasViewer(tree, new AssetsContentProvider(), AssetLabelProvider.GLOBAL_16);
4549

4650
tree.addMouseListener(MouseListener.mouseDoubleClickAdapter(e -> {
47-
setResult(getViewer().getStructuredSelection().getFirstElement());
48-
close();
51+
closeDialog();
4952
}));
5053

54+
var keyListener = new KeyAdapter() {
55+
@Override
56+
public void keyReleased(KeyEvent e) {
57+
if (e.character == SWT.CR || e.character == SWT.LF) {
58+
if (viewer.getStructuredSelection().isEmpty()) {
59+
var visibleItems = tree.getVisibleItems();
60+
61+
if (visibleItems.size() == 1) {
62+
var item = visibleItems.get(0);
63+
viewer.setSelection(new StructuredSelection(item.getData()));
64+
}
65+
}
66+
67+
tree.getDisplay().asyncExec(() -> closeDialog());
68+
}
69+
}
70+
};
71+
72+
tree.addKeyListener(keyListener);
73+
74+
getFilteredTree().getTextControl().addKeyListener(keyListener);
75+
5176
AssetPackUI.installAssetTooltips(tree, tree.getUtils());
52-
77+
5378
return viewer;
5479
}
5580

81+
protected void closeDialog() {
82+
var firstElement = getViewer().getStructuredSelection().getFirstElement();
83+
84+
setResult(firstElement);
85+
close();
86+
}
87+
5688
@Override
5789
protected void createButtonsForButtonBar(Composite parent) {
5890
// no buttons
5991
}
60-
6192
}

source/v2/phasereditor/phasereditor.ui/src/phasereditor/ui/TreeCanvasDialog.java

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public class TreeCanvasDialog extends Dialog {
4040
private TreeCanvasViewer _viewer;
4141
private Object _input;
4242
private Object _result;
43+
private String _title;
4344

4445
public TreeCanvasDialog(Shell shell) {
4546
super(shell);
@@ -60,6 +61,10 @@ protected Control createDialogArea(Composite parent) {
6061

6162
return _filteredTree;
6263
}
64+
65+
public FilteredTreeCanvas getFilteredTree() {
66+
return _filteredTree;
67+
}
6368

6469
@SuppressWarnings("static-method")
6570
protected TreeCanvasViewer createViewer(TreeCanvas tree) {
@@ -69,26 +74,42 @@ protected TreeCanvasViewer createViewer(TreeCanvas tree) {
6974
public TreeCanvasViewer getViewer() {
7075
return _viewer;
7176
}
72-
77+
7378
@Override
7479
protected Point getInitialSize() {
7580
return new Point(480, 320);
7681
}
77-
82+
7883
public void setInput(Object input) {
7984
_input = input;
8085
}
81-
86+
8287
public Object getInput() {
8388
return _input;
8489
}
85-
90+
8691
public Object getResult() {
8792
return _result;
8893
}
89-
94+
9095
public void setResult(Object result) {
9196
_result = result;
9297
}
9398

99+
@Override
100+
protected void configureShell(Shell newShell) {
101+
super.configureShell(newShell);
102+
if (_title != null) {
103+
newShell.setText(_title);
104+
}
105+
}
106+
107+
public String getTitle() {
108+
return _title;
109+
}
110+
111+
public void setTitle(String title) {
112+
_title = title;
113+
}
114+
94115
}

0 commit comments

Comments
 (0)