package seedu.flexitrack.logic.commands;

//@@author A0138455Y
/**
 * Format full help instructions for every command for display.
 */
public class HelpCommand extends Command {

    public static final String COMMAND_WORD = "help";
    public static final String COMMAND_SHORTCUT = "h";

    public static final String MESSAGE_USAGE = COMMAND_WORD  + ", Shortcut [" + COMMAND_SHORTCUT + "]" + ": Shows program usage instructions.\n" + "Example: "
            + COMMAND_WORD;

    public static final String HELP_MESSAGE_USAGE = COMMAND_WORD + ": Shows program usage instructions.\n"
            + "List of Commands: " + AddCommand.COMMAND_WORD + ", " + ClearCommand.COMMAND_WORD + ", "
            + DeleteCommand.COMMAND_WORD + ", " + EditCommand.COMMAND_WORD + ", " + ExitCommand.COMMAND_WORD + ", "
            + FindCommand.COMMAND_WORD + ", " + ListCommand.COMMAND_WORD + ", " + MarkCommand.COMMAND_WORD + ", "
            + SelectCommand.COMMAND_WORD + ", " + UnmarkCommand.COMMAND_WORD + ", " + BlockCommand.COMMAND_WORD + ", " 
            + ChangeStoragePathCommand.COMMAND_WORD + ", " + UndoCommand.COMMAND_WORD + "\n" + "Example: " + COMMAND_WORD + " "
            + ClearCommand.COMMAND_WORD;

    public static final String SHOWING_HELP_MESSAGE = "Opened help window.";
    private String userInput;

    public HelpCommand(String args) {
        this.userInput = args;
    }

    @Override
    public CommandResult execute() {
        switch (userInput) {

        case AddCommand.COMMAND_WORD:
            return new CommandResult(AddCommand.MESSAGE_USAGE);

        case SelectCommand.COMMAND_WORD:
            return new CommandResult(SelectCommand.MESSAGE_USAGE);

        case EditCommand.COMMAND_WORD:
            return new CommandResult(EditCommand.MESSAGE_USAGE);

        case DeleteCommand.COMMAND_WORD:
            return new CommandResult(DeleteCommand.MESSAGE_USAGE);

        case ClearCommand.COMMAND_WORD:
            return new CommandResult(ClearCommand.MESSAGE_USAGE);

        case FindCommand.COMMAND_WORD:
            return new CommandResult(FindCommand.MESSAGE_USAGE);

        case MarkCommand.COMMAND_WORD:
            return new CommandResult(MarkCommand.MESSAGE_USAGE);

        case UnmarkCommand.COMMAND_WORD:
            return new CommandResult(UnmarkCommand.MESSAGE_USAGE);

        case ListCommand.COMMAND_WORD:
            return new CommandResult(ListCommand.MESSAGE_USAGE);

        case ExitCommand.COMMAND_WORD:
            return new CommandResult(ExitCommand.MESSAGE_USAGE);

        case BlockCommand.COMMAND_WORD:
            return new CommandResult(BlockCommand.MESSAGE_USAGE);
            
        case UndoCommand.COMMAND_WORD:
            return new CommandResult(UndoCommand.MESSAGE_USAGE);
            
        case ChangeStoragePathCommand.COMMAND_WORD:
            return new CommandResult(ChangeStoragePathCommand.MESSAGE_USAGE);
        
        default:
            return new CommandResult(HELP_MESSAGE_USAGE);
        }
        /*
         * EventsCenter.getInstance().post(new ShowHelpRequestEvent()); return
         * new CommandResult(SHOWING_HELP_MESSAGE);
         */
    }

}

@@ -1,8 +1,29 @@
+//@@author A0138455Y%0A
 package 
@@ -56,36 +56,131 @@
 mands;%0A%0A
-//@@author A0138455Y
+import seedu.flexitrack.commons.core.EventsCenter;%0Aimport seedu.flexitrack.commons.events.ui.ShowHelpRequestEvent;%0A
 %0A/**%0A * 
@@ -1043,44 +1043,8 @@
    +
- SelectCommand.COMMAND_WORD + %22, %22 +
  Unm
@@ -1169,18 +1169,119 @@
  + %22
-, %22 + Undo
+(Change Storage Path), %22 + UndoCommand.COMMAND_WORD %0A            + %22, %22 + RedoCommand.COMMAND_WORD + %22, %22 + Gap
 Comm
@@ -1615,16 +1615,24 @@
 cute() %7B
+        
 %0A       
@@ -1761,117 +1761,8 @@
 );%0A%0A
-        case SelectCommand.COMMAND_WORD:%0A            return new CommandResult(SelectCommand.MESSAGE_USAGE);%0A%0A
     
@@ -2757,32 +2757,32 @@
 d.COMMAND_WORD:%0A
-
             retu
@@ -2835,32 +2835,264 @@
 );%0A            %0A
+        case RedoCommand.COMMAND_WORD:%0A            return new CommandResult(RedoCommand.MESSAGE_USAGE);%0A            %0A        case GapCommand.COMMAND_WORD:%0A            return new CommandResult(GapCommand.MESSAGE_USAGE);%0A            %0A
         case Cha

update help