Example usage for com.google.gwt.dom.client Element getClientHeight

List of usage examples for com.google.gwt.dom.client Element getClientHeight

Introduction

In this page you can find the example usage for com.google.gwt.dom.client Element getClientHeight.

Prototype

@Override
    public int getClientHeight() 

Source Link

Usage

From source file:com.ait.toolkit.clientio.canvg.client.CanVgParser.java

License:Open Source License

public static ByteArray getFromSgvElement(Element chartElement) {
    assert chartElement != null : "Element cant be null";
    int width = chartElement.getClientWidth();
    int height = chartElement.getClientHeight();
    return getFromSgvElement(chartElement, width, height);
}

From source file:com.alkacon.geranium.client.dnd.DNDHandler.java

License:Open Source License

/**
 * Execute on mouse wheel event.<p>
 * //from   www .  jav  a 2s  .  c om
 * @param event the native event
 */
protected void onMouseWheelScroll(Event event) {

    int scrollStep = event.getMouseWheelVelocityY() * 5;
    Element scrollTarget;
    if (getCurrentTarget() != null) {
        scrollTarget = getCurrentTarget().getElement();
    } else {
        scrollTarget = RootPanel.getBodyElement();
    }
    while ((scrollTarget.getScrollHeight() == scrollTarget.getClientHeight())
            && (scrollTarget != RootPanel.getBodyElement())) {
        scrollTarget = scrollTarget.getParentElement();
    }
    if (scrollTarget == RootPanel.getBodyElement()) {
        int top = Window.getScrollTop() + scrollStep;
        int left = Window.getScrollLeft();
        if (top < 0) {
            top = 0;
        }
        Window.scrollTo(left, top);
    } else {
        int top = scrollTarget.getScrollTop() + scrollStep;
        if (top < 0) {
            top = 0;
        }
        scrollTarget.setScrollTop(top);
    }
    onMove(event);
}

From source file:com.alkacon.geranium.client.dnd.DNDHandler.java

License:Open Source License

/**
 * Convenience method to get the appropriate scroll direction.<p>
 * /*ww w.  ja  v  a 2 s  .  c o  m*/
 * @param offset the scroll parent border offset, if the cursor is within the border offset, scrolling should be triggered
 * 
 * @return the scroll direction
 */
private Direction getScrollDirection(int offset) {

    if (m_scrollElement == null) {
        Element body = RootPanel.getBodyElement();
        int windowHeight = Window.getClientHeight();
        int bodyHeight = body.getClientHeight();
        if (windowHeight < bodyHeight) {
            if (((windowHeight - m_clientY) < offset)
                    && (Window.getScrollTop() < (bodyHeight - windowHeight))) {
                return Direction.down;
            }
            if ((m_clientY < offset) && (Window.getScrollTop() > 0)) {
                return Direction.up;
            }
        }

        int windowWidth = Window.getClientWidth();
        int bodyWidth = body.getClientWidth();
        if (windowWidth < bodyWidth) {
            if (((windowWidth - m_clientX) < offset) && (Window.getScrollLeft() < (bodyWidth - windowWidth))) {
                return Direction.right;
            }
            if ((m_clientX < offset) && (Window.getScrollLeft() > 0)) {
                return Direction.left;
            }
        }

        return null;
    } else {
        int outerHeight = m_scrollElement.getClientHeight();
        int innerHeight = m_scrollElement.getScrollHeight();
        if (outerHeight < innerHeight) {
            if ((((outerHeight + m_scrollElement.getAbsoluteTop()) - m_clientY) < offset)
                    && (m_scrollElement.getScrollTop() < (innerHeight - outerHeight))) {
                return Direction.down;
            }
            if (((m_clientY - m_scrollElement.getAbsoluteTop()) < offset)
                    && (m_scrollElement.getScrollTop() > 0)) {
                return Direction.up;
            }
        }
        int outerWidth = m_scrollElement.getClientWidth();
        int innerWidth = m_scrollElement.getScrollWidth();
        if (outerWidth < innerWidth) {
            if ((((outerWidth + m_scrollElement.getAbsoluteLeft()) - m_clientX) < offset)
                    && (m_scrollElement.getScrollLeft() < (innerWidth - outerWidth))) {
                return Direction.right;
            }
            if (((m_clientX - m_scrollElement.getAbsoluteLeft()) < offset)
                    && (m_scrollElement.getScrollLeft() > 0)) {
                return Direction.left;
            }
        }
        return null;
    }
}

From source file:com.arcbees.gquery.elastic.client.ElasticImpl.java

License:Apache License

private void readItemHeight(Element e) {
    StyleInfo si = getStyleInfo(e);
    si.height = e.getClientHeight();
}

From source file:com.axlight.gbrain.client.MainPane.java

License:Apache License

public MainPane() {
    nodeManager = new NodeManager();

    nullCallback = new AsyncCallback<Void>() {
        public void onFailure(Throwable caught) {
            GWT.log("Network error!", caught);
            showAlertDialog("Network error!");
        }/*from www  .  j  a va  2  s  .c om*/

        public void onSuccess(Void ignored) {
            // nothing
        }
    };

    ClickHandler borderClickHandler = new ClickHandler() {
        public void onClick(ClickEvent event) {
            int left = getWindowScrollLeft();
            int top = getWindowScrollTop();
            int screenWidth = getWindowScreenWidth();
            int screenHeight = getWindowScreenHeight();
            int prevCenterPosX = viewX + left + screenWidth / 2;
            int prevCenterPosY = viewY + top + screenHeight / 2;
            relocateCenter(prevCenterPosX, prevCenterPosY);
        }
    };

    borderNorth = new SimplePanel();
    borderNorth.addDomHandler(borderClickHandler, ClickEvent.getType());
    borderNorth.getElement().getStyle().setBackgroundColor("#445566");
    borderEast = new SimplePanel();
    borderEast.addDomHandler(borderClickHandler, ClickEvent.getType());
    borderEast.getElement().getStyle().setBackgroundColor("#445566");
    borderSouth = new SimplePanel();
    borderSouth.addDomHandler(borderClickHandler, ClickEvent.getType());
    borderSouth.getElement().getStyle().setBackgroundColor("#445566");
    borderWest = new SimplePanel();
    borderWest.addDomHandler(borderClickHandler, ClickEvent.getType());
    borderWest.getElement().getStyle().setBackgroundColor("#445566");

    Image image;
    if (GBrain.isIPhone) {
        image = new Image("images/create_button.svg");
    } else {
        image = new Image("images/create_button.png");
    }
    PushButton createButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            showCreateDialog();
        }
    });
    createButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    createButton.setTitle("Create a new text");

    if (GBrain.isIPhone) {
        image = new Image("images/delete_button.svg");
    } else {
        image = new Image("images/delete_button.png");
    }
    PushButton deleteButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            if (selectNode.getChildren() > 0) {
                showAlertDialog("You can't delete it with children.");
                return;
            }
            final NeuronNode tmpSelectNode = selectNode;
            String content = tmpSelectNode.getContent();
            final long id = tmpSelectNode.getId();
            showConfirmDialog("Are you sure you want to delete\n'" + content + "' ?", new ClickHandler() {
                public void onClick(ClickEvent event) {
                    gbrainService.deleteNeuron(id, new AsyncCallback<Void>() {
                        public void onFailure(Throwable caught) {
                            GWT.log("Network error!", caught);
                            showAlertDialog("Network error!");
                        }

                        public void onSuccess(Void ignored) {
                            Long parentId = tmpSelectNode.getParentId();
                            if (parentId != null) {
                                NeuronNode parentNode = nodeManager.getNode(parentId);
                                if (parentNode != null) {
                                    parentNode.decreaseChildren();
                                }
                            }
                            removeNode(tmpSelectNode);
                        }
                    });
                }
            });
        }
    });
    deleteButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    deleteButton.setTitle("Delete text");

    if (GBrain.isIPhone) {
        image = new Image("images/noparent_button.svg");
    } else {
        image = new Image("images/noparent_button.png");
    }
    PushButton noparentButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            NeuronNode n = selectNode;
            if (n.getParentId() != null) {
                replaceParent(n, null);
                gbrainService.removeParent(n.getId(), nullCallback);
            }
        }
    });
    noparentButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    noparentButton.setTitle("Remove parent link");

    if (GBrain.isIPhone) {
        image = new Image("images/open_button.svg");
    } else {
        image = new Image("images/open_button.png");
    }
    PushButton openButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            refreshChildNeurons(selectNode.getId());
        }
    });
    openButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    openButton.setTitle("Open children");

    if (GBrain.isIPhone) {
        image = new Image("images/close_button.svg");
    } else {
        image = new Image("images/close_button.png");
    }
    PushButton closeButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            removeChildNodes(selectNode);
        }
    });
    closeButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    closeButton.setTitle("Close children");

    if (GBrain.isIPhone) {
        image = new Image("images/arrange_button.svg");
    } else {
        image = new Image("images/arrange_button.png");
    }
    PushButton arrangeButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            NeuronNode n = selectNode;
            nodeManager.arrangeAllChildNodes(n);
            updatePositionNodeAndChildNodes(n);
        }
    });
    arrangeButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    arrangeButton.setTitle("Arrange children");

    if (GBrain.isIPhone) {
        image = new Image("images/up_button.svg");
    } else {
        image = new Image("images/up_button.png");
    }
    PushButton upButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            NeuronNode n = nodeManager.getParentNode(selectNode.getId());
            if (n == null) {
                return;
            }
            handleNodeClick(n);
            slideToPosition(n.getPosX(), n.getPosY());
        }
    });
    upButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    upButton.setTitle("Jump to parent");

    if (GBrain.isIPhone) {
        image = new Image("images/down_button.svg");
    } else {
        image = new Image("images/down_button.png");
    }
    PushButton downButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            NeuronNode n = nodeManager.getFirstChildNode(selectNode.getId());
            if (n == null) {
                return;
            }
            handleNodeClick(n);
            slideToPosition(n.getPosX(), n.getPosY());
        }
    });
    downButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    downButton.setTitle("Jump to a child");

    if (GBrain.isIPhone) {
        image = new Image("images/prev_button.svg");
    } else {
        image = new Image("images/prev_button.png");
    }
    PushButton prevButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            NeuronNode n = nodeManager.getPreviousSiblingNode(selectNode.getId());
            if (n == null) {
                return;
            }
            handleNodeClick(n);
            slideToPosition(n.getPosX(), n.getPosY());
        }
    });
    prevButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    prevButton.setTitle("Jump to previous sibling");

    if (GBrain.isIPhone) {
        image = new Image("images/next_button.svg");
    } else {
        image = new Image("images/next_button.png");
    }
    PushButton nextButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            NeuronNode n = nodeManager.getNextSiblingNode(selectNode.getId());
            if (n == null) {
                return;
            }
            handleNodeClick(n);
            slideToPosition(n.getPosX(), n.getPosY());
        }
    });
    nextButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    nextButton.setTitle("Jump to next sibling");

    if (GBrain.isIPhone) {
        image = new Image("images/jump_button.svg");
    } else {
        image = new Image("images/jump_button.png");
    }
    PushButton jumpButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            jumpToUrl(selectNode);
        }
    });
    jumpButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    jumpButton.setTitle("Jump to URL");

    if (GBrain.isIPhone) {
        image = new Image("images/color_button.svg");
    } else {
        image = new Image("images/color_button.png");
    }
    PushButton colorButton = new PushButton(image, new ClickHandler() {
        public void onClick(ClickEvent event) {
            if (selectNode == null) {
                showAlertDialog("Nothing is selected.");
                return;
            }
            NeuronNode n = selectNode;
            n.setNextColor();
            gbrainService.updateColor(n.getId(), n.getColor(), nullCallback);
        }
    });
    colorButton.setPixelSize(BUTTON_SIZE, BUTTON_SIZE);
    colorButton.setTitle("Change color");

    buttonPanel = new FlowPanel();
    buttonPanel.add(createButton);
    buttonPanel.add(deleteButton);
    buttonPanel.add(noparentButton);
    buttonPanel.add(openButton);
    buttonPanel.add(closeButton);
    buttonPanel.add(arrangeButton);
    buttonPanel.add(upButton);
    buttonPanel.add(downButton);
    buttonPanel.add(prevButton);
    buttonPanel.add(nextButton);
    buttonPanel.add(jumpButton);
    buttonPanel.add(colorButton);

    drawArea = new DrawingArea(0, 0);
    drawArea.getElement().setId("gbrain-svgpanel");
    drawArea.getElement().getStyle().setBackgroundColor("#000000");

    this.add(drawArea, 0, 0);
    this.add(borderNorth, -100, -100); // initially not visible
    this.add(borderEast, -100, -100); // initially not visible
    this.add(borderSouth, -100, -100); // initially not visible
    this.add(borderWest, -100, -100); // initially not visible
    this.add(buttonPanel, -100, -100); // initially not visible

    coordinate = new Coordinate(drawArea);
    drawArea.add(coordinate);

    supportDragAndDrop();
    refreshTopNeurons();

    onResize();
    Element welcome = Document.get().getElementById("gbrain-welcome");
    welcome.getStyle().setLeft(viewWidth / 2 - welcome.getClientWidth() / 2, Unit.PX);
    welcome.getStyle().setTop(viewHeight / 2 - welcome.getClientHeight() / 2, Unit.PX);
    Window.addWindowScrollHandler(this);
}

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

public Grid(ProvidesKey<T> aKeyProvider) {
    super();//from  ww  w .  java  2 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.bearsoft.gwt.ui.widgets.grid.Grid.java

protected void showColumnMoveDecorations(DraggedColumn<T> target) {
    targetDraggedColumn = target;//w w w.  jav  a 2  s.  co m
    Element hostElement = getElement();
    Element thtdElement = target.getCellElement();
    int thLeft = thtdElement.getAbsoluteLeft();
    thLeft = thLeft - getAbsoluteLeft() + hostElement.getScrollLeft();
    ghostLine.getStyle().setLeft(thLeft, Style.Unit.PX);
    ghostLine.getStyle().setHeight(hostElement.getClientHeight(), Style.Unit.PX);
    ghostColumn.getStyle().setLeft(thLeft, Style.Unit.PX);
    ghostColumn.getStyle().setWidth(thtdElement.getOffsetWidth(), Style.Unit.PX);
    ghostColumn.getStyle().setHeight(hostElement.getClientHeight(), Style.Unit.PX);
    if (ghostLine.getParentElement() != hostElement) {
        ghostLine.removeFromParent();
        hostElement.appendChild(ghostLine);
    }
    if (ghostColumn.getParentElement() != hostElement) {
        ghostColumn.removeFromParent();
        hostElement.appendChild(ghostColumn);
    }
}

From source file:com.cgxlib.core.CGXHelper.java

License:Apache License

public static int documentHeight() {
    Element document = XQ.document.getDocumentElement();
    BodyElement body = XQ.body;/* w ww  .  j  av  a  2 s  .co m*/

    int maxBody = Math.max(body.getScrollHeight(), body.getOffsetHeight());
    int maxDocument = Math.max(document.getClientHeight(), document.getScrollHeight());
    maxDocument = Math.max(maxDocument, document.getOffsetHeight());
    maxDocument = Math.max(maxDocument, maxBody);

    return maxDocument;
}

From source file:com.cgxlib.core.component.modal.ModalBSViewHandler.java

License:Apache License

protected void adjustDialog() {
    Element documentElement = XQ.document.getDocumentElement();
    boolean modalIsOverflowing = root.get(0).getScrollHeight() > documentElement.getClientHeight();

    String right = this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth + "" : "";
    String left = !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth + "" : "";
    root.css("paddingLeft", left);
    root.css("paddingRight", right);
}

From source file:com.cgxlib.xq.client.impl.DocumentStyleImpl.java

License:Apache License

private void fixInlineElement(Element e) {
    if (e.getClientHeight() == 0 && e.getClientWidth() == 0 && "inline".equals(curCSS(e, "display", true))) {
        setStyleProperty(e, "display", "inline-block");
        setStyleProperty(e, "width", "auto");
        setStyleProperty(e, "height", "auto");
    }//from w w w. j av  a  2 s. co m
}