17
17
18
18
import java .beans .PropertyChangeEvent ;
19
19
import java .beans .PropertyChangeListener ;
20
+ import java .text .MessageFormat ;
20
21
import java .util .Arrays ;
21
22
22
23
import com .badlogic .gdx .graphics .g2d .TextureRegion ;
51
52
public class ActorList extends ModelList <Scene , BaseActor > {
52
53
53
54
private ImageButton playerBtn ;
55
+ private ImageButton visibilityBtn ;
54
56
55
57
public ActorList (Skin skin ) {
56
58
super (skin , true );
57
59
60
+ // Eye button
61
+ visibilityBtn = new ImageButton (skin );
62
+ toolbar .addToolBarButton (visibilityBtn , "ic_eye" , "Toggle Visibility" , "Toggle Visibility in editor" );
63
+ visibilityBtn .setDisabled (false );
64
+ visibilityBtn .addListener (new ChangeListener () {
65
+ @ Override
66
+ public void changed (ChangeEvent event , Actor actor ) {
67
+ toggleVisibility ();
68
+ }
69
+ });
70
+
71
+ // Player button
58
72
playerBtn = new ImageButton (skin );
59
73
toolbar .addToolBarButton (playerBtn , "ic_player_small" , "Set player" , "Set player" );
60
74
playerBtn .setDisabled (true );
75
+ playerBtn .addListener (new ChangeListener () {
76
+ @ Override
77
+ public void changed (ChangeEvent event , Actor actor ) {
78
+ setPlayer ();
79
+ }
80
+ });
61
81
62
82
list .addListener (new ChangeListener () {
63
83
@@ -78,13 +98,6 @@ public void changed(ChangeEvent event, Actor actor) {
78
98
}
79
99
});
80
100
81
- playerBtn .addListener (new ChangeListener () {
82
- @ Override
83
- public void changed (ChangeEvent event , Actor actor ) {
84
- setPlayer ();
85
- }
86
- });
87
-
88
101
list .setCellRenderer (listCellRenderer );
89
102
90
103
Ctx .project .addPropertyChangeListener (Project .NOTIFY_ACTOR_SELECTED , new PropertyChangeListener () {
@@ -107,11 +120,11 @@ public void propertyChange(PropertyChangeEvent e) {
107
120
}
108
121
109
122
int i = list .getItems ().indexOf (newActor , true );
110
-
123
+
111
124
if (i >= 0 ) {
112
125
list .setSelectedIndex (i );
113
-
114
- container .getActor ().setScrollPercentY (i / (float )list .getItems ().size );
126
+
127
+ container .getActor ().setScrollPercentY (i / (float ) list .getItems ().size );
115
128
}
116
129
}
117
130
});
@@ -122,19 +135,29 @@ public void propertyChange(PropertyChangeEvent evt) {
122
135
123
136
if (evt .getPropertyName ().equals (Project .NOTIFY_ELEMENT_DELETED )) {
124
137
if (evt .getNewValue () instanceof BaseActor ) {
125
- addElements (Ctx .project .getSelectedScene (),
126
- Arrays .asList (Ctx .project .getSelectedScene ().getActors ().values ().toArray (new BaseActor [0 ])));
138
+ addElements (Ctx .project .getSelectedScene (), Arrays
139
+ .asList (Ctx .project .getSelectedScene ().getActors ().values ().toArray (new BaseActor [0 ])));
127
140
}
128
141
} else if (evt .getPropertyName ().equals (Project .NOTIFY_ELEMENT_CREATED )) {
129
142
if (evt .getNewValue () instanceof BaseActor && !(evt .getSource () instanceof EditActorDialog )) {
130
- addElements (Ctx .project .getSelectedScene (),
131
- Arrays .asList (Ctx .project .getSelectedScene ().getActors ().values ().toArray (new BaseActor [0 ])));
143
+ addElements (Ctx .project .getSelectedScene (), Arrays
144
+ .asList (Ctx .project .getSelectedScene ().getActors ().values ().toArray (new BaseActor [0 ])));
132
145
}
133
146
}
134
147
}
135
148
});
136
149
}
137
150
151
+ private void toggleVisibility () {
152
+
153
+ BaseActor e = list .getSelected ();
154
+
155
+ if (e == null )
156
+ return ;
157
+
158
+ Ctx .project .toggleEditorVisibility (e );
159
+ }
160
+
138
161
@ Override
139
162
protected void delete () {
140
163
BaseActor a = removeSelected ();
@@ -145,8 +168,8 @@ protected void delete() {
145
168
if (parent .getPlayer () == a ) {
146
169
parent .setPlayer (null );
147
170
}
148
-
149
- if (a .getId ().equals (parent .getWalkZone ())) {
171
+
172
+ if (a .getId ().equals (parent .getWalkZone ())) {
150
173
parent .setWalkZone (null );
151
174
}
152
175
@@ -163,7 +186,7 @@ protected void delete() {
163
186
protected EditModelDialog <Scene , BaseActor > getEditElementDialogInstance (BaseActor a ) {
164
187
return new EditActorDialog (skin , parent , a );
165
188
}
166
-
189
+
167
190
@ Override
168
191
protected void edit () {
169
192
BaseActor e = list .getSelected ();
@@ -173,20 +196,21 @@ protected void edit() {
173
196
174
197
EditModelDialog <Scene , BaseActor > dialog = getEditElementDialogInstance (e );
175
198
dialog .show (getStage ());
176
-
199
+
177
200
dialog .setListener (new ChangeListener () {
178
201
@ SuppressWarnings ("unchecked" )
179
202
@ Override
180
203
public void changed (ChangeEvent event , Actor actor ) {
181
204
BaseActor e = ((EditModelDialog <Scene , BaseActor >) actor ).getElement ();
182
-
183
- // When the type is changed, a new element is created and it is needed to replace the previous element.
184
- if (e != list .getSelected ()) {
205
+
206
+ // When the type is changed, a new element is created and it is needed to
207
+ // replace the previous element.
208
+ if (e != list .getSelected ()) {
185
209
int i = list .getSelectedIndex ();
186
210
getItems ().set (i , e );
187
211
list .setSelectedIndex (i );
188
- list .invalidateHierarchy ();
189
- }
212
+ list .invalidateHierarchy ();
213
+ }
190
214
}
191
215
});
192
216
}
@@ -233,8 +257,8 @@ protected void paste() {
233
257
234
258
parent .addActor (newElement );
235
259
Ctx .project .getI18N ().extractStrings (parent .getId (), newElement );
236
-
237
- if (newElement instanceof SpriteActor ) {
260
+
261
+ if (newElement instanceof SpriteActor ) {
238
262
SpriteActor ia = (SpriteActor ) newElement ;
239
263
ia .loadAssets ();
240
264
EngineAssetManager .getInstance ().finishLoading ();
@@ -254,18 +278,38 @@ protected void paste() {
254
278
255
279
@ Override
256
280
protected String getCellTitle (BaseActor e ) {
257
- return e .getId ();
281
+ boolean enabled = Ctx .project .isEditorVisible (e );
282
+
283
+ String text = e .getId ();
284
+
285
+ if (!enabled ) {
286
+ text = MessageFormat .format ("[GRAY]{0}[]" , text );
287
+ }
288
+
289
+ return text ;
258
290
}
259
291
260
292
@ Override
261
293
protected String getCellSubTitle (BaseActor e ) {
262
- if (e instanceof SpriteActor && ((SpriteActor ) e ).getRenderer () instanceof TextRenderer && ((TextRenderer ) ((SpriteActor ) e ).getRenderer ()).getText () != null )
263
- return Ctx .project .translate (((TextRenderer ) ((SpriteActor ) e ).getRenderer ()).getText ()).replace ("\n " , "|" );
264
-
265
- if (e instanceof InteractiveActor )
266
- return Ctx .project .translate (((InteractiveActor ) e ).getDesc ());
294
+ boolean enabled = Ctx .project .isEditorVisible (e );
295
+
296
+ String text = "" ;
297
+
298
+ if (e instanceof SpriteActor && ((SpriteActor ) e ).getRenderer () instanceof TextRenderer
299
+ && ((TextRenderer ) ((SpriteActor ) e ).getRenderer ()).getText () != null ) {
300
+ text = Ctx .project .translate (((TextRenderer ) ((SpriteActor ) e ).getRenderer ()).getText ()).replace ("\n " ,
301
+ "|" );
302
+ }
303
+
304
+ if (e instanceof InteractiveActor ) {
305
+ text = Ctx .project .translate (((InteractiveActor ) e ).getDesc ());
306
+ }
307
+
308
+ if (!enabled && text != null && !text .isEmpty ()) {
309
+ text = MessageFormat .format ("[GRAY]{0}[]" , text );
310
+ }
267
311
268
- return "" ;
312
+ return text ;
269
313
}
270
314
271
315
@ Override
0 commit comments