-
Notifications
You must be signed in to change notification settings - Fork 0
/
TextEditorFrame.java
118 lines (81 loc) · 2.96 KB
/
TextEditorFrame.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
import javax.swing.undo.*;
public class TextEditorFrame extends JFrame {
private File currentFile = null;
private JTextPane textArea = new JTextPane();
private Container defaultContentPane;
public Stack<DocumentEvent> undoStack = new Stack<DocumentEvent>();
public Stack<DocumentEvent> redoStack = new Stack<DocumentEvent>();
private UndoManager manager = new UndoManager();
public TextEditorFrame() {
this("");
}
public TextEditorFrame(String title) {
super(title);
defaultContentPane = getContentPane();
JScrollPane textAreaScroll = new JScrollPane(textArea);
Font textAreaFont = new Font("Sans-Serif", Font.PLAIN, 24);
textArea.setFont(textAreaFont);
textArea.setMargin(new Insets(10, 10, 10, 0));
textArea.addKeyListener(new KeyboardShortcutsListener(this));
add(textAreaScroll, BorderLayout.CENTER);
setJMenuBar(new TopMenuBar(this));
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Driver.decrementFrameCount();
}
});
// textArea.getDocument().addDocumentListener(new DocumentListener() {
// public void removeUpdate(DocumentEvent e) {
// EditOperations.addToStack(undoStack, e);
// }
// public void insertUpdate(DocumentEvent e) {
// EditOperations.addToStack(undoStack, e);
// }
// public void changedUpdate(DocumentEvent e) {
// }
// });
textArea.getDocument().addUndoableEditListener(manager);
setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
setSize(600, 800);
setLocationRelativeTo(null);
}
public JTextPane getTextArea() { return textArea; }
public File getCurrentFile() { return currentFile; }
public void setCurrentFile(File f) {
currentFile = f;
if (currentFile == null) {
textArea.setText(null);
return;
}
try {
BufferedReader fileReader = new BufferedReader(new FileReader(currentFile));
textArea.setText(null);
String line;
while ((line = fileReader.readLine()) != null)
textArea.setText(textArea.getText() + line + "\n");
}
catch (IOException ex) {
}
}
public void clearTextArea() { textArea.setText(null); }
public Font getFont() { return textArea.getFont(); }
public void setFontFamily(String name) {
textArea.setFont(new Font(name, textArea.getFont().getStyle(), textArea.getFont().getSize()));
}
public void resetContentPane() {
setContentPane(defaultContentPane);
}
public void increaseFont() {
textArea.setFont(new Font(textArea.getFont().getName(), textArea.getFont().getStyle(), textArea.getFont().getSize() + 2));
}
public void decreaseFont() {
textArea.setFont(new Font(textArea.getFont().getName(), textArea.getFont().getStyle(), textArea.getFont().getSize() - 2));
}
public UndoManager getUndoManager() { return manager; }
}