Esempio n. 1
0
  @Override
  public void setValue(String value, final boolean fireEvents) {
    if (value == null || value.isEmpty()) {
      iLastQuery = null;
      iCourses.clearData(true);
      iCourses.setEmptyMessage(MESSAGES.courseSelectionNoCourseFilter());
      updateCourseDetails();
    } else if (!value.equals(iLastQuery)) {
      iLastQuery = value;
      iDataProvider.getData(
          value,
          new AsyncCallback<Collection<ClassAssignmentInterface.CourseAssignment>>() {
            public void onFailure(Throwable caught) {
              iCourses.clearData(true);
              iCourses.setEmptyMessage(caught.getMessage());
              if (isVisible()) AriaStatus.getInstance().setText(caught.getMessage());
              updateCourseDetails();
              ResponseEvent.fire(CourseFinderCourses.this, false);
            }

            public void onSuccess(Collection<ClassAssignmentInterface.CourseAssignment> result) {
              WebTable.Row[] records = new WebTable.Row[result.size()];
              int idx = 0;
              int selectRow = -1;
              for (ClassAssignmentInterface.CourseAssignment record : result) {
                records[idx] =
                    new WebTable.Row(
                        record.getSubject(),
                        record.getCourseNbr(),
                        (record.getLimit() == null
                                || record.getLimit() == 0
                                || record.getEnrollment() == null
                            ? ""
                            : record.getLimit() < 0
                                ? "&infin;"
                                : (record.getLimit() - record.getEnrollment())
                                    + " / "
                                    + record.getLimit()),
                        (record.getTitle() == null ? "" : record.getTitle()),
                        (record.hasCredit() ? record.getCreditAbbv() : ""),
                        (record.getNote() == null ? "" : record.getNote()));
                if (record.hasCredit()) records[idx].getCell(4).setTitle(record.getCreditText());
                records[idx].setId(record.hasUniqueName() ? "true" : "false");
                if (iLastQuery.equalsIgnoreCase(
                        MESSAGES.courseName(record.getSubject(), record.getCourseNbr()))
                    || (record.getTitle() != null
                        && iLastQuery.equalsIgnoreCase(
                            MESSAGES.courseNameWithTitle(
                                record.getSubject(), record.getCourseNbr(), record.getTitle()))))
                  selectRow = idx;
                if (record.getTitle() == null || record.getTitle().isEmpty()) {
                  if (record.getNote() == null || record.getNote().isEmpty()) {
                    records[idx].setAriaLabel(
                        ARIA.courseFinderCourse(record.getSubject(), record.getCourseNbr()));
                  } else {
                    records[idx].setAriaLabel(
                        ARIA.courseFinderCourseWithNote(
                            record.getSubject(), record.getCourseNbr(), record.getNote()));
                  }
                } else {
                  if (record.getNote() == null || record.getNote().isEmpty()) {
                    records[idx].setAriaLabel(
                        ARIA.courseFinderCourseWithTitle(
                            record.getSubject(), record.getCourseNbr(), record.getTitle()));
                  } else {
                    records[idx].setAriaLabel(
                        ARIA.courseFinderCourseWithTitleAndNote(
                            record.getSubject(),
                            record.getCourseNbr(),
                            record.getTitle(),
                            record.getNote()));
                  }
                }
                idx++;
              }
              iCourses.setData(records);
              if (records.length == 1) selectRow = 0;
              if (selectRow >= 0) {
                iCourses.setSelectedRow(selectRow);
                scrollToSelectedRow();
                if (fireEvents) ValueChangeEvent.fire(CourseFinderCourses.this, getValue());
              }
              updateCourseDetails();
              ResponseEvent.fire(CourseFinderCourses.this, !result.isEmpty());
            }
          });
    }
  }