@@ -0,0 +1,3102 @@
+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 person card in the person 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 ADDRESS_FIELD_ID = %22#address%22;%0A    private static final String PHONE_FIELD_ID = %22#phone%22;%0A    private static final String EMAIL_FIELD_ID = %22#email%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 getFullName() %7B%0A        return getTextFromLabel(NAME_FIELD_ID);%0A    %7D%0A%0A    public String getAddress() %7B%0A        return getTextFromLabel(ADDRESS_FIELD_ID);%0A    %7D%0A%0A    public String getPhone() %7B%0A        return getTextFromLabel(PHONE_FIELD_ID);%0A    %7D%0A%0A    public String getEmail() %7B%0A        return getTextFromLabel(EMAIL_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 person) %7B%0A        return getFullName().equals(person.getDescription().description)%0A                && getPhone().equals(person.getPriority().value)%0A                && getEmail().equals(person.getStartDate().value)%0A                && getEmail().equals(person.getEndDate().value)%0A                && getTags().equals(getTags(person.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 getFullName().equals(handle.getFullName())%0A                    && getPhone().equals(handle.getPhone())%0A                    && getEmail().equals(handle.getEmail())%0A                    && getAddress().equals(handle.getAddress())%0A                    && getTags().equals(handle.getTags());%0A        %7D%0A        return super.equals(obj);%0A    %7D%0A%0A    @Override%0A    public String toString() %7B%0A        return getFullName() + %22 %22 + getAddress();%0A    %7D%0A%7D%0A

create TaskCardHandle.java