@Override public void setTabs(CourseFinderTab... tabs) { iTabs = tabs; if (iTabs.length == 1) { if (iTabs[0].asWidget() instanceof VerticalPanel) { VerticalPanel vp = (VerticalPanel) iTabs[0].asWidget(); while (vp.getWidgetCount() > 0) { Widget w = vp.getWidget(0); vp.remove(w); iDialogPanel.add(w); } } else { iDialogPanel.add(iTabs[0].asWidget()); } } else { iTabPanel = new UniTimeTabPanel(); int tabIndex = 0; for (CourseFinderTab tab : iTabs) { iTabPanel.add(tab.asWidget(), tab.getName(), true); Character ch = UniTimeHeaderPanel.guessAccessKey(tab.getName()); if (ch != null) iTabAccessKeys.put(ch, tabIndex); tabIndex++; } iTabPanel.selectTab(0); iDialogPanel.add(iTabPanel); } for (final CourseFinderTab tab : iTabs) { tab.addValueChangeHandler( new ValueChangeHandler<String>() { @Override public void onValueChange(ValueChangeEvent<String> event) { if (event.getSource().equals(tab)) selectTab(tab); else tab.setValue(event.getValue()); iFilter.setValue(event.getValue()); } }); tab.addSelectionHandler( new SelectionHandler<String>() { @Override public void onSelection(SelectionEvent<String> event) { iFilter.setValue(event.getSelectedItem()); hide(); SelectionEvent.fire(CourseFinderDialog.this, getValue()); } }); tab.addResponseHandler( new ResponseHandler() { @Override public void onResponse(ResponseEvent event) { if (event.isValid()) { CourseFinderTab selected = getSelectedTab(); if (selected != null && selected.isCourseSelection() && selected.getValue() != null) return; selectTab(tab); } } }); } }
private void selectLastTab() { try { int tab = Integer.valueOf(Cookies.getCookie("UniTime:CourseFinderCourses")); if (tab >= 0 || tab < iCourseDetailsTabPanel.getTabCount() && tab != iCourseDetailsTabPanel.getSelectedTab()) iCourseDetailsTabPanel.selectTab(tab); else iCourseDetailsTabPanel.selectTab(0); } catch (Exception e) { iCourseDetailsTabPanel.selectTab(0); } }
protected void selectTab(CourseFinderTab tab) { if (iTabs != null && iTabs.length > 1) { for (int i = 0; i < iTabs.length; i++) { if (tab.equals(iTabs[i])) { iTabPanel.selectTab(i); break; } } } }
@Override public void setCourseDetails(CourseFinderCourseDetails... details) { iDetails = details; int tabIndex = 0; for (CourseFinderCourseDetails detail : iDetails) { ScrollPanel panel = new ScrollPanel(detail.asWidget()); panel.setStyleName("unitime-ScrollPanel-inner"); panel.getElement().getStyle().setWidth(780, Unit.PX); panel.getElement().getStyle().setHeight(200, Unit.PX); iCourseDetailsTabPanel.add(panel, detail.getName(), true); Character ch = UniTimeHeaderPanel.guessAccessKey(detail.getName()); if (ch != null) iTabAccessKeys.put(ch, tabIndex); tabIndex++; } selectLastTab(); }
@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(); } } }
public CourseFinderCourses() { super(); iCourses = new WebTable(); iCourses.setHeader( new WebTable.Row( new WebTable.Cell(MESSAGES.colSubject(), 1, "80px"), new WebTable.Cell(MESSAGES.colCourse(), 1, "80px"), new WebTable.Cell(MESSAGES.colLimit(), 1, "60px"), new WebTable.Cell(MESSAGES.colTitle(), 1, "300px"), new WebTable.Cell(MESSAGES.colCredit(), 1, "60px"), new WebTable.Cell(MESSAGES.colNote(), 1, "300px"))); iCourses.addRowDoubleClickHandler( new WebTable.RowDoubleClickHandler() { public void onRowDoubleClick(WebTable.RowDoubleClickEvent event) { iCourses.setSelectedRow(event.getRowIdx()); updateCourseDetails(); SelectionEvent.fire(CourseFinderCourses.this, getValue()); } }); iCourses.addRowClickHandler( new WebTable.RowClickHandler() { public void onRowClick(WebTable.RowClickEvent event) { iCourses.setSelectedRow(event.getRowIdx()); updateCourseDetails(); } }); iCoursesPanel = new ScrollPanel(iCourses); iCoursesPanel.getElement().getStyle().setWidth(780, Unit.PX); iCoursesPanel.getElement().getStyle().setHeight(200, Unit.PX); iCoursesPanel.setStyleName("unitime-ScrollPanel"); iCoursesTip = new Label(CONSTANTS.courseTips()[(int) (Math.random() * CONSTANTS.courseTips().length)]); iCoursesTip.setStyleName("unitime-Hint"); ToolBox.disableTextSelectInternal(iCoursesTip.getElement()); iCoursesTip.addClickHandler( new ClickHandler() { public void onClick(ClickEvent event) { String oldText = iCoursesTip.getText(); do { iCoursesTip.setText( CONSTANTS.courseTips()[(int) (Math.random() * CONSTANTS.courseTips().length)]); } while (oldText.equals(iCoursesTip.getText())); } }); iCourseDetailsTabPanel = new UniTimeTabPanel(); iCourseDetailsTabPanel.setDeckStyleName("unitime-TabPanel"); iCourseDetailsTabPanel.addSelectionHandler( new SelectionHandler<Integer>() { @Override public void onSelection(SelectionEvent<Integer> event) { Cookies.setCookie( "UniTime:CourseFinderCourses", String.valueOf(event.getSelectedItem())); } }); setSpacing(10); add(iCoursesPanel); add(iCourseDetailsTabPanel); add(iCoursesTip); }
protected CourseFinderTab getSelectedTab() { if (iTabs == null) return null; if (iTabs.length == 1) return iTabs[0]; else return iTabs[iTabPanel.getSelectedTab()]; }