From 81350dd06b77c53300b58e39392158dd7fb06036 Mon Sep 17 00:00:00 2001 From: Downforce Agent Date: Sun, 30 Jun 2024 09:51:03 -0500 Subject: [PATCH] Implement settings menu --- src/MissPiggy.java | 4 +- src/Waldorf.form | 74 ++++++++++++++++++++++++++++++++ src/Waldorf.java | 104 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 180 insertions(+), 2 deletions(-) create mode 100644 src/Waldorf.form create mode 100644 src/Waldorf.java diff --git a/src/MissPiggy.java b/src/MissPiggy.java index 3d1800c..8a5cb24 100644 --- a/src/MissPiggy.java +++ b/src/MissPiggy.java @@ -410,8 +410,8 @@ public class MissPiggy implements ActionListener { } public void optionsGUI() { - // todo settings page w/ reset switch - throwUnimplemented(); + new Waldorf().Action(this); + frame.setEnabled(false); } public void deleteSelected() { diff --git a/src/Waldorf.form b/src/Waldorf.form new file mode 100644 index 0000000..d703b90 --- /dev/null +++ b/src/Waldorf.form @@ -0,0 +1,74 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/Waldorf.java b/src/Waldorf.java new file mode 100644 index 0000000..b7dad2f --- /dev/null +++ b/src/Waldorf.java @@ -0,0 +1,104 @@ +/* + * Firestar Mod Manager + * Copyright (C) 2024 bonkmaykr + * + * 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 https://www.gnu.org/licenses/. + */ + +import org.json.JSONObject; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.File; +import java.io.IOException; + +import static javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE; + +public class Waldorf implements ActionListener { + private JFrame frame = new JFrame(); + private JPanel frameContainer; + private JButton okbtn; + private JButton cancelbtn; + private JTextField fOutpath; + private JButton resetbtn; + private JButton bOpenFolder; + MissPiggy invoker; + + public void Action(MissPiggy inv) { + invoker = inv; + + frame.add(frameContainer); + frame.setSize(600, 200); // 1280 800 + frame.setMinimumSize(new Dimension(200,100)); + frame.setTitle("Options"); + frame.setResizable(false); + frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); + frame.setLayout(new GridLayout()); + frame.setLocationRelativeTo(null); + frame.setAlwaysOnTop(true); + + cancelbtn.addActionListener(this); + okbtn.addActionListener(this); + resetbtn.addActionListener(this); + bOpenFolder.addActionListener(this); + + fOutpath.setText(Main.outpath); + + frame.setVisible(true); + frame.addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) + { + invoker.frame.setEnabled(true); + e.getWindow().dispose(); + } + }); + } + + @Override + public void actionPerformed(ActionEvent actionEvent) { + if (actionEvent.getSource() == cancelbtn) { + invoker.frame.setEnabled(true); + frame.dispose(); + } else + if (actionEvent.getSource() == okbtn) { + Main.outpath = fOutpath.getText(); + Main.writeConf(); + + invoker.frame.setEnabled(true); + frame.dispose(); + } else + if (actionEvent.getSource() == resetbtn) { + int result = JOptionPane.showConfirmDialog(frame,"Are you sure you want to redo the initial setup?", "Restore Default Settings", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); + if (result == JOptionPane.YES_OPTION) { + new File(System.getProperty("user.home") + "/.firestar/firestar.conf").delete(); + int result2 = JOptionPane.showConfirmDialog(frame,"Firestar will now close.", "Restore Default Settings", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE); + if (result2 == JOptionPane.OK_OPTION) { + System.exit(0); + } + } + } else + if (actionEvent.getSource() == bOpenFolder) { + try { + Desktop.getDesktop().open(new File(Main.inpath)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } +}