diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..639900d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_48_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_48_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..fecc75b
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_48_p_m__[Changes]/shelved.patch
@@ -0,0 +1,190 @@
+Index: out/production/The-Hamburglars/.idea/libraries/javafx_web.xml
+===================================================================
+diff --git a/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml b/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ /dev/null (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: .idea/libraries/javafx.xml
+===================================================================
+diff --git a/.idea/libraries/javafx.xml b/.idea/libraries/javafx.xml
+deleted file mode 100644
+--- a/.idea/libraries/javafx.xml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ /dev/null (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: out/production/The-Hamburglars/.idea/libraries/javafx.xml
+===================================================================
+diff --git a/out/production/The-Hamburglars/.idea/libraries/javafx.xml b/out/production/The-Hamburglars/.idea/libraries/javafx.xml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/.idea/libraries/javafx.xml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ /dev/null (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: out/production/The-Hamburglars/ColorPick.fxml
+===================================================================
+diff --git a/out/production/The-Hamburglars/ColorPick.fxml b/out/production/The-Hamburglars/ColorPick.fxml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/ColorPick.fxml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ /dev/null (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
+@@ -1,12 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+Index: .idea/libraries/javafx_swt.xml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/.idea/libraries/javafx_swt.xml b/.idea/libraries/javafx_swt.xml
+new file mode 100644
+--- /dev/null (date 1670196052751)
++++ b/.idea/libraries/javafx_swt.xml (date 1670196052751)
+@@ -0,0 +1,16 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+\ No newline at end of file
+Index: out/production/The-Hamburglars/The-Hamburglars.iml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/out/production/The-Hamburglars/The-Hamburglars.iml b/out/production/The-Hamburglars/The-Hamburglars.iml
+--- a/out/production/The-Hamburglars/The-Hamburglars.iml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ b/out/production/The-Hamburglars/The-Hamburglars.iml (date 1670196179110)
+@@ -7,6 +7,23 @@
+
+
+
+-
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+
+\ No newline at end of file
+Index: The-Hamburglars.iml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/The-Hamburglars.iml b/The-Hamburglars.iml
+--- a/The-Hamburglars.iml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ b/The-Hamburglars.iml (date 1670196179449)
+@@ -7,6 +7,23 @@
+
+
+
+-
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+
+\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_48_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_48_p_m___Changes_.xml
new file mode 100644
index 0000000..d7e7aab
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_48_p_m___Changes_.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..7b3b71d
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m__[Changes]/shelved.patch
@@ -0,0 +1,25 @@
+Index: .idea/libraries/javafx_graphics.xml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
+===================================================================
+diff --git a/.idea/libraries/javafx_graphics.xml b/.idea/libraries/javafx_graphics.xml
+--- a/.idea/libraries/javafx_graphics.xml
++++ b/.idea/libraries/javafx_graphics.xml
+@@ -1,15 +1,6 @@
+
+
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
++
+
+
+
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m__[Changes]1/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m__[Changes]1/shelved.patch
new file mode 100644
index 0000000..df9f237
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m__[Changes]1/shelved.patch
@@ -0,0 +1,139 @@
+Index: out/production/The-Hamburglars/.idea/libraries/javafx_web.xml
+===================================================================
+diff --git a/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml b/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml
++++ /dev/null
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: .idea/libraries/javafx.xml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/.idea/libraries/javafx.xml b/.idea/libraries/javafx.xml
+deleted file mode 100644
+--- a/.idea/libraries/javafx.xml
++++ /dev/null
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: out/production/The-Hamburglars/.idea/libraries/javafx.xml
+===================================================================
+diff --git a/out/production/The-Hamburglars/.idea/libraries/javafx.xml b/out/production/The-Hamburglars/.idea/libraries/javafx.xml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/.idea/libraries/javafx.xml
++++ /dev/null
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: out/production/The-Hamburglars/ColorPick.fxml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/out/production/The-Hamburglars/ColorPick.fxml b/out/production/The-Hamburglars/ColorPick.fxml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/ColorPick.fxml
++++ /dev/null
+@@ -1,12 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+Index: .idea/libraries/javafx_swt.xml
+===================================================================
+diff --git a/.idea/libraries/javafx_swt.xml b/.idea/libraries/javafx_swt.xml
+new file mode 100644
+--- /dev/null
++++ b/.idea/libraries/javafx_swt.xml
+@@ -0,0 +1,16 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+\ No newline at end of file
+Index: The-Hamburglars.iml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/The-Hamburglars.iml b/The-Hamburglars.iml
+--- a/The-Hamburglars.iml
++++ b/The-Hamburglars.iml
+@@ -9,5 +9,6 @@
+
+
+
++
+
+
+\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m___Changes_.xml
new file mode 100644
index 0000000..4a98c89
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m___Changes_.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m___Changes_1.xml b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m___Changes_1.xml
new file mode 100644
index 0000000..3563947
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_7_50_p_m___Changes_1.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]/model.ser b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]/model.ser
new file mode 100644
index 0000000..b3743cd
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]/model.ser differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]/model1.ser b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]/model1.ser
new file mode 100644
index 0000000..b3743cd
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]/model1.ser differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..cbfa1df
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]/shelved.patch
@@ -0,0 +1,35 @@
+Index: out/production/The-Hamburglars/ColorPick.fxml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n
+===================================================================
+diff --git a/out/production/The-Hamburglars/ColorPick.fxml b/out/production/The-Hamburglars/ColorPick.fxml
+--- a/out/production/The-Hamburglars/ColorPick.fxml
++++ b/out/production/The-Hamburglars/ColorPick.fxml
+@@ -3,10 +3,20 @@
+
+
+
++
+
+-
++
+
+-
+-
+-
+-
++
++
++
++
++
++
++
++
++
++
++
++
++
+\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]1/model.ser b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]1/model.ser
new file mode 100644
index 0000000..b3743cd
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]1/model.ser differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]1/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]1/shelved.patch
new file mode 100644
index 0000000..7d7a382
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m__[Changes]1/shelved.patch
@@ -0,0 +1,63 @@
+Index: out/production/The-Hamburglars/.idea/libraries/javafx_web.xml
+===================================================================
+diff --git a/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml b/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml
++++ /dev/null
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: out/production/The-Hamburglars/.idea/libraries/javafx_swt.xml
+===================================================================
+diff --git a/out/production/The-Hamburglars/.idea/libraries/javafx_swt.xml b/out/production/The-Hamburglars/.idea/libraries/javafx_swt.xml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/.idea/libraries/javafx_swt.xml
++++ /dev/null
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: out/production/The-Hamburglars/.idea/.gitignore
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+># Default ignored files\r\n/shelf/\r\n/workspace.xml\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/out/production/The-Hamburglars/.idea/.gitignore b/out/production/The-Hamburglars/.idea/.gitignore
+--- a/out/production/The-Hamburglars/.idea/.gitignore
++++ b/out/production/The-Hamburglars/.idea/.gitignore
+@@ -1,3 +1,4 @@
+ # Default ignored files
+ /shelf/
+ /workspace.xml
++/save/model.ser
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m___Changes_.xml
new file mode 100644
index 0000000..7a0c208
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m___Changes_.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m___Changes_1.xml b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m___Changes_1.xml
new file mode 100644
index 0000000..ed7efac
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_37_p_m___Changes_1.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_42_p_m__[Changes]/model.ser b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_42_p_m__[Changes]/model.ser
new file mode 100644
index 0000000..93907df
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_42_p_m__[Changes]/model.ser differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_42_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_42_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_42_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_42_p_m___Changes_.xml
new file mode 100644
index 0000000..cfdb292
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-04_9_42_p_m___Changes_.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-06_3_35_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-06_3_35_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..d94b05f
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-06_3_35_p_m__[Changes]/shelved.patch
@@ -0,0 +1,38 @@
+Index: event/EventTest.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package event;\r\n\r\nimport org.junit.jupiter.api.Test;\r\n\r\n\r\n/**\r\n * A Unit Test Class for Event.java.\r\n */\r\nclass EventTest {\r\n /**\r\n * A Unit Test for Event.complete().\r\n */\r\n @Test\r\n void complete() {\r\n\r\n }\r\n}
+===================================================================
+diff --git a/event/EventTest.java b/event/EventTest.java
+--- a/event/EventTest.java
++++ b/event/EventTest.java
+@@ -1,6 +1,11 @@
+ package event;
+
+ import org.junit.jupiter.api.Test;
++import static org.junit.jupiter.api.Assertions.*;
++
++import java.time.LocalDateTime;
++
++import timeBehaviour.TimePoint;
+
+
+ /**
+@@ -11,7 +16,15 @@
+ * A Unit Test for Event.complete().
+ */
+ @Test
+- void complete() {
++ void completeTest() {
++ Event e = new Event("Event1", "testing", 100, new TimePoint(LocalDateTime.now()));
++
++ assertEquals(0, Event.getObserverList().size());
++ assert(Event.getObserverList().contains(e));
+
++ e.complete();
++
++ assertEquals(0, Event.getObserverList().size());
++ assertFalse(Event.getObserverList().contains(e));
+ }
+ }
+\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-06_3_35_p_m__[Changes]1/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-06_3_35_p_m__[Changes]1/shelved.patch
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-06_3_35_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-06_3_35_p_m___Changes_.xml
new file mode 100644
index 0000000..29891a2
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Checkout_at_2022-12-06_3_35_p_m___Changes_.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m__[Changes]/model.ser b/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m__[Changes]/model.ser
new file mode 100644
index 0000000..133c0db
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m__[Changes]/model.ser differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m__[Changes]/model1.ser b/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m__[Changes]/model1.ser
new file mode 100644
index 0000000..133c0db
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m__[Changes]/model1.ser differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..b1a7d3d
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m__[Changes]/shelved.patch
@@ -0,0 +1,76 @@
+Index: event/EventTest.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/event/EventTest.java b/event/EventTest.java
+new file mode 100644
+--- /dev/null (date 1670274282284)
++++ b/event/EventTest.java (date 1670274282284)
+@@ -0,0 +1,16 @@
++package event;
++
++import org.junit.jupiter.api.Test;
++
++
++class EventTest {
++
++ @Test
++ void complete() {
++
++ }
++
++ @Test
++ void addGoal() {
++ }
++}
+\ No newline at end of file
+Index: The-Hamburglars.iml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/The-Hamburglars.iml b/The-Hamburglars.iml
+--- a/The-Hamburglars.iml (revision f96259081562f4e298ef9693cadbfae3e5efc41f)
++++ b/The-Hamburglars.iml (date 1670274282536)
+@@ -8,5 +8,37 @@
+
+
+
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+
+\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m___Changes_.xml
new file mode 100644
index 0000000..eb98c2e
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Merge_at_2022-12-05_8_36_p_m___Changes_.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-04_9_18_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-04_9_18_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..a2145ee
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-04_9_18_p_m__[Changes]/shelved.patch
@@ -0,0 +1,149 @@
+Index: out/production/The-Hamburglars/.idea/libraries/javafx_web.xml
+===================================================================
+diff --git a/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml b/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/.idea/libraries/javafx_web.xml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ /dev/null (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: .idea/libraries/javafx.xml
+===================================================================
+diff --git a/.idea/libraries/javafx.xml b/.idea/libraries/javafx.xml
+deleted file mode 100644
+--- a/.idea/libraries/javafx.xml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ /dev/null (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: out/production/The-Hamburglars/.idea/libraries/javafx.xml
+===================================================================
+diff --git a/out/production/The-Hamburglars/.idea/libraries/javafx.xml b/out/production/The-Hamburglars/.idea/libraries/javafx.xml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/.idea/libraries/javafx.xml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ /dev/null (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
+@@ -1,16 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+Index: .idea/libraries/javafx_swt.xml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/.idea/libraries/javafx_swt.xml b/.idea/libraries/javafx_swt.xml
+new file mode 100644
+--- /dev/null (date 1670201469353)
++++ b/.idea/libraries/javafx_swt.xml (date 1670201469353)
+@@ -0,0 +1,16 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+\ No newline at end of file
+Index: .idea/.name
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/.idea/.name b/.idea/.name
+new file mode 100644
+--- /dev/null (date 1670196159872)
++++ b/.idea/.name (date 1670196159872)
+@@ -0,0 +1,1 @@
++CalendarView.java
+\ No newline at end of file
+Index: out/production/The-Hamburglars/The-Hamburglars.iml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/out/production/The-Hamburglars/The-Hamburglars.iml b/out/production/The-Hamburglars/The-Hamburglars.iml
+--- a/out/production/The-Hamburglars/The-Hamburglars.iml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ b/out/production/The-Hamburglars/The-Hamburglars.iml (date 1670201469330)
+@@ -7,6 +7,6 @@
+
+
+
+-
++
+
+
+\ No newline at end of file
+Index: The-Hamburglars.iml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/The-Hamburglars.iml b/The-Hamburglars.iml
+--- a/The-Hamburglars.iml (revision 89597aef84464d73e7e456bf0ef497a46ecde8ec)
++++ b/The-Hamburglars.iml (date 1670201469330)
+@@ -7,6 +7,6 @@
+
+
+
+-
++
+
+
+\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-04_9_18_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-04_9_18_p_m___Changes_.xml
new file mode 100644
index 0000000..fd96a6d
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-04_9_18_p_m___Changes_.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_3_19_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_3_19_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..025e1f2
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_3_19_p_m__[Changes]/shelved.patch
@@ -0,0 +1,36 @@
+Index: out/production/The-Hamburglars/ColorPick.fxml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/out/production/The-Hamburglars/ColorPick.fxml b/out/production/The-Hamburglars/ColorPick.fxml
+deleted file mode 100644
+--- a/out/production/The-Hamburglars/ColorPick.fxml (revision cda9a00f1c13d03ac9c0a7285973d8ab40aab48b)
++++ /dev/null (revision cda9a00f1c13d03ac9c0a7285973d8ab40aab48b)
+@@ -1,22 +0,0 @@
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+\ No newline at end of file
+diff --git a/ColorPick.fxml b/views/ColorPick.fxml
+rename from ColorPick.fxml
+rename to views/ColorPick.fxml
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_3_19_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_3_19_p_m___Changes_.xml
new file mode 100644
index 0000000..79392da
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_3_19_p_m___Changes_.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m__[Changes]/model.ser b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m__[Changes]/model.ser
new file mode 100644
index 0000000..133c0db
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m__[Changes]/model.ser differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m__[Changes]/model1.ser b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m__[Changes]/model1.ser
new file mode 100644
index 0000000..133c0db
Binary files /dev/null and b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m__[Changes]/model1.ser differ
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..9a00715
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m__[Changes]/shelved.patch
@@ -0,0 +1,140 @@
+Index: views/EventCreatorView.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package views;\r\n\r\n\r\nimport event.Event;\r\n\r\n\r\nimport javafx.geometry.Insets;\r\nimport javafx.scene.Scene;\r\nimport javafx.scene.control.Button;\r\nimport javafx.scene.control.DatePicker;\r\nimport javafx.scene.control.Label;\r\nimport javafx.scene.control.TextField;\r\nimport javafx.scene.layout.VBox;\r\nimport javafx.scene.text.Font;\r\nimport javafx.stage.Modality;\r\nimport javafx.stage.Stage;\r\n\r\nimport model.CalendarModel;\r\nimport timeBehaviour.TimeBehaviour;\r\nimport timeBehaviour.TimePoint;\r\nimport timeBehaviour.TimeRange;\r\n\r\nimport java.awt.*;\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.time.format.DateTimeFormatter;\r\nimport java.time.LocalDate;\r\n\r\nimport java.util.regex.Matcher;\r\nimport java.util.regex.Pattern;\r\n\r\n\r\npublic class EventCreatorView {\r\n\r\n CalendarView calendarView;\r\n\r\n// CalendarModel calendarModel;\r\n private Label createEventLabel = new Label(\"Create a new event!\");\r\n private TextField nameTextField = new TextField(\"Name\");\r\n private TextField pointsTextField = new TextField(\"Points\");\r\n private TextField descTextField = new TextField(\"Description\");\r\n private Button changeTimeButton = new Button(\"Choose start/end time\");\r\n private DatePicker pointDatePicker = new DatePicker(LocalDate.now());\r\n private TextField pointTimePicker = new TextField(\"Time (hh:mm)\");\r\n private DatePicker startDatePicker = new DatePicker(LocalDate.now());\r\n private TextField startTimePicker = new TextField(\"Start time (hh:mm)\");\r\n private DatePicker endDatePicker = new DatePicker(LocalDate.now());\r\n private TextField endTimePicker = new TextField(\"End time (hh:mm)\");\r\n private Button saveButton = new Button(\"Save Event\");\r\n private Label errorLabel = new Label(\"\");\r\n\r\n private Paint colour;\r\n\r\n\r\n /**\r\n * Constructor\r\n *\r\n * @param calendarView the application's CalendarView\r\n */\r\n public EventCreatorView(CalendarView calendarView) {\r\n this.calendarView = calendarView;\r\n\r\n// this.calendarModel = this.calendarView.model;\r\n\r\n final Stage dialog = new Stage();\r\n dialog.initModality(Modality.APPLICATION_MODAL);\r\n dialog.initOwner(calendarView.stage);\r\n VBox dialogVbox = new VBox(20);\r\n dialogVbox.setPadding(new Insets(20, 20, 20, 20));\r\n\r\n Font f = new Font(16);\r\n createEventLabel.setFont(f);\r\n nameTextField.setFont(f);\r\n pointsTextField.setFont(f);\r\n descTextField.setFont(f);\r\n changeTimeButton.setFont(f);\r\n pointTimePicker.setFont(f);\r\n startTimePicker.setFont(f);\r\n endTimePicker.setFont(f);\r\n saveButton.setFont(f);\r\n\r\n saveButton.setOnAction(e -> createEvent());\r\n\r\n VBox vbox = new VBox(10, createEventLabel, nameTextField, pointsTextField, descTextField, changeTimeButton, pointDatePicker, pointTimePicker, saveButton, errorLabel);\r\n dialogVbox.getChildren().add(vbox);\r\n Scene scene = new Scene(dialogVbox, 400, 500);\r\n dialog.setScene(scene);\r\n dialog.show();\r\n dialog.setAlwaysOnTop(true);\r\n\r\n changeTimeButton.setOnAction(e -> {\r\n if (vbox.getChildren().contains(pointDatePicker)) {\r\n vbox.getChildren().remove(pointDatePicker);\r\n vbox.getChildren().remove(pointTimePicker);\r\n vbox.getChildren().remove(saveButton);\r\n vbox.getChildren().remove(errorLabel);\r\n pointDatePicker.setValue(LocalDate.now());\r\n pointTimePicker.setText(\"Time (hh:mm)\");\r\n changeTimeButton.setText(\"Choose single time\");\r\n vbox.getChildren().add(startDatePicker);\r\n vbox.getChildren().add(startTimePicker);\r\n vbox.getChildren().add(endDatePicker);\r\n vbox.getChildren().add(endTimePicker);\r\n } else {\r\n vbox.getChildren().remove(startDatePicker);\r\n vbox.getChildren().remove(startTimePicker);\r\n vbox.getChildren().remove(endDatePicker);\r\n vbox.getChildren().remove(endTimePicker);\r\n vbox.getChildren().remove(saveButton);\r\n vbox.getChildren().remove(errorLabel);\r\n startDatePicker.setValue(LocalDate.now());\r\n startTimePicker.setText(\"Start time (hh:mm)\");\r\n endDatePicker.setValue(LocalDate.now());\r\n endTimePicker.setText(\"End time (hh:mm)\");\r\n changeTimeButton.setText(\"Choose start/end time\");\r\n vbox.getChildren().add(pointDatePicker);\r\n vbox.getChildren().add(pointTimePicker);\r\n }\r\n vbox.getChildren().add(saveButton);\r\n vbox.getChildren().add(errorLabel);\r\n\r\n });\r\n\r\n }\r\n\r\n /**\r\n * Create a new Event using the parameters given in the text fields and date pickers.\r\n * Store this new Event in the CalendarModel's list of Events.\r\n */\r\n private void createEvent() throws NumberFormatException {\r\n\r\n // Check if the Event's Name is not empty.\r\n if (this.nameTextField.getText().trim().isEmpty() || this.nameTextField.getText().trim().isBlank()) {\r\n this.errorLabel.setText(\"Please enter the Event Name. It can NOT be Blank!\");\r\n return;\r\n }\r\n else\r\n {\r\n String temp = this.nameTextField.getText().trim();\r\n for(Event i: this.calendarView.model.getAllEvents())\r\n {\r\n if (temp.equals(i.getName()))\r\n {\r\n this.errorLabel.setText(\"Event Name already taken!\");\r\n return;\r\n }\r\n }\r\n }\r\n String event_name = this.nameTextField.getText().trim();\r\n\r\n // Check if the Event's Description is not empty.\r\n if (this.descTextField.getText().trim().isEmpty() || this.descTextField.getText().trim().isBlank()) {\r\n this.errorLabel.setText(\"Please enter the Event's Description. It can NOT be Blank!\");\r\n return;\r\n }\r\n String event_description = this.descTextField.getText().trim();\r\n\r\n\r\n String points = String.valueOf(this.pointsTextField.getText()).trim();\r\n int event_points = 0;\r\n // Check if the Event's associated Points are of integer type.\r\n try {\r\n event_points += Integer.parseInt(points);\r\n } catch (NumberFormatException e) {\r\n this.errorLabel.setText(\"Please enter a Integer value for the points associated with the event.\");\r\n return;\r\n }\r\n\r\n\r\n //Check the type of the time and create time range or time point based on that.\r\n if (this.endTimePicker.getText().trim().isBlank() || this.endTimePicker.getText().trim().isEmpty() || this.startTimePicker.getText().trim().equals(\"Start time (hh:mm)\") || this.endTimePicker.getText().trim().equals(\"End time (hh:mm)\")) {\r\n // Create a new Time Point object based on the deadline of the user.\r\n\r\n String deadline_hours = this.pointTimePicker.getText().trim();\r\n\r\n Pattern pattern = Pattern.compile(\"^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\");\r\n Matcher matcher = pattern.matcher(deadline_hours);\r\n if (matcher.find()) {\r\n // match found, valid deadline HH:mm.\r\n String yyyy_mm_dd = this.pointDatePicker.getValue().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));\r\n\r\n // TODO: Consider the case of the where the deadline is a past date.\r\n\r\n String yyyy_mm_dd_HH_mm = yyyy_mm_dd + \" \" + deadline_hours;\r\n DateTimeFormatter formatter = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");\r\n LocalDateTime pointTime = LocalDateTime.parse(yyyy_mm_dd_HH_mm, formatter);\r\n\r\n\r\n // Create a TimePoint object.\r\n TimeBehaviour tp = new TimePoint(pointTime);\r\n\r\n // Finally, create a new Event with the new TimePoint deadline time of the event.\r\n Event e = new Event(event_name, event_description, event_points, tp);\r\n\r\n\r\n // Add the event to the events list of CalendarView.model.events\r\n this.calendarView.model.addEvent(e);\r\n\r\n this.calendarView.saveModel();\r\n //Success Message!\r\n this.errorLabel.setText(\"Event Added to the Calendar!\");\r\n\r\n }\r\n else\r\n {\r\n // Invalid Format of HH:mm\r\n this.errorLabel.setText(\"Please Re-enter the time of the event. Enter in HH:mm format.\");\r\n return;\r\n }\r\n } else {\r\n // Create a new Time Range object based on the start-time and end-time of the user.\r\n\r\n\r\n String start_time = this.startTimePicker.getText().trim();\r\n String end_time = this.endTimePicker.getText().trim();\r\n\r\n\r\n Pattern pattern = Pattern.compile(\"^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\");\r\n\r\n Matcher matcher = pattern.matcher(start_time);\r\n Matcher matcher1 = pattern.matcher(end_time);\r\n\r\n if (matcher1.find() && matcher.find()) {\r\n // match found, valid deadline HH:mm.\r\n String yyyy_mm_dd = this.startDatePicker.getValue().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));\r\n String yyyy_mm_dd2 = this.endDatePicker.getValue().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));\r\n\r\n // TODO: Consider the case of the where the deadline is a past date.\r\n\r\n String yyyy_mm_dd_HH_mm = yyyy_mm_dd + \" \" + start_time;\r\n DateTimeFormatter formatter = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");\r\n LocalDateTime start_time_block = LocalDateTime.parse(yyyy_mm_dd_HH_mm, formatter);\r\n\r\n String yyyy_mm_dd_HH_mm2 = yyyy_mm_dd2 + \" \" + end_time;\r\n DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");\r\n LocalDateTime end_time_block = LocalDateTime.parse(yyyy_mm_dd_HH_mm2, formatter2);\r\n\r\n System.out.println(start_time_block + \" \" + end_time_block);\r\n\r\n\r\n // Create a TimeRange object.\r\n TimeBehaviour tr = new TimeRange(start_time_block, end_time_block);\r\n\r\n // Finally, create a new Event with the new TimeRange start and end time of the event block.\r\n Event e = new Event(event_name, event_description, event_points, tr);\r\n\r\n\r\n // Add the event to the events list of CalendarView.model.events\r\n this.calendarView.model.addEvent(e);\r\n\r\n this.calendarView.saveModel();\r\n\r\n //Success Message!\r\n this.errorLabel.setText(\"Event Added to the Calendar!\");\r\n } else {\r\n // Invalid Format of HH:mm\r\n this.errorLabel.setText(\"Invalid Start/End time of the event. Enter in HH:mm format.\");\r\n return;\r\n }\r\n\r\n }\r\n }\r\n}\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/views/EventCreatorView.java b/views/EventCreatorView.java
+--- a/views/EventCreatorView.java (revision e720e387022c58cd8397f2300c98470cc5c02a6b)
++++ b/views/EventCreatorView.java (date 1670290635499)
+@@ -34,7 +34,6 @@
+
+ CalendarView calendarView;
+
+-// CalendarModel calendarModel;
+ private Label createEventLabel = new Label("Create a new event!");
+ private TextField nameTextField = new TextField("Name");
+ private TextField pointsTextField = new TextField("Points");
+Index: views/EventEditorView.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package views;\r\n\r\nimport event.Event;\r\nimport javafx.geometry.Insets;\r\nimport javafx.scene.Scene;\r\nimport javafx.scene.control.Button;\r\nimport javafx.scene.control.DatePicker;\r\nimport javafx.scene.control.Label;\r\nimport javafx.scene.control.TextField;\r\nimport javafx.scene.layout.VBox;\r\nimport javafx.scene.text.Font;\r\nimport javafx.stage.Modality;\r\nimport javafx.stage.Stage;\r\nimport timeBehaviour.TimeBehaviour;\r\nimport timeBehaviour.TimePoint;\r\nimport timeBehaviour.TimeRange;\r\n\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.time.format.DateTimeFormatter;\r\nimport java.util.regex.Matcher;\r\nimport java.util.regex.Pattern;\r\n\r\npublic class EventEditorView {\r\n\r\n private CalendarView calendarView;\r\n private Event event;\r\n\r\n private Label editEventLabel = new Label(\"\");\r\n\r\n// private Button completeButton = new Button(\"Complete!\");\r\n private TextField nameTextField = new TextField(\"\");\r\n private TextField pointsTextField = new TextField(\"\");\r\n private TextField descTextField = new TextField(\"\");\r\n private Button changeTimeButton = new Button(\"Choose start/end time\");\r\n private DatePicker pointDatePicker = new DatePicker(LocalDate.now());\r\n private TextField pointTimePicker = new TextField(\"Time (hh:mm)\");\r\n private DatePicker startDatePicker = new DatePicker(LocalDate.now());\r\n private TextField startTimePicker = new TextField(\"Start time (hh:mm)\");\r\n private DatePicker endDatePicker = new DatePicker(LocalDate.now());\r\n private TextField endTimePicker = new TextField(\"End time (hh:mm)\");\r\n private Button saveButton = new Button(\"Save Changes\");\r\n private Label errorLabel = new Label(\"\");\r\n\r\n /**\r\n * Constructor\r\n *\r\n * @param calendarView the application's CalendarView\r\n */\r\n public EventEditorView(CalendarView calendarView, Event event) {\r\n this.calendarView = calendarView;\r\n this.event = event;\r\n\r\n final Stage dialog = new Stage();\r\n dialog.initModality(Modality.APPLICATION_MODAL);\r\n dialog.initOwner(calendarView.stage);\r\n VBox dialogVbox = new VBox(20);\r\n dialogVbox.setPadding(new Insets(20, 20, 20, 20));\r\n\r\n Font f = new Font(16);\r\n editEventLabel.setFont(f);\r\n nameTextField.setFont(f);\r\n pointsTextField.setFont(f);\r\n descTextField.setFont(f);\r\n changeTimeButton.setFont(f);\r\n pointTimePicker.setFont(f);\r\n startTimePicker.setFont(f);\r\n endTimePicker.setFont(f);\r\n saveButton.setFont(f);\r\n errorLabel.setFont(f);\r\n\r\n VBox vbox = new VBox(10, editEventLabel, nameTextField, pointsTextField, descTextField, changeTimeButton, pointDatePicker, pointTimePicker, saveButton, errorLabel);\r\n dialogVbox.getChildren().add(vbox);\r\n Scene scene = new Scene(dialogVbox, 400, 500);\r\n dialog.setScene(scene);\r\n dialog.show();\r\n dialog.setAlwaysOnTop(true);\r\n\r\n saveButton.setOnAction(e -> editEvent());\r\n\r\n changeTimeButton.setOnAction(e -> changeTime(vbox));\r\n\r\n editEventLabel.setText(\"Edit Event: \" + event.getName());\r\n nameTextField.setText(event.getName());\r\n pointsTextField.setText(String.valueOf(event.getPointValue()));\r\n descTextField.setText(event.getDescription());\r\n\r\n\r\n //If event has a time point:\r\n if(event.getTimeBehaviour() instanceof TimePoint)\r\n {\r\n TimePoint tp = (TimePoint) event.getTimeBehaviour();\r\n\r\n //set values of pointDatePicker and pointTimePicker to event's time\r\n this.pointDatePicker.setValue(tp.getTime().toLocalDate());\r\n this.pointTimePicker.setText(tp.getTime().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")).substring(11,16));\r\n }\r\n\r\n\r\n //If event has a time range:\r\n else {\r\n changeTime(vbox);\r\n\r\n //set values of startDatePicker, startTimePicker, endDatePicker and endTimePicker\r\n TimeRange tr = (TimeRange) event.getTimeBehaviour();\r\n\r\n this.startDatePicker.setValue(tr.getStartTime().toLocalDate());\r\n this.endDatePicker.setValue(tr.getEndTime().toLocalDate());\r\n\r\n this.startTimePicker.setText(tr.getStartTime().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")).substring(11,16));\r\n this.endTimePicker.setText(tr.getEndTime().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\")).substring(11,16));\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Edit the details of the event and save accordingly.\r\n */\r\n private void editEvent() {\r\n\r\n // Check if the Event's Name is not empty.\r\n if (this.nameTextField.getText().trim().isEmpty() || this.nameTextField.getText().trim().isBlank()) {\r\n this.errorLabel.setText(\"Please enter the Event Name. It can NOT be Blank!\");\r\n return;\r\n }\r\n // Check if the event name is already in the events list.\r\n else\r\n {\r\n String temp = this.nameTextField.getText().trim();\r\n for(Event i: this.calendarView.model.getAllEvents())\r\n {\r\n if (temp.equals(i.getName()))\r\n {\r\n this.errorLabel.setText(\"Event Name already taken!\");\r\n return;\r\n }\r\n }\r\n }\r\n this.event.setName(this.nameTextField.getText().trim());\r\n\r\n\r\n // Check if the Event's Description is not empty.\r\n if (this.descTextField.getText().trim().isEmpty() || this.descTextField.getText().trim().isBlank()) {\r\n this.errorLabel.setText(\"Please enter the Event's Description. It can NOT be Blank!\");\r\n return;\r\n }\r\n this.event.setDescription(this.descTextField.getText().trim());\r\n\r\n\r\n String points = String.valueOf(this.pointsTextField.getText()).trim();\r\n int event_points = 0;\r\n // Check if the Event's associated Points are of integer type.\r\n try {\r\n event_points += Integer.parseInt(points);\r\n } catch (NumberFormatException e) {\r\n this.errorLabel.setText(\"Please enter a Integer value for the points associated with the event.\");\r\n return;\r\n }\r\n this.event.setPointValue(event_points);\r\n\r\n\r\n\r\n\r\n if (this.endTimePicker.getText().trim().isBlank() || this.endTimePicker.getText().trim().isEmpty() || this.startTimePicker.getText().trim().equals(\"Start time (hh:mm)\") || this.endTimePicker.getText().trim().equals(\"End time (hh:mm)\")) {\r\n // Create a new Time Point object based on the deadline of the user.\r\n\r\n String deadline_hours = this.pointTimePicker.getText().trim();\r\n\r\n Pattern pattern = Pattern.compile(\"^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\");\r\n Matcher matcher = pattern.matcher(deadline_hours);\r\n if (matcher.find()) {\r\n // match found, valid deadline HH:mm.\r\n String yyyy_mm_dd = this.pointDatePicker.getValue().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));\r\n\r\n // TODO: Consider the case of the where the deadline is a past date.\r\n\r\n String yyyy_mm_dd_HH_mm = yyyy_mm_dd + \" \" + deadline_hours;\r\n DateTimeFormatter formatter = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");\r\n LocalDateTime pointTime = LocalDateTime.parse(yyyy_mm_dd_HH_mm, formatter);\r\n\r\n\r\n // Create a TimePoint object.\r\n TimeBehaviour tp = new TimePoint(pointTime);\r\n\r\n this.event.setTimeBehaviour(tp);\r\n\r\n// this.calendarView.saveModel();\r\n\r\n //Success Message!\r\n this.errorLabel.setText(\"Event Added to the Calendar!\");\r\n this.calendarView.saveModel();\r\n } else {\r\n // Invalid Format of HH:mm\r\n this.errorLabel.setText(\"Please Re-enter the time of the event. Enter in HH:mm format.\");\r\n return;\r\n }\r\n } else {\r\n // Create a new Time Range object based on the start-time and end-time of the user.\r\n\r\n String start_time = this.startTimePicker.getText().trim();\r\n String end_time = this.endTimePicker.getText().trim();\r\n\r\n\r\n Pattern pattern = Pattern.compile(\"^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\");\r\n\r\n Matcher matcher = pattern.matcher(start_time);\r\n Matcher matcher1 = pattern.matcher(end_time);\r\n\r\n if (matcher1.find() && matcher.find()) {\r\n // match found, valid deadline HH:mm.\r\n String yyyy_mm_dd = this.startDatePicker.getValue().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));\r\n String yyyy_mm_dd2 = this.endDatePicker.getValue().format(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));\r\n\r\n // TODO: Consider the case of the where the deadline is a past date.\r\n\r\n String yyyy_mm_dd_HH_mm = yyyy_mm_dd + \" \" + start_time;\r\n DateTimeFormatter formatter = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");\r\n LocalDateTime start_time_block = LocalDateTime.parse(yyyy_mm_dd_HH_mm, formatter);\r\n\r\n String yyyy_mm_dd_HH_mm2 = yyyy_mm_dd2 + \" \" + end_time;\r\n DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");\r\n LocalDateTime end_time_block = LocalDateTime.parse(yyyy_mm_dd_HH_mm2, formatter2);\r\n\r\n System.out.println(start_time_block + \" \" + end_time_block);\r\n\r\n\r\n // Create a TimeRange object.\r\n TimeBehaviour tr = new TimeRange(start_time_block, end_time_block);\r\n\r\n this.event.setTimeBehaviour(tr);\r\n// this.calendarView.saveModel();\r\n\r\n //Success Message!\r\n this.errorLabel.setText(\"Event Added to the Calendar!\");\r\n\r\n this.calendarView.saveModel();\r\n } else {\r\n // Invalid Format of HH:mm\r\n this.errorLabel.setText(\"Invalid Start/End time of the event. Enter in HH:mm format.\");\r\n return;\r\n }\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Switches between displaying input for time points/time ranges\r\n *\r\n * @param vbox\r\n */\r\n private void changeTime(VBox vbox) {\r\n {\r\n if (vbox.getChildren().contains(pointDatePicker)) {\r\n vbox.getChildren().remove(pointDatePicker);\r\n vbox.getChildren().remove(pointTimePicker);\r\n vbox.getChildren().remove(saveButton);\r\n vbox.getChildren().remove(errorLabel);\r\n pointDatePicker.setValue(LocalDate.now());\r\n pointTimePicker.setText(\"Time (hh:mm)\");\r\n changeTimeButton.setText(\"Choose single time\");\r\n vbox.getChildren().add(startDatePicker);\r\n vbox.getChildren().add(startTimePicker);\r\n vbox.getChildren().add(endDatePicker);\r\n vbox.getChildren().add(endTimePicker);\r\n } else {\r\n vbox.getChildren().remove(startDatePicker);\r\n vbox.getChildren().remove(startTimePicker);\r\n vbox.getChildren().remove(endDatePicker);\r\n vbox.getChildren().remove(endTimePicker);\r\n vbox.getChildren().remove(saveButton);\r\n vbox.getChildren().remove(errorLabel);\r\n startDatePicker.setValue(LocalDate.now());\r\n startTimePicker.setText(\"Start time (hh:mm)\");\r\n endDatePicker.setValue(LocalDate.now());\r\n endTimePicker.setText(\"End time (hh:mm)\");\r\n changeTimeButton.setText(\"Choose start/end time\");\r\n vbox.getChildren().add(pointDatePicker);\r\n vbox.getChildren().add(pointTimePicker);\r\n }\r\n vbox.getChildren().add(saveButton);\r\n vbox.getChildren().add(errorLabel);\r\n }\r\n }\r\n}\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/views/EventEditorView.java b/views/EventEditorView.java
+--- a/views/EventEditorView.java (revision e720e387022c58cd8397f2300c98470cc5c02a6b)
++++ b/views/EventEditorView.java (date 1670290676360)
+@@ -1,6 +1,7 @@
+ package views;
+
+ import event.Event;
++
+ import javafx.geometry.Insets;
+ import javafx.scene.Scene;
+ import javafx.scene.control.Button;
+@@ -11,6 +12,7 @@
+ import javafx.scene.text.Font;
+ import javafx.stage.Modality;
+ import javafx.stage.Stage;
++
+ import timeBehaviour.TimeBehaviour;
+ import timeBehaviour.TimePoint;
+ import timeBehaviour.TimeRange;
+@@ -18,9 +20,11 @@
+ import java.time.LocalDate;
+ import java.time.LocalDateTime;
+ import java.time.format.DateTimeFormatter;
++
+ import java.util.regex.Matcher;
+ import java.util.regex.Pattern;
+
++
+ public class EventEditorView {
+
+ private CalendarView calendarView;
+@@ -28,7 +32,6 @@
+
+ private Label editEventLabel = new Label("");
+
+-// private Button completeButton = new Button("Complete!");
+ private TextField nameTextField = new TextField("");
+ private TextField pointsTextField = new TextField("");
+ private TextField descTextField = new TextField("");
+Index: The-Hamburglars.iml
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/The-Hamburglars.iml b/The-Hamburglars.iml
+--- a/The-Hamburglars.iml (revision e720e387022c58cd8397f2300c98470cc5c02a6b)
++++ b/The-Hamburglars.iml (date 1670290593033)
+@@ -8,5 +8,37 @@
+
+
+
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+
+\ No newline at end of file
+Index: event/EventTest.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/event/EventTest.java b/event/EventTest.java
+new file mode 100644
+--- /dev/null (date 1670290593001)
++++ b/event/EventTest.java (date 1670290593001)
+@@ -0,0 +1,16 @@
++package event;
++
++import org.junit.jupiter.api.Test;
++
++
++class EventTest {
++
++ @Test
++ void complete() {
++
++ }
++
++ @Test
++ void addGoal() {
++ }
++}
+\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m___Changes_.xml
new file mode 100644
index 0000000..5b77c35
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_26_p_m___Changes_.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_28_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_28_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..db3dab8
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_28_p_m__[Changes]/shelved.patch
@@ -0,0 +1,3 @@
+diff --git a/ColorPick.fxml b/views/ColorPick.fxml
+rename from ColorPick.fxml
+rename to views/ColorPick.fxml
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_28_p_m___Changes_.xml b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_28_p_m___Changes_.xml
new file mode 100644
index 0000000..bf46aae
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-05_9_28_p_m___Changes_.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-06_3_56_p_m__[Changes]/shelved.patch b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-06_3_56_p_m__[Changes]/shelved.patch
new file mode 100644
index 0000000..5eb27e7
--- /dev/null
+++ b/.idea/shelf/Uncommitted_changes_before_Update_at_2022-12-06_3_56_p_m__[Changes]/shelved.patch
@@ -0,0 +1,107 @@
+Index: model/CalendarModel.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package model;\r\n\r\nimport event.Event;\r\nimport observer.EventObserver;\r\n\r\nimport java.time.LocalDateTime;\r\nimport java.io.Serializable;\r\nimport java.util.ArrayList;\r\n\r\n// Class to store app information behind the scene\r\npublic class CalendarModel implements Serializable {\r\n\r\n // list of events\r\n ArrayList events;\r\n\r\n // color settings\r\n public String colour;\r\n public String colour_font;\r\n\r\n // list of goals that remain the same\r\n private static ArrayList completedGoals = new ArrayList<>();\r\n\r\n\r\n // Constructor for no events\r\n public CalendarModel()\r\n {\r\n this.events = new ArrayList();\r\n }\r\n\r\n // Constructor if some events are there\r\n public CalendarModel(ArrayList events){\r\n this.events = events;\r\n }\r\n\r\n // get list of completed goals\r\n public static ArrayList getCompletedGoals() {\r\n return completedGoals;\r\n }\r\n\r\n // set completed goals\r\n public static void setCompletedGoals(ArrayList oList) {completedGoals = oList;}\r\n\r\n // add an event to the calendar\r\n public void addEvent(Event e)\r\n {\r\n this.events.add(e);\r\n }\r\n\r\n // get the list of all events\r\n public ArrayList getAllEvents(){\r\n return this.events;\r\n }\r\n\r\n // get events filtered by a date\r\n public ArrayList getEventsInTime(LocalDateTime time)\r\n {\r\n ArrayList filteredEvents = new ArrayList<>();\r\n for (Event e: this.events)\r\n if (e.getTimeBehaviour().inTime(time))\r\n {\r\n System.out.println(e.getName());\r\n filteredEvents.add(e);\r\n }\r\n return filteredEvents;\r\n }\r\n}\r\n
+Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
+<+>UTF-8
+===================================================================
+diff --git a/model/CalendarModel.java b/model/CalendarModel.java
+--- a/model/CalendarModel.java (revision f2cf53451c55d8db395986bc1d2605377a89ff82)
++++ b/model/CalendarModel.java (date 1670360126300)
+@@ -51,7 +51,9 @@
+ return this.events;
+ }
+
+- // get events filtered by a date
++ /**
++ * get events filtered by a date
++ */
+ public ArrayList getEventsInTime(LocalDateTime time)
+ {
+ ArrayList filteredEvents = new ArrayList<>();
+Index: views/CalendarView.java
+IDEA additional info:
+Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
+<+>package views;\r\n\r\nimport event.Event;\r\nimport javafx.fxml.FXML;\r\nimport javafx.collections.FXCollections;\r\nimport javafx.collections.ObservableList;\r\nimport javafx.fxml.FXMLLoader;\r\nimport javafx.geometry.Insets;\r\nimport javafx.geometry.Pos;\r\nimport javafx.scene.Node;\r\nimport javafx.scene.Parent;\r\nimport javafx.scene.Scene;\r\nimport javafx.scene.control.*;\r\nimport javafx.scene.control.Button;\r\nimport javafx.scene.control.DatePicker;\r\nimport javafx.scene.control.Label;\r\nimport javafx.scene.control.ListView;\r\nimport javafx.scene.control.skin.DatePickerSkin;\r\nimport javafx.scene.paint.Paint;\r\nimport javafx.scene.shape.Circle;\r\nimport javafx.scene.text.Font;\r\nimport javafx.stage.Modality;\r\nimport javafx.scene.layout.*;\r\nimport javafx.stage.Stage;\r\nimport model.CalendarModel;\r\nimport observer.EventObserver;\r\nimport javafx.scene.layout.*;\r\nimport javafx.stage.StageStyle;\r\n\r\n\r\nimport java.io.*;\r\nimport java.time.LocalDate;\r\nimport java.time.LocalDateTime;\r\nimport java.util.ArrayList;\r\n\r\n\r\npublic class CalendarView {\r\n\r\n //Below defines all the components we'll need\r\n\r\n //The main root\r\n Stage stage;\r\n\r\n //The model that stores event information\r\n CalendarModel model;\r\n\r\n //The sublayout that contains our calendar\r\n AnchorPane calendarLayout;\r\n\r\n //The overall layout that contains everything\r\n BorderPane realLayout;\r\n\r\n //Buttons used for functionality\r\n Button makeEventButton;\r\n Button makeGoalButton;\r\n Button changeThemeButton;\r\n Button viewGoalButton;\r\n\r\n //The calendar used to access events\r\n DatePicker calendar;\r\n\r\n //A wrapper class used to help display the calendar in a better way\r\n DatePickerSkin calendarSkin;\r\n\r\n // A node that takes the calendar and makes it always visible\r\n Node calendarDisplay;\r\n Button editButton;\r\n\r\n //Label showing the selected date\r\n Label dateDisplay;\r\n Button completeEventButton;\r\n\r\n //Variables for getting the background and text color to change window theme\r\n static Paint colour = javafx.scene.paint.Color.valueOf(\"#FFFFFF\") ;;\r\n static Paint colour_font = javafx.scene.paint.Color.valueOf(\"#000000\") ;\r\n\r\n // ListView to display event names for a specific date\r\n ListView eventsView = new ListView<>();\r\n\r\n // List to store events for a given date\r\n ArrayList events = new ArrayList<>();\r\n\r\n // static instance\r\n static CalendarView instance;\r\n\r\n //Method to implement singleton design pattern\r\n public static CalendarView getView(CalendarModel model, Stage stage){\r\n if (instance == null){\r\n instance = new CalendarView(model, stage);\r\n }\r\n return instance;\r\n }\r\n\r\n private CalendarView(CalendarModel model, Stage stage){\r\n // Get a model\r\n this.model = model;\r\n\r\n // load stored model info\r\n loadModel();\r\n this.stage = stage;\r\n\r\n // Set up the layouts\r\n this.calendarLayout = new AnchorPane();\r\n this.realLayout = new BorderPane();\r\n\r\n // Create the UI\r\n initUI();\r\n }\r\n\r\n public void loadModel() {\r\n File folder = new File(\"save/\");\r\n if (!folder.exists()) {\r\n return;\r\n }\r\n File[] fileList = folder.listFiles();\r\n assert fileList != null;\r\n for (File f : fileList) {\r\n if (f.isFile() && f.getName().equals(\"model.ser\")) {\r\n try {\r\n FileInputStream file = new FileInputStream(\"save/model.ser\");\r\n ObjectInputStream in = new ObjectInputStream(file);\r\n ArrayList