@Override public String getValue() { if (iCourses.getSelectedRow() < 0) { return null; } else { WebTable.Row row = iCourses.getRows()[iCourses.getSelectedRow()]; String courseName = MESSAGES.courseName(row.getCell(0).getValue(), row.getCell(1).getValue()); if ("false".equals(row.getId())) courseName = MESSAGES.courseNameWithTitle( row.getCell(0).getValue(), row.getCell(1).getValue(), row.getCell(2).getValue()); return courseName; } }
protected void scrollToSelectedRow() { if (iCourses.getSelectedRow() < 0) return; Element scroll = iCoursesPanel.getElement(); com.google.gwt.dom.client.Element item = iCourses.getTable().getRowFormatter().getElement(iCourses.getSelectedRow()); if (item == null) return; int realOffset = 0; while (item != null && !item.equals(scroll)) { realOffset += item.getOffsetTop(); item = item.getOffsetParent(); } scroll.setScrollTop(realOffset - scroll.getOffsetHeight() / 2); }
@Override public void onKeyUp(KeyUpEvent event) { if (event.getNativeKeyCode() == KeyCodes.KEY_DOWN) { iCourses.setSelectedRow(iCourses.getSelectedRow() + 1); scrollToSelectedRow(); updateCourseDetails(); } else if (event.getNativeKeyCode() == KeyCodes.KEY_UP) { iCourses.setSelectedRow( iCourses.getSelectedRow() == 0 ? iCourses.getRowsCount() - 1 : iCourses.getSelectedRow() - 1); scrollToSelectedRow(); updateCourseDetails(); } else if (event.isControlKeyDown() || event.isAltKeyDown()) { for (Map.Entry<Character, Integer> entry : iTabAccessKeys.entrySet()) if (event.getNativeKeyCode() == Character.toLowerCase(entry.getKey()) || event.getNativeKeyCode() == Character.toUpperCase(entry.getKey())) { iCourseDetailsTabPanel.selectTab(entry.getValue()); event.preventDefault(); event.stopPropagation(); } } }
protected void updateCourseDetails() { if (iCourses.getSelectedRow() < 0 || iCourses.getRows() == null || iCourses.getRows().length == 0) { if (iDetails != null) for (CourseFinderCourseDetails detail : iDetails) { detail.setValue(null); } AriaStatus.getInstance().setHTML(ARIA.courseFinderNoCourse()); } else { WebTable.Row row = iCourses.getRows()[iCourses.getSelectedRow()]; String courseName = MESSAGES.courseName(row.getCell(0).getValue(), row.getCell(1).getValue()); if ("false".equals(row.getId())) courseName = MESSAGES.courseNameWithTitle( row.getCell(0).getValue(), row.getCell(1).getValue(), row.getCell(2).getValue()); for (CourseFinderCourseDetails detail : iDetails) detail.setValue(courseName); String title = row.getCell(3).getValue(); String note = row.getCell(4).getValue(); if (title.isEmpty()) { if (note.isEmpty()) { AriaStatus.getInstance() .setHTML( ARIA.courseFinderSelected( 1 + iCourses.getSelectedRow(), iCourses.getRowsCount(), row.getCell(0).getValue(), row.getCell(1).getValue())); } else { AriaStatus.getInstance() .setHTML( ARIA.courseFinderSelectedWithNote( 1 + iCourses.getSelectedRow(), iCourses.getRowsCount(), row.getCell(0).getValue(), row.getCell(1).getValue(), note)); } } else { if (note.isEmpty()) { AriaStatus.getInstance() .setHTML( ARIA.courseFinderSelectedWithTitle( 1 + iCourses.getSelectedRow(), iCourses.getRowsCount(), row.getCell(0).getValue(), row.getCell(1).getValue(), title)); } else { AriaStatus.getInstance() .setHTML( ARIA.courseFinderSelectedWithTitleAndNote( 1 + iCourses.getSelectedRow(), iCourses.getRowsCount(), row.getCell(0).getValue(), row.getCell(1).getValue(), title, note)); } } } }