Skip to content

Commit

Permalink
Finalise features
Browse files Browse the repository at this point in the history
  • Loading branch information
oliviajohansen committed Sep 15, 2020
1 parent de55308 commit 4cdfde5
Show file tree
Hide file tree
Showing 14 changed files with 57 additions and 16 deletions.
19 changes: 18 additions & 1 deletion src/main/java/duke/Duke.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package duke;

import java.util.ArrayList;

import java.util.Timer;
import java.util.TimerTask;
import duke.command.Command;
import duke.task.TaskList;
import duke.task.DukeException;
Expand Down Expand Up @@ -33,6 +34,22 @@ protected String greet() {
return ui.greet();
}

/**
* Delay the exit of duke for user to see the Duke's response for 2 seconds
*/
//Solution below adapted from https://stackoverflow.com/questions/15747277/how-to-make-java-program-exit-after-a-couple-of-seconds
public void delayExit() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {

@Override
public void run() {
System.exit(0);
}
}, 2000);
}


public Duke() {
String filePath = "data/duke.txt";
storage = new Storage(filePath);
Expand Down
8 changes: 3 additions & 5 deletions src/main/java/duke/MainWindow.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
package duke;

import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.ImagePattern;
import javafx.scene.shape.Circle;

/**
* Controller for MainWindow. Provides the layout for the other controls.
Expand Down Expand Up @@ -37,7 +34,7 @@ public void setDuke(Duke d) {
duke = d;
dialogContainer.getChildren().addAll(DialogBox.getDukeDialog(duke.greet(), dukeImage));
}

/**
* Creates two dialog boxes, one echoing user input and the other containing Duke's reply and then appends them to
* the dialog container. Clears the user input after processing.
Expand All @@ -51,8 +48,9 @@ private void handleUserInput() {
DialogBox.getDukeDialog(response, dukeImage)
);
userInput.clear();

if (response.equals("Duke heard: Bye. Hope to see you again soon!")) {
System.exit(0);
duke.delayExit();
}
}
}
3 changes: 3 additions & 0 deletions src/main/java/duke/command/AddTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@

import java.util.ArrayList;

/**
* Represents add task command.
*/
public class AddTask extends Command {

Type type;
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/duke/command/Command.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@

import java.util.ArrayList;

/**
* Abstract representation of all commands.
*/
public abstract class Command {

public abstract String execute(ArrayList<Task> tasks, Layout layout);
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/duke/command/Exit.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package duke.command;

import duke.io.Layout;
import duke.io.Parser;
import duke.io.Storage;
import duke.task.Task;

import java.util.ArrayList;

/**
* Represents exit command.
*/
public class Exit extends Command {

Storage storage;
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/duke/command/FindTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

import java.util.ArrayList;

/**
* Represent find task by task description command.
*/
public class FindTask extends Command {

String [] input;
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/duke/command/FindTaskByDate.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

import java.util.ArrayList;

/**
* Represent find task by date command.
*/
public class FindTaskByDate extends Command {
String [] input;
public FindTaskByDate(String [] input) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/duke/command/Help.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
public class Help extends Command {

/**
* Return all valid commands that Duke can execute.
* Represent help command and return all valid commands.
*/
@Override
public String execute(ArrayList<Task> tasks, Layout layout) {
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/duke/command/ManageTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

import java.util.ArrayList;

/**
* Represent a task manager. Can mark a task as done and delete a task.
*/
public class ManageTask extends Command {
private Action type;
private String inputIndex;
Expand Down
16 changes: 14 additions & 2 deletions src/main/java/duke/io/Parser.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
import java.time.LocalDate;
import java.util.ArrayList;

/**
* Represents a class to format user input.
*/
public class Parser {

/**
Expand Down Expand Up @@ -143,11 +146,18 @@ private static String checkTime(String str) {
if (len == 4 && tryStringToInteger(str) != null) {
int time = tryStringToInteger(str);
String period = "am";
if (time >= 1200) {
if (time > 2359 || tryStringToInteger(str.substring(2)) > 59 ) {
//Case: 2400 || 1360
return null;
}
else if (time >= 1200) {
period = "pm";
formattedTime += (time - 1200);
} else if (str.substring(0, 2).equals("00")) {
//Case: 0012
formattedTime += "12" + str.substring(2);
} else {
formattedTime += time;
formattedTime += time;
}
formattedTime = formattedTime + period;
return formattedTime;
Expand Down Expand Up @@ -202,8 +212,10 @@ private static String formatTime(String t) {
}
} else {
if (splitArr[1].length() == 3) {
//Case: 8.2pm
return splitArr[0] + "." + splitArr[1].substring(0, 1) + "0" + splitArr[1].substring(1,3);
} else {
//Case: 8.20pm
return t;
}
}
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/duke/task/DateAndTimeFormatter.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;

/**
* Format date and time.
*/
public class DateAndTimeFormatter {
ArrayList<Object> dateAndTime;

Expand Down
1 change: 0 additions & 1 deletion src/main/java/duke/task/Event.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import duke.io.Parser;

import java.time.LocalDate;
import java.util.ArrayList;

/**
* Represents a specific task with event details.
Expand Down
3 changes: 0 additions & 3 deletions src/main/java/duke/task/Task.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package duke.task;

import duke.io.Parser;

import java.util.ArrayList;
import java.util.Arrays;

/**
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/duke/task/TaskList.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,9 @@
import duke.command.Help;
import duke.command.ManageTask;
import duke.command.ShowTasks;
import duke.io.Layout;
import duke.io.Storage;

import java.util.ArrayList;
import java.util.Scanner;

/**
* Represents a current task list manager.
Expand Down

0 comments on commit 4cdfde5

Please sign in to comment.