mirror of
https://github.com/sirjonasxx/G-Earth.git
synced 2025-01-19 08:36:27 +01:00
packetlogger changes
This commit is contained in:
parent
b7bf03f313
commit
eb7c9f1829
@ -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<T extends ExtensionForm> {
|
||||
|
||||
public static void launch(Class<? extends ExtensionForm> extension, ExtensionProducerObserver observer) {
|
||||
public T launch(Class<T> 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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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<ExtensionProducer> getExtensionProducers() {
|
||||
@ -264,5 +263,10 @@ public class ExtensionHandler {
|
||||
return observable;
|
||||
}
|
||||
|
||||
public void addExtensionProducer(ExtensionProducer producer) {
|
||||
producer.startProducing(createExtensionProducerObserver());
|
||||
extensionProducers.add(producer);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -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<ExtensionProducer> getAll() {
|
||||
return Arrays.asList(
|
||||
new NetworkExtensionsProducer(),
|
||||
new SimpleExtensionProducer()
|
||||
);
|
||||
List<ExtensionProducer> all = new ArrayList<>();
|
||||
all.add(new NetworkExtensionsProducer());
|
||||
all.add(new SimpleExtensionProducer());
|
||||
|
||||
return all;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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<BlockAndReplacePackets>()
|
||||
.launch(BlockAndReplacePackets.class, observer);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package gearth.ui.logger.loggerdisplays.uilogger;
|
||||
package gearth.services.internal_extensions.uilogger;
|
||||
|
||||
/**
|
||||
* Created by Jonas on 17/11/2018.
|
@ -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;
|
||||
}
|
||||
}
|
@ -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<PacketInfo> 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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -133,4 +133,8 @@ public class ExtensionsController extends SubForm {
|
||||
Platform.runLater(this::updateGPythonStatus);
|
||||
});
|
||||
}
|
||||
|
||||
public ExtensionHandler getExtensionHandler() {
|
||||
return extensionHandler;
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
|
@ -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<UiLogger>()
|
||||
.launch(UiLogger.class, observer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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<Elem> 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) {
|
||||
|
||||
}
|
||||
}
|
@ -5,18 +5,27 @@
|
||||
<?import javafx.scene.input.*?>
|
||||
<?import javafx.scene.layout.*?>
|
||||
|
||||
<BorderPane fx:id="borderPane" prefHeight="560.0" prefWidth="820.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.ui.logger.loggerdisplays.uilogger.UiLoggerController">
|
||||
<BorderPane fx:id="borderPane" prefHeight="560.0" prefWidth="820.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="gearth.services.internal_extensions.uilogger.UiLoggerController">
|
||||
<top>
|
||||
<MenuBar BorderPane.alignment="CENTER">
|
||||
<Menu mnemonicParsing="false" text="View">
|
||||
<Menu mnemonicParsing="false" text="Display Details">
|
||||
<Menu mnemonicParsing="false" text="Window">
|
||||
<items>
|
||||
<CheckMenuItem fx:id="chkDisplayStructure" mnemonicParsing="false" onAction="#toggleDisplayStructure" selected="true" text="Structure" />
|
||||
<CheckMenuItem fx:id="chkMessageName" mnemonicParsing="false" onAction="#toggleMessageName" selected="true" text="Message Name" />
|
||||
<CheckMenuItem fx:id="chkMessageHash" mnemonicParsing="false" onAction="#toggleMessageHash" text="Message Hash" />
|
||||
<CheckMenuItem fx:id="chkUseNewStructures" mnemonicParsing="false" onAction="#toggleMessageHash" selected="true" text="New structures" />
|
||||
<CheckMenuItem fx:id="chkAlwaysOnTop" mnemonicParsing="false" onAction="#toggleAlwaysOnTop" text="Always on top" />
|
||||
<Menu mnemonicParsing="false" text="On connect">
|
||||
<items>
|
||||
<CheckMenuItem fx:id="chkOpenOnConnect" mnemonicParsing="false" selected="true" text="Open window" />
|
||||
<CheckMenuItem fx:id="chkResetOnConnect" mnemonicParsing="false" selected="true" text="Reset packetlogger" />
|
||||
</items>
|
||||
</Menu>
|
||||
<Menu mnemonicParsing="false" text="On disconnect">
|
||||
<items>
|
||||
<CheckMenuItem fx:id="chkHideOnDisconnect" mnemonicParsing="false" selected="true" text="Hide window" />
|
||||
<CheckMenuItem fx:id="chkResetOnDisconnect" mnemonicParsing="false" text="Reset packetlogger" />
|
||||
</items>
|
||||
</Menu>
|
||||
</items>
|
||||
</Menu>
|
||||
<Menu mnemonicParsing="false" text="View">
|
||||
<CheckMenuItem fx:id="chkViewIncoming" mnemonicParsing="false" onAction="#toggleViewIncoming" selected="true" text="View Incoming">
|
||||
<accelerator>
|
||||
<KeyCodeCombination alt="UP" code="I" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||
@ -29,13 +38,24 @@
|
||||
<accelerator>
|
||||
<KeyCodeCombination alt="UP" code="L" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||
</accelerator></CheckMenuItem>
|
||||
<CheckMenuItem fx:id="chkSkipBigPackets" mnemonicParsing="false" onAction="#toggleSkipPackets" selected="true" text="Skip big packets" />
|
||||
<CheckMenuItem fx:id="chkAlwaysOnTop" mnemonicParsing="false" onAction="#toggleAlwaysOnTop" text="Always on top" />
|
||||
<CheckMenuItem fx:id="chkClearText" mnemonicParsing="false" onAction="#clearText" text="Clear text">
|
||||
<accelerator>
|
||||
<KeyCodeCombination alt="UP" code="E" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
|
||||
</accelerator></CheckMenuItem>
|
||||
</Menu>
|
||||
<Menu mnemonicParsing="false" text="Packets">
|
||||
<items>
|
||||
<Menu mnemonicParsing="false" text="Display Details">
|
||||
<items>
|
||||
<CheckMenuItem fx:id="chkDisplayStructure" mnemonicParsing="false" onAction="#toggleDisplayStructure" selected="true" text="Structure" />
|
||||
<CheckMenuItem fx:id="chkMessageName" mnemonicParsing="false" onAction="#toggleMessageName" selected="true" text="Message Name" />
|
||||
<CheckMenuItem fx:id="chkMessageHash" mnemonicParsing="false" onAction="#toggleMessageHash" text="Message Hash" />
|
||||
<CheckMenuItem fx:id="chkUseNewStructures" mnemonicParsing="false" onAction="#toggleMessageHash" selected="true" text="New structures" />
|
||||
</items>
|
||||
</Menu>
|
||||
<CheckMenuItem fx:id="chkSkipBigPackets" mnemonicParsing="false" onAction="#toggleSkipPackets" selected="true" text="Skip big packets" />
|
||||
</items>
|
||||
</Menu>
|
||||
</MenuBar>
|
||||
</top>
|
||||
<bottom>
|
Loading…
Reference in New Issue
Block a user