From eb7c9f1829b6eeb154849aae228271f9f52034e3 Mon Sep 17 00:00:00 2001 From: sirjonasxx <36828922+sirjonasxx@users.noreply.github.com> Date: Sun, 25 Apr 2021 18:05:15 +0200 Subject: [PATCH] packetlogger changes --- .../InternalExtensionFormBuilder.java | 14 ++- .../main/java/gearth/protocol/HPacket.java | 2 +- .../extensionhandler/ExtensionHandler.java | 14 ++- .../ExtensionProducerFactory.java | 10 +- .../simple/SimpleExtensionProducer.java | 3 +- .../uilogger/Element.java | 2 +- .../uilogger/UiLogger.java | 110 ++++++++++++++++++ .../uilogger/UiLoggerController.java | 32 ++++- .../main/java/gearth/ui/GEarthController.java | 6 +- .../ui/connection/ConnectionController.java | 6 + .../ui/extensions/ExtensionsController.java | 4 + .../gearth/ui/logger/LoggerController.java | 8 +- .../loggerdisplays/PacketLoggerFactory.java | 27 ++++- .../loggerdisplays/uilogger/UiLogger.java | 103 ---------------- .../uilogger/UiLogger.fxml | 42 +++++-- .../internal_extensions}/uilogger/logger.css | 0 16 files changed, 243 insertions(+), 140 deletions(-) rename G-Earth/src/main/java/gearth/{ui/logger/loggerdisplays => services/internal_extensions}/uilogger/Element.java (80%) create mode 100644 G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLogger.java rename G-Earth/src/main/java/gearth/{ui/logger/loggerdisplays => services/internal_extensions}/uilogger/UiLoggerController.java (90%) delete mode 100644 G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/uilogger/UiLogger.java rename G-Earth/src/main/resources/gearth/{ui/logger => services/internal_extensions}/uilogger/UiLogger.fxml (61%) rename G-Earth/src/main/resources/gearth/{ui/logger => services/internal_extensions}/uilogger/logger.css (100%) diff --git a/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java index c1cfc03..ddf5358 100644 --- a/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java +++ b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java @@ -5,15 +5,15 @@ import gearth.services.extensionhandler.extensions.extensionproducers.ExtensionP import javafx.application.Platform; import javafx.stage.Stage; -public class InternalExtensionFormBuilder { +public class InternalExtensionFormBuilder { - public static void launch(Class extension, ExtensionProducerObserver observer) { + public T launch(Class extensionClass, ExtensionProducerObserver observer) { try { - ExtensionInfo extInfo = extension.getAnnotation(ExtensionInfo.class); - ExtensionForm creator = extension.newInstance(); + ExtensionInfo extInfo = extensionClass.getAnnotation(ExtensionInfo.class); + T creator = extensionClass.newInstance(); Stage stage = new Stage(); - ExtensionForm extensionForm = creator.launchForm(stage); + T extensionForm = (T)(creator.launchForm(stage)); InternalExtension internalExtension = new InternalExtension() { @Override @@ -67,8 +67,12 @@ public class InternalExtensionFormBuilder { extensionForm.onHide(); }); }); + + return extensionForm; } catch (Exception e) { e.printStackTrace(); } + + return null; } } diff --git a/G-Earth/src/main/java/gearth/protocol/HPacket.java b/G-Earth/src/main/java/gearth/protocol/HPacket.java index 469232f..6de7ed7 100644 --- a/G-Earth/src/main/java/gearth/protocol/HPacket.java +++ b/G-Earth/src/main/java/gearth/protocol/HPacket.java @@ -650,7 +650,7 @@ public class HPacket implements StringifyAble { if (isCorrupted()) return ""; PacketInfo packetInfo = getPacketInfo(direction, packetInfoManager); - if (packetInfo.getStructure() != null) { + if (packetInfo != null && packetInfo.getStructure() != null) { return PacketStringUtils.toExpressionFromGivenStructure(this, packetInfo.getStructure(), removeShuffle ? packetInfo : null); } return PacketStringUtils.predictedExpression(this, removeShuffle ? packetInfo : null); diff --git a/G-Earth/src/main/java/gearth/services/extensionhandler/ExtensionHandler.java b/G-Earth/src/main/java/gearth/services/extensionhandler/ExtensionHandler.java index 596e858..f110770 100644 --- a/G-Earth/src/main/java/gearth/services/extensionhandler/ExtensionHandler.java +++ b/G-Earth/src/main/java/gearth/services/extensionhandler/ExtensionHandler.java @@ -44,7 +44,6 @@ public class ExtensionHandler { } private void initialize() { - hConnection.getStateObservable().addListener((oldState, newState) -> { if (newState == HState.CONNECTED) { synchronized (gEarthExtensions) { @@ -70,7 +69,7 @@ public class ExtensionHandler { }); extensionProducers = ExtensionProducerFactory.getAll(); - extensionProducers.forEach(this::initializeExtensionProducer); + extensionProducers.forEach(extensionProducer -> extensionProducer.startProducing(createExtensionProducerObserver())); } @@ -173,8 +172,8 @@ public class ExtensionHandler { - private void initializeExtensionProducer(ExtensionProducer producer) { - producer.startProducing(new ExtensionProducerObserver() { + private ExtensionProducerObserver createExtensionProducerObserver() { + return new ExtensionProducerObserver() { @Override public void onExtensionProduced(GEarthExtension extension) { synchronized (gEarthExtensions) { @@ -254,7 +253,7 @@ public class ExtensionHandler { observable.fireEvent(l -> l.onExtensionConnect(extension)); } - }); + }; } public List getExtensionProducers() { @@ -264,5 +263,10 @@ public class ExtensionHandler { return observable; } + public void addExtensionProducer(ExtensionProducer producer) { + producer.startProducing(createExtensionProducerObserver()); + extensionProducers.add(producer); + } + } diff --git a/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/extensionproducers/ExtensionProducerFactory.java b/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/extensionproducers/ExtensionProducerFactory.java index d02b910..40c0b83 100644 --- a/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/extensionproducers/ExtensionProducerFactory.java +++ b/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/extensionproducers/ExtensionProducerFactory.java @@ -3,6 +3,7 @@ package gearth.services.extensionhandler.extensions.extensionproducers; import gearth.services.extensionhandler.extensions.implementations.network.NetworkExtensionsProducer; import gearth.services.extensionhandler.extensions.implementations.simple.SimpleExtensionProducer; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -10,10 +11,11 @@ public class ExtensionProducerFactory { // returns one of every ExtensionProducer class we have created, to support all types of extensions public static List getAll() { - return Arrays.asList( - new NetworkExtensionsProducer(), - new SimpleExtensionProducer() - ); + List all = new ArrayList<>(); + all.add(new NetworkExtensionsProducer()); + all.add(new SimpleExtensionProducer()); + + return all; } diff --git a/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/implementations/simple/SimpleExtensionProducer.java b/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/implementations/simple/SimpleExtensionProducer.java index b5c55aa..ddd5539 100644 --- a/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/implementations/simple/SimpleExtensionProducer.java +++ b/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/implementations/simple/SimpleExtensionProducer.java @@ -13,6 +13,7 @@ public class SimpleExtensionProducer implements ExtensionProducer { // uncomment the next line if you want to see an embedded example extension in G-Earth // observer.onExtensionProduced(new ExampleExtension()); - InternalExtensionFormBuilder.launch(BlockAndReplacePackets.class, observer); + new InternalExtensionFormBuilder() + .launch(BlockAndReplacePackets.class, observer); } } diff --git a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/uilogger/Element.java b/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/Element.java similarity index 80% rename from G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/uilogger/Element.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/Element.java index 7c6d0d1..7a8169a 100644 --- a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/uilogger/Element.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/Element.java @@ -1,4 +1,4 @@ -package gearth.ui.logger.loggerdisplays.uilogger; +package gearth.services.internal_extensions.uilogger; /** * Created by Jonas on 17/11/2018. diff --git a/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLogger.java b/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLogger.java new file mode 100644 index 0000000..3c8049d --- /dev/null +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLogger.java @@ -0,0 +1,110 @@ +package gearth.services.internal_extensions.uilogger; + +import gearth.extensions.ExtensionForm; +import gearth.extensions.ExtensionInfo; +import gearth.misc.packet_info.PacketInfoManager; +import gearth.protocol.HConnection; +import gearth.protocol.HMessage; +import gearth.protocol.HPacket; +import gearth.ui.logger.loggerdisplays.PacketLogger; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.image.Image; +import javafx.stage.Modality; +import javafx.stage.Stage; + +import java.util.ArrayList; + +@ExtensionInfo( + Title = "Packet Logger", + Description = "", + Version = "0.1", + Author = "sirjonasxx & Scott" +) +public class UiLogger extends ExtensionForm implements PacketLogger { + private UiLoggerController controller = null; + + @Override + public void start(HConnection hConnection) { +// // don't let the user close this window on their own +// stage.setOnCloseRequest(Event::consume); + +// primaryStage.show(); + } + + @Override + public void stop() { +// primaryStage.hide(); +// if (stage != null) +// stage.close(); + } + + @Override + public void appendSplitLine() { + // don't use this, we can't discern incoming/outgoing + //Platform.runLater(() -> controller.appendSplitLine()); + } + + @Override + protected void initExtension() { + onConnect((host, port, hotelversion, clientIdentifier, clientType, packetInfoManager) -> { + controller.setPacketInfoManager(packetInfoManager); + controller.onConnect(); + }); + } + + @Override + protected void onEndConnection() { + controller.onDisconnect(); + controller.setPacketInfoManager(new PacketInfoManager(new ArrayList<>())); + } + + @Override + public ExtensionForm launchForm(Stage stage) throws Exception { + FXMLLoader loader = new FXMLLoader(UiLogger.class.getResource("UiLogger.fxml")); + + Parent root = loader.load(); + stage.setTitle("G-Earth | Packet Logger"); + stage.initModality(Modality.NONE); + stage.getIcons().add(new Image(getClass().getResourceAsStream("/gearth/G-EarthLogoSmaller.png"))); + + Scene scene = new Scene(root); + scene.getStylesheets().add("/gearth/ui/bootstrap3.css"); + scene.getStylesheets().add("/gearth/services/internal_extensions/uilogger/logger.css"); + controller = loader.getController(); + controller.setStage(stage); + + stage.setScene(scene); + return this; + } + + private class Elem { + HPacket packet; + int types; + Elem(HPacket packet, int types) { + this.packet = packet; + this.types = types; + } + } + + @Override + public void appendMessage(HPacket packet, int types) { + controller.appendMessage(packet, types); + } + + @Override + public void appendStructure(HPacket packet, HMessage.Direction direction) { + + } + + @Override + protected boolean canLeave() { + return false; + } + + @Override + protected boolean canDelete() { + return false; + } +} diff --git a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/uilogger/UiLoggerController.java b/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerController.java similarity index 90% rename from G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/uilogger/UiLoggerController.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerController.java index 22f4532..e55f4c8 100644 --- a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/uilogger/UiLoggerController.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/uilogger/UiLoggerController.java @@ -1,4 +1,4 @@ -package gearth.ui.logger.loggerdisplays.uilogger; +package gearth.services.internal_extensions.uilogger; import gearth.misc.packet_info.PacketInfo; import gearth.misc.packet_info.PacketInfoManager; @@ -37,10 +37,15 @@ public class UiLoggerController implements Initializable { public Label lblPacketInfo; public CheckMenuItem chkUseNewStructures; + public CheckMenuItem chkOpenOnConnect; + public CheckMenuItem chkResetOnConnect; + public CheckMenuItem chkHideOnDisconnect; + public CheckMenuItem chkResetOnDisconnect; + private StyleClassedTextArea area; private Stage stage; - private PacketInfoManager packetInfoManager; + private PacketInfoManager packetInfoManager = null; private boolean viewIncoming = true; private boolean viewOutgoing = true; @@ -97,7 +102,6 @@ public class UiLoggerController implements Initializable { boolean packetInfoAvailable = packetInfoManager.getPacketInfoList().size() > 0; - lblPacketInfo.setText("Packet info: " + (packetInfoAvailable ? "True" : "False")); if ((viewMessageName || viewMessageHash) && packetInfoAvailable) { List messages = packetInfoManager.getAllPacketInfoFromHeaderId( @@ -208,6 +212,10 @@ public class UiLoggerController implements Initializable { public void setPacketInfoManager(PacketInfoManager packetInfoManager) { this.packetInfoManager = packetInfoManager; + Platform.runLater(() -> { + boolean packetInfoAvailable = packetInfoManager.getPacketInfoList().size() > 0; + lblPacketInfo.setText("Packet info: " + (packetInfoAvailable ? "True" : "False")); + }); } public void toggleViewIncoming() { @@ -252,4 +260,22 @@ public class UiLoggerController implements Initializable { public void clearText(ActionEvent actionEvent) { area.clear(); } + + public void onDisconnect() { + if (chkHideOnDisconnect.isSelected()) { + stage.hide(); + } + if (chkResetOnDisconnect.isSelected()) { + clearText(null); + } + } + + public void onConnect() { + if (chkResetOnConnect.isSelected()) { + clearText(null); + } + if (chkOpenOnConnect.isSelected()) { + stage.show(); + } + } } diff --git a/G-Earth/src/main/java/gearth/ui/GEarthController.java b/G-Earth/src/main/java/gearth/ui/GEarthController.java index 43a7f45..c405c42 100644 --- a/G-Earth/src/main/java/gearth/ui/GEarthController.java +++ b/G-Earth/src/main/java/gearth/ui/GEarthController.java @@ -87,7 +87,11 @@ public class GEarthController { private void trySetController() { if (++initcount == 2) { GEarthController self = this; - tabs.forEach(subForm -> subForm.setParentController(self)); + + extensionsController.setParentController(self); + tabs.forEach(subForm -> { + if (subForm != extensionsController) subForm.setParentController(self); + }); } } diff --git a/G-Earth/src/main/java/gearth/ui/connection/ConnectionController.java b/G-Earth/src/main/java/gearth/ui/connection/ConnectionController.java index e7b1f22..72d1a34 100644 --- a/G-Earth/src/main/java/gearth/ui/connection/ConnectionController.java +++ b/G-Earth/src/main/java/gearth/ui/connection/ConnectionController.java @@ -116,7 +116,11 @@ public class ConnectionController extends SubForm { } } + + private void updateInputUI() { + if (parentController == null) return; + grd_clientSelection.setDisable(getHConnection().getState() != HState.NOT_CONNECTED); txtfield_hotelversion.setText(getHConnection().getHotelVersion()); @@ -184,6 +188,8 @@ public class ConnectionController extends SubForm { } })); + + Platform.runLater(this::updateInputUI); } public void btnConnect_clicked(ActionEvent actionEvent) { diff --git a/G-Earth/src/main/java/gearth/ui/extensions/ExtensionsController.java b/G-Earth/src/main/java/gearth/ui/extensions/ExtensionsController.java index 813599f..214acea 100644 --- a/G-Earth/src/main/java/gearth/ui/extensions/ExtensionsController.java +++ b/G-Earth/src/main/java/gearth/ui/extensions/ExtensionsController.java @@ -133,4 +133,8 @@ public class ExtensionsController extends SubForm { Platform.runLater(this::updateGPythonStatus); }); } + + public ExtensionHandler getExtensionHandler() { + return extensionHandler; + } } diff --git a/G-Earth/src/main/java/gearth/ui/logger/LoggerController.java b/G-Earth/src/main/java/gearth/ui/logger/LoggerController.java index 5caa3df..905cf1d 100644 --- a/G-Earth/src/main/java/gearth/ui/logger/LoggerController.java +++ b/G-Earth/src/main/java/gearth/ui/logger/LoggerController.java @@ -2,6 +2,7 @@ package gearth.ui.logger; import gearth.extensions.parsers.HDirection; import gearth.protocol.connection.HState; +import gearth.services.extensionhandler.extensions.extensionproducers.ExtensionProducer; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.scene.control.Button; @@ -18,6 +19,7 @@ import gearth.ui.logger.loggerdisplays.PacketLogger; import gearth.ui.logger.loggerdisplays.PacketLoggerFactory; import java.util.Calendar; +import java.util.function.Predicate; public class LoggerController extends SubForm { @@ -34,9 +36,13 @@ public class LoggerController extends SubForm { private int packetLimit = 8000; - private PacketLogger packetLogger = PacketLoggerFactory.get(); + private PacketLoggerFactory packetLoggerFactory; + private PacketLogger packetLogger; public void onParentSet(){ + packetLoggerFactory = new PacketLoggerFactory(parentController.extensionsController.getExtensionHandler()); + packetLogger = packetLoggerFactory.get(); + getHConnection().getStateObservable().addListener((oldState, newState) -> Platform.runLater(() -> { if (newState == HState.PREPARING) { miniLogText(Color.ORANGE, "Connecting to "+getHConnection().getDomain() + ":" + getHConnection().getServerPort()); diff --git a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/PacketLoggerFactory.java b/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/PacketLoggerFactory.java index 86c5994..cc1b41b 100644 --- a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/PacketLoggerFactory.java +++ b/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/PacketLoggerFactory.java @@ -1,21 +1,33 @@ package gearth.ui.logger.loggerdisplays; import gearth.Main; +import gearth.extensions.InternalExtensionFormBuilder; import gearth.misc.OSValidator; -import gearth.ui.logger.loggerdisplays.uilogger.UiLogger; +import gearth.services.extensionhandler.ExtensionHandler; +import gearth.services.extensionhandler.extensions.extensionproducers.ExtensionProducer; +import gearth.services.extensionhandler.extensions.extensionproducers.ExtensionProducerObserver; +import gearth.services.internal_extensions.uilogger.UiLogger; /** * Created by Jonas on 04/04/18. */ -public class PacketLoggerFactory { +public class PacketLoggerFactory implements ExtensionProducer { + + private UiLogger uiLogger; public static boolean usesUIlogger() { return (!Main.hasFlag("-t")); } - public static PacketLogger get() { + public PacketLoggerFactory(ExtensionHandler handler) { + handler.addExtensionProducer(this); + } + + + public PacketLogger get() { if (usesUIlogger()) { - return new UiLogger(); +// return new UiLogger(); //now an extension + return uiLogger; } if (OSValidator.isUnix()) { @@ -24,4 +36,11 @@ public class PacketLoggerFactory { return new SimpleTerminalLogger(); } + @Override + public void startProducing(ExtensionProducerObserver observer) { + if (usesUIlogger()) { + uiLogger = new InternalExtensionFormBuilder() + .launch(UiLogger.class, observer); + } + } } diff --git a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/uilogger/UiLogger.java b/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/uilogger/UiLogger.java deleted file mode 100644 index 3bc4678..0000000 --- a/G-Earth/src/main/java/gearth/ui/logger/loggerdisplays/uilogger/UiLogger.java +++ /dev/null @@ -1,103 +0,0 @@ -package gearth.ui.logger.loggerdisplays.uilogger; - -import gearth.extensions.parsers.HDirection; -import gearth.protocol.HConnection; -import gearth.protocol.HMessage; -import gearth.protocol.HPacket; -import gearth.ui.logger.loggerdisplays.PacketLogger; -import javafx.event.ActionEvent; -import javafx.event.Event; -import javafx.fxml.FXMLLoader; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.scene.image.Image; -import javafx.stage.Modality; -import javafx.stage.Stage; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -public class UiLogger implements PacketLogger { - private Stage stage; - private UiLoggerController controller = null; - private HConnection hConnection = null; - - @Override - public void start(HConnection hConnection) { - FXMLLoader loader = new FXMLLoader(getClass().getResource("/gearth/ui/logger/uilogger/UiLogger.fxml")); - - try { - Parent root = loader.load(); - synchronized (appendLater) { - controller = loader.getController(); - for (Elem elem : appendLater) { - controller.appendMessage(elem.packet, elem.types); - } - appendLater.clear(); - } - - stage = new Stage(); - stage.setTitle("G-Earth | Packet Logger"); - stage.initModality(Modality.NONE); - stage.getIcons().add(new Image(getClass().getResourceAsStream("/gearth/G-EarthLogoSmaller.png"))); - - Scene scene = new Scene(root); - scene.getStylesheets().add("/gearth/ui/bootstrap3.css"); - scene.getStylesheets().add("/gearth/ui/logger/uilogger/logger.css"); - UiLoggerController controller = loader.getController(); - controller.setStage(stage); - controller.setPacketInfoManager(hConnection.getPacketInfoManager()); - - - stage.setScene(scene); - - // don't let the user close this window on their own - stage.setOnCloseRequest(Event::consume); - - stage.show(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void stop() { - if (stage != null) - stage.close(); - } - - @Override - public void appendSplitLine() { - // don't use this, we can't discern incoming/outgoing - //Platform.runLater(() -> controller.appendSplitLine()); - } - - private class Elem { - HPacket packet; - int types; - Elem(HPacket packet, int types) { - this.packet = packet; - this.types = types; - } - } - - private final List appendLater = new ArrayList<>(); - - @Override - public void appendMessage(HPacket packet, int types) { - synchronized (appendLater) { - if (controller == null) { - appendLater.add(new Elem(packet, types)); - } - else { - controller.appendMessage(packet, types); - } - } - } - - @Override - public void appendStructure(HPacket packet, HMessage.Direction direction) { - - } -} diff --git a/G-Earth/src/main/resources/gearth/ui/logger/uilogger/UiLogger.fxml b/G-Earth/src/main/resources/gearth/services/internal_extensions/uilogger/UiLogger.fxml similarity index 61% rename from G-Earth/src/main/resources/gearth/ui/logger/uilogger/UiLogger.fxml rename to G-Earth/src/main/resources/gearth/services/internal_extensions/uilogger/UiLogger.fxml index 2d073d3..19fcbc7 100644 --- a/G-Earth/src/main/resources/gearth/ui/logger/uilogger/UiLogger.fxml +++ b/G-Earth/src/main/resources/gearth/services/internal_extensions/uilogger/UiLogger.fxml @@ -5,18 +5,27 @@ - + + + + + + + + + + + + + + + + + + - - - - - - - - @@ -29,13 +38,24 @@ - - + + + + + + + + + + + + + diff --git a/G-Earth/src/main/resources/gearth/ui/logger/uilogger/logger.css b/G-Earth/src/main/resources/gearth/services/internal_extensions/uilogger/logger.css similarity index 100% rename from G-Earth/src/main/resources/gearth/ui/logger/uilogger/logger.css rename to G-Earth/src/main/resources/gearth/services/internal_extensions/uilogger/logger.css