Esempio n. 1
0
 @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;
   }
 }
Esempio n. 2
0
  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);
  }
Esempio n. 3
0
 @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();
       }
   }
 }
Esempio n. 4
0
  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);
  }
Esempio n. 5
0
 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));
       }
     }
   }
 }
Esempio n. 6
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());
            }
          });
    }
  }