mirror of
https://github.com/ViaVersion/ViaProxy.git
synced 2024-12-22 16:38:04 +01:00
Use event system for GUI related events
This commit is contained in:
parent
1a7c557adf
commit
9f4fbe0031
@ -47,6 +47,7 @@ import net.raphimc.viaproxy.saves.SaveManager;
|
||||
import net.raphimc.viaproxy.tasks.LoaderTask;
|
||||
import net.raphimc.viaproxy.tasks.UpdateCheckTask;
|
||||
import net.raphimc.viaproxy.ui.ViaProxyUI;
|
||||
import net.raphimc.viaproxy.ui.events.UIInitEvent;
|
||||
import net.raphimc.viaproxy.util.ClassLoaderPriorityUtil;
|
||||
import net.raphimc.viaproxy.util.logging.Logger;
|
||||
|
||||
@ -143,7 +144,7 @@ public class ViaProxy {
|
||||
Logger.LOGGER.info("Waiting for UI to be initialized...");
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
ui.setReady();
|
||||
ViaProxyUI.EVENT_MANAGER.call(new UIInitEvent());
|
||||
Logger.LOGGER.info("ViaProxy started successfully!");
|
||||
return;
|
||||
}
|
||||
|
@ -44,10 +44,4 @@ public abstract class AUITab {
|
||||
|
||||
protected abstract void init(final JPanel contentPane);
|
||||
|
||||
public void setReady() {
|
||||
}
|
||||
|
||||
public void onClose() {
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -18,8 +18,14 @@
|
||||
package net.raphimc.viaproxy.ui;
|
||||
|
||||
import com.formdev.flatlaf.FlatDarkLaf;
|
||||
import net.lenni0451.lambdaevents.EventHandler;
|
||||
import net.lenni0451.lambdaevents.LambdaManager;
|
||||
import net.lenni0451.lambdaevents.generator.LambdaMetaFactoryGenerator;
|
||||
import net.lenni0451.reflect.JavaBypass;
|
||||
import net.lenni0451.reflect.stream.RStream;
|
||||
import net.raphimc.viaproxy.ViaProxy;
|
||||
import net.raphimc.viaproxy.ui.events.UICloseEvent;
|
||||
import net.raphimc.viaproxy.ui.events.UIInitEvent;
|
||||
import net.raphimc.viaproxy.ui.impl.AccountsTab;
|
||||
import net.raphimc.viaproxy.ui.impl.AdvancedTab;
|
||||
import net.raphimc.viaproxy.ui.impl.GeneralTab;
|
||||
@ -35,6 +41,8 @@ import java.util.List;
|
||||
|
||||
public class ViaProxyUI extends JFrame {
|
||||
|
||||
public static final LambdaManager EVENT_MANAGER = LambdaManager.threadSafe(new LambdaMetaFactoryGenerator(JavaBypass.TRUSTED_LOOKUP));
|
||||
|
||||
public static final int BORDER_PADDING = 10;
|
||||
public static final int BODY_BLOCK_PADDING = 10;
|
||||
|
||||
@ -59,6 +67,8 @@ public class ViaProxyUI extends JFrame {
|
||||
ToolTipManager.sharedInstance().setDismissDelay(10_000);
|
||||
SwingUtilities.updateComponentTreeUI(this);
|
||||
this.setVisible(true);
|
||||
|
||||
EVENT_MANAGER.register(this);
|
||||
}
|
||||
|
||||
private void setLookAndFeel() {
|
||||
@ -83,7 +93,7 @@ public class ViaProxyUI extends JFrame {
|
||||
this.addWindowListener(new WindowAdapter() {
|
||||
@Override
|
||||
public void windowClosing(WindowEvent e) {
|
||||
for (AUITab tab : ViaProxyUI.this.tabs) tab.onClose();
|
||||
EVENT_MANAGER.call(new UICloseEvent());
|
||||
}
|
||||
});
|
||||
this.setSize(500, 360);
|
||||
@ -98,18 +108,20 @@ public class ViaProxyUI extends JFrame {
|
||||
.fields()
|
||||
.filter(field -> AUITab.class.isAssignableFrom(field.type()))
|
||||
.forEach(field -> {
|
||||
AUITab tab = field.get();
|
||||
final AUITab tab = field.get();
|
||||
this.tabs.add(field.get());
|
||||
tab.add(this.contentPane);
|
||||
EVENT_MANAGER.register(tab);
|
||||
});
|
||||
|
||||
this.contentPane.setEnabledAt(this.contentPane.indexOfTab(this.accountsTab.getName()), false);
|
||||
}
|
||||
|
||||
|
||||
public void setReady() {
|
||||
for (AUITab tab : this.tabs) tab.setReady();
|
||||
for (int i = 0; i < this.contentPane.getTabCount(); i++) this.contentPane.setEnabledAt(i, true);
|
||||
@EventHandler
|
||||
private void onInit(final UIInitEvent event) {
|
||||
for (int i = 0; i < this.contentPane.getTabCount(); i++) {
|
||||
this.contentPane.setEnabledAt(i, true);
|
||||
}
|
||||
}
|
||||
|
||||
public void openURL(final String url) {
|
||||
|
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* This file is part of ViaProxy - https://github.com/RaphiMC/ViaProxy
|
||||
* Copyright (C) 2023 RK_01/RaphiMC and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package net.raphimc.viaproxy.ui.events;
|
||||
|
||||
public class UICloseEvent {
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
/*
|
||||
* This file is part of ViaProxy - https://github.com/RaphiMC/ViaProxy
|
||||
* Copyright (C) 2023 RK_01/RaphiMC and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package net.raphimc.viaproxy.ui.events;
|
||||
|
||||
public class UIInitEvent {
|
||||
}
|
@ -17,6 +17,7 @@
|
||||
*/
|
||||
package net.raphimc.viaproxy.ui.impl;
|
||||
|
||||
import net.lenni0451.lambdaevents.EventHandler;
|
||||
import net.raphimc.mcauth.MinecraftAuth;
|
||||
import net.raphimc.mcauth.step.msa.StepMsaDeviceCode;
|
||||
import net.raphimc.mcauth.util.MicrosoftConstants;
|
||||
@ -27,6 +28,7 @@ import net.raphimc.viaproxy.saves.impl.accounts.BedrockAccount;
|
||||
import net.raphimc.viaproxy.saves.impl.accounts.MicrosoftAccount;
|
||||
import net.raphimc.viaproxy.ui.AUITab;
|
||||
import net.raphimc.viaproxy.ui.ViaProxyUI;
|
||||
import net.raphimc.viaproxy.ui.events.UIInitEvent;
|
||||
import net.raphimc.viaproxy.ui.popups.AddAccountPopup;
|
||||
import net.raphimc.viaproxy.util.GBC;
|
||||
import net.raphimc.viaproxy.util.TFunction;
|
||||
@ -216,8 +218,8 @@ public class AccountsTab extends AUITab {
|
||||
contentPane.add(body, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReady() {
|
||||
@EventHandler
|
||||
private void onInit(final UIInitEvent event) {
|
||||
ViaProxy.saveManager.accountsSave.getAccounts().forEach(this::addAccount);
|
||||
DefaultListModel<Account> model = (DefaultListModel<Account>) this.accountsList.getModel();
|
||||
if (!model.isEmpty()) this.markSelected(0);
|
||||
|
@ -20,10 +20,13 @@ package net.raphimc.viaproxy.ui.impl;
|
||||
import com.viaversion.viaversion.util.DumpUtil;
|
||||
import gs.mclo.api.MclogsClient;
|
||||
import gs.mclo.api.response.UploadLogResponse;
|
||||
import net.lenni0451.lambdaevents.EventHandler;
|
||||
import net.raphimc.viaproxy.ViaProxy;
|
||||
import net.raphimc.viaproxy.saves.impl.UISave;
|
||||
import net.raphimc.viaproxy.ui.AUITab;
|
||||
import net.raphimc.viaproxy.ui.ViaProxyUI;
|
||||
import net.raphimc.viaproxy.ui.events.UICloseEvent;
|
||||
import net.raphimc.viaproxy.ui.events.UIInitEvent;
|
||||
import net.raphimc.viaproxy.util.GBC;
|
||||
import net.raphimc.viaproxy.util.logging.Logger;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
@ -200,15 +203,15 @@ public class AdvancedTab extends AUITab {
|
||||
container.add(padding, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReady() {
|
||||
@EventHandler
|
||||
private void onInit(final UIInitEvent event) {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
this.viaVersionDumpButton.setEnabled(true);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose() {
|
||||
@EventHandler
|
||||
private void onClose(final UICloseEvent event) {
|
||||
UISave save = ViaProxy.saveManager.uiSave;
|
||||
save.put("bind_port", String.valueOf(this.bindPort.getValue()));
|
||||
save.put("proxy", this.proxy.getText());
|
||||
|
@ -18,6 +18,7 @@
|
||||
package net.raphimc.viaproxy.ui.impl;
|
||||
|
||||
import com.google.common.net.HostAndPort;
|
||||
import net.lenni0451.lambdaevents.EventHandler;
|
||||
import net.raphimc.vialoader.util.VersionEnum;
|
||||
import net.raphimc.viaproxy.ViaProxy;
|
||||
import net.raphimc.viaproxy.cli.options.Options;
|
||||
@ -27,6 +28,8 @@ import net.raphimc.viaproxy.saves.impl.UISave;
|
||||
import net.raphimc.viaproxy.saves.impl.accounts.OfflineAccount;
|
||||
import net.raphimc.viaproxy.ui.AUITab;
|
||||
import net.raphimc.viaproxy.ui.ViaProxyUI;
|
||||
import net.raphimc.viaproxy.ui.events.UICloseEvent;
|
||||
import net.raphimc.viaproxy.ui.events.UIInitEvent;
|
||||
import net.raphimc.viaproxy.util.GBC;
|
||||
import net.raphimc.viaproxy.util.logging.Logger;
|
||||
import org.jdesktop.swingx.VerticalLayout;
|
||||
@ -185,16 +188,16 @@ public class GeneralTab extends AUITab {
|
||||
parent.add(footer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReady() {
|
||||
@EventHandler
|
||||
private void setReady(final UIInitEvent event) {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
this.stateButton.setText("Start");
|
||||
this.stateButton.setEnabled(true);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose() {
|
||||
@EventHandler
|
||||
private void onClose(final UICloseEvent event) {
|
||||
UISave save = ViaProxy.saveManager.uiSave;
|
||||
save.put("server_address", this.serverAddress.getText());
|
||||
save.put("server_version", String.valueOf(this.serverVersion.getSelectedIndex()));
|
||||
|
Loading…
Reference in New Issue
Block a user