diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java b/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java index a27f57e..1b60e82 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java +++ b/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java @@ -1,14 +1,10 @@ package extensions.blockreplacepackets; -import gearth.extensions.Extension; import gearth.protocol.HMessage; import gearth.protocol.HPacket; import gearth.ui.GEarthController; import javafx.application.Platform; -import javafx.beans.InvalidationListener; -import javafx.beans.Observable; import javafx.event.ActionEvent; -import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; @@ -18,7 +14,6 @@ import javafx.scene.control.TextField; import javafx.stage.Stage; import gearth.extensions.ExtensionForm; import gearth.extensions.ExtensionInfo; -import javafx.stage.WindowEvent; /** * Created by Jonas on 22/09/18. @@ -40,8 +35,7 @@ public class BlockAndReplacePackets extends ExtensionForm { public TextField txt_value; public static void main(String[] args) { - ExtensionForm.args = args; - launch(args); + runExtensionForm(args, BlockAndReplacePackets.class); } //initialize javaFX elements diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/RuleContainer.java b/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/RuleContainer.java new file mode 100644 index 0000000..259e26c --- /dev/null +++ b/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/RuleContainer.java @@ -0,0 +1,7 @@ +package extensions.blockreplacepackets; + +/** + * Created by Jeunez on 6/11/2018. + */ +public class RuleContainer { +} diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/blockreplace.fxml b/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/blockreplace.fxml index 4e463a1..eb0532d 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/blockreplace.fxml +++ b/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/blockreplace.fxml @@ -11,7 +11,7 @@ - + @@ -107,16 +107,16 @@ - + - + - + @@ -142,6 +142,6 @@ - + diff --git a/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java b/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java index c4c76f2..4815416 100644 --- a/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java +++ b/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java @@ -11,65 +11,17 @@ import java.util.concurrent.Semaphore; /** * Created by Jonas on 22/09/18. */ -public abstract class ExtensionForm extends Application { +public abstract class ExtensionForm { - private volatile Extension extension; - protected static String[] args; - protected volatile Stage primaryStage; + volatile Extension extension; + volatile Stage primaryStage; - private volatile ExtensionForm realForm = null; - - @Override - public void start(Stage primaryStage) throws Exception { - ExtensionInfo extInfo = getClass().getAnnotation(ExtensionInfo.class); - - realForm = launchForm(primaryStage); - realForm.extension = new Extension(args) { - @Override - protected void init() { - realForm.initExtension(); - } - - @Override - protected void onClick() { - realForm.onClick(); - } - - @Override - protected void onStartConnection() { - realForm.onStartConnection(); - } - - @Override - protected void onEndConnection() { - realForm.onEndConnection(); - } - - @Override - ExtensionInfo getInfoAnnotations() { - return extInfo; - } - }; - realForm.primaryStage = primaryStage; - Thread t = new Thread(() -> { - realForm.extension.run(); -// Platform.runLater(primaryStage::close); - //when the extension has ended, close this process - System.exit(0); - }); - t.start(); - - Platform.setImplicitExit(false); - - primaryStage.setOnCloseRequest(event -> { - event.consume(); - Platform.runLater(() -> { - primaryStage.hide(); - realForm.onHide(); - }); - }); + protected static void runExtensionForm(String[] args, Class extension) { + ExtensionFormLauncher launcher = new ExtensionFormLauncher(); + launcher.trigger(extension, args); } + public abstract ExtensionForm launchForm(Stage primaryStage) throws Exception; //wrap extension methods @@ -104,7 +56,7 @@ public abstract class ExtensionForm extends Application { /** * The application got doubleclicked from the G-Earth interface. Doing something here is optional */ - private void onClick(){ + protected void onClick(){ Platform.runLater(() -> { primaryStage.show(); primaryStage.requestFocus(); diff --git a/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java b/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java new file mode 100644 index 0000000..e380415 --- /dev/null +++ b/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java @@ -0,0 +1,73 @@ +package gearth.extensions; + +import javafx.application.Application; +import javafx.application.Platform; +import javafx.stage.Stage; + +/** + * Created by Jeunez on 6/11/2018. + */ +public class ExtensionFormLauncher extends Application{ + + private static Class extension; + private static String[] args; + + @Override + public void start(Stage primaryStage) throws Exception { + ExtensionInfo extInfo = extension.getAnnotation(ExtensionInfo.class); + + ExtensionForm creator = extension.newInstance(); + ExtensionForm extensionForm = creator.launchForm(primaryStage); + + extensionForm.extension = new Extension(args) { + @Override + protected void init() { + extensionForm.initExtension(); + } + + @Override + protected void onClick() { + extensionForm.onClick(); + } + + @Override + protected void onStartConnection() { + extensionForm.onStartConnection(); + } + + @Override + protected void onEndConnection() { + extensionForm.onEndConnection(); + } + + @Override + ExtensionInfo getInfoAnnotations() { + return extInfo; + } + }; + extensionForm.primaryStage = primaryStage; + Thread t = new Thread(() -> { + extensionForm.extension.run(); + //when the extension has ended, close this process + System.exit(0); + }); + t.start(); + + Platform.setImplicitExit(false); + + primaryStage.setOnCloseRequest(event -> { + event.consume(); + Platform.runLater(() -> { + primaryStage.hide(); + extensionForm.onHide(); + }); + }); + } + + public static void trigger( Class extension, String[] args) { + ExtensionFormLauncher.extension = extension; + ExtensionFormLauncher.args = args; + launch(args); + } + +}