public void filterTasks(String text) {
   if (text.equals("")) {
     if (allTaskSummaries != null) {
       dataProvider.getList().clear();
       dataProvider.setList(new ArrayList<TaskSummary>(allTaskSummaries));
       dataProvider.refresh();
     }
     if (currentDayTasks != null) {
       view.getTaskListMultiDayBox().clear();
       for (Day day : currentDayTasks.keySet()) {
         view.getTaskListMultiDayBox()
             .addTasksByDay(day, new ArrayList<TaskSummary>(currentDayTasks.get(day)));
       }
       view.getTaskListMultiDayBox().refresh();
     }
   } else {
     if (allTaskSummaries != null) {
       List<TaskSummary> tasks = new ArrayList<TaskSummary>(allTaskSummaries);
       List<TaskSummary> filteredTasksSimple = new ArrayList<TaskSummary>();
       for (TaskSummary ts : tasks) {
         if (ts.getName().toLowerCase().contains(text.toLowerCase())) {
           filteredTasksSimple.add(ts);
         }
       }
       dataProvider.getList().clear();
       dataProvider.setList(filteredTasksSimple);
       dataProvider.refresh();
     }
     if (currentDayTasks != null) {
       Map<Day, List<TaskSummary>> tasksCalendar =
           new HashMap<Day, List<TaskSummary>>(currentDayTasks);
       Map<Day, List<TaskSummary>> filteredTasksCalendar = new HashMap<Day, List<TaskSummary>>();
       view.getTaskListMultiDayBox().clear();
       for (Day d : tasksCalendar.keySet()) {
         if (filteredTasksCalendar.get(d) == null) {
           filteredTasksCalendar.put(d, new ArrayList<TaskSummary>());
         }
         for (TaskSummary ts : tasksCalendar.get(d)) {
           if (ts.getName().toLowerCase().contains(text.toLowerCase())) {
             filteredTasksCalendar.get(d).add(ts);
           }
         }
       }
       for (Day day : filteredTasksCalendar.keySet()) {
         view.getTaskListMultiDayBox()
             .addTasksByDay(day, new ArrayList<TaskSummary>(filteredTasksCalendar.get(day)));
       }
       view.getTaskListMultiDayBox().refresh();
     }
   }
 }
  @Override
  public void getData(Range visibleRange) {
    if (!isAddingDefaultFilters()) {
      ColumnSortList columnSortList = view.getListGrid().getColumnSortList();
      if (currentFilter == null) {
        currentFilter =
            new PortableQueryFilter(
                visibleRange.getStart(),
                visibleRange.getLength(),
                false,
                "",
                (columnSortList.size() > 0)
                    ? columnSortList.get(0).getColumn().getDataStoreName()
                    : "",
                (columnSortList.size() > 0) ? columnSortList.get(0).isAscending() : true);
      }
      // If we are refreshing after a search action, we need to go back to offset 0
      if (currentFilter.getParams() == null
          || currentFilter.getParams().isEmpty()
          || currentFilter.getParams().get("textSearch") == null
          || currentFilter.getParams().get("textSearch").equals("")) {
        currentFilter.setOffset(visibleRange.getStart());
        currentFilter.setCount(visibleRange.getLength());
        currentFilter.setFilterParams("");
      } else {
        currentFilter.setFilterParams(
            "(LOWER(t.name) like '"
                + currentFilter.getParams().get("textSearch")
                + "' or LOWER(t.description) like '"
                + currentFilter.getParams().get("textSearch")
                + "') ");
        currentFilter.setOffset(0);
        currentFilter.setCount(view.getListGrid().getPageSize());
      }

      if (currentStatusFilter == null) {
        currentFilter.getParams().put("statuses", TaskUtils.getStatusByType(currentStatusFilter));
      } else {
        currentFilter.getParams().put("statuses", currentStatuses);
      }
      currentFilter.getParams().put("filter", currentStatusFilter.toString());
      currentFilter.getParams().put("userId", identity.getIdentifier());
      currentFilter.getParams().put("taskRole", currentRole);
      currentFilter.setOrderBy(
          (columnSortList.size() > 0) ? columnSortList.get(0).getColumn().getDataStoreName() : "");
      currentFilter.setIsAscending(
          (columnSortList.size() > 0) ? columnSortList.get(0).isAscending() : true);

      taskQueryService
          .call(
              new RemoteCallback<PageResponse<TaskSummary>>() {
                @Override
                public void callback(PageResponse<TaskSummary> response) {
                  updateDataOnCallback(response);
                }
              },
              new ErrorCallback<Message>() {
                @Override
                public boolean error(Message message, Throwable throwable) {
                  view.hideBusyIndicator();
                  view.displayNotification("Error: Getting Tasks: " + throwable.toString());
                  GWT.log(message.toString());
                  return true;
                }
              })
          .getData(currentFilter);
    }
  }
 public void formClosed(@Observes BeforeClosePlaceEvent closed) {
   if (closed.getPlace().getIdentifier().equals("Form Display")
       || closed.getPlace().getIdentifier().equals("Quick New Task")) {
     view.refreshTasks();
   }
 }