-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathController.java
131 lines (119 loc) · 3.91 KB
/
Controller.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
119
120
121
122
123
124
125
126
127
128
129
130
131
package nithin;
import javax.swing.*;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
import java.io.*;
public class Controller {
private View view;
private HTMLDocument document;
private File currentFile;
public Controller(View view) {
this.view = view;
}
public HTMLDocument getDocument() {
return document;
}
public static void main(String[] args) {
View view = new View();
Controller controller = new Controller(view);
view.setController(controller);
view.init();
controller.init();
}
public void init() {
createNewDocument();
}
public void resetDocument() {
if (document != null)
document.removeUndoableEditListener(view.getUndoListener());
document = (HTMLDocument) new HTMLEditorKit().createDefaultDocument();
document.addUndoableEditListener(view.getUndoListener());
view.update();
}
public void setPlainText(String text) {
try {
resetDocument();
StringReader reader = new StringReader(text);
new HTMLEditorKit().read(reader, document, 0);
}
catch (Exception e) {
ExceptionHandler.log(e);
}
}
public String getPlainText() {
try {
StringWriter writer = new StringWriter();
new HTMLEditorKit().write(writer, document, 0, document.getLength());
return writer.toString();
} catch (Exception e) {
ExceptionHandler.log(e);
return "";
}
}
public void createNewDocument() {
view.selectHtmlTab();
resetDocument();
view.setTitle("HTML editor");
view.resetUndo();
currentFile = null;
}
public void openDocument() {
view.selectHtmlTab();
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new HTMLFileFilter());
fileChooser.setDialogTitle("Open File");
fileChooser.showOpenDialog(view.getParent());
int option = fileChooser.showOpenDialog(view);
if (option == JFileChooser.APPROVE_OPTION) {
currentFile = fileChooser.getSelectedFile();
resetDocument();
view.setTitle(currentFile.getName());
try {
FileReader reader = new FileReader(currentFile);
new HTMLEditorKit().read(reader, document, 0);
view.resetUndo();
reader.close();
} catch (Exception e) {
ExceptionHandler.log(e);
}
}
}
public void saveDocument() {
if (currentFile == null)
saveDocumentAs();
else {
view.selectHtmlTab();
try {
FileWriter writer = new FileWriter(currentFile);
new HTMLEditorKit().write(writer, document, 0, document.getLength());
writer.close();
}
catch (Exception e) {
ExceptionHandler.log(e);
}
}
}
public void saveDocumentAs() {
view.selectHtmlTab();
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new HTMLFileFilter());
fileChooser.setDialogTitle("Save File");
fileChooser.showSaveDialog(view.getParent());
int choose = fileChooser.showSaveDialog(view);
if (choose == JFileChooser.APPROVE_OPTION) {
currentFile = fileChooser.getSelectedFile();
view.setTitle(currentFile.getName());
try {
FileWriter writer = new FileWriter(currentFile);
new HTMLEditorKit().write(writer, document, 0, document.getLength());
writer.close();
}
catch (Exception e) {
ExceptionHandler.log(e);
}
}
}
public void exit() {
System.exit(0);
}
}