From 27d269890a096d7f567ebe2ef9eb1535c3c6e30d Mon Sep 17 00:00:00 2001 From: fgnm Date: Wed, 5 Jul 2023 23:50:06 +0200 Subject: [PATCH] Replace PureMVC with gdx-puremvc --- assets/plugins/plugin-9patch-0.1.3.jar | Bin 23189 -> 23198 bytes assets/plugins/plugin-performance-0.1.3.jar | Bin 6110 -> 6125 bytes assets/plugins/plugin-skin-composer-0.1.3.jar | Bin 9944 -> 9949 bytes assets/plugins/plugin-tiled-0.1.3.jar | Bin 103042 -> 102932 bytes build.gradle | 2 + gradle.properties | 3 +- hyperlap2d-common-api | 2 +- plugin-9patch/build.gradle | 2 + .../editor/plugin/ninepatch/MainPanel.java | 6 +- .../plugin/ninepatch/MainPanelMediator.java | 14 +- plugin-performance/build.gradle | 2 + .../performance/PerformancePanelMediator.java | 13 +- plugin-skin-composer/build.gradle | 2 + .../skincomposer/SkinComposerMediator.java | 13 +- .../skincomposer/SkinComposerSettings.java | 4 +- plugin-tiled/build.gradle | 2 + .../editor/plugin/tiled/TiledPanel.java | 7 +- .../plugin/tiled/TiledPanelMediator.java | 29 ++-- .../tiled/offset/OffsetPanelMediator.java | 13 +- .../plugin/tiled/tools/DeleteTileTool.java | 3 +- .../plugin/tiled/tools/DrawTileTool.java | 2 +- .../AlternativeAutoTileDialogMediator.java | 20 ++- .../view/dialog/ImportTileSetDialog.java | 6 +- .../dialog/ImportTileSetDialogMediator.java | 17 +- .../rednblack/editor/ConsoleInterceptor.java | 4 +- .../games/rednblack/editor/HyperLap2D.java | 53 ++---- .../games/rednblack/editor/HyperLap2DApp.java | 3 +- .../rednblack/editor/HyperLap2DFacade.java | 76 --------- .../java/games/rednblack/editor/Main.java | 10 +- .../editor/controller/BootstrapCommand.java | 153 +++++++++--------- .../controller/BootstrapInfoCommand.java | 4 +- .../editor/controller/BootstrapPlugins.java | 7 +- .../controller/BootstrapProxyCommand.java | 7 +- .../controller/BootstrapViewCommand.java | 7 +- .../editor/controller/SandboxCommand.java | 4 +- .../editor/controller/StartupCommand.java | 12 +- .../commands/AddComponentToItemCommand.java | 10 +- .../commands/AddToLibraryAction.java | 4 +- .../commands/AddToLibraryCommand.java | 6 +- .../commands/CenterOriginPointCommand.java | 6 +- .../commands/ChangeOriginPointPosition.java | 6 +- .../ChangePolygonVertexPositionCommand.java | 8 +- .../commands/ConvertToCompositeCommand.java | 10 +- .../commands/CreateItemCommand.java | 6 +- .../controller/commands/CutItemsCommand.java | 4 +- .../commands/DeleteItemsCommand.java | 6 +- .../commands/DeletePolygonVertexCommand.java | 6 +- .../EntityModifyRevertibleCommand.java | 4 +- .../commands/ExportProjectCommand.java | 2 +- .../ItemChildrenTransformCommand.java | 6 +- .../commands/ItemTransformCommand.java | 6 +- .../controller/commands/ItemsMoveCommand.java | 6 +- .../commands/NonRevertibleCommand.java | 5 +- .../commands/PasteItemsCommand.java | 6 +- .../RemoveComponentFromItemCommand.java | 10 +- .../commands/RenameLibraryActionCommand.java | 2 +- .../commands/RevertibleCommand.java | 5 +- .../commands/SaveExportPathCommand.java | 2 +- .../commands/ShowNotificationCommand.java | 2 +- .../commands/TransactiveCommand.java | 2 +- .../UpdateEntityComponentsCommand.java | 4 +- .../commands/UpdatePolygonDataCommand.java | 6 +- .../component/ReplaceRegionCommand.java | 6 +- .../component/ReplaceSpineCommand.java | 6 +- .../ReplaceSpriteAnimationCommand.java | 6 +- .../component/UpdateCircleShapeCommand.java | 6 +- .../component/UpdateCompositeDataCommand.java | 6 +- .../component/UpdateImageItemDataCommand.java | 6 +- .../component/UpdateLightBodyDataCommand.java | 6 +- .../component/UpdateLightDataCommand.java | 6 +- .../component/UpdateParticleDataCommand.java | 6 +- .../component/UpdatePhysicsDataCommand.java | 6 +- .../UpdatePolygonVerticesCommand.java | 6 +- .../component/UpdateSensorDataCommand.java | 6 +- .../component/UpdateSpineDataCommand.java | 6 +- .../UpdateSpriteAnimationDataCommand.java | 6 +- .../component/UpdateTalosDataCommand.java | 6 +- .../resource/DuplicateLibraryAction.java | 6 +- .../migrations/migrators/VersionMigTo005.java | 6 +- .../migrations/migrators/VersionMigTo009.java | 6 +- .../event/ButtonToNotificationListener.java | 4 +- .../editor/event/CheckBoxChangeListener.java | 4 +- .../rednblack/editor/event/ClickNotifier.java | 4 +- .../EditableSelectBoxChangeListener.java | 4 +- .../editor/event/KeyboardListener.java | 4 +- .../editor/event/MenuItemListener.java | 6 +- .../event/NumberSelectorOverlapListener.java | 4 +- .../editor/event/SelectBoxChangeListener.java | 4 +- .../rednblack/editor/factory/ItemFactory.java | 33 ++-- .../editor/live/LivePreviewScreen.java | 5 +- .../editor/proxy/CommandManager.java | 11 +- .../rednblack/editor/proxy/FontManager.java | 7 +- .../rednblack/editor/proxy/PluginManager.java | 14 +- .../editor/proxy/ProjectManager.java | 7 +- .../editor/proxy/ResolutionManager.java | 11 +- .../editor/proxy/ResourceManager.java | 6 +- .../editor/proxy/SceneDataManager.java | 11 +- .../editor/proxy/SettingsManager.java | 7 +- .../editor/proxy/WindowTitleManager.java | 11 +- .../editor/splash/SplashMediator.java | 20 +-- .../editor/utils/AssetIOManager.java | 4 +- .../editor/utils/HyperLap2DUtils.java | 4 +- .../editor/utils/KeyBindingsLayout.java | 4 +- .../editor/utils/MoveCommandBuilder.java | 4 +- .../editor/utils/ResourceListAdapter.java | 4 +- .../rednblack/editor/utils/asset/Asset.java | 5 +- .../asset/impl/HyperLap2DLibraryAsset.java | 4 +- .../editor/view/HyperLap2DScreen.java | 8 +- .../editor/view/HyperLap2DScreenMediator.java | 33 ++-- .../editor/view/SceneControlMediator.java | 6 +- .../view/menu/HyperLap2DMenuBarMediator.java | 32 ++-- .../editor/view/stage/ItemSelector.java | 20 +-- .../rednblack/editor/view/stage/Sandbox.java | 6 +- .../editor/view/stage/SandboxMediator.java | 27 ++-- .../rednblack/editor/view/stage/UIStage.java | 6 +- .../editor/view/stage/UIStageMediator.java | 15 +- .../view/stage/input/SandboxInputAdapter.java | 6 +- .../editor/view/stage/tools/PanTool.java | 8 +- .../editor/view/stage/tools/PolygonTool.java | 14 +- .../view/stage/tools/SelectionTool.java | 32 ++-- .../editor/view/stage/tools/SimpleTool.java | 6 +- .../editor/view/stage/tools/TextTool.java | 4 +- .../view/stage/tools/TransformTool.java | 14 +- .../transformStrategy/BasicStrategy.java | 5 +- .../transformStrategy/CompositeStrategy.java | 7 +- .../BoxItemResourceSelectionUIMediator.java | 33 ++-- .../editor/view/ui/FollowersUIMediator.java | 31 ++-- .../rednblack/editor/view/ui/RulersUI.java | 8 +- .../editor/view/ui/RulersUIMediator.java | 15 +- .../editor/view/ui/StickyNotesUIMediator.java | 17 +- .../editor/view/ui/UIBottomMenuBar.java | 6 +- .../view/ui/UIDropDownMenuMediator.java | 28 ++-- .../rednblack/editor/view/ui/UIMainTable.java | 6 +- .../editor/view/ui/UISubmenuBar.java | 6 +- .../view/ui/UIWindowActionMediator.java | 19 +-- .../editor/view/ui/UIWindowTitleMediator.java | 10 +- .../editor/view/ui/box/PanelMediator.java | 12 +- .../editor/view/ui/box/UIAlignBox.java | 8 +- .../view/ui/box/UIAlignBoxMediator.java | 21 ++- .../editor/view/ui/box/UIBaseBox.java | 6 +- .../ui/box/UICompositeHierarchyMediator.java | 17 +- .../editor/view/ui/box/UIItemsTreeBox.java | 8 +- .../view/ui/box/UIItemsTreeBoxMediator.java | 25 ++- .../editor/view/ui/box/UILayerBox.java | 8 +- .../view/ui/box/UILayerBoxMediator.java | 35 ++-- .../ui/box/UIMultiPropertyBoxMediator.java | 24 ++- .../editor/view/ui/box/UIResourcesBox.java | 6 +- .../view/ui/box/UIResourcesBoxMediator.java | 15 +- .../editor/view/ui/box/UIToolBox.java | 4 +- .../editor/view/ui/box/UIToolBoxMediator.java | 16 +- .../view/ui/box/bottom/UIGridBoxMediator.java | 15 +- .../box/bottom/UILivePreviewBoxMediator.java | 15 +- .../view/ui/box/bottom/UIResolutionBox.java | 6 +- .../box/bottom/UIResolutionBoxMediator.java | 19 +-- .../editor/view/ui/box/bottom/UISceneBox.java | 4 +- .../ui/box/bottom/UISceneBoxMediator.java | 17 +- .../editor/view/ui/box/bottom/UIZoomBox.java | 4 +- .../view/ui/box/bottom/UIZoomBoxMediator.java | 20 +-- .../ui/box/resourcespanel/UIActionsTab.java | 4 +- .../resourcespanel/UIActionsTabMediator.java | 17 +- .../box/resourcespanel/UIAnimationsTab.java | 4 +- .../UIAnimationsTabMediator.java | 11 +- .../resourcespanel/UIFilterMenuMediator.java | 13 +- .../ui/box/resourcespanel/UIImagesTab.java | 4 +- .../resourcespanel/UIImagesTabMediator.java | 14 +- .../UILibraryItemsTabMediator.java | 19 +-- .../UIParticleEffectsTabMediator.java | 11 +- .../ui/box/resourcespanel/UIResourcesTab.java | 6 +- .../UIResourcesTabMediator.java | 18 +-- .../draggable/DraggableResource.java | 12 +- .../draggable/box/BoxItemResource.java | 10 +- .../draggable/list/ListItemResource.java | 6 +- .../list/ParticleEffectResource.java | 6 +- .../draggable/list/TalosResource.java | 6 +- .../editor/view/ui/dialog/AboutDialog.java | 8 +- .../view/ui/dialog/AboutDialogMediator.java | 18 +-- .../dialog/AnimationsPackDialogMediator.java | 28 ++-- .../view/ui/dialog/AtlasesPackDialog.java | 4 +- .../ui/dialog/AutoTraceDialogMediator.java | 25 ++- .../view/ui/dialog/CodeEditorDialog.java | 4 +- .../ui/dialog/CodeEditorDialogMediator.java | 20 +-- .../editor/view/ui/dialog/ConsoleDialog.java | 4 +- .../view/ui/dialog/ConsoleDialogMediator.java | 20 +-- .../ui/dialog/CreateNewResolutionDialog.java | 6 +- .../CreateNewResolutionDialogMediator.java | 20 +-- .../view/ui/dialog/CreateNoiseDialog.java | 6 +- .../ui/dialog/CreateNoiseDialogMediator.java | 22 +-- .../ui/dialog/CreatePlaceholderDialog.java | 6 +- .../CreatePlaceholderDialogMediator.java | 20 +-- .../ui/dialog/ImagesPackDialogMediator.java | 28 ++-- .../ui/dialog/ImportSpriteSheetDialog.java | 7 +- .../ImportSpriteSheetDialogMediator.java | 20 +-- .../ui/dialog/LoadingBarDialogMediator.java | 20 +-- .../view/ui/dialog/NewProjectDialog.java | 4 +- .../ui/dialog/NewProjectDialogMediator.java | 15 +- .../view/ui/dialog/NodeEditorDialog.java | 6 +- .../ui/dialog/NodeEditorDialogMediator.java | 18 +-- .../view/ui/dialog/SaveProjectDialog.java | 4 +- .../ui/dialog/SaveProjectDialogMediator.java | 21 +-- .../ui/dialog/SettingsDialogMediator.java | 15 +- .../view/ui/dialog/ShaderManagerDialog.java | 10 +- .../dialog/ShaderManagerDialogMediator.java | 24 ++- .../view/ui/followers/BasicFollower.java | 2 +- .../ui/followers/NormalSelectionFollower.java | 2 +- .../editor/view/ui/followers/SubFollower.java | 2 +- .../view/ui/panel/CustomVariablesPanel.java | 8 +- .../panel/CustomVariablesPanelMediator.java | 19 +-- .../ui/panel/EditSpriteAnimationPanel.java | 6 +- .../EditSpriteAnimationPanelMediator.java | 19 +-- .../editor/view/ui/panel/ImportPanel.java | 6 +- .../view/ui/panel/ImportPanelMediator.java | 15 +- .../view/ui/panel/ShaderUniformsPanel.java | 6 +- .../ui/panel/ShaderUniformsPanelMediator.java | 19 +-- .../editor/view/ui/panel/TagsPanel.java | 6 +- .../view/ui/panel/TagsPanelMediator.java | 19 +-- .../UIAbstractEntityPropertiesMediator.java | 19 +-- .../ui/properties/UIAbstractProperties.java | 6 +- .../UIAbstractPropertiesMediator.java | 21 +-- .../properties/UIItemPropertiesMediator.java | 2 +- .../panels/UIBasicItemPropertiesMediator.java | 20 +-- .../panels/UICircleShapeProperties.java | 4 +- .../UICircleShapePropertiesMediator.java | 17 +- .../UICompositeItemPropertiesMediator.java | 4 +- .../panels/UILabelItemProperties.java | 6 +- .../panels/UILabelItemPropertiesMediator.java | 17 +- .../panels/UILightBodyProperties.java | 4 +- .../panels/UILightBodyPropertiesMediator.java | 19 +-- .../UIMultipleSelectPropertiesMediator.java | 11 +- .../panels/UIPhysicsProperties.java | 4 +- .../panels/UIPhysicsPropertiesMediator.java | 17 +- .../panels/UIPolygonComponentProperties.java | 4 +- .../UIPolygonComponentPropertiesMediator.java | 26 ++- .../panels/UIScenePropertiesMediator.java | 15 +- .../properties/panels/UISensorProperties.java | 4 +- .../panels/UISensorPropertiesMediator.java | 17 +- .../properties/panels/UIShaderProperties.java | 4 +- .../panels/UIShaderPropertiesMediator.java | 16 +- ...SpriteAnimationItemPropertiesMediator.java | 13 +- .../panels/UITextToolPropertiesMediator.java | 3 +- .../panels/UITypingLabelProperties.java | 4 +- .../UITypingLabelPropertiesMediator.java | 19 +-- .../view/ui/settings/GeneralSettings.java | 4 +- .../view/ui/settings/LivePreviewSettings.java | 4 +- .../view/ui/settings/PluginsSettings.java | 4 +- .../ui/settings/ProjectExportSettings.java | 4 +- .../view/ui/settings/SandboxSettings.java | 4 +- .../editor/view/ui/widget/H2DLogo.java | 4 +- .../ui/widget/actors/ExpandableTextArea.java | 6 +- .../ui/widget/actors/StickyNoteActor.java | 4 +- .../ui/widget/actors/basic/PixelRect.java | 6 +- .../ui/widget/actors/basic/SandboxBackUI.java | 4 +- 251 files changed, 1144 insertions(+), 1578 deletions(-) delete mode 100644 src/main/java/games/rednblack/editor/HyperLap2DFacade.java diff --git a/assets/plugins/plugin-9patch-0.1.3.jar b/assets/plugins/plugin-9patch-0.1.3.jar index 9265a31019f4529be03f9e2c03d888e72f00db92..36a4529c7d50ee5dd430550f54f4f752cb84eecd 100644 GIT binary patch delta 9696 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 delta 2535 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 L3D9fl{#yMXNiyS; diff --git a/assets/plugins/plugin-tiled-0.1.3.jar b/assets/plugins/plugin-tiled-0.1.3.jar index 4fa2ae03f35bf039c78102cccc0e4444bab7d09c..94e702c3913522a926ecae41413a5a82dd205782 100644 GIT binary patch delta 59753 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%0DW#>q*34CRxa% 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 XJRG=wz?(b3|D3=JxTx3QT8H{S!N}CA delta 59994 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 { } @Override - public String[] listNotificationInterests() { - return new String[]{ - NinePatchPlugin.EDIT_NINE_PATCH, + public void listNotificationInterests(Interests interests) { + interests.add(NinePatchPlugin.EDIT_NINE_PATCH, NinePatchPlugin.CONVERT_TO_NINE_PATCH, - MainPanel.SAVE_CLICKED - }; + MainPanel.SAVE_CLICKED); } @Override diff --git a/plugin-performance/build.gradle b/plugin-performance/build.gradle index beafd54d..cddaabce 100644 --- a/plugin-performance/build.gradle +++ b/plugin-performance/build.gradle @@ -17,6 +17,8 @@ dependencies { implementation 'net.mountainblade:modular:1.0' + implementation "games.rednblack.puremvc:core:$pureMvcVersion" + implementation project(":hyperlap2d-common-api") implementation project(":hyperlap2d-runtime-libgdx") diff --git a/plugin-performance/src/main/java/games/rednblack/editor/plugin/performance/PerformancePanelMediator.java b/plugin-performance/src/main/java/games/rednblack/editor/plugin/performance/PerformancePanelMediator.java index 30cdea3a..0ddbba96 100644 --- a/plugin-performance/src/main/java/games/rednblack/editor/plugin/performance/PerformancePanelMediator.java +++ b/plugin-performance/src/main/java/games/rednblack/editor/plugin/performance/PerformancePanelMediator.java @@ -1,8 +1,9 @@ package games.rednblack.editor.plugin.performance; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; public class PerformancePanelMediator extends Mediator { private static final String TAG = PerformancePanelMediator.class.getCanonicalName(); @@ -18,12 +19,10 @@ public class PerformancePanelMediator extends Mediator { } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.RENDER, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.RENDER, MsgAPI.SCENE_LOADED, - PerformancePlugin.PANEL_OPEN - }; + PerformancePlugin.PANEL_OPEN); } @Override diff --git a/plugin-skin-composer/build.gradle b/plugin-skin-composer/build.gradle index f4b8a9bc..60f83529 100644 --- a/plugin-skin-composer/build.gradle +++ b/plugin-skin-composer/build.gradle @@ -15,6 +15,8 @@ dependencies { implementation "com.kotcrab.vis:vis-ui:$visuiVersion" implementation "net.onedaybeard.artemis:artemis-odb:$artemisVersion" + implementation "games.rednblack.puremvc:core:$pureMvcVersion" + implementation 'net.mountainblade:modular:1.0' implementation project(":hyperlap2d-common-api") diff --git a/plugin-skin-composer/src/main/java/games/rednblack/editor/plugin/skincomposer/SkinComposerMediator.java b/plugin-skin-composer/src/main/java/games/rednblack/editor/plugin/skincomposer/SkinComposerMediator.java index 0ba63f83..702b0556 100644 --- a/plugin-skin-composer/src/main/java/games/rednblack/editor/plugin/skincomposer/SkinComposerMediator.java +++ b/plugin-skin-composer/src/main/java/games/rednblack/editor/plugin/skincomposer/SkinComposerMediator.java @@ -5,9 +5,10 @@ import com.kotcrab.vis.ui.util.dialog.Dialogs; import games.rednblack.h2d.common.network.HttpDownloadUtility; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.network.model.GithubReleaseData; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import org.apache.commons.io.FileUtils; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; import java.io.File; import java.io.IOException; @@ -27,11 +28,9 @@ public class SkinComposerMediator extends Mediator { } @Override - public String[] listNotificationInterests() { - return new String[]{ - SkinComposerPlugin.PANEL_OPEN, - SkinComposerPlugin.DOWNLOAD_JAR - }; + public void listNotificationInterests(Interests interests) { + interests.add(SkinComposerPlugin.PANEL_OPEN, + SkinComposerPlugin.DOWNLOAD_JAR); } @Override diff --git a/plugin-skin-composer/src/main/java/games/rednblack/editor/plugin/skincomposer/SkinComposerSettings.java b/plugin-skin-composer/src/main/java/games/rednblack/editor/plugin/skincomposer/SkinComposerSettings.java index 90737dba..eca2be4c 100644 --- a/plugin-skin-composer/src/main/java/games/rednblack/editor/plugin/skincomposer/SkinComposerSettings.java +++ b/plugin-skin-composer/src/main/java/games/rednblack/editor/plugin/skincomposer/SkinComposerSettings.java @@ -5,7 +5,7 @@ import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.plugins.H2DPluginAdapter; import games.rednblack.h2d.common.view.SettingsNodeValue; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; -import org.puremvc.java.interfaces.IFacade; +import games.rednblack.puremvc.Facade; public class SkinComposerSettings extends SettingsNodeValue { @@ -13,7 +13,7 @@ public class SkinComposerSettings extends SettingsNodeValue { private final H2DPluginAdapter plugin; private boolean loaded = false; - public SkinComposerSettings(IFacade facade, H2DPluginAdapter plugin) { + public SkinComposerSettings(Facade facade, H2DPluginAdapter plugin) { super("Skin Composer", facade); this.plugin = plugin; diff --git a/plugin-tiled/build.gradle b/plugin-tiled/build.gradle index e3e59642..3e7fdea5 100644 --- a/plugin-tiled/build.gradle +++ b/plugin-tiled/build.gradle @@ -21,6 +21,8 @@ dependencies { implementation "com.esotericsoftware.spine:spine-libgdx:$spineVersion" + implementation "games.rednblack.puremvc:core:$pureMvcVersion" + implementation 'net.mountainblade:modular:1.0' implementation project(":hyperlap2d-common-api") diff --git a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/TiledPanel.java b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/TiledPanel.java index 55149c9b..88c9e587 100644 --- a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/TiledPanel.java +++ b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/TiledPanel.java @@ -18,8 +18,6 @@ package games.rednblack.editor.plugin.tiled; -import org.puremvc.java.interfaces.IFacade; - import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.kotcrab.vis.ui.widget.VisLabel; import com.kotcrab.vis.ui.widget.VisTable; @@ -35,6 +33,7 @@ import games.rednblack.h2d.common.UIDraggablePanel; import games.rednblack.h2d.common.view.ui.widget.imagetabbedpane.ImageTab; import games.rednblack.h2d.common.view.ui.widget.imagetabbedpane.ImageTabbedPane; import games.rednblack.h2d.common.view.ui.widget.imagetabbedpane.ImageTabbedPaneListener; +import games.rednblack.puremvc.Facade; /** * Created by mariam on 2/2/2016. @@ -49,7 +48,7 @@ public class TiledPanel extends UIDraggablePanel { public static final float SETTINGS_HEIGHT = 150f; public TiledPlugin tiledPlugin; - private IFacade facade; + private Facade facade; protected ImageTabbedPane tabbedPane; protected VisTable tabTable; //table inside of each tab @@ -249,7 +248,7 @@ public class TiledPanel extends UIDraggablePanel { this.engine = engine; } - public IFacade getFacade() { + public Facade getFacade() { return facade; } } diff --git a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/TiledPanelMediator.java b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/TiledPanelMediator.java index 51478435..37c3d88e 100644 --- a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/TiledPanelMediator.java +++ b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/TiledPanelMediator.java @@ -24,8 +24,6 @@ import java.util.Iterator; import games.rednblack.editor.renderer.data.TexturePackVO; import games.rednblack.h2d.extension.spine.SpineItemType; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; @@ -53,6 +51,9 @@ import games.rednblack.editor.renderer.factory.EntityFactory; import games.rednblack.editor.renderer.utils.ComponentRetriever; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.ResourcePayloadObject; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by mariam on 2/2/2016. @@ -77,29 +78,27 @@ public class TiledPanelMediator extends Mediator { } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.SCENE_LOADED, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.SCENE_LOADED, TiledPlugin.TILE_ADDED, TiledPlugin.TILE_SELECTED, - TiledPlugin.ACTION_DELETE_TILE, - TiledPlugin.ACTION_DELETE_TILE_ALL, + TiledPlugin.ACTION_DELETE_TILE); + interests.add(TiledPlugin.ACTION_DELETE_TILE_ALL, TiledPlugin.ACTION_SET_GRID_SIZE_FROM_LIST, TiledPlugin.ACTION_SET_OFFSET, - TiledPlugin.OPEN_DROP_DOWN, - TiledPlugin.AUTO_TILE_SELECTED, + TiledPlugin.OPEN_DROP_DOWN); + interests.add(TiledPlugin.AUTO_TILE_SELECTED, TiledPlugin.ACTION_DELETE_AUTO_TILE, TiledPlugin.AUTO_OPEN_DROP_DOWN, - TiledPlugin.AUTO_FILL_TILES, - TiledPlugin.ACTION_SETUP_ALTERNATIVES_AUTO_TILE, + TiledPlugin.AUTO_FILL_TILES); + interests.add(TiledPlugin.ACTION_SETUP_ALTERNATIVES_AUTO_TILE, TiledPlugin.GRID_CHANGED, SettingsTab.OK_BTN_CLICKED, - TiledPlugin.ACTION_SET_GRID_SIZE_FROM_ITEM, - MsgAPI.IMAGE_BUNDLE_DROP_SINGLE, + TiledPlugin.ACTION_SET_GRID_SIZE_FROM_ITEM); + interests.add(MsgAPI.IMAGE_BUNDLE_DROP_SINGLE, MsgAPI.ACTION_DELETE_IMAGE_RESOURCE, MsgAPI.TOOL_SELECTED, - MsgAPI.ACTION_KEY_DOWN - }; + MsgAPI.ACTION_KEY_DOWN); } @Override diff --git a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/offset/OffsetPanelMediator.java b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/offset/OffsetPanelMediator.java index dadef9be..d4d0e613 100644 --- a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/offset/OffsetPanelMediator.java +++ b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/offset/OffsetPanelMediator.java @@ -2,8 +2,9 @@ package games.rednblack.editor.plugin.tiled.offset; import com.badlogic.gdx.math.Vector2; import games.rednblack.editor.plugin.tiled.TiledPlugin; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by mariam on 5/12/16. @@ -23,12 +24,10 @@ public class OffsetPanelMediator extends Mediator { } @Override - public String[] listNotificationInterests() { - return new String[] { - TiledPlugin.ACTION_OPEN_OFFSET_PANEL, + public void listNotificationInterests(Interests interests) { + interests.add(TiledPlugin.ACTION_OPEN_OFFSET_PANEL, TiledPlugin.TILE_GRID_OFFSET_ADDED, - TiledPlugin.TILE_SELECTED - }; + TiledPlugin.TILE_SELECTED); } @Override diff --git a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/tools/DeleteTileTool.java b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/tools/DeleteTileTool.java index abbcdf13..91ee1191 100644 --- a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/tools/DeleteTileTool.java +++ b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/tools/DeleteTileTool.java @@ -3,8 +3,6 @@ package games.rednblack.editor.plugin.tiled.tools; import java.util.HashSet; import java.util.Set; -import org.puremvc.java.interfaces.INotification; - import com.badlogic.gdx.Input; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; @@ -13,6 +11,7 @@ import games.rednblack.editor.plugin.tiled.TiledPlugin; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.tools.Tool; import games.rednblack.h2d.common.vo.CursorData; +import games.rednblack.puremvc.interfaces.INotification; /** * Created by mariam on 4/5/16. diff --git a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/tools/DrawTileTool.java b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/tools/DrawTileTool.java index 1ce144e9..5f737cfd 100644 --- a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/tools/DrawTileTool.java +++ b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/tools/DrawTileTool.java @@ -1,7 +1,6 @@ package games.rednblack.editor.plugin.tiled.tools; import games.rednblack.h2d.extension.spine.SpineItemType; -import org.puremvc.java.interfaces.INotification; import com.badlogic.gdx.Input; import com.badlogic.gdx.graphics.Texture; @@ -21,6 +20,7 @@ import games.rednblack.editor.renderer.utils.ComponentRetriever; import games.rednblack.h2d.common.command.TransformCommandBuilder; import games.rednblack.h2d.common.view.tools.Tool; import games.rednblack.h2d.common.vo.CursorData; +import games.rednblack.puremvc.interfaces.INotification; /** * Created by mariam on 3/29/16. diff --git a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/view/dialog/AlternativeAutoTileDialogMediator.java b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/view/dialog/AlternativeAutoTileDialogMediator.java index 2b24c2f6..ebb089dc 100644 --- a/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/view/dialog/AlternativeAutoTileDialogMediator.java +++ b/plugin-tiled/src/main/java/games/rednblack/editor/plugin/tiled/view/dialog/AlternativeAutoTileDialogMediator.java @@ -1,11 +1,11 @@ package games.rednblack.editor.plugin.tiled.view.dialog; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; - import games.rednblack.editor.plugin.tiled.TiledPlugin; import games.rednblack.editor.plugin.tiled.data.AlternativeAutoTileVO; import games.rednblack.editor.plugin.tiled.data.AutoTileVO; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * The mediator for messages for the alternatives. @@ -23,14 +23,12 @@ public class AlternativeAutoTileDialogMediator extends Mediator { private final PluginAPI pluginAPI; - public ImportTileSetDialogMediator(PluginAPI pluginAPI, IFacade facade) { + public ImportTileSetDialogMediator(PluginAPI pluginAPI, Facade facade) { super(NAME, new ImportTileSetDialog(facade)); this.pluginAPI = pluginAPI; } @Override - public String[] listNotificationInterests() { - return new String[] { - TiledPlugin.IMPORT_TILESET_PANEL_OPEN, - ImportTileSetDialog.IMPORT_TILESET - }; + public void listNotificationInterests(Interests interests) { + interests.add(TiledPlugin.IMPORT_TILESET_PANEL_OPEN, + ImportTileSetDialog.IMPORT_TILESET); } @Override diff --git a/src/main/java/games/rednblack/editor/ConsoleInterceptor.java b/src/main/java/games/rednblack/editor/ConsoleInterceptor.java index 0e1385f0..191a3125 100644 --- a/src/main/java/games/rednblack/editor/ConsoleInterceptor.java +++ b/src/main/java/games/rednblack/editor/ConsoleInterceptor.java @@ -1,7 +1,7 @@ package games.rednblack.editor; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.patterns.facade.Facade; +import games.rednblack.puremvc.Facade; import java.io.OutputStream; import java.io.PrintStream; @@ -12,7 +12,7 @@ public class ConsoleInterceptor extends PrintStream { public ConsoleInterceptor(OutputStream out) { super(out, true); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); } public void setPrefix(String prefix) { diff --git a/src/main/java/games/rednblack/editor/HyperLap2D.java b/src/main/java/games/rednblack/editor/HyperLap2D.java index 479396b4..a6457128 100644 --- a/src/main/java/games/rednblack/editor/HyperLap2D.java +++ b/src/main/java/games/rednblack/editor/HyperLap2D.java @@ -31,10 +31,10 @@ import games.rednblack.editor.splash.SplashScreenAdapter; import games.rednblack.editor.view.ui.panel.ImportPanel; import games.rednblack.editor.view.ui.widget.actors.basic.WhitePixel; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.IProxy; import org.lwjgl.BufferUtils; import org.lwjgl.glfw.GLFW; -import org.puremvc.java.interfaces.IProxy; -import org.puremvc.java.patterns.observer.Notification; import java.nio.IntBuffer; @@ -42,12 +42,10 @@ public class HyperLap2D implements IProxy, ApplicationListener, Lwjgl3WindowList private static final String TAG = HyperLap2D.class.getCanonicalName(); public static final String NAME = TAG; - private HyperLap2DFacade facade; + private Facade facade; private Object data; - private final Notification renderNotification; - - public HyperLap2DFacade getFacade() { + public Facade getFacade() { return facade; } @@ -56,20 +54,19 @@ public class HyperLap2D implements IProxy, ApplicationListener, Lwjgl3WindowList private final SettingsManager settingsManager; public HyperLap2D(SettingsManager settingsManager) { - renderNotification = new Notification(MsgAPI.RENDER, null, null); this.settingsManager = settingsManager; } @Override public void create() { - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); facade.registerProxy(settingsManager); facade.registerProxy(this); } private void startup() { - facade.startup(); - sendNotification(MsgAPI.CREATE); + facade.sendNotification(MsgAPI.STARTUP); + facade.sendNotification(MsgAPI.CREATE); facade.sendNotification(SplashScreenAdapter.CLOSE_SPLASH, "Initializing..."); Lwjgl3Graphics graphics = (Lwjgl3Graphics)Gdx.graphics; @@ -79,55 +76,38 @@ public class HyperLap2D implements IProxy, ApplicationListener, Lwjgl3WindowList int width = w.get(0); int height = h.get(0); - sendNotification(MsgAPI.RESIZE, new int[]{width, height}); + facade.sendNotification(MsgAPI.RESIZE, new int[]{width, height}); startTime = System.currentTimeMillis(); } @Override public void pause() { - sendNotification(MsgAPI.PAUSE); + facade.sendNotification(MsgAPI.PAUSE); } @Override public void resume() { - sendNotification(MsgAPI.RESUME); + facade.sendNotification(MsgAPI.RESUME); } @Override public void render() { - renderNotification.setBody(Math.min(Gdx.graphics.getDeltaTime(), 0.1f)); - facade.notifyObservers(renderNotification); + facade.sendNotification(MsgAPI.RENDER, Math.min(Gdx.graphics.getDeltaTime(), 0.1f)); } @Override public void resize(int width, int height) { - sendNotification(MsgAPI.RESIZE, new int[]{width, height}); + facade.sendNotification(MsgAPI.RESIZE, new int[]{width, height}); } @Override public void dispose() { - sendNotification(MsgAPI.DISPOSE); + facade.sendNotification(MsgAPI.DISPOSE); } @Override - public void sendNotification(String notificationName, Object body, String type) { - System.out.println("sendNotification: " + System.currentTimeMillis() + " " + type); - facade.sendNotification(notificationName, body, type); - } - - @Override - public void sendNotification(String notificationName, Object body) { - facade.sendNotification(notificationName, body); - } - - @Override - public void sendNotification(String notificationName) { - facade.sendNotification(notificationName); - } - - @Override - public String getProxyName() { + public String getName() { return NAME; } @@ -136,11 +116,6 @@ public class HyperLap2D implements IProxy, ApplicationListener, Lwjgl3WindowList return data; } - @Override - public void setData(Object data) { - this.data = data; - } - @Override public void onRegister() { ConsoleInterceptor errInterceptor = new ConsoleInterceptor(System.err); diff --git a/src/main/java/games/rednblack/editor/HyperLap2DApp.java b/src/main/java/games/rednblack/editor/HyperLap2DApp.java index 2906dcab..420c7f9a 100644 --- a/src/main/java/games/rednblack/editor/HyperLap2DApp.java +++ b/src/main/java/games/rednblack/editor/HyperLap2DApp.java @@ -10,6 +10,7 @@ import games.rednblack.editor.splash.SplashScreenAdapter; import games.rednblack.editor.utils.AppConfig; import games.rednblack.editor.utils.HyperLap2DUtils; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; import org.apache.commons.lang3.SystemUtils; public class HyperLap2DApp extends ApplicationAdapter { @@ -41,7 +42,7 @@ public class HyperLap2DApp extends ApplicationAdapter { public void create() { Lwjgl3ApplicationGLESFix app = (Lwjgl3ApplicationGLESFix) Gdx.app; - StandardWidgetsFactory.init(HyperLap2DFacade.getInstance()); + StandardWidgetsFactory.init(Facade.getInstance()); Lwjgl3ApplicationConfiguration config2 = new Lwjgl3ApplicationConfiguration(); config2.setWindowedMode(467, 385); diff --git a/src/main/java/games/rednblack/editor/HyperLap2DFacade.java b/src/main/java/games/rednblack/editor/HyperLap2DFacade.java deleted file mode 100644 index 0f67cb7d..00000000 --- a/src/main/java/games/rednblack/editor/HyperLap2DFacade.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * ****************************************************************************** - * * Copyright 2015 See AUTHORS file. - * * - * * Licensed under the Apache License, Version 2.0 (the "License"); - * * you may not use this file except in compliance with the License. - * * You may obtain a copy of the License at - * * - * * http://www.apache.org/licenses/LICENSE-2.0 - * * - * * Unless required by applicable law or agreed to in writing, software - * * distributed under the License is distributed on an "AS IS" BASIS, - * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * * See the License for the specific language governing permissions and - * * limitations under the License. - * ***************************************************************************** - */ - -package games.rednblack.editor; - -import games.rednblack.editor.controller.StartupCommand; -import games.rednblack.editor.splash.SplashMediator; -import games.rednblack.h2d.common.HyperLog; -import org.puremvc.java.patterns.facade.Facade; -import org.puremvc.java.patterns.observer.Notification; - -/** - * Created by sargis on 3/30/15. - */ -public class HyperLap2DFacade extends Facade { - public static final String STARTUP = "startup"; - private static HyperLap2DFacade instance = null; - - protected HyperLap2DFacade() { - super(); - } - - /** - * Facade Singleton Factory method - * - * @return The Singleton instance of the Facade - */ - public synchronized static HyperLap2DFacade getInstance() { - if (instance == null) { - instance = new HyperLap2DFacade(); - instance.registerMediator(new SplashMediator()); - HyperLog.setFacade(instance); - } - return instance; - } - - public void startup() { - notifyObservers(new Notification(STARTUP, null, null)); - } - - @Override - protected void initializeFacade() { - super.initializeFacade(); - } - - @Override - protected void initializeController() { - super.initializeController(); - registerCommand(STARTUP, StartupCommand::new); - } - - @Override - protected void initializeModel() { - super.initializeModel(); - } - - @Override - protected void initializeView() { - super.initializeView(); - } -} diff --git a/src/main/java/games/rednblack/editor/Main.java b/src/main/java/games/rednblack/editor/Main.java index b27d84dc..eee98256 100644 --- a/src/main/java/games/rednblack/editor/Main.java +++ b/src/main/java/games/rednblack/editor/Main.java @@ -3,7 +3,12 @@ package games.rednblack.editor; import com.badlogic.gdx.Graphics; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationGLESFix; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; +import games.rednblack.editor.controller.StartupCommand; import games.rednblack.editor.proxy.SettingsManager; +import games.rednblack.editor.splash.SplashMediator; +import games.rednblack.h2d.common.HyperLog; +import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import org.apache.commons.lang3.SystemUtils; import java.io.*; @@ -26,7 +31,10 @@ public class Main { //Increase default lwjgl stack size System.setProperty("org.lwjgl.system.stackSize", "256"); - HyperLap2DFacade.getInstance(); + Facade instance = Facade.getInstance(); + instance.registerMediator(new SplashMediator()); + instance.registerCommand(MsgAPI.STARTUP, StartupCommand.class); + HyperLog.setFacade(instance); Graphics.DisplayMode dm = Lwjgl3ApplicationConfiguration.getDisplayMode(); diff --git a/src/main/java/games/rednblack/editor/controller/BootstrapCommand.java b/src/main/java/games/rednblack/editor/controller/BootstrapCommand.java index 074630f4..e9c4f62a 100644 --- a/src/main/java/games/rednblack/editor/controller/BootstrapCommand.java +++ b/src/main/java/games/rednblack/editor/controller/BootstrapCommand.java @@ -18,14 +18,13 @@ package games.rednblack.editor.controller; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.*; import games.rednblack.editor.controller.commands.component.*; import games.rednblack.editor.controller.commands.resource.*; import games.rednblack.editor.splash.SplashScreenAdapter; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.command.SimpleCommand; +import games.rednblack.puremvc.commands.SimpleCommand; +import games.rednblack.puremvc.interfaces.INotification; /** * Created by azakhary on 4/28/2015. @@ -35,96 +34,96 @@ public class BootstrapCommand extends SimpleCommand { @Override public void execute(INotification notification) { super.execute(notification); - facade = HyperLap2DFacade.getInstance(); + facade.sendNotification(SplashScreenAdapter.UPDATE_SPLASH, "Loading Commands..."); - facade.registerCommand(MsgAPI.ACTION_CUT, CutItemsCommand::new); - facade.registerCommand(MsgAPI.ACTION_COPY, CopyItemsCommand::new); - facade.registerCommand(MsgAPI.ACTION_PASTE, PasteItemsCommand::new); - facade.registerCommand(MsgAPI.ACTION_DELETE, DeleteItemsCommand::new); - facade.registerCommand(MsgAPI.ACTION_CREATE_ITEM, CreateItemCommand::new); - facade.registerCommand(MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, CompositeCameraChangeCommand::new); - facade.registerCommand(MsgAPI.ACTION_CREATE_PRIMITIVE, CreatePrimitiveCommand::new); - facade.registerCommand(MsgAPI.ACTION_CREATE_STICKY_NOTE, CreateStickyNoteCommand::new); - facade.registerCommand(MsgAPI.ACTION_CREATE_STICKY_NOTE, CreateStickyNoteCommand::new); - facade.registerCommand(MsgAPI.ACTION_REMOVE_STICKY_NOTE, RemoveStickyNoteCommand::new); - facade.registerCommand(MsgAPI.ACTION_MODIFY_STICKY_NOTE, ModifyStickyNoteCommand::new); + facade.registerCommand(MsgAPI.ACTION_CUT, CutItemsCommand.class); + facade.registerCommand(MsgAPI.ACTION_COPY, CopyItemsCommand.class); + facade.registerCommand(MsgAPI.ACTION_PASTE, PasteItemsCommand.class); + facade.registerCommand(MsgAPI.ACTION_DELETE, DeleteItemsCommand.class); + facade.registerCommand(MsgAPI.ACTION_CREATE_ITEM, CreateItemCommand.class); + facade.registerCommand(MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, CompositeCameraChangeCommand.class); + facade.registerCommand(MsgAPI.ACTION_CREATE_PRIMITIVE, CreatePrimitiveCommand.class); + facade.registerCommand(MsgAPI.ACTION_CREATE_STICKY_NOTE, CreateStickyNoteCommand.class); + facade.registerCommand(MsgAPI.ACTION_CREATE_STICKY_NOTE, CreateStickyNoteCommand.class); + facade.registerCommand(MsgAPI.ACTION_REMOVE_STICKY_NOTE, RemoveStickyNoteCommand.class); + facade.registerCommand(MsgAPI.ACTION_MODIFY_STICKY_NOTE, ModifyStickyNoteCommand.class); - facade.registerCommand(MsgAPI.ACTION_DELETE_LAYER, DeleteLayerCommand::new); - facade.registerCommand(MsgAPI.ACTION_NEW_LAYER, NewLayerCommand::new); - facade.registerCommand(MsgAPI.ACTION_SWAP_LAYERS, LayerSwapCommand::new); - facade.registerCommand(MsgAPI.ACTION_JUMP_LAYERS, LayerJumpCommand::new); - facade.registerCommand(MsgAPI.ACTION_RENAME_LAYER, RenameLayerCommand::new); + facade.registerCommand(MsgAPI.ACTION_DELETE_LAYER, DeleteLayerCommand.class); + facade.registerCommand(MsgAPI.ACTION_NEW_LAYER, NewLayerCommand.class); + facade.registerCommand(MsgAPI.ACTION_SWAP_LAYERS, LayerSwapCommand.class); + facade.registerCommand(MsgAPI.ACTION_JUMP_LAYERS, LayerJumpCommand.class); + facade.registerCommand(MsgAPI.ACTION_RENAME_LAYER, RenameLayerCommand.class); - facade.registerCommand(MsgAPI.ACTION_ADD_COMPONENT, AddComponentToItemCommand::new); - facade.registerCommand(MsgAPI.ACTION_REMOVE_COMPONENT, RemoveComponentFromItemCommand::new); - facade.registerCommand(MsgAPI.CUSTOM_VARIABLE_MODIFY, CustomVariableModifyCommand::new); + facade.registerCommand(MsgAPI.ACTION_ADD_COMPONENT, AddComponentToItemCommand.class); + facade.registerCommand(MsgAPI.ACTION_REMOVE_COMPONENT, RemoveComponentFromItemCommand.class); + facade.registerCommand(MsgAPI.CUSTOM_VARIABLE_MODIFY, CustomVariableModifyCommand.class); - facade.registerCommand(MsgAPI.ACTION_ITEMS_MOVE_TO, ItemsMoveCommand::new); + facade.registerCommand(MsgAPI.ACTION_ITEMS_MOVE_TO, ItemsMoveCommand.class); - facade.registerCommand(MsgAPI.ACTION_ITEM_AND_CHILDREN_TO, ItemChildrenTransformCommand::new); + facade.registerCommand(MsgAPI.ACTION_ITEM_AND_CHILDREN_TO, ItemChildrenTransformCommand.class); - facade.registerCommand(MsgAPI.ACTION_ITEM_TRANSFORM_TO, ItemTransformCommand::new); - facade.registerCommand(MsgAPI.ACTION_REPLACE_REGION_DATA, ReplaceRegionCommand::new); - facade.registerCommand(MsgAPI.ACTION_REPLACE_SPRITE_ANIMATION_DATA, ReplaceSpriteAnimationCommand::new); - facade.registerCommand(MsgAPI.ACTION_REPLACE_SPINE_ANIMATION_DATA, ReplaceSpineCommand::new); - facade.registerCommand(MsgAPI.ACTION_ADD_TO_LIBRARY, AddToLibraryCommand::new); - facade.registerCommand(MsgAPI.ACTION_ADD_TO_LIBRARY_ACTION, AddToLibraryAction::new); - facade.registerCommand(MsgAPI.ACTION_CHANGE_LIBRARY_ACTION, ChangeLibraryActionCommand::new); - facade.registerCommand(MsgAPI.ACTION_CONVERT_TO_BUTTON, ConvertToButtonCommand::new); - facade.registerCommand(MsgAPI.ACTION_GROUP_ITEMS, ConvertToCompositeCommand::new); + facade.registerCommand(MsgAPI.ACTION_ITEM_TRANSFORM_TO, ItemTransformCommand.class); + facade.registerCommand(MsgAPI.ACTION_REPLACE_REGION_DATA, ReplaceRegionCommand.class); + facade.registerCommand(MsgAPI.ACTION_REPLACE_SPRITE_ANIMATION_DATA, ReplaceSpriteAnimationCommand.class); + facade.registerCommand(MsgAPI.ACTION_REPLACE_SPINE_ANIMATION_DATA, ReplaceSpineCommand.class); + facade.registerCommand(MsgAPI.ACTION_ADD_TO_LIBRARY, AddToLibraryCommand.class); + facade.registerCommand(MsgAPI.ACTION_ADD_TO_LIBRARY_ACTION, AddToLibraryAction.class); + facade.registerCommand(MsgAPI.ACTION_CHANGE_LIBRARY_ACTION, ChangeLibraryActionCommand.class); + facade.registerCommand(MsgAPI.ACTION_CONVERT_TO_BUTTON, ConvertToButtonCommand.class); + facade.registerCommand(MsgAPI.ACTION_GROUP_ITEMS, ConvertToCompositeCommand.class); - facade.registerCommand(MsgAPI.ACTION_SET_SELECTION, SetSelectionCommand::new); - facade.registerCommand(MsgAPI.ACTION_ADD_SELECTION, AddSelectionCommand::new); - facade.registerCommand(MsgAPI.ACTION_RELEASE_SELECTION, ReleaseSelectionCommand::new); + facade.registerCommand(MsgAPI.ACTION_SET_SELECTION, SetSelectionCommand.class); + facade.registerCommand(MsgAPI.ACTION_ADD_SELECTION, AddSelectionCommand.class); + facade.registerCommand(MsgAPI.ACTION_RELEASE_SELECTION, ReleaseSelectionCommand.class); - facade.registerCommand(MsgAPI.ACTION_UPDATE_RULER_POSITION, ChangeRulerPositionCommand::new); - facade.registerCommand(MsgAPI.ACTION_CHANGE_POLYGON_VERTEX_POSITION, ChangePolygonVertexPositionCommand::new); - facade.registerCommand(MsgAPI.ACTION_DELETE_POLYGON_VERTEX, DeletePolygonVertexCommand::new); - facade.registerCommand(MsgAPI.ACTION_CHANGE_ORIGIN_POSITION, ChangeOriginPointPosition::new); - facade.registerCommand(MsgAPI.ACTION_CENTER_ORIGIN_POSITION, CenterOriginPointCommand::new); + facade.registerCommand(MsgAPI.ACTION_UPDATE_RULER_POSITION, ChangeRulerPositionCommand.class); + facade.registerCommand(MsgAPI.ACTION_CHANGE_POLYGON_VERTEX_POSITION, ChangePolygonVertexPositionCommand.class); + facade.registerCommand(MsgAPI.ACTION_DELETE_POLYGON_VERTEX, DeletePolygonVertexCommand.class); + facade.registerCommand(MsgAPI.ACTION_CHANGE_ORIGIN_POSITION, ChangeOriginPointPosition.class); + facade.registerCommand(MsgAPI.ACTION_CENTER_ORIGIN_POSITION, CenterOriginPointCommand.class); // DATA MODIFY by components - facade.registerCommand(MsgAPI.ACTION_UPDATE_SCENE_DATA, UpdateSceneDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_ITEM_DATA, UpdateEntityComponentsCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_LABEL_DATA, UpdateLabelDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_LIGHT_DATA, UpdateLightDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_COMPOSITE_DATA, UpdateCompositeDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_PARTICLE_DATA, UpdateParticleDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_TALOS_DATA, UpdateTalosDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_BODY_LIGHT_DATA, UpdateLightBodyDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_CIRCLE_SHAPE, UpdateCircleShapeCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_PHYSICS_BODY_DATA, UpdatePhysicsDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_SENSOR_DATA, UpdateSensorDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_SHADER_DATA, UpdateShaderDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_IMAGE_ITEM_DATA, UpdateImageItemDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_SPRITE_ANIMATION_DATA, UpdateSpriteAnimationDataCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_SPINE_ANIMATION_DATA, UpdateSpineDataCommand::new); + facade.registerCommand(MsgAPI.ACTION_UPDATE_SCENE_DATA, UpdateSceneDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_ITEM_DATA, UpdateEntityComponentsCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_LABEL_DATA, UpdateLabelDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_LIGHT_DATA, UpdateLightDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_COMPOSITE_DATA, UpdateCompositeDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_PARTICLE_DATA, UpdateParticleDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_TALOS_DATA, UpdateTalosDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_BODY_LIGHT_DATA, UpdateLightBodyDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_CIRCLE_SHAPE, UpdateCircleShapeCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_PHYSICS_BODY_DATA, UpdatePhysicsDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_SENSOR_DATA, UpdateSensorDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_SHADER_DATA, UpdateShaderDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_IMAGE_ITEM_DATA, UpdateImageItemDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_SPRITE_ANIMATION_DATA, UpdateSpriteAnimationDataCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_SPINE_ANIMATION_DATA, UpdateSpineDataCommand.class); - facade.registerCommand(MsgAPI.ACTION_UPDATE_MESH_DATA, UpdatePolygonVerticesCommand::new); - facade.registerCommand(MsgAPI.ACTION_UPDATE_POLYGON_DATA, UpdatePolygonDataCommand::new); + facade.registerCommand(MsgAPI.ACTION_UPDATE_MESH_DATA, UpdatePolygonVerticesCommand.class); + facade.registerCommand(MsgAPI.ACTION_UPDATE_POLYGON_DATA, UpdatePolygonDataCommand.class); - facade.registerCommand(MsgAPI.ACTION_EXPORT_PROJECT, ExportProjectCommand::new); - facade.registerCommand(MsgAPI.SAVE_EXPORT_PATH, SaveExportPathCommand::new); + facade.registerCommand(MsgAPI.ACTION_EXPORT_PROJECT, ExportProjectCommand.class); + facade.registerCommand(MsgAPI.SAVE_EXPORT_PATH, SaveExportPathCommand.class); - facade.registerCommand(MsgAPI.ACTION_PLUGIN_PROXY_COMMAND, PluginItemCommand::new); + facade.registerCommand(MsgAPI.ACTION_PLUGIN_PROXY_COMMAND, PluginItemCommand.class); // Resources - facade.registerCommand(MsgAPI.ACTION_DELETE_IMAGE_RESOURCE, DeleteImageResource::new); - facade.registerCommand(MsgAPI.ACTION_DELETE_TINY_VG_RESOURCE, DeleteTinyVGResource::new); - facade.registerCommand(MsgAPI.ACTION_DELETE_SHADER, DeleteShaderCommand::new); - facade.registerCommand(MsgAPI.ACTION_DELETE_LIBRARY_ITEM, DeleteLibraryItem::new); - facade.registerCommand(MsgAPI.ACTION_DELETE_LIBRARY_ACTION, DeleteLibraryAction::new); - facade.registerCommand(MsgAPI.ACTION_DUPLICATE_LIBRARY_ACTION, DuplicateLibraryAction::new); - facade.registerCommand(MsgAPI.ACTION_EXPORT_LIBRARY_ITEM, ExportLibraryItemCommand::new); - facade.registerCommand(MsgAPI.ACTION_EXPORT_ACTION_ITEM, ExportActionCommand::new); - facade.registerCommand(MsgAPI.ACTION_RENAME_ACTION_ITEM, RenameLibraryActionCommand::new); - facade.registerCommand(MsgAPI.ACTION_DELETE_PARTICLE_EFFECT, DeleteParticleEffect::new); - facade.registerCommand(MsgAPI.ACTION_DELETE_TALOS_VFX, DeleteTalosVFX::new); - facade.registerCommand(MsgAPI.ACTION_DELETE_SPINE_ANIMATION_RESOURCE, DeleteSpineAnimation::new); - facade.registerCommand(MsgAPI.ACTION_DELETE_SPRITE_ANIMATION_RESOURCE, DeleteSpriteAnimation::new); - facade.registerCommand(MsgAPI.ACTION_DELETE_MULTIPLE_RESOURCE, DeleteMultipleResources::new); + facade.registerCommand(MsgAPI.ACTION_DELETE_IMAGE_RESOURCE, DeleteImageResource.class); + facade.registerCommand(MsgAPI.ACTION_DELETE_TINY_VG_RESOURCE, DeleteTinyVGResource.class); + facade.registerCommand(MsgAPI.ACTION_DELETE_SHADER, DeleteShaderCommand.class); + facade.registerCommand(MsgAPI.ACTION_DELETE_LIBRARY_ITEM, DeleteLibraryItem.class); + facade.registerCommand(MsgAPI.ACTION_DELETE_LIBRARY_ACTION, DeleteLibraryAction.class); + facade.registerCommand(MsgAPI.ACTION_DUPLICATE_LIBRARY_ACTION, DuplicateLibraryAction.class); + facade.registerCommand(MsgAPI.ACTION_EXPORT_LIBRARY_ITEM, ExportLibraryItemCommand.class); + facade.registerCommand(MsgAPI.ACTION_EXPORT_ACTION_ITEM, ExportActionCommand.class); + facade.registerCommand(MsgAPI.ACTION_RENAME_ACTION_ITEM, RenameLibraryActionCommand.class); + facade.registerCommand(MsgAPI.ACTION_DELETE_PARTICLE_EFFECT, DeleteParticleEffect.class); + facade.registerCommand(MsgAPI.ACTION_DELETE_TALOS_VFX, DeleteTalosVFX.class); + facade.registerCommand(MsgAPI.ACTION_DELETE_SPINE_ANIMATION_RESOURCE, DeleteSpineAnimation.class); + facade.registerCommand(MsgAPI.ACTION_DELETE_SPRITE_ANIMATION_RESOURCE, DeleteSpriteAnimation.class); + facade.registerCommand(MsgAPI.ACTION_DELETE_MULTIPLE_RESOURCE, DeleteMultipleResources.class); - facade.registerCommand(MsgAPI.SHOW_NOTIFICATION, ShowNotificationCommand::new); + facade.registerCommand(MsgAPI.SHOW_NOTIFICATION, ShowNotificationCommand.class); } } diff --git a/src/main/java/games/rednblack/editor/controller/BootstrapInfoCommand.java b/src/main/java/games/rednblack/editor/controller/BootstrapInfoCommand.java index e78d07e0..24fe49e7 100644 --- a/src/main/java/games/rednblack/editor/controller/BootstrapInfoCommand.java +++ b/src/main/java/games/rednblack/editor/controller/BootstrapInfoCommand.java @@ -4,9 +4,9 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; import games.rednblack.editor.utils.AppConfig; import games.rednblack.h2d.common.HyperLog; +import games.rednblack.puremvc.commands.SimpleCommand; +import games.rednblack.puremvc.interfaces.INotification; import org.apache.commons.lang3.SystemUtils; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.command.SimpleCommand; public class BootstrapInfoCommand extends SimpleCommand { diff --git a/src/main/java/games/rednblack/editor/controller/BootstrapPlugins.java b/src/main/java/games/rednblack/editor/controller/BootstrapPlugins.java index b8306ec8..e653e9f7 100644 --- a/src/main/java/games/rednblack/editor/controller/BootstrapPlugins.java +++ b/src/main/java/games/rednblack/editor/controller/BootstrapPlugins.java @@ -18,16 +18,16 @@ package games.rednblack.editor.controller; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.PluginManager; import games.rednblack.editor.proxy.SettingsManager; import games.rednblack.editor.splash.SplashScreenAdapter; import games.rednblack.h2d.common.plugins.H2DPlugin; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.commands.SimpleCommand; +import games.rednblack.puremvc.interfaces.INotification; import net.mountainblade.modular.Module; import net.mountainblade.modular.ModuleManager; import net.mountainblade.modular.impl.DefaultModuleManager; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.command.SimpleCommand; import java.io.File; import java.lang.reflect.InvocationTargetException; @@ -37,7 +37,6 @@ public class BootstrapPlugins extends SimpleCommand { public void execute(INotification notification) { super.execute(notification); - facade = HyperLap2DFacade.getInstance(); SettingsManager settingsManager = facade.retrieveProxy(SettingsManager.NAME); if (!settingsManager.editorConfigVO.enablePlugins) diff --git a/src/main/java/games/rednblack/editor/controller/BootstrapProxyCommand.java b/src/main/java/games/rednblack/editor/controller/BootstrapProxyCommand.java index 550c446c..f717f05c 100644 --- a/src/main/java/games/rednblack/editor/controller/BootstrapProxyCommand.java +++ b/src/main/java/games/rednblack/editor/controller/BootstrapProxyCommand.java @@ -18,12 +18,11 @@ package games.rednblack.editor.controller; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.*; import games.rednblack.editor.splash.SplashScreenAdapter; import games.rednblack.h2d.common.proxy.CursorManager; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.command.SimpleCommand; +import games.rednblack.puremvc.commands.SimpleCommand; +import games.rednblack.puremvc.interfaces.INotification; /** * Created by sargis on 4/1/15. @@ -32,7 +31,7 @@ public class BootstrapProxyCommand extends SimpleCommand { @Override public void execute(INotification notification) { super.execute(notification); - facade = HyperLap2DFacade.getInstance(); + facade.sendNotification(SplashScreenAdapter.UPDATE_SPLASH, "Loading Proxies..."); facade.registerProxy(new WindowTitleManager()); diff --git a/src/main/java/games/rednblack/editor/controller/BootstrapViewCommand.java b/src/main/java/games/rednblack/editor/controller/BootstrapViewCommand.java index d4b50321..ca18e623 100644 --- a/src/main/java/games/rednblack/editor/controller/BootstrapViewCommand.java +++ b/src/main/java/games/rednblack/editor/controller/BootstrapViewCommand.java @@ -18,7 +18,6 @@ package games.rednblack.editor.controller; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.splash.SplashScreenAdapter; import games.rednblack.editor.view.HyperLap2DScreenMediator; import games.rednblack.editor.view.menu.HyperLap2DMenuBarMediator; @@ -29,8 +28,8 @@ import games.rednblack.editor.view.ui.box.*; import games.rednblack.editor.view.ui.box.bottom.*; import games.rednblack.editor.view.ui.dialog.*; import games.rednblack.editor.view.ui.panel.*; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.command.SimpleCommand; +import games.rednblack.puremvc.commands.SimpleCommand; +import games.rednblack.puremvc.interfaces.INotification; /** * Created by sargis on 4/1/15. @@ -39,7 +38,7 @@ public class BootstrapViewCommand extends SimpleCommand { @Override public void execute(INotification notification) { super.execute(notification); - facade = HyperLap2DFacade.getInstance(); + facade.sendNotification(SplashScreenAdapter.UPDATE_SPLASH, "Loading Views..."); facade.registerMediator(new HyperLap2DScreenMediator()); diff --git a/src/main/java/games/rednblack/editor/controller/SandboxCommand.java b/src/main/java/games/rednblack/editor/controller/SandboxCommand.java index ed9d0d2e..1722f6ca 100644 --- a/src/main/java/games/rednblack/editor/controller/SandboxCommand.java +++ b/src/main/java/games/rednblack/editor/controller/SandboxCommand.java @@ -18,9 +18,8 @@ package games.rednblack.editor.controller; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; -import org.puremvc.java.patterns.command.SimpleCommand; +import games.rednblack.puremvc.commands.SimpleCommand; /** * Created by azakhary on 4/28/2015. @@ -31,6 +30,5 @@ public class SandboxCommand extends SimpleCommand { public SandboxCommand() { sandbox = Sandbox.getInstance(); - facade = HyperLap2DFacade.getInstance(); } } diff --git a/src/main/java/games/rednblack/editor/controller/StartupCommand.java b/src/main/java/games/rednblack/editor/controller/StartupCommand.java index 9840d870..773d22cd 100644 --- a/src/main/java/games/rednblack/editor/controller/StartupCommand.java +++ b/src/main/java/games/rednblack/editor/controller/StartupCommand.java @@ -18,7 +18,7 @@ package games.rednblack.editor.controller; -import org.puremvc.java.patterns.command.MacroCommand; +import games.rednblack.puremvc.commands.MacroCommand; /** * Created by sargis on 3/30/15. @@ -28,10 +28,10 @@ public class StartupCommand extends MacroCommand { protected void initializeMacroCommand() { super.initializeMacroCommand(); - addSubCommand(BootstrapProxyCommand::new); - addSubCommand(BootstrapViewCommand::new); - addSubCommand(BootstrapInfoCommand::new); - addSubCommand(BootstrapCommand::new); - addSubCommand(BootstrapPlugins::new); + addSubCommand(new BootstrapProxyCommand()); + addSubCommand(new BootstrapViewCommand()); + addSubCommand(new BootstrapInfoCommand()); + addSubCommand(new BootstrapCommand()); + addSubCommand(new BootstrapPlugins()); } } diff --git a/src/main/java/games/rednblack/editor/controller/commands/AddComponentToItemCommand.java b/src/main/java/games/rednblack/editor/controller/commands/AddComponentToItemCommand.java index 05ca9950..84df254f 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/AddComponentToItemCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/AddComponentToItemCommand.java @@ -1,9 +1,9 @@ package games.rednblack.editor.controller.commands; import com.artemis.Component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; /** * Created by CyberJoe on 7/2/2015. @@ -29,8 +29,8 @@ public class AddComponentToItemCommand extends EntityModifyRevertibleCommand { Component newComponent = Sandbox.getInstance().getEngine().edit(entity).create(component); sandbox.getEngine().inject(newComponent); - HyperLap2DFacade.getInstance().sendNotification(DONE, entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(DONE, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -38,8 +38,8 @@ public class AddComponentToItemCommand extends EntityModifyRevertibleCommand { Sandbox.getInstance().getEngine().edit(entity).remove(component); Sandbox.getInstance().getEngine().process(); - HyperLap2DFacade.getInstance().sendNotification(DONE, entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(DONE, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object[] payload(int entity, Class component) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/AddToLibraryAction.java b/src/main/java/games/rednblack/editor/controller/commands/AddToLibraryAction.java index bbc0d0e1..837454c9 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/AddToLibraryAction.java +++ b/src/main/java/games/rednblack/editor/controller/commands/AddToLibraryAction.java @@ -1,8 +1,8 @@ package games.rednblack.editor.controller.commands; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.data.GraphVO; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class AddToLibraryAction extends NonRevertibleCommand { @@ -17,7 +17,7 @@ public class AddToLibraryAction extends NonRevertibleCommand { GraphVO data = (GraphVO) payload[1]; libraryActions.put(key, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.LIBRARY_ACTIONS_UPDATED); + Facade.getInstance().sendNotification(MsgAPI.LIBRARY_ACTIONS_UPDATED); } public static Object[] getPayload(String key, GraphVO data) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/AddToLibraryCommand.java b/src/main/java/games/rednblack/editor/controller/commands/AddToLibraryCommand.java index 715a630c..d3eff10e 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/AddToLibraryCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/AddToLibraryCommand.java @@ -18,13 +18,13 @@ package games.rednblack.editor.controller.commands; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.renderer.components.MainItemComponent; import games.rednblack.editor.renderer.data.CompositeItemVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import java.util.HashMap; @@ -49,7 +49,7 @@ public class AddToLibraryCommand extends HistoricRevertibleCommand { MainItemComponent mainItemComponent = SandboxComponentRetriever.get(item, MainItemComponent.class); if(createdLibraryItemName.length() > 0) { - ProjectManager projectManager = HyperLap2DFacade.getInstance().retrieveProxy(ProjectManager.NAME); + ProjectManager projectManager = Facade.getInstance().retrieveProxy(ProjectManager.NAME); HashMap libraryItems = projectManager.currentProjectInfoVO.libraryItems; if (libraryItems.containsKey(createdLibraryItemName)) { @@ -74,7 +74,7 @@ public class AddToLibraryCommand extends HistoricRevertibleCommand { @Override public void undoAction() { - ProjectManager projectManager = HyperLap2DFacade.getInstance().retrieveProxy(ProjectManager.NAME); + ProjectManager projectManager = Facade.getInstance().retrieveProxy(ProjectManager.NAME); HashMap libraryItems = projectManager.currentProjectInfoVO.libraryItems; if(createdLibraryItemName.length() > 0) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/CenterOriginPointCommand.java b/src/main/java/games/rednblack/editor/controller/commands/CenterOriginPointCommand.java index 4d33ae31..b125d116 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/CenterOriginPointCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/CenterOriginPointCommand.java @@ -1,11 +1,11 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.math.Vector2; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.command.TransformCommandBuilder; +import games.rednblack.puremvc.Facade; public class CenterOriginPointCommand extends EntityModifyRevertibleCommand { @@ -30,7 +30,7 @@ public class CenterOriginPointCommand extends EntityModifyRevertibleCommand { originY = dimensionsComponent.polygon.getBoundingRectangle().height * 0.5f; } commandBuilder.setOrigin(originX, originY); - commandBuilder.execute(HyperLap2DFacade.getInstance()); + commandBuilder.execute(Facade.getInstance()); } @Override @@ -38,6 +38,6 @@ public class CenterOriginPointCommand extends EntityModifyRevertibleCommand { TransformCommandBuilder commandBuilder = new TransformCommandBuilder(); commandBuilder.begin(entity, sandbox.getEngine()); commandBuilder.setOrigin(backupOrigin.x, backupOrigin.y); - commandBuilder.execute(HyperLap2DFacade.getInstance()); + commandBuilder.execute(Facade.getInstance()); } } diff --git a/src/main/java/games/rednblack/editor/controller/commands/ChangeOriginPointPosition.java b/src/main/java/games/rednblack/editor/controller/commands/ChangeOriginPointPosition.java index 63faba70..186163e1 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ChangeOriginPointPosition.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ChangeOriginPointPosition.java @@ -1,6 +1,5 @@ package games.rednblack.editor.controller.commands; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.SandboxCommand; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; @@ -8,7 +7,8 @@ import games.rednblack.editor.view.ui.validator.FloatInputValidator; import games.rednblack.h2d.common.command.TransformCommandBuilder; import games.rednblack.h2d.common.view.ui.dialog.MultipleInputDialog; import games.rednblack.h2d.common.view.ui.listener.MultipleInputDialogListener; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.INotification; public class ChangeOriginPointPosition extends SandboxCommand { @@ -25,7 +25,7 @@ public class ChangeOriginPointPosition extends SandboxCommand { TransformCommandBuilder commandBuilder = new TransformCommandBuilder(); commandBuilder.begin(entity, sandbox.getEngine()); commandBuilder.setOrigin(Float.parseFloat(input[0]), Float.parseFloat(input[1])); - commandBuilder.execute(HyperLap2DFacade.getInstance()); + commandBuilder.execute(Facade.getInstance()); } @Override diff --git a/src/main/java/games/rednblack/editor/controller/commands/ChangePolygonVertexPositionCommand.java b/src/main/java/games/rednblack/editor/controller/commands/ChangePolygonVertexPositionCommand.java index 950ccc9d..fd802b5f 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ChangePolygonVertexPositionCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ChangePolygonVertexPositionCommand.java @@ -3,7 +3,6 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.IntSet; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.SandboxCommand; import games.rednblack.editor.controller.commands.component.UpdatePolygonVerticesCommand; import games.rednblack.editor.renderer.components.shape.PolygonShapeComponent; @@ -14,7 +13,8 @@ import games.rednblack.editor.view.ui.validator.FloatInputValidator; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.ui.dialog.MultipleInputDialog; import games.rednblack.h2d.common.view.ui.listener.MultipleInputDialogListener; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.INotification; public class ChangePolygonVertexPositionCommand extends SandboxCommand { @@ -42,7 +42,7 @@ public class ChangePolygonVertexPositionCommand extends SandboxCommand { if (polygonShapeComponent.openEnded) { UpdatePolygonVerticesCommand.payload(currentCommandPayload, polygonShapeComponent.vertices, polygonShapeComponent.polygonizedVertices); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_UPDATE_MESH_DATA, currentCommandPayload); + Facade.getInstance().sendNotification(MsgAPI.ACTION_UPDATE_MESH_DATA, currentCommandPayload); return; } @@ -56,7 +56,7 @@ public class ChangePolygonVertexPositionCommand extends SandboxCommand { polygonShapeComponent.polygonizedVertices = PolygonUtils.polygonize(polygonShapeComponent.vertices.toArray()); UpdatePolygonVerticesCommand.payload(currentCommandPayload, polygonShapeComponent.vertices, polygonShapeComponent.polygonizedVertices); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_UPDATE_MESH_DATA, currentCommandPayload); + Facade.getInstance().sendNotification(MsgAPI.ACTION_UPDATE_MESH_DATA, currentCommandPayload); } else { points.get(anchor).set(backup); } diff --git a/src/main/java/games/rednblack/editor/controller/commands/ConvertToCompositeCommand.java b/src/main/java/games/rednblack/editor/controller/commands/ConvertToCompositeCommand.java index fadbf1ea..eb9eeaf1 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ConvertToCompositeCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ConvertToCompositeCommand.java @@ -19,7 +19,6 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.math.Vector2; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.factory.ItemFactory; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.TransformComponent; @@ -29,6 +28,7 @@ import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.ui.FollowersUIMediator; import games.rednblack.editor.view.ui.box.UILayerBoxMediator; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import java.util.HashMap; import java.util.HashSet; @@ -99,15 +99,15 @@ public class ConvertToCompositeCommand extends EntityModifyRevertibleCommand { sandbox.getEngine().process(); //let everyone know - HyperLap2DFacade.getInstance().sendNotification(DONE); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); + Facade.getInstance().sendNotification(DONE); + Facade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); sandbox.getSelector().setSelection(entity, true); } @Override public void undoAction() { - FollowersUIMediator followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + FollowersUIMediator followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); //get the entity int entity = EntityUtils.getByUniqueId(entityId); @@ -139,7 +139,7 @@ public class ConvertToCompositeCommand extends EntityModifyRevertibleCommand { sandbox.getEngine().delete(entity); sandbox.getEngine().process(); - HyperLap2DFacade.getInstance().sendNotification(DONE); + Facade.getInstance().sendNotification(DONE); sandbox.getSelector().setSelections(children, true); diff --git a/src/main/java/games/rednblack/editor/controller/commands/CreateItemCommand.java b/src/main/java/games/rednblack/editor/controller/commands/CreateItemCommand.java index 0f9d2f41..f00df22a 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/CreateItemCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/CreateItemCommand.java @@ -18,7 +18,6 @@ package games.rednblack.editor.controller.commands; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.NodeComponent; import games.rednblack.editor.renderer.components.ZIndexComponent; import games.rednblack.editor.renderer.factory.EntityFactory; @@ -27,6 +26,7 @@ import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.ui.FollowersUIMediator; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import java.util.HashSet; import java.util.Set; @@ -60,7 +60,7 @@ public class CreateItemCommand extends EntityModifyRevertibleCommand { zindexComponent.setZIndex(nodeComponent.children.size); sandbox.getEngine().process(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); + Facade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); Set items = new HashSet<>(); items.add(entity); @@ -72,7 +72,7 @@ public class CreateItemCommand extends EntityModifyRevertibleCommand { int entity = EntityUtils.getByUniqueId(entityId); serializedEntity = EntityUtils.getJsonStringFromEntity(entity); - FollowersUIMediator followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + FollowersUIMediator followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); followersUIMediator.removeFollower(entity); sandbox.getEngine().delete(entity); diff --git a/src/main/java/games/rednblack/editor/controller/commands/CutItemsCommand.java b/src/main/java/games/rednblack/editor/controller/commands/CutItemsCommand.java index e068ca16..b2cdb688 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/CutItemsCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/CutItemsCommand.java @@ -19,12 +19,12 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.utils.Json; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.data.CompositeItemVO; import games.rednblack.editor.renderer.utils.HyperJson; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import java.util.Set; @@ -54,7 +54,7 @@ public class CutItemsCommand extends EntityModifyRevertibleCommand { sandbox.getEngine().process(); for (int entity : newEntitiesList) { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); + Facade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); } sandbox.getSelector().setSelections(newEntitiesList, true); diff --git a/src/main/java/games/rednblack/editor/controller/commands/DeleteItemsCommand.java b/src/main/java/games/rednblack/editor/controller/commands/DeleteItemsCommand.java index 72746ac6..57d8ae62 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/DeleteItemsCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/DeleteItemsCommand.java @@ -20,12 +20,12 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Json; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.data.CompositeItemVO; import games.rednblack.editor.renderer.utils.HyperJson; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.view.ui.FollowersUIMediator; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import java.util.HashSet; import java.util.Set; @@ -59,7 +59,7 @@ public class DeleteItemsCommand extends EntityModifyRevertibleCommand { public void doAction() { backup(); - FollowersUIMediator followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + FollowersUIMediator followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); for (Integer entityId : entityIdsToDelete) { int item = EntityUtils.getByUniqueId(entityId); followersUIMediator.removeFollower(item); @@ -81,7 +81,7 @@ public class DeleteItemsCommand extends EntityModifyRevertibleCommand { sandbox.getEngine().process(); for (int entity : newEntitiesList) { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); + Facade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); } sandbox.getSelector().setSelections(newEntitiesList, true); diff --git a/src/main/java/games/rednblack/editor/controller/commands/DeletePolygonVertexCommand.java b/src/main/java/games/rednblack/editor/controller/commands/DeletePolygonVertexCommand.java index 9f21baaa..fb718f23 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/DeletePolygonVertexCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/DeletePolygonVertexCommand.java @@ -3,7 +3,6 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import com.kotcrab.vis.ui.util.dialog.Dialogs; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.SandboxCommand; import games.rednblack.editor.controller.commands.component.UpdatePolygonVerticesCommand; import games.rednblack.editor.renderer.components.shape.PolygonShapeComponent; @@ -11,7 +10,8 @@ import games.rednblack.editor.utils.poly.PolygonUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.ui.followers.PolygonFollower; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.INotification; public class DeletePolygonVertexCommand extends SandboxCommand { @@ -53,7 +53,7 @@ public class DeletePolygonVertexCommand extends SandboxCommand { } UpdatePolygonVerticesCommand.payload(currentCommandPayload, polygonShapeComponent.vertices, polygonShapeComponent.polygonizedVertices); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_UPDATE_MESH_DATA, currentCommandPayload); + Facade.getInstance().sendNotification(MsgAPI.ACTION_UPDATE_MESH_DATA, currentCommandPayload); follower.update(); } diff --git a/src/main/java/games/rednblack/editor/controller/commands/EntityModifyRevertibleCommand.java b/src/main/java/games/rednblack/editor/controller/commands/EntityModifyRevertibleCommand.java index 1954060e..934b885f 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/EntityModifyRevertibleCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/EntityModifyRevertibleCommand.java @@ -19,7 +19,6 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.renderer.components.MainItemComponent; import games.rednblack.editor.renderer.components.NodeComponent; @@ -27,6 +26,7 @@ import games.rednblack.editor.renderer.data.CompositeItemVO; import games.rednblack.editor.renderer.factory.EntityFactory; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; +import games.rednblack.puremvc.Facade; import java.util.HashMap; @@ -55,7 +55,7 @@ public abstract class EntityModifyRevertibleCommand extends HistoricRevertibleCo String link = mainItemComponent.libraryLink; if(link != null && link.length() > 0) { - ProjectManager projectManager = HyperLap2DFacade.getInstance().retrieveProxy(ProjectManager.NAME); + ProjectManager projectManager = Facade.getInstance().retrieveProxy(ProjectManager.NAME); HashMap libraryItems = projectManager.currentProjectInfoVO.libraryItems; if (libraryItems.containsKey(mainItemComponent.libraryLink)) { CompositeItemVO itemVO = new CompositeItemVO(); diff --git a/src/main/java/games/rednblack/editor/controller/commands/ExportProjectCommand.java b/src/main/java/games/rednblack/editor/controller/commands/ExportProjectCommand.java index 22722999..0b141baf 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ExportProjectCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ExportProjectCommand.java @@ -21,7 +21,7 @@ package games.rednblack.editor.controller.commands; import games.rednblack.editor.controller.SandboxCommand; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; public class ExportProjectCommand extends SandboxCommand { diff --git a/src/main/java/games/rednblack/editor/controller/commands/ItemChildrenTransformCommand.java b/src/main/java/games/rednblack/editor/controller/commands/ItemChildrenTransformCommand.java index dbe89804..0b010b98 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ItemChildrenTransformCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ItemChildrenTransformCommand.java @@ -2,12 +2,12 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import java.util.HashMap; import java.util.Map; @@ -85,7 +85,7 @@ public class ItemChildrenTransformCommand extends EntityModifyRevertibleCommand transformComponent.x = newPos.x; transformComponent.y = newPos.y; } - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -99,7 +99,7 @@ public class ItemChildrenTransformCommand extends EntityModifyRevertibleCommand transformComponent.x = oldPosition.x; transformComponent.y = oldPosition.y; } - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } private void setState(TransformComponent tC, Vector2 position, DimensionsComponent dC, Vector2 size) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/ItemTransformCommand.java b/src/main/java/games/rednblack/editor/controller/commands/ItemTransformCommand.java index c6fa650a..3b5db89d 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ItemTransformCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ItemTransformCommand.java @@ -2,12 +2,12 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; /** * Created by Osman on 01.08.2015. @@ -47,7 +47,7 @@ public class ItemTransformCommand extends EntityModifyRevertibleCommand { EntityUtils.refreshComponents(entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -80,6 +80,6 @@ public class ItemTransformCommand extends EntityModifyRevertibleCommand { EntityUtils.refreshComponents(entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } } diff --git a/src/main/java/games/rednblack/editor/controller/commands/ItemsMoveCommand.java b/src/main/java/games/rednblack/editor/controller/commands/ItemsMoveCommand.java index abf30d89..874adcb7 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ItemsMoveCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ItemsMoveCommand.java @@ -20,11 +20,11 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import java.util.HashMap; import java.util.Map; @@ -60,7 +60,7 @@ public class ItemsMoveCommand extends EntityModifyRevertibleCommand { transformComponent.y = newLocation.y; // pining UI to update current item properties tools - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity, TAG); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity, TAG); } } @@ -77,7 +77,7 @@ public class ItemsMoveCommand extends EntityModifyRevertibleCommand { transformComponent.y = prevLocation.y; // pining UI to update current item properties tools - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity, TAG); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity, TAG); } } diff --git a/src/main/java/games/rednblack/editor/controller/commands/NonRevertibleCommand.java b/src/main/java/games/rednblack/editor/controller/commands/NonRevertibleCommand.java index 8f70824f..8c7da437 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/NonRevertibleCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/NonRevertibleCommand.java @@ -7,7 +7,8 @@ import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.SettingsManager; import games.rednblack.editor.renderer.data.CompositeItemVO; import games.rednblack.editor.renderer.data.GraphVO; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Notification; +import games.rednblack.puremvc.interfaces.INotification; import java.util.HashMap; @@ -36,7 +37,7 @@ public abstract class NonRevertibleCommand extends SandboxCommand { @Override public void execute(INotification notification) { commandManager = facade.retrieveProxy(CommandManager.NAME); - this.notification = notification; + this.notification = ((Notification) notification).copy(); if (showConfirmDialog) { Dialogs.showConfirmDialog(sandbox.getUIStage(), confirmDialogTitle(), confirmDialogMessage(), diff --git a/src/main/java/games/rednblack/editor/controller/commands/PasteItemsCommand.java b/src/main/java/games/rednblack/editor/controller/commands/PasteItemsCommand.java index 3ef9003c..f5875200 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/PasteItemsCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/PasteItemsCommand.java @@ -21,7 +21,6 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Json; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.renderer.components.ZIndexComponent; import games.rednblack.editor.renderer.data.CompositeItemVO; @@ -34,6 +33,7 @@ import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.ui.FollowersUIMediator; import games.rednblack.editor.view.ui.box.UILayerBoxMediator; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import java.util.HashSet; import java.util.Set; @@ -73,7 +73,7 @@ public class PasteItemsCommand extends EntityModifyRevertibleCommand { ZIndexComponent zIndexComponent = SandboxComponentRetriever.get(entity, ZIndexComponent.class); // UILayerBoxMediator layerBoxMediator = facade.retrieveMediator(UILayerBoxMediator.NAME); zIndexComponent.layerName = layerBoxMediator.getCurrentSelectedLayerName(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); + Facade.getInstance().sendNotification(MsgAPI.NEW_ITEM_ADDED, entity); pastedEntityIds.add(EntityUtils.getEntityId(entity)); } sandbox.getSelector().setSelections(newEntitiesList, true); @@ -81,7 +81,7 @@ public class PasteItemsCommand extends EntityModifyRevertibleCommand { @Override public void undoAction() { - FollowersUIMediator followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + FollowersUIMediator followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); for (Integer entityId : pastedEntityIds) { int entity = EntityUtils.getByUniqueId(entityId); followersUIMediator.removeFollower(entity); diff --git a/src/main/java/games/rednblack/editor/controller/commands/RemoveComponentFromItemCommand.java b/src/main/java/games/rednblack/editor/controller/commands/RemoveComponentFromItemCommand.java index 7c2a7057..5297f642 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/RemoveComponentFromItemCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/RemoveComponentFromItemCommand.java @@ -1,11 +1,11 @@ package games.rednblack.editor.controller.commands; import com.artemis.Component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.utils.runtime.ComponentCloner; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; /** * Created by CyberJoe on 7/2/2015. @@ -32,8 +32,8 @@ public class RemoveComponentFromItemCommand extends EntityModifyRevertibleComman sandbox.getEngine().edit(entity).remove(component.getClass()); sandbox.getEngine().process(); - HyperLap2DFacade.getInstance().sendNotification(DONE, entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(DONE, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); Sandbox.getInstance().getSceneControl().sceneLoader.getRenderer().removeSpecialEntity(entity); } @@ -45,8 +45,8 @@ public class RemoveComponentFromItemCommand extends EntityModifyRevertibleComman ComponentCloner.set(newComponent, component); } - HyperLap2DFacade.getInstance().sendNotification(DONE, entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(DONE, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object[] payload(int entity, Class componentClass) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/RenameLibraryActionCommand.java b/src/main/java/games/rednblack/editor/controller/commands/RenameLibraryActionCommand.java index 43159606..2bc61823 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/RenameLibraryActionCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/RenameLibraryActionCommand.java @@ -4,7 +4,7 @@ import com.kotcrab.vis.ui.util.dialog.Dialogs; import com.kotcrab.vis.ui.util.dialog.InputDialogAdapter; import games.rednblack.editor.controller.SandboxCommand; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; public class RenameLibraryActionCommand extends SandboxCommand { private static final String CLASS_NAME = "games.rednblack.editor.controller.commands.resource.RenameActionCommand"; diff --git a/src/main/java/games/rednblack/editor/controller/commands/RevertibleCommand.java b/src/main/java/games/rednblack/editor/controller/commands/RevertibleCommand.java index 41d97c52..19f072c2 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/RevertibleCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/RevertibleCommand.java @@ -20,7 +20,8 @@ package games.rednblack.editor.controller.commands; import games.rednblack.editor.controller.SandboxCommand; import games.rednblack.editor.proxy.CommandManager; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Notification; +import games.rednblack.puremvc.interfaces.INotification; public abstract class RevertibleCommand extends SandboxCommand { @@ -33,7 +34,7 @@ public abstract class RevertibleCommand extends SandboxCommand { @Override public void execute(INotification notification) { commandManager = facade.retrieveProxy(CommandManager.NAME); - this.notification = notification; + this.notification = ((Notification) notification).copy();; callDoAction(); stateDone = true; if(!isCancelled) commandManager.addCommand(this); diff --git a/src/main/java/games/rednblack/editor/controller/commands/SaveExportPathCommand.java b/src/main/java/games/rednblack/editor/controller/commands/SaveExportPathCommand.java index 14a39e2b..e5fe90c5 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/SaveExportPathCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/SaveExportPathCommand.java @@ -20,7 +20,7 @@ package games.rednblack.editor.controller.commands; import games.rednblack.editor.controller.SandboxCommand; import games.rednblack.editor.proxy.ProjectManager; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; /** * Created by azakhary on 11/12/2015. diff --git a/src/main/java/games/rednblack/editor/controller/commands/ShowNotificationCommand.java b/src/main/java/games/rednblack/editor/controller/commands/ShowNotificationCommand.java index 01e7e013..e8d7bdb1 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/ShowNotificationCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/ShowNotificationCommand.java @@ -3,7 +3,7 @@ package games.rednblack.editor.controller.commands; import com.kotcrab.vis.ui.widget.toast.MessageToast; import games.rednblack.editor.controller.SandboxCommand; import games.rednblack.h2d.common.HyperLog; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; public class ShowNotificationCommand extends SandboxCommand { private static final String CLASS_NAME = "games.rednblack.editor.controller.commands.ShowNotificationCommand"; diff --git a/src/main/java/games/rednblack/editor/controller/commands/TransactiveCommand.java b/src/main/java/games/rednblack/editor/controller/commands/TransactiveCommand.java index f6ee5cb6..eaefd4d8 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/TransactiveCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/TransactiveCommand.java @@ -1,7 +1,7 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.utils.Array; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; /** * Created by CyberJoe on 7/25/2015. diff --git a/src/main/java/games/rednblack/editor/controller/commands/UpdateEntityComponentsCommand.java b/src/main/java/games/rednblack/editor/controller/commands/UpdateEntityComponentsCommand.java index 1d268bef..6b77d7b4 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/UpdateEntityComponentsCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/UpdateEntityComponentsCommand.java @@ -20,11 +20,11 @@ package games.rednblack.editor.controller.commands; import com.artemis.Component; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.utils.runtime.ComponentCloner; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 6/3/2015. @@ -53,7 +53,7 @@ public class UpdateEntityComponentsCommand extends EntityModifyRevertibleCommand EntityUtils.refreshComponents(entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override diff --git a/src/main/java/games/rednblack/editor/controller/commands/UpdatePolygonDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/UpdatePolygonDataCommand.java index c27ec0f3..e9b9b114 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/UpdatePolygonDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/UpdatePolygonDataCommand.java @@ -2,12 +2,12 @@ package games.rednblack.editor.controller.commands; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.shape.PolygonShapeComponent; import games.rednblack.editor.utils.poly.PolygonUtils; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class UpdatePolygonDataCommand extends EntityModifyRevertibleCommand { @@ -29,7 +29,7 @@ public class UpdatePolygonDataCommand extends EntityModifyRevertibleCommand { checkPolygon(polygonShapeComponent); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -41,7 +41,7 @@ public class UpdatePolygonDataCommand extends EntityModifyRevertibleCommand { checkPolygon(polygonShapeComponent); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } private void checkPolygon(PolygonShapeComponent polygonShapeComponent) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceRegionCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceRegionCommand.java index d7294a4a..18086a96 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceRegionCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceRegionCommand.java @@ -1,7 +1,6 @@ package games.rednblack.editor.controller.commands.component; import com.badlogic.gdx.graphics.g2d.TextureRegion; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.TextureRegionComponent; @@ -11,6 +10,7 @@ import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class ReplaceRegionCommand extends EntityModifyRevertibleCommand { @@ -44,7 +44,7 @@ public class ReplaceRegionCommand extends EntityModifyRevertibleCommand { transformComponent.originX = size.width / 2; transformComponent.originY = size.height / 2; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -65,6 +65,6 @@ public class ReplaceRegionCommand extends EntityModifyRevertibleCommand { transformComponent.originX = size.width / 2; transformComponent.originY = size.height / 2; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } } diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceSpineCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceSpineCommand.java index 102ed299..e3475454 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceSpineCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceSpineCommand.java @@ -1,7 +1,6 @@ package games.rednblack.editor.controller.commands.component; import com.esotericsoftware.spine.*; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.TransformComponent; @@ -9,6 +8,7 @@ import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.extension.spine.SpineComponent; +import games.rednblack.puremvc.Facade; public class ReplaceSpineCommand extends EntityModifyRevertibleCommand { @@ -55,7 +55,7 @@ public class ReplaceSpineCommand extends EntityModifyRevertibleCommand { spineComponent.currentAnimationName = currentAnimName; spineComponent.setAnimation(currentAnimName); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -85,6 +85,6 @@ public class ReplaceSpineCommand extends EntityModifyRevertibleCommand { spineComponent.currentAnimationName = currentAnimName; spineComponent.setAnimation(currentAnimName); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } } diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceSpriteAnimationCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceSpriteAnimationCommand.java index ecef60b4..714d65a8 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceSpriteAnimationCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/ReplaceSpriteAnimationCommand.java @@ -3,7 +3,6 @@ package games.rednblack.editor.controller.commands.component; import com.badlogic.gdx.graphics.g2d.Animation; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.TextureRegionComponent; @@ -16,6 +15,7 @@ import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class ReplaceSpriteAnimationCommand extends EntityModifyRevertibleCommand { @@ -61,7 +61,7 @@ public class ReplaceSpriteAnimationCommand extends EntityModifyRevertibleCommand transformComponent.originX = size.width / 2; transformComponent.originY = size.height / 2; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -94,6 +94,6 @@ public class ReplaceSpriteAnimationCommand extends EntityModifyRevertibleCommand transformComponent.originX = size.width / 2; transformComponent.originY = size.height / 2; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } } diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateCircleShapeCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateCircleShapeCommand.java index 5c30611d..659484cd 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateCircleShapeCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateCircleShapeCommand.java @@ -1,12 +1,12 @@ package games.rednblack.editor.controller.commands.component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.shape.CircleShapeComponent; import games.rednblack.editor.renderer.components.physics.PhysicsBodyComponent; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class UpdateCircleShapeCommand extends EntityModifyRevertibleCommand { private int entityId; @@ -29,7 +29,7 @@ public class UpdateCircleShapeCommand extends EntityModifyRevertibleCommand { if (physicsBodyComponent != null) physicsBodyComponent.scheduleRefresh(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -43,7 +43,7 @@ public class UpdateCircleShapeCommand extends EntityModifyRevertibleCommand { if (physicsBodyComponent != null) physicsBodyComponent.scheduleRefresh(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object payload(int entity, float radius) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateCompositeDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateCompositeDataCommand.java index 27ac9a09..701f1f5a 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateCompositeDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateCompositeDataCommand.java @@ -1,6 +1,5 @@ package games.rednblack.editor.controller.commands.component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.CompositeTransformComponent; import games.rednblack.editor.renderer.components.MainItemComponent; @@ -8,6 +7,7 @@ import games.rednblack.editor.renderer.data.CompositeItemVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class UpdateCompositeDataCommand extends EntityModifyRevertibleCommand { private Integer entityId; @@ -28,7 +28,7 @@ public class UpdateCompositeDataCommand extends EntityModifyRevertibleCommand { transformComponent.scissorsEnabled = vo.scissorsEnabled; transformComponent.renderToFBO = vo.renderToFBO; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); if (!transformComponent.renderToFBO) { String tag = SandboxComponentRetriever.get(entity, MainItemComponent.class).itemIdentifier; @@ -45,7 +45,7 @@ public class UpdateCompositeDataCommand extends EntityModifyRevertibleCommand { transformComponent.scissorsEnabled = backup.scissorsEnabled; transformComponent.renderToFBO = backup.renderToFBO; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); if (!transformComponent.renderToFBO) { String tag = SandboxComponentRetriever.get(entity, MainItemComponent.class).itemIdentifier; diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateImageItemDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateImageItemDataCommand.java index 520b3338..46c82d59 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateImageItemDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateImageItemDataCommand.java @@ -1,6 +1,5 @@ package games.rednblack.editor.controller.commands.component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.TextureRegionComponent; @@ -8,6 +7,7 @@ import games.rednblack.editor.renderer.data.SimpleImageVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class UpdateImageItemDataCommand extends EntityModifyRevertibleCommand { @@ -31,7 +31,7 @@ public class UpdateImageItemDataCommand extends EntityModifyRevertibleCommand { updateEntity(entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -44,7 +44,7 @@ public class UpdateImageItemDataCommand extends EntityModifyRevertibleCommand { updateEntity(entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } private void updateEntity(int entity) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateLightBodyDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateLightBodyDataCommand.java index 0d7c0551..a74b92ac 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateLightBodyDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateLightBodyDataCommand.java @@ -1,12 +1,12 @@ package games.rednblack.editor.controller.commands.component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.light.LightBodyComponent; import games.rednblack.editor.renderer.data.LightBodyDataVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class UpdateLightBodyDataCommand extends EntityModifyRevertibleCommand { @@ -43,7 +43,7 @@ public class UpdateLightBodyDataCommand extends EntityModifyRevertibleCommand { lightComponent.scheduleRefresh(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -69,7 +69,7 @@ public class UpdateLightBodyDataCommand extends EntityModifyRevertibleCommand { lightComponent.scheduleRefresh(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object payload(int entity, LightBodyDataVO vo) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateLightDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateLightDataCommand.java index 2a9f6230..c71c6bfd 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateLightDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateLightDataCommand.java @@ -18,13 +18,13 @@ package games.rednblack.editor.controller.commands.component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.light.LightObjectComponent; import games.rednblack.editor.renderer.data.LightVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class UpdateLightDataCommand extends EntityModifyRevertibleCommand { @@ -56,7 +56,7 @@ public class UpdateLightDataCommand extends EntityModifyRevertibleCommand { lightObjectComponent.isSoft = vo.isSoft; lightObjectComponent.isActive = vo.isActive; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -77,7 +77,7 @@ public class UpdateLightDataCommand extends EntityModifyRevertibleCommand { lightObjectComponent.isActive = backup.isActive; lightObjectComponent.isSoft = backup.isSoft; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object payload(int entity, LightVO vo) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateParticleDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateParticleDataCommand.java index f142b7e0..ce9966d5 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateParticleDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateParticleDataCommand.java @@ -1,12 +1,12 @@ package games.rednblack.editor.controller.commands.component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.particle.ParticleComponent; import games.rednblack.editor.renderer.data.ParticleEffectVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class UpdateParticleDataCommand extends EntityModifyRevertibleCommand { @@ -29,7 +29,7 @@ public class UpdateParticleDataCommand extends EntityModifyRevertibleCommand { particleComponent.particleEffect.setPosition(0, 0); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -40,7 +40,7 @@ public class UpdateParticleDataCommand extends EntityModifyRevertibleCommand { particleComponent.transform = backup.transform; particleComponent.autoStart = backup.autoStart; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object payload(int entity, ParticleEffectVO vo) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdatePhysicsDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdatePhysicsDataCommand.java index cf76ec2d..83908bfa 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdatePhysicsDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdatePhysicsDataCommand.java @@ -1,12 +1,12 @@ package games.rednblack.editor.controller.commands.component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.physics.PhysicsBodyComponent; import games.rednblack.editor.renderer.data.PhysicsBodyDataVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class UpdatePhysicsDataCommand extends EntityModifyRevertibleCommand { @@ -49,7 +49,7 @@ public class UpdatePhysicsDataCommand extends EntityModifyRevertibleCommand { physicsComponent.scheduleRefresh(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -81,7 +81,7 @@ public class UpdatePhysicsDataCommand extends EntityModifyRevertibleCommand { physicsComponent.scheduleRefresh(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object payload(int entity, PhysicsBodyDataVO vo) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdatePolygonVerticesCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdatePolygonVerticesCommand.java index a1a2008e..08d5e075 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdatePolygonVerticesCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdatePolygonVerticesCommand.java @@ -2,13 +2,13 @@ package games.rednblack.editor.controller.commands.component; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.TextureRegionComponent; import games.rednblack.editor.renderer.components.shape.PolygonShapeComponent; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; public class UpdatePolygonVerticesCommand extends EntityModifyRevertibleCommand { @@ -49,7 +49,7 @@ public class UpdatePolygonVerticesCommand extends EntityModifyRevertibleCommand if (textureRegionComponent != null) textureRegionComponent.executeRefresh(entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @@ -68,7 +68,7 @@ public class UpdatePolygonVerticesCommand extends EntityModifyRevertibleCommand if (textureRegionComponent != null) textureRegionComponent.executeRefresh(entity); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object[] payloadInitialState(int entity) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSensorDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSensorDataCommand.java index a65e91cf..dc6b0e23 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSensorDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSensorDataCommand.java @@ -1,12 +1,12 @@ package games.rednblack.editor.controller.commands.component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.physics.SensorComponent; import games.rednblack.editor.renderer.data.SensorDataVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; /** * Update command for the sensor data. @@ -43,7 +43,7 @@ public class UpdateSensorDataCommand extends EntityModifyRevertibleCommand { sensorComponent.rightSpanPercent = vo.rightSpanPercent; sensorComponent.topSpanPercent = vo.topSpanPercent; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -61,7 +61,7 @@ public class UpdateSensorDataCommand extends EntityModifyRevertibleCommand { sensorComponent.rightSpanPercent = backup.rightSpanPercent; sensorComponent.topSpanPercent = backup.topSpanPercent; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object payload(int entity, SensorDataVO vo) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSpineDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSpineDataCommand.java index f0b8020e..4cbde4e3 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSpineDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSpineDataCommand.java @@ -1,12 +1,12 @@ package games.rednblack.editor.controller.commands.component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.h2d.extension.spine.SpineVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.extension.spine.SpineComponent; +import games.rednblack.puremvc.Facade; public class UpdateSpineDataCommand extends EntityModifyRevertibleCommand { @@ -30,7 +30,7 @@ public class UpdateSpineDataCommand extends EntityModifyRevertibleCommand { spineComponent.setAnimation(vo.currentAnimationName); spineComponent.setSkin(vo.currentSkinName); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -43,7 +43,7 @@ public class UpdateSpineDataCommand extends EntityModifyRevertibleCommand { spineComponent.setAnimation(backup.currentAnimationName); spineComponent.setSkin(backup.currentSkinName); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object payload(int entity, SpineVO vo) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSpriteAnimationDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSpriteAnimationDataCommand.java index 6063b27a..acd73b0b 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSpriteAnimationDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateSpriteAnimationDataCommand.java @@ -1,13 +1,13 @@ package games.rednblack.editor.controller.commands.component; import com.badlogic.gdx.graphics.g2d.Animation; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.editor.renderer.components.sprite.SpriteAnimationComponent; import games.rednblack.editor.renderer.components.sprite.SpriteAnimationStateComponent; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; /** * Created by CyberJoe on 6/18/2015. @@ -41,7 +41,7 @@ public class UpdateSpriteAnimationDataCommand extends EntityModifyRevertibleComm spriteAnimationComponent.playMode = playMode; spriteAnimationStateComponent.set(spriteAnimationComponent); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -55,7 +55,7 @@ public class UpdateSpriteAnimationDataCommand extends EntityModifyRevertibleComm spriteAnimationComponent.playMode = previousPlayMode; spriteAnimationStateComponent.set(spriteAnimationComponent); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object payload(int entity, int fps, String animName, Animation.PlayMode playMode) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateTalosDataCommand.java b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateTalosDataCommand.java index 4160f845..e1c3e7a1 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/component/UpdateTalosDataCommand.java +++ b/src/main/java/games/rednblack/editor/controller/commands/component/UpdateTalosDataCommand.java @@ -1,12 +1,12 @@ package games.rednblack.editor.controller.commands.component; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.EntityModifyRevertibleCommand; import games.rednblack.h2d.extension.talos.TalosVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.extension.talos.TalosComponent; +import games.rednblack.puremvc.Facade; public class UpdateTalosDataCommand extends EntityModifyRevertibleCommand { @@ -27,7 +27,7 @@ public class UpdateTalosDataCommand extends EntityModifyRevertibleCommand { talosComponent.transform = vo.transform; talosComponent.effect.setPosition(0, 0); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @Override @@ -38,7 +38,7 @@ public class UpdateTalosDataCommand extends EntityModifyRevertibleCommand { talosComponent.effect.setPosition(0, 0); talosComponent.transform = backup.transform; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } public static Object payload(int entity, TalosVO vo) { diff --git a/src/main/java/games/rednblack/editor/controller/commands/resource/DuplicateLibraryAction.java b/src/main/java/games/rednblack/editor/controller/commands/resource/DuplicateLibraryAction.java index 557a611b..cea9acff 100644 --- a/src/main/java/games/rednblack/editor/controller/commands/resource/DuplicateLibraryAction.java +++ b/src/main/java/games/rednblack/editor/controller/commands/resource/DuplicateLibraryAction.java @@ -3,7 +3,6 @@ package games.rednblack.editor.controller.commands.resource; import com.badlogic.gdx.utils.Json; import com.kotcrab.vis.ui.util.dialog.Dialogs; import com.kotcrab.vis.ui.util.dialog.InputDialogListener; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.AddToLibraryAction; import games.rednblack.editor.controller.commands.NonRevertibleCommand; import games.rednblack.editor.proxy.ProjectManager; @@ -12,6 +11,7 @@ import games.rednblack.editor.renderer.utils.HyperJson; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.ui.validator.StringNameValidator; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import java.util.HashMap; @@ -25,7 +25,7 @@ public class DuplicateLibraryAction extends NonRevertibleCommand { public void doAction() { String libraryActionName = notification.getBody(); - ProjectManager projectManager = HyperLap2DFacade.getInstance().retrieveProxy(ProjectManager.NAME); + ProjectManager projectManager = Facade.getInstance().retrieveProxy(ProjectManager.NAME); HashMap libraryActions = projectManager.currentProjectInfoVO.libraryActions; GraphVO actionToDuplicate = libraryActions.get(libraryActionName); @@ -41,7 +41,7 @@ public class DuplicateLibraryAction extends NonRevertibleCommand { GraphVO duplicated = json.fromJson(GraphVO.class, json.toJson(actionToDuplicate)); Object[] payload = AddToLibraryAction.getPayload(input, duplicated); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_ADD_TO_LIBRARY_ACTION, payload); + Facade.getInstance().sendNotification(MsgAPI.ACTION_ADD_TO_LIBRARY_ACTION, payload); } @Override diff --git a/src/main/java/games/rednblack/editor/data/migrations/migrators/VersionMigTo005.java b/src/main/java/games/rednblack/editor/data/migrations/migrators/VersionMigTo005.java index 45a31b68..9b222481 100644 --- a/src/main/java/games/rednblack/editor/data/migrations/migrators/VersionMigTo005.java +++ b/src/main/java/games/rednblack/editor/data/migrations/migrators/VersionMigTo005.java @@ -23,11 +23,11 @@ import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Json; import com.badlogic.gdx.utils.JsonReader; import com.badlogic.gdx.utils.JsonWriter; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.data.migrations.IVersionMigrator; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.renderer.data.ProjectInfoVO; import games.rednblack.h2d.common.vo.ProjectVO; +import games.rednblack.puremvc.Facade; import org.apache.commons.io.FileUtils; import java.io.File; @@ -42,12 +42,12 @@ public class VersionMigTo005 implements IVersionMigrator { private Json json = new Json(); private JsonReader jsonReader = new JsonReader(); - private HyperLap2DFacade facade; + private Facade facade; private ProjectManager projectManager; @Override public void setProject(String path, ProjectVO vo, ProjectInfoVO projectInfoVO) { - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); projectManager = facade.retrieveProxy(ProjectManager.NAME); projectPath = path; json.setOutputType(JsonWriter.OutputType.json); diff --git a/src/main/java/games/rednblack/editor/data/migrations/migrators/VersionMigTo009.java b/src/main/java/games/rednblack/editor/data/migrations/migrators/VersionMigTo009.java index 8883c46c..8161363a 100644 --- a/src/main/java/games/rednblack/editor/data/migrations/migrators/VersionMigTo009.java +++ b/src/main/java/games/rednblack/editor/data/migrations/migrators/VersionMigTo009.java @@ -24,11 +24,11 @@ import com.badlogic.gdx.utils.Json; import com.badlogic.gdx.utils.JsonReader; import com.badlogic.gdx.utils.JsonValue; import com.badlogic.gdx.utils.JsonWriter; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.data.migrations.IVersionMigrator; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.renderer.data.ProjectInfoVO; import games.rednblack.h2d.common.vo.ProjectVO; +import games.rednblack.puremvc.Facade; import org.apache.commons.io.FileUtils; import java.io.File; @@ -44,12 +44,12 @@ public class VersionMigTo009 implements IVersionMigrator { private Json json = new Json(); private JsonReader jsonReader = new JsonReader(); - private HyperLap2DFacade facade; + private Facade facade; private ProjectManager projectManager; @Override public void setProject(String path, ProjectVO vo, ProjectInfoVO projectInfoVO) { - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); projectManager = facade.retrieveProxy(ProjectManager.NAME); projectPath = path; json.setOutputType(JsonWriter.OutputType.json); diff --git a/src/main/java/games/rednblack/editor/event/ButtonToNotificationListener.java b/src/main/java/games/rednblack/editor/event/ButtonToNotificationListener.java index b62a1ba3..366bd57f 100644 --- a/src/main/java/games/rednblack/editor/event/ButtonToNotificationListener.java +++ b/src/main/java/games/rednblack/editor/event/ButtonToNotificationListener.java @@ -2,7 +2,7 @@ package games.rednblack.editor.event; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; -import games.rednblack.editor.HyperLap2DFacade; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 7/2/2015. @@ -23,6 +23,6 @@ public class ButtonToNotificationListener extends ClickListener{ public void touchUp(InputEvent event, float x, float y, int pointer, int button) { super.touchUp(event, x, y, pointer, button); - HyperLap2DFacade.getInstance().sendNotification(notificationName, payload); + Facade.getInstance().sendNotification(notificationName, payload); } } diff --git a/src/main/java/games/rednblack/editor/event/CheckBoxChangeListener.java b/src/main/java/games/rednblack/editor/event/CheckBoxChangeListener.java index c8d18fff..4cfdb746 100644 --- a/src/main/java/games/rednblack/editor/event/CheckBoxChangeListener.java +++ b/src/main/java/games/rednblack/editor/event/CheckBoxChangeListener.java @@ -21,7 +21,7 @@ package games.rednblack.editor.event; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.kotcrab.vis.ui.widget.VisCheckBox; -import games.rednblack.editor.HyperLap2DFacade; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 4/16/2015. @@ -41,7 +41,7 @@ public class CheckBoxChangeListener extends ChangeListener { @Override public void changed(ChangeEvent changeEvent, Actor actor) { - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); facade.sendNotification(eventName, ((VisCheckBox) actor).isChecked(), type); } } \ No newline at end of file diff --git a/src/main/java/games/rednblack/editor/event/ClickNotifier.java b/src/main/java/games/rednblack/editor/event/ClickNotifier.java index b774bf3e..c52c23ec 100644 --- a/src/main/java/games/rednblack/editor/event/ClickNotifier.java +++ b/src/main/java/games/rednblack/editor/event/ClickNotifier.java @@ -20,7 +20,7 @@ package games.rednblack.editor.event; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; -import games.rednblack.editor.HyperLap2DFacade; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 4/29/2015. @@ -35,7 +35,7 @@ public class ClickNotifier extends ClickListener { @Override public void clicked(InputEvent event, float x, float y) { - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); facade.sendNotification(eventName); } } diff --git a/src/main/java/games/rednblack/editor/event/EditableSelectBoxChangeListener.java b/src/main/java/games/rednblack/editor/event/EditableSelectBoxChangeListener.java index 13451454..a33b29fc 100644 --- a/src/main/java/games/rednblack/editor/event/EditableSelectBoxChangeListener.java +++ b/src/main/java/games/rednblack/editor/event/EditableSelectBoxChangeListener.java @@ -20,8 +20,8 @@ package games.rednblack.editor.event; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.ui.widget.EditableSelectBox; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 4/30/2015. @@ -38,7 +38,7 @@ public class EditableSelectBoxChangeListener extends ChangeListener { @Override public void changed(ChangeEvent changeEvent, Actor actor) { - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); String selected = ((EditableSelectBox) actor).getSelected(); if(!lastSelected.equals(selected)) { lastSelected = selected; diff --git a/src/main/java/games/rednblack/editor/event/KeyboardListener.java b/src/main/java/games/rednblack/editor/event/KeyboardListener.java index 635ada7e..9cb8c55b 100644 --- a/src/main/java/games/rednblack/editor/event/KeyboardListener.java +++ b/src/main/java/games/rednblack/editor/event/KeyboardListener.java @@ -24,7 +24,7 @@ import com.badlogic.gdx.scenes.scene2d.EventListener; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.utils.FocusListener; import com.kotcrab.vis.ui.widget.VisTextField; -import games.rednblack.editor.HyperLap2DFacade; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 4/15/2015. @@ -98,7 +98,7 @@ public class KeyboardListener implements EventListener { lastValue = target.getText(); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); facade.sendNotification(eventName, target.getText()); } } \ No newline at end of file diff --git a/src/main/java/games/rednblack/editor/event/MenuItemListener.java b/src/main/java/games/rednblack/editor/event/MenuItemListener.java index f11a0a5f..d964005c 100644 --- a/src/main/java/games/rednblack/editor/event/MenuItemListener.java +++ b/src/main/java/games/rednblack/editor/event/MenuItemListener.java @@ -2,7 +2,7 @@ package games.rednblack.editor.event; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; -import games.rednblack.editor.HyperLap2DFacade; +import games.rednblack.puremvc.Facade; /** * Created by CyberJoe on 4/21/2015. @@ -14,7 +14,7 @@ public class MenuItemListener extends ChangeListener { private final String menuType; private final Object data; - private HyperLap2DFacade facade; + private final Facade facade; public MenuItemListener(String menuCommand) { this(menuCommand, null, null); @@ -29,7 +29,7 @@ public class MenuItemListener extends ChangeListener { this.data = data; this.menuType = menuType; - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); } @Override diff --git a/src/main/java/games/rednblack/editor/event/NumberSelectorOverlapListener.java b/src/main/java/games/rednblack/editor/event/NumberSelectorOverlapListener.java index 2d1a4652..bc21f325 100644 --- a/src/main/java/games/rednblack/editor/event/NumberSelectorOverlapListener.java +++ b/src/main/java/games/rednblack/editor/event/NumberSelectorOverlapListener.java @@ -21,7 +21,7 @@ package games.rednblack.editor.event; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.kotcrab.vis.ui.widget.spinner.Spinner; -import games.rednblack.editor.HyperLap2DFacade; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 6/12/2015. @@ -36,7 +36,7 @@ public class NumberSelectorOverlapListener extends ChangeListener { @Override public void changed(ChangeEvent event, Actor actor) { - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); facade.sendNotification(eventName, ((Spinner)actor).getTextField().getText()); } } diff --git a/src/main/java/games/rednblack/editor/event/SelectBoxChangeListener.java b/src/main/java/games/rednblack/editor/event/SelectBoxChangeListener.java index 94ad52e6..85ae3b77 100644 --- a/src/main/java/games/rednblack/editor/event/SelectBoxChangeListener.java +++ b/src/main/java/games/rednblack/editor/event/SelectBoxChangeListener.java @@ -21,7 +21,7 @@ package games.rednblack.editor.event; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.kotcrab.vis.ui.widget.VisSelectBox; -import games.rednblack.editor.HyperLap2DFacade; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 4/16/2015. @@ -38,7 +38,7 @@ public class SelectBoxChangeListener extends ChangeListener { @Override public void changed(ChangeEvent changeEvent, Actor actor) { - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); String selected = (String) ((VisSelectBox) actor).getSelected(); if(!lastSelected.equals(selected)) { lastSelected = selected; diff --git a/src/main/java/games/rednblack/editor/factory/ItemFactory.java b/src/main/java/games/rednblack/editor/factory/ItemFactory.java index eadc8fb0..bf3060d8 100644 --- a/src/main/java/games/rednblack/editor/factory/ItemFactory.java +++ b/src/main/java/games/rednblack/editor/factory/ItemFactory.java @@ -3,8 +3,6 @@ package games.rednblack.editor.factory; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Pools; -import games.rednblack.editor.HyperLap2DFacade; -import games.rednblack.editor.controller.commands.PasteItemsCommand; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.ResourceManager; import games.rednblack.editor.renderer.SceneLoader; @@ -21,6 +19,7 @@ import games.rednblack.h2d.common.factory.IFactory; import games.rednblack.h2d.extension.spine.SpineItemType; import games.rednblack.h2d.extension.talos.TalosItemType; import games.rednblack.h2d.extension.tinyvg.TinyVGItemType; +import games.rednblack.puremvc.Facade; import java.util.HashMap; @@ -48,7 +47,7 @@ public class ItemFactory implements IFactory { } private boolean setEssentialData(MainItemVO vo, Vector2 position) { - UILayerBoxMediator layerBoxMediator = HyperLap2DFacade.getInstance().retrieveMediator(UILayerBoxMediator.NAME); + UILayerBoxMediator layerBoxMediator = Facade.getInstance().retrieveMediator(UILayerBoxMediator.NAME); String layerName = layerBoxMediator.getCurrentSelectedLayerName(); if(layerName == null) return false; @@ -66,7 +65,7 @@ public class ItemFactory implements IFactory { } private boolean setEssentialData(ComponentFactory.InitialData vo, Vector2 position) { - UILayerBoxMediator layerBoxMediator = HyperLap2DFacade.getInstance().retrieveMediator(UILayerBoxMediator.NAME); + UILayerBoxMediator layerBoxMediator = Facade.getInstance().retrieveMediator(UILayerBoxMediator.NAME); String layerName = layerBoxMediator.getCurrentSelectedLayerName(); if(layerName == null) return false; @@ -94,7 +93,7 @@ public class ItemFactory implements IFactory { data.data = regionName; createdEntity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), EntityFactory.IMAGE_TYPE, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); Pools.free(data); return true; @@ -114,7 +113,7 @@ public class ItemFactory implements IFactory { data.data = regionName; createdEntity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), EntityFactory.NINE_PATCH, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); Pools.free(data); return true; @@ -130,7 +129,7 @@ public class ItemFactory implements IFactory { data.data = animationName; createdEntity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), EntityFactory.SPRITE_TYPE, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); Pools.free(data); return true; @@ -146,7 +145,7 @@ public class ItemFactory implements IFactory { data.data = animationName; createdEntity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), SpineItemType.SPINE_TYPE, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); Pools.free(data); return true; @@ -163,14 +162,14 @@ public class ItemFactory implements IFactory { params[0] = shape.clone().vertices; params[1] = shape.clone().polygonizedVertices; createdEntity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), EntityFactory.COLOR_PRIMITIVE, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); Pools.free(data); return true; } @Override public boolean createItemFromLibrary(String libraryName, Vector2 position) { - ProjectManager projectManager = HyperLap2DFacade.getInstance().retrieveProxy(ProjectManager.NAME); + ProjectManager projectManager = Facade.getInstance().retrieveProxy(ProjectManager.NAME); HashMap libraryItems = projectManager.currentProjectInfoVO.libraryItems; CompositeItemVO itemVO = libraryItems.get(libraryName); @@ -183,7 +182,7 @@ public class ItemFactory implements IFactory { MainItemComponent mainItemComponent = SandboxComponentRetriever.get(createdEntity, MainItemComponent.class); mainItemComponent.libraryLink = libraryName; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, createdEntity); return true; } @@ -213,7 +212,7 @@ public class ItemFactory implements IFactory { int entity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), EntityFactory.LIGHT_TYPE, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity); Pools.free(data); return entity; @@ -233,7 +232,7 @@ public class ItemFactory implements IFactory { data.data = name; int entity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), TinyVGItemType.TINYVG_TYPE, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity); Pools.free(data); return entity; } @@ -252,7 +251,7 @@ public class ItemFactory implements IFactory { data.data = particleName; int entity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), EntityFactory.PARTICLE_TYPE, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity); Pools.free(data); return entity; } @@ -271,7 +270,7 @@ public class ItemFactory implements IFactory { data.data = particleName; int entity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), TalosItemType.TALOS_TYPE, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity); Pools.free(data); return entity; @@ -283,7 +282,7 @@ public class ItemFactory implements IFactory { Pools.free(data); return -1; } - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); ResourceManager resourceManager = facade.retrieveProxy(ResourceManager.NAME); resourceManager.prepareEmbeddingFont(textSettings.getFontFamily(), textSettings.getFontSize(), false); @@ -298,7 +297,7 @@ public class ItemFactory implements IFactory { int entity = entityFactory.createEntity(sandbox.getCurrentViewingEntity(), EntityFactory.LABEL_TYPE, data); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CREATE_ITEM, entity); Pools.free(data); return entity; } diff --git a/src/main/java/games/rednblack/editor/live/LivePreviewScreen.java b/src/main/java/games/rednblack/editor/live/LivePreviewScreen.java index ba46d285..013a4cb8 100644 --- a/src/main/java/games/rednblack/editor/live/LivePreviewScreen.java +++ b/src/main/java/games/rednblack/editor/live/LivePreviewScreen.java @@ -11,7 +11,6 @@ import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer; import com.badlogic.gdx.utils.viewport.ExtendViewport; import com.badlogic.gdx.utils.viewport.Viewport; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.ResolutionManager; import games.rednblack.editor.proxy.ResourceManager; @@ -25,7 +24,7 @@ import games.rednblack.h2d.extension.talos.TalosItemType; import games.rednblack.h2d.extension.tinyvg.TinyVGItemType; import games.rednblack.h2d.extension.typinglabel.TypingLabelItemType; import games.rednblack.h2d.extension.spine.SpineItemType; -import org.puremvc.java.interfaces.IFacade; +import games.rednblack.puremvc.Facade; public class LivePreviewScreen extends ScreenAdapter implements GestureDetector.GestureListener { private final Vector3 vec3Zero = new Vector3(0, 0, 0); @@ -37,7 +36,7 @@ public class LivePreviewScreen extends ScreenAdapter implements GestureDetector. private final ProjectManager projectManager; private final Box2DDebugRenderer mBox2DDebugRenderer; - private final IFacade facade = HyperLap2DFacade.getInstance(); + private final Facade facade = Facade.getInstance(); private final Color bgColor; private final OrthographicCamera mCamera; diff --git a/src/main/java/games/rednblack/editor/proxy/CommandManager.java b/src/main/java/games/rednblack/editor/proxy/CommandManager.java index 7169f8b1..27d710ac 100644 --- a/src/main/java/games/rednblack/editor/proxy/CommandManager.java +++ b/src/main/java/games/rednblack/editor/proxy/CommandManager.java @@ -18,11 +18,10 @@ package games.rednblack.editor.proxy; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.HistoricRevertibleCommand; import games.rednblack.editor.controller.commands.RevertibleCommand; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.patterns.proxy.Proxy; +import games.rednblack.puremvc.Proxy; import java.util.ArrayList; @@ -36,13 +35,7 @@ public class CommandManager extends Proxy { final private ArrayList commands = new ArrayList<>(); public CommandManager() { - super(NAME); - } - - @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); + super(NAME, null); } public void addCommand(RevertibleCommand revertibleCommand) { diff --git a/src/main/java/games/rednblack/editor/proxy/FontManager.java b/src/main/java/games/rednblack/editor/proxy/FontManager.java index ce9961bc..8914b2e7 100644 --- a/src/main/java/games/rednblack/editor/proxy/FontManager.java +++ b/src/main/java/games/rednblack/editor/proxy/FontManager.java @@ -4,13 +4,13 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Preferences; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.utils.AppConfig; import games.rednblack.editor.utils.NativeDialogs; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Proxy; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.SystemUtils; -import org.puremvc.java.patterns.proxy.Proxy; import java.awt.*; import java.io.File; @@ -34,13 +34,12 @@ public class FontManager extends Proxy { private HashMap systemFontMap = new HashMap<>(); public FontManager() { - super(NAME); + super(NAME, null); } @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); prefs = Gdx.app.getPreferences(cache_name); generateFontsMap(); } diff --git a/src/main/java/games/rednblack/editor/proxy/PluginManager.java b/src/main/java/games/rednblack/editor/proxy/PluginManager.java index 9f02eee2..098e3587 100644 --- a/src/main/java/games/rednblack/editor/proxy/PluginManager.java +++ b/src/main/java/games/rednblack/editor/proxy/PluginManager.java @@ -23,7 +23,6 @@ import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.utils.Array; import com.kotcrab.vis.ui.widget.VisImageButton; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.PluginItemCommand; import games.rednblack.editor.factory.ItemFactory; import games.rednblack.editor.renderer.SceneLoader; @@ -51,8 +50,8 @@ import games.rednblack.h2d.common.vo.CursorData; import games.rednblack.h2d.common.vo.EditorConfigVO; import games.rednblack.h2d.common.vo.ProjectVO; import games.rednblack.h2d.common.vo.SceneConfigVO; -import org.puremvc.java.interfaces.IFacade; -import org.puremvc.java.patterns.proxy.Proxy; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Proxy; import java.util.*; @@ -69,8 +68,7 @@ public class PluginManager extends Proxy implements PluginAPI { private HashSet pluginEntities; public PluginManager() { - super(NAME); - facade = HyperLap2DFacade.getInstance(); + super(NAME, null); } public H2DPlugin registerPlugin(H2DPlugin plugin) { @@ -135,7 +133,7 @@ public class PluginManager extends Proxy implements PluginAPI { @Override public void removeFollower(int entity) { - FollowersUIMediator followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + FollowersUIMediator followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); followersUIMediator.removeFollower(entity); } @@ -206,7 +204,7 @@ public class PluginManager extends Proxy implements PluginAPI { } @Override - public IFacade getFacade() { + public Facade getFacade() { return facade; } @@ -258,7 +256,7 @@ public class PluginManager extends Proxy implements PluginAPI { @Override public void setCursor(CursorData cursorData, TextureRegion region) { - CursorManager cursorManager = HyperLap2DFacade.getInstance().retrieveProxy(CursorManager.NAME); + CursorManager cursorManager = Facade.getInstance().retrieveProxy(CursorManager.NAME); cursorManager.setCursor(cursorData, region); } diff --git a/src/main/java/games/rednblack/editor/proxy/ProjectManager.java b/src/main/java/games/rednblack/editor/proxy/ProjectManager.java index 5a7d6f7e..798f80a7 100755 --- a/src/main/java/games/rednblack/editor/proxy/ProjectManager.java +++ b/src/main/java/games/rednblack/editor/proxy/ProjectManager.java @@ -27,7 +27,6 @@ import com.badlogic.gdx.tools.texturepacker.TexturePacker.Settings; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Json; import com.kotcrab.vis.ui.util.dialog.Dialogs; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.data.manager.PreferencesManager; import games.rednblack.editor.data.migrations.ProjectVersionMigrator; import games.rednblack.editor.renderer.data.*; @@ -45,6 +44,8 @@ import games.rednblack.h2d.common.ProgressHandler; import games.rednblack.h2d.common.vo.ProjectVO; import games.rednblack.h2d.common.vo.SceneConfigVO; import games.rednblack.h2d.common.vo.TexturePackerVO; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Proxy; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.monitor.FileAlterationListener; @@ -52,7 +53,6 @@ import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver; import org.lwjgl.util.tinyfd.TinyFileDialogs; -import org.puremvc.java.patterns.proxy.Proxy; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; @@ -87,7 +87,7 @@ public class ProjectManager extends Proxy { private String currentProjectPath; public ProjectManager() { - super(NAME); + super(NAME, null); } private ProjectExportSettings projectExportSettings; @@ -98,7 +98,6 @@ public class ProjectManager extends Proxy { @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); projectExportSettings = new ProjectExportSettings(); livePreviewSettings = new LivePreviewSettings(); diff --git a/src/main/java/games/rednblack/editor/proxy/ResolutionManager.java b/src/main/java/games/rednblack/editor/proxy/ResolutionManager.java index da1bd945..a37b6704 100644 --- a/src/main/java/games/rednblack/editor/proxy/ResolutionManager.java +++ b/src/main/java/games/rednblack/editor/proxy/ResolutionManager.java @@ -25,7 +25,6 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectMap; import com.kotcrab.vis.ui.util.dialog.Dialogs; import com.mortennobel.imagescaling.ResampleOp; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.data.ProjectInfoVO; import games.rednblack.editor.renderer.data.ResolutionEntryVO; import games.rednblack.editor.renderer.data.TexturePackVO; @@ -34,9 +33,10 @@ import games.rednblack.editor.utils.NinePatchUtils; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.ProgressHandler; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Proxy; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; -import org.puremvc.java.patterns.proxy.Proxy; import javax.imageio.ImageIO; import java.awt.*; @@ -63,7 +63,7 @@ public class ResolutionManager extends Proxy { private ProgressHandler handler; public ResolutionManager() { - super(NAME); + super(NAME, null); } public static BufferedImage imageResize(File file, float ratio) { @@ -132,7 +132,6 @@ public class ResolutionManager extends Proxy { @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); } public void createNewResolution(ResolutionEntryVO resolutionEntryVO) { @@ -153,7 +152,7 @@ public class ResolutionManager extends Proxy { if (resizeWarnings > 0) { Dialogs.showOKDialog(Sandbox.getInstance().getUIStage(), "Warning", resizeWarnings + " images were not resized for smaller resolutions due to already small size ( < 3px )"); } - HyperLap2DFacade.getInstance().sendNotification(RESOLUTION_LIST_CHANGED); + Facade.getInstance().sendNotification(RESOLUTION_LIST_CHANGED); }); executor.execute(() -> { try { @@ -371,7 +370,7 @@ public class ResolutionManager extends Proxy { ProjectInfoVO projectInfo = projectManager.getCurrentProjectInfoVO(); projectInfo.resolutions.removeValue(resolutionEntryVO, false); - HyperLap2DFacade.getInstance().sendNotification(RESOLUTION_LIST_CHANGED); + Facade.getInstance().sendNotification(RESOLUTION_LIST_CHANGED); projectManager.saveCurrentProject(); projectManager.openProjectAndLoadAllData(projectManager.getCurrentProjectPath(), "orig"); } diff --git a/src/main/java/games/rednblack/editor/proxy/ResourceManager.java b/src/main/java/games/rednblack/editor/proxy/ResourceManager.java index 5df52c42..9b561733 100644 --- a/src/main/java/games/rednblack/editor/proxy/ResourceManager.java +++ b/src/main/java/games/rednblack/editor/proxy/ResourceManager.java @@ -18,7 +18,6 @@ import com.talosvfx.talos.runtime.ParticleEffectDescriptor; import com.talosvfx.talos.runtime.utils.ShaderDescriptor; import com.talosvfx.talos.runtime.utils.VectorField; import dev.lyze.gdxtinyvg.TinyVG; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.data.*; import games.rednblack.editor.renderer.resources.FontSizePair; import games.rednblack.editor.renderer.resources.IResourceRetriever; @@ -33,9 +32,9 @@ import games.rednblack.h2d.extension.talos.ResourceRetrieverAssetProvider; import games.rednblack.h2d.extension.talos.TalosItemType; import games.rednblack.h2d.extension.tinyvg.TinyVGItemType; import games.rednblack.h2d.extension.tinyvg.TinyVGUtils; +import games.rednblack.puremvc.Proxy; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; -import org.puremvc.java.patterns.proxy.Proxy; import java.io.File; import java.io.FileNotFoundException; @@ -72,13 +71,12 @@ public class ResourceManager extends Proxy implements IResourceRetriever { private PixmapPacker fontPacker; public ResourceManager() { - super(NAME); + super(NAME, null); } @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); resolutionManager = facade.retrieveProxy(ResolutionManager.NAME); settingsManager = facade.retrieveProxy(SettingsManager.NAME); diff --git a/src/main/java/games/rednblack/editor/proxy/SceneDataManager.java b/src/main/java/games/rednblack/editor/proxy/SceneDataManager.java index d0bb5146..50fd2daf 100644 --- a/src/main/java/games/rednblack/editor/proxy/SceneDataManager.java +++ b/src/main/java/games/rednblack/editor/proxy/SceneDataManager.java @@ -22,13 +22,12 @@ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Json; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.data.CompositeItemVO; import games.rednblack.editor.renderer.data.MainItemVO; import games.rednblack.editor.renderer.data.SceneVO; import games.rednblack.editor.renderer.utils.HyperJson; +import games.rednblack.puremvc.Proxy; import org.apache.commons.io.FileUtils; -import org.puremvc.java.patterns.proxy.Proxy; import java.io.File; import java.io.IOException; @@ -43,13 +42,7 @@ public class SceneDataManager extends Proxy { public static final String NAME = TAG; public SceneDataManager() { - super(NAME); - } - - @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); + super(NAME, null); } public SceneVO createNewScene(String name) { diff --git a/src/main/java/games/rednblack/editor/proxy/SettingsManager.java b/src/main/java/games/rednblack/editor/proxy/SettingsManager.java index ab349379..3c8958ac 100644 --- a/src/main/java/games/rednblack/editor/proxy/SettingsManager.java +++ b/src/main/java/games/rednblack/editor/proxy/SettingsManager.java @@ -3,15 +3,15 @@ package games.rednblack.editor.proxy; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Json; import games.rednblack.editor.CustomExceptionHandler; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.Main; import games.rednblack.editor.renderer.utils.HyperJson; import games.rednblack.editor.utils.HyperLap2DUtils; import games.rednblack.editor.utils.KeyBindingsLayout; import games.rednblack.h2d.common.vo.EditorConfigVO; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Proxy; import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; -import org.puremvc.java.patterns.proxy.Proxy; import java.io.*; import java.util.List; @@ -29,14 +29,13 @@ public class SettingsManager extends Proxy { public File cacheDir; public SettingsManager() { - super(NAME); + super(NAME, null); initWorkspace(); } @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); KeyBindingsLayout.init(); } diff --git a/src/main/java/games/rednblack/editor/proxy/WindowTitleManager.java b/src/main/java/games/rednblack/editor/proxy/WindowTitleManager.java index 3cca9bb9..b61b0a38 100644 --- a/src/main/java/games/rednblack/editor/proxy/WindowTitleManager.java +++ b/src/main/java/games/rednblack/editor/proxy/WindowTitleManager.java @@ -1,10 +1,9 @@ package games.rednblack.editor.proxy; import com.badlogic.gdx.Gdx; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.ui.UIWindowTitle; import games.rednblack.editor.view.ui.UIWindowTitleMediator; -import org.puremvc.java.patterns.proxy.Proxy; +import games.rednblack.puremvc.Proxy; public class WindowTitleManager extends Proxy { private static final String TAG = WindowTitleManager.class.getCanonicalName(); @@ -13,13 +12,7 @@ public class WindowTitleManager extends Proxy { private String currentWindowTitle = ""; public WindowTitleManager() { - super(NAME); - } - - @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); + super(NAME, null); } public void setWindowTitle(String title) { diff --git a/src/main/java/games/rednblack/editor/splash/SplashMediator.java b/src/main/java/games/rednblack/editor/splash/SplashMediator.java index 088667d8..0cd1c1e9 100644 --- a/src/main/java/games/rednblack/editor/splash/SplashMediator.java +++ b/src/main/java/games/rednblack/editor/splash/SplashMediator.java @@ -3,15 +3,15 @@ package games.rednblack.editor.splash; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.utils.Json; import games.rednblack.editor.HyperLap2DApp; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.utils.Version; import games.rednblack.editor.utils.AppConfig; import games.rednblack.h2d.common.network.HttpDownloadUtility; import games.rednblack.h2d.common.network.model.GithubReleaseData; import games.rednblack.h2d.common.network.model.SnapshotReleaseData; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import org.lwjgl.util.tinyfd.TinyFileDialogs; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -26,17 +26,9 @@ public class SplashMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - SplashScreenAdapter.UPDATE_SPLASH, - SplashScreenAdapter.CLOSE_SPLASH - }; + public void listNotificationInterests(Interests interests) { + interests.add(SplashScreenAdapter.UPDATE_SPLASH, + SplashScreenAdapter.CLOSE_SPLASH); } @Override diff --git a/src/main/java/games/rednblack/editor/utils/AssetIOManager.java b/src/main/java/games/rednblack/editor/utils/AssetIOManager.java index 88d501d4..1892fd92 100644 --- a/src/main/java/games/rednblack/editor/utils/AssetIOManager.java +++ b/src/main/java/games/rednblack/editor/utils/AssetIOManager.java @@ -4,7 +4,6 @@ import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectMap; import com.kotcrab.vis.ui.util.dialog.Dialogs; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.SettingsManager; import games.rednblack.editor.renderer.data.*; import games.rednblack.editor.utils.asset.Asset; @@ -17,6 +16,7 @@ import games.rednblack.h2d.common.vo.ExportMapperVO; import games.rednblack.h2d.extension.spine.SpineVO; import games.rednblack.h2d.extension.talos.TalosVO; import games.rednblack.h2d.extension.tinyvg.TinyVGVO; +import games.rednblack.puremvc.Facade; import java.io.File; import java.io.IOException; @@ -102,7 +102,7 @@ public class AssetIOManager { } private void initImportUI(int type, Array files) { - SettingsManager settingsManager = HyperLap2DFacade.getInstance().retrieveProxy(SettingsManager.NAME); + SettingsManager settingsManager = Facade.getInstance().retrieveProxy(SettingsManager.NAME); settingsManager.setLastImportedPath(files.get(0).parent().path()); int count = (type != AssetsUtils.TYPE_ANIMATION_PNG_SEQUENCE) ? files.size : 1; diff --git a/src/main/java/games/rednblack/editor/utils/HyperLap2DUtils.java b/src/main/java/games/rednblack/editor/utils/HyperLap2DUtils.java index bd5a0760..ae99c76e 100644 --- a/src/main/java/games/rednblack/editor/utils/HyperLap2DUtils.java +++ b/src/main/java/games/rednblack/editor/utils/HyperLap2DUtils.java @@ -5,9 +5,9 @@ import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputListener; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.ui.UIWindowTitle; import games.rednblack.editor.view.ui.UIWindowTitleMediator; +import games.rednblack.puremvc.Facade; import org.apache.commons.io.filefilter.SuffixFileFilter; import org.apache.commons.lang3.SystemUtils; import org.lwjgl.BufferUtils; @@ -228,7 +228,7 @@ public class HyperLap2DUtils { } //Test if the pointer is in Title Bar - UIWindowTitleMediator uiWindowTitleMediator = HyperLap2DFacade.getInstance().retrieveMediator(UIWindowTitleMediator.NAME); + UIWindowTitleMediator uiWindowTitleMediator = Facade.getInstance().retrieveMediator(UIWindowTitleMediator.NAME); UIWindowTitle uiWindowTitle = uiWindowTitleMediator.getViewComponent(); int glfwX = getX(); diff --git a/src/main/java/games/rednblack/editor/utils/KeyBindingsLayout.java b/src/main/java/games/rednblack/editor/utils/KeyBindingsLayout.java index 9e558727..e85524aa 100644 --- a/src/main/java/games/rednblack/editor/utils/KeyBindingsLayout.java +++ b/src/main/java/games/rednblack/editor/utils/KeyBindingsLayout.java @@ -5,8 +5,8 @@ import com.badlogic.gdx.Input; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Json; import com.badlogic.gdx.utils.ObjectMap; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.SettingsManager; +import games.rednblack.puremvc.Facade; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.SystemUtils; @@ -108,7 +108,7 @@ public class KeyBindingsLayout { private static final Array mapping = new Array<>(); public static void init() { - SettingsManager settingsManager = HyperLap2DFacade.getInstance().retrieveProxy(SettingsManager.NAME); + SettingsManager settingsManager = Facade.getInstance().retrieveProxy(SettingsManager.NAME); if (!settingsManager.editorConfigVO.keyBindingLayout.equals("default")) { String mapPath = HyperLap2DUtils.getKeyMapPath() + File.separator + settingsManager.editorConfigVO.keyBindingLayout + ".keymap"; File mapFile = new File(mapPath); diff --git a/src/main/java/games/rednblack/editor/utils/MoveCommandBuilder.java b/src/main/java/games/rednblack/editor/utils/MoveCommandBuilder.java index c46508cc..58336ce7 100644 --- a/src/main/java/games/rednblack/editor/utils/MoveCommandBuilder.java +++ b/src/main/java/games/rednblack/editor/utils/MoveCommandBuilder.java @@ -20,11 +20,11 @@ package games.rednblack.editor.utils; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.renderer.utils.ComponentRetriever; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 6/5/2015. @@ -59,7 +59,7 @@ public class MoveCommandBuilder { } public void execute() { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_ITEMS_MOVE_TO, payload); + Facade.getInstance().sendNotification(MsgAPI.ACTION_ITEMS_MOVE_TO, payload); } } diff --git a/src/main/java/games/rednblack/editor/utils/ResourceListAdapter.java b/src/main/java/games/rednblack/editor/utils/ResourceListAdapter.java index 84c24e97..04ac58a9 100644 --- a/src/main/java/games/rednblack/editor/utils/ResourceListAdapter.java +++ b/src/main/java/games/rednblack/editor/utils/ResourceListAdapter.java @@ -8,8 +8,8 @@ import com.badlogic.gdx.utils.Scaling; import com.kotcrab.vis.ui.util.adapter.SimpleListAdapter; import com.kotcrab.vis.ui.widget.VisLabel; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ResourceManager; +import games.rednblack.puremvc.Facade; public class ResourceListAdapter extends SimpleListAdapter { public ResourceListAdapter(Array array) { @@ -26,7 +26,7 @@ public class ResourceListAdapter extends SimpleListAdapter { @Override protected VisTable createView(String item) { - ResourceManager rm = HyperLap2DFacade.getInstance().retrieveProxy(ResourceManager.NAME); + ResourceManager rm = Facade.getInstance().retrieveProxy(ResourceManager.NAME); VisTable table = new VisTable(); table.left(); diff --git a/src/main/java/games/rednblack/editor/utils/asset/Asset.java b/src/main/java/games/rednblack/editor/utils/asset/Asset.java index a79a7abe..e3c95c95 100644 --- a/src/main/java/games/rednblack/editor/utils/asset/Asset.java +++ b/src/main/java/games/rednblack/editor/utils/asset/Asset.java @@ -2,7 +2,6 @@ package games.rednblack.editor.utils.asset; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.ResolutionManager; import games.rednblack.editor.proxy.ResourceManager; @@ -11,8 +10,8 @@ import games.rednblack.editor.utils.AssetsUtils; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.ProgressHandler; import games.rednblack.h2d.common.vo.ExportMapperVO; +import games.rednblack.puremvc.Facade; import org.apache.commons.io.FileUtils; -import org.puremvc.java.patterns.facade.Facade; import java.io.File; import java.io.IOException; @@ -33,7 +32,7 @@ public abstract class Asset implements IAsset { protected String currentProjectPath; public Asset() { - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); projectManager = facade.retrieveProxy(ProjectManager.NAME); resolutionManager = facade.retrieveProxy(ResolutionManager.NAME); resourceManager = facade.retrieveProxy(ResourceManager.NAME); diff --git a/src/main/java/games/rednblack/editor/utils/asset/impl/HyperLap2DLibraryAsset.java b/src/main/java/games/rednblack/editor/utils/asset/impl/HyperLap2DLibraryAsset.java index bc7f78ac..9a198060 100644 --- a/src/main/java/games/rednblack/editor/utils/asset/impl/HyperLap2DLibraryAsset.java +++ b/src/main/java/games/rednblack/editor/utils/asset/impl/HyperLap2DLibraryAsset.java @@ -5,7 +5,6 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.GdxRuntimeException; import com.badlogic.gdx.utils.Json; import com.kotcrab.vis.ui.util.dialog.Dialogs; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ResolutionManager; import games.rednblack.editor.renderer.components.MainItemComponent; import games.rednblack.editor.renderer.data.CompositeItemVO; @@ -20,6 +19,7 @@ import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.ProgressHandler; import games.rednblack.h2d.common.vo.ExportMapperVO; +import games.rednblack.puremvc.Facade; import org.apache.commons.io.FileUtils; import java.io.File; @@ -132,7 +132,7 @@ public class HyperLap2DLibraryAsset extends Asset { e.printStackTrace(); } - ResolutionManager resolutionManager = HyperLap2DFacade.getInstance().retrieveProxy(ResolutionManager.NAME); + ResolutionManager resolutionManager = Facade.getInstance().retrieveProxy(ResolutionManager.NAME); resolutionManager.rePackProjectImagesForAllResolutionsSync(); progressHandler.progressChanged(100); diff --git a/src/main/java/games/rednblack/editor/view/HyperLap2DScreen.java b/src/main/java/games/rednblack/editor/view/HyperLap2DScreen.java index 555f380a..4592e6c9 100644 --- a/src/main/java/games/rednblack/editor/view/HyperLap2DScreen.java +++ b/src/main/java/games/rednblack/editor/view/HyperLap2DScreen.java @@ -29,7 +29,6 @@ import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.utils.Align; import games.rednblack.editor.HyperLap2DApp; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.SettingsManager; import games.rednblack.editor.utils.KeyBindingsLayout; @@ -43,6 +42,7 @@ import games.rednblack.editor.view.ui.widget.actors.basic.WhitePixel; import games.rednblack.h2d.common.MenuAPI; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.vo.SceneConfigVO; +import games.rednblack.puremvc.Facade; public class HyperLap2DScreen implements Screen, InputProcessor { private static final String TAG = HyperLap2DScreen.class.getCanonicalName(); @@ -51,7 +51,7 @@ public class HyperLap2DScreen implements Screen, InputProcessor { private com.artemis.World engine; - private final HyperLap2DFacade facade; + private final Facade facade; private Sandbox sandbox; private SandboxBackUI sandboxBackUI; @@ -65,7 +65,7 @@ public class HyperLap2DScreen implements Screen, InputProcessor { private boolean isDrawingBgLogo; public HyperLap2DScreen() { - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); defaultBackgroundColor = new Color(0.15f, 0.15f, 0.15f, 1.0f); SettingsManager settingsManager = facade.retrieveProxy(SettingsManager.NAME); backgroundColor = settingsManager.editorConfigVO.backgroundColor; @@ -105,7 +105,7 @@ public class HyperLap2DScreen implements Screen, InputProcessor { } private void updateCameraPosition() { - ProjectManager projectManager = HyperLap2DFacade.getInstance().retrieveProxy(ProjectManager.NAME); + ProjectManager projectManager = Facade.getInstance().retrieveProxy(ProjectManager.NAME); SceneConfigVO sceneConfigVO = projectManager.getCurrentSceneConfigVO(); if (sceneConfigVO != null) sandbox.getCamera().position.set(sceneConfigVO.cameraPosition[0], sceneConfigVO.cameraPosition[1], 0); diff --git a/src/main/java/games/rednblack/editor/view/HyperLap2DScreenMediator.java b/src/main/java/games/rednblack/editor/view/HyperLap2DScreenMediator.java index f28e74b0..ae2b01d7 100644 --- a/src/main/java/games/rednblack/editor/view/HyperLap2DScreenMediator.java +++ b/src/main/java/games/rednblack/editor/view/HyperLap2DScreenMediator.java @@ -18,15 +18,16 @@ package games.rednblack.editor.view; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.SettingsManager; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.SandboxMediator; import games.rednblack.editor.view.ui.widget.actors.basic.SandboxBackUI; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by sargis on 3/30/15. @@ -40,25 +41,17 @@ public class HyperLap2DScreenMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.CREATE, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.CREATE, MsgAPI.PAUSE, MsgAPI.RESUME, - MsgAPI.RENDER, - MsgAPI.RESIZE, + MsgAPI.RENDER); + interests.add(MsgAPI.RESIZE, MsgAPI.DISPOSE, MsgAPI.SCENE_LOADED, - MsgAPI.SAVE_EDITOR_CONFIG, - MsgAPI.SHOW_BLACK_OVERLAY, - MsgAPI.HIDE_BLACK_OVERLAY - }; + MsgAPI.SAVE_EDITOR_CONFIG); + interests.add(MsgAPI.SHOW_BLACK_OVERLAY, + MsgAPI.HIDE_BLACK_OVERLAY); } @Override @@ -67,8 +60,7 @@ public class HyperLap2DScreenMediator extends Mediator { switch (notification.getName()) { case MsgAPI.CREATE: setViewComponent(new HyperLap2DScreen()); - //TODO this must be changed to Command - facade = HyperLap2DFacade.getInstance(); + //TODO this must be changed to Command SandboxMediator sandboxMediator = facade.retrieveMediator(SandboxMediator.NAME); com.artemis.World engine = sandboxMediator.getViewComponent().getEngine(); @@ -77,7 +69,6 @@ public class HyperLap2DScreenMediator extends Mediator { viewComponent.show(); break; case MsgAPI.SCENE_LOADED: - facade = HyperLap2DFacade.getInstance(); SandboxBackUI sandboxBackUI = new SandboxBackUI(Sandbox.getInstance().getUIStage().getBatch()); getViewComponent().setBackUI(sandboxBackUI); getViewComponent().disableDrawingBgLogo(); diff --git a/src/main/java/games/rednblack/editor/view/SceneControlMediator.java b/src/main/java/games/rednblack/editor/view/SceneControlMediator.java index 07c28939..693ba02d 100644 --- a/src/main/java/games/rednblack/editor/view/SceneControlMediator.java +++ b/src/main/java/games/rednblack/editor/view/SceneControlMediator.java @@ -19,7 +19,6 @@ package games.rednblack.editor.view; import com.badlogic.gdx.utils.viewport.ScreenViewport; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.ResolutionManager; import games.rednblack.editor.proxy.ResourceManager; @@ -28,6 +27,7 @@ import games.rednblack.editor.renderer.data.CompositeItemVO; import games.rednblack.editor.renderer.data.ProjectInfoVO; import games.rednblack.editor.renderer.data.SceneVO; import games.rednblack.editor.view.stage.Sandbox; +import games.rednblack.puremvc.Facade; /** * Mediates scene communication between editor and current runtime @@ -36,7 +36,7 @@ import games.rednblack.editor.view.stage.Sandbox; */ public class SceneControlMediator { - private final HyperLap2DFacade facade; + private final Facade facade; private final ProjectManager projectManager; /** * main holder of the scene @@ -56,7 +56,7 @@ public class SceneControlMediator { public SceneControlMediator(SceneLoader sceneLoader) { this.sceneLoader = sceneLoader; - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); projectManager = facade.retrieveProxy(ProjectManager.NAME); } diff --git a/src/main/java/games/rednblack/editor/view/menu/HyperLap2DMenuBarMediator.java b/src/main/java/games/rednblack/editor/view/menu/HyperLap2DMenuBarMediator.java index 1c3985fd..f00dcc68 100644 --- a/src/main/java/games/rednblack/editor/view/menu/HyperLap2DMenuBarMediator.java +++ b/src/main/java/games/rednblack/editor/view/menu/HyperLap2DMenuBarMediator.java @@ -21,7 +21,6 @@ package games.rednblack.editor.view.menu; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.files.FileHandle; import games.rednblack.editor.HyperLap2DApp; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.ShowNotificationCommand; import games.rednblack.editor.data.manager.PreferencesManager; import games.rednblack.editor.proxy.CommandManager; @@ -31,11 +30,12 @@ import games.rednblack.editor.renderer.data.SceneVO; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MenuAPI; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import org.lwjgl.PointerBuffer; import org.lwjgl.system.MemoryStack; import org.lwjgl.util.tinyfd.TinyFileDialogs; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -57,35 +57,29 @@ public class HyperLap2DMenuBarMediator extends Mediator { @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); projectManager = facade.retrieveProxy(ProjectManager.NAME); settingsManager = facade.retrieveProxy(SettingsManager.NAME); } @Override - public String[] listNotificationInterests() { - return new String[]{ - //FILE - FileMenu.NEW_PROJECT, + public void listNotificationInterests(Interests interests) { + interests.add(FileMenu.NEW_PROJECT, FileMenu.OPEN_PROJECT, FileMenu.SAVE_PROJECT, - FileMenu.SAVE_PROJECT_AS, - FileMenu.EXPORT, + FileMenu.SAVE_PROJECT_AS); + interests.add(FileMenu.EXPORT, FileMenu.RECENT_PROJECTS, FileMenu.CLEAR_RECENT, - FileMenu.EXIT, - //EDIT - EditMenu.CUT, + FileMenu.EXIT); + interests.add(EditMenu.CUT, EditMenu.COPY, EditMenu.PASTE, - EditMenu.UNDO, - EditMenu.REDO, - //General + EditMenu.UNDO); + interests.add(EditMenu.REDO, ProjectManager.PROJECT_OPENED, HyperLap2DMenuBar.RECENT_LIST_MODIFIED, - MsgAPI.CREATE, - MsgAPI.AUTO_SAVE_PROJECT - }; + MsgAPI.CREATE); + interests.add(MsgAPI.AUTO_SAVE_PROJECT); } @Override diff --git a/src/main/java/games/rednblack/editor/view/stage/ItemSelector.java b/src/main/java/games/rednblack/editor/view/stage/ItemSelector.java index 83e8e411..27a1ab0e 100644 --- a/src/main/java/games/rednblack/editor/view/stage/ItemSelector.java +++ b/src/main/java/games/rednblack/editor/view/stage/ItemSelector.java @@ -20,7 +20,6 @@ package games.rednblack.editor.view.stage; import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.SnapshotArray; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.NodeComponent; import games.rednblack.editor.renderer.data.LayerItemVO; import games.rednblack.editor.utils.Constants; @@ -31,6 +30,7 @@ import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.SceneControlMediator; import games.rednblack.editor.view.ui.FollowersUIMediator; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; import java.util.Arrays; import java.util.HashSet; @@ -62,7 +62,7 @@ public class ItemSelector { this.sandbox = sandbox; sceneControl = sandbox.sceneControl; - followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); } /***************************** Getters *********************************/ @@ -215,7 +215,7 @@ public class ItemSelector { currentSelection.add(item); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, currentSelection); + Facade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, currentSelection); } /** @@ -241,18 +241,18 @@ public class ItemSelector { currentSelection.clear(); if(items == null) { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, currentSelection); + Facade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, currentSelection); return; } currentSelection.addAll(items.stream().collect(Collectors.toList())); if (alsoShow) { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.SHOW_SELECTIONS, currentSelection); + Facade.getInstance().sendNotification(MsgAPI.SHOW_SELECTIONS, currentSelection); } else { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.HIDE_SELECTIONS, currentSelection); + Facade.getInstance().sendNotification(MsgAPI.HIDE_SELECTIONS, currentSelection); } - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, currentSelection); + Facade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, currentSelection); } /** @@ -272,7 +272,7 @@ public class ItemSelector { public void releaseSelection(int item) { currentSelection.remove(item); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, currentSelection); + Facade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, currentSelection); } /** @@ -281,7 +281,7 @@ public class ItemSelector { public void clearSelections() { currentSelection.clear(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, currentSelection); + Facade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, currentSelection); } @@ -520,7 +520,7 @@ public class ItemSelector { public void moveSelectedItemsBy(float x, float y) { for (int entity : currentSelection) { sandbox.itemControl.moveItemBy(entity, x, y); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } } diff --git a/src/main/java/games/rednblack/editor/view/stage/Sandbox.java b/src/main/java/games/rednblack/editor/view/stage/Sandbox.java index da3cb614..0b5e9659 100644 --- a/src/main/java/games/rednblack/editor/view/stage/Sandbox.java +++ b/src/main/java/games/rednblack/editor/view/stage/Sandbox.java @@ -33,7 +33,6 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Json; import com.badlogic.gdx.utils.viewport.Viewport; import com.kotcrab.vis.ui.util.ToastManager; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.*; import games.rednblack.editor.renderer.ExternalTypesConfiguration; import games.rednblack.editor.renderer.SceneConfiguration; @@ -66,6 +65,7 @@ import games.rednblack.h2d.extension.talos.TalosSystem; import games.rednblack.h2d.extension.tinyvg.TinyVGItemType; import games.rednblack.h2d.extension.typinglabel.TypingLabelItemType; import games.rednblack.h2d.extension.spine.SpineItemType; +import games.rednblack.puremvc.Facade; import java.util.HashMap; @@ -93,7 +93,7 @@ public class Sandbox { public String currentLoadedSceneFileName; private UIStage uiStage; private ItemSelector selector; - private HyperLap2DFacade facade; + private Facade facade; private ProjectManager projectManager; private ResourceManager resourceManager; @@ -131,7 +131,7 @@ public class Sandbox { final WorldSerializationManager manager = new WorldSerializationManager(); private void init() { - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); projectManager = facade.retrieveProxy(ProjectManager.NAME); resourceManager = facade.retrieveProxy(ResourceManager.NAME); diff --git a/src/main/java/games/rednblack/editor/view/stage/SandboxMediator.java b/src/main/java/games/rednblack/editor/view/stage/SandboxMediator.java index 6a84514e..9602980c 100644 --- a/src/main/java/games/rednblack/editor/view/stage/SandboxMediator.java +++ b/src/main/java/games/rednblack/editor/view/stage/SandboxMediator.java @@ -27,7 +27,6 @@ import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.SnapshotArray; import com.kotcrab.vis.ui.FocusManager; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.AddComponentToItemCommand; import games.rednblack.editor.controller.commands.CompositeCameraChangeCommand; import games.rednblack.editor.controller.commands.RemoveComponentFromItemCommand; @@ -43,8 +42,10 @@ import games.rednblack.editor.view.stage.tools.TransformTool; import games.rednblack.editor.view.ui.box.UIToolBoxMediator; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.tools.Tool; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.HashMap; @@ -76,8 +77,6 @@ public class SandboxMediator extends Mediator { public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - stageListener = new SandboxStageEventListener(); getViewComponent().addListener(stageListener); @@ -99,20 +98,18 @@ public class SandboxMediator extends Mediator { } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.SCENE_LOADED, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.SCENE_LOADED, MsgAPI.TOOL_SELECTED, MsgAPI.NEW_ITEM_ADDED, - MsgAPI.NEW_TOOL_ADDED, - MsgAPI.RESIZE, + MsgAPI.NEW_TOOL_ADDED); + interests.add(MsgAPI.RESIZE, MsgAPI.DISPOSE, CompositeCameraChangeCommand.DONE, - AddComponentToItemCommand.DONE, - RemoveComponentFromItemCommand.DONE, + AddComponentToItemCommand.DONE); + interests.add(RemoveComponentFromItemCommand.DONE, MsgAPI.ITEM_SELECTION_CHANGED, - PanTool.SCENE_PANNED - }; + PanTool.SCENE_PANNED); } @Override @@ -233,7 +230,7 @@ public class SandboxMediator extends Mediator { if (button == Input.Buttons.RIGHT) { // if right clicked on an item, drop down for current selection - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_RIGHT_CLICK); + Facade.getInstance().sendNotification(MsgAPI.ITEM_RIGHT_CLICK); } } diff --git a/src/main/java/games/rednblack/editor/view/stage/UIStage.java b/src/main/java/games/rednblack/editor/view/stage/UIStage.java index 5e8ba353..35a6f9ed 100644 --- a/src/main/java/games/rednblack/editor/view/stage/UIStage.java +++ b/src/main/java/games/rednblack/editor/view/stage/UIStage.java @@ -23,11 +23,11 @@ import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.viewport.ScreenViewport; import com.kotcrab.vis.ui.util.ToastManager; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.SettingsManager; import games.rednblack.editor.renderer.utils.TextureArrayCpuPolygonSpriteBatch; import games.rednblack.editor.view.ui.*; import games.rednblack.h2d.common.proxy.CursorManager; +import games.rednblack.puremvc.Facade; public class UIStage extends Stage { @@ -35,7 +35,7 @@ public class UIStage extends Stage { public static final int SANDBOX_BOTTOM_MARGIN = 38; public static final int SANDBOX_LEFT_MARGIN = 40; - private final HyperLap2DFacade facade; + private final Facade facade; public Group dummyTarget; public UIMainTable uiMainTable; public Group contextMenuContainer; @@ -46,7 +46,7 @@ public class UIStage extends Stage { public UIStage() { super(new ScreenViewport(), new TextureArrayCpuPolygonSpriteBatch(10_000)); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); getViewport().getCamera().position.setZero(); updateViewportDensity(); diff --git a/src/main/java/games/rednblack/editor/view/stage/UIStageMediator.java b/src/main/java/games/rednblack/editor/view/stage/UIStageMediator.java index 966c438f..5dfe32db 100644 --- a/src/main/java/games/rednblack/editor/view/stage/UIStageMediator.java +++ b/src/main/java/games/rednblack/editor/view/stage/UIStageMediator.java @@ -21,10 +21,10 @@ package games.rednblack.editor.view.stage; import com.badlogic.gdx.Gdx; import com.kotcrab.vis.ui.util.dialog.Dialogs; import com.kotcrab.vis.ui.util.dialog.InputDialogListener; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by sargis on 4/20/15. @@ -40,15 +40,12 @@ public class UIStageMediator extends Mediator { @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.SHOW_ADD_LIBRARY_DIALOG, - MsgAPI.SAVE_EDITOR_CONFIG - }; + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.SHOW_ADD_LIBRARY_DIALOG, + MsgAPI.SAVE_EDITOR_CONFIG); } @Override diff --git a/src/main/java/games/rednblack/editor/view/stage/input/SandboxInputAdapter.java b/src/main/java/games/rednblack/editor/view/stage/input/SandboxInputAdapter.java index 927a8531..7025c3a6 100644 --- a/src/main/java/games/rednblack/editor/view/stage/input/SandboxInputAdapter.java +++ b/src/main/java/games/rednblack/editor/view/stage/input/SandboxInputAdapter.java @@ -9,7 +9,6 @@ import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.SnapshotArray; import com.badlogic.gdx.utils.viewport.Viewport; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.NodeComponent; import games.rednblack.editor.renderer.components.ParentNodeComponent; import games.rednblack.editor.renderer.components.TransformComponent; @@ -22,10 +21,11 @@ import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.SandboxMediator; +import games.rednblack.puremvc.Facade; public class SandboxInputAdapter implements InputProcessor { - private HyperLap2DFacade facade; + private Facade facade; private int rootEntity; private InputListenerComponent inpputListenerComponent; private int target; @@ -34,7 +34,7 @@ public class SandboxInputAdapter implements InputProcessor { private final EntityBounds tempEntityBounds = new EntityBounds(); public SandboxInputAdapter() { - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); SandboxMediator sandboxMediator = facade.retrieveMediator(SandboxMediator.NAME); sandbox = sandboxMediator.getViewComponent(); } diff --git a/src/main/java/games/rednblack/editor/view/stage/tools/PanTool.java b/src/main/java/games/rednblack/editor/view/stage/tools/PanTool.java index 8deee610..8034f5e4 100644 --- a/src/main/java/games/rednblack/editor/view/stage/tools/PanTool.java +++ b/src/main/java/games/rednblack/editor/view/stage/tools/PanTool.java @@ -3,11 +3,11 @@ package games.rednblack.editor.view.stage.tools; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.math.Vector2; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ResourceManager; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.proxy.CursorManager; import games.rednblack.h2d.common.view.ui.Cursors; +import games.rednblack.puremvc.Facade; /** * Created by CyberJoe on 5/1/2015. @@ -37,7 +37,7 @@ public class PanTool extends SimpleTool { @Override public void initTool() { - CursorManager cursorManager = HyperLap2DFacade.getInstance().retrieveProxy(CursorManager.NAME); + CursorManager cursorManager = Facade.getInstance().retrieveProxy(CursorManager.NAME); cursorManager.setCursor(Cursors.HAND); } @@ -94,7 +94,7 @@ public class PanTool extends SimpleTool { float currX, currY; private void doPanning(float x, float y) { - ResourceManager resourceManager = HyperLap2DFacade.getInstance().retrieveProxy(ResourceManager.NAME); + ResourceManager resourceManager = Facade.getInstance().retrieveProxy(ResourceManager.NAME); Sandbox sandbox = Sandbox.getInstance(); OrthographicCamera camera = sandbox.getCamera(); @@ -106,6 +106,6 @@ public class PanTool extends SimpleTool { lastCoordinates.set(Gdx.input.getX(), Gdx.input.getY()); - HyperLap2DFacade.getInstance().sendNotification(SCENE_PANNED); + Facade.getInstance().sendNotification(SCENE_PANNED); } } diff --git a/src/main/java/games/rednblack/editor/view/stage/tools/PolygonTool.java b/src/main/java/games/rednblack/editor/view/stage/tools/PolygonTool.java index f80eb69a..b06207a6 100644 --- a/src/main/java/games/rednblack/editor/view/stage/tools/PolygonTool.java +++ b/src/main/java/games/rednblack/editor/view/stage/tools/PolygonTool.java @@ -22,7 +22,6 @@ import com.badlogic.gdx.Input; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.IntSet; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.AddComponentToItemCommand; import games.rednblack.editor.controller.commands.RemoveComponentFromItemCommand; import games.rednblack.editor.controller.commands.component.UpdatePolygonVerticesCommand; @@ -35,7 +34,8 @@ import games.rednblack.editor.view.ui.followers.BasicFollower; import games.rednblack.editor.view.ui.followers.PolygonFollower; import games.rednblack.editor.view.ui.followers.PolygonTransformationListener; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.INotification; import java.util.Set; @@ -80,7 +80,7 @@ public class PolygonTool extends SelectionTool implements PolygonTransformationL public void initTool() { super.initTool(); - followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); updateSubFollowerList(); } @@ -145,7 +145,7 @@ public class PolygonTool extends SelectionTool implements PolygonTransformationL follower.setProblems(null); UpdatePolygonVerticesCommand.payload(currentCommandPayload, polygonShapeComponent.vertices, polygonShapeComponent.polygonizedVertices); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_UPDATE_MESH_DATA, currentCommandPayload); + Facade.getInstance().sendNotification(MsgAPI.ACTION_UPDATE_MESH_DATA, currentCommandPayload); } @Override @@ -211,7 +211,7 @@ public class PolygonTool extends SelectionTool implements PolygonTransformationL Object[] payload = new Object[2]; payload[0] = follower; payload[1] = anchor; - HyperLap2DFacade.getInstance().sendNotification(PolygonTool.MANUAL_VERTEX_POSITION, payload); + Facade.getInstance().sendNotification(PolygonTool.MANUAL_VERTEX_POSITION, payload); return; } @@ -230,7 +230,7 @@ public class PolygonTool extends SelectionTool implements PolygonTransformationL } private PolygonFollower getMeshFollower(int entity) { - FollowersUIMediator followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + FollowersUIMediator followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); BasicFollower follower = followersUIMediator.getFollower(entity); PolygonFollower meshFollower = (PolygonFollower) (follower).getSubFollower(PolygonFollower.class); @@ -262,7 +262,7 @@ public class PolygonTool extends SelectionTool implements PolygonTransformationL } UpdatePolygonVerticesCommand.payload(currentCommandPayload, polygonShapeComponent.vertices, polygonShapeComponent.polygonizedVertices); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_UPDATE_MESH_DATA, currentCommandPayload); + Facade.getInstance().sendNotification(MsgAPI.ACTION_UPDATE_MESH_DATA, currentCommandPayload); follower.update(); diff --git a/src/main/java/games/rednblack/editor/view/stage/tools/SelectionTool.java b/src/main/java/games/rednblack/editor/view/stage/tools/SelectionTool.java index 86d55b82..ac13f7bf 100644 --- a/src/main/java/games/rednblack/editor/view/stage/tools/SelectionTool.java +++ b/src/main/java/games/rednblack/editor/view/stage/tools/SelectionTool.java @@ -25,7 +25,6 @@ import com.badlogic.gdx.math.*; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.viewport.Viewport; import com.kotcrab.vis.ui.util.OsUtils; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.ParentNodeComponent; import games.rednblack.editor.renderer.components.TransformComponent; @@ -38,6 +37,7 @@ import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.proxy.CursorManager; import games.rednblack.h2d.common.view.ui.Cursors; +import games.rednblack.puremvc.Facade; import java.util.HashMap; import java.util.HashSet; @@ -97,7 +97,7 @@ public class SelectionTool extends SimpleTool { sandbox = Sandbox.getInstance(); // set cursor - CursorManager cursorManager = HyperLap2DFacade.getInstance().retrieveProxy(CursorManager.NAME); + CursorManager cursorManager = Facade.getInstance().retrieveProxy(CursorManager.NAME); cursorManager.setCursor(Cursors.NORMAL); } @@ -140,7 +140,7 @@ public class SelectionTool extends SimpleTool { return; ParentNodeComponent parentNodeComponent = SandboxComponentRetriever.get(currentView, ParentNodeComponent.class); if (parentNodeComponent != null) { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, parentNodeComponent.parentEntity); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, parentNodeComponent.parentEntity); } } @@ -148,7 +148,7 @@ public class SelectionTool extends SimpleTool { public boolean itemMouseDown(int entity, float x, float y) { isItemDown = true; sandbox = Sandbox.getInstance(); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); currentTouchedItemWasSelected = sandbox.getSelector().getCurrentSelection().contains(entity); @@ -184,7 +184,7 @@ public class SelectionTool extends SimpleTool { dragMouseStartPosition = new Vector2(x, y); // pining UI to update current item properties tools - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); return true; } @@ -197,8 +197,8 @@ public class SelectionTool extends SimpleTool { if (!isDragging && (Gdx.input.isKeyPressed(Input.Keys.ALT_LEFT) || Gdx.input.isKeyPressed(Input.Keys.ALT_RIGHT))) { // first drag iteration and is copy mode // we need to copy/paste the item in place, the set it as selection and draggable, then perform the drag. - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_COPY); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_PASTE); + Facade.getInstance().sendNotification(MsgAPI.ACTION_COPY); + Facade.getInstance().sendNotification(MsgAPI.ACTION_PASTE); dragStartPositions.clear(); dragTouchDiff.clear(); @@ -212,7 +212,7 @@ public class SelectionTool extends SimpleTool { dragMouseStartPosition = new Vector2(x, y); // pining UI to update current item properties tools - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } @@ -267,7 +267,7 @@ public class SelectionTool extends SimpleTool { //value.hide(); // pining UI to update current item properties tools - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, itemInstance); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, itemInstance); } } @@ -288,7 +288,7 @@ public class SelectionTool extends SimpleTool { transformComponent.rotation = (transformComponent.rotation + degreeAmount) % 360; // pining UI to update current item properties tools - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, itemInstance); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, itemInstance); } } @@ -299,7 +299,7 @@ public class SelectionTool extends SimpleTool { public void itemMouseUp(int entity, float x, float y) { isItemDown = false; sandbox = Sandbox.getInstance(); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); if (currentTouchedItemWasSelected && !isDragging) { // item was selected (and no dragging was performed), so we need to release it @@ -328,7 +328,7 @@ public class SelectionTool extends SimpleTool { payloads.add(payload); } - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_ITEMS_MOVE_TO, payloads); + Facade.getInstance().sendNotification(MsgAPI.ACTION_ITEMS_MOVE_TO, payloads); } isDragging = false; @@ -338,7 +338,7 @@ public class SelectionTool extends SimpleTool { @Override public void itemMouseDoubleClick(int item, float x, float y) { if (sandbox.getSelector().selectionIsComposite()) { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, item); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, item); } } @@ -351,7 +351,7 @@ public class SelectionTool extends SimpleTool { private void selectionComplete() { sandbox = Sandbox.getInstance(); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); OrthographicCamera camera = Sandbox.getInstance().getCamera(); Viewport viewport = Sandbox.getInstance().getViewport(); @@ -471,12 +471,12 @@ public class SelectionTool extends SimpleTool { } if (payloads.size > 0) - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_ITEMS_MOVE_TO, payloads); + Facade.getInstance().sendNotification(MsgAPI.ACTION_ITEMS_MOVE_TO, payloads); } // Delete if (keycode == Input.Keys.DEL || keycode == Input.Keys.FORWARD_DEL) { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_DELETE); + Facade.getInstance().sendNotification(MsgAPI.ACTION_DELETE); } } diff --git a/src/main/java/games/rednblack/editor/view/stage/tools/SimpleTool.java b/src/main/java/games/rednblack/editor/view/stage/tools/SimpleTool.java index 17e6c912..a3e7a4dd 100644 --- a/src/main/java/games/rednblack/editor/view/stage/tools/SimpleTool.java +++ b/src/main/java/games/rednblack/editor/view/stage/tools/SimpleTool.java @@ -1,12 +1,12 @@ package games.rednblack.editor.view.stage.tools; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.ui.FollowersUIMediator; import games.rednblack.editor.view.ui.followers.BasicFollower; import games.rednblack.editor.view.ui.followers.NormalSelectionFollower; import games.rednblack.h2d.common.view.tools.Tool; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.INotification; import java.util.Set; @@ -19,7 +19,7 @@ public abstract class SimpleTool implements Tool { public void initTool() { Sandbox sandbox = Sandbox.getInstance(); Set currSelection = sandbox.getSelector().getCurrentSelection(); - FollowersUIMediator followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + FollowersUIMediator followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); for(int entity: currSelection) { BasicFollower follower = followersUIMediator.getFollower(entity); if(follower instanceof NormalSelectionFollower) { diff --git a/src/main/java/games/rednblack/editor/view/stage/tools/TextTool.java b/src/main/java/games/rednblack/editor/view/stage/tools/TextTool.java index 4f3b5ae2..abe5454d 100644 --- a/src/main/java/games/rednblack/editor/view/stage/tools/TextTool.java +++ b/src/main/java/games/rednblack/editor/view/stage/tools/TextTool.java @@ -21,13 +21,13 @@ package games.rednblack.editor.view.stage.tools; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Align; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.factory.ItemFactory; import games.rednblack.editor.renderer.factory.EntityFactory; import games.rednblack.editor.utils.AppConfig; import games.rednblack.editor.utils.NativeDialogs; import games.rednblack.h2d.common.proxy.CursorManager; import games.rednblack.h2d.common.view.ui.Cursors; +import games.rednblack.puremvc.Facade; import org.apache.commons.lang3.SystemUtils; /** @@ -72,7 +72,7 @@ public class TextTool extends ItemDropTool { @Override public void initTool() { super.initTool(); - CursorManager cursorManager = HyperLap2DFacade.getInstance().retrieveProxy(CursorManager.NAME); + CursorManager cursorManager = Facade.getInstance().retrieveProxy(CursorManager.NAME); cursorManager.setCursor(Cursors.TEXT_TOOL); } diff --git a/src/main/java/games/rednblack/editor/view/stage/tools/TransformTool.java b/src/main/java/games/rednblack/editor/view/stage/tools/TransformTool.java index c5b923d6..f15d4c42 100644 --- a/src/main/java/games/rednblack/editor/view/stage/tools/TransformTool.java +++ b/src/main/java/games/rednblack/editor/view/stage/tools/TransformTool.java @@ -21,7 +21,6 @@ package games.rednblack.editor.view.stage.tools; import com.badlogic.gdx.Input; import com.badlogic.gdx.math.Vector2; import com.kotcrab.vis.ui.util.OsUtils; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.renderer.factory.EntityFactory; import games.rednblack.editor.utils.KeyBindingsLayout; @@ -36,7 +35,8 @@ import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.command.TransformCommandBuilder; import games.rednblack.h2d.common.proxy.CursorManager; import games.rednblack.h2d.common.view.ui.Cursors; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.INotification; import java.util.HashSet; import java.util.Set; @@ -98,7 +98,7 @@ public class TransformTool extends SelectionTool implements FollowerTransformati updateListeners(); // set cursor - cursorManager = HyperLap2DFacade.getInstance().retrieveProxy(CursorManager.NAME); + cursorManager = Facade.getInstance().retrieveProxy(CursorManager.NAME); cursorManager.setCursor(Cursors.CROSS); } @@ -136,7 +136,7 @@ public class TransformTool extends SelectionTool implements FollowerTransformati } private void updateListeners(Set entities) { - FollowersUIMediator followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + FollowersUIMediator followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); followersUIMediator.clearAllListeners(); for (int entity : entities) { @@ -197,11 +197,11 @@ public class TransformTool extends SelectionTool implements FollowerTransformati fixCursor = false; if (anchor == NormalSelectionFollower.ORIGIN && button == Input.Buttons.RIGHT) { - HyperLap2DFacade.getInstance().sendNotification(MANUAL_ORIGIN_POSITION, follower.getEntity()); + Facade.getInstance().sendNotification(MANUAL_ORIGIN_POSITION, follower.getEntity()); return; } - commandBuilder.execute(HyperLap2DFacade.getInstance()); + commandBuilder.execute(Facade.getInstance()); if (transformStrategy == compositeStrategy) { compositeStrategy.swapItemFinalAndInitialStates(follower.getEntity()); } @@ -218,7 +218,7 @@ public class TransformTool extends SelectionTool implements FollowerTransformati execute(mouseInitialCoordinates, mousePointStage, anchor, follower.getEntity()); mouseInitialCoordinates.set(mousePointStage.x, mousePointStage.y); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/stage/tools/transformStrategy/BasicStrategy.java b/src/main/java/games/rednblack/editor/view/stage/tools/transformStrategy/BasicStrategy.java index 8cd4eaa8..b2e98aa6 100644 --- a/src/main/java/games/rednblack/editor/view/stage/tools/transformStrategy/BasicStrategy.java +++ b/src/main/java/games/rednblack/editor/view/stage/tools/transformStrategy/BasicStrategy.java @@ -3,7 +3,6 @@ package games.rednblack.editor.view.stage.tools.transformStrategy; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.math.Vector2; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.utils.RoundUtils; @@ -12,7 +11,7 @@ import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.ui.followers.NormalSelectionFollower; import games.rednblack.editor.view.ui.properties.panels.UIBasicItemPropertiesMediator; import games.rednblack.h2d.common.command.TransformCommandBuilder; -import org.puremvc.java.patterns.facade.Facade; +import games.rednblack.puremvc.Facade; /** * Created by Sasun Poghosyan on 4/13/2016. @@ -25,7 +24,7 @@ public class BasicStrategy extends AbstractTransformStrategy { private static final float[] tmp1 = new float[3]; private static final float[] tmp2 = new float[3]; - private final Facade facade = HyperLap2DFacade.getInstance(); + private final Facade facade = Facade.getInstance(); @Override public void calculate(float mouseDx, float mouseDy, int anchor, int entity, TransformCommandBuilder transformCommandBuilder, Vector2 mousePointStage, float lastTransformAngle, float lastEntityAngle) { diff --git a/src/main/java/games/rednblack/editor/view/stage/tools/transformStrategy/CompositeStrategy.java b/src/main/java/games/rednblack/editor/view/stage/tools/transformStrategy/CompositeStrategy.java index 41500cb7..01c7d7f5 100644 --- a/src/main/java/games/rednblack/editor/view/stage/tools/transformStrategy/CompositeStrategy.java +++ b/src/main/java/games/rednblack/editor/view/stage/tools/transformStrategy/CompositeStrategy.java @@ -5,7 +5,6 @@ import com.badlogic.gdx.Input; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.SnapshotArray; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.CompositeTransformComponent; import games.rednblack.editor.renderer.components.DimensionsComponent; import games.rednblack.editor.renderer.components.NodeComponent; @@ -16,7 +15,7 @@ import games.rednblack.editor.view.ui.followers.NormalSelectionFollower; import games.rednblack.editor.view.ui.properties.panels.UIBasicItemPropertiesMediator; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.command.TransformCommandBuilder; -import org.puremvc.java.patterns.facade.Facade; +import games.rednblack.puremvc.Facade; import java.util.HashMap; import java.util.Map; @@ -39,7 +38,7 @@ public class CompositeStrategy extends AbstractTransformStrategy { private static final float[] tmp1 = new float[3]; private static final float[] tmp2 = new float[3]; - private final Facade facade = HyperLap2DFacade.getInstance(); + private final Facade facade = Facade.getInstance(); public void getInitialPositions(int entity) { getParentState(entity, parentInitialPosition, parentInitialSize); @@ -68,7 +67,7 @@ public class CompositeStrategy extends AbstractTransformStrategy { payloads.add(payload); } if (!parentFinalPosition.equals(parentInitialPosition) || !parentFinalSize.equals(parentInitialSize)) - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_ITEM_AND_CHILDREN_TO, payloads); + Facade.getInstance().sendNotification(MsgAPI.ACTION_ITEM_AND_CHILDREN_TO, payloads); } private void setParentState(int entity, Vector2 position, Vector2 size) { diff --git a/src/main/java/games/rednblack/editor/view/ui/BoxItemResourceSelectionUIMediator.java b/src/main/java/games/rednblack/editor/view/ui/BoxItemResourceSelectionUIMediator.java index 19c4cf39..0f312c20 100644 --- a/src/main/java/games/rednblack/editor/view/ui/BoxItemResourceSelectionUIMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/BoxItemResourceSelectionUIMediator.java @@ -7,13 +7,14 @@ import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Source; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectSet; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.ui.box.UIResourcesBoxMediator; import games.rednblack.editor.view.ui.box.resourcespanel.UIImagesTab; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.box.BoxItemResource; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.HashSet; import java.util.Set; @@ -25,7 +26,7 @@ import java.util.TreeSet; * * @author Jan-Thierry Wegener */ -public class BoxItemResourceSelectionUIMediator extends Mediator { +public class BoxItemResourceSelectionUIMediator extends Mediator { public static final String NAME = BoxItemResourceSelectionUIMediator.class.getCanonicalName(); @@ -39,7 +40,7 @@ public class BoxItemResourceSelectionUIMediator extends Mediator { } @Override - public void onRegister() { - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.UPDATE_ALL_FOLLOWERS, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.UPDATE_ALL_FOLLOWERS, MsgAPI.SCENE_LOADED, MsgAPI.ITEM_DATA_UPDATED, - MsgAPI.ITEM_SELECTION_CHANGED, - MsgAPI.SHOW_SELECTIONS, + MsgAPI.ITEM_SELECTION_CHANGED); + interests.add(MsgAPI.SHOW_SELECTIONS, MsgAPI.HIDE_SELECTIONS, MsgAPI.NEW_ITEM_ADDED, - PanTool.SCENE_PANNED, - MsgAPI.TOOL_SELECTED, + PanTool.SCENE_PANNED); + interests.add(MsgAPI.TOOL_SELECTED, MsgAPI.ITEM_PROPERTY_DATA_FINISHED_MODIFYING, CompositeCameraChangeCommand.DONE, - MsgAPI.ZOOM_CHANGED, - ConvertToCompositeCommand.DONE - }; + MsgAPI.ZOOM_CHANGED); + interests.add(ConvertToCompositeCommand.DONE); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/RulersUI.java b/src/main/java/games/rednblack/editor/view/ui/RulersUI.java index c616d821..a4b33245 100644 --- a/src/main/java/games/rednblack/editor/view/ui/RulersUI.java +++ b/src/main/java/games/rednblack/editor/view/ui/RulersUI.java @@ -12,10 +12,10 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Pools; import com.kotcrab.vis.ui.widget.VisLabel; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.utils.Guide; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.ui.widget.actors.basic.WhitePixel; +import games.rednblack.puremvc.Facade; import space.earlygrey.shapedrawer.ShapeDrawer; import java.util.HashMap; @@ -163,11 +163,11 @@ public class RulersUI extends Actor { } else { if (button == Input.Buttons.RIGHT) { editableDraggingGuide = draggingGuide; - HyperLap2DFacade.getInstance().sendNotification(RIGHT_CLICK_RULER); + Facade.getInstance().sendNotification(RIGHT_CLICK_RULER); } } - HyperLap2DFacade.getInstance().sendNotification(ACTION_GUIDES_MODIFIED); + Facade.getInstance().sendNotification(ACTION_GUIDES_MODIFIED); } draggingGuide = null; } @@ -479,7 +479,7 @@ public class RulersUI extends Actor { public static void updateGuideManually(float destination) { editableDraggingGuide.pos = destination; - HyperLap2DFacade.getInstance().sendNotification(ACTION_GUIDES_MODIFIED); + Facade.getInstance().sendNotification(ACTION_GUIDES_MODIFIED); } public Array getGuides() { diff --git a/src/main/java/games/rednblack/editor/view/ui/RulersUIMediator.java b/src/main/java/games/rednblack/editor/view/ui/RulersUIMediator.java index 0a180843..84bee281 100644 --- a/src/main/java/games/rednblack/editor/view/ui/RulersUIMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/RulersUIMediator.java @@ -1,13 +1,13 @@ package games.rednblack.editor.view.ui; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.data.SceneVO; import games.rednblack.editor.utils.Guide; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by azakhary on 7/18/2015. @@ -25,17 +25,14 @@ public class RulersUIMediator extends Mediator { @Override public void onRegister() { - facade = HyperLap2DFacade.getInstance(); viewComponent.setVisible(false); } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.SCENE_LOADED, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.SCENE_LOADED, RulersUI.ACTION_GUIDES_MODIFIED, - MsgAPI.LOCK_LINES_CHANGED - }; + MsgAPI.LOCK_LINES_CHANGED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/StickyNotesUIMediator.java b/src/main/java/games/rednblack/editor/view/ui/StickyNotesUIMediator.java index 54bf78e2..8b79f485 100644 --- a/src/main/java/games/rednblack/editor/view/ui/StickyNotesUIMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/StickyNotesUIMediator.java @@ -1,6 +1,5 @@ package games.rednblack.editor.view.ui; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.CompositeCameraChangeCommand; import games.rednblack.editor.controller.commands.CreateStickyNoteCommand; import games.rednblack.editor.controller.commands.ModifyStickyNoteCommand; @@ -9,8 +8,9 @@ import games.rednblack.editor.renderer.data.SceneVO; import games.rednblack.editor.renderer.data.StickyNoteVO; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; public class StickyNotesUIMediator extends Mediator { private static final String TAG = StickyNotesUIMediator.class.getCanonicalName(); @@ -25,19 +25,16 @@ public class StickyNotesUIMediator extends Mediator { @Override public void onRegister() { - facade = HyperLap2DFacade.getInstance(); viewComponent.setVisible(false); } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.SCENE_LOADED, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.SCENE_LOADED, CompositeCameraChangeCommand.DONE, CreateStickyNoteCommand.DONE, - RemoveStickyNoteCommand.DONE, - ModifyStickyNoteCommand.DONE - }; + RemoveStickyNoteCommand.DONE); + interests.add(ModifyStickyNoteCommand.DONE); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/UIBottomMenuBar.java b/src/main/java/games/rednblack/editor/view/ui/UIBottomMenuBar.java index b5395d53..5eb5fd69 100644 --- a/src/main/java/games/rednblack/editor/view/ui/UIBottomMenuBar.java +++ b/src/main/java/games/rednblack/editor/view/ui/UIBottomMenuBar.java @@ -4,16 +4,16 @@ import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.kotcrab.vis.ui.VisUI; import com.kotcrab.vis.ui.widget.VisScrollPane; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.ui.box.bottom.*; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; public class UIBottomMenuBar extends VisTable { - private final HyperLap2DFacade facade; + private final Facade facade; public UIBottomMenuBar() { Skin skin = VisUI.getSkin(); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); setBackground(skin.getDrawable("sub-menu-bg")); diff --git a/src/main/java/games/rednblack/editor/view/ui/UIDropDownMenuMediator.java b/src/main/java/games/rednblack/editor/view/ui/UIDropDownMenuMediator.java index 9b0157f6..4590fd96 100644 --- a/src/main/java/games/rednblack/editor/view/ui/UIDropDownMenuMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/UIDropDownMenuMediator.java @@ -20,7 +20,6 @@ package games.rednblack.editor.view.ui; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.PluginManager; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; @@ -28,8 +27,9 @@ import games.rednblack.editor.view.stage.tools.PolygonTool; import games.rednblack.editor.view.stage.tools.TransformTool; import games.rednblack.editor.view.ui.box.UIResourcesBoxMediator; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.HashMap; @@ -126,28 +126,24 @@ public class UIDropDownMenuMediator extends Mediator { actionSets.put(ORIGIN_POINT_ACTION_SET, new Array<>()); actionSets.get(ORIGIN_POINT_ACTION_SET).add(MsgAPI.ACTION_CHANGE_ORIGIN_POSITION); actionSets.get(ORIGIN_POINT_ACTION_SET).add(MsgAPI.ACTION_CENTER_ORIGIN_POSITION); - - facade = HyperLap2DFacade.getInstance(); } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.SCENE_RIGHT_CLICK, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.SCENE_RIGHT_CLICK, MsgAPI.ITEM_RIGHT_CLICK, UIDropDownMenu.ITEM_CLICKED, - UIResourcesBoxMediator.IMAGE_RIGHT_CLICK, - UIResourcesBoxMediator.TINY_VG_RIGHT_CLICK, + UIResourcesBoxMediator.IMAGE_RIGHT_CLICK); + interests.add(UIResourcesBoxMediator.TINY_VG_RIGHT_CLICK, UIResourcesBoxMediator.SPINE_ANIMATION_RIGHT_CLICK, UIResourcesBoxMediator.SPRITE_ANIMATION_RIGHT_CLICK, - UIResourcesBoxMediator.LIBRARY_ITEM_RIGHT_CLICK, - UIResourcesBoxMediator.PARTICLE_EFFECT_RIGHT_CLICK, + UIResourcesBoxMediator.LIBRARY_ITEM_RIGHT_CLICK); + interests.add(UIResourcesBoxMediator.PARTICLE_EFFECT_RIGHT_CLICK, UIResourcesBoxMediator.TALOS_VFX_RIGHT_CLICK, UIResourcesBoxMediator.LIBRARY_ACTION_RIGHT_CLICK, - RulersUI.RIGHT_CLICK_RULER, - PolygonTool.MANUAL_VERTEX_POSITION, - TransformTool.MANUAL_ORIGIN_POSITION - }; + RulersUI.RIGHT_CLICK_RULER); + interests.add(PolygonTool.MANUAL_VERTEX_POSITION, + TransformTool.MANUAL_ORIGIN_POSITION); } private void applyItemTypeMutators(Array actionsSet) { diff --git a/src/main/java/games/rednblack/editor/view/ui/UIMainTable.java b/src/main/java/games/rednblack/editor/view/ui/UIMainTable.java index e4354aa6..e82b9480 100644 --- a/src/main/java/games/rednblack/editor/view/ui/UIMainTable.java +++ b/src/main/java/games/rednblack/editor/view/ui/UIMainTable.java @@ -19,20 +19,20 @@ package games.rednblack.editor.view.ui; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.utils.HyperLap2DUtils; import games.rednblack.editor.view.menu.HyperLap2DMenuBar; import games.rednblack.editor.view.menu.HyperLap2DMenuBarMediator; import games.rednblack.editor.view.ui.box.*; import games.rednblack.editor.view.ui.widget.H2DLogo; +import games.rednblack.puremvc.Facade; import org.apache.commons.lang3.SystemUtils; public class UIMainTable extends VisTable { private final VisTable topTable, middleTable; - private final HyperLap2DFacade facade; + private final Facade facade; public UIMainTable() { - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); setFillParent(true); top(); diff --git a/src/main/java/games/rednblack/editor/view/ui/UISubmenuBar.java b/src/main/java/games/rednblack/editor/view/ui/UISubmenuBar.java index c007b6b5..9580a367 100644 --- a/src/main/java/games/rednblack/editor/view/ui/UISubmenuBar.java +++ b/src/main/java/games/rednblack/editor/view/ui/UISubmenuBar.java @@ -21,16 +21,16 @@ package games.rednblack.editor.view.ui; import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.kotcrab.vis.ui.VisUI; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.ui.box.UICompositeHierarchy; import games.rednblack.editor.view.ui.box.UICompositeHierarchyMediator; +import games.rednblack.puremvc.Facade; public class UISubmenuBar extends VisTable { - private final HyperLap2DFacade facade; + private final Facade facade; public UISubmenuBar() { Skin skin = VisUI.getSkin(); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); setBackground(skin.getDrawable("sub-menu-bg")); diff --git a/src/main/java/games/rednblack/editor/view/ui/UIWindowActionMediator.java b/src/main/java/games/rednblack/editor/view/ui/UIWindowActionMediator.java index 4bf14951..cf0b68dd 100644 --- a/src/main/java/games/rednblack/editor/view/ui/UIWindowActionMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/UIWindowActionMediator.java @@ -1,30 +1,21 @@ package games.rednblack.editor.view.ui; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; public class UIWindowActionMediator extends Mediator { private static final String TAG = UIWindowActionMediator.class.getCanonicalName(); public static final String NAME = TAG; - public UIWindowActionMediator() { super(NAME, new UIWindowAction()); } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.WINDOW_MAXIMIZED - }; + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.WINDOW_MAXIMIZED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/UIWindowTitleMediator.java b/src/main/java/games/rednblack/editor/view/ui/UIWindowTitleMediator.java index c4a91292..3292b4df 100644 --- a/src/main/java/games/rednblack/editor/view/ui/UIWindowTitleMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/UIWindowTitleMediator.java @@ -1,7 +1,7 @@ package games.rednblack.editor.view.ui; -import games.rednblack.editor.HyperLap2DFacade; -import org.puremvc.java.patterns.mediator.Mediator; + +import games.rednblack.puremvc.Mediator; public class UIWindowTitleMediator extends Mediator { @@ -12,10 +12,4 @@ public class UIWindowTitleMediator extends Mediator { public UIWindowTitleMediator() { super(NAME, new UIWindowTitle()); } - - @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } } diff --git a/src/main/java/games/rednblack/editor/view/ui/box/PanelMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/PanelMediator.java index 4ac44ce9..77e6fd29 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/PanelMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/PanelMediator.java @@ -20,8 +20,9 @@ package games.rednblack.editor.view.ui.box; import com.badlogic.gdx.scenes.scene2d.Actor; import games.rednblack.editor.proxy.ProjectManager; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by azakhary on 6/17/2015. @@ -37,12 +38,9 @@ public class PanelMediator extends Mediator { super(mediatorName, viewComponent); } - @Override - public String[] listNotificationInterests() { - return new String[]{ - ProjectManager.PROJECT_OPENED - }; + public void listNotificationInterests(Interests interests) { + interests.add(ProjectManager.PROJECT_OPENED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UIAlignBox.java b/src/main/java/games/rednblack/editor/view/ui/box/UIAlignBox.java index ec1e3116..4846b0a3 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UIAlignBox.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UIAlignBox.java @@ -22,8 +22,8 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.kotcrab.vis.ui.widget.VisImageButton; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; /** * Created by sargis on 4/10/15. @@ -59,12 +59,12 @@ public class UIAlignBox extends UICollapsibleBox { public static final String ALIGN_AT_EDGE_RIGHT_BTN_CLICKED = prefix + ALIGN_AT_EDGE_RIGHT; // - private final HyperLap2DFacade faced; + private final Facade faced; public UIAlignBox() { super("Align", 166); setMovable(false); - faced = HyperLap2DFacade.getInstance(); + faced = Facade.getInstance(); VisTable alignButtonsTable = new VisTable(); // alignButtonsTable.row().padTop(6); @@ -140,7 +140,7 @@ public class UIAlignBox extends UICollapsibleBox { notification = ALIGN_AT_EDGE_RIGHT_BTN_CLICKED; break; } - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); facade.sendNotification(notification); } } diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UIAlignBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/UIAlignBoxMediator.java index 047d8506..e60a19cb 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UIAlignBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UIAlignBoxMediator.java @@ -21,7 +21,8 @@ package games.rednblack.editor.view.ui.box; import com.badlogic.gdx.utils.Align; import games.rednblack.editor.view.stage.ItemSelector; import games.rednblack.editor.view.stage.Sandbox; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -39,20 +40,18 @@ public class UIAlignBoxMediator extends PanelMediator { } @Override - public String[] listNotificationInterests() { - String[] parentNotifications = super.listNotificationInterests(); - return Stream.of(parentNotifications, new String[]{ - UIAlignBox.ALIGN_TOP_BTN_CLICKED, + public void listNotificationInterests(Interests interests) { + super.listNotificationInterests(interests); + interests.add(UIAlignBox.ALIGN_TOP_BTN_CLICKED, UIAlignBox.ALIGN_LEFT_BTN_CLICKED, UIAlignBox.ALIGN_BOTTOM_BTN_CLICKED, - UIAlignBox.ALIGN_RIGHT_BTN_CLICKED, - UIAlignBox.ALIGN_CENTER_LEFT_BTN_CLICKED, + UIAlignBox.ALIGN_RIGHT_BTN_CLICKED); + interests.add(UIAlignBox.ALIGN_CENTER_LEFT_BTN_CLICKED, UIAlignBox.ALIGN_CENTER_BOTTOM_BTN_CLICKED, UIAlignBox.ALIGN_AT_EDGE_TOP_BTN_CLICKED, - UIAlignBox.ALIGN_AT_EDGE_LEFT_BTN_CLICKED, - UIAlignBox.ALIGN_AT_EDGE_BOTTOM_BTN_CLICKED, - UIAlignBox.ALIGN_AT_EDGE_RIGHT_BTN_CLICKED - }).flatMap(Stream::of).toArray(String[]::new); + UIAlignBox.ALIGN_AT_EDGE_LEFT_BTN_CLICKED); + interests.add(UIAlignBox.ALIGN_AT_EDGE_BOTTOM_BTN_CLICKED, + UIAlignBox.ALIGN_AT_EDGE_RIGHT_BTN_CLICKED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UIBaseBox.java b/src/main/java/games/rednblack/editor/view/ui/box/UIBaseBox.java index 8617372e..06f72399 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UIBaseBox.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UIBaseBox.java @@ -1,15 +1,15 @@ package games.rednblack.editor.view.ui.box; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; +import games.rednblack.puremvc.Facade; public abstract class UIBaseBox extends VisTable { - protected final HyperLap2DFacade facade; + protected final Facade facade; public UIBaseBox() { super(); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); } public abstract void update(); diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UICompositeHierarchyMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/UICompositeHierarchyMediator.java index d6a06972..8cb85679 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UICompositeHierarchyMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UICompositeHierarchyMediator.java @@ -1,15 +1,16 @@ package games.rednblack.editor.view.ui.box; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.CompositeCameraChangeCommand; import games.rednblack.editor.renderer.components.ParentNodeComponent; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by CyberJoe on 4/22/2015. @@ -25,12 +26,10 @@ public class UICompositeHierarchyMediator extends Mediator } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.SCENE_LOADED, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.SCENE_LOADED, CompositeCameraChangeCommand.DONE, - UICompositeHierarchy.SWITCH_VIEW_COMPOSITE_CLICKED - }; + UICompositeHierarchy.SWITCH_VIEW_COMPOSITE_CLICKED); } @Override @@ -49,7 +48,7 @@ public class UICompositeHierarchyMediator extends Mediator break; case UICompositeHierarchy.SWITCH_VIEW_COMPOSITE_CLICKED: entityId = notification.getBody(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, EntityUtils.getByUniqueId(entityId)); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, EntityUtils.getByUniqueId(entityId)); break; default: break; diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBox.java b/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBox.java index e58ed500..5208b223 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBox.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBox.java @@ -30,7 +30,6 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Pools; import com.kotcrab.vis.ui.VisUI; import com.kotcrab.vis.ui.widget.*; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.MainItemComponent; import games.rednblack.editor.renderer.components.NodeComponent; import games.rednblack.editor.renderer.components.ParentNodeComponent; @@ -40,6 +39,7 @@ import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; import java.util.Comparator; import java.util.Set; @@ -51,7 +51,7 @@ public class UIItemsTreeBox extends UICollapsibleBox { protected ComponentMapper zIndexComponentMapper; public static final String ITEMS_SELECTED = "games.rednblack.editor.view.ui.box.UIItemsTreeBox." + ".ITEMS_SELECTED"; - private final HyperLap2DFacade facade; + private final Facade facade; private final VisTable treeTable; private Tree tree; private VisScrollPane scroller; @@ -71,7 +71,7 @@ public class UIItemsTreeBox extends UICollapsibleBox { public UIItemsTreeBox() { super("Items Tree", 180); setMovable(false); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); treeTable = new VisTable(); treeTable.left(); zUp = StandardWidgetsFactory.createImageButton("arrow-button"); @@ -271,7 +271,7 @@ public class UIItemsTreeBox extends UICollapsibleBox { UIItemsTreeValue selected = selection.first().getValue(); int item = EntityUtils.getByUniqueId(selected.entityId); if (EntityUtils.getType(item) == EntityFactory.COMPOSITE_TYPE) { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, item); + Facade.getInstance().sendNotification(MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, item); } } } diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBoxMediator.java index ca722be6..42a9695f 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UIItemsTreeBoxMediator.java @@ -2,7 +2,6 @@ package games.rednblack.editor.view.ui.box; import com.badlogic.gdx.scenes.scene2d.utils.Selection; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.AddSelectionCommand; import games.rednblack.editor.controller.commands.ItemsMoveCommand; import games.rednblack.editor.controller.commands.ReleaseSelectionCommand; @@ -12,7 +11,9 @@ import games.rednblack.editor.renderer.data.LayerItemVO; import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.HashSet; import java.util.Set; @@ -30,21 +31,19 @@ public class UIItemsTreeBoxMediator extends PanelMediator { } @Override - public String[] listNotificationInterests() { - String[] parentNotifications = super.listNotificationInterests(); - return Stream.of(parentNotifications, new String[]{ - MsgAPI.SCENE_LOADED, + public void listNotificationInterests(Interests interests) { + super.listNotificationInterests(interests); + interests.add(MsgAPI.SCENE_LOADED, MsgAPI.NEW_ITEM_ADDED, UIItemsTreeBox.ITEMS_SELECTED, - SetSelectionCommand.DONE, - AddSelectionCommand.DONE, + SetSelectionCommand.DONE); + interests.add(AddSelectionCommand.DONE, ReleaseSelectionCommand.DONE, DeleteResourceCommand.DONE, - MsgAPI.DELETE_ITEMS_COMMAND_DONE, - MsgAPI.ACTION_Z_INDEX_CHANGED, + MsgAPI.DELETE_ITEMS_COMMAND_DONE); + interests.add(MsgAPI.ACTION_Z_INDEX_CHANGED, MsgAPI.ACTION_CAMERA_CHANGE_COMPOSITE, - MsgAPI.ITEM_DATA_UPDATED - }).flatMap(Stream::of).toArray(String[]::new); + MsgAPI.ITEM_DATA_UPDATED); } @Override @@ -100,6 +99,6 @@ public class UIItemsTreeBoxMediator extends PanelMediator { private void sendSelectionNotification(Set items) { Set ntfItems = (items.isEmpty())? null : items; - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_SET_SELECTION, ntfItems); + Facade.getInstance().sendNotification(MsgAPI.ACTION_SET_SELECTION, ntfItems); } } \ No newline at end of file diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UILayerBox.java b/src/main/java/games/rednblack/editor/view/ui/box/UILayerBox.java index 2b5bb0aa..9840f25e 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UILayerBox.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UILayerBox.java @@ -32,11 +32,11 @@ import com.kotcrab.vis.ui.widget.VisImageButton; import com.kotcrab.vis.ui.widget.VisScrollPane; import com.kotcrab.vis.ui.widget.VisTable; import com.kotcrab.vis.ui.widget.VisTextField; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.event.KeyboardListener; import games.rednblack.editor.renderer.data.LayerItemVO; import games.rednblack.editor.utils.InputFilters; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 4/17/2015. @@ -57,7 +57,7 @@ public class UILayerBox extends UICollapsibleBox { private final DragAndDrop dragAndDrop; public int currentSelectedLayerIndex = 0; - private HyperLap2DFacade facade; + private Facade facade; private VisTable contentTable; private VisTable bottomPane; private VisScrollPane scrollPane; @@ -70,7 +70,7 @@ public class UILayerBox extends UICollapsibleBox { public UILayerBox() { super("Layers"); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); setMovable(false); contentTable = new VisTable(); @@ -250,7 +250,7 @@ public class UILayerBox extends UICollapsibleBox { // Send notification with the two layers to swap. // TODO - change from swap to repositioning source above target. String[] notificationPayload = {sourceLayer, targetLayer}; - HyperLap2DFacade.getInstance().sendNotification(LAYER_DROPPED, notificationPayload); + Facade.getInstance().sendNotification(LAYER_DROPPED, notificationPayload); } } } diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UILayerBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/UILayerBoxMediator.java index 3f1244b9..85efb6e8 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UILayerBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UILayerBoxMediator.java @@ -21,7 +21,6 @@ package games.rednblack.editor.view.ui.box; import com.badlogic.gdx.utils.Array; import com.kotcrab.vis.ui.util.dialog.Dialogs; import com.kotcrab.vis.ui.util.dialog.InputDialogListener; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.*; import games.rednblack.editor.renderer.components.LayerMapComponent; import games.rednblack.editor.renderer.components.NodeComponent; @@ -31,9 +30,10 @@ import games.rednblack.editor.utils.runtime.EntityUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; -import java.util.ArrayList; import java.util.HashSet; import java.util.Set; import java.util.stream.Stream; @@ -51,34 +51,29 @@ public class UILayerBoxMediator extends PanelMediator { public UILayerBoxMediator() { super(NAME, new UILayerBox()); - facade = HyperLap2DFacade.getInstance(); } @Override - public String[] listNotificationInterests() { - String[] parentNotifications = super.listNotificationInterests(); - return Stream.of(parentNotifications, new String[]{ - MsgAPI.SCENE_LOADED, + public void listNotificationInterests(Interests interests) { + super.listNotificationInterests(interests); + interests.add(MsgAPI.SCENE_LOADED, UILayerBox.LAYER_ROW_CLICKED, UILayerBox.CREATE_NEW_LAYER, - UILayerBox.CHANGE_LAYER_NAME, - UILayerBox.DELETE_LAYER, + UILayerBox.CHANGE_LAYER_NAME); + interests.add(UILayerBox.DELETE_LAYER, UILayerBox.LOCK_LAYER, UILayerBox.UNLOCK_LAYER, - UILayerBox.HIDE_LAYER, - UILayerBox.UNHIDE_LAYER, + UILayerBox.HIDE_LAYER); + interests.add(UILayerBox.UNHIDE_LAYER, CompositeCameraChangeCommand.DONE, MsgAPI.ITEM_SELECTION_CHANGED, - MsgAPI.NEW_ITEM_ADDED, - UILayerBox.LAYER_DROPPED, + MsgAPI.NEW_ITEM_ADDED); + interests.add(UILayerBox.LAYER_DROPPED, DeleteLayerCommand.DONE, DeleteLayerCommand.UNDONE, - NewLayerCommand.DONE, - LayerJumpCommand.DONE, - RenameLayerCommand.DONE - - - }).flatMap(Stream::of).toArray(String[]::new); + NewLayerCommand.DONE); + interests.add(LayerJumpCommand.DONE, + RenameLayerCommand.DONE); } @Override 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 2ffb6254..6ab2be8b 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 @@ -20,7 +20,6 @@ package games.rednblack.editor.view.ui.box; import com.badlogic.gdx.utils.reflect.ClassReflection; import com.badlogic.gdx.utils.reflect.ReflectionException; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.AddComponentToItemCommand; import games.rednblack.editor.controller.commands.RemoveComponentFromItemCommand; import games.rednblack.editor.renderer.components.shape.CircleShapeComponent; @@ -43,8 +42,10 @@ 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 org.puremvc.java.interfaces.IMediator; -import org.puremvc.java.interfaces.INotification; +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; @@ -65,7 +66,6 @@ public class UIMultiPropertyBoxMediator extends PanelMediator { @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); registerTabMediators(); initTabs(); } @@ -79,14 +78,12 @@ public class UIResourcesBoxMediator extends PanelMediator { } @Override - public String[] listNotificationInterests() { - String[] parentNotifications = super.listNotificationInterests(); - return Stream.of(parentNotifications, new String[]{ - ProjectManager.PROJECT_OPENED, + public void listNotificationInterests(Interests interests) { + super.listNotificationInterests(interests); + interests.add(ProjectManager.PROJECT_OPENED, ProjectManager.PROJECT_DATA_UPDATED, MsgAPI.ADD_TARGET, - MsgAPI.REMOVE_TARGET - }).flatMap(Stream::of).toArray(String[]::new); + MsgAPI.REMOVE_TARGET); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UIToolBox.java b/src/main/java/games/rednblack/editor/view/ui/box/UIToolBox.java index 9db36023..f9f6452b 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UIToolBox.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UIToolBox.java @@ -23,10 +23,10 @@ import com.badlogic.gdx.scenes.scene2d.ui.ButtonGroup; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.kotcrab.vis.ui.widget.VisImageButton; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.tools.Tool; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; import java.util.HashMap; @@ -83,7 +83,7 @@ public class UIToolBox extends VisTable { @Override public void clicked(InputEvent event, float x, float y) { super.clicked(event, x, y); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); facade.sendNotification(MsgAPI.TOOL_CLICKED, toolId); } } diff --git a/src/main/java/games/rednblack/editor/view/ui/box/UIToolBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/UIToolBoxMediator.java index 801773ca..71bd8d43 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/UIToolBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/UIToolBoxMediator.java @@ -20,13 +20,13 @@ package games.rednblack.editor.view.ui.box; import com.kotcrab.vis.ui.widget.Separator; import com.kotcrab.vis.ui.widget.VisImageButton; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.SandboxMediator; import games.rednblack.editor.view.stage.tools.*; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.tools.Tool; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.HashMap; @@ -43,8 +43,6 @@ public class UIToolBoxMediator extends Mediator { @Override public void onRegister() { - facade = HyperLap2DFacade.getInstance(); - toolList = new HashMap<>(); initToolList(); currentTool = SelectionTool.NAME; @@ -80,11 +78,9 @@ public class UIToolBoxMediator extends Mediator { } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.TOOL_CLICKED, - SandboxMediator.SANDBOX_TOOL_CHANGED - }; + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.TOOL_CLICKED, + SandboxMediator.SANDBOX_TOOL_CHANGED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIGridBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIGridBoxMediator.java index ef2aef5a..83054900 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIGridBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIGridBoxMediator.java @@ -21,8 +21,9 @@ package games.rednblack.editor.view.ui.box.bottom; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by azakhary on 4/15/2015. @@ -36,14 +37,12 @@ public class UIGridBoxMediator extends Mediator { } @Override - public String[] listNotificationInterests() { - return new String[]{ - ProjectManager.PROJECT_OPENED, + public void listNotificationInterests(Interests interests) { + interests.add(ProjectManager.PROJECT_OPENED, MsgAPI.GRID_SIZE_CHANGED, MsgAPI.LOCK_LINES_CHANGED, - UIGridBox.GRID_SIZE_TEXT_FIELD_UPDATED, - UIGridBox.LOCK_LINES_CHECKBOX_FIELD_UPDATED - }; + UIGridBox.GRID_SIZE_TEXT_FIELD_UPDATED); + interests.add(UIGridBox.LOCK_LINES_CHECKBOX_FIELD_UPDATED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UILivePreviewBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UILivePreviewBoxMediator.java index a346d415..152aa25f 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UILivePreviewBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UILivePreviewBoxMediator.java @@ -5,13 +5,13 @@ import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationGLESFix; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3WindowListener; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.live.LiveScreenAdapter; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.ResolutionManager; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; public class UILivePreviewBoxMediator extends Mediator { private static final String TAG = UILivePreviewBoxMediator.class.getCanonicalName(); @@ -21,18 +21,15 @@ public class UILivePreviewBoxMediator extends Mediator { public UILivePreviewBoxMediator() { super(NAME, new UILivePreviewBox()); - facade = HyperLap2DFacade.getInstance(); resolutionManager = facade.retrieveProxy(ResolutionManager.NAME); } @Override - public String[] listNotificationInterests() { - return new String[]{ - ProjectManager.PROJECT_OPENED, + public void listNotificationInterests(Interests interests) { + interests.add(ProjectManager.PROJECT_OPENED, MsgAPI.SCENE_LOADED, - UILivePreviewBox.LIVE_PREVIEW_CLICKED - }; + UILivePreviewBox.LIVE_PREVIEW_CLICKED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIResolutionBox.java b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIResolutionBox.java index fd814152..3ed9df53 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIResolutionBox.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIResolutionBox.java @@ -27,11 +27,11 @@ import com.badlogic.gdx.utils.Array; import com.kotcrab.vis.ui.VisUI; import com.kotcrab.vis.ui.widget.VisImageButton; import com.kotcrab.vis.ui.widget.VisSelectBox; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ResolutionManager; import games.rednblack.editor.renderer.data.ResolutionEntryVO; import games.rednblack.editor.view.ui.box.UIBaseBox; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; public class UIResolutionBox extends UIBaseBox { private static final String prefix = "games.rednblack.editor.view.ui.box.bottom.UIResolutionBox"; @@ -116,7 +116,7 @@ public class UIResolutionBox extends UIBaseBox { public void clicked(InputEvent event, float x, float y) { super.clicked(event, x, y); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); switch (btnClicked) { case DELETE_RESOLUTION_BTN_CLICKED: if (!deleteBtn.isDisabled()) @@ -137,7 +137,7 @@ public class UIResolutionBox extends UIBaseBox { return; } - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); if (selectedIndex == 0) { facade.sendNotification(CREATE_NEW_RESOLUTION_BTN_CLICKED); return; diff --git a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIResolutionBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIResolutionBoxMediator.java index 7ef3ef67..2e9286a6 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIResolutionBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIResolutionBoxMediator.java @@ -20,15 +20,15 @@ package games.rednblack.editor.view.ui.box.bottom; import com.badlogic.gdx.math.Vector3; import com.kotcrab.vis.ui.util.dialog.Dialogs; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.ResolutionManager; import games.rednblack.editor.renderer.data.ResolutionEntryVO; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.ui.dialog.CreateNewResolutionDialog; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by sargis on 4/8/15. @@ -45,20 +45,17 @@ public class UIResolutionBoxMediator extends Mediator { @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); projectManager = facade.retrieveProxy(ProjectManager.NAME); } @Override - public String[] listNotificationInterests() { - return new String[]{ - ProjectManager.PROJECT_OPENED, + public void listNotificationInterests(Interests interests) { + interests.add(ProjectManager.PROJECT_OPENED, UIResolutionBox.CHANGE_RESOLUTION_BTN_CLICKED, UIResolutionBox.DELETE_RESOLUTION_BTN_CLICKED, - MsgAPI.ACTION_REPACK, - ResolutionManager.RESOLUTION_LIST_CHANGED, - CreateNewResolutionDialog.CLOSE_DIALOG - }; + MsgAPI.ACTION_REPACK); + interests.add(ResolutionManager.RESOLUTION_LIST_CHANGED, + CreateNewResolutionDialog.CLOSE_DIALOG); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UISceneBox.java b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UISceneBox.java index 43313bb0..18aa9454 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UISceneBox.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UISceneBox.java @@ -8,12 +8,12 @@ import com.badlogic.gdx.utils.Array; import com.kotcrab.vis.ui.VisUI; import com.kotcrab.vis.ui.widget.VisImageButton; import com.kotcrab.vis.ui.widget.VisSelectBox; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.renderer.data.SceneVO; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.ui.box.UIBaseBox; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; public class UISceneBox extends UIBaseBox { private static final String prefix = "games.rednblack.editor.view.ui.box.bottom.UISceneBox"; @@ -77,7 +77,7 @@ public class UISceneBox extends UIBaseBox { return; } - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); if (selectedIndex == 0) { facade.sendNotification(CREATE_NEW_SCENE_BTN_CLICKED); return; diff --git a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UISceneBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UISceneBoxMediator.java index a7d03894..a30b2f0f 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UISceneBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UISceneBoxMediator.java @@ -2,14 +2,14 @@ package games.rednblack.editor.view.ui.box.bottom; import com.kotcrab.vis.ui.util.dialog.Dialogs; import com.kotcrab.vis.ui.util.dialog.InputDialogListener; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.SceneDataManager; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.ui.validator.StringNameValidator; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; public class UISceneBoxMediator extends Mediator { private static final String TAG = UISceneBoxMediator.class.getCanonicalName(); @@ -17,18 +17,15 @@ public class UISceneBoxMediator extends Mediator { public UISceneBoxMediator() { super(NAME, new UISceneBox()); - facade = HyperLap2DFacade.getInstance(); } @Override - public String[] listNotificationInterests() { - return new String[]{ - ProjectManager.PROJECT_OPENED, + public void listNotificationInterests(Interests interests) { + interests.add(ProjectManager.PROJECT_OPENED, MsgAPI.SCENE_LOADED, UISceneBox.CHANGE_SCENE_BTN_CLICKED, - UISceneBox.CREATE_NEW_SCENE_BTN_CLICKED, - UISceneBox.DELETE_CURRENT_SCENE_BTN_CLICKED - }; + UISceneBox.CREATE_NEW_SCENE_BTN_CLICKED); + interests.add(UISceneBox.DELETE_CURRENT_SCENE_BTN_CLICKED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIZoomBox.java b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIZoomBox.java index 6c2c4e64..23c83c91 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIZoomBox.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIZoomBox.java @@ -25,10 +25,10 @@ import com.badlogic.gdx.utils.Align; import com.kotcrab.vis.ui.VisUI; import com.kotcrab.vis.ui.widget.VisImageButton; import com.kotcrab.vis.ui.widget.VisTextField; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.event.KeyboardListener; import games.rednblack.editor.view.ui.box.UIBaseBox; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; /** * Created by sargis on 4/27/15. @@ -110,7 +110,7 @@ public class UIZoomBox extends UIBaseBox { @Override public void clicked(InputEvent event, float x, float y) { super.clicked(event, x, y); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); facade.sendNotification(ZOOM_SHIFT_REQUESTED, zoomDevider); } } diff --git a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIZoomBoxMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIZoomBoxMediator.java index 54510e3c..244974a1 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIZoomBoxMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/bottom/UIZoomBoxMediator.java @@ -18,13 +18,13 @@ package games.rednblack.editor.view.ui.box.bottom; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import org.apache.commons.lang3.math.NumberUtils; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; /** * Created by sargis on 4/9/15. @@ -40,19 +40,11 @@ public class UIZoomBoxMediator extends Mediator { } @Override - public void onRegister() { - facade = HyperLap2DFacade.getInstance(); - } - - - @Override - public String[] listNotificationInterests() { - return new String[]{ - ProjectManager.PROJECT_OPENED, + public void listNotificationInterests(Interests interests) { + interests.add(ProjectManager.PROJECT_OPENED, UIZoomBox.ZOOM_SHIFT_REQUESTED, UIZoomBox.ZOOM_VALUE_CHANGED, - MsgAPI.ZOOM_CHANGED - }; + MsgAPI.ZOOM_CHANGED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIActionsTab.java b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIActionsTab.java index 6cab3dbc..33a0d6f2 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIActionsTab.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIActionsTab.java @@ -9,12 +9,12 @@ import com.kotcrab.vis.ui.util.dialog.InputDialogListener; import com.kotcrab.vis.ui.widget.VisImageButton; import com.kotcrab.vis.ui.widget.VisScrollPane; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.DraggableResource; import games.rednblack.editor.view.ui.validator.StringNameValidator; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; public class UIActionsTab extends UIResourcesTab { @@ -41,7 +41,7 @@ public class UIActionsTab extends UIResourcesTab { if (input == null || input.equals("")) { return; } - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.OPEN_NODE_EDITOR, input); + Facade.getInstance().sendNotification(MsgAPI.OPEN_NODE_EDITOR, input); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIActionsTabMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIActionsTabMediator.java index a2817feb..b128a811 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIActionsTabMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIActionsTabMediator.java @@ -1,15 +1,16 @@ package games.rednblack.editor.view.ui.box.resourcespanel; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.resource.DeleteLibraryAction; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.renderer.data.GraphVO; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.DraggableResource; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.list.LibraryActionResource; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import org.apache.commons.lang3.ArrayUtils; -import org.puremvc.java.interfaces.INotification; import java.util.HashMap; @@ -25,13 +26,9 @@ public class UIActionsTabMediator extends UIResourcesTabMediator { } @Override - public String[] listNotificationInterests() { - String[] listNotification = super.listNotificationInterests(); - - listNotification = ArrayUtils.add(listNotification, MsgAPI.LIBRARY_ACTIONS_UPDATED); - listNotification = ArrayUtils.add(listNotification, DeleteLibraryAction.DONE); - - return listNotification; + public void listNotificationInterests(Interests interests) { + super.listNotificationInterests(interests); + interests.add(MsgAPI.LIBRARY_ACTIONS_UPDATED, DeleteLibraryAction.DONE); } @Override @@ -50,7 +47,7 @@ public class UIActionsTabMediator extends UIResourcesTabMediator { @Override protected void initList(String searchText) { searchText = searchText.toLowerCase(); - ProjectManager projectManager = HyperLap2DFacade.getInstance().retrieveProxy(ProjectManager.NAME); + ProjectManager projectManager = Facade.getInstance().retrieveProxy(ProjectManager.NAME); HashMap items = projectManager.currentProjectInfoVO.libraryActions; itemArray.clear(); diff --git a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIAnimationsTab.java b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIAnimationsTab.java index 6c2c8eda..26496bce 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIAnimationsTab.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIAnimationsTab.java @@ -22,10 +22,10 @@ import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.utils.Array; import com.kotcrab.vis.ui.widget.VisScrollPane; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.ui.box.UIResourcesBoxMediator; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.DraggableResource; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 4/17/2015. @@ -57,7 +57,7 @@ public class UIAnimationsTab extends UIResourcesTab { @Override protected VisScrollPane crateScrollPane() { animationsTable = new VisTable(); - HyperLap2DFacade.getInstance().sendNotification(UIResourcesBoxMediator.ADD_RESOURCES_BOX_TABLE_SELECTION_MANAGEMENT, animationsTable); + Facade.getInstance().sendNotification(UIResourcesBoxMediator.ADD_RESOURCES_BOX_TABLE_SELECTION_MANAGEMENT, animationsTable); VisScrollPane scrollPane = StandardWidgetsFactory.createScrollPane(animationsTable); scrollPane.setScrollingDisabled(true, false); return scrollPane; diff --git a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIAnimationsTabMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIAnimationsTabMediator.java index 96ef9660..76ac24bb 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIAnimationsTabMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIAnimationsTabMediator.java @@ -30,8 +30,9 @@ import games.rednblack.editor.view.ui.box.resourcespanel.draggable.box.BoxItemRe import games.rednblack.editor.view.ui.box.resourcespanel.draggable.box.SpineResource; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.box.SpriteResource; import games.rednblack.h2d.extension.spine.SpineItemType; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import org.apache.commons.lang3.ArrayUtils; -import org.puremvc.java.interfaces.INotification; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -53,11 +54,9 @@ public class UIAnimationsTabMediator extends UIResourcesTabMediator { @@ -16,11 +17,9 @@ public class UIFilterMenuMediator extends Mediator { } @Override - public String[] listNotificationInterests() { - return new String[]{ - UIFilterMenu.SHOW_FILTER_MENU, - MsgAPI.ADD_RESOURCES_BOX_FILTER - }; + public void listNotificationInterests(Interests interests) { + interests.add(UIFilterMenu.SHOW_FILTER_MENU, + MsgAPI.ADD_RESOURCES_BOX_FILTER); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIImagesTab.java b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIImagesTab.java index 5aecc60f..922d8351 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIImagesTab.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIImagesTab.java @@ -22,10 +22,10 @@ import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.utils.Array; import com.kotcrab.vis.ui.widget.VisScrollPane; import com.kotcrab.vis.ui.widget.VisTable; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.ui.box.UIResourcesBoxMediator; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.DraggableResource; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 4/17/2015. @@ -41,7 +41,7 @@ public class UIImagesTab extends UIResourcesTab { @Override protected VisScrollPane crateScrollPane() { imagesTable = new VisTable(); - HyperLap2DFacade.getInstance().sendNotification(UIResourcesBoxMediator.ADD_RESOURCES_BOX_TABLE_SELECTION_MANAGEMENT, imagesTable); + Facade.getInstance().sendNotification(UIResourcesBoxMediator.ADD_RESOURCES_BOX_TABLE_SELECTION_MANAGEMENT, imagesTable); return StandardWidgetsFactory.createScrollPane(imagesTable); } diff --git a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIImagesTabMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIImagesTabMediator.java index bf520815..295b40ae 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIImagesTabMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIImagesTabMediator.java @@ -34,8 +34,8 @@ import games.rednblack.editor.view.ui.box.resourcespanel.draggable.box.ImageReso import games.rednblack.editor.view.ui.box.resourcespanel.draggable.box.TinyVGResource; import games.rednblack.editor.view.ui.widget.actors.basic.WhitePixel; import games.rednblack.h2d.extension.tinyvg.CpuTinyVGShapeDrawer; -import org.apache.commons.lang3.ArrayUtils; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by azakhary on 4/17/2015. @@ -54,13 +54,9 @@ public class UIImagesTabMediator extends UIResourcesTabMediator { private TinyVGShapeDrawer drawer; @Override - public String[] listNotificationInterests() { - String[] listNotification = super.listNotificationInterests(); - - listNotification = ArrayUtils.add(listNotification, DeleteImageResource.DONE); - listNotification = ArrayUtils.add(listNotification, DeleteTinyVGResource.DONE); - - return listNotification; + public void listNotificationInterests(Interests interests) { + super.listNotificationInterests(interests); + interests.add( DeleteImageResource.DONE, DeleteTinyVGResource.DONE); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UILibraryItemsTabMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UILibraryItemsTabMediator.java index e006fa98..63d7109d 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UILibraryItemsTabMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UILibraryItemsTabMediator.java @@ -19,7 +19,6 @@ package games.rednblack.editor.view.ui.box.resourcespanel; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.resource.DeleteLibraryItem; import games.rednblack.editor.controller.commands.resource.ExportLibraryItemCommand; import games.rednblack.editor.factory.ItemFactory; @@ -29,8 +28,9 @@ import games.rednblack.editor.renderer.factory.EntityFactory; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.DraggableResource; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.list.LibraryItemResource; import games.rednblack.h2d.common.MsgAPI; -import org.apache.commons.lang3.ArrayUtils; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.HashMap; @@ -49,14 +49,9 @@ public class UILibraryItemsTabMediator extends UIResourcesTabMediator items = projectManager.currentProjectInfoVO.libraryItems; itemArray.clear(); diff --git a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIParticleEffectsTabMediator.java b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIParticleEffectsTabMediator.java index b6e6103b..20554690 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIParticleEffectsTabMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/UIParticleEffectsTabMediator.java @@ -30,8 +30,9 @@ import games.rednblack.editor.view.ui.box.resourcespanel.draggable.DraggableReso import games.rednblack.editor.view.ui.box.resourcespanel.draggable.list.ParticleEffectResource; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.list.TalosResource; import games.rednblack.h2d.extension.talos.TalosItemType; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import org.apache.commons.lang3.ArrayUtils; -import org.puremvc.java.interfaces.INotification; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -54,11 +55,9 @@ public class UIParticleEffectsTabMediator extends UIResourcesTabMediator extends M @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); settingsManager = facade.retrieveProxy(SettingsManager.NAME); } + @Override - public String[] listNotificationInterests() { - return new String[]{ - ProjectManager.PROJECT_OPENED, + public void listNotificationInterests(Interests interests) { + interests.add(ProjectManager.PROJECT_OPENED, ProjectManager.PROJECT_DATA_UPDATED, MsgAPI.ADD_RESOURCES_BOX_FILTER, - MsgAPI.UPDATE_RESOURCES_LIST, - CHANGE_ACTIVE_FILTER - }; + MsgAPI.UPDATE_RESOURCES_LIST); + interests.add(CHANGE_ACTIVE_FILTER); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/draggable/DraggableResource.java b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/draggable/DraggableResource.java index aa7554fb..9dce5aa0 100644 --- a/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/draggable/DraggableResource.java +++ b/src/main/java/games/rednblack/editor/view/ui/box/resourcespanel/draggable/DraggableResource.java @@ -23,7 +23,6 @@ import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ResourceManager; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; @@ -31,6 +30,7 @@ import games.rednblack.editor.view.ui.box.UIResourcesBoxMediator; import games.rednblack.editor.view.ui.box.resourcespanel.draggable.box.BoxItemResource; import games.rednblack.h2d.common.ResourcePayloadObject; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; import java.util.function.BiFunction; @@ -70,7 +70,7 @@ public class DraggableResource extends DragAndDrop implements Comparable { private static final String TAG = AboutDialogMediator.class.getCanonicalName(); @@ -16,16 +16,8 @@ public class AboutDialogMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - HelpMenu.ABOUT_DIALOG_OPEN - }; + public void listNotificationInterests(Interests interests) { + interests.add(HelpMenu.ABOUT_DIALOG_OPEN); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/AnimationsPackDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/AnimationsPackDialogMediator.java index 9bb36170..2feb113e 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/AnimationsPackDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/AnimationsPackDialogMediator.java @@ -1,7 +1,6 @@ package games.rednblack.editor.view.ui.dialog; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.resource.DeleteImageResource; import games.rednblack.editor.controller.commands.resource.DeleteSpineAnimation; import games.rednblack.editor.controller.commands.resource.DeleteSpriteAnimation; @@ -11,8 +10,9 @@ import games.rednblack.editor.view.menu.ResourcesMenu; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; public class AnimationsPackDialogMediator extends Mediator { private static final String TAG = AnimationsPackDialogMediator.class.getCanonicalName(); @@ -28,26 +28,18 @@ public class AnimationsPackDialogMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - ResourcesMenu.OPEN_ANIMATIONS_PACK, + public void listNotificationInterests(Interests interests) { + interests.add(ResourcesMenu.OPEN_ANIMATIONS_PACK, ProjectManager.PROJECT_OPENED, NEW_IMAGES_PACK, - MOVE_REGION_TO_PACK, - UPDATE_CURRENT_LIST, + MOVE_REGION_TO_PACK); + interests.add(UPDATE_CURRENT_LIST, REMOVE_PACK, MsgAPI.UPDATE_ATLAS_PACK_LIST, - ProjectManager.PROJECT_DATA_UPDATED, - DeleteImageResource.DONE, + ProjectManager.PROJECT_DATA_UPDATED); + interests.add(DeleteImageResource.DONE, DeleteSpineAnimation.DONE, - DeleteSpriteAnimation.DONE - }; + DeleteSpriteAnimation.DONE); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/AtlasesPackDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/AtlasesPackDialog.java index 66ef57d9..8b4e3323 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/AtlasesPackDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/AtlasesPackDialog.java @@ -18,7 +18,6 @@ import com.kotcrab.vis.ui.util.adapter.SimpleListAdapter; import com.kotcrab.vis.ui.util.dialog.Dialogs; import com.kotcrab.vis.ui.util.dialog.OptionDialogAdapter; import com.kotcrab.vis.ui.widget.*; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.utils.ResourceListAdapter; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.H2DDialog; @@ -27,6 +26,7 @@ import games.rednblack.h2d.common.view.ui.listener.ScrollFocusListener; import games.rednblack.h2d.common.view.ui.widget.imagetabbedpane.ImageTab; import games.rednblack.h2d.common.view.ui.widget.imagetabbedpane.ImageTabbedPane; import games.rednblack.h2d.common.view.ui.widget.imagetabbedpane.ImageTabbedPaneListener; +import games.rednblack.puremvc.Facade; import java.util.Set; @@ -41,7 +41,7 @@ public class AtlasesPackDialog extends H2DDialog { private final VisTextButton insertButton, removeButton; private final VisLabel currentSelectedPackLabel; - private final HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + private final Facade facade = Facade.getInstance(); private final Array mainList = new Array<>(); private final Array currentList = new Array<>(); diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/AutoTraceDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/AutoTraceDialogMediator.java index c5f42a9c..5f0d49bc 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/AutoTraceDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/AutoTraceDialogMediator.java @@ -3,7 +3,6 @@ package games.rednblack.editor.view.ui.dialog; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Array; import com.kotcrab.vis.ui.util.dialog.Dialogs; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.shape.PolygonShapeComponent; import games.rednblack.editor.renderer.components.TextureRegionComponent; import games.rednblack.editor.utils.poly.PolygonUtils; @@ -15,8 +14,10 @@ import games.rednblack.editor.view.ui.FollowersUIMediator; import games.rednblack.editor.view.ui.followers.BasicFollower; import games.rednblack.editor.view.ui.followers.PolygonFollower; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.stream.Stream; @@ -32,17 +33,9 @@ public class AutoTraceDialogMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - AutoTraceDialog.OPEN_DIALOG, - AutoTraceDialog.AUTO_TRACE_BUTTON_CLICKED - }; + public void listNotificationInterests(Interests interests) { + interests.add(AutoTraceDialog.OPEN_DIALOG, + AutoTraceDialog.AUTO_TRACE_BUTTON_CLICKED); } @Override @@ -80,13 +73,13 @@ public class AutoTraceDialogMediator extends Mediator { polygonShapeComponent.vertices = new Array<>(points); polygonShapeComponent.polygonizedVertices = PolygonUtils.polygonize(points); - FollowersUIMediator followersUIMediator = HyperLap2DFacade.getInstance().retrieveMediator(FollowersUIMediator.NAME); + FollowersUIMediator followersUIMediator = Facade.getInstance().retrieveMediator(FollowersUIMediator.NAME); BasicFollower follower = followersUIMediator.getFollower(entity); PolygonFollower polygonFollower = (PolygonFollower) follower.getSubFollower(PolygonFollower.class); if (polygonFollower != null) polygonFollower.update(); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); + Facade.getInstance().sendNotification(MsgAPI.ITEM_DATA_UPDATED, entity); } } else { Dialogs.showErrorDialog(Sandbox.getInstance().getUIStage(), "Auto Trace can be performed only for Image type.").padBottom(20).pack(); diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/CodeEditorDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/CodeEditorDialog.java index 04bce841..c97fa100 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/CodeEditorDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/CodeEditorDialog.java @@ -7,12 +7,12 @@ import com.kotcrab.vis.ui.util.highlight.Highlighter; import com.kotcrab.vis.ui.widget.H2DHighlightTextArea; import com.kotcrab.vis.ui.widget.HighlightTextArea; import com.kotcrab.vis.ui.widget.VisTextButton; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.code.syntax.ProgrammingSyntax; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.H2DDialog; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; import games.rednblack.h2d.common.view.ui.listener.ScrollFocusListener; +import games.rednblack.puremvc.Facade; public class CodeEditorDialog extends H2DDialog { @@ -75,7 +75,7 @@ public class CodeEditorDialog extends H2DDialog { @Override public void clicked(InputEvent event, float x, float y) { super.clicked(event, x, y); - HyperLap2DFacade.getInstance().sendNotification(notificationCallback, textArea.getText(), notificationCallbackType); + Facade.getInstance().sendNotification(notificationCallback, textArea.getText(), notificationCallbackType); close(); } }); diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/CodeEditorDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/CodeEditorDialogMediator.java index 1f5f9d4c..9e247087 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/CodeEditorDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/CodeEditorDialogMediator.java @@ -1,12 +1,12 @@ package games.rednblack.editor.view.ui.dialog; import com.kotcrab.vis.ui.util.highlight.Highlighter; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.io.File; import java.io.IOException; @@ -24,17 +24,9 @@ public class CodeEditorDialogMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.OPEN_CODE_EDITOR, - MsgAPI.PROJECT_FILE_MODIFIED - }; + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.OPEN_CODE_EDITOR, + MsgAPI.PROJECT_FILE_MODIFIED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/ConsoleDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/ConsoleDialog.java index 72e7e00f..ce5c752b 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/ConsoleDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/ConsoleDialog.java @@ -15,13 +15,13 @@ import com.kotcrab.vis.ui.util.highlight.Highlighter; import com.kotcrab.vis.ui.widget.H2DHighlightTextArea; import com.kotcrab.vis.ui.widget.HighlightTextArea; import com.kotcrab.vis.ui.widget.VisImageButton; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.H2DDialog; import games.rednblack.h2d.common.util.H2DHighlight; import games.rednblack.h2d.common.view.ui.Cursors; import games.rednblack.h2d.common.view.ui.listener.CursorListener; import games.rednblack.h2d.common.view.ui.listener.ScrollFocusListener; +import games.rednblack.puremvc.Facade; import org.apache.commons.lang3.RegExUtils; import java.util.HashMap; @@ -95,7 +95,7 @@ public class ConsoleDialog extends H2DDialog { ScrollPane scrollPane = textArea.createCompatibleScrollPane(); scrollPane.addListener(new ScrollFocusListener()); - textArea.addListener(new CursorListener(Cursors.TEXT, HyperLap2DFacade.getInstance())); + textArea.addListener(new CursorListener(Cursors.TEXT, Facade.getInstance())); getContentTable().add(scrollPane).padTop(5).grow().row(); } diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/ConsoleDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/ConsoleDialogMediator.java index fbb5a3da..9aa34f7e 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/ConsoleDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/ConsoleDialogMediator.java @@ -1,11 +1,11 @@ package games.rednblack.editor.view.ui.dialog; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; public class ConsoleDialogMediator extends Mediator { @@ -17,17 +17,9 @@ public class ConsoleDialogMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.OPEN_CONSOLE, - MsgAPI.WRITE_TO_CONSOLE - }; + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.OPEN_CONSOLE, + MsgAPI.WRITE_TO_CONSOLE); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/CreateNewResolutionDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/CreateNewResolutionDialog.java index e775e5cf..7917d4ec 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/CreateNewResolutionDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/CreateNewResolutionDialog.java @@ -23,11 +23,11 @@ import com.badlogic.gdx.scenes.scene2d.ui.ButtonGroup; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.kotcrab.vis.ui.widget.*; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.data.ResolutionEntryVO; import games.rednblack.editor.view.ui.validator.StringNameValidator; import games.rednblack.h2d.common.H2DDialog; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; public class CreateNewResolutionDialog extends H2DDialog { private static final String prefix = "games.rednblack.editor.view.ui.dialog.CreateNewResolutionDialog"; @@ -85,7 +85,7 @@ public class CreateNewResolutionDialog extends H2DDialog { @Override public void close() { super.close(); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); facade.sendNotification(CLOSE_DIALOG); } @@ -96,7 +96,7 @@ public class CreateNewResolutionDialog extends H2DDialog { if (nameVisTextField.getText().equals("") || widthVisTextField.getText().equals("") || heightVisTextField.getText().equals("")) { return; } - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); ResolutionEntryVO resolutionEntryVO = new ResolutionEntryVO(); resolutionEntryVO.name = nameVisTextField.getText(); resolutionEntryVO.width = Integer.parseInt(widthVisTextField.getText()); diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/CreateNewResolutionDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/CreateNewResolutionDialogMediator.java index 17adc315..6506f458 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/CreateNewResolutionDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/CreateNewResolutionDialogMediator.java @@ -18,14 +18,14 @@ package games.rednblack.editor.view.ui.dialog; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ResolutionManager; import games.rednblack.editor.renderer.data.ResolutionEntryVO; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.editor.view.ui.box.bottom.UIResolutionBox; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by sargis on 4/9/15. @@ -39,17 +39,9 @@ public class CreateNewResolutionDialogMediator extends Mediator { +public class CreateNoiseDialogMediator extends Mediator { private static final String TAG = CreateNoiseDialogMediator.class.getCanonicalName(); private static final String NAME = TAG; @@ -25,17 +25,9 @@ public class CreateNoiseDialogMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - ResourcesMenu.CREATE_NOISE, - CreateNoiseDialog.ADD_NEW_PLACEHOLDER - }; + public void listNotificationInterests(Interests interests) { + interests.add(ResourcesMenu.CREATE_NOISE, + CreateNoiseDialog.ADD_NEW_PLACEHOLDER); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/CreatePlaceholderDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/CreatePlaceholderDialog.java index 6b4318a6..3371f8f2 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/CreatePlaceholderDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/CreatePlaceholderDialog.java @@ -5,10 +5,10 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.kotcrab.vis.ui.util.Validators; import com.kotcrab.vis.ui.widget.VisTextButton; import com.kotcrab.vis.ui.widget.VisValidatableTextField; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.ui.validator.StringNameValidator; import games.rednblack.h2d.common.H2DDialog; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; public class CreatePlaceholderDialog extends H2DDialog { @@ -18,13 +18,13 @@ public class CreatePlaceholderDialog extends H2DDialog { private final VisValidatableTextField width, height, name; private final VisTextButton generateButton; - private final HyperLap2DFacade facade; + private final Facade facade; public CreatePlaceholderDialog() { super("Create Placeholder"); addCloseButton(); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); name = StandardWidgetsFactory.createValidableTextField(new StringNameValidator()); getContentTable().add("Name:"); diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/CreatePlaceholderDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/CreatePlaceholderDialogMediator.java index d4303c94..7e5769f8 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/CreatePlaceholderDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/CreatePlaceholderDialogMediator.java @@ -4,14 +4,14 @@ import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.PixmapIO; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.view.menu.ResourcesMenu; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.io.File; @@ -24,17 +24,9 @@ public class CreatePlaceholderDialogMediator extends Mediator { private static final String TAG = ImagesPackDialogMediator.class.getCanonicalName(); @@ -28,26 +28,18 @@ public class ImagesPackDialogMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - ResourcesMenu.OPEN_IMAGES_PACK, + public void listNotificationInterests(Interests interests) { + interests.add(ResourcesMenu.OPEN_IMAGES_PACK, ProjectManager.PROJECT_OPENED, NEW_IMAGES_PACK, - MOVE_REGION_TO_PACK, - UPDATE_CURRENT_LIST, + MOVE_REGION_TO_PACK); + interests.add(UPDATE_CURRENT_LIST, REMOVE_PACK, MsgAPI.UPDATE_ATLAS_PACK_LIST, - ProjectManager.PROJECT_DATA_UPDATED, - DeleteImageResource.DONE, + ProjectManager.PROJECT_DATA_UPDATED); + interests.add(DeleteImageResource.DONE, DeleteSpineAnimation.DONE, - DeleteSpriteAnimation.DONE - }; + DeleteSpriteAnimation.DONE); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/ImportSpriteSheetDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/ImportSpriteSheetDialog.java index ff8863cd..13f311f7 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/ImportSpriteSheetDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/ImportSpriteSheetDialog.java @@ -8,11 +8,10 @@ import com.kotcrab.vis.ui.widget.VisTable; import com.kotcrab.vis.ui.widget.VisTextButton; import com.kotcrab.vis.ui.widget.VisValidatableTextField; import com.kotcrab.vis.ui.widget.file.FileChooser; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.h2d.common.H2DDialog; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; import games.rednblack.h2d.common.view.ui.widget.InputFileWidget; -import org.puremvc.java.interfaces.IFacade; +import games.rednblack.puremvc.Facade; public class ImportSpriteSheetDialog extends H2DDialog { private static final String prefix = "games.rednblack.editor.view.ui.dialog.ImportSpriteSheetDialog"; @@ -21,13 +20,13 @@ public class ImportSpriteSheetDialog extends H2DDialog { private final VisValidatableTextField width, height; private final InputFileWidget imagePathField; private final VisTextButton importButton; - private final IFacade facade; + private final Facade facade; public ImportSpriteSheetDialog() { super("Import Sprite Sheet Animation"); addCloseButton(); - this.facade = HyperLap2DFacade.getInstance(); + this.facade = Facade.getInstance(); setModal(true); VisTable fileTable = new VisTable(); diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/ImportSpriteSheetDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/ImportSpriteSheetDialogMediator.java index 89fe8504..109ebc55 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/ImportSpriteSheetDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/ImportSpriteSheetDialogMediator.java @@ -5,15 +5,15 @@ import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.PixmapIO; import com.badlogic.gdx.tools.texturepacker.TexturePacker; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.view.menu.ResourcesMenu; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import org.apache.commons.io.FileUtils; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; import java.io.File; import java.io.IOException; @@ -29,17 +29,9 @@ public class ImportSpriteSheetDialogMediator extends Mediator { private static final String TAG = LoadingBarDialogMediator.class.getCanonicalName(); @@ -16,17 +16,9 @@ public class LoadingBarDialogMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.SHOW_LOADING_DIALOG, - MsgAPI.HIDE_LOADING_DIALOG - }; + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.SHOW_LOADING_DIALOG, + MsgAPI.HIDE_LOADING_DIALOG); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialog.java index e697f9ea..b67e8e01 100755 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialog.java @@ -30,11 +30,11 @@ import com.badlogic.gdx.utils.Align; import com.kotcrab.vis.ui.util.Validators; import com.kotcrab.vis.ui.widget.*; import com.kotcrab.vis.ui.widget.file.FileChooser; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.ui.validator.StringNameValidator; import games.rednblack.h2d.common.H2DDialog; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; import games.rednblack.h2d.common.view.ui.widget.InputFileWidget; +import games.rednblack.puremvc.Facade; import org.apache.commons.lang3.math.NumberUtils; import java.io.File; @@ -180,7 +180,7 @@ public class NewProjectDialog extends H2DDialog { @Override public void clicked(InputEvent event, float x, float y) { super.clicked(event, x, y); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); if (projectName.isInputValid() && pixelsPerWorldUnitField.isInputValid() && originHeightTextField.isInputValid() && originWidthTextField.isInputValid()) { facade.sendNotification(command, workspacePathField.getValue().path() + File.separator + projectName.getText()); } diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialogMediator.java index ea3530da..1a64eee6 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/NewProjectDialogMediator.java @@ -18,14 +18,14 @@ package games.rednblack.editor.view.ui.dialog; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.SettingsManager; import games.rednblack.editor.view.menu.FileMenu; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by sargis on 4/1/15. @@ -39,17 +39,14 @@ public class NewProjectDialogMediator extends Mediator { } @Override - public String[] listNotificationInterests() { - return new String[]{ - FileMenu.NEW_PROJECT, - NewProjectDialog.CREATE_BTN_CLICKED - }; + public void listNotificationInterests(Interests interests) { + interests.add(FileMenu.NEW_PROJECT, + NewProjectDialog.CREATE_BTN_CLICKED); } @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); SettingsManager settingsManager = facade.retrieveProxy(SettingsManager.NAME); viewComponent.setDefaultWorkspacePath(settingsManager.getWorkspacePath().path()); diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/NodeEditorDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/NodeEditorDialog.java index 6df12521..5a6c88ba 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/NodeEditorDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/NodeEditorDialog.java @@ -8,7 +8,6 @@ import com.kotcrab.vis.ui.VisUI; import com.kotcrab.vis.ui.widget.MenuItem; import com.kotcrab.vis.ui.widget.PopupMenu; import com.kotcrab.vis.ui.widget.VisTextButton; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.AddToLibraryAction; import games.rednblack.editor.graph.*; import games.rednblack.editor.graph.actions.ActionFieldType; @@ -35,6 +34,7 @@ import games.rednblack.h2d.common.H2DDialog; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; import games.rednblack.h2d.common.view.ui.widget.H2DPopupMenu; +import games.rednblack.puremvc.Facade; import java.lang.reflect.InvocationTargetException; import java.util.*; @@ -144,7 +144,7 @@ public class NodeEditorDialog extends H2DDialog implements Graph items = projectManager.currentProjectInfoVO.libraryActions; if (items.get(actionName) != null) { diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/NodeEditorDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/NodeEditorDialogMediator.java index 2212abf1..2df14139 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/NodeEditorDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/NodeEditorDialogMediator.java @@ -1,11 +1,11 @@ package games.rednblack.editor.view.ui.dialog; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; public class NodeEditorDialogMediator extends Mediator { private static final String TAG = NodeEditorDialogMediator.class.getCanonicalName(); @@ -16,16 +16,8 @@ public class NodeEditorDialogMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.OPEN_NODE_EDITOR - }; + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.OPEN_NODE_EDITOR); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/SaveProjectDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/SaveProjectDialog.java index 372c2613..82dff205 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/SaveProjectDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/SaveProjectDialog.java @@ -4,11 +4,11 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.kotcrab.vis.ui.widget.VisLabel; import com.kotcrab.vis.ui.widget.VisTextButton; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.renderer.data.SceneVO; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.H2DDialog; +import games.rednblack.puremvc.Facade; public class SaveProjectDialog extends H2DDialog { @@ -33,7 +33,7 @@ public class SaveProjectDialog extends H2DDialog { @Override public void clicked(InputEvent event, float x, float y) { Sandbox sandbox = Sandbox.getInstance(); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); ProjectManager projectManager = facade.retrieveProxy(ProjectManager.NAME); SceneVO vo = sandbox.sceneVoFromItems(); projectManager.saveCurrentProject(vo); diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/SaveProjectDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/SaveProjectDialogMediator.java index 027b59a0..8f89c185 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/SaveProjectDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/SaveProjectDialogMediator.java @@ -1,13 +1,14 @@ package games.rednblack.editor.view.ui.dialog; import games.rednblack.editor.HyperLap2DApp; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; public class SaveProjectDialogMediator extends Mediator { private static final String TAG = SaveProjectDialogMediator.class.getCanonicalName(); @@ -18,16 +19,8 @@ public class SaveProjectDialogMediator extends Mediator { } @Override - public void onRegister() { - super.onRegister(); - facade = HyperLap2DFacade.getInstance(); - } - - @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.CHECK_EDITS_ACTION - }; + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.CHECK_EDITS_ACTION); } @Override @@ -36,7 +29,7 @@ public class SaveProjectDialogMediator extends Mediator { Sandbox sandbox = Sandbox.getInstance(); UIStage uiStage = sandbox.getUIStage(); - HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + Facade facade = Facade.getInstance(); ProjectManager projectManager = facade.retrieveProxy(ProjectManager.NAME); switch (notification.getName()) { diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/SettingsDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/SettingsDialogMediator.java index 9d0e575a..a48c9fea 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/SettingsDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/SettingsDialogMediator.java @@ -1,6 +1,5 @@ package games.rednblack.editor.view.ui.dialog; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.SettingsManager; import games.rednblack.editor.view.menu.FileMenu; import games.rednblack.editor.view.stage.Sandbox; @@ -10,8 +9,9 @@ import games.rednblack.editor.view.ui.settings.PluginsSettings; import games.rednblack.editor.view.ui.settings.SandboxSettings; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.SettingsNodeValue; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; public class SettingsDialogMediator extends Mediator { @@ -25,18 +25,15 @@ public class SettingsDialogMediator extends Mediator { } @Override - public String[] listNotificationInterests() { - return new String[]{ - FileMenu.SETTINGS, + public void listNotificationInterests(Interests interests) { + interests.add(FileMenu.SETTINGS, SettingsDialog.ADD_SETTINGS, - MsgAPI.ADD_PLUGIN_SETTINGS - }; + MsgAPI.ADD_PLUGIN_SETTINGS); } @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); SettingsManager settingsManager = facade.retrieveProxy(SettingsManager.NAME); diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/ShaderManagerDialog.java b/src/main/java/games/rednblack/editor/view/ui/dialog/ShaderManagerDialog.java index a11f2a5e..64f68354 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/ShaderManagerDialog.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/ShaderManagerDialog.java @@ -6,12 +6,12 @@ import com.badlogic.gdx.utils.Array; import com.kotcrab.vis.ui.util.adapter.AbstractListAdapter; import com.kotcrab.vis.ui.util.adapter.SimpleListAdapter; import com.kotcrab.vis.ui.widget.*; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.H2DDialog; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; import games.rednblack.h2d.common.view.ui.listener.ScrollFocusListener; +import games.rednblack.puremvc.Facade; import java.util.Set; @@ -60,7 +60,7 @@ public class ShaderManagerDialog extends H2DDialog { payload[0] = newShaderName.getText(); payload[1] = newShaderTypeSelectBox.getSelectedIndex(); - HyperLap2DFacade.getInstance().sendNotification(CREATE_NEW_SHADER, payload); + Facade.getInstance().sendNotification(CREATE_NEW_SHADER, payload); } }); @@ -108,7 +108,7 @@ public class ShaderManagerDialog extends H2DDialog { editFragment.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { - HyperLap2DFacade.getInstance().sendNotification(EDIT_FRAGMENT_SHADER, item); + Facade.getInstance().sendNotification(EDIT_FRAGMENT_SHADER, item); } }); tableButton.add(editFragment).pad(8); @@ -116,7 +116,7 @@ public class ShaderManagerDialog extends H2DDialog { editVertex.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { - HyperLap2DFacade.getInstance().sendNotification(EDIT_VERTEX_SHADER, item); + Facade.getInstance().sendNotification(EDIT_VERTEX_SHADER, item); } }); tableButton.add(editVertex).pad(8); @@ -124,7 +124,7 @@ public class ShaderManagerDialog extends H2DDialog { deleteButton.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ACTION_DELETE_SHADER, item); + Facade.getInstance().sendNotification(MsgAPI.ACTION_DELETE_SHADER, item); } }); tableButton.add(deleteButton).pad(8); diff --git a/src/main/java/games/rednblack/editor/view/ui/dialog/ShaderManagerDialogMediator.java b/src/main/java/games/rednblack/editor/view/ui/dialog/ShaderManagerDialogMediator.java index 79ec5e36..99a2c044 100644 --- a/src/main/java/games/rednblack/editor/view/ui/dialog/ShaderManagerDialogMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/dialog/ShaderManagerDialogMediator.java @@ -1,7 +1,6 @@ package games.rednblack.editor.view.ui.dialog; import com.badlogic.gdx.files.FileHandle; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.code.syntax.GLSLSyntax; import games.rednblack.editor.controller.commands.resource.DeleteShaderCommand; import games.rednblack.editor.proxy.ProjectManager; @@ -15,9 +14,11 @@ import games.rednblack.editor.view.menu.ResourcesMenu; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.Facade; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import org.apache.commons.io.FileUtils; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; import java.io.File; import java.io.IOException; @@ -41,25 +42,22 @@ public class ShaderManagerDialogMediator extends Mediator { @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); resourceManager = facade.retrieveProxy(ResourceManager.NAME); - projectManager = HyperLap2DFacade.getInstance().retrieveProxy(ProjectManager.NAME); + projectManager = Facade.getInstance().retrieveProxy(ProjectManager.NAME); } @Override - public String[] listNotificationInterests() { - return new String[]{ - ResourcesMenu.OPEN_SHADER_MANAGER, + public void listNotificationInterests(Interests interests) { + interests.add(ResourcesMenu.OPEN_SHADER_MANAGER, ProjectManager.PROJECT_OPENED, ProjectManager.PROJECT_DATA_UPDATED, - ShaderManagerDialog.EDIT_FRAGMENT_SHADER_DONE, - ShaderManagerDialog.EDIT_VERTEX_SHADER_DONE, + ShaderManagerDialog.EDIT_FRAGMENT_SHADER_DONE); + interests.add(ShaderManagerDialog.EDIT_VERTEX_SHADER_DONE, ShaderManagerDialog.EDIT_FRAGMENT_SHADER, ShaderManagerDialog.EDIT_VERTEX_SHADER, - ShaderManagerDialog.CREATE_NEW_SHADER, - DeleteShaderCommand.DONE - }; + ShaderManagerDialog.CREATE_NEW_SHADER); + interests.add(DeleteShaderCommand.DONE); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/followers/BasicFollower.java b/src/main/java/games/rednblack/editor/view/ui/followers/BasicFollower.java index fee2b948..fb7d0f77 100644 --- a/src/main/java/games/rednblack/editor/view/ui/followers/BasicFollower.java +++ b/src/main/java/games/rednblack/editor/view/ui/followers/BasicFollower.java @@ -33,7 +33,7 @@ import games.rednblack.editor.renderer.components.TransformComponent; import games.rednblack.editor.renderer.utils.TransformMathUtils; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.stage.Sandbox; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; /** * Created by azakhary on 5/20/2015. diff --git a/src/main/java/games/rednblack/editor/view/ui/followers/NormalSelectionFollower.java b/src/main/java/games/rednblack/editor/view/ui/followers/NormalSelectionFollower.java index 3b6a763e..2ec1fec0 100644 --- a/src/main/java/games/rednblack/editor/view/ui/followers/NormalSelectionFollower.java +++ b/src/main/java/games/rednblack/editor/view/ui/followers/NormalSelectionFollower.java @@ -28,7 +28,7 @@ import games.rednblack.editor.view.stage.tools.TransformTool; import games.rednblack.editor.view.ui.widget.EmptyTarget; import games.rednblack.editor.view.ui.widget.actors.basic.PixelDashedRectangle; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; /** * Created by azakhary on 5/20/2015. diff --git a/src/main/java/games/rednblack/editor/view/ui/followers/SubFollower.java b/src/main/java/games/rednblack/editor/view/ui/followers/SubFollower.java index 4e4ecdf6..7e63d7ae 100644 --- a/src/main/java/games/rednblack/editor/view/ui/followers/SubFollower.java +++ b/src/main/java/games/rednblack/editor/view/ui/followers/SubFollower.java @@ -1,7 +1,7 @@ package games.rednblack.editor.view.ui.followers; import com.badlogic.gdx.scenes.scene2d.Group; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; /** * Created by CyberJoe on 7/2/2015. diff --git a/src/main/java/games/rednblack/editor/view/ui/panel/CustomVariablesPanel.java b/src/main/java/games/rednblack/editor/view/ui/panel/CustomVariablesPanel.java index d3943962..e750d028 100644 --- a/src/main/java/games/rednblack/editor/view/ui/panel/CustomVariablesPanel.java +++ b/src/main/java/games/rednblack/editor/view/ui/panel/CustomVariablesPanel.java @@ -24,11 +24,9 @@ import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.ObjectMap; import com.kotcrab.vis.ui.VisUI; import com.kotcrab.vis.ui.widget.*; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.h2d.common.UIDraggablePanel; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; - -import java.util.Map; +import games.rednblack.puremvc.Facade; /** * Created by azakhary on 5/12/2015. @@ -38,7 +36,7 @@ public class CustomVariablesPanel extends UIDraggablePanel { public static final String ADD_BUTTON_PRESSED = PREFIX + ".ADD_BUTTON_PRESSED"; public static final String DELETE_BUTTON_PRESSED = PREFIX + ".DELETE_BUTTON_PRESSED"; - private HyperLap2DFacade facade; + private Facade facade; private VisTextField keyField; private VisTextField valueField; @@ -51,7 +49,7 @@ public class CustomVariablesPanel extends UIDraggablePanel { super("Custom variables"); addCloseButton(); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); addVariableTable = new VisTable(); addVariableTable.padTop(4); diff --git a/src/main/java/games/rednblack/editor/view/ui/panel/CustomVariablesPanelMediator.java b/src/main/java/games/rednblack/editor/view/ui/panel/CustomVariablesPanelMediator.java index 2f3738fc..1cdb9ca4 100644 --- a/src/main/java/games/rednblack/editor/view/ui/panel/CustomVariablesPanelMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/panel/CustomVariablesPanelMediator.java @@ -18,7 +18,6 @@ package games.rednblack.editor.view.ui.panel; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.CustomVariableModifyCommand; import games.rednblack.editor.renderer.components.MainItemComponent; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; @@ -27,8 +26,9 @@ import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.editor.view.ui.properties.panels.UIBasicItemProperties; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.Set; @@ -48,21 +48,18 @@ public class CustomVariablesPanelMediator extends Mediator @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); viewComponent.setEmptyMsg("No item selected."); } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.ITEM_SELECTION_CHANGED, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.ITEM_SELECTION_CHANGED, MsgAPI.EMPTY_SPACE_CLICKED, UIBasicItemProperties.CUSTOM_VARS_BUTTON_CLICKED, - CustomVariablesPanel.ADD_BUTTON_PRESSED, - CustomVariablesPanel.DELETE_BUTTON_PRESSED, + CustomVariablesPanel.ADD_BUTTON_PRESSED); + interests.add(CustomVariablesPanel.DELETE_BUTTON_PRESSED, WindowMenu.CUSTOM_VARIABLES_EDITOR_OPEN, - CustomVariableModifyCommand.DONE - }; + CustomVariableModifyCommand.DONE); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/panel/EditSpriteAnimationPanel.java b/src/main/java/games/rednblack/editor/view/ui/panel/EditSpriteAnimationPanel.java index 222bbad0..c03c5b02 100644 --- a/src/main/java/games/rednblack/editor/view/ui/panel/EditSpriteAnimationPanel.java +++ b/src/main/java/games/rednblack/editor/view/ui/panel/EditSpriteAnimationPanel.java @@ -26,11 +26,11 @@ import com.kotcrab.vis.ui.widget.VisTextButton; import com.kotcrab.vis.ui.widget.VisTextField; import com.kotcrab.vis.ui.widget.spinner.IntSpinnerModel; import com.kotcrab.vis.ui.widget.spinner.Spinner; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.data.FrameRange; import games.rednblack.editor.view.ui.validator.EmptyOrDefaultValidator; import games.rednblack.h2d.common.UIDraggablePanel; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; import java.util.Map; @@ -42,7 +42,7 @@ public class EditSpriteAnimationPanel extends UIDraggablePanel { public static final String ADD_BUTTON_PRESSED = PREFIX + ".ADD_BUTTON_PRESSED"; public static final String DELETE_BUTTON_PRESSED = PREFIX + ".DELETE_BUTTON_PRESSED"; - private final HyperLap2DFacade facade; + private final Facade facade; private VisTextField nameField; private Spinner fromFrameField; @@ -56,7 +56,7 @@ public class EditSpriteAnimationPanel extends UIDraggablePanel { super("Edit Sprite Animation Ranges"); addCloseButton(); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); VisTable mainTable = new VisTable(); diff --git a/src/main/java/games/rednblack/editor/view/ui/panel/EditSpriteAnimationPanelMediator.java b/src/main/java/games/rednblack/editor/view/ui/panel/EditSpriteAnimationPanelMediator.java index 34fd8af4..9ac0b15a 100644 --- a/src/main/java/games/rednblack/editor/view/ui/panel/EditSpriteAnimationPanelMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/panel/EditSpriteAnimationPanelMediator.java @@ -18,7 +18,6 @@ package games.rednblack.editor.view.ui.panel; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.sprite.SpriteAnimationComponent; import games.rednblack.editor.renderer.data.FrameRange; import games.rednblack.editor.renderer.factory.EntityFactory; @@ -29,8 +28,9 @@ import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.editor.view.ui.properties.panels.UISpriteAnimationItemProperties; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.Set; @@ -50,20 +50,17 @@ public class EditSpriteAnimationPanelMediator extends Mediator { @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); AssetIOManager.getInstance().setProgressHandler(new AssetsImportProgressHandler()); AssetIOManager.getInstance().setViewComponent(viewComponent); } @Override - public String[] listNotificationInterests() { - return new String[]{ - ResourcesMenu.IMPORT_TO_LIBRARY, + public void listNotificationInterests(Interests interests) { + interests.add(ResourcesMenu.IMPORT_TO_LIBRARY, ImportPanel.BROWSE_BTN_CLICKED, ImportPanel.IMPORT_FAILED, - MsgAPI.ACTION_FILES_DROPPED, - }; + MsgAPI.ACTION_FILES_DROPPED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanel.java b/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanel.java index 8890e136..8d70d6d9 100644 --- a/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanel.java +++ b/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanel.java @@ -11,19 +11,19 @@ import com.badlogic.gdx.utils.ObjectMap; import com.kotcrab.vis.ui.util.InputValidator; import com.kotcrab.vis.ui.util.Validators; import com.kotcrab.vis.ui.widget.*; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.data.ShaderUniformVO; import games.rednblack.editor.view.ui.widget.actors.table.CellBody; import games.rednblack.editor.view.ui.widget.actors.table.CellHeader; import games.rednblack.h2d.common.UIDraggablePanel; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; public class ShaderUniformsPanel extends UIDraggablePanel { private static final String prefix = "games.rednblack.editor.view.ui.panel.ShaderUniformsPanel"; public static final String ADD_BUTTON_CLICKED = prefix + ".ADD_BUTTON_CLICKED"; public static final String REMOVE_BUTTON_CLICKED = prefix + ".REMOVE_BUTTON_CLICKED"; - private final HyperLap2DFacade facade; + private final Facade facade; private final VisTable addUniformTable, inputTable, headerUniformsTable, uniformsTable; private final VisValidatableTextField input1, input2, input3, input4; private final VisSelectBox uniformName; @@ -49,7 +49,7 @@ public class ShaderUniformsPanel extends UIDraggablePanel { addButton = StandardWidgetsFactory.createTextButton("Add"); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); getContentTable().pad(5).padTop(10); addUniformTable = new VisTable(); diff --git a/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanelMediator.java b/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanelMediator.java index 4482b93d..0d2f8a08 100644 --- a/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanelMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/panel/ShaderUniformsPanelMediator.java @@ -1,6 +1,5 @@ package games.rednblack.editor.view.ui.panel; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.ShaderComponent; import games.rednblack.editor.renderer.data.ShaderUniformVO; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; @@ -9,8 +8,9 @@ import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.editor.view.ui.properties.panels.UIShaderProperties; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.Set; @@ -27,20 +27,17 @@ public class ShaderUniformsPanelMediator extends Mediator { @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); viewComponent.setEmpty(); } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.ITEM_SELECTION_CHANGED, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.ITEM_SELECTION_CHANGED, MsgAPI.EMPTY_SPACE_CLICKED, UIShaderProperties.UNIFORMS_BUTTON_CLICKED, - WindowMenu.SHADER_UNIFORMS_EDITOR_OPEN, - ShaderUniformsPanel.ADD_BUTTON_CLICKED, - ShaderUniformsPanel.REMOVE_BUTTON_CLICKED - }; + WindowMenu.SHADER_UNIFORMS_EDITOR_OPEN); + interests.add(ShaderUniformsPanel.ADD_BUTTON_CLICKED, + ShaderUniformsPanel.REMOVE_BUTTON_CLICKED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/panel/TagsPanel.java b/src/main/java/games/rednblack/editor/view/ui/panel/TagsPanel.java index 73c9453f..a286d61b 100644 --- a/src/main/java/games/rednblack/editor/view/ui/panel/TagsPanel.java +++ b/src/main/java/games/rednblack/editor/view/ui/panel/TagsPanel.java @@ -7,9 +7,9 @@ import com.kotcrab.vis.ui.widget.VisLabel; import com.kotcrab.vis.ui.widget.VisTable; import com.kotcrab.vis.ui.widget.VisTextButton; import com.kotcrab.vis.ui.widget.VisTextField; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.h2d.common.UIDraggablePanel; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; import java.util.*; @@ -22,7 +22,7 @@ public class TagsPanel extends UIDraggablePanel { public static final String ITEM_ADD = prefix + ".ITEM_ADD"; public static final String ITEM_REMOVED = prefix + ".ITEM_REMOVED"; - private HyperLap2DFacade facade; + private Facade facade; private VisTable mainTable; private VisTable tagTable; @@ -34,7 +34,7 @@ public class TagsPanel extends UIDraggablePanel { super("Tags"); addCloseButton(); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); mainTable = new VisTable(); diff --git a/src/main/java/games/rednblack/editor/view/ui/panel/TagsPanelMediator.java b/src/main/java/games/rednblack/editor/view/ui/panel/TagsPanelMediator.java index eb09ed3a..475cf9b5 100644 --- a/src/main/java/games/rednblack/editor/view/ui/panel/TagsPanelMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/panel/TagsPanelMediator.java @@ -1,6 +1,5 @@ package games.rednblack.editor.view.ui.panel; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.renderer.components.MainItemComponent; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.menu.WindowMenu; @@ -8,8 +7,9 @@ import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.editor.view.stage.UIStage; import games.rednblack.editor.view.ui.properties.panels.UIBasicItemProperties; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; -import org.puremvc.java.patterns.mediator.Mediator; +import games.rednblack.puremvc.Mediator; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import java.util.HashSet; import java.util.Iterator; @@ -32,20 +32,17 @@ public class TagsPanelMediator extends Mediator { @Override public void onRegister() { super.onRegister(); - facade = HyperLap2DFacade.getInstance(); viewComponent.setEmpty(); } @Override - public String[] listNotificationInterests() { - return new String[]{ - MsgAPI.ITEM_SELECTION_CHANGED, + public void listNotificationInterests(Interests interests) { + interests.add(MsgAPI.ITEM_SELECTION_CHANGED, MsgAPI.EMPTY_SPACE_CLICKED, UIBasicItemProperties.TAGS_BUTTON_CLICKED, - WindowMenu.TAGS_EDITOR_OPEN, - TagsPanel.ITEM_ADD, - TagsPanel.ITEM_REMOVED - }; + WindowMenu.TAGS_EDITOR_OPEN); + interests.add(TagsPanel.ITEM_ADD, + TagsPanel.ITEM_REMOVED); } @Override diff --git a/src/main/java/games/rednblack/editor/view/ui/properties/UIAbstractEntityPropertiesMediator.java b/src/main/java/games/rednblack/editor/view/ui/properties/UIAbstractEntityPropertiesMediator.java index a47b3fe3..c8f3acae 100644 --- a/src/main/java/games/rednblack/editor/view/ui/properties/UIAbstractEntityPropertiesMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/properties/UIAbstractEntityPropertiesMediator.java @@ -18,10 +18,10 @@ package games.rednblack.editor.view.ui.properties; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; -import org.puremvc.java.interfaces.INotification; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; /** * Created by azakhary on 4/15/2015. @@ -37,21 +37,12 @@ public abstract class UIAbstractEntityPropertiesMediator extends Mediator { private Sandbox sandbox; @@ -17,21 +17,12 @@ public abstract class UIAbstractPropertiesMediator { private static final String TAG = UICircleShapePropertiesMediator.class.getCanonicalName(); @@ -19,13 +20,9 @@ public class UICircleShapePropertiesMediator extends UIItemPropertiesMediator entityHashSet = new HashSet<>(); entityHashSet.add(observableReference); - HyperLap2DFacade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, entityHashSet); + Facade.getInstance().sendNotification(MsgAPI.ITEM_SELECTION_CHANGED, entityHashSet); } } \ No newline at end of file diff --git a/src/main/java/games/rednblack/editor/view/ui/properties/panels/UILabelItemProperties.java b/src/main/java/games/rednblack/editor/view/ui/properties/panels/UILabelItemProperties.java index a0ae49ba..25145438 100644 --- a/src/main/java/games/rednblack/editor/view/ui/properties/panels/UILabelItemProperties.java +++ b/src/main/java/games/rednblack/editor/view/ui/properties/panels/UILabelItemProperties.java @@ -11,7 +11,6 @@ import com.kotcrab.vis.ui.widget.VisTable; import com.kotcrab.vis.ui.widget.VisTextArea; import com.kotcrab.vis.ui.widget.spinner.IntSpinnerModel; import com.kotcrab.vis.ui.widget.spinner.Spinner; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.code.syntax.TypingLabelSyntax; import games.rednblack.editor.event.CheckBoxChangeListener; import games.rednblack.editor.event.KeyboardListener; @@ -20,6 +19,7 @@ import games.rednblack.editor.event.SelectBoxChangeListener; import games.rednblack.editor.view.ui.properties.UIItemCollapsibleProperties; import games.rednblack.editor.view.ui.widget.actors.ExpandableTextArea; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; import java.util.HashMap; import java.util.Map; @@ -38,7 +38,7 @@ public class UILabelItemProperties extends UIItemCollapsibleProperties { private HashMap alignMap = new HashMap<>(); private Array alignNames = new Array<>(); - private HyperLap2DFacade facade; + private Facade facade; private VisSelectBox fontFamilySelectBox, bitmapFontSelectBox; private VisSelectBox alignSelectBox; @@ -51,7 +51,7 @@ public class UILabelItemProperties extends UIItemCollapsibleProperties { public UILabelItemProperties() { super("Label"); - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); bitmapFontSelectBox = StandardWidgetsFactory.createSelectBox(String.class); fontFamilySelectBox = StandardWidgetsFactory.createSelectBox(String.class); diff --git a/src/main/java/games/rednblack/editor/view/ui/properties/panels/UILabelItemPropertiesMediator.java b/src/main/java/games/rednblack/editor/view/ui/properties/panels/UILabelItemPropertiesMediator.java index 0fff050f..68ac5d93 100644 --- a/src/main/java/games/rednblack/editor/view/ui/properties/panels/UILabelItemPropertiesMediator.java +++ b/src/main/java/games/rednblack/editor/view/ui/properties/panels/UILabelItemPropertiesMediator.java @@ -1,14 +1,14 @@ package games.rednblack.editor.view.ui.properties.panels; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.FontManager; import games.rednblack.editor.proxy.ResourceManager; import games.rednblack.editor.renderer.components.label.LabelComponent; import games.rednblack.editor.utils.runtime.SandboxComponentRetriever; import games.rednblack.editor.view.ui.properties.UIItemPropertiesMediator; import games.rednblack.h2d.common.MsgAPI; +import games.rednblack.puremvc.interfaces.INotification; +import games.rednblack.puremvc.util.Interests; import org.apache.commons.lang3.ArrayUtils; -import org.puremvc.java.interfaces.INotification; public class UILabelItemPropertiesMediator extends UIItemPropertiesMediator { @@ -26,7 +26,6 @@ public class UILabelItemPropertiesMediator extends UIItemPropertiesMediator { @@ -29,14 +30,10 @@ public class UILightBodyPropertiesMediator extends UIItemPropertiesMediator { @@ -24,13 +25,9 @@ public class UIPhysicsPropertiesMediator extends UIItemPropertiesMediator { private static final String TAG = UITypingLabelPropertiesMediator.class.getCanonicalName(); @@ -18,14 +19,10 @@ public class UITypingLabelPropertiesMediator extends UIItemPropertiesMediator { @@ -20,7 +20,7 @@ public class GeneralSettings extends SettingsNodeValue { private VisSlider uiScaleDensity, msaaSamples, fpsLimit; public GeneralSettings() { - super("General", HyperLap2DFacade.getInstance()); + super("General", Facade.getInstance()); getContentTable().add("Editor").left().row(); getContentTable().addSeparator(); diff --git a/src/main/java/games/rednblack/editor/view/ui/settings/LivePreviewSettings.java b/src/main/java/games/rednblack/editor/view/ui/settings/LivePreviewSettings.java index 62cd5489..34a32787 100644 --- a/src/main/java/games/rednblack/editor/view/ui/settings/LivePreviewSettings.java +++ b/src/main/java/games/rednblack/editor/view/ui/settings/LivePreviewSettings.java @@ -7,7 +7,6 @@ import com.kotcrab.vis.ui.widget.VisCheckBox; import com.kotcrab.vis.ui.widget.VisTable; import com.kotcrab.vis.ui.widget.VisTextButton; import com.kotcrab.vis.ui.widget.color.ColorPickerAdapter; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.SettingsNodeValue; @@ -15,6 +14,7 @@ import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; import games.rednblack.h2d.common.view.ui.widget.HyperLapColorPicker; import games.rednblack.h2d.common.view.ui.widget.TintButton; import games.rednblack.h2d.common.vo.ProjectVO; +import games.rednblack.puremvc.Facade; public class LivePreviewSettings extends SettingsNodeValue { @@ -22,7 +22,7 @@ public class LivePreviewSettings extends SettingsNodeValue { private final VisCheckBox box2dDebug; public LivePreviewSettings() { - super("Live Preview", HyperLap2DFacade.getInstance()); + super("Live Preview", Facade.getInstance()); getContentTable().add("Window").left().row(); getContentTable().addSeparator(); diff --git a/src/main/java/games/rednblack/editor/view/ui/settings/PluginsSettings.java b/src/main/java/games/rednblack/editor/view/ui/settings/PluginsSettings.java index 7d5130c0..f8b9f952 100644 --- a/src/main/java/games/rednblack/editor/view/ui/settings/PluginsSettings.java +++ b/src/main/java/games/rednblack/editor/view/ui/settings/PluginsSettings.java @@ -2,17 +2,17 @@ package games.rednblack.editor.view.ui.settings; import com.badlogic.gdx.utils.Align; import com.kotcrab.vis.ui.widget.VisLabel; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.SettingsManager; import games.rednblack.h2d.common.view.SettingsNodeValue; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; +import games.rednblack.puremvc.Facade; import java.io.File; public class PluginsSettings extends SettingsNodeValue { public PluginsSettings() { - super("Plugins", HyperLap2DFacade.getInstance()); + super("Plugins", Facade.getInstance()); VisLabel visLabel = StandardWidgetsFactory.createLabel("Choose a PlugIn to change settings", "default", Align.center); getContentTable().add(visLabel).center().expand().fill().grow().row(); diff --git a/src/main/java/games/rednblack/editor/view/ui/settings/ProjectExportSettings.java b/src/main/java/games/rednblack/editor/view/ui/settings/ProjectExportSettings.java index 5a85496c..ae475a44 100644 --- a/src/main/java/games/rednblack/editor/view/ui/settings/ProjectExportSettings.java +++ b/src/main/java/games/rednblack/editor/view/ui/settings/ProjectExportSettings.java @@ -7,7 +7,6 @@ import com.kotcrab.vis.ui.widget.VisLabel; import com.kotcrab.vis.ui.widget.VisSelectBox; import com.kotcrab.vis.ui.widget.VisTable; import com.kotcrab.vis.ui.widget.file.FileChooser; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ProjectManager; import games.rednblack.editor.proxy.ResolutionManager; import games.rednblack.h2d.common.MsgAPI; @@ -16,6 +15,7 @@ import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; import games.rednblack.h2d.common.view.ui.widget.InputFileWidget; import games.rednblack.h2d.common.vo.ProjectVO; import games.rednblack.h2d.common.vo.TexturePackerVO; +import games.rednblack.puremvc.Facade; public class ProjectExportSettings extends SettingsNodeValue { @@ -29,7 +29,7 @@ public class ProjectExportSettings extends SettingsNodeValue { private final VisSelectBox filterMinSelectBox; public ProjectExportSettings() { - super("Project Export", HyperLap2DFacade.getInstance()); + super("Project Export", Facade.getInstance()); duplicateCheckBox = StandardWidgetsFactory.createCheckBox("Duplicate edge pixels in atlas"); forceSquareCheckBox = StandardWidgetsFactory.createCheckBox("Force Square"); legacyCheckBox = StandardWidgetsFactory.createCheckBox("Legacy libGDX format"); diff --git a/src/main/java/games/rednblack/editor/view/ui/settings/SandboxSettings.java b/src/main/java/games/rednblack/editor/view/ui/settings/SandboxSettings.java index e2d7aba8..a685eba2 100644 --- a/src/main/java/games/rednblack/editor/view/ui/settings/SandboxSettings.java +++ b/src/main/java/games/rednblack/editor/view/ui/settings/SandboxSettings.java @@ -7,7 +7,6 @@ import com.kotcrab.vis.ui.widget.VisCheckBox; import com.kotcrab.vis.ui.widget.VisTable; import com.kotcrab.vis.ui.widget.VisTextButton; import com.kotcrab.vis.ui.widget.color.ColorPickerAdapter; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.view.stage.Sandbox; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.SettingsNodeValue; @@ -15,6 +14,7 @@ import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; import games.rednblack.h2d.common.view.ui.widget.HyperLapColorPicker; import games.rednblack.h2d.common.view.ui.widget.TintButton; import games.rednblack.h2d.common.vo.EditorConfigVO; +import games.rednblack.puremvc.Facade; public class SandboxSettings extends SettingsNodeValue { @@ -22,7 +22,7 @@ public class SandboxSettings extends SettingsNodeValue { private final TintButton tintButton; public SandboxSettings() { - super("Sandbox", HyperLap2DFacade.getInstance()); + super("Sandbox", Facade.getInstance()); getContentTable().add("Composites").left().row(); getContentTable().addSeparator(); diff --git a/src/main/java/games/rednblack/editor/view/ui/widget/H2DLogo.java b/src/main/java/games/rednblack/editor/view/ui/widget/H2DLogo.java index ffeb5fa0..b80f9500 100644 --- a/src/main/java/games/rednblack/editor/view/ui/widget/H2DLogo.java +++ b/src/main/java/games/rednblack/editor/view/ui/widget/H2DLogo.java @@ -7,13 +7,13 @@ import com.kotcrab.vis.ui.VisUI; import com.kotcrab.vis.ui.widget.VisImage; import com.kotcrab.vis.ui.widget.VisTable; import games.rednblack.editor.HyperLap2DApp; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.SettingsManager; +import games.rednblack.puremvc.Facade; import org.apache.commons.lang3.SystemUtils; public class H2DLogo extends VisTable { public H2DLogo() { - SettingsManager settingsManager = HyperLap2DFacade.getInstance().retrieveProxy(SettingsManager.NAME); + SettingsManager settingsManager = Facade.getInstance().retrieveProxy(SettingsManager.NAME); Skin skin = VisUI.getSkin(); setBackground(skin.getDrawable("menu-bg")); VisImage logo = new VisImage(VisUI.getSkin().getDrawable("logo")); diff --git a/src/main/java/games/rednblack/editor/view/ui/widget/actors/ExpandableTextArea.java b/src/main/java/games/rednblack/editor/view/ui/widget/actors/ExpandableTextArea.java index 93e10cf4..92e69845 100644 --- a/src/main/java/games/rednblack/editor/view/ui/widget/actors/ExpandableTextArea.java +++ b/src/main/java/games/rednblack/editor/view/ui/widget/actors/ExpandableTextArea.java @@ -9,14 +9,14 @@ import com.kotcrab.vis.ui.widget.VisTextArea; import games.rednblack.editor.view.ui.dialog.CodeEditorDialogMediator; import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; -import org.puremvc.java.interfaces.IFacade; +import games.rednblack.puremvc.Facade; public class ExpandableTextArea extends VisTable { public interface OnExpandListener { void onExpand(VisTextArea textArea); } - private IFacade facade; + private Facade facade; private OnExpandListener listener; private VisTextArea textArea; @@ -24,7 +24,7 @@ public class ExpandableTextArea extends VisTable { private Highlighter syntax; - public ExpandableTextArea(IFacade facade, String notificationCallback) { + public ExpandableTextArea(Facade facade, String notificationCallback) { this.facade = facade; textArea = StandardWidgetsFactory.createTextArea(); diff --git a/src/main/java/games/rednblack/editor/view/ui/widget/actors/StickyNoteActor.java b/src/main/java/games/rednblack/editor/view/ui/widget/actors/StickyNoteActor.java index 1f54bead..de2e9fe0 100644 --- a/src/main/java/games/rednblack/editor/view/ui/widget/actors/StickyNoteActor.java +++ b/src/main/java/games/rednblack/editor/view/ui/widget/actors/StickyNoteActor.java @@ -18,7 +18,6 @@ import com.kotcrab.vis.ui.widget.VisTextArea; import com.kotcrab.vis.ui.widget.VisWindow; import com.kotcrab.vis.ui.widget.color.ColorPicker; import com.kotcrab.vis.ui.widget.color.ColorPickerAdapter; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.controller.commands.ModifyStickyNoteCommand; import games.rednblack.editor.renderer.data.StickyNoteVO; import games.rednblack.editor.view.stage.Sandbox; @@ -27,6 +26,7 @@ import games.rednblack.h2d.common.MsgAPI; import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory; import games.rednblack.h2d.common.view.ui.widget.H2DPopupMenu; import games.rednblack.h2d.common.view.ui.widget.HyperLapColorPicker; +import games.rednblack.puremvc.Facade; public class StickyNoteActor extends VisWindow { public String id; @@ -36,7 +36,7 @@ public class StickyNoteActor extends VisWindow { private float worldX, worldY; private final Vector2 tmp = new Vector2(); private final VisTextArea contentArea; - private final HyperLap2DFacade facade = HyperLap2DFacade.getInstance(); + private final Facade facade = Facade.getInstance(); private final VisImage pinButton; private int resizeBorder = 8; diff --git a/src/main/java/games/rednblack/editor/view/ui/widget/actors/basic/PixelRect.java b/src/main/java/games/rednblack/editor/view/ui/widget/actors/basic/PixelRect.java index ac65f037..dac7e695 100644 --- a/src/main/java/games/rednblack/editor/view/ui/widget/actors/basic/PixelRect.java +++ b/src/main/java/games/rednblack/editor/view/ui/widget/actors/basic/PixelRect.java @@ -24,11 +24,11 @@ import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.ui.Image; -import games.rednblack.editor.HyperLap2DFacade; +import games.rednblack.puremvc.Facade; public class PixelRect extends Group { - private final HyperLap2DFacade facade; + private final Facade facade; private final PixelLine[] lines = new PixelLine[4]; private final Image fill; private final Rectangle rectangle = new Rectangle(); @@ -38,7 +38,7 @@ public class PixelRect extends Group { } public PixelRect(float width, float height) { - facade = HyperLap2DFacade.getInstance(); + facade = Facade.getInstance(); lines[0] = new PixelLine(0, 0, width, 0); lines[1] = new PixelLine(0, 0, 0, height); lines[1].setPosition(lines[1].getThickness(), 0, lines[1].getThickness(), height - lines[1].getThickness()); diff --git a/src/main/java/games/rednblack/editor/view/ui/widget/actors/basic/SandboxBackUI.java b/src/main/java/games/rednblack/editor/view/ui/widget/actors/basic/SandboxBackUI.java index f8b13f90..0ed4a5a4 100644 --- a/src/main/java/games/rednblack/editor/view/ui/widget/actors/basic/SandboxBackUI.java +++ b/src/main/java/games/rednblack/editor/view/ui/widget/actors/basic/SandboxBackUI.java @@ -22,9 +22,9 @@ import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.utils.Array; -import games.rednblack.editor.HyperLap2DFacade; import games.rednblack.editor.proxy.ResourceManager; import games.rednblack.editor.view.ui.widget.actors.GridView; +import games.rednblack.puremvc.Facade; import space.earlygrey.shapedrawer.ShapeDrawer; /** @@ -48,7 +48,7 @@ public class SandboxBackUI { } public void render(float delta) { - ResourceManager resourceManager = HyperLap2DFacade.getInstance().retrieveProxy(ResourceManager.NAME); + ResourceManager resourceManager = Facade.getInstance().retrieveProxy(ResourceManager.NAME); batch.begin(); for (Actor actor : actors) { actor.setScale(1f / resourceManager.getProjectVO().pixelToWorld);