-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathToDoListFrame.java
More file actions
169 lines (151 loc) · 4.79 KB
/
ToDoListFrame.java
File metadata and controls
169 lines (151 loc) · 4.79 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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
import java.awt.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
/*
* A view
* Displays a daily To-Do list in a window
*/
public class ToDoListFrame {
private Data model;
private JFrame frame;
private DefaultListModel listModel;
private JList list;
private JScrollPane scrollPane;
private JTextField text;
private JButton deleteButton;
private JButton editButton;
private JButton addButton;
private JButton exportButton;
private static final DateFormat formatter = new SimpleDateFormat("MM-dd-yyyy");
public ToDoListFrame(Data m) {
model = m;
/*
* Create buttons
*/
deleteButton = new JButton("Delete Task");
deleteButton.addActionListener(event -> {
int selected = list.getSelectedIndex();
String taskSelected = list.getSelectedValue().toString();
if (selected >= 0) // if list is not empty
listModel.removeElementAt(selected); // update display
model.deleteTask(taskSelected); // remove task from task arrayList
});
editButton = new JButton("Edit Task");
editButton.addActionListener(event -> {
int selected = list.getSelectedIndex();
String taskSelected = list.getSelectedValue().toString();
if (text.getText().equals("")) // if text field is empty, do nothing
return;
try {
model.editTask(taskSelected, text.getText()); // update task arrayList
listModel.removeElementAt(selected); // update display
listModel.add(selected, text.getText()); // update display
text.setText(""); // clear text field
} catch (Exception e) {
text.setText("");
}
});
addButton = new JButton("Add Task");
addButton.addActionListener(event -> {
if (text.getText().equals("")) // if text field is empty, do nothing
return;
try {
model.addTask(text.getText()); // add new task to task arrayList
listModel.addElement(text.getText()); // add new task to display
text.setText("");
} catch (Exception e) {
text.setText("");
}
});
exportButton = new JButton("Export");
exportButton.addActionListener(event -> {
model.export();
});
makeAFrame();
}
public void updateCurrentDate() {
frame.setVisible(false);
frame = new JFrame("Daily To Do List");
frame.setLayout(new BorderLayout());
String dayOfWeek = model.getCurrentDay().getDayOfWeek();
String date = formatter.format(model.getCurrentDay().getToday().getTime());
JLabel todayDate = new JLabel(dayOfWeek + ", " + date);
todayDate.setFont(new Font("Default", Font.BOLD, 20));
Iterator<Day> iterDay = model.getDays();
Day temp = null;
while (iterDay.hasNext()) {
temp = iterDay.next();
if ((model.getCurrentDay().getToday().equals(temp.getToday()))) {
Iterator<String> iterString = model.getCurrentDay().getTasks();
while (iterString.hasNext())
listModel.addElement(iterString.next());
} else {
listModel.clear();
}
}
makeAFrame();
}
public void makeAFrame() {
frame = new JFrame("Daily To Do List");
frame.setLayout(new BorderLayout());
// Displays currentDate
String dayOfWeek = model.getCurrentDay().getDayOfWeek();
String date = formatter.format(model.getCurrentDay().getToday().getTime());
JLabel todayDate = new JLabel(dayOfWeek + ", " + date);
todayDate.setFont(new Font("Times New Roman", Font.ITALIC, 18));
/*
* Create a ListModel that takes Strings from the task arrayList and displays
* them
*/
listModel = new DefaultListModel();
Iterator<Day> iterDay = model.getDays();
Day temp = null;
while (iterDay.hasNext()) {
temp = iterDay.next();
if ((model.getCurrentDay().getToday().getTime().equals(temp.getToday().getTime()))) {
Iterator<String> iterString = temp.getTasks();
while (iterString.hasNext()) {
listModel.addElement(iterString.next());
}
}
}
list = new JList(listModel);
scrollPane = new JScrollPane(list);
list.setFont(new Font("Times New Roman", Font.PLAIN, 18));
scrollPane.setPreferredSize(new Dimension(375, 185));
JPanel listPanel = new JPanel();
listPanel.setBackground(Color.ORANGE);
listPanel.add(scrollPane);
text = new JTextField();
/*
* Adding buttons to a panel
*/
JPanel buttonPanel = new JPanel();
buttonPanel.add(deleteButton);
buttonPanel.add(editButton);
buttonPanel.add(addButton);
buttonPanel.add(exportButton);
/*
* Adding textfield and buttons to the same panel
*/
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(text, BorderLayout.NORTH);
panel.add(buttonPanel, BorderLayout.CENTER);
/*
* Adding all components to the frame
*/
frame.add(todayDate, BorderLayout.NORTH);
frame.add(listPanel, BorderLayout.CENTER);
frame.add(panel, BorderLayout.SOUTH);
/*
* Frame settings
*/
frame.setSize(400, 300);
frame.setLocation(750, 300);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}