From 885dc982b41a9e29fe15f82328533e9575580b13 Mon Sep 17 00:00:00 2001 From: Brendan Robert Date: Mon, 9 Oct 2023 19:06:23 -0500 Subject: [PATCH] Re-implemented undo functionality --- .vscode/settings.json | 3 ++ OutlawEditor/pom.xml | 40 +++++++++------ OutlawEditor/src/main/java/module-info.java | 8 +-- .../org/badvision/outlaweditor/Editor.java | 4 +- .../badvision/outlaweditor/GlobalEditor.java | 6 ++- .../badvision/outlaweditor/ImageEditor.java | 10 ++++ .../org/badvision/outlaweditor/MapEditor.java | 17 +++++++ .../badvision/outlaweditor/SheetEditor.java | 7 +-- .../badvision/outlaweditor/TileEditor.java | 30 ++++++----- .../badvision/outlaweditor/api/Platform.java | 2 +- .../outlaweditor/data/DataUtilities.java | 50 +------------------ .../ui/ImageEditorTabController.java | 2 - .../badvision/outlaweditor/ui/UIAction.java | 2 + .../ui/impl/SheetEditorControllerImpl.java | 2 +- .../ui/impl/TileEditorTabControllerImpl.java | 7 +-- .../src/main/resources/SheetEditor.fxml | 2 +- Platform/Apple/tools/A2PackPlugin/pom.xml | 18 ------- 17 files changed, 101 insertions(+), 109 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..e0f15db2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/OutlawEditor/pom.xml b/OutlawEditor/pom.xml index 707700d7..918426d5 100644 --- a/OutlawEditor/pom.xml +++ b/OutlawEditor/pom.xml @@ -5,7 +5,7 @@ OutlawEditor OutlawEditor jar - 3.0-SNAPSHOT + 3.0 UTF-8 org.badvision.outlaweditor.Application @@ -75,6 +75,27 @@ org.badvision.outlaweditor.data.xml + + org.apache.maven.plugins + maven-dependency-plugin + 3.6.0 + + + copy-dependencies + package + + copy-dependencies + + + ${project.build.directory}/lib + false + false + true + compile + + + + @@ -88,23 +109,12 @@ jakarta.xml.bind jakarta.xml.bind-api - 4.0.0 + 4.0.1 - com.sun.xml.bind - jaxb-impl + org.glassfish.jaxb + jaxb-runtime 4.0.3 - runtime - - - org.apache.poi - poi - ${poi.version} - - - org.apache.poi - poi-ooxml - ${poi.version} org.controlsfx diff --git a/OutlawEditor/src/main/java/module-info.java b/OutlawEditor/src/main/java/module-info.java index 2dd576bd..6d801b1a 100644 --- a/OutlawEditor/src/main/java/module-info.java +++ b/OutlawEditor/src/main/java/module-info.java @@ -1,8 +1,6 @@ module outlaweditor { - requires org.controlsfx.controls; requires javafx.controls; requires javafx.graphics; - requires jdk.jsobject; requires javafx.web; requires javafx.media; requires javafx.fxml; @@ -10,8 +8,12 @@ module outlaweditor { requires java.desktop; requires java.scripting; requires java.xml; + requires jdk.jsobject; requires jakarta.xml.bind; - requires org.apache.poi.ooxml; + requires org.glassfish.jaxb.runtime; + + requires org.controlsfx.controls; + // requires org.apache.poi.ooxml; opens org.badvision.outlaweditor to javafx.graphics, javafx.fxml, javafx.web, org.apache.poi.ooxml; opens org.badvision.outlaweditor.ui to javafx.fxml; diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java index e90c52e6..dda36c6a 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/Editor.java @@ -109,12 +109,14 @@ public abstract class Editor implements DataObserver { public void undo() { if (!undoStates.isEmpty()) { T undoState = undoStates.removeFirst(); - setEntity(undoState); + copyEntityFrom(undoState); onEntityUpdated(); redraw(); } } + public abstract void copyEntityFrom(T copyFrom); + protected void onEntityUpdated() { } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/GlobalEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/GlobalEditor.java index ccb4145f..60f55828 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/GlobalEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/GlobalEditor.java @@ -99,5 +99,9 @@ public class GlobalEditor extends Editor{ public void copyData() { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } - + + @Override + public void copyEntityFrom(Global src) { + throw new UnsupportedOperationException("Not supported."); //To change body of generated methods, choose Tools | Templates. + } } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ImageEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ImageEditor.java index 09f48fd3..83bf6602 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ImageEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ImageEditor.java @@ -79,4 +79,14 @@ public abstract class ImageEditor extends Editor { public void showSelectorModal() { patternSelectModal.showPatternSelectModal(targetPane); } + + @Override + public void copyEntityFrom(Image src) { + Image dest = getEntity(); + dest.setCategory(src.getCategory()); + dest.setComment(src.getComment()); + dest.setName(src.getName()); + dest.getDisplayData().clear(); + dest.getDisplayData().addAll(src.getDisplayData()); + } } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java index 04168d86..83f32aff 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/MapEditor.java @@ -817,4 +817,21 @@ public class MapEditor extends Editor implements EventH } } + + @Override + public void copyEntityFrom(Map src) { + Map dest = getEntity(); + dest.setCategory(src.getCategory()); + dest.setDisplay3D(src.isDisplay3D()); + dest.setHeight(src.getHeight()); + dest.setName(src.getName()); + dest.setOrder(src.getOrder()); + dest.setScripts(src.getScripts()); + dest.setStartX(src.getStartX()); + dest.setStartY(src.getStartY()); + dest.setVariables(src.getVariables()); + dest.setWidth(src.getWidth()); + dest.getChunk().clear(); + dest.getChunk().addAll(src.getChunk()); + } } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/SheetEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/SheetEditor.java index 4b4779ad..78f8325f 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/SheetEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/SheetEditor.java @@ -14,13 +14,14 @@ package org.badvision.outlaweditor; import java.io.IOException; + +import org.badvision.outlaweditor.data.xml.Sheet; +import org.badvision.outlaweditor.ui.impl.SheetEditorControllerImpl; + import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.layout.AnchorPane; import javafx.stage.Stage; -import javafx.stage.WindowEvent; -import org.badvision.outlaweditor.data.xml.Sheet; -import org.badvision.outlaweditor.ui.impl.SheetEditorControllerImpl; /** * Edit a spreadsheet of information diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileEditor.java index d1eceefe..54358d46 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileEditor.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/TileEditor.java @@ -10,20 +10,11 @@ package org.badvision.outlaweditor; -/** - * - * @author brobert - */ -import javafx.event.EventHandler; -import javafx.scene.control.Menu; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; -import javafx.scene.layout.FlowPane; -import javafx.scene.layout.Pane; -import org.badvision.outlaweditor.api.ApplicationState; import org.badvision.outlaweditor.data.xml.Tile; import org.badvision.outlaweditor.ui.PatternSelectModal; -import org.badvision.outlaweditor.ui.TileSelectModal; + +import javafx.scene.control.Menu; +import javafx.scene.layout.Pane; public abstract class TileEditor extends Editor { abstract public void buildPatternSelector(Menu tilePatternMenu); @@ -45,4 +36,19 @@ public abstract class TileEditor extends Editor { public void showSelectorModal() { patternSelectModal.showPatternSelectModal(targetPane); } + + @Override + public void copyEntityFrom(Tile src) { + Tile dest = getEntity(); + dest.setBlocker(src.isBlocker()); + dest.setCategory(src.getCategory()); + dest.setComment(src.getComment()); + dest.setId(src.getId()); + dest.setName(src.getName()); + dest.setObstruction(src.isObstruction()); + dest.setSprite(src.isSprite()); + dest.getDisplayData().clear(); + dest.getDisplayData().addAll(src.getDisplayData()); + } + } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/api/Platform.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/api/Platform.java index a3dc142e..06fe52c6 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/api/Platform.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/api/Platform.java @@ -43,7 +43,7 @@ public enum Platform { public int maxImageWidth; public int maxImageHeight; - Platform(Class ed, Class imged, TileRenderer ren, ImageRenderer img, int w, int h, int maxW, int maxH) { + Platform(Class ed, Class imged, TileRenderer ren, ImageRenderer img, int w, int h, int maxW, int maxH) { tileEditor = ed; imageEditor = imged; tileRenderer = ren; diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/DataUtilities.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/DataUtilities.java index 08990bf3..7bb51543 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/DataUtilities.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/data/DataUtilities.java @@ -34,12 +34,6 @@ import java.util.logging.Logger; import java.util.stream.Collectors; import java.util.stream.Stream; import javax.xml.namespace.QName; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.badvision.outlaweditor.api.ApplicationState; import org.badvision.outlaweditor.data.xml.Block; import org.badvision.outlaweditor.data.xml.Field; @@ -266,12 +260,8 @@ public class DataUtilities { if (file.getName().toLowerCase().endsWith("txt") || file.getName().toLowerCase().endsWith("tsv")) { return readTextFile(file); - } else if (file.getName().toLowerCase().endsWith("xls")) { - return readLegacyExcel(file); - } else if (file.getName().toLowerCase().endsWith("xlsx")) { - return readExcel(file); - } - } catch (IOException | InvalidFormatException ex) { + } + } catch (IOException ex) { Logger.getLogger(DataUtilities.class.getName()).log(Level.SEVERE, null, ex); } UIAction.alert("Couldn't figure out how to import file " + file.getName()); @@ -283,42 +273,6 @@ public class DataUtilities { return reader.lines().map(line -> Arrays.asList(line.split("\\t"))).collect(Collectors.toList()); } - public static List> readLegacyExcel(File file) throws FileNotFoundException, IOException { - return readSheet(new HSSFWorkbook(new FileInputStream(file))); - } - - public static List> readExcel(File file) throws FileNotFoundException, IOException, InvalidFormatException { - return readSheet(new XSSFWorkbook(file)); - } - - public static List> readSheet(Workbook workbook) { - Sheet sheet = workbook.getSheetAt(0); - List> data = new ArrayList<>(); - sheet.forEach(row -> { - List rowData = new ArrayList<>(); - row.forEach(cell -> { - String col = getStringValueFromCell(cell); - rowData.add(col); - }); - data.add(rowData); - }); - return data; - } - - public static String getStringValueFromCell(Cell cell) { - switch (cell.getCellType()) { - case BOOLEAN: - return Boolean.toString(cell.getBooleanCellValue()); - case BLANK: - return null; - case NUMERIC: - return Double.toString(cell.getNumericCellValue()); - case STRING: - return cell.getStringCellValue(); - default: - return "???"; - } - } public static String hexDump(byte[] data) { StringBuilder dump = new StringBuilder(); diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java index 6e5032c5..f9be9ade 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ImageEditorTabController.java @@ -10,8 +10,6 @@ package org.badvision.outlaweditor.ui; -import javafx.beans.property.SimpleStringProperty; -import javafx.beans.property.StringProperty; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.Group; diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java index 16d2040f..e8490b87 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java @@ -144,6 +144,8 @@ public class UIAction { JAXB.marshal(ApplicationState.getInstance().getGameData(), currentSaveFile); } break; + default: + break; } } diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/SheetEditorControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/SheetEditorControllerImpl.java index 48e64f70..6129a9ad 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/SheetEditorControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/SheetEditorControllerImpl.java @@ -266,7 +266,7 @@ public class SheetEditorControllerImpl extends SheetEditorController { rebuildColumnHeaders(); - tableData = FXCollections.observableList(new ArrayList(numRows)); + tableData = FXCollections.observableList(new ArrayList<>(numRows)); if (editor.getSheet().getRows() != null) { int rowNum = 0; for (Row row : editor.getSheet().getRows().getRow()) { diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java index 4be70407..61119084 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/TileEditorTabControllerImpl.java @@ -10,6 +10,7 @@ package org.badvision.outlaweditor.ui.impl; +import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.Comparator; import java.util.List; @@ -46,7 +47,7 @@ import javafx.util.StringConverter; */ public class TileEditorTabControllerImpl extends TileEditorTabController { FlowPane quickMenu = new FlowPane(); - ChangeListener rebuildListener = (ObservableValue value, Object oldValue, Object newValue) -> rebuildTileSelectors(); + ChangeListener rebuildListener = (ObservableValue value, String oldValue, String newValue) -> rebuildTileSelectors(); @Override public void onCurrentTileSelected(ActionEvent event) { @@ -235,12 +236,12 @@ public class TileEditorTabControllerImpl extends TileEditorTabController { bind(tileSpriteField.selectedProperty(), boolProp(t, "sprite")); bind(tileBlockerField.selectedProperty(), boolProp(t, "blocker")); bind(tileNameField.textProperty(), stringProp(t, "name")); - TileEditor editor = ApplicationState.getInstance().getCurrentPlatform().tileEditor.newInstance(); + TileEditor editor = ApplicationState.getInstance().getCurrentPlatform().tileEditor.getDeclaredConstructor().newInstance(); editor.setEntity(t); setCurrentTileEditor(editor); tileNameField.textProperty().addListener(rebuildListener); tileCategoryField.textProperty().addListener(rebuildListener); - } catch (NoSuchMethodException ex) { + } catch (IllegalArgumentException | InvocationTargetException | SecurityException | NoSuchMethodException ex) { Logger.getLogger(ApplicationUIController.class.getName()).log(Level.SEVERE, null, ex); } catch (InstantiationException | IllegalAccessException ex) { Logger.getLogger(ApplicationUIControllerImpl.class.getName()).log(Level.SEVERE, null, ex); diff --git a/OutlawEditor/src/main/resources/SheetEditor.fxml b/OutlawEditor/src/main/resources/SheetEditor.fxml index 8e31c089..4493d819 100644 --- a/OutlawEditor/src/main/resources/SheetEditor.fxml +++ b/OutlawEditor/src/main/resources/SheetEditor.fxml @@ -16,7 +16,7 @@ - + diff --git a/Platform/Apple/tools/A2PackPlugin/pom.xml b/Platform/Apple/tools/A2PackPlugin/pom.xml index ac13fbca..f16d375b 100644 --- a/Platform/Apple/tools/A2PackPlugin/pom.xml +++ b/Platform/Apple/tools/A2PackPlugin/pom.xml @@ -30,24 +30,6 @@ - - org.apache.felix - maven-scr-plugin - 1.22.0 - - - generate-scr-scrdescriptor - - scr - - - - 8-Bit Bunch - - - - - com.googlecode.addjars-maven-plugin addjars-maven-plugin