List of usage examples for com.google.gwt.user.client DOM createTHead
public static Element createTHead()
From source file:org.obiba.opal.web.gwt.app.client.ui.DefaultFlexTable.java
License:Open Source License
public DefaultFlexTable() { head = DOM.createTHead(); headerTr = DOM.createTR();//from w ww . ja v a 2s . co m DOM.insertChild(getElement(), head, 0); DOM.insertChild(head, headerTr, 0); setStyled(true); setCondensed(true); setZebra(true); setBordered(true); }
From source file:org.unitime.timetable.gwt.client.events.EventResourceTimetable.java
License:Apache License
public EventResourceTimetable(PageType type) { iHistoryToken = new HistoryToken(type); iType = type;//from w ww . j av a2 s .c om iFilter = new SimpleForm(2); iFilter.removeStyleName("unitime-NotPrintableBottomLine"); iFilter.getColumnFormatter().setWidth(0, "120px"); iFilterHeader = new UniTimeHeaderPanel(MESSAGES.sectFilter()); iLookup = new Lookup(); iLookup.setOptions("mustHaveExternalId"); iLookup.addValueChangeHandler(new ValueChangeHandler<PersonInterface>() { @Override public void onValueChange(ValueChangeEvent<PersonInterface> event) { if (event.getValue() != null) { iResources.setText(event.getValue().getId()); resourceTypeChanged(true); } } }); iFilterHeader.addButton("lookup", MESSAGES.buttonLookup(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { iLookup.center(); } }); iFilterHeader.setEnabled("lookup", false); iFilterHeader.addButton("add", MESSAGES.buttonAddEvent(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { iEventAdd.setEvent(null); iEventAdd.show(); } }); iFilterHeader.setEnabled("add", false); iFilter.addHeaderRow(iFilterHeader); iFilterHeader.addButton("clear", MESSAGES.buttonClear(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { // Event filter iEvents.setValue(iHistoryToken.getDefaultParameter("events", ""), true); // Room filter iRooms.setValue(iHistoryToken.getDefaultParameter("rooms", ""), true); // Resource type if (!"true".equals(iHistoryToken.getParameter("fixedType", "false"))) { String typeString = iHistoryToken.getDefaultParameter("type", "room"); if (typeString != null) for (int idx = 0; idx < iResourceTypes.getItemCount(); idx++) { if (iResourceTypes.getValue(idx).equalsIgnoreCase(typeString)) { iResourceTypes.setSelectedIndex(idx); } } } // Subject, curriculum, department, etc. iResources.setValue(iHistoryToken.getDefaultParameter("name", "")); // Room selection iLocRoom = iHistoryToken.getDefaultParameter("room", ""); // Week selection iLocDate = iHistoryToken.getDefaultParameter("date", ""); hideResults(); changeUrl(); UniTimePageLabel.getInstance().setPageName(getPageName()); resourceTypeChanged(false); } }); iFilterHeader.setEnabled("clear", "true".equals(iHistoryToken.getParameter("showClear", "true"))); iFilterHeader.addButton("search", MESSAGES.buttonSearch(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { resourceTypeChanged(true); } }); iSession = new AcademicSessionSelectionBox(iHistoryToken.getParameter("term"), "Events") { @Override protected void onInitializationSuccess(List<AcademicSession> sessions) { iFilter.setVisible(sessions != null && !sessions.isEmpty()); UniTimePageHeader.getInstance().getRight().setVisible(false); UniTimePageHeader.getInstance().getRight().setPreventDefault(true); } @Override protected void onInitializationFailure(Throwable caught) { UniTimeNotifications.error(MESSAGES.failedLoadSessions(caught.getMessage()), caught); } }; iSession.setFilter(this); iSessionRow = iFilter.addRow(MESSAGES.propAcademicSession(), iSession); iEvents = new EventFilterBox(iSession); if ("true".equals(iHistoryToken.getParameter("showFilter", "true"))) iFilter.addRow(MESSAGES.propEventFilter(), iEvents); iRooms = new RoomFilterBox(iSession); if ("true".equals(iHistoryToken.getParameter("showFilter", "true"))) iFilter.addRow(MESSAGES.propRoomFilter(), iRooms); iResourceTypes = new ListBox(); for (ResourceType resource : ResourceType.values()) { if (resource.isVisible()) iResourceTypes.addItem(resource.getResourceType(CONSTANTS), resource.name()); } iResourceTypes.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { iResources.setText(""); UniTimePageLabel.getInstance().setPageName(getPageName()); hideResults(); if (iProperties != null) resourceTypeChanged(isShowingResults()); } }); int row = iFilter.addRow(MESSAGES.propResourceType(), iResourceTypes); if ("true".equals(iHistoryToken.getParameter("fixedType", "false"))) iFilter.getRowFormatter().setVisible(row, false); iResources = new SuggestBox(new SuggestOracle() { @Override public void requestDefaultSuggestions(Request request, Callback callback) { requestSuggestions(request, callback); } @Override public void requestSuggestions(final Request request, final Callback callback) { if (iSession.getAcademicSessionId() != null) { RPC.execute( ResourceLookupRpcRequest.findResources(iSession.getAcademicSessionId(), ResourceType .valueOf(iResourceTypes.getValue(iResourceTypes.getSelectedIndex())), request.getQuery(), request.getLimit()), new AsyncCallback<GwtRpcResponseList<ResourceInterface>>() { @Override public void onFailure(final Throwable caught) { ArrayList<Suggestion> suggestions = new ArrayList<Suggestion>(); suggestions.add(new Suggestion() { @Override public String getDisplayString() { return "<font color='red'>" + caught.getMessage() + "</font>"; } @Override public String getReplacementString() { return ""; } }); callback.onSuggestionsReady(request, new Response(suggestions)); ToolBox.checkAccess(caught); } @Override public void onSuccess(GwtRpcResponseList<ResourceInterface> result) { ArrayList<Suggestion> suggestions = new ArrayList<Suggestion>(); for (ResourceInterface resource : result) { suggestions.add(new ResourceSuggestion(resource)); } callback.onSuggestionsReady(request, new Response(suggestions)); } }); } } @Override public boolean isDisplayStringHTML() { return true; } }); iResources.getValueBox().addFocusHandler(new FocusHandler() { @Override public void onFocus(FocusEvent event) { iResources.showSuggestionList(); } }); iResourcesRow = iFilter.addRow(MESSAGES.propResource(), iResources); iResources.addSelectionHandler(new SelectionHandler<Suggestion>() { public void onSelection(SelectionEvent<Suggestion> event) { if (event.getSelectedItem() instanceof ResourceSuggestion) { resourceChanged(((ResourceSuggestion) event.getSelectedItem()).getResource()); } } }); iFilter.getRowFormatter().setVisible(iResourcesRow, false); iResourceTypes.setSelectedIndex(ResourceType.ROOM.ordinal()); iPanel = new SimpleForm(2); iPanel.removeStyleName("unitime-NotPrintableBottomLine"); iPanel.addRow(iFilter); iHeader = new UniTimeHeaderPanel(); iPanel.addHeaderRow(iHeader); iWeekPanel = new WeekSelector(iSession); iWeekPanel.addValueChangeHandler(new ValueChangeHandler<WeekSelector.Interval>() { @Override public void onValueChange(ValueChangeEvent<WeekSelector.Interval> e) { iLocDate = iWeekPanel.getSelection(); tabOrDataChanged(true); } }); iWeekPanel.setFilter(new WeekSelector.Filter<WeekInterface>() { @Override public boolean filter(WeekInterface week) { return !iMatchingWeeks.contains(week.getDayOfYear()); } @Override public boolean isEmpty() { return iMatchingRooms.isEmpty(); } }); iRoomPanel = new RoomSelector(); iRoomPanel.setFilter(new WeekSelector.Filter<ResourceInterface>() { @Override public boolean filter(ResourceInterface room) { return !iMatchingRooms.contains(room.getId()); } @Override public boolean isEmpty() { return iMatchingRooms.isEmpty(); } }); iTabBar = new AriaTabBar(); iTabBar.addTab(MESSAGES.tabGrid(), true); iTabBar.addTab(MESSAGES.tabEventTable(), true); iTabBar.addTab(MESSAGES.tabMeetingTable(), true); iTabBar.addSelectionHandler(new SelectionHandler<Integer>() { @Override public void onSelection(SelectionEvent<Integer> event) { tabOrDataChanged(true); } }); iGridOrTablePanel = new SimplePanel(); iGridOrTablePanel.setStyleName("unitime-TabPanel"); final Character gridAccessKey = UniTimeHeaderPanel.guessAccessKey(MESSAGES.tabGrid()); final Character eventsAccessKey = UniTimeHeaderPanel.guessAccessKey(MESSAGES.tabEventTable()); final Character meetingsAccessKey = UniTimeHeaderPanel.guessAccessKey(MESSAGES.tabMeetingTable()); if (gridAccessKey != null || eventsAccessKey != null || meetingsAccessKey != null) { RootPanel.get().addDomHandler(new KeyUpHandler() { @Override public void onKeyUp(KeyUpEvent event) { if (!iRootPanel.getWidget().equals(iPanel)) return; int tab = -1; if (gridAccessKey != null && event.getNativeEvent().getCtrlKey() && (event.getNativeKeyCode() == gridAccessKey || event.getNativeKeyCode() == Character.toUpperCase(gridAccessKey))) { tab = 0; } if (eventsAccessKey != null && event.getNativeEvent().getCtrlKey() && (event.getNativeKeyCode() == eventsAccessKey || event.getNativeKeyCode() == Character.toUpperCase(eventsAccessKey))) { tab = 1; } if (meetingsAccessKey != null && event.getNativeEvent().getCtrlKey() && (event.getNativeKeyCode() == meetingsAccessKey || event.getNativeKeyCode() == Character.toUpperCase(meetingsAccessKey))) { tab = 2; } if (tab >= 0) { iTabBar.selectTab(tab); event.preventDefault(); } } }, KeyUpEvent.getType()); } iDockPanel = new DockPanel(); iDockPanel.setStyleName("unitime-EventResults"); iDockPanel.setSpacing(0); iDockPanel.add(iGridOrTablePanel, DockPanel.SOUTH); iDockPanel.add(iRoomPanel, DockPanel.WEST); iDockPanel.setCellHorizontalAlignment(iRoomPanel, HasHorizontalAlignment.ALIGN_LEFT); iDockPanel.add(iTabBar, DockPanel.CENTER); iDockPanel.setCellVerticalAlignment(iTabBar, HasVerticalAlignment.ALIGN_BOTTOM); iDockPanel.setCellHorizontalAlignment(iTabBar, HasHorizontalAlignment.ALIGN_CENTER); iDockPanel.add(iWeekPanel, DockPanel.EAST); iDockPanel.setCellHorizontalAlignment(iWeekPanel, HasHorizontalAlignment.ALIGN_RIGHT); Roles.getTabpanelRole().set(iDockPanel.getElement()); Roles.getTabpanelRole().setAriaOwnsProperty(iDockPanel.getElement(), Id.of(iTabBar.getElement())); iPanel.addRow(iDockPanel); hideResults(); iFooter = iHeader.clonePanel(); iPanel.addRow(iFooter); iRootPanel = new SimplePanel(iPanel); initWidget(iRootPanel); iRoomPanel.addValueChangeHandler(new ValueChangeHandler<IntervalSelector<ResourceInterface>.Interval>() { @Override public void onValueChange(ValueChangeEvent<IntervalSelector<ResourceInterface>.Interval> e) { iLocRoom = iRoomPanel.getSelection(); tabOrDataChanged(true); } }); for (int i = 1; i < iPanel.getRowCount(); i++) iPanel.getRowFormatter().setVisible(i, false); iHeader.addButton("add", MESSAGES.buttonAddEvent(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { iEventAdd.setEvent(null); iEventAdd.show(); } }); iHeader.setEnabled("add", false); iHeader.addButton("print", MESSAGES.buttonPrint(), 75, new ClickHandler() { @Override public void onClick(ClickEvent clickEvent) { final EventMeetingTable table = new EventMeetingTable( getSelectedTab() <= 1 ? EventMeetingTable.Mode.ListOfEvents : EventMeetingTable.Mode.ListOfMeetings, false, EventResourceTimetable.this); table.setMeetingFilter(EventResourceTimetable.this); table.setShowMainContact(iProperties != null && iProperties.isCanLookupMainContact()); table.setEvents(iData); table.setSortBy(iTable.getSortBy()); table.getElement().getStyle().setWidth(1040, Unit.PX); int firstSlot = 84, lastSlot = 216; boolean skipDays = iEvents.hasChip(new FilterBox.Chip("day", null)); boolean hasDay[] = new boolean[] { !skipDays || iEvents.hasChip(new FilterBox.Chip("day", CONSTANTS.longDays()[0])), !skipDays || iEvents.hasChip(new FilterBox.Chip("day", CONSTANTS.longDays()[1])), !skipDays || iEvents.hasChip(new FilterBox.Chip("day", CONSTANTS.longDays()[2])), !skipDays || iEvents.hasChip(new FilterBox.Chip("day", CONSTANTS.longDays()[3])), !skipDays || iEvents.hasChip(new FilterBox.Chip("day", CONSTANTS.longDays()[4])), iEvents.hasChip(new FilterBox.Chip("day", CONSTANTS.longDays()[5])), iEvents.hasChip(new FilterBox.Chip("day", CONSTANTS.longDays()[6])) }; for (EventInterface event : iData) { if (event.getType() == EventType.Unavailabile && !iEvents.hasChip(new Chip("type", "Not Available"))) continue; for (MeetingInterface meeting : event.getMeetings()) { if (filterEvent(event, meeting)) continue; if (meeting.getApprovalStatus() != ApprovalStatus.Pending && meeting.getApprovalStatus() != ApprovalStatus.Approved) continue; if (firstSlot > meeting.getStartSlot()) firstSlot = meeting.getStartSlot(); if (lastSlot < meeting.getEndSlot()) lastSlot = meeting.getEndSlot(); hasDay[meeting.getDayOfWeek()] = true; } } Chip after = iEvents.getChip("after"); if (after != null) { Integer slot = TimeUtils.parseTime(CONSTANTS, after.getValue(), null); if (slot != null && firstSlot > slot) firstSlot = slot; } Chip before = iEvents.getChip("before"); if (before != null) { Integer slot = TimeUtils.parseTime(CONSTANTS, before.getValue(), firstSlot); if (slot != null && lastSlot < slot) lastSlot = slot; } int nrDays = 0; for (boolean d : hasDay) if (d) nrDays++; int days[] = new int[nrDays]; int d = 0; for (int i = 0; i < 7; i++) if (hasDay[i]) days[d++] = i; int firstHour = firstSlot / 12; int lastHour = 1 + (lastSlot - 1) / 12; if (firstHour <= 7 && firstHour > 0 && ((firstSlot % 12) <= 6)) firstHour--; HashMap<Long, String> colors = new HashMap<Long, String>(); final TimeGrid tg = new TimeGrid(colors, days, (int) (1000 / nrDays), 55, true, false, (firstHour < 7 ? firstHour : 7), (lastHour > 18 ? lastHour : 18), EventResourceTimetable.this); tg.setResourceType(getResourceType()); tg.setSelectedWeeks(iWeekPanel.getSelected()); tg.setRoomResources(iRoomPanel.getSelected()); tg.setMode(gridMode()); tg.showVerticalSplit(); for (EventInterface event : sortedEvents()) { List<MeetingInterface> meetings = new ArrayList<MeetingInterface>(); for (MeetingInterface meeting : event.getMeetings()) { if (meeting.getApprovalStatus() != ApprovalStatus.Pending && meeting.getApprovalStatus() != ApprovalStatus.Approved) continue; if (meeting.getMeetingDate() != null && !filterEvent(event, meeting)) meetings.add(meeting); } if (!meetings.isEmpty()) tg.addEvent(event, meetings); } if (iWeekPanel.getValue() != null) tg.labelDays(iWeekPanel.getValue().getFirst(), iWeekPanel.getValue().getLast()); // Move header row to thead Element headerRow = table.getRowFormatter().getElement(0); Element tableElement = table.getElement(); Element thead = DOM.createTHead(); tableElement.insertFirst(thead); headerRow.getParentElement().removeChild(headerRow); thead.appendChild(headerRow); ToolBox.print(new ToolBox.Page() { @Override public String getName() { return iHeader.getHeaderTitle(); } @Override public String getUser() { return iRoomPanel.getValue().toString(); } @Override public String getSession() { return iWeekPanel.getValue().toString(); } @Override public Element getBody() { return tg.getElement(); } }, new ToolBox.Page() { @Override public String getName() { return iHeader.getHeaderTitle(); } @Override public String getUser() { return iRoomPanel.getValue().toString(); } @Override public String getSession() { return iWeekPanel.getValue().toString(); } @Override public Element getBody() { return table.getElement(); } }); } }); iHeader.addButton("export", MESSAGES.buttonExport(), 75, new ClickHandler() { @Override public void onClick(ClickEvent clickEvent) { if (iProperties != null && iProperties.isCanExportCSV()) { final PopupPanel popup = new PopupPanel(true); MenuBar menu = new MenuBar(true); MenuItem exportPdf = new MenuItem(MESSAGES.opExportPDF(), true, new Command() { @Override public void execute() { popup.hide(); export("output=" + (getSelectedTab() <= 1 ? "events" : "meetings") + ".pdf&flags=" + EventCookie.getInstance().getFlags(), true); } }); exportPdf.getElement().getStyle().setCursor(Cursor.POINTER); menu.addItem(exportPdf); MenuItem exportCsv = new MenuItem(MESSAGES.opExportCSV(), true, new Command() { @Override public void execute() { popup.hide(); export("output=" + (getSelectedTab() <= 1 ? "events" : "meetings") + ".csv&flags=" + EventCookie.getInstance().getFlags(), true); } }); exportCsv.getElement().getStyle().setCursor(Cursor.POINTER); menu.addItem(exportCsv); MenuItem exportIcs = new MenuItem(MESSAGES.opExportICalendar(), true, new Command() { @Override public void execute() { popup.hide(); copyToClipboard( "output=events.ics" + (iType == PageType.Personal ? "&e:flag=All+Sessions" : ""), iType == PageType.Personal); } }); exportIcs.getElement().getStyle().setCursor(Cursor.POINTER); menu.addItem(exportIcs); popup.add(menu); popup.showRelativeTo((UIObject) clickEvent.getSource()); menu.focus(); } else { export("output=events.ics", false); } } }); iHeader.addButton("operations", MESSAGES.buttonMoreOperations(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { final PopupPanel popup = new PopupPanel(true); iTable.getHeader(0).setMenu(popup); popup.showRelativeTo((UIObject) event.getSource()); ((MenuBar) popup.getWidget()).focus(); } }); iHeader.setEnabled("print", false); iHeader.setEnabled("export", false); iHeader.setEnabled("operations", false); iSession.addAcademicSessionChangeHandler(new AcademicSessionChangeHandler() { @Override public void onAcademicSessionChange(AcademicSessionChangeEvent event) { loadProperties(new AsyncCallback<EventPropertiesRpcResponse>() { @Override public void onFailure(Throwable caught) { } @Override public void onSuccess(EventPropertiesRpcResponse result) { if (!iInitialized) setup(true); else resourceTypeChanged(isShowingResults()); } }); } }); iEventDetail = new EventDetail(this) { @Override protected void onHide() { iRootPanel.setWidget(iPanel); UniTimePageLabel.getInstance().setPageName(getPageName()); if (!isShowingResults()) resourceTypeChanged(true); changeUrl(); } @Override protected void onShow() { iBack.clear(); if (iTable != null) iTable.clearHover(); iRootPanel.setWidget(iEventDetail); changeUrl(); } @Override protected void edit() { super.hide(); iEventAdd.setEvent(getEvent()); iEventAdd.show(); } @Override protected EventInterface getPrevious(Long eventId) { return iTable.previous(eventId); } @Override protected EventInterface getNext(Long eventId) { return iTable.next(eventId); } @Override protected void previous(final EventInterface event) { iBack.add(getEvent()); LoadingWidget.execute( EventDetailRpcRequest.requestEventDetails(iSession.getAcademicSessionId(), event.getId()), new AsyncCallback<EventInterface>() { @Override public void onFailure(Throwable caught) { UniTimeNotifications .error(MESSAGES.failedLoad(event.getName(), caught.getMessage()), caught); } @Override public void onSuccess(EventInterface result) { LoadingWidget.getInstance().hide(); setEvent(result); changeUrl(); } }, MESSAGES.waitLoading(event.getName())); } @Override protected void next(final EventInterface event) { previous(event); } @Override public void hide() { if (!iBack.isEmpty()) { EventInterface last = iBack.remove(iBack.size() - 1); setEvent(last); } else { super.hide(); } } @Override protected void onApprovalOrReject(Long eventId, EventInterface event) { if (iData != null) populate(tinker(new GwtRpcResponseList<EventInterface>(iData), eventId, event)); } }; iEventAdd = new EventAdd(iSession, this) { @Override protected void onHide() { iSession.setFilter(EventResourceTimetable.this); iFilter.setWidget(iSessionRow, 1, iSession); final EventInterface modified = iEventAdd.getEvent(), detail = iEventDetail.getEvent(), saved = iEventAdd.getSavedEvent(); if (saved != null) { if (iData != null) populate(tinker(new GwtRpcResponseList<EventInterface>(iData), (saved.getId() == null ? modified.getId() : saved.getId()), saved)); if (saved.getId() != null) { iEventDetail.setEvent(saved); iEventDetail.show(); } else { iRootPanel.setWidget(iPanel); UniTimePageLabel.getInstance().setPageName(getPageName()); } } else if (modified != null && detail != null && detail.getId().equals(modified.getId())) { LoadingWidget.execute(EventDetailRpcRequest.requestEventDetails(iSession.getAcademicSessionId(), modified.getId()), new AsyncCallback<EventInterface>() { @Override public void onFailure(Throwable caught) { UniTimeNotifications.error( MESSAGES.failedLoad(detail.getName(), caught.getMessage()), caught); } @Override public void onSuccess(EventInterface result) { LoadingWidget.getInstance().hide(); if (result == null) { iRootPanel.setWidget(iPanel); UniTimePageLabel.getInstance().setPageName(getPageName()); } else { iEventDetail.setEvent(result); iEventDetail.show(); } } }, MESSAGES.waitLoading(detail.getName())); } else { iRootPanel.setWidget(iPanel); UniTimePageLabel.getInstance().setPageName(getPageName()); } changeUrl(); } @Override protected void onShow() { if (iTable != null) iTable.clearHover(); iRootPanel.setWidget(iEventAdd); changeUrl(); } }; iMeetingClickHandler = new MeetingClickHandler() { @Override public void onMeetingClick(final MeetingClickEvent event) { if (!event.getEvent().isCanView()) return; LoadingWidget.execute(EventDetailRpcRequest.requestEventDetails(iSession.getAcademicSessionId(), event.getEvent().getId()), new AsyncCallback<EventInterface>() { @Override public void onFailure(Throwable caught) { UniTimeNotifications.error( MESSAGES.failedLoad(event.getEvent().getName(), caught.getMessage()), caught); } @Override public void onSuccess(EventInterface result) { LoadingWidget.getInstance().hide(); iEventDetail.setEvent(result); iEventDetail.show(); } }, MESSAGES.waitLoading(event.getEvent().getName())); } }; iTable = new EventMeetingTable(EventMeetingTable.Mode.ListOfEvents, true, this) { @Override protected void onSortByChanded(EventComparator.EventMeetingSortBy sortBy, boolean asc) { changeUrl(); } @Override protected void onColumnShownOrHid(int eventCookieFlags) { changeUrl(); } }; iTable.setMeetingFilter(this); iTable.addMouseClickListener(new MouseClickListener<EventMeetingRow>() { @Override public void onMouseClick(final TableEvent<EventMeetingRow> event) { if (event.getData() == null) return; final EventInterface e = event.getData().getEvent(); if (e == null || !e.isCanView()) return; LoadingWidget.execute( EventDetailRpcRequest.requestEventDetails(iSession.getAcademicSessionId(), e.getId()), new AsyncCallback<EventInterface>() { @Override public void onFailure(Throwable caught) { UniTimeNotifications.error(MESSAGES.failedLoad(e.getName(), caught.getMessage()), caught); } @Override public void onSuccess(EventInterface result) { LoadingWidget.getInstance().hide(); iEventDetail.setEvent(result); iEventDetail.show(); } }, MESSAGES.waitLoading(e.getName())); } }); iApproveDialog = new ApproveDialog(this) { @Override protected void onSubmit(ApproveEventRpcRequest.Operation operation, List<EventMeetingRow> data, String message, boolean emailConfirmation) { Map<EventInterface, List<MeetingInterface>> event2meetings = new HashMap<EventInterface, List<MeetingInterface>>(); List<EventInterface> events = new ArrayList<EventInterface>(); for (EventMeetingRow row : data) { if (row.getMeeting() != null) { List<MeetingInterface> meetings = event2meetings.get(row.getEvent()); if (meetings == null) { meetings = new ArrayList<EventInterface.MeetingInterface>(); event2meetings.put(row.getEvent(), meetings); events.add(row.getEvent()); } meetings.add(row.getMeeting()); } else { events.add(row.getEvent()); } } onSubmit(operation, events.iterator(), event2meetings, message, emailConfirmation, new GwtRpcResponseList<EventInterface>(iData)); } protected void onSubmit(final ApproveEventRpcRequest.Operation operation, final Iterator<EventInterface> events, final Map<EventInterface, List<MeetingInterface>> event2meetings, final String message, final boolean emailConfirmation, final GwtRpcResponseList<EventInterface> data) { if (events.hasNext()) { final EventInterface event = events.next(); List<MeetingInterface> meetings = event2meetings.get(event); if (meetings == null) { meetings = new ArrayList<MeetingInterface>(); for (MeetingInterface meeting : event.getMeetings()) { switch (operation) { case APPROVE: case REJECT: if (meeting.isCanApprove() && !filter(event, meeting)) meetings.add(meeting); break; case CANCEL: if (meeting.isCanCancel() && !filter(event, meeting)) meetings.add(meeting); break; case INQUIRE: if (meeting.isCanInquire() && !filter(event, meeting)) meetings.add(meeting); break; } } } if (meetings.isEmpty()) { onSubmit(operation, events, event2meetings, message, emailConfirmation, data); } else { switch (operation) { case APPROVE: LoadingWidget.getInstance().show(MESSAGES.waitForApproval(event.getName())); break; case INQUIRE: LoadingWidget.getInstance().show(MESSAGES.waitForInquiry(event.getName())); break; case REJECT: LoadingWidget.getInstance().show(MESSAGES.waitForRejection(event.getName())); break; case CANCEL: LoadingWidget.getInstance().show(MESSAGES.waitForCancellation(event.getName())); break; } RPC.execute( ApproveEventRpcRequest.createRequest(operation, iSession.getAcademicSessionId(), event, meetings, message, emailConfirmation), new AsyncCallback<SaveOrApproveEventRpcResponse>() { @Override public void onFailure(Throwable caught) { LoadingWidget.getInstance().hide(); UniTimeNotifications.error(caught); onSubmit(operation, events, event2meetings, message, emailConfirmation, data); } @Override public void onSuccess(SaveOrApproveEventRpcResponse result) { LoadingWidget.getInstance().hide(); if (result.hasMessages()) for (MessageInterface m : result.getMessages()) { if (m.isError()) UniTimeNotifications.warn(m.getMessage()); else if (m.isWarning()) UniTimeNotifications.error(m.getMessage()); else UniTimeNotifications.info(m.getMessage()); } switch (operation) { case APPROVE: case REJECT: case CANCEL: tinker(data, event.getId(), result.getEvent()); } onSubmit(operation, events, event2meetings, message, emailConfirmation, data); } }); } } else { LoadingWidget.getInstance().hide(); populate(data); } } }; iTable.setOperation(EventMeetingTable.OperationType.Approve, iApproveDialog); iTable.setOperation(EventMeetingTable.OperationType.Reject, iApproveDialog); iTable.setOperation(EventMeetingTable.OperationType.Inquire, iApproveDialog); iTable.setOperation(EventMeetingTable.OperationType.Cancel, iApproveDialog); History.addValueChangeHandler(new ValueChangeHandler<String>() { @Override public void onValueChange(ValueChangeEvent<String> event) { if (iInitialized) { if ("event=add".equals(event.getValue())) iHistoryToken.parse(event.getValue()); else iHistoryToken.reset(event.getValue()); setup(false); if (LoadingWidget.getInstance().isShowing()) LoadingWidget.getInstance().hide(); } } }); }
From source file:org.unitime.timetable.gwt.client.hql.SavedHQLPage.java
License:Apache License
public SavedHQLPage() { iAppearance = Window.Location.getParameter("appearance"); if ("courses".equalsIgnoreCase(iAppearance)) { UniTimePageLabel.getInstance().setPageName(MESSAGES.pageCourseReports()); } else if ("exams".equalsIgnoreCase(iAppearance)) { UniTimePageLabel.getInstance().setPageName(MESSAGES.pageExaminationReports()); } else if ("sectioning".equalsIgnoreCase(iAppearance)) { UniTimePageLabel.getInstance().setPageName(MESSAGES.pageStudentSectioningReports()); } else if ("events".equalsIgnoreCase(iAppearance)) { UniTimePageLabel.getInstance().setPageName(MESSAGES.pageEventReports()); } else if ("administration".equalsIgnoreCase(iAppearance)) { UniTimePageLabel.getInstance().setPageName(MESSAGES.pageAdministrationReports()); } else {//from w ww . j av a2 s . c o m iAppearance = "courses"; UniTimePageLabel.getInstance().setPageName(MESSAGES.pageCourseReports()); } iForm = new SimpleForm(2); iForm.removeStyleName("unitime-NotPrintableBottomLine"); iHeader = new UniTimeHeaderPanel(MESSAGES.sectFilter()); iHeader.addButton("execute", MESSAGES.buttonExecute(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { iFirstLine = 0; iLastSort = 0; execute(); } }); iHeader.addButton("print", MESSAGES.buttonPrint(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { HQLExecuteRpcRequest request = new HQLExecuteRpcRequest(); Long id = Long.valueOf( iQuerySelector.getWidget().getValue(iQuerySelector.getWidget().getSelectedIndex())); for (SavedHQLInterface.Query q : iQueries) { if (id.equals(q.getId())) { request.setQuery(q); break; } } if (request.getQuery() == null) { iHeader.setErrorMessage(MESSAGES.errorNoReportSelected()); return; } final SimpleForm form = new SimpleForm(); form.addHeaderRow(request.getQuery().getName()); if (!request.getQuery().getDescription().isEmpty()) form.addRow(MESSAGES.propDescription(), new HTML(request.getQuery().getDescription())); for (int i = 0; i < iOptions.size(); i++) { SavedHQLInterface.Option option = iOptions.get(i); if (request.getQuery().getQuery().contains("%" + option.getType() + "%")) { ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget(); String value = ""; String values = ""; boolean allSelected = true; if (list.isMultipleSelect()) { for (int j = 0; j < list.getItemCount(); j++) if (list.isItemSelected(j)) { if (!value.isEmpty()) { value += ","; values += ", "; } value += list.getValue(j); values += list.getItemText(j); } else { allSelected = false; } if (allSelected) values = MESSAGES.itemAll(); } else if (list.getSelectedIndex() > 0) { value = list.getValue(list.getSelectedIndex()); values = list.getItemText(list.getSelectedIndex()); } if (value.isEmpty()) { iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(option.getName())); return; } request.addOption(option.getType(), value); form.addRow(option.getName() + ":", new Label(values, true)); } } LoadingWidget.getInstance().show(MESSAGES.waitExecuting(request.getQuery().getName())); request.setFromRow(0); request.setMaxRows(10000); RPC.execute(request, new AsyncCallback<Table>() { @Override public void onFailure(Throwable caught) { iTableHeader.setErrorMessage(caught.getMessage(), true); LoadingWidget.getInstance().hide(); } @Override public void onSuccess(Table result) { LoadingWidget.getInstance().hide(); if (result == null || result.size() <= 1) { iTableHeader.setMessage(MESSAGES.errorNoResults()); return; } final UniTimeTable<String[]> table = new UniTimeTable<String[]>(); String firstField = null; int nrCols = 0; for (int i = 0; i < result.size(); i++) { String[] row = result.get(i); List<Widget> line = new ArrayList<Widget>(); if (i == 0) { firstField = row[0]; nrCols = row.length; for (String x : row) { final String name = x.replace('_', ' ').trim(); UniTimeTableHeader h = new UniTimeTableHeader(name, 1); line.add(h); } } else { for (String x : row) { line.add(new HTML(x == null ? "" : x.replace("\\n", "<br>"))); } } table.addRow(i == 0 ? null : row, line); } if (firstField != null && firstField.startsWith("__")) table.setColumnVisible(0, false); if (iLastSort != 0 && Math.abs(iLastSort) <= nrCols) { table.sort(table.getHeader(Math.abs(iLastSort) - 1), new Comparator<String[]>() { @Override public int compare(String[] o1, String[] o2) { return SavedHQLPage.compare(o1, o2, Math.abs(iLastSort) - 1); } }, iLastSort > 0); } table.getElement().getStyle().setWidth(1040, Unit.PX); // Move header row to thead Element headerRow = table.getRowFormatter().getElement(0); Element tableElement = table.getElement(); Element thead = DOM.createTHead(); tableElement.insertFirst(thead); headerRow.getParentElement().removeChild(headerRow); thead.appendChild(headerRow); final Element div = DOM.createDiv(); div.appendChild(form.getElement()); div.appendChild(table.getElement()); String name = MESSAGES.pageCourseReports(); if ("courses".equalsIgnoreCase(iAppearance)) { name = MESSAGES.pageCourseReports(); } else if ("exams".equalsIgnoreCase(iAppearance)) { name = MESSAGES.pageExaminationReports(); } else if ("sectioning".equalsIgnoreCase(iAppearance)) { name = MESSAGES.pageStudentSectioningReports(); } else if ("events".equalsIgnoreCase(iAppearance)) { name = MESSAGES.pageEventReports(); } else if ("administration".equalsIgnoreCase(iAppearance)) { name = MESSAGES.pageAdministrationReports(); } final String pageName = name; ToolBox.print(new ToolBox.Page() { @Override public String getName() { return pageName; } @Override public String getUser() { return ""; } @Override public String getSession() { return ""; } @Override public Element getBody() { return div; } }); } }); } }); iHeader.addButton("export", MESSAGES.buttonExportCSV(), 85, new ClickHandler() { @Override public void onClick(ClickEvent event) { Long id = Long.valueOf( iQuerySelector.getWidget().getValue(iQuerySelector.getWidget().getSelectedIndex())); SavedHQLInterface.Query query = null; for (SavedHQLInterface.Query q : iQueries) { if (id.equals(q.getId())) { query = q; break; } } if (query == null) { iHeader.setErrorMessage(MESSAGES.errorNoReportSelected()); return; } String params = ""; for (int i = 0; i < iOptions.size(); i++) { SavedHQLInterface.Option option = iOptions.get(i); if (query.getQuery().contains("%" + option.getType() + "%")) { ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget(); String value = ""; boolean allSelected = true; if (list.isMultipleSelect()) { for (int j = 0; j < list.getItemCount(); j++) if (list.isItemSelected(j)) { if (!value.isEmpty()) value += ","; value += list.getValue(j); } else { allSelected = false; } } else if (list.getSelectedIndex() > 0) { value = list.getValue(list.getSelectedIndex()); } if (value.isEmpty()) { iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(option.getName())); return; } if (!params.isEmpty()) params += ":"; params += (list.isMultipleSelect() && allSelected ? "" : value); } } String reportId = iQuerySelector.getWidget() .getValue(iQuerySelector.getWidget().getSelectedIndex()); RPC.execute(EncodeQueryRpcRequest.encode( "output=hql-report.csv&report=" + reportId + "¶ms=" + params + "&sort=" + iLastSort), new AsyncCallback<EncodeQueryRpcResponse>() { @Override public void onFailure(Throwable caught) { } @Override public void onSuccess(EncodeQueryRpcResponse result) { ToolBox.open(GWT.getHostPageBaseURL() + "export?q=" + result.getQuery()); } }); } }); iHeader.addButton("edit", MESSAGES.buttonEdit(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { SavedHQLInterface.Query query = null; Long id = Long.valueOf( iQuerySelector.getWidget().getValue(iQuerySelector.getWidget().getSelectedIndex())); for (SavedHQLInterface.Query q : iQueries) { if (id.equals(q.getId())) { query = q; break; } } if (query == null) { iHeader.setErrorMessage(MESSAGES.errorNoReportSelected()); return; } openDialog(query); } }); iHeader.addButton("add", MESSAGES.buttonAddNew(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { openDialog(null); } }); iForm.addHeaderRow(iHeader); iHeader.setEnabled("execute", false); iHeader.setEnabled("edit", false); iHeader.setEnabled("add", false); iHeader.setEnabled("print", false); iHeader.setEnabled("export", false); iForm.getColumnFormatter().setWidth(0, "120px"); iForm.getColumnFormatter().setWidth(1, "100%"); iQuerySelector = new UniTimeWidget<ListBox>(new ListBox()); iForm.addRow(MESSAGES.propReport(), iQuerySelector); iQuerySelector.getWidget().addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { iQuerySelector.clearHint(); iQuerySelector.setPrintText( iQuerySelector.getWidget().getItemText(iQuerySelector.getWidget().getSelectedIndex())); queryChanged(); } }); iDescription = new HTML(""); iForm.addRow(MESSAGES.propDescription(), iDescription); iForm.getCellFormatter().setVerticalAlignment(2, 0, HasVerticalAlignment.ALIGN_TOP); LoadingWidget.getInstance().show(MESSAGES.waitLoadingReports()); RPC.execute(new HQLOptionsRpcRequest(), new AsyncCallback<HQLOptionsInterface>() { @Override public void onFailure(Throwable caught) { iHeader.setErrorMessage(caught.getMessage()); LoadingWidget.getInstance().hide(); ToolBox.checkAccess(caught); } @Override public void onSuccess(HQLOptionsInterface result) { iFlags = result.getFlags(); iOptions = result.getOptions(); iHeader.setEnabled("add", result.isEditable()); for (int i = 0; i < iOptions.size(); i++) { SavedHQLInterface.Option option = iOptions.get(i); ListBox list = new ListBox(); list.setMultipleSelect(option.isMultiSelect()); if (!option.isMultiSelect()) list.addItem(MESSAGES.itemSelect(), "-1"); for (SavedHQLInterface.IdValue v : option.values()) list.addItem(v.getText(), v.getValue()); final UniTimeWidget<ListBox> u = new UniTimeWidget<ListBox>(list); iForm.addRow(option.getName() + ":", u); iForm.getCellFormatter().setVerticalAlignment(3 + i, 0, HasVerticalAlignment.ALIGN_TOP); iForm.getRowFormatter().setVisible(3 + i, false); if (list.isMultipleSelect()) { for (int j = 0; j < list.getItemCount(); j++) list.setItemSelected(j, true); u.setPrintText(MESSAGES.itemAll()); } else if (list.getItemCount() == 2) { list.setSelectedIndex(1); u.setPrintText(list.getItemText(1)); } list.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { u.clearHint(); String selected = ""; boolean hasAll = true; for (int i = 0; i < u.getWidget().getItemCount(); i++) { if (u.getWidget().isItemSelected(i)) { if (!selected.isEmpty()) selected += ","; selected += u.getWidget().getItemText(i); } else hasAll = false; } if (hasAll && u.getWidget().getItemCount() > 5) selected = MESSAGES.itemAll(); if (selected.length() > 150) selected = selected.substring(0, 147) + "..."; u.setPrintText(selected); iHeader.clearMessage(); } }); } iTableHeader = new UniTimeHeaderPanel(MESSAGES.sectResults()); iTableHeader.addButton("previous", MESSAGES.buttonPrevious(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { iFirstLine -= 100; execute(); } }); iTableHeader.addButton("next", MESSAGES.buttonNext(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { iFirstLine += 100; execute(); } }); iTableHeader.setEnabled("previous", false); iTableHeader.setEnabled("next", false); iForm.addHeaderRow(iTableHeader); iForm.addRow(iTable); iForm.addBottomRow(iHeader.clonePanel("")); loadQueries(null, true); } }); iTable.addMouseClickListener(new UniTimeTable.MouseClickListener<String[]>() { @Override public void onMouseClick(UniTimeTable.TableEvent<String[]> event) { if (event.getRow() > 0 && event.getData() != null) { if ("__Class".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "classDetail.do?cid=" + event.getData()[0]); else if ("__Offering".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "instructionalOfferingDetail.do?op=view&io=" + event.getData()[0]); else if ("__Subpart".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "schedulingSubpartDetail.do?ssuid=" + event.getData()[0]); else if ("__Room".equals(iFirstField)) ToolBox.open( GWT.getHostPageBaseURL() + "gwt.jsp?page=rooms&back=1&id=" + event.getData()[0]); else if ("__Instructor".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "instructorDetail.do?instructorId=" + event.getData()[0]); else if ("__Exam".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "examDetail.do?examId=" + event.getData()[0]); else if ("__Event".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "gwt.jsp?page=events#event=" + event.getData()[0]); } } }); initWidget(iForm); History.addValueChangeHandler(new ValueChangeHandler<String>() { @Override public void onValueChange(ValueChangeEvent<String> event) { reload(event.getValue()); } }); }
From source file:org.unitime.timetable.gwt.client.pointintimedata.PointInTimeDataReportsPage.java
License:Apache License
public PointInTimeDataReportsPage() { UniTimePageLabel.getInstance().setPageName(MESSAGES.pagePointInTimeDataReports()); iForm = new SimpleForm(2); iForm.removeStyleName("unitime-NotPrintableBottomLine"); iHeader = new UniTimeHeaderPanel(MESSAGES.sectFilter()); iHeader.addButton("execute", MESSAGES.buttonExecute(), 75, new ClickHandler() { @Override// w ww . ja v a2 s .c o m public void onClick(ClickEvent event) { iLastSort = 0; execute(); } }); iHeader.addButton("print", MESSAGES.buttonPrint(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { PITDExecuteRpcRequest request = new PITDExecuteRpcRequest(); String id = iReportSelector.getWidget().getValue(iReportSelector.getWidget().getSelectedIndex()); for (PointInTimeDataReportsInterface.Report q : iReports) { if (id.equals(q.getId())) { request.setReport(q); break; } } if (request.getReport() == null) { iHeader.setErrorMessage(MESSAGES.errorNoReportSelected()); return; } final SimpleForm form = new SimpleForm(); form.addHeaderRow(request.getReport().getName()); if (!request.getReport().getDescription().isEmpty()) form.addRow(MESSAGES.propDescription(), new HTML(request.getReport().getDescription())); for (int i = 0; i < iParameters.size(); i++) { PointInTimeDataReportsInterface.Parameter parameter = iParameters.get(i); if (request.getReport().parametersContain(parameter.getType())) { if (parameter.isTextField()) { TextBox textBox = ((UniTimeWidget<TextBox>) iForm.getWidget(3 + i, 1)).getWidget(); String value = textBox.getText(); if (value.isEmpty()) { iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(parameter.getName())); return; } request.addParameter(parameter.getType(), value); form.addRow(parameter.getName() + ":", new Label(value, true)); } else { ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget(); String value = ""; String values = ""; boolean allSelected = true; if (list.isMultipleSelect()) { for (int j = 0; j < list.getItemCount(); j++) if (list.isItemSelected(j)) { if (!value.isEmpty()) { value += ","; values += ", "; } value += list.getValue(j); values += list.getItemText(j); } else { allSelected = false; } if (allSelected) values = MESSAGES.itemAll(); } else if (list.getSelectedIndex() > 0) { value = list.getValue(list.getSelectedIndex()); values = list.getItemText(list.getSelectedIndex()); } if (value.isEmpty()) { iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(parameter.getName())); return; } request.addParameter(parameter.getType(), value); form.addRow(parameter.getName() + ":", new Label(values, true)); } } } LoadingWidget.getInstance().show(MESSAGES.waitExecuting(request.getReport().getName())); RPC.execute(request, new AsyncCallback<Table>() { @Override public void onFailure(Throwable caught) { iTableHeader.setErrorMessage(caught.getMessage()); LoadingWidget.getInstance().hide(); } @Override public void onSuccess(Table result) { LoadingWidget.getInstance().hide(); if (result == null || result.size() <= 1) { iTableHeader.setMessage(MESSAGES.errorNoResults()); return; } final UniTimeTable<String[]> table = new UniTimeTable<String[]>(); String firstField = null; int nrCols = 0; for (int i = 0; i < result.size(); i++) { String[] row = result.get(i); List<Widget> line = new ArrayList<Widget>(); if (i == 0) { firstField = row[0]; nrCols = row.length; for (String x : row) { final String name = x.replace('_', ' ').trim(); UniTimeTableHeader h = new UniTimeTableHeader(name, 1); line.add(h); } } else { for (String x : row) { line.add(new HTML(x == null ? "" : x.replace("\\n", "<br>"))); } } table.addRow(i == 0 ? null : row, line); } if (firstField != null && firstField.startsWith("__")) table.setColumnVisible(0, false); if (iLastSort != 0 && Math.abs(iLastSort) <= nrCols) { table.sort(table.getHeader(Math.abs(iLastSort) - 1), new Comparator<String[]>() { @Override public int compare(String[] o1, String[] o2) { return PointInTimeDataReportsPage.compare(o1, o2, Math.abs(iLastSort) - 1); } }, iLastSort > 0); } table.getElement().getStyle().setWidth(1040, Unit.PX); // Move header row to thead Element headerRow = table.getRowFormatter().getElement(0); Element tableElement = table.getElement(); Element thead = DOM.createTHead(); tableElement.insertFirst(thead); headerRow.getParentElement().removeChild(headerRow); thead.appendChild(headerRow); final Element div = DOM.createDiv(); div.appendChild(form.getElement()); div.appendChild(table.getElement()); String name = MESSAGES.pagePointInTimeDataReports(); final String pageName = name; ToolBox.print(new ToolBox.Page() { @Override public String getName() { return pageName; } @Override public String getUser() { return ""; } @Override public String getSession() { return ""; } @Override public Element getBody() { return div; } }); } }); } }); iHeader.addButton("export", MESSAGES.buttonExportCSV(), 85, new ClickHandler() { @Override public void onClick(ClickEvent event) { String id = iReportSelector.getWidget().getValue(iReportSelector.getWidget().getSelectedIndex()); PointInTimeDataReportsInterface.Report query = null; for (PointInTimeDataReportsInterface.Report q : iReports) { if (id.equals(q.getId())) { query = q; break; } } if (query == null) { iHeader.setErrorMessage(MESSAGES.errorNoReportSelected()); return; } String params = ""; for (int i = 0; i < iParameters.size(); i++) { PointInTimeDataReportsInterface.Parameter parameter = iParameters.get(i); if (query.parametersContain(parameter.getType())) { if (parameter.isTextField()) { TextBox textBox = ((UniTimeWidget<TextBox>) iForm.getWidget(3 + i, 1)).getWidget(); String value = textBox.getText(); if (value.isEmpty()) { iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(parameter.getName())); return; } if (!params.isEmpty()) params += ":"; params += (value == null ? "" : value); } else { ListBox list = ((UniTimeWidget<ListBox>) iForm.getWidget(3 + i, 1)).getWidget(); String value = ""; boolean allSelected = true; if (list.isMultipleSelect()) { for (int j = 0; j < list.getItemCount(); j++) if (list.isItemSelected(j)) { if (!value.isEmpty()) value += ","; value += list.getValue(j); } else { allSelected = false; } } else if (list.getSelectedIndex() > 0) { value = list.getValue(list.getSelectedIndex()); } if (value.isEmpty()) { iHeader.setErrorMessage(MESSAGES.errorItemNotSelected(parameter.getName())); return; } if (!params.isEmpty()) params += ":"; params += (list.isMultipleSelect() && allSelected ? "" : value); } } } String reportId = iReportSelector.getWidget() .getValue(iReportSelector.getWidget().getSelectedIndex()); RPC.execute(EncodeQueryRpcRequest.encode( "output=pitd-report.csv&report=" + reportId + "¶ms=" + params + "&sort=" + iLastSort), new AsyncCallback<EncodeQueryRpcResponse>() { @Override public void onFailure(Throwable caught) { } @Override public void onSuccess(EncodeQueryRpcResponse result) { ToolBox.open(GWT.getHostPageBaseURL() + "export?q=" + result.getQuery()); } }); } }); iForm.addHeaderRow(iHeader); iHeader.setEnabled("execute", false); iHeader.setEnabled("print", false); iHeader.setEnabled("export", false); iForm.getColumnFormatter().setWidth(0, "120px"); iForm.getColumnFormatter().setWidth(1, "100%"); iReportSelector = new UniTimeWidget<ListBox>(new ListBox()); iForm.addRow(MESSAGES.propReport(), iReportSelector); iReportSelector.getWidget().addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { iReportSelector.clearHint(); iReportSelector.setPrintText( iReportSelector.getWidget().getItemText(iReportSelector.getWidget().getSelectedIndex())); queryChanged(); } }); iDescription = new HTML(""); iForm.addRow(MESSAGES.propDescription(), iDescription); iForm.getCellFormatter().setVerticalAlignment(2, 0, HasVerticalAlignment.ALIGN_TOP); LoadingWidget.getInstance().show(MESSAGES.waitLoadingReports()); RPC.execute(new PITDParametersRpcRequest(), new AsyncCallback<PITDParametersInterface>() { @Override public void onFailure(Throwable caught) { iHeader.setErrorMessage(caught.getMessage()); LoadingWidget.getInstance().hide(); ToolBox.checkAccess(caught); } @Override public void onSuccess(PITDParametersInterface result) { iParameters = result.getParameters(); for (int i = 0; i < iParameters.size(); i++) { PointInTimeDataReportsInterface.Parameter parameter = iParameters.get(i); if (parameter.isTextField()) { TextBox text = new TextBox(); if (parameter.getDefaultTextValue() != null) { text.setText(parameter.getDefaultTextValue()); text.setValue(parameter.getDefaultTextValue()); } final UniTimeWidget<TextBox> u = new UniTimeWidget<TextBox>(text); iForm.addRow(parameter.getName() + ":", u); iForm.getCellFormatter().setVerticalAlignment(3 + i, 0, HasVerticalAlignment.ALIGN_TOP); iForm.getRowFormatter().setVisible(3 + i, false); u.setPrintText(text.getValue()); text.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { u.clearHint(); String entered = u.getWidget().getValue(); u.setPrintText(entered); iHeader.clearMessage(); } }); } else { ListBox list = new ListBox(); list.setMultipleSelect(parameter.isMultiSelect()); if (!parameter.isMultiSelect()) list.addItem(MESSAGES.itemSelect(), "-1"); for (PointInTimeDataReportsInterface.IdValue v : parameter.values()) list.addItem(v.getText(), v.getValue()); final UniTimeWidget<ListBox> u = new UniTimeWidget<ListBox>(list); iForm.addRow(parameter.getName() + ":", u); iForm.getCellFormatter().setVerticalAlignment(3 + i, 0, HasVerticalAlignment.ALIGN_TOP); iForm.getRowFormatter().setVisible(3 + i, false); if (list.isMultipleSelect()) { for (int j = 0; j < list.getItemCount(); j++) list.setItemSelected(j, true); u.setPrintText(MESSAGES.itemAll()); } else if (list.getItemCount() == 2) { list.setSelectedIndex(1); u.setPrintText(list.getItemText(1)); } list.addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { u.clearHint(); String selected = ""; boolean hasAll = true; for (int i = 0; i < u.getWidget().getItemCount(); i++) { if (u.getWidget().isItemSelected(i)) { if (!selected.isEmpty()) selected += ","; selected += u.getWidget().getItemText(i); } else hasAll = false; } if (hasAll && u.getWidget().getItemCount() > 5) selected = MESSAGES.itemAll(); if (selected.length() > 150) selected = selected.substring(0, 147) + "..."; u.setPrintText(selected); iHeader.clearMessage(); } }); } } iTableHeader = new UniTimeHeaderPanel(MESSAGES.sectResults()); iForm.addHeaderRow(iTableHeader); iForm.addRow(iTable); iForm.addBottomRow(iHeader.clonePanel("")); loadQueries(null, true); } }); iTable.addMouseClickListener(new UniTimeTable.MouseClickListener<String[]>() { @Override public void onMouseClick(UniTimeTable.TableEvent<String[]> event) { if (event.getRow() > 0 && event.getData() != null) { if ("__Class".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "classDetail.do?cid=" + event.getData()[0]); else if ("__Offering".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "instructionalOfferingDetail.do?op=view&io=" + event.getData()[0]); else if ("__Subpart".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "schedulingSubpartDetail.do?ssuid=" + event.getData()[0]); else if ("__Room".equals(iFirstField)) ToolBox.open( GWT.getHostPageBaseURL() + "gwt.jsp?page=rooms&back=1&id=" + event.getData()[0]); else if ("__Instructor".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "instructorDetail.do?instructorId=" + event.getData()[0]); else if ("__Exam".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "examDetail.do?examId=" + event.getData()[0]); else if ("__Event".equals(iFirstField)) ToolBox.open(GWT.getHostPageBaseURL() + "gwt.jsp?page=events#event=" + event.getData()[0]); } } }); initWidget(iForm); History.addValueChangeHandler(new ValueChangeHandler<String>() { @Override public void onValueChange(ValueChangeEvent<String> event) { reload(event.getValue()); } }); }
From source file:org.unitime.timetable.gwt.client.rooms.RoomsTable.java
License:Apache License
public RoomsTable(RoomsPageMode mode, boolean selectable) { setStyleName("unitime-Rooms"); iMode = mode;/*from w w w .j a v a2 s . co m*/ iSelectable = selectable; addOperation(new Operation() { @Override public void execute() { final RoomsTable table = new RoomsTable(iMode); table.setProperties(iProperties); table.setDepartment(iDepartment); for (int i = 1; i < getRowCount(); i++) table.addRoom(getData(i)); table.getElement().getStyle().setWidth(1040, Unit.PX); // Move header row to thead Element headerRow = table.getRowFormatter().getElement(0); Element tableElement = table.getElement(); Element thead = DOM.createTHead(); tableElement.insertFirst(thead); headerRow.getParentElement().removeChild(headerRow); thead.appendChild(headerRow); ToolBox.print(new ToolBox.Page() { @Override public String getName() { return MESSAGES.pageRooms(); } @Override public String getUser() { return UniTimePageHeader.getInstance().getMiddle().getText(); } @Override public String getSession() { return UniTimePageHeader.getInstance().getRight().getText(); } @Override public Element getBody() { return table.getElement(); } }); } @Override public String getName() { return MESSAGES.buttonPrint(); } @Override public boolean isApplicable() { return getRowCount() > 1 && !iSelectable; } @Override public boolean hasSeparator() { return true; } }); }
From source file:org.unitime.timetable.gwt.client.sectioning.SectioningReports.java
License:Apache License
public SectioningReports(boolean online) { iOnline = online;/*from ww w .j av a2 s . c o m*/ iForm = new SimpleForm(2); iForm.removeStyleName("unitime-NotPrintableBottomLine"); iHeader = new UniTimeHeaderPanel(MESSAGES.sectFilter()); iHeader.addButton("execute", MESSAGES.buttonExecute(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { iFirstLine = 0; iLastSort = 0; execute(); } }); iHeader.addButton("print", MESSAGES.buttonPrint(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { final UniTimeTable<RowData> table = new UniTimeTable<RowData>(); List<Widget> header = new ArrayList<Widget>(); for (int i = 0; i < iHead.getLength(); i++) { String x = iHead.getCell(i); String name = x.replace('_', ' ').trim(); UniTimeTableHeader h = new UniTimeTableHeader(name.replaceAll("\\n", "<br>"), 1); if (i + 1 == iLastSort) h.setOrder(true); else if (-1 - i == iLastSort) h.setOrder(false); header.add(h); } table.addRow(null, header); RowData prev = null; for (int i = 0; i < iData.size(); i++) { RowData row = iData.get(i); List<Widget> line = new ArrayList<Widget>(); boolean prevHide = true; for (int x = 0; x < table.getCellCount(0); x++) { boolean hide = true; if (prev == null || !prevHide || !prev.getCell(x).equals(row.getCell(x))) hide = false; String text = row.getCell(x).replaceAll("\\n", "<br>"); boolean number = false; try { Double.parseDouble(text); number = true; } catch (Exception e) { } if (iHead.getCell(x).contains("%") && number) text = PF.format(Double.parseDouble(text)); else if (text.matches("[\\-]?[0-9]+\\.[0-9]+") && number) text = DF.format(Double.parseDouble(text)); line.add(number ? new NumberCell(hide ? "" : text) : new HTML(hide ? "" : text)); prevHide = hide; } int last = table.addRow(row, line); if (prev != null && !prev.getCell(0).equals(row.getCell(0))) for (int c = 0; c < table.getCellCount(last); c++) table.getCellFormatter().addStyleName(last, c, "unitime-TopLineDash"); prev = row; } if (iHead.getCell(0).startsWith("__")) table.setColumnVisible(0, false); table.getElement().getStyle().setWidth(1040, Unit.PX); // Move header row to thead Element headerRow = table.getRowFormatter().getElement(0); Element tableElement = table.getElement(); Element thead = DOM.createTHead(); tableElement.insertFirst(thead); headerRow.getParentElement().removeChild(headerRow); thead.appendChild(headerRow); final String name = iReportSelector.getWidget() .getItemText(iReportSelector.getWidget().getSelectedIndex()); ToolBox.print(new ToolBox.Page() { @Override public String getName() { return name; } @Override public String getUser() { return ""; } @Override public String getSession() { return ""; } @Override public Element getBody() { return table.getElement(); } }); } }); iHeader.addButton("export", MESSAGES.buttonExportCSV(), 85, new ClickHandler() { @Override public void onClick(ClickEvent event) { if (iReportSelector.getWidget().getSelectedIndex() <= 0) { iHeader.setErrorMessage(MESSAGES.errorNoReportSelected()); return; } ReportType type = ReportType.valueOf( iReportSelector.getWidget().getValue(iReportSelector.getWidget().getSelectedIndex())); String query = "output=sct-report.csv&name=" + type.name() + "&report=" + type.getImplementation() + "&online=" + (iOnline ? "true" : "false") + "&sort=" + iLastSort; for (int i = 0; i + 1 < type.getParameters().length; i += 2) query += "&" + type.getParameters()[i] + "=" + type.getParameters()[i + 1]; RPC.execute(EncodeQueryRpcRequest.encode(query), new AsyncCallback<EncodeQueryRpcResponse>() { @Override public void onFailure(Throwable caught) { } @Override public void onSuccess(EncodeQueryRpcResponse result) { ToolBox.open(GWT.getHostPageBaseURL() + "export?q=" + result.getQuery()); } }); } }); iForm.addHeaderRow(iHeader); iHeader.setEnabled("execute", false); iHeader.setEnabled("print", false); iHeader.setEnabled("export", false); iForm.getColumnFormatter().setWidth(0, "120px"); iForm.getColumnFormatter().setWidth(1, "100%"); iReportSelector = new UniTimeWidget<ListBox>(new ListBox()); iReportSelector.getWidget().addItem(MESSAGES.itemSelect(), ""); for (ReportType type : ReportType.values()) iReportSelector.getWidget().addItem(type.getName(), type.name()); iForm.addRow(MESSAGES.propReport(), iReportSelector); iReportSelector.getWidget().addChangeHandler(new ChangeHandler() { @Override public void onChange(ChangeEvent event) { iReportSelector.clearHint(); iReportSelector.setPrintText( iReportSelector.getWidget().getItemText(iReportSelector.getWidget().getSelectedIndex())); queryChanged(); } }); iTableHeader = new UniTimeHeaderPanel(MESSAGES.sectResults()); iTableHeader.addButton("previous", MESSAGES.buttonPrevious(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { iFirstLine -= 100; populate(false); History.newItem(iLastHistory + ":" + iFirstLine + ":" + iLastSort, false); } }); iTableHeader.addButton("next", MESSAGES.buttonNext(), 75, new ClickHandler() { @Override public void onClick(ClickEvent event) { iFirstLine += 100; populate(false); History.newItem(iLastHistory + ":" + iFirstLine + ":" + iLastSort, false); } }); iTableHeader.setEnabled("previous", false); iTableHeader.setEnabled("next", false); iForm.addHeaderRow(iTableHeader); iForm.addRow(iTable); iForm.addBottomRow(iHeader.clonePanel("")); initWidget(iForm); History.addValueChangeHandler(new ValueChangeHandler<String>() { @Override public void onValueChange(ValueChangeEvent<String> event) { reload(event.getValue()); } }); iTable.addMouseClickListener(new UniTimeTable.MouseClickListener<RowData>() { @Override public void onMouseClick(UniTimeTable.TableEvent<RowData> event) { if (event.getRow() > 0 && event.getData() != null) { if ("__Class".equals(iHead.getCell(0))) ToolBox.open(GWT.getHostPageBaseURL() + "classDetail.do?cid=" + event.getData().getCell(0)); else if ("__Offering".equals(iHead.getCell(0))) ToolBox.open(GWT.getHostPageBaseURL() + "instructionalOfferingDetail.do?op=view&io=" + event.getData().getCell(0)); else if ("__Subpart".equals(iHead.getCell(0))) ToolBox.open(GWT.getHostPageBaseURL() + "schedulingSubpartDetail.do?ssuid=" + event.getData().getCell(0)); else if ("__Room".equals(iHead.getCell(0))) ToolBox.open(GWT.getHostPageBaseURL() + "gwt.jsp?page=rooms&back=1&id=" + event.getData().getCell(0)); else if ("__Instructor".equals(iHead.getCell(0))) ToolBox.open(GWT.getHostPageBaseURL() + "instructorDetail.do?instructorId=" + event.getData().getCell(0)); else if ("__Exam".equals(iHead.getCell(0))) ToolBox.open( GWT.getHostPageBaseURL() + "examDetail.do?examId=" + event.getData().getCell(0)); else if ("__Event".equals(iHead.getCell(0))) ToolBox.open(GWT.getHostPageBaseURL() + "gwt.jsp?page=events#event=" + event.getData().getCell(0)); } } }); reload(History.getToken()); }
From source file:org.unitime.timetable.gwt.client.solver.AssignedClassesPage.java
License:Apache License
protected void print() { final DataTable table = new DataTable(iLastResponse); Element headerRow = table.getRowFormatter().getElement(0); Element tableElement = table.getElement(); Element thead = DOM.createTHead(); tableElement.insertFirst(thead);/*from w w w .ja va2s . c om*/ headerRow.getParentElement().removeChild(headerRow); thead.appendChild(headerRow); Page page = new Page() { @Override public String getName() { return MESSAGES.sectAssignedClasses(); } @Override public String getUser() { return ""; } @Override public String getSession() { return ""; } @Override public Element getBody() { return table.getElement(); } }; ToolBox.print(page); }
From source file:org.unitime.timetable.gwt.client.solver.AssignmentHistoryPage.java
License:Apache License
protected void print() { final DataTable table = new DataTable(iLastResponse); Element headerRow = table.getRowFormatter().getElement(0); Element tableElement = table.getElement(); Element thead = DOM.createTHead(); tableElement.insertFirst(thead);/*from w w w . jav a 2s . c o m*/ headerRow.getParentElement().removeChild(headerRow); thead.appendChild(headerRow); Page page = new Page() { @Override public String getName() { return MESSAGES.sectAssignmentHistory(); } @Override public String getUser() { return ""; } @Override public String getSession() { return ""; } @Override public Element getBody() { return table.getElement(); } }; ToolBox.print(page); }
From source file:org.unitime.timetable.gwt.client.solver.NotAssignedClassesPage.java
License:Apache License
protected void print() { final DataTable table = new DataTable(iLastResponse); Element headerRow = table.getRowFormatter().getElement(0); Element tableElement = table.getElement(); Element thead = DOM.createTHead(); tableElement.insertFirst(thead);/*from www . j a v a 2s .c o m*/ headerRow.getParentElement().removeChild(headerRow); thead.appendChild(headerRow); Page page = new Page() { @Override public String getName() { return MESSAGES.sectNotAssignedClasses(); } @Override public String getUser() { return ""; } @Override public String getSession() { return ""; } @Override public Element getBody() { return table.getElement(); } }; ToolBox.print(page); }
From source file:org.unitime.timetable.gwt.client.solver.SolutionChangesPage.java
License:Apache License
protected void print() { final DataTable table = new DataTable(iLastResponse); Element headerRow = table.getRowFormatter().getElement(0); Element tableElement = table.getElement(); Element thead = DOM.createTHead(); tableElement.insertFirst(thead);//from w ww. j a v a2s . c om headerRow.getParentElement().removeChild(headerRow); thead.appendChild(headerRow); Page page = new Page() { @Override public String getName() { return MESSAGES.sectSolutionChanges(); } @Override public String getUser() { return ""; } @Override public String getSession() { return ""; } @Override public Element getBody() { return table.getElement(); } }; ToolBox.print(page); }