Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions enigma-swing/src/main/java/org/quiltmc/enigma/gui/Gui.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import org.quiltmc.enigma.gui.docker.StructureDocker;
import org.quiltmc.enigma.gui.element.EditorTabbedPane;
import org.quiltmc.enigma.gui.element.MainWindow;
import org.quiltmc.enigma.gui.element.MenuBar;
import org.quiltmc.enigma.gui.element.menu_bar.MenuBar;
import org.quiltmc.enigma.gui.panel.EditorPanel;
import org.quiltmc.enigma.gui.panel.IdentifierPanel;
import org.quiltmc.enigma.gui.renderer.MessageListCellRenderer;
Expand Down Expand Up @@ -287,7 +287,7 @@ public boolean isTestEnvironment() {

public void addCrash(Throwable t) {
this.crashHistory.add(t);
this.menuBar.prepareCrashHistoryMenu();
this.menuBar.getFileMenu().updateState();
}

public DockerManager getDockerManager() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ public CompletableFuture<Void> openMappings(ReadWriteService readWriteService, P

this.gui.setMappingsFile(path);
Config.insertRecentProject(this.project.getJarPath().toString(), path.toString());
this.gui.getMenuBar().reloadOpenRecentMenu(this.gui);
this.gui.getMenuBar().getFileMenu().updateState();

return ProgressDialog.runOffThread(this.gui, progress -> {
try {
Expand Down Expand Up @@ -239,7 +239,7 @@ public CompletableFuture<Void> saveMappings(Path path, ReadWriteService service,
if (this.project == null) {
return CompletableFuture.completedFuture(null);
} else if (!service.supportsWriting()) {
String nonWriteableMessage = I18n.translateFormatted("menu.file.save.non_writeable", I18n.translate("mapping_format." + service.getId().split(":")[1].toLowerCase()));
String nonWriteableMessage = I18n.translateFormatted("menu.file.save.non_writeable", I18n.translate(service.getId()));
JOptionPane.showMessageDialog(this.gui.getFrame(), nonWriteableMessage, I18n.translate("menu.file.save.cannot_save"), JOptionPane.ERROR_MESSAGE);
return CompletableFuture.completedFuture(null);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ public CollabDocker(Gui gui) {
connectionButtonPanel.add(this.startServerButton, BorderLayout.NORTH);
connectionButtonPanel.add(this.connectToServerButton, BorderLayout.SOUTH);

this.startServerButton.addActionListener(e -> this.gui.getMenuBar().onStartServerClicked());
this.connectToServerButton.addActionListener(e -> this.gui.getMenuBar().onConnectClicked());
this.startServerButton.addActionListener(e -> this.gui.getMenuBar().getCollabMenu().onStartServerClicked());
this.connectToServerButton.addActionListener(e -> this.gui.getMenuBar().getCollabMenu().onConnectClicked());

// we make a copy of the title bar to avoid having to shuffle it around both panels
this.titleCopy = new DockerTitleBar(gui, this, this.titleSupplier);
Expand Down
753 changes: 0 additions & 753 deletions enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/MenuBar.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.quiltmc.enigma.gui.element.menu_bar;

import org.quiltmc.enigma.gui.Gui;

import javax.swing.JMenu;

public class AbstractEnigmaMenu extends JMenu implements EnigmaMenu {
protected final Gui gui;

protected AbstractEnigmaMenu(Gui gui) {
this.gui = gui;
}

public void updateState() {
this.updateState(this.gui.isJarOpen(), this.gui.getConnectionState());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package org.quiltmc.enigma.gui.element.menu_bar;

import org.quiltmc.enigma.gui.ConnectionState;
import org.quiltmc.enigma.gui.Gui;
import org.quiltmc.enigma.gui.NotificationManager;
import org.quiltmc.enigma.gui.config.Config;
import org.quiltmc.enigma.gui.dialog.ConnectToServerDialog;
import org.quiltmc.enigma.gui.dialog.CreateServerDialog;
import org.quiltmc.enigma.util.I18n;
import org.quiltmc.enigma.util.validation.Message;
import org.quiltmc.enigma.util.validation.ParameterizedMessage;

import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import java.io.IOException;
import java.util.Arrays;

public class CollabMenu extends AbstractEnigmaMenu {
private final JMenuItem connectItem = new JMenuItem();
private final JMenuItem startServerItem = new JMenuItem();

public CollabMenu(Gui gui) {
super(gui);

this.add(this.connectItem);
this.add(this.startServerItem);

this.connectItem.addActionListener(e -> this.onConnectClicked());
this.startServerItem.addActionListener(e -> this.onStartServerClicked());
}

@Override
public void retranslate() {
this.setText(I18n.translate("menu.collab"));
this.retranslate(this.gui.getConnectionState());
}

private void retranslate(ConnectionState state) {
this.connectItem.setText(I18n.translate(state != ConnectionState.CONNECTED ? "menu.collab.connect" : "menu.collab.disconnect"));
this.startServerItem.setText(I18n.translate(state != ConnectionState.HOSTING ? "menu.collab.server.start" : "menu.collab.server.stop"));
}

@Override
public void updateState(boolean jarOpen, ConnectionState state) {
this.connectItem.setEnabled(jarOpen && state != ConnectionState.HOSTING);
this.startServerItem.setEnabled(jarOpen && state != ConnectionState.CONNECTED);
this.retranslate(state);
}

public void onConnectClicked() {
if (this.gui.getController().getClient() != null) {
this.gui.getController().disconnectIfConnected(null);
return;
}

ConnectToServerDialog.Result result = ConnectToServerDialog.show(this.gui);
if (result == null) {
return;
}

this.gui.getController().disconnectIfConnected(null);
try {
this.gui.getController().createClient(result.username(), result.address().address, result.address().port, result.password());
if (Config.main().serverNotificationLevel.value() != NotificationManager.ServerNotificationLevel.NONE) {
this.gui.getNotificationManager().notify(new ParameterizedMessage(Message.CONNECTED_TO_SERVER, result.addressStr()));
}

Config.net().username.setValue(result.username(), true);
Config.net().remoteAddress.setValue(result.addressStr(), true);
Config.net().password.setValue(String.valueOf(result.password()), true);
} catch (IOException e) {
JOptionPane.showMessageDialog(this.gui.getFrame(), e.toString(), I18n.translate("menu.collab.connect.error"), JOptionPane.ERROR_MESSAGE);
this.gui.getController().disconnectIfConnected(null);
}

Arrays.fill(result.password(), (char) 0);
}

public void onStartServerClicked() {
if (this.gui.getController().getServer() != null) {
this.gui.getController().disconnectIfConnected(null);
return;
}

CreateServerDialog.Result result = CreateServerDialog.show(this.gui);
if (result == null) {
return;
}

this.gui.getController().disconnectIfConnected(null);
try {
this.gui.getController().createServer(result.username(), result.port(), result.password());
if (Config.main().serverNotificationLevel.value() != NotificationManager.ServerNotificationLevel.NONE) {
this.gui.getNotificationManager().notify(new ParameterizedMessage(Message.SERVER_STARTED, result.port()));
}

Config.net().username.setValue(result.username(), true);
Config.net().serverPort.setValue(result.port(), true);
Config.net().serverPassword.setValue(String.valueOf(result.password()), true);
} catch (IOException e) {
JOptionPane.showMessageDialog(this.gui.getFrame(), e.toString(), I18n.translate("menu.collab.server.start.error"), JOptionPane.ERROR_MESSAGE);
this.gui.getController().disconnectIfConnected(null);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package org.quiltmc.enigma.gui.element.menu_bar;

import org.quiltmc.enigma.gui.Gui;
import org.quiltmc.enigma.gui.config.Config;
import org.quiltmc.enigma.gui.config.Decompiler;
import org.quiltmc.enigma.gui.dialog.decompiler.DecompilerSettingsDialog;
import org.quiltmc.enigma.util.I18n;

import javax.swing.ButtonGroup;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;

public class DecompilerMenu extends AbstractEnigmaMenu {
private final JMenuItem decompilerSettingsItem = new JMenuItem();

public DecompilerMenu(Gui gui) {
super(gui);

ButtonGroup decompilerGroup = new ButtonGroup();

for (Decompiler decompiler : Decompiler.values()) {
JRadioButtonMenuItem decompilerButton = new JRadioButtonMenuItem(decompiler.name);
decompilerGroup.add(decompilerButton);
if (decompiler.equals(Config.decompiler().activeDecompiler.value())) {
decompilerButton.setSelected(true);
}

decompilerButton.addActionListener(event -> {
this.gui.getController().setDecompiler(decompiler.service);

Config.decompiler().activeDecompiler.setValue(decompiler, true);
});
this.add(decompilerButton);
}

this.addSeparator();
this.add(this.decompilerSettingsItem);

this.decompilerSettingsItem.addActionListener(e -> DecompilerSettingsDialog.show(this.gui));
}

@Override
public void retranslate() {
this.setText(I18n.translate("menu.decompiler"));
this.decompilerSettingsItem.setText(I18n.translate("menu.decompiler.settings"));
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.quiltmc.enigma.gui.element;
package org.quiltmc.enigma.gui.element.menu_bar;

import org.quiltmc.enigma.gui.ConnectionState;
import org.quiltmc.enigma.gui.Gui;
import org.quiltmc.enigma.gui.config.Config;
import org.quiltmc.enigma.gui.util.ScaleUtil;
Expand All @@ -12,7 +13,6 @@
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
Expand All @@ -26,16 +26,14 @@
import java.io.StringWriter;
import java.nio.file.Files;

public class DevMenu extends JMenu {
private final Gui gui;

public class DevMenu extends AbstractEnigmaMenu {
private final JCheckBoxMenuItem showMappingSourcePluginItem = new JCheckBoxMenuItem();
private final JCheckBoxMenuItem debugTokenHighlightsItem = new JCheckBoxMenuItem();
private final JCheckBoxMenuItem logClientPacketsItem = new JCheckBoxMenuItem();
private final JMenuItem printMappingTreeItem = new JMenuItem();

public DevMenu(Gui gui) {
this.gui = gui;
super(gui);

this.add(this.showMappingSourcePluginItem);
this.add(this.debugTokenHighlightsItem);
Expand All @@ -48,7 +46,8 @@ public DevMenu(Gui gui) {
this.printMappingTreeItem.addActionListener(e -> this.onPrintMappingTreeClicked());
}

public void retranslateUi() {
@Override
public void retranslate() {
this.setText("Dev");

this.showMappingSourcePluginItem.setText(I18n.translate("dev.menu.show_mapping_source_plugin"));
Expand All @@ -57,8 +56,8 @@ public void retranslateUi() {
this.printMappingTreeItem.setText(I18n.translate("dev.menu.print_mapping_tree"));
}

public void updateUiState() {
boolean jarOpen = this.gui.isJarOpen();
@Override
public void updateState(boolean jarOpen, ConnectionState state) {
this.printMappingTreeItem.setEnabled(jarOpen);

this.showMappingSourcePluginItem.setState(Config.main().development.showMappingSourcePlugin.value());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.quiltmc.enigma.gui.element.menu_bar;

import org.quiltmc.enigma.gui.ConnectionState;

public interface EnigmaMenu {
default void setKeyBinds() {}

default void updateState(boolean jarOpen, ConnectionState state) {}

default void retranslate() {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package org.quiltmc.enigma.gui.element.menu_bar;

import org.quiltmc.enigma.gui.Gui;
import org.quiltmc.enigma.gui.dialog.AboutDialog;
import org.quiltmc.enigma.gui.util.GuiUtil;
import org.quiltmc.enigma.util.I18n;

import javax.swing.JMenuItem;

public class HelpMenu extends AbstractEnigmaMenu {
private final JMenuItem aboutItem = new JMenuItem();
private final JMenuItem githubItem = new JMenuItem();

public HelpMenu(Gui gui) {
super(gui);

this.add(this.aboutItem);
this.add(this.githubItem);

this.aboutItem.addActionListener(e -> AboutDialog.show(this.gui.getFrame()));
this.githubItem.addActionListener(e -> this.onGithubClicked());
}

@Override
public void retranslate() {
this.setText(I18n.translate("menu.help"));
this.aboutItem.setText(I18n.translate("menu.help.about"));
this.githubItem.setText(I18n.translate("menu.help.github"));
}

private void onGithubClicked() {
GuiUtil.openUrl("https://github.com/QuiltMC/Enigma");
}
}
Loading