JAML/src/main/java/tech/nevets/jaml/gui/NewProfileGui.java

111 lines
3.9 KiB
Java

package tech.nevets.jaml.gui;
import tech.nevets.jaml.objects.Profile;
import tech.nevets.jaml.util.LoaderUtils;
import tech.nevets.jaml.util.ProfileUtils;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
public class NewProfileGui extends JFrame {
private JPanel contentPane;
public NewProfileGui() {
setUndecorated(true);
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
removeFromArray();
}
});
setBounds(100, 100, 360, 330);
setLocationRelativeTo(null);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel profileNameLabel = new JLabel("Profile Name:");
profileNameLabel.setBounds(10, 14, 84, 31);
contentPane.add(profileNameLabel);
JTextField profileNameField = new JTextField(20);
profileNameField.setBounds(94, 18, 231, 23);
contentPane.add(profileNameField);
JLabel gamePathLabel = new JLabel("Game Path:");
gamePathLabel.setBounds(10, 56, 84, 31);
contentPane.add(gamePathLabel);
JButton gamePathButton = new JButton("...");
gamePathButton.setBounds(302, 60, 23, 23);
JTextField gamePathField = new JTextField(20);
gamePathField.setBounds(94, 60, 209, 23);
gamePathButton.addActionListener(ae -> {
JFileChooser fileChooser = new JFileChooser(System.getenv("APPDATA") + "\\.minecraft\\");
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.showSaveDialog(null);
if (fileChooser.getSelectedFile() == null) { return; }
gamePathField.setText(fileChooser.getSelectedFile().toString());
fileChooser.setVisible(false);
});
contentPane.add(gamePathField);
contentPane.add(gamePathButton);
JLabel versionLabel = new JLabel("Version:");
versionLabel.setBounds(10, 98, 84, 31);
contentPane.add(versionLabel);
JTextField versionField = new JTextField(20);
versionField.setBounds(94, 102, 231, 23);
contentPane.add(versionField);
JLabel loaderLabel = new JLabel("Loader:");
loaderLabel.setBounds(10, 140, 84, 31);
contentPane.add(loaderLabel);
JComboBox<String> loaderDropdown = new JComboBox<>(LoaderUtils.getLoaders());
loaderDropdown.setBounds(94, 144, 231, 23);
contentPane.add(loaderDropdown);
JLabel offlineModeLabel = new JLabel("Offline Mode:");
offlineModeLabel.setBounds(10, 182, 84, 31);
contentPane.add(offlineModeLabel);
JCheckBox offlineModeBox = new JCheckBox("");
offlineModeBox.setBounds(94, 185, 21, 23);
contentPane.add(offlineModeBox);
JButton button = new JButton("Create Profile");
button.setBounds(64, 234, 217, 37);
button.addActionListener(al -> {
Profile profile = new Profile();
profile.setProfileName(profileNameField.getText());
profile.setGamePath(new File(gamePathField.getText()));
profile.setVersion(versionField.getText());
profile.setLoader(loaderDropdown.getSelectedItem().toString());
profile.setOfflineMode(offlineModeBox.isSelected());
try {
ProfileUtils.createProfile(profile);
} catch (IOException e) {
e.printStackTrace();
}
ProfileUtils.getProfileList();
this.dispose();
});
contentPane.add(button);
}
private void removeFromArray() {
GuiHandler.removeFromFramesArray(this);
}
}