-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMenubar.java
More file actions
124 lines (110 loc) · 3.43 KB
/
Menubar.java
File metadata and controls
124 lines (110 loc) · 3.43 KB
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
package a2;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.swing.JFileChooser;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Menubar extends JMenuBar {
Model model;
public Menubar(Model model) {
this.model = model;
JMenu mnuFile = new JMenu("File");
JMenuItem mnuItemLoad = new JMenuItem("Load");
JMenuItem mnuItemCreate = new JMenuItem("Create");
JMenuItem mnuItemSave = new JMenuItem("Save");
JMenuItem mnuItemQuit = new JMenuItem("Quit");
JMenu mnuView = new JMenu("View");
JMenuItem mnuItemFullSize = new JMenuItem("Full Size");
JMenuItem mnuItemFit = new JMenuItem("Fit");
mnuItemCreate.addActionListener(new CreateListener());
mnuItemLoad.addActionListener(new LoadListener());
mnuItemSave.addActionListener(new SaveListener());
mnuItemQuit.addActionListener(new QuitListener());
mnuFile.add(mnuItemCreate);
mnuFile.add(mnuItemLoad);
mnuFile.add(mnuItemSave);
mnuFile.add(mnuItemQuit);
mnuView.add(mnuItemFullSize);
mnuView.add(mnuItemFit);
add(mnuFile);
add(mnuView);
}
class QuitListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (model.getPath() == null) {
JFileChooser chooser = new JFileChooser();
int rVal = chooser.showSaveDialog(getParent());
if (rVal == JFileChooser.APPROVE_OPTION) {
model.setPath(chooser.getCurrentDirectory().toString() + "/" + chooser.getSelectedFile().getName());
save();
}
}
System.exit(0);
}
}
class CreateListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Doodle.loadGUI(new Model());
}
}
class SaveListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (model.getPath() == null) {
JFileChooser chooser = new JFileChooser();
int rVal = chooser.showSaveDialog(getParent());
if (rVal == JFileChooser.APPROVE_OPTION) {
model.setPath(chooser.getCurrentDirectory().toString() + "/" + chooser.getSelectedFile().getName());
save();
}
}
else {
save();
}
}
}
class LoadListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Model m = null;
String path = null;
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(".ser, .txt", "ser");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(getParent());
if(returnVal == JFileChooser.APPROVE_OPTION) {
path = chooser.getSelectedFile().getAbsolutePath();
}
try {
FileInputStream fileIn = new FileInputStream(path);
ObjectInputStream in = new ObjectInputStream(fileIn);
m = (Model) in.readObject();
in.close();
fileIn.close();
Doodle.loadGUI(m);
} catch (IOException i) {
i.printStackTrace();
return;
} catch (ClassNotFoundException c) {
c.printStackTrace();
return;
}
}
}
private void save() {
try {
FileOutputStream fileOut = new FileOutputStream(model.getPath());
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(model);
out.close();
fileOut.close();
} catch (IOException i) {
i.printStackTrace();
}
}
}