Example usage for com.google.gwt.user.client.ui PopupPanel setWidget

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

Introduction

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

Prototype

@Override
    public void setWidget(Widget w) 

Source Link

Usage

From source file:accelerator.client.view.desktop.DesktopMainMenuView.java

License:Open Source License

@UiHandler("createButton")
void onCreateButtonClick(ClickEvent e) {
    final PopupPanel popup = new PopupPanel(true, false);
    MenuBar menu = new MenuBar(true);
    menu.addItem("?", new Command() {
        public void execute() {
            popup.hide();/* www.j av  a 2 s.  c  o m*/
            ProjectDialogBox dlg = new ProjectDialogBox();
            dlg.setHandler(new ProjectDialogBox.Handler() {
                public void onOk(Project input) {
                    handler.createProject(input);
                }
            });
            dlg.center();
        }
    });
    menu.addItem("?", new Command() {
        public void execute() {
            popup.hide();
            TagDialogBox dlg = new TagDialogBox();
            dlg.setHandler(new TagDialogBox.Handler() {
                public void onOk(Tag input) {
                    handler.createTag(input);
                }
            });
            dlg.center();
        }
    });
    popup.setWidget(menu);
    popup.setPopupPositionAndShow(new PositionCallback() {
        public void setPosition(int offsetWidth, int offsetHeight) {
            int left = createButton.getAbsoluteLeft();
            int top = createButton.getAbsoluteTop() - offsetHeight;
            popup.setPopupPosition(left, top);
        }
    });
}

From source file:accelerator.client.view.desktop.DesktopMainMenuView.java

License:Open Source License

@UiHandler("editButton")
void onEditButtonClick(ClickEvent e) {
    final PopupPanel popup = new PopupPanel(true, false);
    MenuBar menu = new MenuBar(true);

    {/*from  www. j a v  a 2s . c o m*/
        final Project p = getSelectedProject();
        final boolean isProjectSelected = p != null;

        // 
        MenuItem edit = new MenuItem("", new Command() {
            public void execute() {
                assert (p != null);
                popup.hide();
                ProjectDialogBox dlg = new ProjectDialogBox(p);
                dlg.setHandler(new ProjectDialogBox.Handler() {
                    public void onOk(Project input) {
                        handler.updateProject(input);
                    }
                });
                dlg.center();
            }
        });
        edit.setEnabled(isProjectSelected);
        menu.addItem(edit);

        // 
        MenuItem delete = new MenuItem("", new Command() {
            public void execute() {
                assert (p != null);
                popup.hide();
                handler.deleteProject(p);
            }
        });
        delete.setEnabled(isProjectSelected);
        menu.addItem(delete);
    }

    menu.addSeparator();

    {
        final Tag t = getSelectedTag();
        final boolean isTagSelected = t != null;

        // 
        MenuItem edit = new MenuItem("", new Command() {
            public void execute() {
                assert (t != null);
                popup.hide();
                TagDialogBox dlg = new TagDialogBox(t);
                dlg.setHandler(new TagDialogBox.Handler() {
                    public void onOk(Tag input) {
                        handler.updateTag(input);
                    }
                });
                dlg.center();
            }
        });
        edit.setEnabled(isTagSelected);
        menu.addItem(edit);

        // 
        MenuItem delete = new MenuItem("", new Command() {
            public void execute() {
                assert (t != null);
                popup.hide();
                handler.deleteTag(t);
            }
        });
        delete.setEnabled(isTagSelected);
        menu.addItem(delete);
    }

    popup.setWidget(menu);
    popup.setPopupPositionAndShow(new PositionCallback() {
        public void setPosition(int offsetWidth, int offsetHeight) {
            int left = editButton.getAbsoluteLeft();
            int top = editButton.getAbsoluteTop() - offsetHeight;
            popup.setPopupPosition(left, top);
        }
    });
}

From source file:asquare.gwt.tests.popuphidden.client.Demo.java

License:Apache License

public void onModuleLoad() {
    RootPanel body = RootPanel.get();/*from   ww w. j  ava2s  . c  o  m*/
    DOM.setStyleAttribute(body.getElement(), "background", "blue");
    final Button showPopupButton = new Button("Show popup");
    showPopupButton.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            final PopupPanel popup = new PopupPanel(true);
            VerticalPanel outer = new VerticalPanel();
            outer.add(new HTML("Click outside the popup to dismiss it"));
            outer.add(new Button("DOM.setStyleAttribute(popup.getElement(), \"visibility\", \"hidden\")",
                    new ClickHandler() {
                        public void onClick(ClickEvent event) {
                            DOM.setStyleAttribute(popup.getElement(), "visibility", "hidden");
                        }
                    }));
            popup.setWidget(outer);
            DOM.setStyleAttribute(popup.getElement(), "border", "double black 4px");
            DOM.setStyleAttribute(popup.getElement(), "background", "red");
            popup.setSize("20em", "20em");
            int x = showPopupButton.getAbsoluteLeft();
            int y = showPopupButton.getAbsoluteTop() + showPopupButton.getOffsetHeight();
            popup.setPopupPosition(x, y);
            popup.show();
        }
    });
    body.add(showPopupButton);
}

From source file:asquare.gwt.tk.uitest.popuppanel.client.Demo.java

License:Apache License

private Widget createDefaultTransparencyTest() {
    RowPanel outer = new RowPanel();
    outer.add(new HTML("<h3>Default transparency test</h3>"));
    final Button button = new Button("Show popup");
    button.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            PopupPanel popup = new PopupPanel(true);
            popup.setPopupPosition(button.getAbsoluteLeft(),
                    button.getAbsoluteTop() + button.getOffsetHeight());
            popup.setWidth("10em");
            DomUtil.setStyleAttribute(popup, "border", "solid black 1px");
            popup.setWidget(new HTML("<p>This popup should be transparent in all browsers.</p>"));
            popup.show();//from  w  w  w  . ja  v  a 2s .c o  m
        }
    });
    outer.add(button);
    return outer;
}

From source file:com.bearsoft.gwt.ui.containers.Toolbar.java

public Toolbar() {
    super();// w ww  . j a va2  s. c  om
    getElement().addClassName("toolbar");
    chevron.getElement().addClassName("toolbar-chevron");
    content.setHgap(0);
    content.getElement().addClassName("toolbar-content");
    getElement().getStyle().setPosition(Style.Position.RELATIVE);
    content.getElement().getStyle().setPosition(Style.Position.ABSOLUTE);
    content.getElement().getStyle().setHeight(100, Style.Unit.PCT);
    content.getElement().getStyle().setDisplay(Style.Display.INLINE_BLOCK);
    content.getElement().getStyle().setOverflow(Style.Overflow.HIDDEN);
    chevron.getElement().getStyle().setPosition(Style.Position.ABSOLUTE);
    chevron.getElement().getStyle().setHeight(100, Style.Unit.PCT);
    setWidget(content);
    getElement().appendChild(chevron.getElement());
    chevron.addDomHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            final Map<Widget, String> lefts = new HashMap<>();
            final Map<Widget, String> rights = new HashMap<>();
            final Map<Widget, String> widths = new HashMap<>();
            final Map<Widget, String> positions = new HashMap<>();
            final Map<Widget, String> margins = new HashMap<>();
            final VerticalPanel vp = new VerticalPanel();
            vp.getElement().addClassName("toolbar-chevron-menu");
            Widget[] widgets = new Widget[content.getWidgetCount()];
            for (int i = 0; i < widgets.length; i++) {
                widgets[i] = content.getWidget(i);
            }
            for (int i = 0; i < widgets.length; i++) {
                Widget iw = widgets[i];
                int rightMost = iw.getElement().getOffsetLeft() + iw.getElement().getOffsetWidth();
                int bottomMost = iw.getElement().getOffsetTop() + iw.getElement().getOffsetHeight();
                int parentWidth = iw.getElement().getParentElement().getOffsetWidth();
                int parentHeight = iw.getElement().getParentElement().getOffsetHeight();
                if (rightMost <= 0 || iw.getElement().getOffsetLeft() >= parentWidth || bottomMost <= 0
                        || iw.getElement().getOffsetTop() >= parentHeight) {
                    lefts.put(iw, iw.getElement().getStyle().getLeft());
                    rights.put(iw, iw.getElement().getStyle().getRight());
                    widths.put(iw, iw.getElement().getStyle().getWidth());
                    positions.put(iw, iw.getElement().getStyle().getPosition());
                    margins.put(iw, iw.getElement().getStyle().getMarginLeft());

                    SimplePanel sp = new SimplePanel();
                    sp.getElement().addClassName("toolbar-chevron-menu-item");
                    sp.getElement().getStyle().setPadding(0, Style.Unit.PX);
                    sp.getElement().getStyle().setBorderWidth(0, Style.Unit.PX);
                    sp.getElement().getStyle().setPosition(Style.Position.RELATIVE);
                    sp.setWidget(iw);
                    vp.add(sp);
                }
            }
            if (vp.getWidgetCount() > 0) {
                PopupPanel pp = new PopupPanel(true);
                pp.getElement().getStyle().setPadding(0, Style.Unit.PX);
                pp.setWidget(vp);
                pp.setAnimationEnabled(false);
                pp.addCloseHandler(new CloseHandler<PopupPanel>() {

                    @Override
                    public void onClose(CloseEvent<PopupPanel> event) {
                        Widget[] widgets = new Widget[vp.getWidgetCount()];
                        for (int i = 0; i < widgets.length; i++) {
                            widgets[i] = vp.getWidget(i);
                        }
                        for (int i = 0; i < widgets.length; i++) {
                            Widget w = widgets[i];
                            assert w instanceof SimplePanel;
                            Widget iw = ((SimplePanel) w).getWidget();
                            String oldLeft = lefts.remove(iw);
                            if (oldLeft != null && !oldLeft.isEmpty()) {
                                iw.getElement().getStyle().setProperty("left", oldLeft);
                            } else {
                                iw.getElement().getStyle().clearLeft();
                            }
                            String oldRight = rights.remove(iw);
                            if (oldRight != null && !oldRight.isEmpty()) {
                                iw.getElement().getStyle().setProperty("right", oldRight);
                            } else {
                                iw.getElement().getStyle().clearRight();
                            }
                            String oldPosition = positions.remove(iw);
                            if (oldPosition != null && !oldPosition.isEmpty()) {
                                iw.getElement().getStyle().setProperty("position", oldPosition);
                            } else {
                                iw.getElement().getStyle().clearPosition();
                            }
                            String oldWidth = widths.remove(iw);
                            if (oldWidth != null && !oldWidth.isEmpty()) {
                                iw.getElement().getStyle().setProperty("width", oldWidth);
                            } else {
                                iw.getElement().getStyle().clearWidth();
                            }
                            String oldMargin = margins.remove(iw);
                            if (oldMargin != null && !oldMargin.isEmpty()) {
                                iw.getElement().getStyle().setProperty("marginLeft", oldMargin);
                            } else {
                                iw.getElement().getStyle().clearMarginLeft();
                            }
                            content.add(iw);
                        }
                        content.onResize();
                    }

                });
                pp.showRelativeTo(chevron);
                Scheduler.get().scheduleDeferred(new ScheduledCommand() {

                    @Override
                    public void execute() {
                        for (int i = 0; i < vp.getWidgetCount(); i++) {
                            Widget w = vp.getWidget(i);
                            assert w instanceof SimplePanel;
                            SimplePanel sp = (SimplePanel) w;
                            Widget iw = sp.getWidget();
                            int width = sp.getElement().getOffsetWidth();
                            int height = iw.getElement().getOffsetHeight();
                            sp.getElement().getStyle().setWidth(width, Style.Unit.PX);
                            sp.getElement().getStyle().setHeight(height, Style.Unit.PX);
                            iw.getElement().getStyle().setPosition(Style.Position.ABSOLUTE);
                            iw.getElement().getStyle().setLeft(0, Style.Unit.PX);
                            iw.getElement().getStyle().setRight(0, Style.Unit.PX);
                            iw.getElement().getStyle().clearWidth();
                            iw.getElement().getStyle().clearMarginLeft();
                            //if (iw instanceof FocusWidget) {
                            iw.getElement().getStyle().clearRight();
                            iw.getElement().getStyle().setWidth(100, Style.Unit.PCT);
                            com.bearsoft.gwt.ui.CommonResources.INSTANCE.commons().ensureInjected();
                            iw.getElement().addClassName(
                                    com.bearsoft.gwt.ui.CommonResources.INSTANCE.commons().borderSized());
                            //}
                            if (iw instanceof RequiresResize) {
                                ((RequiresResize) iw).onResize();
                            }
                        }
                    }
                });
            }
        }
    }, ClickEvent.getType());
    getElement().<XElement>cast().addResizingTransitionEnd(this);
}

From source file:com.bearsoft.gwt.ui.widgets.DropDownButton.java

protected void showMenu() {
    if (menu != null) {
        final PopupPanel pp = new PopupPanel();
        pp.setAutoHideEnabled(true);//from   w w w. j  a  va 2  s.com
        pp.setAutoHideOnHistoryEventsEnabled(true);
        pp.setAnimationEnabled(true);
        pp.setWidget(menu);
        pp.showRelativeTo(chevron);
    }
}

From source file:com.bearsoft.gwt.ui.widgets.grid.Grid.java

public Grid(ProvidesKey<T> aKeyProvider) {
    super();/*from   ww w.  j  a va2 s  .  com*/
    getElement().getStyle().setPosition(Style.Position.RELATIVE);
    getElement().appendChild(tdsStyleElement);
    getElement().appendChild(cellsStyleElement);
    getElement().appendChild(oddRowsStyleElement);
    getElement().appendChild(evenRowsStyleElement);
    setRowsHeight(25);
    hive = new FlexTable();
    setWidget(hive);
    hive.setCellPadding(0);
    hive.setCellSpacing(0);
    hive.setBorderWidth(0);
    headerLeft = new GridSection<T>(aKeyProvider);
    headerLeftContainer = new ScrollPanel(headerLeft);
    headerRight = new GridSection<T>(aKeyProvider);
    headerRightContainer = new ScrollPanel(headerRight);
    frozenLeft = new GridSection<T>(aKeyProvider) {

        @Override
        protected void replaceAllChildren(List<T> values, SafeHtml html) {
            super.replaceAllChildren(values, html);
            footerLeft.redrawFooters();
        }

        @Override
        protected void replaceChildren(List<T> values, int start, SafeHtml html) {
            super.replaceChildren(values, start, html);
            footerLeft.redrawFooters();
        }

    };

    frozenLeftContainer = new ScrollPanel(frozenLeft);
    frozenRight = new GridSection<T>(aKeyProvider) {

        @Override
        protected void replaceAllChildren(List<T> values, SafeHtml html) {
            super.replaceAllChildren(values, html);
            footerRight.redrawFooters();
        }

        @Override
        protected void replaceChildren(List<T> values, int start, SafeHtml html) {
            super.replaceChildren(values, start, html);
            footerRight.redrawFooters();
        }

    };
    frozenRightContainer = new ScrollPanel(frozenRight);
    scrollableLeft = new GridSection<T>(aKeyProvider) {

        @Override
        protected void replaceAllChildren(List<T> values, SafeHtml html) {
            super.replaceAllChildren(values, html);
            footerLeft.redrawFooters();
        }

        @Override
        protected void replaceChildren(List<T> values, int start, SafeHtml html) {
            super.replaceChildren(values, start, html);
            footerLeft.redrawFooters();
        }

    };
    scrollableLeftContainer = new ScrollPanel(scrollableLeft);
    scrollableRight = new GridSection<T>(aKeyProvider) {

        @Override
        protected void replaceAllChildren(List<T> values, SafeHtml html) {
            super.replaceAllChildren(values, html);
            footerRight.redrawFooters();
        }

        @Override
        protected void replaceChildren(List<T> values, int start, SafeHtml html) {
            super.replaceChildren(values, start, html);
            footerRight.redrawFooters();
        }
    };
    scrollableRightContainer = new ScrollPanel(scrollableRight);
    footerLeft = new GridSection<>(aKeyProvider);
    footerLeftContainer = new ScrollPanel(footerLeft);
    footerRight = new GridSection<>(aKeyProvider);
    footerRightContainer = new ScrollPanel(footerRight);
    // positioning context / overflow setup
    // overflow
    for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer,
            frozenRightContainer, scrollableLeftContainer, footerLeftContainer, footerRightContainer }) {
        w.getElement().getStyle().setOverflow(Style.Overflow.HIDDEN);
    }
    // scrollableRightContainer.getElement().getStyle().setOverflow(Style.Overflow.AUTO);
    // default value
    // context
    for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer,
            frozenRightContainer, scrollableLeftContainer, scrollableRightContainer, footerLeftContainer,
            footerRightContainer }) {
        w.getElement().getFirstChildElement().getStyle().setPosition(Style.Position.ABSOLUTE);
    }
    // propagation of some widths
    headerLeft.setWidthPropagator(new GridWidthPropagator<T>(headerLeft) {

        @Override
        public void changed() {
            super.changed();
            propagateHeaderWidth();
        }

    });
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenLeft,
            frozenRight, scrollableLeft, scrollableRight, footerLeft, footerRight }) {
        section.setWidthPropagator(new GridWidthPropagator<>(section));
    }
    headerLeft.setColumnsPartners(new AbstractCellTable[] { frozenLeft, scrollableLeft, footerLeft });
    headerRight.setColumnsPartners(new AbstractCellTable[] { frozenRight, scrollableRight, footerRight });
    ColumnsRemover leftColumnsRemover = new ColumnsRemoverAdapter<T>(headerLeft, frozenLeft, scrollableLeft,
            footerLeft);
    ColumnsRemover rightColumnsRemover = new ColumnsRemoverAdapter<T>(headerRight, frozenRight, scrollableRight,
            footerRight);
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerLeft, frozenLeft,
            scrollableLeft, footerLeft }) {
        section.setColumnsRemover(leftColumnsRemover);
    }
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenRight,
            scrollableRight, footerRight }) {
        section.setColumnsRemover(rightColumnsRemover);
    }
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { frozenLeft, scrollableLeft,
            footerLeft }) {
        section.setHeaderSource(headerLeft);
    }
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { frozenRight, scrollableRight,
            footerRight }) {
        section.setHeaderSource(headerRight);
    }
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerLeft, frozenLeft,
            scrollableLeft }) {
        section.setFooterSource(footerLeft);
    }
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenRight,
            scrollableRight }) {
        section.setFooterSource(footerRight);
    }

    // hive organization
    hive.setWidget(0, 0, headerLeftContainer);
    hive.setWidget(0, 1, headerRightContainer);
    hive.setWidget(1, 0, frozenLeftContainer);
    hive.setWidget(1, 1, frozenRightContainer);
    hive.setWidget(2, 0, scrollableLeftContainer);
    hive.setWidget(2, 1, scrollableRightContainer);
    hive.setWidget(3, 0, footerLeftContainer);
    hive.setWidget(3, 1, footerRightContainer);

    for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer,
            frozenRightContainer, scrollableLeftContainer, scrollableRightContainer, footerLeftContainer,
            footerRightContainer }) {
        w.setWidth("100%");
        w.setHeight("100%");
    }
    // misc
    for (Widget w : new Widget[] { headerRightContainer, frozenRightContainer, footerRightContainer,
            scrollableLeftContainer }) {
        w.getElement().getParentElement().getStyle().setOverflow(Style.Overflow.HIDDEN);
    }
    hive.getElement().getStyle().setTableLayout(Style.TableLayout.FIXED);
    hive.getElement().getStyle().setPosition(Style.Position.RELATIVE);
    for (CellTable<?> tbl : new CellTable<?>[] { headerLeft, headerRight, frozenLeft, frozenRight,
            scrollableLeft, scrollableRight, footerLeft, footerRight }) {
        tbl.setTableLayoutFixed(true);
    }
    // header
    headerLeft.setHeaderBuilder(new ThemedHeaderOrFooterBuilder<T>(headerLeft, false, this));
    headerLeft.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(headerLeft, true));
    headerRight.setHeaderBuilder(new ThemedHeaderOrFooterBuilder<T>(headerRight, false, this));
    headerRight.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(headerRight, true));
    // footer
    footerLeft.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(footerLeft, false));
    footerLeft.setFooterBuilder(new ThemedHeaderOrFooterBuilder<T>(footerLeft, true));
    footerRight.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(footerRight, false));
    footerRight.setFooterBuilder(new ThemedHeaderOrFooterBuilder<T>(footerRight, true));
    // data bodies
    for (GridSection<?> section : new GridSection<?>[] { frozenLeft, frozenRight, scrollableLeft,
            scrollableRight }) {
        GridSection<T> gSection = (GridSection<T>) section;
        gSection.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(gSection, false));
        gSection.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(gSection, true));
    }
    for (GridSection<?> section : new GridSection<?>[] { headerLeft, headerRight, frozenLeft, frozenRight,
            scrollableLeft, scrollableRight, footerLeft, footerRight }) {
        section.setAutoHeaderRefreshDisabled(true);
    }
    for (GridSection<?> section : new GridSection<?>[] { headerLeft, headerRight, footerLeft, footerRight }) {
        section.setAutoFooterRefreshDisabled(true);
    }
    // cells
    installCellBuilders();

    scrollableRightContainer.addScrollHandler(new ScrollHandler() {

        @Override
        public void onScroll(ScrollEvent event) {
            int aimTop = scrollableRightContainer.getElement().getScrollTop();
            int aimLeft = scrollableRightContainer.getElement().getScrollLeft();

            scrollableLeftContainer.getElement().setScrollTop(aimTop);
            int factTopDelta = aimTop - scrollableLeftContainer.getElement().getScrollTop();
            if (factTopDelta > 0) {
                scrollableLeftContainer.getElement().getStyle().setBottom(factTopDelta, Style.Unit.PX);
            } else {
                scrollableLeftContainer.getElement().getStyle().clearBottom();
            }
            headerRightContainer.getElement().setScrollLeft(aimLeft);
            int factLeftDelta0 = aimLeft - headerRightContainer.getElement().getScrollLeft();
            if (factLeftDelta0 > 0) {
                headerRightContainer.getElement().getStyle().setRight(factLeftDelta0, Style.Unit.PX);
            } else {
                headerRightContainer.getElement().getStyle().clearRight();
            }
            frozenRightContainer.getElement().setScrollLeft(aimLeft);
            int factLeftDelta1 = aimLeft - frozenRightContainer.getElement().getScrollLeft();
            if (factLeftDelta1 > 0) {
                frozenRightContainer.getElement().getStyle().setRight(factLeftDelta1, Style.Unit.PX);
            } else {
                frozenRightContainer.getElement().getStyle().clearRight();
            }
            footerRightContainer.getElement()
                    .setScrollLeft(scrollableRightContainer.getElement().getScrollLeft());
            int factLeftDelta2 = aimLeft - footerRightContainer.getElement().getScrollLeft();
            if (factLeftDelta2 > 0) {
                footerRightContainer.getElement().getStyle().setRight(factLeftDelta2, Style.Unit.PX);
            } else {
                footerRightContainer.getElement().getStyle().clearRight();
            }
        }

    });
    ghostLine = Document.get().createDivElement();
    ghostLine.addClassName(RULER_STYLE);
    ghostLine.getStyle().setPosition(Style.Position.ABSOLUTE);
    ghostLine.getStyle().setTop(0, Style.Unit.PX);
    ghostColumn = Document.get().createDivElement();
    ghostColumn.addClassName(COLUMN_PHANTOM_STYLE);
    ghostColumn.getStyle().setPosition(Style.Position.ABSOLUTE);
    ghostColumn.getStyle().setTop(0, Style.Unit.PX);
    addDomHandler(new DragEnterHandler() {

        @Override
        public void onDragEnter(DragEnterEvent event) {
            if (DraggedColumn.instance != null) {
                if (DraggedColumn.instance.isMove()) {
                    event.preventDefault();
                    event.stopPropagation();
                    DraggedColumn<T> target = findTargetDraggedColumn(event.getNativeEvent().getEventTarget());
                    if (target != null) {
                        showColumnMoveDecorations(target);
                        event.getDataTransfer().<XDataTransfer>cast().setDropEffect("move");
                    } else {
                        event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none");
                    }
                } else {
                }
            } else {
                event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none");
            }
        }
    }, DragEnterEvent.getType());
    addDomHandler(new DragHandler() {

        @Override
        public void onDrag(DragEvent event) {
            if (DraggedColumn.instance != null && DraggedColumn.instance.isResize()) {
                event.stopPropagation();
                /*
                int newWidth = event.getNativeEvent().getClientX() - DraggedColumn.instance.getCellElement().getAbsoluteLeft();
                if (newWidth > MINIMUM_COLUMN_WIDTH) {
                   event.getDataTransfer().<XDataTransfer> cast().setDropEffect("move");
                } else {
                   event.getDataTransfer().<XDataTransfer> cast().setDropEffect("none");
                }
                */
            }
        }
    }, DragEvent.getType());
    addDomHandler(new DragOverHandler() {

        @Override
        public void onDragOver(DragOverEvent event) {
            if (DraggedColumn.instance != null) {
                event.preventDefault();
                event.stopPropagation();
                if (DraggedColumn.instance.isMove()) {
                    DraggedColumn<T> target = findTargetDraggedColumn(event.getNativeEvent().getEventTarget());
                    if (target != null) {
                        event.getDataTransfer().<XDataTransfer>cast().setDropEffect("move");
                    } else {
                        hideColumnDecorations();
                        event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none");
                    }
                } else {
                    Element hostElement = Grid.this.getElement();
                    int clientX = event.getNativeEvent().getClientX();
                    int hostAbsX = hostElement.getAbsoluteLeft();
                    int hostScrollX = hostElement.getScrollLeft();
                    int docScrollX = hostElement.getOwnerDocument().getScrollLeft();
                    int relativeX = clientX - hostAbsX + hostScrollX + docScrollX;
                    ghostLine.getStyle().setLeft(relativeX, Style.Unit.PX);
                    ghostLine.getStyle().setHeight(hostElement.getClientHeight(), Style.Unit.PX);
                    if (ghostLine.getParentElement() != hostElement) {
                        hostElement.appendChild(ghostLine);
                    }
                }
            }
        }
    }, DragOverEvent.getType());
    addDomHandler(new DragLeaveHandler() {

        @Override
        public void onDragLeave(DragLeaveEvent event) {
            if (DraggedColumn.instance != null) {
                event.stopPropagation();
                if (DraggedColumn.instance.isMove()) {
                    if (event.getNativeEvent().getEventTarget() == (JavaScriptObject) Grid.this.getElement()) {
                        hideColumnDecorations();
                    }
                }
            }
        }
    }, DragLeaveEvent.getType());
    addDomHandler(new DragEndHandler() {

        @Override
        public void onDragEnd(DragEndEvent event) {
            event.stopPropagation();
            hideColumnDecorations();
            DraggedColumn.instance = null;
        }
    }, DragEndEvent.getType());
    addDomHandler(new DropHandler() {

        @Override
        public void onDrop(DropEvent event) {
            DraggedColumn<?> source = DraggedColumn.instance;
            DraggedColumn<T> target = targetDraggedColumn;
            hideColumnDecorations();
            DraggedColumn.instance = null;
            if (source != null) {
                event.preventDefault();
                event.stopPropagation();
                if (source.isMove()) {
                    AbstractCellTable<T> sourceSection = (AbstractCellTable<T>) source.getTable();
                    // target table may be any section in our grid
                    if (target != null) {
                        Header<?> sourceHeader = source.getHeader();
                        Header<?> targetHeader = target.getHeader();
                        if (sourceHeader instanceof DraggableHeader<?>
                                && targetHeader instanceof DraggableHeader<?>) {
                            DraggableHeader<T> sourceDH = (DraggableHeader<T>) sourceHeader;
                            DraggableHeader<T> targetDH = (DraggableHeader<T>) targetHeader;
                            moveColumnNode(sourceDH.getHeaderNode(), targetDH.getHeaderNode());
                        } else {
                            int sourceIndex = source.getColumnIndex();
                            int targetIndex = target.getColumnIndex();
                            GridSection<T> targetSection = (GridSection<T>) target.getTable();

                            boolean isSourceLeft = sourceSection == headerLeft || sourceSection == frozenLeft
                                    || sourceSection == scrollableLeft || sourceSection == footerLeft;
                            boolean isTargetLeft = targetSection == headerLeft || targetSection == frozenLeft
                                    || targetSection == scrollableLeft || targetSection == footerLeft;
                            sourceSection = isSourceLeft ? headerLeft : headerRight;
                            targetSection = isTargetLeft ? headerLeft : headerRight;
                            int generalSourceIndex = isSourceLeft ? sourceIndex : sourceIndex + frozenColumns;
                            int generalTargetIndex = isTargetLeft ? targetIndex : targetIndex + frozenColumns;
                            Header<?> header = sourceSection.getHeader(sourceIndex);
                            if (header instanceof DraggableHeader) {
                                ((DraggableHeader) header).setTable(targetSection);
                            }
                            if (generalSourceIndex != generalTargetIndex) {
                                Column<T, ?> column = (Column<T, ?>) source.getColumn();
                                if (!(header instanceof DraggableHeader)
                                        || ((DraggableHeader) header).isMoveable()) {
                                    moveColumn(generalSourceIndex, generalTargetIndex);
                                }
                            }
                        }
                    }
                } else {
                    Header<?> header = source.getHeader();
                    if (!(header instanceof DraggableHeader) || ((DraggableHeader) header).isResizable()) {
                        int newWidth = Math.max(
                                event.getNativeEvent().getClientX() - source.getCellElement().getAbsoluteLeft(),
                                MINIMUM_COLUMN_WIDTH);
                        // Source and target tables are the same, so we can
                        // cast to DraggedColumn<T> with no care
                        setColumnWidthFromHeaderDrag(((DraggedColumn<T>) source).getColumn(), newWidth,
                                Style.Unit.PX);
                    }
                }
            }
        }
    }, DropEvent.getType());

    columnsChevron.getElement().getStyle().setPosition(Style.Position.ABSOLUTE);
    columnsChevron.getElement().addClassName(COLUMNS_CHEVRON_STYLE);
    getElement().appendChild(columnsChevron.getElement());
    columnsChevron.addDomHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            PopupPanel pp = new PopupPanel();
            pp.setAutoHideEnabled(true);
            pp.setAutoHideOnHistoryEventsEnabled(true);
            pp.setAnimationEnabled(true);
            MenuBar columnsMenu = new MenuBar(true);
            fillColumns(columnsMenu, headerLeft);
            fillColumns(columnsMenu, headerRight);
            pp.setWidget(columnsMenu);
            pp.setPopupPosition(columnsChevron.getAbsoluteLeft(), columnsChevron.getAbsoluteTop());
            pp.showRelativeTo(columnsChevron);
        }

        private void fillColumns(MenuBar aTarget, final GridSection<T> aSection) {
            for (int i = 0; i < aSection.getColumnCount(); i++) {
                Header<?> h = aSection.getHeader(i);
                final Column<T, ?> column = aSection.getColumn(i);
                SafeHtml rendered;
                if (h.getValue() instanceof String) {
                    String hVal = (String) h.getValue();
                    rendered = hVal.startsWith("<html>") ? SafeHtmlUtils.fromTrustedString(hVal.substring(6))
                            : SafeHtmlUtils.fromString(hVal);
                } else {
                    Cell.Context context = new Cell.Context(0, i, h.getKey());
                    SafeHtmlBuilder sb = new SafeHtmlBuilder();
                    h.render(context, sb);
                    rendered = sb.toSafeHtml();
                }
                MenuItemCheckBox miCheck = new MenuItemCheckBox(!aSection.isColumnHidden(column),
                        rendered.asString(), true);
                miCheck.addValueChangeHandler(new ValueChangeHandler<Boolean>() {

                    @Override
                    public void onValueChange(ValueChangeEvent<Boolean> event) {
                        if (Boolean.TRUE.equals(event.getValue())) {
                            showColumn(column);
                        } else {
                            hideColumn(column);
                        }
                        Grid.this.onResize();
                    }

                });
                aTarget.addItem(miCheck);
            }
        }

    }, ClickEvent.getType());

    ColumnSortEvent.Handler sectionSortHandler = new ColumnSortEvent.Handler() {

        @Override
        public void onColumnSort(ColumnSortEvent event) {
            boolean isCtrlKey = ((GridSection<?>) event.getSource()).isCtrlKey();
            boolean contains = false;
            int containsAt = -1;
            for (int i = 0; i < sortList.size(); i++) {
                if (sortList.get(i).getColumn() == event.getColumn()) {
                    contains = true;
                    containsAt = i;
                    break;
                }
            }
            if (!contains) {
                if (!isCtrlKey) {
                    sortList.clear();
                }
                sortList.insert(sortList.size(), new ColumnSortList.ColumnSortInfo(event.getColumn(), true));
            } else {
                boolean wasAscending = sortList.get(containsAt).isAscending();
                if (!isCtrlKey) {
                    sortList.clear();
                    if (wasAscending) {
                        sortList.push(new ColumnSortList.ColumnSortInfo(event.getColumn(), false));
                    }
                } else {
                    sortList.remove(sortList.get(containsAt));
                    if (wasAscending) {
                        sortList.insert(containsAt,
                                new ColumnSortList.ColumnSortInfo(event.getColumn(), false));
                    }
                }
            }
            ColumnSortEvent.fire(Grid.this, sortList);
        }
    };
    headerLeft.getColumnSortList().setLimit(1);
    headerLeft.addColumnSortHandler(sectionSortHandler);
    headerRight.getColumnSortList().setLimit(1);
    headerRight.addColumnSortHandler(sectionSortHandler);
    gridColor = PublishedColor.create(211, 211, 211, 255);
    regenerateDynamicTDStyles();
    regenerateDynamicOddRowsStyles();
    getElement().<XElement>cast().addResizingTransitionEnd(this);
}

From source file:com.eas.widgets.boxes.DropDownButton.java

protected void showMenu() {
    if (menu != null) {
        final PopupPanel pp = new PopupPanel();
        pp.setAutoHideEnabled(true);/*from  w  w  w.ja v  a 2  s  .c  om*/
        pp.setAutoHideOnHistoryEventsEnabled(true);
        pp.setAnimationEnabled(true);
        pp.setWidget(menu);
        pp.showRelativeTo(chevronMenu);
    }
}

From source file:com.education.lessons.ui.client.login.utils.UIHelper.java

License:Open Source License

public static void tip(String message, UIObject target) {
    HTML messageLabel = new HTML(message);
    messageLabel.addStyleName("content");

    PopupPanel tip = new DecoratedPopupPanel(true);
    tip.addStyleName("tip-box");
    tip.setWidget(messageLabel);
    tip.showRelativeTo(target);/*  w  w  w .ja v  a  2 s .c  om*/
}

From source file:com.google.api.explorer.client.history.JsonPrettifier.java

License:Apache License

/**
 * Create a drop down menu that allows the user to navigate to compatible methods for the
 * specified resource.//from w  ww .  j  av a  2s .  c  om
 *
 * @param methods Methods for which to build the menu.
 * @param service Service to which the methods correspond.
 * @param objectToPackage Object which should be passed to the destination menus.
 * @param linkFactory Factory that will be used to create links.
 * @return A button that will show the menu that was generated or {@code null} if there are no
 *         compatible methods.
 */
private static PushButton createRequestMenu(final Collection<ApiMethod> methods, final ApiService service,
        DynamicJso objectToPackage, PrettifierLinkFactory linkFactory) {

    // Determine if a menu even needs to be generated.
    if (methods.isEmpty()) {
        return null;
    }

    // Create the parameters that will be passed to the destination menu.
    String resourceContents = new JSONObject(objectToPackage).toString();
    final Multimap<String, String> resourceParams = ImmutableMultimap.of(UrlBuilder.BODY_QUERY_PARAM_KEY,
            resourceContents);

    // Create the menu itself.
    FlowPanel menuContents = new FlowPanel();

    // Add a description of what the menu does.
    Label header = new Label("Use this resource in one of the following methods:");
    header.addStyleName(style.dropDownMenuItem());
    menuContents.add(header);

    // Add a menu item for each method.
    for (ApiMethod method : methods) {
        PushButton methodItem = new PushButton();
        methodItem.addStyleName(style.dropDownMenuItem());
        methodItem.addStyleName(style.selectableDropDownMenuItem());
        methodItem.setText(method.getId());
        menuContents.add(methodItem);

        // When clicked, Navigate to the menu item.
        UrlBuilder builder = new UrlBuilder();
        String newUrl = builder.addRootNavigationItem(RootNavigationItem.ALL_VERSIONS)
                .addService(service.getName(), service.getVersion()).addMethodName(method.getId())
                .addQueryParams(resourceParams).toString();
        methodItem.addClickHandler(linkFactory.generateMenuHandler(newUrl));
    }

    // Create the panel which will be disclosed.
    final PopupPanel popupMenu = new PopupPanel(/* auto hide */ true);
    popupMenu.setStyleName(style.dropDownMenuPopup());

    FocusPanel focusContents = new FocusPanel();
    focusContents.addMouseOutHandler(new MouseOutHandler() {
        @Override
        public void onMouseOut(MouseOutEvent event) {
            popupMenu.hide();
        }
    });
    focusContents.setWidget(menuContents);

    popupMenu.setWidget(focusContents);

    // Create the button which will disclose the menu.
    final PushButton menuButton = new PushButton(new Image(resources.downArrow()));
    menuButton.addStyleName(style.reusableResourceButton());

    menuButton.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            popupMenu.setPopupPositionAndShow(new PositionCallback() {
                @Override
                public void setPosition(int offsetWidth, int offsetHeight) {
                    popupMenu.setPopupPosition(
                            menuButton.getAbsoluteLeft() + menuButton.getOffsetWidth() - offsetWidth,
                            menuButton.getAbsoluteTop() + menuButton.getOffsetHeight());
                }
            });
        }
    });

    // Return only the button to the caller.
    return menuButton;
}