Skip to content

Commit

Permalink
App - extract listeners
Browse files Browse the repository at this point in the history
  • Loading branch information
ShaneBeee committed Oct 4, 2024
1 parent 5b27915 commit b7decc5
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 46 deletions.
78 changes: 32 additions & 46 deletions src/main/java/com/shanebeestudios/mcdeob/app/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

import com.shanebeestudios.mcdeob.Processor;
import com.shanebeestudios.mcdeob.Version;
import com.shanebeestudios.mcdeob.app.listener.SnapshotButtonListener;
import com.shanebeestudios.mcdeob.app.listener.StartButtonListener;
import com.shanebeestudios.mcdeob.util.Util;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
Expand All @@ -20,7 +20,7 @@ public class App extends JFrame {
private JRadioButton serverRadioButton;
private JRadioButton clientRadioButton;
private JToggleButton snapshotToggleButton;
private JCheckBox decompile;
private JCheckBox decompileCheckbox;
private JComboBox<Version> versionBox;
private JTextField statusBox;

Expand Down Expand Up @@ -92,7 +92,7 @@ private void createTypeButton() {
this.clientRadioButton = new JRadioButton("Client");
this.snapshotToggleButton = new JToggleButton("Toggle Snapshots");
this.snapshotToggleButton.setSelected(false);
this.snapshotToggleButton.addActionListener(new SnapshotButtonListener());
this.snapshotToggleButton.addActionListener(new SnapshotButtonListener(this));

hookSize(() -> this.serverRadioButton.setBounds(getSize().width / 2 + 10, 60, 100, 20));
hookSize(() -> this.clientRadioButton.setBounds(getSize().width / 2 - (100 - 10), 60, 100, 20));
Expand All @@ -106,7 +106,7 @@ private void createTypeButton() {
add(this.snapshotToggleButton);
}

private void setupVersions(boolean showSnapshots) {
public void setupVersions(boolean showSnapshots) {
this.versionBox.removeAllItems();
for (Version version : showSnapshots ? Version.getSnapshotVersions() : Version.getReleaseVersions()) {
this.versionBox.addItem(version);
Expand All @@ -121,10 +121,10 @@ private void createVersionPopup() {
}

private void createDecompileButton() {
this.decompile = new JCheckBox("Decompile?");
hookSize(() -> this.decompile.setBounds((getSize().width / 2) - 60, 165, 120, 30));
this.decompile.setSelected(false);
add(this.decompile);
this.decompileCheckbox = new JCheckBox("Decompile?");
hookSize(() -> this.decompileCheckbox.setBounds((getSize().width / 2) - 60, 165, 120, 30));
this.decompileCheckbox.setSelected(false);
add(this.decompileCheckbox);
}

private void createStatusBox() {
Expand Down Expand Up @@ -154,7 +154,7 @@ private void createStartButton() {
hDivided = Math.round(h / 1.25F);
}
hookSize(() -> this.startButton.setBounds((getSize().width / 2) - (w / 2), ((getSize().height / 5) * 4) - hDivided, w, h));
this.startButton.addActionListener(new StartButtonListener());
this.startButton.addActionListener(new StartButtonListener(this));
add(this.startButton);
}

Expand All @@ -169,14 +169,14 @@ public void updateButton(String string, Color color) {

public void toggleControls() {
this.startButton.setEnabled(!this.startButton.isEnabled());
this.decompile.setEnabled(!this.decompile.isEnabled());
this.decompileCheckbox.setEnabled(!this.decompileCheckbox.isEnabled());
this.versionBox.setEnabled(!this.versionBox.isEnabled());
this.serverRadioButton.setEnabled(!this.serverRadioButton.isEnabled());
this.clientRadioButton.setEnabled(!this.clientRadioButton.isEnabled());
this.snapshotToggleButton.setEnabled(!this.snapshotToggleButton.isEnabled());
}

private void start(Version version, boolean shouldDecompile) {
public void start(Version version, boolean shouldDecompile) {
Thread thread = new Thread("Processor") {
@Override
public void run() {
Expand Down Expand Up @@ -207,6 +207,26 @@ private void finishSetup() {
toggleControls();
}

public JButton getStartButton() {
return this.startButton;
}

public JRadioButton getServerRadioButton() {
return this.serverRadioButton;
}

public JToggleButton getSnapshotToggleButton() {
return this.snapshotToggleButton;
}

public JCheckBox getDecompileCheckbox() {
return this.decompileCheckbox;
}

public JComboBox<Version> getVersionBox() {
return this.versionBox;
}

private void hookSize(final Runnable sizeTask) {
final ComponentListener listener = new ComponentAdapter() {
@Override
Expand All @@ -219,38 +239,4 @@ public void componentResized(ComponentEvent e) {
sizeTask.run();
}

class StartButtonListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent event) {
if (event.getSource() == App.this.startButton) {
Version version = (Version) App.this.versionBox.getSelectedItem();
if (!App.this.startButton.getText().equalsIgnoreCase("Start!")) return;
if (version == null) {
fail();
} else {
version.setType(App.this.serverRadioButton.isSelected() ? Version.Type.SERVER : Version.Type.CLIENT);
updateButton("Starting...", Color.BLUE);
start(version, App.this.decompile.isSelected());
}
}
}
}

class SnapshotButtonListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent event) {
if (App.this.snapshotToggleButton.isSelected()) {
App.this.snapshotToggleButton.setSelected(true);
App.this.snapshotToggleButton.setText("Toggle Releases");
setupVersions(true);
} else {
App.this.snapshotToggleButton.setSelected(false);
App.this.snapshotToggleButton.setText("Toggle Snapshots");
setupVersions(false);
}
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.shanebeestudios.mcdeob.app.listener;

import com.shanebeestudios.mcdeob.app.App;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class SnapshotButtonListener implements ActionListener {

private final App app;

public SnapshotButtonListener(App app) {
this.app = app;
}

@Override
public void actionPerformed(ActionEvent event) {
JToggleButton snapshotToggleButton = this.app.getSnapshotToggleButton();
if (snapshotToggleButton.isSelected()) {
snapshotToggleButton.setSelected(true);
snapshotToggleButton.setText("Toggle Releases");
this.app.setupVersions(true);
} else {
snapshotToggleButton.setSelected(false);
snapshotToggleButton.setText("Toggle Snapshots");
this.app.setupVersions(false);
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.shanebeestudios.mcdeob.app.listener;

import com.shanebeestudios.mcdeob.Version;
import com.shanebeestudios.mcdeob.app.App;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class StartButtonListener implements ActionListener {

private final App app;

public StartButtonListener(App app) {
this.app = app;
}

@Override
public void actionPerformed(ActionEvent event) {
if (event.getSource() == this.app.getStartButton()) {
Version version = (Version) this.app.getVersionBox().getSelectedItem();
if (!this.app.getStartButton().getText().equalsIgnoreCase("Start!")) return;
if (version == null) {
this.app.fail();
} else {
version.setType(this.app.getServerRadioButton().isSelected() ? Version.Type.SERVER : Version.Type.CLIENT);
this.app.updateButton("Starting...", Color.BLUE);
this.app.start(version, this.app.getDecompileCheckbox().isSelected());
}
}
}

}

0 comments on commit b7decc5

Please sign in to comment.