@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 ? "∞" : (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()); } }); } }