Added saving/opening, and conditional quitting.
This commit is contained in:
parent
9976b96c18
commit
b00c9c40e7
5 changed files with 127 additions and 39 deletions
|
@ -1,6 +1,6 @@
|
||||||
# README #
|
# README #
|
||||||
|
|
||||||
This README would normally document whatever steps are necessary to get your application up and running.
|
This is a scuffed project
|
||||||
|
|
||||||
### What is this repository for? ###
|
### What is this repository for? ###
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ public class Main {
|
||||||
static Window w;
|
static Window w;
|
||||||
|
|
||||||
static String title = "Scrypt";
|
static String title = "Scrypt";
|
||||||
static double version = 0.1;
|
static String version = "v0.2";
|
||||||
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) {
|
||||||
|
|
|
@ -1,7 +1,21 @@
|
||||||
package com.okseby.io;
|
package com.okseby.io;
|
||||||
|
|
||||||
public class Open {
|
import java.io.FileReader;
|
||||||
public void readFile(String path) {
|
import com.okseby.win.Window;
|
||||||
|
|
||||||
|
public class Open {
|
||||||
|
static FileReader fr;
|
||||||
|
|
||||||
|
public static void readFile(String resource) {
|
||||||
|
try {
|
||||||
|
fr = new FileReader(resource);
|
||||||
|
|
||||||
|
Window.textArea.read(fr, null);
|
||||||
|
|
||||||
|
fr.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,22 @@
|
||||||
package com.okseby.io;
|
package com.okseby.io;
|
||||||
|
|
||||||
public class Save {
|
import java.io.FileWriter;
|
||||||
public Save() {
|
|
||||||
|
|
||||||
|
import com.okseby.win.Window;
|
||||||
|
|
||||||
|
public class Save {
|
||||||
|
static FileWriter fw;
|
||||||
|
|
||||||
|
public static void saveFile(String resource) {
|
||||||
|
try {
|
||||||
|
fw = new FileWriter(resource);
|
||||||
|
|
||||||
|
fw.write(Window.textArea.getText());
|
||||||
|
|
||||||
|
fw.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,10 +7,12 @@ import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import javax.swing.Box;
|
import javax.swing.Box;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
|
import javax.swing.JFileChooser;
|
||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JMenu;
|
import javax.swing.JMenu;
|
||||||
import javax.swing.JMenuBar;
|
import javax.swing.JMenuBar;
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.border.EtchedBorder;
|
import javax.swing.border.EtchedBorder;
|
||||||
|
@ -21,26 +23,35 @@ import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
|
||||||
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
|
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
|
||||||
import org.fife.ui.rtextarea.RTextScrollPane;
|
import org.fife.ui.rtextarea.RTextScrollPane;
|
||||||
|
|
||||||
|
import com.okseby.io.Open;
|
||||||
|
import com.okseby.io.Save;
|
||||||
import com.okseby.utils.Providers;
|
import com.okseby.utils.Providers;
|
||||||
|
|
||||||
public class Window implements Runnable {
|
public class Window implements Runnable {
|
||||||
|
public static RSyntaxTextArea textArea;
|
||||||
|
public static boolean isFileOpened;
|
||||||
|
|
||||||
JFrame window;
|
JFrame window;
|
||||||
JMenuBar menuBar;
|
JMenuBar menuBar;
|
||||||
JMenu fileMenu;
|
JMenu fileMenu;
|
||||||
JMenu editMenu;
|
JMenu editMenu;
|
||||||
|
JFileChooser browser;
|
||||||
JButton quitButton;
|
JButton quitButton;
|
||||||
JMenuItem fileMenuItem1, fileMenuItem2, fileMenuItem3;
|
JMenuItem fileMenuItem1, fileMenuItem2, fileMenuItem3;
|
||||||
JPanel fileExplorer;
|
JPanel fileExplorer;
|
||||||
JPanel mainPanel;
|
JPanel mainPanel;
|
||||||
RSyntaxTextArea textArea;
|
|
||||||
RTextScrollPane scrollPane;
|
RTextScrollPane scrollPane;
|
||||||
CompletionProvider completionProvider;
|
CompletionProvider completionProvider;
|
||||||
AutoCompletion autoComplete;
|
AutoCompletion autoComplete;
|
||||||
|
|
||||||
String title;
|
String title;
|
||||||
|
String p;
|
||||||
|
int status;
|
||||||
double version;
|
double version;
|
||||||
Dimension winSize;
|
Dimension winSize;
|
||||||
|
|
||||||
|
Object[] options = {"Save", "Discard"};
|
||||||
|
|
||||||
public void setup() {
|
public void setup() {
|
||||||
menuBar.add(fileMenu);
|
menuBar.add(fileMenu);
|
||||||
menuBar.add(editMenu);
|
menuBar.add(editMenu);
|
||||||
|
@ -51,6 +62,49 @@ public class Window implements Runnable {
|
||||||
fileMenu.add(fileMenuItem2);
|
fileMenu.add(fileMenuItem2);
|
||||||
fileMenu.add(fileMenuItem3);
|
fileMenu.add(fileMenuItem3);
|
||||||
|
|
||||||
|
browser.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (e.getActionCommand().equals(javax.swing.JFileChooser.APPROVE_SELECTION)) {
|
||||||
|
p = browser.getSelectedFile().getPath();
|
||||||
|
|
||||||
|
if (browser.getDialogType() == JFileChooser.OPEN_DIALOG) {
|
||||||
|
Open.readFile(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
isFileOpened = true;
|
||||||
|
window.setTitle(title + " - " + browser.getSelectedFile().getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
fileMenuItem1.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
status = browser.showOpenDialog(window);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
fileMenuItem2.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
if (isFileOpened) {
|
||||||
|
Save.saveFile(p);
|
||||||
|
} else {
|
||||||
|
status = browser.showSaveDialog(window);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
fileMenuItem3.addActionListener(new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
textArea.setText(null);
|
||||||
|
isFileOpened = false;
|
||||||
|
window.setTitle(title);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
quitButton.setContentAreaFilled(false);
|
quitButton.setContentAreaFilled(false);
|
||||||
quitButton.setBorderPainted(false);
|
quitButton.setBorderPainted(false);
|
||||||
quitButton.setFocusable(false);
|
quitButton.setFocusable(false);
|
||||||
|
@ -70,8 +124,12 @@ public class Window implements Runnable {
|
||||||
quitButton.addActionListener(new ActionListener() {
|
quitButton.addActionListener(new ActionListener() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
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]);
|
||||||
|
} else {
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
fileExplorer.setBorder(new EtchedBorder());
|
fileExplorer.setBorder(new EtchedBorder());
|
||||||
|
@ -82,7 +140,7 @@ public class Window implements Runnable {
|
||||||
mainPanel.setBorder(new EtchedBorder());
|
mainPanel.setBorder(new EtchedBorder());
|
||||||
mainPanel.add(scrollPane);
|
mainPanel.add(scrollPane);
|
||||||
|
|
||||||
textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
|
textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_CPLUSPLUS);
|
||||||
textArea.setCodeFoldingEnabled(true);
|
textArea.setCodeFoldingEnabled(true);
|
||||||
|
|
||||||
LanguageSupportFactory.get().register(textArea);
|
LanguageSupportFactory.get().register(textArea);
|
||||||
|
@ -109,6 +167,7 @@ public class Window implements Runnable {
|
||||||
fileMenuItem1 = new JMenuItem("Open");
|
fileMenuItem1 = new JMenuItem("Open");
|
||||||
fileMenuItem2 = new JMenuItem("Save");
|
fileMenuItem2 = new JMenuItem("Save");
|
||||||
fileMenuItem3 = new JMenuItem("Close File");
|
fileMenuItem3 = new JMenuItem("Close File");
|
||||||
|
browser = new JFileChooser("");
|
||||||
fileExplorer = new JPanel();
|
fileExplorer = new JPanel();
|
||||||
mainPanel = new JPanel();
|
mainPanel = new JPanel();
|
||||||
textArea = new RSyntaxTextArea();
|
textArea = new RSyntaxTextArea();
|
||||||
|
@ -123,8 +182,8 @@ public class Window implements Runnable {
|
||||||
setup();
|
setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Window(String title, double version, Dimension winSize) {
|
public Window(String title, String version, Dimension winSize) {
|
||||||
this.title = title + version;
|
this.title = title + " " + version;
|
||||||
this.winSize = winSize;
|
this.winSize = winSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue