Example usage for com.google.gwt.user.client.ui DockPanel DockPanel

List of usage examples for com.google.gwt.user.client.ui DockPanel DockPanel

Introduction

In this page you can find the example usage for com.google.gwt.user.client.ui DockPanel DockPanel.

Prototype

public DockPanel() 

Source Link

Document

Creates an empty dock panel.

Usage

From source file:org.rstudio.studio.client.common.shell.ShellWidget.java

License:Open Source License

public ShellWidget(AceEditor editor, EventBus events) {
    styles_ = ConsoleResources.INSTANCE.consoleStyles();
    events_ = events;/*from  w w  w .  j a  v a  2  s  . c  o m*/

    SelectInputClickHandler secondaryInputHandler = new SelectInputClickHandler();

    output_ = new PreWidget();
    output_.setStylePrimaryName(styles_.output());
    output_.addClickHandler(secondaryInputHandler);
    ElementIds.assignElementId(output_.getElement(), ElementIds.CONSOLE_OUTPUT);
    output_.addPasteHandler(secondaryInputHandler);

    pendingInput_ = new PreWidget();
    pendingInput_.setStyleName(styles_.output());
    pendingInput_.addClickHandler(secondaryInputHandler);

    prompt_ = new HTML();
    prompt_.setStylePrimaryName(styles_.prompt());
    prompt_.addStyleName(KEYWORD_CLASS_NAME);

    input_ = editor;
    input_.setShowLineNumbers(false);
    input_.setShowPrintMargin(false);
    if (!Desktop.isDesktop())
        input_.setNewLineMode(NewLineMode.Unix);
    input_.setUseWrapMode(true);
    input_.setPadding(0);
    input_.autoHeight();
    final Widget inputWidget = input_.asWidget();
    ElementIds.assignElementId(inputWidget.getElement(), ElementIds.CONSOLE_INPUT);
    input_.addClickHandler(secondaryInputHandler);
    inputWidget.addStyleName(styles_.input());
    input_.addCursorChangedHandler(new CursorChangedHandler() {
        public void onCursorChanged(CursorChangedEvent event) {
            Scheduler.get().scheduleDeferred(new ScheduledCommand() {
                @Override
                public void execute() {
                    input_.scrollToCursor(scrollPanel_, 8, 60);
                }
            });
        }
    });
    input_.addCapturingKeyDownHandler(new KeyDownHandler() {
        @Override
        public void onKeyDown(KeyDownEvent event) {
            // If the user hits Page-Up from inside the console input, we need
            // to simulate pageup because focus is not contained in the scroll
            // panel (it's in the hidden textarea that Ace uses under the
            // covers).

            int keyCode = event.getNativeKeyCode();
            switch (keyCode) {
            case KeyCodes.KEY_PAGEUP:
                event.stopPropagation();
                event.preventDefault();

                // Can't scroll any further up. Return before we change focus.
                if (scrollPanel_.getVerticalScrollPosition() == 0)
                    return;

                scrollPanel_.focus();
                int newScrollTop = scrollPanel_.getVerticalScrollPosition() - scrollPanel_.getOffsetHeight()
                        + 40;
                scrollPanel_.setVerticalScrollPosition(Math.max(0, newScrollTop));
                break;
            }
        }
    });

    inputLine_ = new DockPanel();
    inputLine_.setHorizontalAlignment(DockPanel.ALIGN_LEFT);
    inputLine_.setVerticalAlignment(DockPanel.ALIGN_TOP);
    inputLine_.add(prompt_, DockPanel.WEST);
    inputLine_.setCellWidth(prompt_, "1");
    inputLine_.add(input_.asWidget(), DockPanel.CENTER);
    inputLine_.setCellWidth(input_.asWidget(), "100%");
    inputLine_.setWidth("100%");

    verticalPanel_ = new VerticalPanel();
    verticalPanel_.setStylePrimaryName(styles_.console());
    verticalPanel_.addStyleName("ace_text-layer");
    verticalPanel_.addStyleName("ace_line");
    FontSizer.applyNormalFontSize(verticalPanel_);
    verticalPanel_.add(output_);
    verticalPanel_.add(pendingInput_);
    verticalPanel_.add(inputLine_);
    verticalPanel_.setWidth("100%");

    scrollPanel_ = new ClickableScrollPanel();
    scrollPanel_.setWidget(verticalPanel_);
    scrollPanel_.addStyleName("ace_editor");
    scrollPanel_.addStyleName("ace_scroller");
    scrollPanel_.addClickHandler(secondaryInputHandler);
    scrollPanel_.addKeyDownHandler(secondaryInputHandler);

    secondaryInputHandler.setInput(editor);

    scrollToBottomCommand_ = new TimeBufferedCommand(5) {
        @Override
        protected void performAction(boolean shouldSchedulePassive) {
            if (!DomUtils.selectionExists())
                scrollPanel_.scrollToBottom();
        }
    };

    initWidget(scrollPanel_);

    addCopyHook(getElement());
}

From source file:org.rstudio.studio.client.workbench.views.source.TabOverflowPopupPanel.java

License:Open Source License

public TabOverflowPopupPanel() {
    super(true, false);

    DockPanel dockPanel = new DockPanel();

    search_ = new SearchWidget(new DocsOracle());
    search_.addValueChangeHandler(this);

    search_.getElement().getStyle().setMarginRight(0, Unit.PX);
    dockPanel.add(search_, DockPanel.NORTH);

    menu_ = new DocsMenu();
    menu_.setOwnerPopupPanel(this);
    menu_.setWidth("100%");
    dockPanel.add(menu_, DockPanel.CENTER);
    setWidget(dockPanel);// w  w w  . ja  va2 s  .  co  m

    setStylePrimaryName(ThemeStyles.INSTANCE.tabOverflowPopup());

    addDomHandler(new MenuKeyHandler(menu_), KeyDownEvent.getType());

    addHandler(new CloseHandler<PopupPanel>() {

        public void onClose(CloseEvent<PopupPanel> popupPanelCloseEvent) {
            search_.setText("", true);
            menu_.filter(null);
            menu_.selectItem(null);
        }
    }, CloseEvent.getType());
}

From source file:org.thechiselgroup.biomixer.client.core.visualization.DefaultView.java

License:Apache License

private void initConfigurationPanelUI() {
    topBar = new DockPanel();
    topBar.setSize("100%", "");
    topBar.setStyleName(CSS_VIEW_CONFIGURATION_PANEL);

    for (ViewTopBarExtension extension : topBarExtensions) {
        extension.init(topBar);/*w  ww . j  a v a2s .c  o  m*/
    }
    initSideBarExpander();
}

From source file:org.thechiselgroup.biomixer.client.workbench.init.WorkbenchInitializer.java

License:Apache License

private DockPanel createMainPanel() {
    DockPanel mainPanel = new DockPanel();
    mainPanel.addStyleName(CSS_MAIN_PANEL);
    RootPanel.get().add(mainPanel);
    return mainPanel;
}

From source file:org.thechiselgroup.choosel.core.client.visualization.DefaultView.java

License:Apache License

private void initConfigurationPanelUI() {
    configurationBar = new DockPanel();
    configurationBar.setSize("100%", "");
    configurationBar.setStyleName(CSS_VIEW_CONFIGURATION_PANEL);

    initResourceModelPresenter();/*from w  w  w .j a  v a2s. co m*/
    initSideBarExpander();
    initSelectionModelPresenter();
}

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 a va2  s .  co  m

    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.sectioning.StudentSectioningWidget.java

License:Apache License

private void init() {
    if (CONSTANTS.allowCalendarExport()) {
        iCalendar = new ImageLink();
        iCalendar.setImage(new Image(RESOURCES.calendar()));
        iCalendar.setTarget(null);/*  w w w.ja  v a  2s  .c o m*/
        iCalendar.setTitle(MESSAGES.exportICalendar());
        iCalendar.setAriaLabel(MESSAGES.exportICalendar());
    }

    iAssignments = new WebTable();
    iAssignments.setHeader(new WebTable.Row(new WebTable.Cell(MESSAGES.colLock(), 1, "15px"),
            new WebTable.Cell(MESSAGES.colSubject(), 1, "40px"),
            new WebTable.Cell(MESSAGES.colCourse(), 1, "40px"),
            new WebTable.Cell(MESSAGES.colSubpart(), 1, "30px"),
            new WebTable.Cell(MESSAGES.colClass(), 1, "50px"),
            new WebTable.Cell(MESSAGES.colLimit(), 1, "30px").aria(ARIA.colLimit()),
            new WebTable.Cell(MESSAGES.colDays(), 1, "30px"), new WebTable.Cell(MESSAGES.colStart(), 1, "40px"),
            new WebTable.Cell(MESSAGES.colEnd(), 1, "40px"), new WebTable.Cell(MESSAGES.colDate(), 1, "50px"),
            new WebTable.Cell(MESSAGES.colRoom(), 1, "80px"),
            new WebTable.Cell(MESSAGES.colInstructor(), 1, "80px"),
            new WebTable.Cell(MESSAGES.colParent(), 1, "80px"),
            new WebTable.Cell(MESSAGES.colNote(), 1, "50px"),
            new WebTable.Cell(MESSAGES.colCredit(), 1, "30px"),
            (iCalendar != null ? new WebTable.WidgetCell(iCalendar, MESSAGES.colIcons(), 1, "1px")
                    : new WebTable.Cell(MESSAGES.colIcons(), 1, "1px"))));
    iAssignments.setWidth("100%");
    iAssignments.setEmptyMessage(MESSAGES.emptySchedule());

    final FlexTable vp = new FlexTable();
    vp.setCellPadding(0);
    vp.setCellSpacing(0);
    vp.setWidget(0, 0, iAssignments);
    vp.getFlexCellFormatter().setColSpan(0, 0, 3);

    iTotalCredit = new Label();
    iTotalCredit.getElement().getStyle().setMarginTop(2, Unit.PX);
    vp.setWidget(1, 0, iQuickAdd);
    vp.setWidget(1, 1, iTotalCredit);
    iShowUnassignments = new CheckBox(MESSAGES.showUnassignments());
    iShowUnassignments.getElement().getStyle().setMarginTop(2, Unit.PX);
    vp.setWidget(1, 2, iShowUnassignments);
    vp.getFlexCellFormatter().setHorizontalAlignment(1, 1, HasHorizontalAlignment.ALIGN_CENTER);
    vp.getFlexCellFormatter().setHorizontalAlignment(1, 2, HasHorizontalAlignment.ALIGN_RIGHT);
    for (int i = 0; i < 3; i++)
        vp.getFlexCellFormatter().getElement(1, i).getStyle().setWidth(33, Unit.PCT);
    iShowUnassignments.setVisible(false);
    String showUnassignments = Cookies.getCookie("UniTime:Unassignments");
    iShowUnassignments.setValue(showUnassignments == null || "1".equals(showUnassignments));

    iAssignmentGrid = new TimeGrid();
    iGridMessage = new P("unitime-TimeGridMessage");
    iGridMessage.setVisible(false);
    final P gridPanel = new P("unitime-TimeGridPanel");
    gridPanel.add(iGridMessage);
    gridPanel.add(iAssignmentGrid);

    iAssignmentTab = new AriaTabBar();
    iAssignmentTab.addTab(MESSAGES.tabClasses(), true);
    iAssignmentTab.addTab(MESSAGES.tabTimetable(), true);
    iAssignmentTab.selectTab(0);
    iAssignmentTab.addSelectionHandler(new SelectionHandler<Integer>() {
        @Override
        public void onSelection(SelectionEvent<Integer> event) {
            if (event.getSelectedItem() == 0) {
                iAssignmentPanel.setWidget(vp);
                AriaStatus.getInstance().setHTML(ARIA.listOfClasses());
            } else {
                iAssignmentPanel.setWidget(gridPanel);
                iAssignmentGrid.scrollDown();
                AriaStatus.getInstance().setHTML(ARIA.timetable());
            }
            addHistory();
            ResizeEvent.fire(StudentSectioningWidget.this, StudentSectioningWidget.this.getOffsetWidth(),
                    StudentSectioningWidget.this.getOffsetHeight());
            Scheduler.get().scheduleDeferred(new ScheduledCommand() {
                @Override
                public void execute() {
                    iAssignmentPanel.setFocus(true);
                }
            });
        }
    });
    iAssignmentPanel = new FocusPanel(vp);
    iAssignmentPanel.setStyleName("unitime-ClassScheduleTabPanel");
    iAssignmentPanel.addStyleName("unitime-FocusPanel");

    final Character classesAccessKey = UniTimeHeaderPanel.guessAccessKey(MESSAGES.tabClasses());
    final Character timetableAccessKey = UniTimeHeaderPanel.guessAccessKey(MESSAGES.tabTimetable());
    iAssignmentPanel.addKeyUpHandler(new KeyUpHandler() {
        @Override
        public void onKeyUp(KeyUpEvent event) {
            if (iAssignmentTab.getSelectedTab() == 0) {
                if (event.getNativeKeyCode() == KeyCodes.KEY_DOWN) {
                    do {
                        iAssignments.setSelectedRow(iAssignments.getSelectedRow() + 1);
                    } while (iAssignments.getRows()[iAssignments.getSelectedRow()] != null
                            && !iAssignments.getRows()[iAssignments.getSelectedRow()].isSelectable());

                    if (iAssignments.getSelectedRow() >= 0
                            && iAssignments.getSelectedRow() < iAssignments.getRows().length
                            && iAssignments.getRows()[iAssignments.getSelectedRow()] != null)
                        AriaStatus.getInstance()
                                .setHTML(ARIA.classSelected(1 + iAssignments.getSelectedRow(),
                                        iAssignments.getRowsCount(),
                                        iAssignments.getRows()[iAssignments.getSelectedRow()].getAriaLabel()));
                }
                if (event.getNativeKeyCode() == KeyCodes.KEY_UP) {
                    do {
                        iAssignments.setSelectedRow(
                                iAssignments.getSelectedRow() == 0 ? iAssignments.getRowsCount() - 1
                                        : iAssignments.getSelectedRow() - 1);
                    } while (iAssignments.getRows()[iAssignments.getSelectedRow()] != null
                            && !iAssignments.getRows()[iAssignments.getSelectedRow()].isSelectable());

                    if (iAssignments.getSelectedRow() >= 0
                            && iAssignments.getSelectedRow() < iAssignments.getRows().length
                            && iAssignments.getRows()[iAssignments.getSelectedRow()] != null)
                        AriaStatus.getInstance()
                                .setHTML(ARIA.classSelected(1 + iAssignments.getSelectedRow(),
                                        iAssignments.getRowsCount(),
                                        iAssignments.getRows()[iAssignments.getSelectedRow()].getAriaLabel()));
                }
                if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
                    updateHistory();
                    showSuggestionsAsync(iAssignments.getSelectedRow());
                }
            }
            int tab = -1;
            if (classesAccessKey != null && event.getNativeEvent().getCtrlKey()
                    && (event.getNativeKeyCode() == classesAccessKey
                            || event.getNativeKeyCode() == Character.toUpperCase(classesAccessKey))) {
                tab = 0;
            }
            if (timetableAccessKey != null && event.getNativeEvent().getCtrlKey()
                    && (event.getNativeKeyCode() == timetableAccessKey
                            || event.getNativeKeyCode() == Character.toUpperCase(timetableAccessKey))) {
                tab = 1;
            }
            if (tab >= 0) {
                iAssignmentTab.selectTab(tab);
                event.preventDefault();
            }
        }
    });

    iAssignmentDock = new DockPanel();
    iAssignmentDock.setStyleName("unitime-ClassSchedulePanel");
    iAssignmentDock.setSpacing(0);
    iAssignmentDock.add(iAssignmentPanel, DockPanel.SOUTH);
    iAssignmentDock.add(iAssignmentTab, DockPanel.WEST);
    iAssignmentDock.setCellWidth(iAssignmentTab, "33%");
    iAssignmentDock.setCellVerticalAlignment(iAssignmentTab, HasVerticalAlignment.ALIGN_BOTTOM);
    iAssignmentDock.setCellHorizontalAlignment(iAssignmentTab, HasHorizontalAlignment.ALIGN_LEFT);
    Roles.getTabpanelRole().set(iAssignmentDock.getElement());
    Roles.getTabpanelRole().setAriaOwnsProperty(iAssignmentDock.getElement(),
            Id.of(iAssignmentTab.getElement()));

    P header = new P("unitime-MainHeader");
    header.setHTML(MESSAGES.headerClassSchedule());
    header.getElement().getStyle().setTextAlign(TextAlign.CENTER);
    iAssignmentDock.add(header, DockPanel.CENTER);
    iAssignmentDock.setCellHorizontalAlignment(header, HasHorizontalAlignment.ALIGN_CENTER);
    iAssignmentDock.setCellWidth(header, "34%");

    P padding = new P("unitime-HeaderPadding");
    padding.setHTML("&nbsp;");
    iAssignmentDock.add(padding, DockPanel.EAST);
    iAssignmentDock.setCellWidth(padding, "33%");

    iRequests.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            prev();
            addHistory();
        }
    });

    iReset.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            clearMessage();
            LoadingWidget.getInstance().show(MESSAGES.courseRequestsScheduling());
            iSectioningService.section(iOnline, iCourseRequests.getRequest(), null,
                    new AsyncCallback<ClassAssignmentInterface>() {
                        public void onFailure(Throwable caught) {
                            iStatus.error(MESSAGES.exceptionSectioningFailed(caught.getMessage()), caught);
                            LoadingWidget.getInstance().hide();
                            updateHistory();
                        }

                        public void onSuccess(ClassAssignmentInterface result) {
                            fillIn(result);
                            addHistory();
                        }
                    });
        }
    });

    iSchedule.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            iCourseRequests.changeTip();
            clearMessage();
            iCourseRequests.validate(new AsyncCallback<Boolean>() {
                public void onSuccess(Boolean result) {
                    updateHistory();
                    if (result) {
                        if (iOnline) {
                            iSectioningService.saveRequest(iCourseRequests.getRequest(),
                                    new AsyncCallback<Boolean>() {
                                        public void onSuccess(Boolean result) {
                                            if (result) {
                                                iStatus.info(MESSAGES.saveRequestsOK());
                                            }
                                        }

                                        public void onFailure(Throwable caught) {
                                            iStatus.error(MESSAGES.saveRequestsFail(caught.getMessage()),
                                                    caught);
                                        }
                                    });
                        }
                        LoadingWidget.getInstance().show(MESSAGES.courseRequestsScheduling());
                        iSectioningService.section(iOnline, iCourseRequests.getRequest(), iLastResult,
                                new AsyncCallback<ClassAssignmentInterface>() {
                                    public void onFailure(Throwable caught) {
                                        iStatus.error(MESSAGES.exceptionSectioningFailed(caught.getMessage()),
                                                caught);
                                        LoadingWidget.getInstance().hide();
                                        updateHistory();
                                    }

                                    public void onSuccess(ClassAssignmentInterface result) {
                                        fillIn(result);
                                        addHistory();
                                    }
                                });
                    } else {
                        String error = iCourseRequests.getFirstError();
                        iStatus.error(error == null ? MESSAGES.validationFailed()
                                : MESSAGES.validationFailedWithMessage(error));
                        LoadingWidget.getInstance().hide();
                        updateHistory();
                    }
                }

                public void onFailure(Throwable caught) {
                    iStatus.error(MESSAGES.validationFailedWithMessage(caught.getMessage()), caught);
                    LoadingWidget.getInstance().hide();
                    updateHistory();
                }
            });
        }
    });

    iStartOver.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            if (isChanged()) {
                UniTimeConfirmationDialog.confirm(useDefaultConfirmDialog(), MESSAGES.queryLeaveChanges(),
                        new Command() {
                            @Override
                            public void execute() {
                                clearMessage();
                                clear(false);
                                iStartOver.setVisible(false);
                                iStartOver.setEnabled(false);
                                addHistory();
                                lastRequest(iSessionSelector.getAcademicSessionId(), null, true, false);
                            }
                        });
            } else {
                clearMessage();
                clear(false);
                iStartOver.setVisible(false);
                iStartOver.setEnabled(false);
                addHistory();
                lastRequest(iSessionSelector.getAcademicSessionId(), null, true, false);
            }
        }
    });

    iAssignments.addRowClickHandler(new WebTable.RowClickHandler() {
        public void onRowClick(WebTable.RowClickEvent event) {
            if (iLastResult.get(event.getRowIdx()) == null)
                return;
            updateHistory();
            showSuggestionsAsync(event.getRowIdx());
        }
    });

    iAssignmentGrid.addMeetingClickHandler(new TimeGrid.MeetingClickHandler() {
        public void onMeetingClick(TimeGrid.MeetingClickEvent event) {
            updateHistory();
            showSuggestionsAsync(event.getRowIndex());
        }
    });

    iAssignmentGrid.addPinClickHandler(new TimeGrid.PinClickHandler() {
        public void onPinClick(TimeGrid.PinClickEvent event) {
            ((HasValue<Boolean>) iAssignments.getRows()[event.getRowIndex()].getCell(0).getWidget())
                    .setValue(event.isPinChecked(), false);
            iLastResult.get(event.getRowIndex()).setPinned(event.isPinChecked());
            updateHistory();
        }
    });

    iEnroll.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            Command enroll = new Command() {
                @Override
                public void execute() {
                    clearMessage();
                    LoadingWidget.getInstance().show(MESSAGES.waitEnroll());
                    iSectioningService.enroll(iOnline, iCourseRequests.getRequest(), iLastResult,
                            new AsyncCallback<ClassAssignmentInterface>() {
                                public void onSuccess(ClassAssignmentInterface result) {
                                    LoadingWidget.getInstance().hide();
                                    iSavedAssignment = result;
                                    iStartOver.setVisible(iSavedAssignment != null
                                            && !iSavedAssignment.getCourseAssignments().isEmpty());
                                    iStartOver.setEnabled(iSavedAssignment != null
                                            && !iSavedAssignment.getCourseAssignments().isEmpty());
                                    fillIn(result);
                                    if (result.hasRequest())
                                        iCourseRequests.setRequest(result.getRequest());
                                    if (!result.hasMessages())
                                        iStatus.info(MESSAGES.enrollOK());
                                    updateHistory();
                                    if (iEligibilityCheck != null && iEligibilityCheck
                                            .hasFlag(EligibilityFlag.RECHECK_AFTER_ENROLLMENT)) {
                                        iSectioningService.checkEligibility(iOnline,
                                                iSessionSelector.getAcademicSessionId(),
                                                iEligibilityCheck.getStudentId(), (String) null,
                                                new AsyncCallback<OnlineSectioningInterface.EligibilityCheck>() {
                                                    @Override
                                                    public void onFailure(Throwable caught) {
                                                    }

                                                    @Override
                                                    public void onSuccess(
                                                            OnlineSectioningInterface.EligibilityCheck result) {
                                                        setElibibilityCheckDuringEnrollment(result);
                                                    }
                                                });
                                    }
                                }

                                public void onFailure(Throwable caught) {
                                    LoadingWidget.getInstance().hide();
                                    iStatus.error(MESSAGES.enrollFailed(caught.getMessage()), caught);
                                    updateHistory();
                                    if (caught instanceof SectioningException) {
                                        SectioningException se = (SectioningException) caught;
                                        EligibilityCheck check = se.getEligibilityCheck();
                                        if (check != null) {
                                            setElibibilityCheckDuringEnrollment(check);
                                            if (check.hasFlag(EligibilityFlag.PIN_REQUIRED)) {
                                                if (iPinDialog == null)
                                                    iPinDialog = new PinDialog();
                                                PinDialog.PinCallback callback = new PinDialog.PinCallback() {
                                                    @Override
                                                    public void onFailure(Throwable caught) {
                                                        iStatus.error(MESSAGES.exceptionFailedEligibilityCheck(
                                                                caught.getMessage()), caught);
                                                    }

                                                    @Override
                                                    public void onSuccess(
                                                            OnlineSectioningInterface.EligibilityCheck result) {
                                                        setElibibilityCheckDuringEnrollment(result);
                                                        if (result.hasFlag(EligibilityFlag.CAN_ENROLL)
                                                                && !result.hasFlag(
                                                                        EligibilityFlag.RECHECK_BEFORE_ENROLLMENT))
                                                            iEnroll.click();
                                                    }

                                                    @Override
                                                    public void onMessage(
                                                            OnlineSectioningInterface.EligibilityCheck result) {
                                                        if (result.hasMessage()) {
                                                            iStatus.error(result.getMessage());
                                                        } else if (result.hasFlag(
                                                                OnlineSectioningInterface.EligibilityCheck.EligibilityFlag.PIN_REQUIRED)) {
                                                            iStatus.warning(MESSAGES
                                                                    .exceptionAuthenticationPinRequired());
                                                        } else {
                                                            clearMessage(false);
                                                        }
                                                    }
                                                };
                                                iPinDialog.checkEligibility(iOnline,
                                                        iSessionSelector.getAcademicSessionId(), null,
                                                        callback);
                                            }
                                        }
                                        if (se.hasSectionMessages()) {
                                            for (CourseAssignment ca : iLastAssignment.getCourseAssignments()) {
                                                for (ClassAssignment c : ca.getClassAssignments()) {
                                                    c.setError(se.getSectionMessage(c.getClassId()));
                                                }
                                            }
                                            fillIn(iLastAssignment);
                                            iStatus.error(caught.getMessage(), false);
                                        }
                                    }
                                }
                            });
                }
            };
            enroll = confirmEnrollment(enroll);
            enroll.execute();
        }
    });

    iPrint.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            boolean allSaved = true;
            for (ClassAssignmentInterface.ClassAssignment clazz : iLastResult) {
                if (clazz != null && !clazz.isFreeTime() && !clazz.isSaved())
                    allSaved = false;
            }
            Widget w = iAssignments.getPrintWidget(0, 5, 15);
            w.setWidth("100%");
            ToolBox.print(
                    (allSaved && !isChanged() ? MESSAGES.studentSchedule()
                            : MESSAGES.studentScheduleNotEnrolled()),
                    (CONSTANTS.printReportShowUserName() ? iUserAuthentication.getUser() : ""),
                    iSessionSelector.getAcademicSessionName(), iAssignmentGrid.getPrintWidget(), w, iStatus);
        }
    });

    if (iExport != null)
        iExport.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                ToolBox.open(iCalendar.getUrl());
            }
        });

    if (iTrackHistory) {
        History.addValueChangeHandler(new ValueChangeHandler<String>() {
            public void onValueChange(ValueChangeEvent<String> event) {
                if (!event.getValue().isEmpty()) {
                    int item = iHistory.size() - 1;
                    try {
                        item = Integer.parseInt(event.getValue());
                    } catch (NumberFormatException e) {
                    }
                    if (item < 0)
                        item = 0;
                    if (item >= iHistory.size())
                        item = iHistory.size() - 1;
                    if (item >= 0)
                        iHistory.get(item).restore();
                } else if (isChanged()) {
                    UniTimeConfirmationDialog.confirm(useDefaultConfirmDialog(), MESSAGES.queryLeaveChanges(),
                            new Command() {
                                @Override
                                public void execute() {
                                    iCourseRequests.clear();
                                    if (!iSchedule.isVisible())
                                        prev();
                                }
                            });
                }
            }
        });
    }

    iSessionSelector
            .addAcademicSessionChangeHandler(new AcademicSessionSelector.AcademicSessionChangeHandler() {
                public void onAcademicSessionChange(AcademicSessionChangeEvent event) {
                    addHistory();
                }
            });

    iSave.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            iCourseRequests.changeTip();
            clearMessage();
            iCourseRequests.validate(new AsyncCallback<Boolean>() {
                public void onSuccess(Boolean result) {
                    updateHistory();
                    if (result) {
                        LoadingWidget.getInstance().show(MESSAGES.courseRequestsSaving());
                        iSectioningService.saveRequest(iCourseRequests.getRequest(),
                                new AsyncCallback<Boolean>() {
                                    public void onSuccess(Boolean result) {
                                        if (result) {
                                            iStatus.info(MESSAGES.saveRequestsOK());
                                        }
                                        LoadingWidget.getInstance().hide();
                                    }

                                    public void onFailure(Throwable caught) {
                                        iStatus.error(MESSAGES.saveRequestsFail(caught.getMessage()), caught);
                                        LoadingWidget.getInstance().hide();
                                    }
                                });
                    } else {
                        String error = iCourseRequests.getFirstError();
                        iStatus.error(error == null ? MESSAGES.validationFailed()
                                : MESSAGES.validationFailedWithMessage(error));
                        LoadingWidget.getInstance().hide();
                        updateHistory();
                    }
                }

                public void onFailure(Throwable caught) {
                    iStatus.error(MESSAGES.validationFailedWithMessage(caught.getMessage()), caught);
                    LoadingWidget.getInstance().hide();
                    updateHistory();
                }
            });
        }
    });

    iShowUnassignments.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
        @Override
        public void onValueChange(ValueChangeEvent<Boolean> event) {
            Cookies.setCookie("UniTime:Unassignments", "1");
            fillIn(iLastAssignment);
        }
    });
}

From source file:org.utgenome.gwt.utgb.client.track.lib.old.OperationTrack.java

License:Apache License

public OperationTrack() {
    super("Operation Track");
    _panel.setWidth("100%");

    final DockPanel infoPanel = new DockPanel();
    infoPanel.setStyleName("operation-track-label");
    infoPanel.setWidth("100%");

    parameterButton.setText("[show parameters]");
    parameterButton.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent e) {
            final int frameIndex = getTrackGroup().getTrackIndex(OperationTrack.this);
            final ParameterTrack _parameterTrack = getParameterTrack();
            getTrackGroup().insertTrack(_parameterTrack, frameIndex);
        }//from   w w w  .  ja  v  a  2  s. c o  m

    });
    infoPanel.add(parameterButton, DockPanel.WEST);
    infoPanel.add(_label, DockPanel.EAST);

    _panel.add(infoPanel);
    _panel.add(_absolutePanel);
    _absolutePanel.add(graphicPanel);

}

From source file:org.utgenome.gwt.utgb.client.track.TrackConfig.java

License:Apache License

public void init(Track track) {
    this._track = track;

    _label = new Label(track.getTrackInfo().getTrackName() + " Configuration");
    _label.setStyleName("config-label");
    new MouseMoveListener(this).register(_label);

    DOM.setStyleAttribute(_label.getElement(), "cursor", "move");
    DOM.setStyleAttribute(_label.getElement(), "display", "block");
    DOM.setStyleAttribute(_label.getElement(), "width", "100%");
    CloseButton cb = new CloseButton(this);

    Grid grid = new Grid(1, 2);
    grid.getColumnFormatter().setWidth(0, "15px");
    grid.getColumnFormatter().setWidth(1, "100%");
    grid.setWidth("100%");
    grid.setStyleName("config-frame");
    grid.setWidget(0, 0, cb);/*from   w w w . j  a  v  a  2s . c  o m*/
    grid.setWidget(0, 1, _label);

    final DockPanel simplePanel = new DockPanel();
    simplePanel.add(_configTable, DockPanel.CENTER);
    final ScrollPanel scrollPanel = new ScrollPanel(simplePanel) {
        @Override
        protected void onAttach() {
            super.onAttach();
            final int height = getOffsetHeight();
            if (height > 500) {
                // setHeight("500px");
            }
        }
    };
    this.setStyleName("config");
    _panel.add(grid, DockPanel.NORTH);
    _panel.add(scrollPanel, DockPanel.CENTER);
    this.setWidget(_panel);
    setWidth("500px");
}

From source file:org.yournamehere.client.AjoutAutre.java

@Override
public void onModuleLoad() {
    final GWTServiceAddEncyclopediaAsync service = GWT.create(GWTServiceAddEncyclopedia.class);
    final GWTServiceModifyAccountAsync service2 = GWT.create(GWTServiceModifyAccount.class);

    final DockPanel page = new DockPanel();
    final DockPanel body = new DockPanel();

    final VerticalPanel formPanel = new VerticalPanel();

    final ListBox listChoix = new ListBox();
    formPanel.add(listChoix);//from   w  w  w  . ja va 2  s  .c o m

    final HashMap<Integer, SemanticPanel> map = new HashMap<Integer, SemanticPanel>();

    map.put(0, new PredicatePanel());
    listChoix.addItem("prdicat", "0");
    map.put(1, new AccessoryPanel());
    listChoix.addItem("accessoire", "1");
    map.put(2, new LicencePanel());
    listChoix.addItem("Licence", "2");

    final Button okButton = new Button("Enregistrer");

    listChoix.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            formPanel.clear();
            formPanel.add(listChoix);
            formPanel.add(map.get(Integer.parseInt(listChoix.getValue(listChoix.getSelectedIndex())))
                    .getConcretPanel());
            formPanel.add(okButton);
        }
    });
    final AsyncCallback<String> callback = new AsyncCallback<String>() {
        public void onSuccess(String result) {
            System.out.println("other created");
            //                        Window.alert("jeu cr" + result);
        }

        public void onFailure(Throwable caught) {
            System.out.println("error while creating other\n" + caught);
            Window.alert("erreur lors de la cration autre : " + caught);
        }
    };
    okButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            service.createEncyclopediaNode(
                    map.get(Integer.parseInt(listChoix.getValue(listChoix.getSelectedIndex())))
                            .getSemanticObject(),
                    new ArrayList<Long>(), callback);
        }
    });

    body.add(formPanel, DockPanel.CENTER);

    AsyncCallback<User> callbackUser = new AsyncCallback<User>() {

        @Override
        public void onFailure(Throwable caught) {
        }

        @Override
        public void onSuccess(User result) {
            AdminTemplate.createTemplate(page, body, result.getType());
        }
    };
    service2.getUser(callbackUser);

    RootPanel.get().add(page);
}