diff --git a/src/main/java/games/rednblack/editor/utils/asset/impl/AtlasAsset.java b/src/main/java/games/rednblack/editor/utils/asset/impl/AtlasAsset.java index 5355f8ed..c2756d57 100644 --- a/src/main/java/games/rednblack/editor/utils/asset/impl/AtlasAsset.java +++ b/src/main/java/games/rednblack/editor/utils/asset/impl/AtlasAsset.java @@ -1,5 +1,6 @@ package games.rednblack.editor.utils.asset.impl; +import com.badlogic.gdx.Gdx; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.utils.Array; @@ -68,7 +69,7 @@ public class AtlasAsset extends Asset { resolutionManager.rePackProjectImagesForAllResolutionsSync(); - facade.sendNotification(MsgAPI.UPDATE_ATLAS_PACK_LIST); + Gdx.app.postRunnable(() -> facade.sendNotification(MsgAPI.UPDATE_ATLAS_PACK_LIST)); } catch (IOException e) { e.printStackTrace(); progressHandler.progressFailed(); diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UIMultiPropertyBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/UIMultiPropertyBoxMediator.java index 6ab2be8b..d4799fc2 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UIMultiPropertyBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UIMultiPropertyBoxMediator.java @@ -18,6 +18,8 @@ package games.rednblack.editor.view.ui.box; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.reflect.ClassReflection; import com.badlogic.gdx.utils.reflect.ReflectionException; import games.rednblack.editor.controller.commands.AddComponentToItemCommand; @@ -42,15 +44,11 @@ import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.extension.spine.SpineItemType; import games.rednblack.h2d.extension.talos.TalosItemType; import games.rednblack.h2d.extension.typinglabel.TypingLabelComponent; -import games.rednblack.puremvc.Facade; import games.rednblack.puremvc.interfaces.IMediator; import games.rednblack.puremvc.interfaces.INotification; import games.rednblack.puremvc.util.Interests; -import java.util.ArrayList; -import java.util.HashMap; import java.util.Set; -import java.util.stream.Stream; /** * Created by azakhary on 4/15/2015. @@ -60,9 +58,14 @@ public class UIMultiPropertyBoxMediator extends PanelMediator> classToMediatorMap; + private ObjectMap> classToMediatorMap; - private ArrayList currentRegisteredPropertyBoxes = new ArrayList<>(); + private final Array currentRegisteredPropertyBoxes = new Array<>(); + + private final ObjectMap mediatorMap = new ObjectMap<>(); + private final Array mediatorNames = new Array<>(); + + private UIMultipleSelectPropertiesMediator multipleSelectPropertiesMediator; public UIMultiPropertyBoxMediator() { super(NAME, new UIMultiPropertyBox()); @@ -71,15 +74,15 @@ public class UIMultiPropertyBoxMediator extends PanelMediator(); + classToMediatorMap = new ObjectMap<>(); - classToMediatorMap.put(Integer.class.getName(), new ArrayList<>()); + classToMediatorMap.put(Integer.class.getName(), new Array<>()); classToMediatorMap.get(Integer.class.getName()).add(UIBasicItemPropertiesMediator.NAME); - classToMediatorMap.put(SceneVO.class.getName(), new ArrayList<>()); + classToMediatorMap.put(SceneVO.class.getName(), new Array<>()); classToMediatorMap.get(SceneVO.class.getName()).add(UIScenePropertiesMediator.NAME); - classToMediatorMap.put(TextTool.class.getName(), new ArrayList<>()); + classToMediatorMap.put(TextTool.class.getName(), new Array<>()); classToMediatorMap.get(TextTool.class.getName()).add(UITextToolPropertiesMediator.NAME); } @@ -134,7 +137,8 @@ public class UIMultiPropertyBoxMediator extends PanelMediator mediatorNames = new ArrayList<>(classToMediatorMap.get(mapName)); + mediatorNames.clear(); + mediatorNames.addAll(classToMediatorMap.get(mapName)); // TODO: this is not uber cool, gotta think a new way to make this class know nothing about entities if (observable instanceof Integer) { @@ -143,9 +147,15 @@ public class UIMultiPropertyBoxMediator extends PanelMediator propertyBoxMediator = facade.retrieveMediator(mediatorName); currentRegisteredPropertyBoxes.add(propertyBoxMediator); @@ -157,7 +167,7 @@ public class UIMultiPropertyBoxMediator extends PanelMediator mediatorNames, int entity) { + private void initEntityProperties(Array mediatorNames, int entity) { int entityType = EntityUtils.getType(entity); if (entityType == EntityFactory.IMAGE_TYPE) { @@ -223,18 +233,20 @@ public class UIMultiPropertyBoxMediator extends PanelMediator selection) { + if (multipleSelectPropertiesMediator == null) multipleSelectPropertiesMediator = new UIMultipleSelectPropertiesMediator(); + clearPropertyBoxes(); - UIMultipleSelectPropertiesMediator mediator = new UIMultipleSelectPropertiesMediator(); - facade.registerMediator(mediator); - currentRegisteredPropertyBoxes.add(mediator); - mediator.setItem(selection); - viewComponent.addPropertyBox(mediator.getViewComponent()); + facade.registerMediator(multipleSelectPropertiesMediator); + currentRegisteredPropertyBoxes.add(multipleSelectPropertiesMediator); + multipleSelectPropertiesMediator.setItem(selection); + viewComponent.addPropertyBox(multipleSelectPropertiesMediator.getViewComponent()); } }