Fixed saving & fixed conditional quitting.

This commit is contained in:
Sebastian Cabrera 2022-10-02 15:58:09 -04:00
parent b00c9c40e7
commit 92a40ad4bd
2 changed files with 51 additions and 13 deletions

View file

@ -8,7 +8,7 @@ public class Main {
static Window w; static Window w;
static String title = "Scrypt"; static String title = "Scrypt";
static String version = "v0.2"; static String version = "(Alpha 0.3)";
static Dimension winSize = new Dimension(1280, 720); static Dimension winSize = new Dimension(1280, 720);
public static void main(String[] args) { public static void main(String[] args) {

View file

@ -37,7 +37,9 @@ public class Window implements Runnable {
JMenu editMenu; JMenu editMenu;
JFileChooser browser; JFileChooser browser;
JButton quitButton; JButton quitButton;
JMenuItem fileMenuItem1, fileMenuItem2, fileMenuItem3; JButton saveOptionDialogButton;
JButton discardOptionDialogButton;
JMenuItem fileMenuOpen, fileMenuSave, fileMenuClose;
JPanel fileExplorer; JPanel fileExplorer;
JPanel mainPanel; JPanel mainPanel;
RTextScrollPane scrollPane; RTextScrollPane scrollPane;
@ -50,7 +52,7 @@ public class Window implements Runnable {
double version; double version;
Dimension winSize; Dimension winSize;
Object[] options = {"Save", "Discard"}; Object[] options = {null, null};
public void setup() { public void setup() {
menuBar.add(fileMenu); menuBar.add(fileMenu);
@ -58,9 +60,9 @@ public class Window implements Runnable {
menuBar.add(Box.createHorizontalGlue()); menuBar.add(Box.createHorizontalGlue());
menuBar.add(quitButton); menuBar.add(quitButton);
fileMenu.add(fileMenuItem1); fileMenu.add(fileMenuOpen);
fileMenu.add(fileMenuItem2); fileMenu.add(fileMenuSave);
fileMenu.add(fileMenuItem3); fileMenu.add(fileMenuClose);
browser.addActionListener(new ActionListener() { browser.addActionListener(new ActionListener() {
@Override @Override
@ -78,25 +80,31 @@ public class Window implements Runnable {
} }
}); });
fileMenuItem1.addActionListener(new ActionListener() { fileMenuOpen.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
status = browser.showOpenDialog(window); status = browser.showOpenDialog(window);
} }
}); });
fileMenuItem2.addActionListener(new ActionListener() { fileMenuSave.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (isFileOpened) { if (isFileOpened) {
Save.saveFile(p); Save.saveFile(p);
} else { } else {
status = browser.showSaveDialog(window); status = browser.showSaveDialog(window);
if (status == JFileChooser.APPROVE_OPTION) {
p = browser.getSelectedFile().getPath();
Save.saveFile(p);
}
} }
} }
}); });
fileMenuItem3.addActionListener(new ActionListener() { fileMenuClose.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
textArea.setText(null); textArea.setText(null);
@ -125,12 +133,38 @@ public class Window implements Runnable {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (isFileOpened || !textArea.getText().isBlank()) { if (isFileOpened || !textArea.getText().isBlank()) {
JOptionPane.showOptionDialog(window, "Do you want to save your work?", "Unsaved changes!", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[1]); JOptionPane.showOptionDialog(window, "Do you want to save your work?", "Save before quit?", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[1]);
} else { } else {
System.exit(0); System.exit(0);
} }
} }
}); });
saveOptionDialogButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (isFileOpened) {
Save.saveFile(p);
System.exit(0);
} else {
status = browser.showSaveDialog(window);
if (status == JFileChooser.APPROVE_OPTION) {
p = browser.getSelectedFile().getPath();
Save.saveFile(p);
System.exit(0);
}
}
}
});
discardOptionDialogButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
fileExplorer.setBorder(new EtchedBorder()); fileExplorer.setBorder(new EtchedBorder());
fileExplorer.setBackground(new Color(0, 0, 0)); fileExplorer.setBackground(new Color(0, 0, 0));
@ -164,9 +198,13 @@ public class Window implements Runnable {
fileMenu = new JMenu("File"); fileMenu = new JMenu("File");
editMenu = new JMenu("Edit"); editMenu = new JMenu("Edit");
quitButton = new JButton("Quit"); quitButton = new JButton("Quit");
fileMenuItem1 = new JMenuItem("Open"); saveOptionDialogButton = new JButton("Save");
fileMenuItem2 = new JMenuItem("Save"); discardOptionDialogButton = new JButton("Discard");
fileMenuItem3 = new JMenuItem("Close File"); options[0] = saveOptionDialogButton;
options[1] = discardOptionDialogButton;
fileMenuOpen = new JMenuItem("Open");
fileMenuSave = new JMenuItem("Save");
fileMenuClose = new JMenuItem("Close");
browser = new JFileChooser(""); browser = new JFileChooser("");
fileExplorer = new JPanel(); fileExplorer = new JPanel();
mainPanel = new JPanel(); mainPanel = new JPanel();