/** * Uses column parameter to determine which column needs sorting. Then it sorts the list. * * @param column */ public void setSort(int column) { if (column == columnIndices.COURSE_NAME.ordinal()) { switch (mCurrentSort) { case COURSE_NAME_ASC: mCurrentSort = sortBy.COURSE_NAME_DESC; break; case COURSE_NAME_DESC: mCurrentSort = sortBy.NONE; break; default: mCurrentSort = sortBy.COURSE_NAME_ASC; } } else if (column == columnIndices.SECTION_NUMBER.ordinal()) { switch (mCurrentSort) { case SECTION_NUMBER_ASC: mCurrentSort = sortBy.SECTION_NUMBER_DESC; break; case SECTION_NUMBER_DESC: mCurrentSort = sortBy.NONE; break; default: mCurrentSort = sortBy.SECTION_NUMBER_ASC; } } else if (column == columnIndices.INSTRUCTOR.ordinal()) { switch (mCurrentSort) { case INSTRUCTOR_ASC: mCurrentSort = sortBy.INSTRUCTOR_DESC; break; case INSTRUCTOR_DESC: mCurrentSort = sortBy.NONE; break; default: mCurrentSort = sortBy.INSTRUCTOR_ASC; } } else if (column == columnIndices.DAYS.ordinal()) { switch (mCurrentSort) { case DAYS_ASC: mCurrentSort = sortBy.DAYS_DESC; break; case DAYS_DESC: mCurrentSort = sortBy.NONE; break; default: mCurrentSort = sortBy.DAYS_ASC; } } else if (column == columnIndices.START_TIME.ordinal()) { switch (mCurrentSort) { case START_TIME_ASC: mCurrentSort = sortBy.START_TIME_DESC; break; case START_TIME_DESC: mCurrentSort = sortBy.NONE; break; default: mCurrentSort = sortBy.START_TIME_ASC; } } else if (column == columnIndices.END_TIME.ordinal()) { switch (mCurrentSort) { case END_TIME_ASC: mCurrentSort = sortBy.END_TIME_DESC; break; case END_TIME_DESC: mCurrentSort = sortBy.NONE; break; default: mCurrentSort = sortBy.END_TIME_ASC; } } sort(); drawList(); }
/** Clears the current view and draws the list using the current set of schedule items. */ public void drawList() { clear(); final StringBuilder builder = new StringBuilder(); builder.append("<div id=\"ListTableContainer\" onscroll=\"tableContainerScroll()\">"); builder.append("<table id=\"ListTable\"><tr id=\"headerRow\">"); // Add column header builder.append("<td class=\"columnHeader\" id='h'"); builder .append("onclick=\"calendarListSort(") .append(columnIndices.COURSE_NAME.ordinal()) .append(")\""); builder.append(">Course"); if (mCurrentSort == sortBy.COURSE_NAME_ASC) builder.append(" ▼"); else if (mCurrentSort == sortBy.COURSE_NAME_DESC) builder.append(" ▲"); builder.append("</td>"); builder.append("<td class=\"columnHeader\" id='h'"); builder .append("onclick=\"calendarListSort(") .append(columnIndices.SECTION_NUMBER.ordinal()) .append(")\""); builder.append(">Section Number"); if (mCurrentSort == sortBy.SECTION_NUMBER_ASC) builder.append(" ▼"); else if (mCurrentSort == sortBy.SECTION_NUMBER_DESC) builder.append(" ▲"); builder.append("</td>"); builder.append("<td class=\"columnHeader\" id='h'>Type</td>"); builder.append("<td class=\"columnHeader\" id='h'>SCU</td>"); builder.append("<td class=\"columnHeader\" id='h'>WTU</td>"); builder.append("<td class=\"columnHeader\" id='h'"); builder .append("onclick=\"calendarListSort(") .append(columnIndices.INSTRUCTOR.ordinal()) .append(")\""); builder.append(">Instructor"); if (mCurrentSort == sortBy.INSTRUCTOR_ASC) builder.append(" ▼"); else if (mCurrentSort == sortBy.INSTRUCTOR_DESC) builder.append(" ▲"); builder.append("</td>"); builder.append("<td class=\"columnHeader\" id='h'>Location</td>"); builder.append("<td class=\"columnHeader\" id='h'"); builder .append("onclick=\"calendarListSort(") .append(columnIndices.DAYS.ordinal()) .append(")\""); builder.append(">Days"); if (mCurrentSort == sortBy.DAYS_ASC) builder.append(" ▼"); else if (mCurrentSort == sortBy.DAYS_DESC) builder.append(" ▲"); builder.append("</td>"); builder.append("<td class=\"columnHeader\" id='h'"); builder .append("onclick=\"calendarListSort(") .append(columnIndices.START_TIME.ordinal()) .append(")\""); builder.append(">Start Time"); if (mCurrentSort == sortBy.START_TIME_ASC) builder.append(" ▼"); else if (mCurrentSort == sortBy.START_TIME_DESC) builder.append(" ▲"); builder.append("</td>"); builder.append("<td class=\"columnHeader\" id='h'"); builder .append("onclick=\"calendarListSort(") .append(columnIndices.END_TIME.ordinal()) .append(")\""); builder.append(">End Time"); if (mCurrentSort == sortBy.END_TIME_ASC) builder.append(" ▼"); else if (mCurrentSort == sortBy.END_TIME_DESC) builder.append(" ▲"); builder.append("</td>"); builder.append("<td class=\"columnHeader\" id='h'>Capacity</td>"); builder.append("</tr>"); int tableRow = 0; for (ScheduleItemGWT item : mScheduleItems) { int tableCol = 0; if (item.isConflicted()) { builder.append("<tr class=\"conflictedItem\">"); } else { builder.append("<tr>"); } builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">" + mScheduleController.getCourseString(item.getCourseID()) + "</td>"); tableCol++; builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">" + item.getSection() + "</td>"); tableCol++; builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">" + mScheduleController.getCourse(item.getCourseID()).getType() + "</td>"); tableCol++; builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">" + mScheduleController.getCourse(item.getCourseID()).getScu() + "</td>"); tableCol++; builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">" + mScheduleController.getCourse(item.getCourseID()).getWtu() + "</td>"); tableCol++; builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">"); if (mScheduleController.getInstructor(item.getInstructorID()) != null) { builder.append(mScheduleController.getInstructor(item.getInstructorID()).getLastName()); builder.append(", "); builder.append(mScheduleController.getInstructor(item.getInstructorID()).getFirstName()); } else { builder.append("STAFF"); } builder.append("</td>"); tableCol++; builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">"); if (mScheduleController.getLocation(item.getLocationID()) != null) { builder.append(mScheduleController.getLocation(item.getLocationID()).getRoom()); } else { builder.append("TBA"); } builder.append("</td>"); tableCol++; builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">" + getDaysString(item.getDays()) + "</td>"); tableCol++; builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">"); int startRow = CalendarTableView.getStartRow(item); if (startRow >= 0 && startRow < ScheduleEditWidget.START_TIMES.length) builder.append(ScheduleEditWidget.START_TIMES[startRow]); builder.append("</td>"); tableCol++; builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">"); int endRow = CalendarTableView.getEndRow(item) + 1; if (endRow >= 0 && endRow < ScheduleEditWidget.END_TIMES.length) builder.append(ScheduleEditWidget.END_TIMES[endRow]); builder.append("</td>"); tableCol++; builder.append( "<td " + "class=\"item\" id=\"x" + tableCol + "y" + tableRow + "\" " + "ondblclick=\"calendarListDoubleClick(" + tableRow + "," + tableCol + ")\" " + "onmousedown=\"calendarListMouseDown(" + tableRow + "," + tableCol + ")\" " + "onmouseup=\"calendarListMouseUp(" + tableRow + "," + tableCol + ")\" " + "tabindex=\"0\" " + "onkeydown=\"calendarListKeyDown(" + tableRow + ",event.which)\" " + "onselectstart=\"return false\" " + ">" + mScheduleController.getCourse(item.getCourseID()).getMaxEnroll() + "</td>"); tableCol++; builder.append("</tr>"); // builder.append("<tr height=0><td class=\"rowSpacer\" colspan=\"12\"></td></tr>"); tableRow++; } builder.append("</table>"); builder.append("</div>"); mInnerHTML = builder.toString(); setHTML(mInnerHTML); setLeftOffset(mLeftOffset); setTopOffset(mScheduleController.getWidget().getAbsoluteTop()); }