Skip to content

Commit 6d634d1

Browse files
authored
Add files via upload
1 parent b9e7145 commit 6d634d1

2 files changed

Lines changed: 142 additions & 14 deletions

File tree

com/devkev/devscript/raw/ApplicationInput.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public abstract class ApplicationInput extends InputStream {
1414
public int read() throws IOException {
1515
if(!inputReqested) {
1616
inputReqested = true;
17-
System.out.println("Awaiting input...");
1817
awaitInput();
1918
synchronized (this) {
2019
try {
@@ -29,6 +28,7 @@ public int read() throws IOException {
2928
System.out.println("Fetching data... " + data.getBytes()[index-1]);
3029
return data.getBytes()[index-1];
3130
} else {
31+
inputReqested = false;
3232
data = "";
3333
index = 0;
3434
return -1;

com/devkev/gui/Window.java

Lines changed: 141 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package com.devkev.gui;
22

33
import java.awt.Color;
4+
import java.awt.Desktop;
45
import java.awt.Dimension;
56
import java.awt.Font;
7+
import java.awt.HeadlessException;
68
import java.awt.KeyEventDispatcher;
79
import java.awt.KeyboardFocusManager;
810
import java.awt.Toolkit;
11+
import java.awt.datatransfer.DataFlavor;
12+
import java.awt.datatransfer.StringSelection;
13+
import java.awt.datatransfer.UnsupportedFlavorException;
914
import java.awt.event.ActionEvent;
1015
import java.awt.event.ActionListener;
1116
import java.awt.event.ComponentEvent;
@@ -20,6 +25,9 @@
2025
import java.io.FileReader;
2126
import java.io.FileWriter;
2227
import java.io.IOException;
28+
import java.net.URI;
29+
import java.net.URISyntaxException;
30+
import java.util.ArrayList;
2331

2432
import javax.swing.BorderFactory;
2533
import javax.swing.JButton;
@@ -61,14 +69,18 @@ public class Window {
6169

6270
private static Font font;
6371
private File openedFile = null; //Null means, creating a new file when saving.
72+
private static final String TITLE = "Devscript 1.9.0 Editor (pre alpha build)";
73+
private ArrayList<String> history = new ArrayList<String>();
74+
private int historyIndex = 0;
75+
public int maxHistorySize = 50;
6476

6577
public Window() {
6678
try {
6779
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
6880
} catch (Exception evt) {}
6981
font = new Font("Consolas", Font.PLAIN, 13);
7082

71-
window = new JFrame("Devscript 1.9.0 Editor (pre alpha build)");
83+
window = new JFrame(TITLE + " - unsaved");
7284
window.setVisible(true);
7385
window.setResizable(true);
7486
window.setLayout(null);
@@ -142,6 +154,7 @@ public boolean dispatchKeyEvent(KeyEvent e) {
142154
public void actionPerformed(ActionEvent e) {
143155
textArea.setText("");
144156
openedFile = null;
157+
window.setTitle(TITLE + " - unsaved");
145158
}
146159
});
147160
m.add(newFile);
@@ -164,7 +177,9 @@ public void actionPerformed(ActionEvent e) {
164177
}
165178
reader.close();
166179
window.setEnabled(true);
180+
window.toFront();
167181
openedFile = chooser.getSelectedFile();
182+
window.setTitle(TITLE);
168183
} catch (Exception e1) {
169184
e1.printStackTrace();
170185
window.setEnabled(true);
@@ -183,26 +198,60 @@ public void actionPerformed(ActionEvent e) {
183198
if(textArea.getText().isEmpty()) return;
184199
window.setEnabled(false);
185200
JFileChooser chooser = new JFileChooser();
186-
chooser.setDialogTitle("Save new file");
201+
chooser.setDialogTitle("Save New File");
187202
int res = chooser.showSaveDialog(new JFrame());
188-
if(res == JFileChooser.APPROVE_OPTION) {
189-
BufferedWriter writer = new BufferedWriter(new FileWriter(chooser.getSelectedFile()));
190-
try {
191-
writer.write(textArea.getText());
192-
writer.close();
193-
} catch (IOException e1) {
194-
e1.printStackTrace();
195-
}
196-
}
203+
if(res == JFileChooser.APPROVE_OPTION) saveDocument(chooser.getSelectedFile());
197204
window.setEnabled(true);
198-
} else System.out.println("Overwriging file...");
199-
205+
} else saveDocument(openedFile);
206+
window.setTitle(TITLE + " - saved");
200207
}
201208
});
202209
m.add(saveFile);
203210
bar.add(m);
204211

205212
JMenu m2 = new JMenu("Edit");
213+
JMenuItem undo = new JMenuItem(getFormattedBarText("Undo"));
214+
undo.setAccelerator(KeyStroke.getKeyStroke("control Z"));
215+
undo.addActionListener(new ActionListener() {
216+
public void actionPerformed(ActionEvent e) {
217+
if(historyIndex > 0) {
218+
historyIndex--;
219+
textArea.setText(history.get(historyIndex));
220+
if(historyIndex == 0) undo.setEnabled(false);
221+
}
222+
}
223+
});
224+
undo.setEnabled(false);
225+
m2.add(undo);
226+
m2.addSeparator();
227+
JMenuItem selectAll = new JMenuItem(getFormattedBarText("Select All"));
228+
selectAll.setAccelerator(KeyStroke.getKeyStroke("control A"));
229+
selectAll.addActionListener(new ActionListener() {
230+
public void actionPerformed(ActionEvent e) {
231+
textArea.selectAll();
232+
}
233+
});
234+
JMenuItem copyToClipboard = new JMenuItem(getFormattedBarText("Copy"));
235+
copyToClipboard.setAccelerator(KeyStroke.getKeyStroke("control C"));
236+
copyToClipboard.addActionListener(new ActionListener() {
237+
public void actionPerformed(ActionEvent e) {
238+
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(textArea.getSelectedText()),null);
239+
}
240+
});
241+
JMenuItem paste = new JMenuItem(getFormattedBarText("Paste"));
242+
paste.setAccelerator(KeyStroke.getKeyStroke("control V"));
243+
paste.addActionListener(new ActionListener() {
244+
public void actionPerformed(ActionEvent e) {
245+
try {
246+
textArea.setText((String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor));
247+
} catch (HeadlessException | UnsupportedFlavorException | IOException e1) {
248+
e1.printStackTrace();
249+
}
250+
}
251+
});
252+
m2.add(selectAll);
253+
m2.add(copyToClipboard);
254+
m2.add(paste);
206255
bar.add(m2);
207256

208257
JMenu m3 = new JMenu("Run");
@@ -222,10 +271,79 @@ public void actionPerformed(ActionEvent e) {
222271
m3.add(run);
223272
bar.add(m3);
224273

274+
JMenu m4 = new JMenu("Help");
275+
JMenuItem help = new JMenuItem("Tutorial");
276+
help.addActionListener(new ActionListener() {
277+
public void actionPerformed(ActionEvent e) {
278+
ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "README.md");
279+
try {
280+
pb.start();
281+
} catch (IOException e1) {
282+
e1.printStackTrace();
283+
}
284+
}
285+
});
286+
m4.add(help);
287+
JMenuItem license = new JMenuItem("License");
288+
license.addActionListener(new ActionListener() {
289+
public void actionPerformed(ActionEvent e) {
290+
ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "LICENSE");
291+
try {
292+
pb.start();
293+
} catch (IOException e1) {
294+
e1.printStackTrace();
295+
}
296+
}
297+
});
298+
JMenuItem changelog = new JMenuItem("Changelog");
299+
changelog.addActionListener(new ActionListener() {
300+
public void actionPerformed(ActionEvent e) {
301+
ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "changelog.txt");
302+
try {
303+
pb.start();
304+
} catch (IOException e1) {
305+
e1.printStackTrace();
306+
}
307+
}
308+
});
309+
m4.add(changelog);
310+
m4.add(license);
311+
m4.addSeparator();
312+
JMenuItem about = new JMenuItem("About / GitHub");
313+
about.addActionListener(new ActionListener() {
314+
public void actionPerformed(ActionEvent arg0) {
315+
try {
316+
Desktop.getDesktop().browse(new URI("https://github.com/DevKevYT/devscript"));
317+
} catch (IOException | URISyntaxException e) {
318+
e.printStackTrace();
319+
}
320+
}
321+
});
322+
m4.add(about);
323+
m4.addSeparator();
324+
JMenuItem ty = new JMenuItem("Thank you! <3");
325+
ty.setEnabled(false);
326+
m4.add(ty);
327+
bar.add(m4);
328+
225329
window.setJMenuBar(bar);
226330

227331
textArea = new JTextPane();
228332
textArea.setFont(font);
333+
textArea.addKeyListener(new KeyListener() {
334+
@Override
335+
public void keyTyped(KeyEvent e) {
336+
if(!e.isControlDown()) window.setTitle(TITLE + " - unsaved");
337+
}
338+
public void keyReleased(KeyEvent e) {
339+
if(e.isControlDown()) return;
340+
history.add(textArea.getText());
341+
if(history.size() >= 20) history.remove(0);
342+
historyIndex = history.size()-1;
343+
undo.setEnabled(true);
344+
}
345+
public void keyPressed(KeyEvent e) {}
346+
});
229347
pane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
230348
pane.setBounds(5, 5, window.getRootPane().getWidth() - 10, window.getRootPane().getHeight()-bar.getHeight() - 10);
231349
pane.setBorder(BorderFactory.createLineBorder(Color.BLACK));
@@ -236,6 +354,16 @@ public void actionPerformed(ActionEvent e) {
236354
window.setSize(500, 500);
237355
}
238356

357+
private void saveDocument(File file) {
358+
try {
359+
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
360+
writer.write(textArea.getText());
361+
writer.close();
362+
} catch (IOException e1) {
363+
e1.printStackTrace();
364+
}
365+
}
366+
239367
JFrame saveDialog;
240368
JButton approveSave;
241369
JButton cancelSave;

0 commit comments

Comments
 (0)