diff --git a/OutlawEditor/pom.xml b/OutlawEditor/pom.xml
index 918426d5..794cde50 100644
--- a/OutlawEditor/pom.xml
+++ b/OutlawEditor/pom.xml
@@ -119,7 +119,7 @@
org.controlsfx
controlsfx
- 11.1.2
+ 11.2.0
org.openjfx
diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/SheetEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/SheetEditor.java
index 78f8325f..9786ad41 100644
--- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/SheetEditor.java
+++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/SheetEditor.java
@@ -39,6 +39,16 @@ public class SheetEditor {
return sheet;
}
+ public boolean isShowing() {
+ return primaryStage != null && primaryStage.isShowing();
+ }
+
+ public void toFront() {
+ if (isShowing()) {
+ primaryStage.toFront();
+ }
+ }
+
public void show() {
primaryStage = new Stage();
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/SheetEditor.fxml"));
diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ModalEditor.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ModalEditor.java
index e46fa200..da7bf76e 100644
--- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ModalEditor.java
+++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/ModalEditor.java
@@ -10,6 +10,8 @@
package org.badvision.outlaweditor.ui;
+import static org.badvision.outlaweditor.data.DataUtilities.uppercaseFirst;
+
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
@@ -23,8 +25,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
-import static org.badvision.outlaweditor.data.DataUtilities.uppercaseFirst;
-
import javafx.application.Platform;
import javafx.beans.property.adapter.JavaBeanStringPropertyBuilder;
import javafx.beans.value.ObservableValue;
@@ -51,6 +51,7 @@ import javafx.util.Callback;
* @author blurry
*/
public class ModalEditor {
+ Dialog dialog;
public static interface EditControl {
@@ -62,7 +63,6 @@ public class ModalEditor {
}
public static class TextControl implements EditControl {
-
TextField control = new TextField();
@Override
@@ -173,7 +173,7 @@ public class ModalEditor {
public Optional editObject(T sourceObject, Map obj, Class clazz, String title, String header) throws IntrospectionException {
BeanInfo info = Introspector.getBeanInfo(clazz);
- Dialog dialog = new Dialog();
+ dialog = new Dialog();
dialog.setTitle(title);
dialog.setHeaderText(header);
@@ -227,4 +227,14 @@ public class ModalEditor {
return dialog.showAndWait();
}
+
+ public boolean isOpen() {
+ return dialog != null && dialog.isShowing();
+ }
+
+ public void close() {
+ if (isOpen()) {
+ dialog.close();
+ }
+ }
}
diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/SheetEditorController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/SheetEditorController.java
index 58f57da3..d0b716ca 100644
--- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/SheetEditorController.java
+++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/SheetEditorController.java
@@ -15,12 +15,14 @@ package org.badvision.outlaweditor.ui;
import java.net.URL;
import java.util.ResourceBundle;
+
+import org.controlsfx.control.spreadsheet.SpreadsheetColumn;
+import org.controlsfx.control.spreadsheet.SpreadsheetView;
+
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TextField;
-import org.controlsfx.control.spreadsheet.SpreadsheetColumn;
-import org.controlsfx.control.spreadsheet.SpreadsheetView;
/**
*
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 e8490b87..f3848a41 100644
--- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java
+++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/UIAction.java
@@ -295,8 +295,19 @@ public class UIAction {
}
}
+ // Track open editors
+ static Map editors = new LinkedHashMap<>();
+
public static Optional editAndGetVariable(Variable v) throws IntrospectionException {
+ // Check if editor is already open
+ if (editors.containsKey(v)) {
+ editors.get(v);
+ if (editors.get(v).isOpen()) {
+ return Optional.empty();
+ }
+ }
ModalEditor editor = new ModalEditor();
+ editors.put(v, editor);
Map controls = new LinkedHashMap<>();
controls.put("name", new ModalEditor.TextControl());
@@ -362,12 +373,19 @@ public class UIAction {
return editSheet(sheet);
}
+ static Map sheetEditors = new LinkedHashMap<>();
public static Sheet editSheet(Sheet item) {
if (item == null) {
System.err.println("Requested to edit a null sheet object, ignoring!");
return null;
}
+ // Check if we don't already have an open editor first
+ if (sheetEditors.containsKey(item) && sheetEditors.get(item).isShowing()) {
+ sheetEditors.get(item).toFront();
+ return item;
+ }
SheetEditor editor = new SheetEditor(item);
+ sheetEditors.put(item, editor);
editor.show();
return item;
}
diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/GlobalEditorTabControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/GlobalEditorTabControllerImpl.java
index f5563d5d..29bc37df 100644
--- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/GlobalEditorTabControllerImpl.java
+++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/GlobalEditorTabControllerImpl.java
@@ -9,18 +9,13 @@
*/
package org.badvision.outlaweditor.ui.impl;
+import static org.badvision.outlaweditor.ui.UIAction.editScript;
+
import java.beans.IntrospectionException;
import java.util.Optional;
import java.util.logging.Level;
import java.util.logging.Logger;
-import javafx.application.Platform;
-import javafx.event.ActionEvent;
-import javafx.scene.control.ListCell;
-import javafx.scene.control.Tooltip;
-import javafx.scene.text.Font;
-import javafx.scene.text.FontWeight;
-
import org.badvision.outlaweditor.TransferHelper;
import org.badvision.outlaweditor.api.ApplicationState;
import org.badvision.outlaweditor.data.DataUtilities;
@@ -30,9 +25,14 @@ import org.badvision.outlaweditor.data.xml.UserType;
import org.badvision.outlaweditor.data.xml.Variable;
import org.badvision.outlaweditor.ui.GlobalEditorTabController;
import org.badvision.outlaweditor.ui.UIAction;
-import static org.badvision.outlaweditor.ui.UIAction.editScript;
import jakarta.xml.bind.JAXBException;
+import javafx.application.Platform;
+import javafx.event.ActionEvent;
+import javafx.scene.control.ListCell;
+import javafx.scene.control.Tooltip;
+import javafx.scene.text.Font;
+import javafx.scene.text.FontWeight;
public class GlobalEditorTabControllerImpl extends GlobalEditorTabController {
@@ -56,6 +56,7 @@ public class GlobalEditorTabControllerImpl extends GlobalEditorTabController {
@Override
public void startEdit() {
+ Platform.runLater(()->variableList.getSelectionModel().clearSelection());
UIAction.editVariable(getItem(), ApplicationState.getInstance().getGameData().getGlobal());
cancelEdit();
updateItem(getItem(), false);
@@ -75,6 +76,7 @@ public class GlobalEditorTabControllerImpl extends GlobalEditorTabController {
@Override
public void startEdit() {
+ Platform.runLater(()->globalScriptList.getSelectionModel().clearSelection());
UIAction.editScript(getItem(), ApplicationState.getInstance().getGameData().getGlobal());
cancelEdit();
updateItem(getItem(), false);
@@ -97,6 +99,7 @@ public class GlobalEditorTabControllerImpl extends GlobalEditorTabController {
@Override
public void startEdit() {
+ Platform.runLater(()->dataTypeList.getSelectionModel().clearSelection());
UIAction.editUserType(getItem());
cancelEdit();
updateItem(getItem(), false);
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 6129a9ad..2995ade1 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
@@ -15,6 +15,9 @@
*/
package org.badvision.outlaweditor.ui.impl;
+import static org.badvision.outlaweditor.data.DataUtilities.getValue;
+import static org.badvision.outlaweditor.data.DataUtilities.setValue;
+
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
@@ -27,8 +30,6 @@ import java.util.stream.Collectors;
import org.badvision.outlaweditor.SheetEditor;
import org.badvision.outlaweditor.TransferHelper;
import org.badvision.outlaweditor.data.DataUtilities;
-import static org.badvision.outlaweditor.data.DataUtilities.getValue;
-import static org.badvision.outlaweditor.data.DataUtilities.setValue;
import org.badvision.outlaweditor.data.xml.Columns;
import org.badvision.outlaweditor.data.xml.Rows;
import org.badvision.outlaweditor.data.xml.Rows.Row;