diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/Application.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/Application.java index ba447588..698b605e 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/Application.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/Application.java @@ -8,8 +8,8 @@ import javafx.scene.canvas.Canvas; import javafx.scene.layout.AnchorPane; import javafx.stage.Stage; import javafx.stage.WindowEvent; -import static org.badvision.outlaweditor.UIAction.*; import org.badvision.outlaweditor.data.xml.GameData; +import org.badvision.outlaweditor.ui.ApplicationUIController; /** * @@ -20,10 +20,18 @@ public class Application extends javafx.application.Application { public static GameData gameData = new GameData(); public static Platform currentPlatform = Platform.AppleII; static Application instance; - public Stage primaryStage; - ApplicationUIControllerImpl controller; + + public static Application getInstance() { + return instance; + } + + private ApplicationUIController controller; + public ApplicationUIController getController() { + return controller; + } - public static Stage getPrimaryStage() { + public Stage primaryStage; +public static Stage getPrimaryStage() { return instance.primaryStage; } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java index 137a5a5d..ba3b295a 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java @@ -3,6 +3,7 @@ package org.badvision.outlaweditor; import javafx.scene.layout.AnchorPane; import org.badvision.outlaweditor.data.DataObserver; import org.badvision.outlaweditor.data.DataProducer; +import org.badvision.outlaweditor.data.xml.Script; /** * Extremely generic editor abstraction -- useful for uniform edit features across application @@ -52,5 +53,10 @@ public abstract class Editor implements DataObserver { } return selectInfo; }; - + + public void addScript(Script script) { + throw new UnsupportedOperationException("Not supported yet."); + } + + abstract public void redraw(); } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java index a9b26685..e4a943bc 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java @@ -60,6 +60,10 @@ public class MapEditor extends Editor implements EventH super.setEntity(t); currentMap = new TileMap(t); } + public TileMap getCurrentMap() { + return currentMap; + } + EventHandler scrollHandler = new EventHandler() { @Override public void handle(ScrollEvent t) { @@ -125,6 +129,14 @@ public class MapEditor extends Editor implements EventH anchorPane.getChildren().add(0, drawCanvas); } + @Override + public void addScript(Script script) { + if (getCurrentMap().getBackingMap().getScripts() == null) { + getCurrentMap().getBackingMap().setScripts(new Map.Scripts()); + } + getCurrentMap().getBackingMap().getScripts().getScript().add(script); + } + public void assignScript(Script script, double x, double y) { System.out.println("Dropped " + script.getName() + " at " + x + "," + y); } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MythosEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/MythosEditor.java index 2cf5b92c..cf173ecd 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MythosEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/MythosEditor.java @@ -23,6 +23,8 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.badvision.outlaweditor.data.xml.Block; import org.badvision.outlaweditor.data.xml.Script; +import org.badvision.outlaweditor.ui.ApplicationUIController; +import org.badvision.outlaweditor.ui.MythosScriptEditorController; import org.w3c.dom.Document; import org.xml.sax.SAXException; @@ -135,6 +137,6 @@ public class MythosEditor { } script.setName(name); System.out.println("Function title changed! >> "+name); - Application.instance.controller.mapController.redrawMapScripts(); + ApplicationUIController.getController().redrawScripts(); } } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleImageEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleImageEditor.java index da69ed6c..be60656c 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleImageEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleImageEditor.java @@ -22,7 +22,7 @@ import org.badvision.outlaweditor.Application; import org.badvision.outlaweditor.FileUtils; import org.badvision.outlaweditor.ImageEditor; import org.badvision.outlaweditor.Platform; -import org.badvision.outlaweditor.UIAction; +import org.badvision.outlaweditor.ui.UIAction; import org.badvision.outlaweditor.data.DataObserver; import org.badvision.outlaweditor.data.TileMap; import org.badvision.outlaweditor.data.xml.Image; diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleTileEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleTileEditor.java index e70235c8..5a4047e7 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleTileEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/AppleTileEditor.java @@ -80,13 +80,14 @@ public class AppleTileEditor extends TileEditor { } int lastActionX = -1; int lastActionY = -1; + public void performDragAction(int x, int y) { performAction(false, x, y); } private void performAction(boolean alt, int x, int y) { - y = Math.min(Math.max(y,0), 15); - x = Math.min(Math.max(x,0), 13); + y = Math.min(Math.max(y, 0), 15); + x = Math.min(Math.max(x, 0), 13); if (lastActionX == x && lastActionY == y) { return; } @@ -108,8 +109,10 @@ public class AppleTileEditor extends TileEditor { } break; case Pencil3px: - for (int xx = x-1; xx <= x+1; xx++) { - if (xx < 0 || xx >= 14) continue; + for (int xx = x - 1; xx <= x + 1; xx++) { + if (xx < 0 || xx >= 14) { + continue; + } pat = currentPattern.getBytePattern()[y * 4 + (xx / 7)]; set((pat & (1 << (xx % 7))) != 0, xx, y); if (currentPattern.hiBitMatters) { @@ -168,7 +171,7 @@ public class AppleTileEditor extends TileEditor { byte[] data = TileUtils.getPlatformData(getEntity(), Platform.AppleII); data[y * 2 + (x / 7)] ^= 128; TileUtils.setPlatformData(getEntity(), Platform.AppleII, data); - TileUtils.redrawTile(getEntity()); + redraw(); } public void setHiBit(boolean on, int x, int y) { @@ -179,14 +182,14 @@ public class AppleTileEditor extends TileEditor { data[y * 2 + (x / 7)] &= 127; } TileUtils.setPlatformData(getEntity(), Platform.AppleII, data); - TileUtils.redrawTile(getEntity()); + redraw(); } public void toggle(int x, int y) { byte[] data = TileUtils.getPlatformData(getEntity(), Platform.AppleII); data[y * 2 + (x / 7)] ^= (1 << (x % 7)); TileUtils.setPlatformData(getEntity(), Platform.AppleII, data); - TileUtils.redrawTile(getEntity()); + redraw(); } public void set(boolean on, int x, int y) { @@ -196,7 +199,7 @@ public class AppleTileEditor extends TileEditor { data[y * 2 + (x / 7)] ^= (1 << (x % 7)); } TileUtils.setPlatformData(getEntity(), Platform.AppleII, data); - TileUtils.redrawTile(getEntity()); + redraw(); } public void recolorGrid(byte[] spriteData, Shape[][] grid, WritableImage img) { @@ -235,4 +238,11 @@ public class AppleTileEditor extends TileEditor { public void selectNone() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + + @Override + public void redraw() { + if (getEntity() != null) { + TileUtils.redrawTile(getEntity()); + } + } } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileEditor.java index d35b9d4a..4779f8e5 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/apple/dhgr/AppleDHGRTileEditor.java @@ -171,7 +171,7 @@ public class AppleDHGRTileEditor extends TileEditor { byte[] data = TileUtils.getPlatformData(getEntity(), Platform.AppleII_DHGR); data[y * 4 + (x / 7)] ^= 128; TileUtils.setPlatformData(getEntity(), Platform.AppleII_DHGR, data); - TileUtils.redrawTile(getEntity()); + redraw(); } public void setHiBit(boolean on, int x, int y) { @@ -182,14 +182,14 @@ public class AppleDHGRTileEditor extends TileEditor { data[y * 4 + (x / 7)] &= 127; } TileUtils.setPlatformData(getEntity(), Platform.AppleII_DHGR, data); - TileUtils.redrawTile(getEntity()); + redraw(); } public void toggle(int x, int y) { byte[] data = TileUtils.getPlatformData(getEntity(), Platform.AppleII_DHGR); data[y * 4 + (x / 7)] ^= (1 << (x % 7)); TileUtils.setPlatformData(getEntity(), Platform.AppleII_DHGR, data); - TileUtils.redrawTile(getEntity()); + redraw(); } public void set(boolean on, int x, int y) { @@ -199,7 +199,7 @@ public class AppleDHGRTileEditor extends TileEditor { data[y * 4 + (x / 7)] ^= (1 << (x % 7)); } TileUtils.setPlatformData(getEntity(), Platform.AppleII_DHGR, data); - TileUtils.redrawTile(getEntity()); + redraw(); } public void recolorGrid(byte[] spriteData, Shape[][] grid, WritableImage img) { @@ -245,4 +245,11 @@ public class AppleDHGRTileEditor extends TileEditor { public void selectNone() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + + @Override + public void redraw() { + if (getEntity() != null) { + TileUtils.redrawTile(getEntity()); + } + } } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/PropertyHelper.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/PropertyHelper.java index 10f0a40e..5fc6d603 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/PropertyHelper.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/PropertyHelper.java @@ -20,7 +20,7 @@ import javafx.beans.property.adapter.JavaBeanIntegerProperty; import javafx.beans.property.adapter.JavaBeanIntegerPropertyBuilder; import javafx.beans.property.adapter.JavaBeanStringProperty; import javafx.beans.property.adapter.JavaBeanStringPropertyBuilder; -import org.badvision.outlaweditor.ApplicationUIController; +import org.badvision.outlaweditor.ui.ApplicationUIController; /** * diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/TileMap.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/TileMap.java index 0317d7f0..2cf6b37e 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/TileMap.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/TileMap.java @@ -10,7 +10,7 @@ import javafx.scene.image.WritableImage; import javax.swing.JOptionPane; import javax.xml.bind.JAXBElement; import org.badvision.outlaweditor.Application; -import org.badvision.outlaweditor.UIAction; +import org.badvision.outlaweditor.ui.UIAction; import org.badvision.outlaweditor.data.xml.Map; import org.badvision.outlaweditor.data.xml.Map.Chunk; import org.badvision.outlaweditor.data.xml.ObjectFactory; diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationMenuController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ApplicationMenuController.java similarity index 96% rename from OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationMenuController.java rename to OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ApplicationMenuController.java index a9f59d45..c5682a7a 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationMenuController.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ApplicationMenuController.java @@ -1,4 +1,4 @@ -package org.badvision.outlaweditor; +package org.badvision.outlaweditor.ui; import javafx.event.ActionEvent; import javafx.fxml.FXML; diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ApplicationUIController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ApplicationUIController.java new file mode 100644 index 00000000..336c2e12 --- /dev/null +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ApplicationUIController.java @@ -0,0 +1,56 @@ +package org.badvision.outlaweditor.ui; + +import java.net.URL; +import java.util.ResourceBundle; +import javafx.event.Event; +import javafx.fxml.FXML; +import org.badvision.outlaweditor.Application; +import org.badvision.outlaweditor.Editor; + +public abstract class ApplicationUIController { + + public static ApplicationUIController getController() { + return Application.getInstance().getController(); + } + + abstract public void rebuildTileSelectors(); + abstract public void rebuildMapSelectors(); + abstract public void rebuildImageSelectors(); + + public abstract Editor getVisibleEditor(); + + @FXML // ResourceBundle that was given to the FXMLLoader + protected ResourceBundle resources; + @FXML + protected ApplicationMenuController menuController; + @FXML + protected TileEditorTabController tileController; + @FXML + protected MapEditorTabController mapController; + @FXML + protected ImageEditorTabController imageController; + + @FXML // URL location of the FXML file that was given to the FXMLLoader + protected URL location; + + abstract public void platformChange(); + + @FXML + abstract public void tileTabActivated(Event event); + + @FXML + abstract public void mapTabActivated(Event event); + + @FXML + abstract public void imageTabActivated(Event event); + + @FXML // This method is called by the FXMLLoader when initialization is complete + public void initialize() { + } + + abstract public void completeInflightOperations(); + + abstract public void clearData(); + abstract public void updateSelectors(); + abstract public void redrawScripts(); +} diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationUIController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java similarity index 78% rename from OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationUIController.java rename to OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java index 262ec7b3..4f85b731 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationUIController.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java @@ -1,39 +1,20 @@ -package org.badvision.outlaweditor; +package org.badvision.outlaweditor.ui; -import java.net.URL; -import java.util.ResourceBundle; import javafx.event.ActionEvent; -import javafx.event.Event; import javafx.fxml.FXML; import javafx.scene.control.ComboBox; import javafx.scene.control.Menu; import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; +import org.badvision.outlaweditor.Editor; import org.badvision.outlaweditor.data.xml.Image; -public abstract class ApplicationUIController { +/** + * + * @author blurry + */ +public abstract class ImageEditorTabController { - public static ApplicationUIController getController() { - return Application.instance.controller; - } - - abstract void rebuildTileSelectors(); - - abstract void rebuildImageSelector(); - - abstract Editor getVisibleEditor(); - - @FXML // ResourceBundle that was given to the FXMLLoader - protected ResourceBundle resources; - @FXML - ApplicationMenuController menuController; - @FXML - TileEditorTabController tileController; - @FXML - MapEditorTabController mapController; - - @FXML // URL location of the FXML file that was given to the FXMLLoader - protected URL location; @FXML // fx:id="imageCategoryField" protected TextField imageCategoryField; // Value injected by FXMLLoader @FXML // fx:id="imageEditorAnchorPane" @@ -50,6 +31,19 @@ public abstract class ApplicationUIController { protected TextField imageWidthField; // Value injected by FXMLLoader // Handler for MenuItem[javafx.scene.control.MenuItem@3a4bc91a] onAction + @FXML + public void initalize() { + assert imageCategoryField != null : "fx:id=\"imageCategoryField\" was not injected: check your FXML file 'ApplicationUI.fxml'."; + assert imageEditorAnchorPane != null : "fx:id=\"imageEditorAnchorPane\" was not injected: check your FXML file 'ApplicationUI.fxml'."; + assert imageHeightField != null : "fx:id=\"imageHeightField\" was not injected: check your FXML file 'ApplicationUI.fxml'."; + assert imageNameField != null : "fx:id=\"imageNameField\" was not injected: check your FXML file 'ApplicationUI.fxml'."; + assert imagePatternMenu != null : "fx:id=\"imagePatternMenu\" was not injected: check your FXML file 'ApplicationUI.fxml'."; + assert imageSelector != null : "fx:id=\"imageSelector\" was not injected: check your FXML file 'ApplicationUI.fxml'."; + assert imageWidthField != null : "fx:id=\"imageWidthField\" was not injected: check your FXML file 'ApplicationUI.fxml'."; + } + + abstract public void rebuildImageSelector(); + @FXML abstract public void imageBitMode(ActionEvent event); @@ -101,8 +95,6 @@ public abstract class ApplicationUIController { @FXML abstract public void onImageSelected(ActionEvent event); - abstract public void platformChange(); - // Handler for Button[Button[id=null, styleClass=button moveButton]] onAction @FXML abstract public void scrollImageDown(ActionEvent event); @@ -122,27 +114,5 @@ public abstract class ApplicationUIController { @FXML abstract public void imageDraw5BitMode(ActionEvent event); - @FXML - abstract public void tileTabActivated(Event event); - - @FXML - abstract public void mapTabActivated(Event event); - - @FXML - abstract public void imageTabActivated(Event event); - - @FXML // This method is called by the FXMLLoader when initialization is complete - public void initialize() { - assert imageCategoryField != null : "fx:id=\"imageCategoryField\" was not injected: check your FXML file 'ApplicationUI.fxml'."; - assert imageEditorAnchorPane != null : "fx:id=\"imageEditorAnchorPane\" was not injected: check your FXML file 'ApplicationUI.fxml'."; - assert imageHeightField != null : "fx:id=\"imageHeightField\" was not injected: check your FXML file 'ApplicationUI.fxml'."; - assert imageNameField != null : "fx:id=\"imageNameField\" was not injected: check your FXML file 'ApplicationUI.fxml'."; - assert imagePatternMenu != null : "fx:id=\"imagePatternMenu\" was not injected: check your FXML file 'ApplicationUI.fxml'."; - assert imageSelector != null : "fx:id=\"imageSelector\" was not injected: check your FXML file 'ApplicationUI.fxml'."; - assert imageWidthField != null : "fx:id=\"imageWidthField\" was not injected: check your FXML file 'ApplicationUI.fxml'."; - - // Initialize your logic here: all @FXML variables will have been injected - } - - abstract void completeInflightOperations(); + abstract public Editor getCurrentEditor(); } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditorTabController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/MapEditorTabController.java similarity index 94% rename from OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditorTabController.java rename to OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/MapEditorTabController.java index 9e33534a..99371d7d 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditorTabController.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/MapEditorTabController.java @@ -1,4 +1,4 @@ -package org.badvision.outlaweditor; +package org.badvision.outlaweditor.ui; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -8,6 +8,7 @@ import javafx.scene.control.ListView; import javafx.scene.control.Menu; import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; +import org.badvision.outlaweditor.MapEditor; import org.badvision.outlaweditor.data.xml.Map; import org.badvision.outlaweditor.data.xml.Script; @@ -130,5 +131,9 @@ public abstract class MapEditorTabController { assert mapWrapAround != null : "fx:id=\"mapWrapAround\" was not injected: check your FXML file 'mapEditorTab.fxml'."; } - abstract void rebuildTileSelectors(); + abstract public void rebuildTileSelectors(); + + public void completeInflightOperations() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MythosScriptEditorController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/MythosScriptEditorController.java similarity index 98% rename from OutlawEditor/src/main/java/org/badvision/outlaweditor/MythosScriptEditorController.java rename to OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/MythosScriptEditorController.java index 6069a3bd..705245ef 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MythosScriptEditorController.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/MythosScriptEditorController.java @@ -1,4 +1,4 @@ -package org.badvision.outlaweditor; +package org.badvision.outlaweditor.ui; import java.net.URL; import java.util.ListResourceBundle; @@ -14,6 +14,7 @@ import javafx.fxml.Initializable; import javafx.scene.control.MenuItem; import javafx.scene.web.WebView; import netscape.javascript.JSObject; +import org.badvision.outlaweditor.MythosEditor; public class MythosScriptEditorController implements Initializable { diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileEditorTabController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/TileEditorTabController.java similarity index 96% rename from OutlawEditor/src/main/java/org/badvision/outlaweditor/TileEditorTabController.java rename to OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/TileEditorTabController.java index 75922576..1f10fa23 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileEditorTabController.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/TileEditorTabController.java @@ -4,7 +4,7 @@ * and open the template in the editor. */ -package org.badvision.outlaweditor; +package org.badvision.outlaweditor.ui; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -13,6 +13,7 @@ import javafx.scene.control.ComboBox; import javafx.scene.control.Menu; import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; +import org.badvision.outlaweditor.TileEditor; import org.badvision.outlaweditor.data.xml.Tile; /** diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/UIAction.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java similarity index 90% rename from OutlawEditor/src/main/java/org/badvision/outlaweditor/UIAction.java rename to OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java index 2cdc6630..b6057478 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/UIAction.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java @@ -2,7 +2,7 @@ * To change this template, choose Tools | Templates * and open the template in the editor. */ -package org.badvision.outlaweditor; +package org.badvision.outlaweditor.ui; import java.io.File; import java.io.IOException; @@ -28,9 +28,11 @@ import javafx.scene.text.Text; import javafx.stage.Modality; import javafx.stage.Stage; import javax.xml.bind.JAXB; +import org.badvision.outlaweditor.Application; +import org.badvision.outlaweditor.FileUtils; +import org.badvision.outlaweditor.MythosEditor; import org.badvision.outlaweditor.data.TilesetUtils; import org.badvision.outlaweditor.data.xml.GameData; -import org.badvision.outlaweditor.data.xml.Map; import org.badvision.outlaweditor.data.xml.Script; /** @@ -81,12 +83,10 @@ public class UIAction { } currentSaveFile = f; GameData newData = JAXB.unmarshal(currentSaveFile, GameData.class); - Application.instance.controller.mapController.setCurrentMap(null); - Application.instance.controller.tileController.setCurrentTile(null); + ApplicationUIController.getController().clearData(); TilesetUtils.clear(); Application.gameData = newData; - Application.instance.controller.rebuildTileSelectors(); - Application.instance.controller.mapController.rebuildMapSelectors(); + ApplicationUIController.getController().updateSelectors(); break; case Quit: quit(); @@ -201,10 +201,7 @@ public class UIAction { public static Script createAndEditScript() { Script script = new Script(); script.setName("New Script"); - if (Application.instance.controller.mapController.getCurrentMap().getScripts() == null) { - Application.instance.controller.mapController.getCurrentMap().setScripts(new Map.Scripts()); - } - Application.instance.controller.mapController.getCurrentMap().getScripts().getScript().add(script); + ApplicationUIController.getController().getVisibleEditor().addScript(script); return editScript(script); } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationMenuControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ApplicationMenuControllerImpl.java similarity index 90% rename from OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationMenuControllerImpl.java rename to OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ApplicationMenuControllerImpl.java index e84d4f3f..89ce6bd6 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationMenuControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ApplicationMenuControllerImpl.java @@ -1,10 +1,15 @@ -package org.badvision.outlaweditor; +package org.badvision.outlaweditor.ui.impl; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javafx.event.ActionEvent; +import org.badvision.outlaweditor.Application; +import org.badvision.outlaweditor.Platform; import org.badvision.outlaweditor.apple.AppleTileRenderer; +import org.badvision.outlaweditor.ui.ApplicationMenuController; +import org.badvision.outlaweditor.ui.ApplicationUIController; +import org.badvision.outlaweditor.ui.UIAction; /** * @@ -74,8 +79,8 @@ public class ApplicationMenuControllerImpl extends ApplicationMenuController { ApplicationUIController mainController = ApplicationUIController.getController(); try { UIAction.actionPerformed(UIAction.MAIN_ACTIONS.Load); - mainController.rebuildImageSelector(); - mainController.mapController.rebuildMapSelectors(); + mainController.rebuildImageSelectors(); + mainController.rebuildMapSelectors(); mainController.rebuildTileSelectors(); } catch (IOException ex) { Logger.getLogger(ApplicationUIControllerImpl.class.getName()).log(Level.SEVERE, null, ex); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ApplicationUIControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ApplicationUIControllerImpl.java new file mode 100644 index 00000000..a0d2403a --- /dev/null +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ApplicationUIControllerImpl.java @@ -0,0 +1,182 @@ +package org.badvision.outlaweditor.ui.impl; + +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.event.Event; +import javafx.scene.control.ListCell; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.ComboBoxListCell; +import javafx.scene.input.DataFormat; +import org.badvision.outlaweditor.Application; +import org.badvision.outlaweditor.Editor; +import static org.badvision.outlaweditor.data.PropertyHelper.*; +import org.badvision.outlaweditor.data.TileUtils; +import org.badvision.outlaweditor.data.TilesetUtils; +import org.badvision.outlaweditor.data.xml.Tile; +import org.badvision.outlaweditor.ui.ApplicationUIController; + +/** + * Actual implementation of Application UI, isolated from auto-generated code + * + * @author brobert + */ +public class ApplicationUIControllerImpl extends ApplicationUIController { + + @Override + public void initialize() { + super.initialize(); + + TilesetUtils.addObserver(new org.badvision.outlaweditor.data.DataObserver() { + @Override + public void observedObjectChanged(Object object) { + rebuildTileSelectors(); + } + }); + } + + @Override + public void platformChange() { + for (Tile t : Application.gameData.getTile()) { + TileUtils.redrawTile(t); + } + Tile tile = tileController.getCurrentTile(); + rebuildTileSelectors(); + tileController.setCurrentTile(tile); + rebuildImageSelectors(); + redrawAllTabs(); + } + + public void redrawAllTabs() { + if (mapController.getCurrentEditor() != null) { + mapController.getCurrentEditor().redraw(); + } + if (imageController.getCurrentEditor() != null) { + imageController.getCurrentEditor().redraw(); + } + } + + @Override + public void updateSelectors() { + rebuildImageSelectors(); + rebuildMapSelectors(); + rebuildTileSelectors(); + redrawScripts(); + } + + @Override + public void rebuildTileSelectors() { + tileController.rebuildTileSelectors(); + mapController.rebuildTileSelectors(); + } + + @Override + public void redrawScripts() { + mapController.redrawMapScripts(); + } + + @Override + public void rebuildMapSelectors() { + mapController.rebuildMapSelectors(); + } + + @Override + public void rebuildImageSelectors() { + imageController.rebuildImageSelector(); + } + + @Override + public void completeInflightOperations() { + mapController.completeInflightOperations(); + } + + public static enum TABS { + + image, map, tile + }; + TABS currentTab; + + @Override + public void imageTabActivated(Event event) { + currentTab = TABS.image; + } + + @Override + public void mapTabActivated(Event event) { + currentTab = TABS.map; + } + + @Override + public void tileTabActivated(Event event) { + currentTab = TABS.tile; + } + + @Override + public Editor getVisibleEditor() { + switch (currentTab) { + case image: + return imageController.getCurrentEditor(); + case map: + return mapController.getCurrentEditor(); + case tile: + return tileController.getCurrentTileEditor(); + } + return null; + } + + public static final DataFormat SCRIPT_DATA_FORMAT = new DataFormat("MythosScript"); + + abstract public static class EntitySelectorCell extends ComboBoxListCell { + + static Map lastSelected = new HashMap<>(); + TextField nameField; + + public EntitySelectorCell(TextField tileNameField) { + super.setPrefWidth(125); + nameField = tileNameField; + } + + @Override + public void updateSelected(boolean sel) { + if (sel) { + Object o = lastSelected.get(nameField); + if (o != null && !o.equals(getItem())) { + ((ListCell) o).updateSelected(false); + } + textProperty().unbind(); + textProperty().bind(nameField.textProperty()); + lastSelected.put(nameField, this); + } else { + updateItem(getItem(), false); + } + } + + @Override + public void updateItem(T item, boolean empty) { + textProperty().unbind(); + super.updateItem(item, empty); + if (item != null && !(item instanceof String)) { + try { + textProperty().bind(stringProp(item, "name")); + } catch (NoSuchMethodException ex) { + Logger.getLogger(ApplicationUIControllerImpl.class.getName()).log(Level.SEVERE, null, ex); + } + finishUpdate(item); + } else { + setText(null); + } + } + + public void finishUpdate(T item) { + } + }; + + @Override + public void clearData() { + tileController.setCurrentTile(null); + mapController.setCurrentMap(null); + tileController.setCurrentTile(null); + } + +} diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationUIControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java similarity index 64% rename from OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationUIControllerImpl.java rename to OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java index 2f080338..44270c88 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ApplicationUIControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/ImageEditorTabControllerImpl.java @@ -1,46 +1,37 @@ -package org.badvision.outlaweditor; +package org.badvision.outlaweditor.ui.impl; -import java.util.HashMap; -import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import javafx.event.ActionEvent; -import javafx.event.Event; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; -import javafx.scene.control.TextField; import javafx.scene.control.cell.ComboBoxListCell; -import javafx.scene.input.DataFormat; import javafx.util.Callback; +import org.badvision.outlaweditor.Application; +import org.badvision.outlaweditor.Editor; +import org.badvision.outlaweditor.ImageEditor; import static org.badvision.outlaweditor.Application.currentPlatform; -import static org.badvision.outlaweditor.UIAction.*; -import static org.badvision.outlaweditor.data.PropertyHelper.*; -import org.badvision.outlaweditor.data.TileUtils; -import org.badvision.outlaweditor.data.TilesetUtils; +import static org.badvision.outlaweditor.ui.UIAction.confirm; +import static org.badvision.outlaweditor.data.PropertyHelper.bind; +import static org.badvision.outlaweditor.data.PropertyHelper.categoryProp; +import static org.badvision.outlaweditor.data.PropertyHelper.stringProp; import org.badvision.outlaweditor.data.xml.Image; -import org.badvision.outlaweditor.data.xml.Tile; +import org.badvision.outlaweditor.ui.ImageEditorTabController; /** - * Actual implementation of Application UI, isolated from auto-generated code + * FXML Controller class * - * @author brobert + * @author blurry */ -public class ApplicationUIControllerImpl extends ApplicationUIController { +public class ImageEditorTabControllerImpl extends ImageEditorTabController { public Image currentImage = null; public ImageEditor currentImageEditor = null; - - @Override + /** + * Initializes the controller class. + */ public void initialize() { - super.initialize(); - - TilesetUtils.addObserver(new org.badvision.outlaweditor.data.DataObserver() { - @Override - public void observedObjectChanged(Object object) { - rebuildTileSelectors(); - } - }); - + super.initalize(); imageSelector.setButtonCell(new ComboBoxListCell() { { super.setPrefWidth(125); @@ -60,13 +51,18 @@ public class ApplicationUIControllerImpl extends ApplicationUIController { imageSelector.setCellFactory(new Callback, ListCell>() { @Override public ListCell call(ListView param) { - return new EntitySelectorCell(imageNameField) { + return new ApplicationUIControllerImpl.EntitySelectorCell(imageNameField) { @Override public void finishUpdate(Image item) { } }; } }); + } + + @Override + public Editor getCurrentEditor() { + return currentImageEditor; } @Override @@ -174,20 +170,7 @@ public class ApplicationUIControllerImpl extends ApplicationUIController { setCurrentImage(imageSelector.getSelectionModel().getSelectedItem()); } - @Override - public void platformChange() { - for (Tile t : Application.gameData.getTile()) { - TileUtils.redrawTile(t); - } - Tile tile = tileController.getCurrentTile(); - rebuildTileSelectors(); - tileController.setCurrentTile(tile); - if (mapController.getCurrentEditor() != null) { - mapController.getCurrentEditor().redraw(); - } - rebuildImageSelector(); - } - + @Override public void scrollImageDown(ActionEvent event) { if (currentImageEditor != null) { @@ -215,13 +198,6 @@ public class ApplicationUIControllerImpl extends ApplicationUIController { currentImageEditor.scrollBy(0, -1); } } - - @Override - public void rebuildTileSelectors() { - tileController.rebuildTileSelectors(); - mapController.rebuildTileSelectors(); - } - private void setCurrentImage(Image i) { if (currentImage != null && currentImage.equals(i)) { return; @@ -277,93 +253,4 @@ public class ApplicationUIControllerImpl extends ApplicationUIController { imageSelector.getItems().addAll(Application.gameData.getImage()); imageSelector.getSelectionModel().select(i); } - - @Override - public void completeInflightOperations() { - if (mapController.getCurrentEditor() != null) { - mapController.getCurrentEditor().currentMap.updateBackingMap(); - } - } - - public static enum TABS { - - image, map, tile - }; - TABS currentTab; - - @Override - public void imageTabActivated(Event event) { - currentTab = TABS.image; - } - - @Override - public void mapTabActivated(Event event) { - currentTab = TABS.map; - } - - @Override - public void tileTabActivated(Event event) { - currentTab = TABS.tile; - } - - @Override - public Editor getVisibleEditor() { - switch (currentTab) { - case image: - return currentImageEditor; - case map: - return mapController.getCurrentEditor(); - case tile: - return tileController.getCurrentTileEditor(); - } - return null; - } - - public static final DataFormat SCRIPT_DATA_FORMAT = new DataFormat("MythosScript"); - - abstract public static class EntitySelectorCell extends ComboBoxListCell { - - static Map lastSelected = new HashMap<>(); - TextField nameField; - - public EntitySelectorCell(TextField tileNameField) { - super.setPrefWidth(125); - nameField = tileNameField; - } - - @Override - public void updateSelected(boolean sel) { - if (sel) { - Object o = lastSelected.get(nameField); - if (o != null && !o.equals(getItem())) { - ((ListCell) o).updateSelected(false); - } - textProperty().unbind(); - textProperty().bind(nameField.textProperty()); - lastSelected.put(nameField, this); - } else { - updateItem(getItem(), false); - } - } - - @Override - public void updateItem(T item, boolean empty) { - textProperty().unbind(); - super.updateItem(item, empty); - if (item != null && !(item instanceof String)) { - try { - textProperty().bind(stringProp(item, "name")); - } catch (NoSuchMethodException ex) { - Logger.getLogger(ApplicationUIControllerImpl.class.getName()).log(Level.SEVERE, null, ex); - } - finishUpdate(item); - } else { - setText(null); - } - } - - public void finishUpdate(T item) { - } - }; - } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditorTabControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/MapEditorTabControllerImpl.java similarity index 93% rename from OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditorTabControllerImpl.java rename to OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/MapEditorTabControllerImpl.java index 80aabf0e..a7543b77 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditorTabControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/MapEditorTabControllerImpl.java @@ -1,4 +1,4 @@ -package org.badvision.outlaweditor; +package org.badvision.outlaweditor.ui.impl; import java.util.logging.Level; import java.util.logging.Logger; @@ -11,16 +11,21 @@ import javafx.scene.control.cell.ComboBoxListCell; import javafx.scene.image.ImageView; import javafx.scene.image.WritableImage; import javafx.util.Callback; +import org.badvision.outlaweditor.Application; +import org.badvision.outlaweditor.MapEditor; +import org.badvision.outlaweditor.TransferHelper; import static org.badvision.outlaweditor.Application.currentPlatform; import static org.badvision.outlaweditor.Application.gameData; -import static org.badvision.outlaweditor.UIAction.confirm; -import static org.badvision.outlaweditor.UIAction.createAndEditScript; +import static org.badvision.outlaweditor.ui.UIAction.confirm; +import static org.badvision.outlaweditor.ui.UIAction.createAndEditScript; import static org.badvision.outlaweditor.data.PropertyHelper.bind; import static org.badvision.outlaweditor.data.PropertyHelper.stringProp; import org.badvision.outlaweditor.data.TileUtils; import org.badvision.outlaweditor.data.xml.Script; import org.badvision.outlaweditor.data.xml.Tile; import org.badvision.outlaweditor.data.xml.Map; +import org.badvision.outlaweditor.ui.MapEditorTabController; +import org.badvision.outlaweditor.ui.UIAction; /** * @@ -176,10 +181,16 @@ public class MapEditorTabControllerImpl extends MapEditorTabController { if (getCurrentEditor() == null) { return null; } else { - return getCurrentEditor().currentMap.getBackingMap(); + return getCurrentEditor().getCurrentMap().getBackingMap(); } } + public void completeInflightOperations() { + if (getCurrentEditor() != null) { + getCurrentEditor().getCurrentMap().updateBackingMap(); + } + } + @Override public void setCurrentMap(Map m) { if (getCurrentMap() != null && getCurrentMap().equals(m)) { @@ -268,7 +279,7 @@ public class MapEditorTabControllerImpl extends MapEditorTabController { } @Override - void rebuildTileSelectors() { + public void rebuildTileSelectors() { mapSelectTile.getItems().clear(); for (final Tile t : Application.gameData.getTile()) { WritableImage img = TileUtils.getImage(t, currentPlatform); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileEditorTabControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java similarity index 96% rename from OutlawEditor/src/main/java/org/badvision/outlaweditor/TileEditorTabControllerImpl.java rename to OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java index 5c0f20e5..b7b471ad 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileEditorTabControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java @@ -1,4 +1,4 @@ -package org.badvision.outlaweditor; +package org.badvision.outlaweditor.ui.impl; import java.util.Arrays; import java.util.logging.Level; @@ -9,7 +9,9 @@ import javafx.scene.control.ListView; import javafx.scene.control.cell.ComboBoxListCell; import javafx.scene.image.ImageView; import javafx.util.Callback; -import static org.badvision.outlaweditor.UIAction.confirm; +import org.badvision.outlaweditor.Application; +import org.badvision.outlaweditor.TileEditor; +import static org.badvision.outlaweditor.ui.UIAction.confirm; import static org.badvision.outlaweditor.data.PropertyHelper.bind; import static org.badvision.outlaweditor.data.PropertyHelper.boolProp; import static org.badvision.outlaweditor.data.PropertyHelper.categoryProp; @@ -18,6 +20,8 @@ import org.badvision.outlaweditor.data.TileUtils; import org.badvision.outlaweditor.data.TilesetUtils; import org.badvision.outlaweditor.data.xml.PlatformData; import org.badvision.outlaweditor.data.xml.Tile; +import org.badvision.outlaweditor.ui.ApplicationUIController; +import org.badvision.outlaweditor.ui.TileEditorTabController; /** * FXML Controller class for tile editor tab diff --git a/OutlawEditor/src/main/resources/ApplicationUI.fxml b/OutlawEditor/src/main/resources/ApplicationUI.fxml index bbcedd5d..ca5aea7a 100644 --- a/OutlawEditor/src/main/resources/ApplicationUI.fxml +++ b/OutlawEditor/src/main/resources/ApplicationUI.fxml @@ -6,7 +6,7 @@ - + @@ -25,74 +25,7 @@ - - - - - - -