@@ -0,0 +1,3101 @@
+package guitests.guihandles;%0A%0Aimport java.util.List;%0Aimport java.util.stream.Collectors;%0A%0Aimport guitests.GuiRobot;%0Aimport javafx.scene.Node;%0Aimport javafx.scene.control.Labeled;%0Aimport javafx.scene.layout.Region;%0Aimport javafx.stage.Stage;%0Aimport seedu.address.model.tag.UniqueTagList;%0Aimport seedu.address.model.task.ReadOnlyTask;%0A%0A/**%0A * Provides a handle to a task card in the task list panel.%0A */%0Apublic class TaskCardHandle extends GuiHandle %7B%0A    private static final String NAME_FIELD_ID = %22#name%22;%0A    private static final String DEADLINE_FIELD_ID = %22#deadline%22;%0A    private static final String DESCRIPTION_FIELD_ID = %22#description%22;%0A    private static final String ID_FIELD_ID = %22#id%22;%0A    private static final String TAGS_FIELD_ID = %22#tags%22;%0A%0A    private Node node;%0A%0A    public TaskCardHandle(GuiRobot guiRobot, Stage primaryStage, Node node) %7B%0A        super(guiRobot, primaryStage, null);%0A        this.node = node;%0A    %7D%0A%0A    protected String getTextFromLabel(String fieldId) %7B%0A        return getTextFromLabel(fieldId, node);%0A    %7D%0A%0A    public String getName() %7B%0A        return getTextFromLabel(NAME_FIELD_ID);%0A    %7D%0A%0A    public String getDeadline() %7B%0A        return getTextFromLabel(DEADLINE_FIELD_ID);%0A    %7D%0A%0A    public String getDescription() %7B%0A        return getTextFromLabel(DESCRIPTION_FIELD_ID);%0A    %7D%0A%0A    public String getID() %7B%0A        return getTextFromLabel(ID_FIELD_ID);%0A    %7D%0A%0A    public List%3CString%3E getTags() %7B%0A        return getTags(getTagsContainer());%0A    %7D%0A%0A    private List%3CString%3E getTags(Region tagsContainer) %7B%0A        return tagsContainer%0A                .getChildrenUnmodifiable()%0A                .stream()%0A                .map(node -%3E ((Labeled) node).getText())%0A                .collect(Collectors.toList());%0A    %7D%0A%0A    private List%3CString%3E getTags(UniqueTagList tags) %7B%0A        return tags%0A                .asObservableList()%0A                .stream()%0A                .map(tag -%3E tag.tagName)%0A                .collect(Collectors.toList());%0A    %7D%0A%0A    private Region getTagsContainer() %7B%0A        return guiRobot.from(node).lookup(TAGS_FIELD_ID).query();%0A    %7D%0A%0A    public boolean isSameTask(ReadOnlyTask task) %7B%0A        return getName().equals(task.getName().name)%0A                && getDeadline().equals(task.getDeadline().date.toString())%0A                && getDescription().equals(task.getDescription().description)%0A                && getID().equals(task.getID().value.toString())%0A                && getTags().equals(getTags(task.getTags()));%0A    %7D%0A%0A    @Override%0A    public boolean equals(Object obj) %7B%0A        if (obj instanceof TaskCardHandle) %7B%0A            TaskCardHandle handle = (TaskCardHandle) obj;%0A            return getName().equals(handle.getName())%0A                    && getDeadline().equals(handle.getDeadline())%0A                    && getDescription().equals(handle.getDescription())%0A                    && getID().equals(handle.getID())%0A                    && getTags().equals(handle.getTags());%0A        %7D%0A        return super.equals(obj);%0A    %7D%0A%0A    @Override%0A    public String toString() %7B%0A        return getName() + %22 %22 + getID();%0A    %7D%0A%7D%0A

Add TaskCardHandle class