From 3636c422451177c26a62926353756f16d78e5320 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Tue, 6 Nov 2018 15:37:58 +0100 Subject: [PATCH] fix bug in extensionForm 2 --- .../BlockAndReplacePackets.java | 7 +- .../java/gearth/extensions/ExtensionForm.java | 64 +++++++++---------- .../java/gearth/ui/extensions/Extensions.java | 4 +- 3 files changed, 34 insertions(+), 41 deletions(-) diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java b/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java index 8bb771f..a27f57e 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java +++ b/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java @@ -157,12 +157,7 @@ public class BlockAndReplacePackets extends ExtensionForm { @Override protected void initExtension() { - intercept(HMessage.Side.TOSERVER, new Extension.MessageListener() { - @Override - public void act(HMessage message) { - System.out.println("just testing"); - } - }); + intercept(HMessage.Side.TOSERVER, message -> System.out.println("just testing")); } @Override diff --git a/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java b/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java index da13115..c4c76f2 100644 --- a/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java +++ b/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java @@ -13,46 +13,45 @@ import java.util.concurrent.Semaphore; */ public abstract class ExtensionForm extends Application { - private Extension extension = null; + private volatile Extension extension; protected static String[] args; protected volatile Stage primaryStage; - private ExtensionForm realForm = null; + private volatile ExtensionForm realForm = null; @Override public void start(Stage primaryStage) throws Exception { ExtensionInfo extInfo = getClass().getAnnotation(ExtensionInfo.class); - Semaphore semaphore = new Semaphore(1); - semaphore.acquire(); + 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 = 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; - } - }; - semaphore.release(); realForm.extension.run(); // Platform.runLater(primaryStage::close); //when the extension has ended, close this process @@ -60,10 +59,7 @@ public abstract class ExtensionForm extends Application { }); t.start(); - semaphore.acquire(); Platform.setImplicitExit(false); - realForm = launchForm(primaryStage); - realForm.primaryStage = primaryStage; primaryStage.setOnCloseRequest(event -> { event.consume(); diff --git a/G-Earth/src/main/java/gearth/ui/extensions/Extensions.java b/G-Earth/src/main/java/gearth/ui/extensions/Extensions.java index 074236e..decd089 100644 --- a/G-Earth/src/main/java/gearth/ui/extensions/Extensions.java +++ b/G-Earth/src/main/java/gearth/ui/extensions/Extensions.java @@ -291,7 +291,9 @@ public class Extensions extends SubForm { e.printStackTrace(); } }); - extension.onClick(observable -> extension.sendMessage(new HPacket(OUTGOING_MESSAGES_IDS.ONDOUBLECLICK))); + extension.onClick(observable -> { + extension.sendMessage(new HPacket(OUTGOING_MESSAGES_IDS.ONDOUBLECLICK)); + }); Platform.runLater(() -> producer.extensionConnected(extension)); }