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

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

Introduction

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

Prototype

@Override
    public void setScrollLeft(int scrollLeft) 

Source Link

Usage

From source file:com.extjs.gxt.ui.client.widget.grid.GridView.java

License:sencha.com license

/**
 * Ensured the current row and column is visible.
 * //  w w w .java  2s . c  o  m
 * @param row the row index
 * @param col the column index
 * @param hscroll true to scroll horizontally if needed
 * @return the calculated point
 */
public Point ensureVisible(int row, int col, boolean hscroll) {
    if (grid == null || !grid.isViewReady() || row < 0 || row > ds.getCount()) {
        return null;
    }

    if (col == -1) {
        col = 0;
    }

    Element rowEl = getRow(row);
    Element cellEl = null;
    if (!(!hscroll && col == 0)) {
        while (cm.isHidden(col)) {
            col++;
        }
        cellEl = getCell(row, col);

    }

    if (rowEl == null) {
        return null;
    }

    Element c = scroller.dom;

    int ctop = 0;
    Element p = rowEl, stope = el.dom;
    while (p != null && p != stope) {
        ctop += p.getOffsetTop();
        p = p.getOffsetParent().cast();
    }
    ctop -= mainHd.dom.getOffsetHeight();

    int cbot = ctop + rowEl.getOffsetHeight();

    int ch = c.getOffsetHeight();
    int stop = c.getScrollTop();
    int sbot = stop + ch;

    if (ctop < stop) {
        c.setScrollTop(ctop);
    } else if (cbot > sbot) {
        if (hscroll && (cm.getTotalWidth() > scroller.getWidth() - scrollOffset)) {
            cbot += scrollOffset;
        }
        c.setScrollTop(cbot -= ch);
    }

    if (hscroll && cellEl != null) {
        int cleft = cellEl.getOffsetLeft();
        int cright = cleft + cellEl.getOffsetWidth();
        int sleft = c.getScrollLeft();
        int sright = sleft + c.getOffsetWidth();
        if (cleft < sleft) {
            c.setScrollLeft(cleft);
        } else if (cright > sright) {
            c.setScrollLeft(cright - scroller.getStyleWidth());
        }
    }

    return cellEl != null ? fly(cellEl).getXY() : new Point(c.getScrollLeft(), fly(rowEl).getY());
}

From source file:com.novartis.pcs.ontology.webapp.client.view.SVGView.java

License:Apache License

@Override
public void onViewTerm(ViewTermEvent event) {
    final Term term = event.getTerm();
    final Ontology ontology = term.getOntology();

    if (!ontology.isCodelist()) {
        service.loadSVG(term.getReferenceId(), new AsyncCallback<String>() {
            public void onFailure(Throwable caught) {
                GWT.log("Failed to load SVG", caught);
                ErrorView.instance().onUncaughtException(caught);
            }//from   ww w . j ava  2 s .  c  o  m

            public void onSuccess(String svg) {
                Element element = svgContainer.getElement();
                Element panelElement = panel.getElement();
                panelElement.setScrollLeft(0);
                panelElement.setScrollTop(0);
                element.setInnerHTML(svg);

                if (panelElement.getScrollWidth() > element.getClientWidth()
                        || panelElement.getScrollHeight() > element.getClientHeight()) {
                    scrollSVG(term.getReferenceId());
                }
            }
        });
    }
}

From source file:com.sencha.gxt.core.client.dom.XElement.java

License:sencha.com license

/**
 * Scrolls the element into view./*  w ww.  j av a  2 s. c o m*/
 * 
 * @param container the container element
 * @param hscroll <code>false</code> to disable horizontal scrolling.
 * @param offsetX X offset
 * @param offsetY Y offset
 */
public final void scrollIntoView(Element container, boolean hscroll, int offsetX, int offsetY) {
    Element c = container != null ? container : Document.get().getBody();

    Point o = getOffsetsTo(c);
    int l = o.getX();
    int t = o.getY();
    l = l + c.getScrollLeft();
    t = t + c.getScrollTop();
    int b = t + getOffsetHeight() + offsetY;
    int r = l + getOffsetWidth() + offsetX;

    int ch = c.getClientHeight();
    int ct = c.getScrollTop();
    int cb = ct + ch;

    if (getOffsetHeight() > ch || t < ct) {
        c.setScrollTop(t);
    } else if (b > cb) {
        c.setScrollTop(b - ch);
    }

    if (hscroll) {
        int cl = c.getScrollLeft();
        int cw = c.getClientWidth();
        int cr = cl + cw;

        if (getOffsetWidth() > cw || l < cl) {
            c.setScrollLeft(l);
        } else if (r > cr) {
            c.setScrollLeft(r - cw);
        }
    }
}

From source file:com.sencha.gxt.core.client.gestures.ScrollGestureRecognizer.java

License:sencha.com license

protected void onScrollMoveHorizontal(Element scrollElement, TouchData touch) {
    //horizontal scroll or both
    scrollElement.setScrollLeft(
            initialPosition.getX() + (touch.getStartPosition().getX() - touch.getLastPosition().getX()));
}

From source file:com.vaadin.client.WidgetUtil.java

License:Apache License

/**
 * Run workaround for webkits overflow auto issue.
 * /*w  w w  . j  av  a  2  s. co  m*/
 * See: our bug #2138 and https://bugs.webkit.org/show_bug.cgi?id=21462
 * 
 * @param elem
 *            with overflow auto
 */
public static void runWebkitOverflowAutoFix(final Element elem) {
    // Add max version if fix lands sometime to Webkit
    // Starting from Opera 11.00, also a problem in Opera
    if (BrowserInfo.get().requiresOverflowAutoFix()) {
        final String originalOverflow = elem.getStyle().getProperty("overflow");
        final String originalOverflowX = elem.getStyle().getProperty("overflowX");
        final String originalOverflowY = elem.getStyle().getProperty("overflowY");
        if ("hidden".equals(originalOverflow) || "hidden".equals(originalOverflowX)
                || "hidden".equals(originalOverflowY)) {
            return;
        }

        // check the scrolltop value before hiding the element
        final int scrolltop = elem.getScrollTop();
        final int scrollleft = elem.getScrollLeft();
        elem.getStyle().setProperty("overflow", "hidden");

        Scheduler.get().scheduleDeferred(new Command() {
            @Override
            public void execute() {
                // Dough, Safari scroll auto means actually just a moped
                elem.getStyle().setProperty("overflow", originalOverflow);
                if (!originalOverflowX.isEmpty()) {
                    elem.getStyle().setProperty("overflowX", originalOverflowX);
                }
                if (!originalOverflowY.isEmpty()) {
                    elem.getStyle().setProperty("overflowY", originalOverflowY);
                }

                if (scrolltop > 0 || elem.getScrollTop() > 0) {
                    int scrollvalue = scrolltop;
                    if (scrollvalue == 0) {
                        // mysterious are the ways of webkits scrollbar
                        // handling. In some cases webkit reports bad (0)
                        // scrolltop before hiding the element temporary,
                        // sometimes after.
                        scrollvalue = elem.getScrollTop();
                    }
                    // fix another bug where scrollbar remains in wrong
                    // position
                    elem.setScrollTop(scrollvalue - 1);
                    elem.setScrollTop(scrollvalue);
                }

                // fix for #6940 : Table horizontal scroll sometimes not
                // updated when collapsing/expanding columns
                // Also appeared in Safari 5.1 with webkit 534 (#7667)
                if ((BrowserInfo.get().isChrome()
                        || (BrowserInfo.get().isSafari() && BrowserInfo.get().getWebkitVersion() >= 534))
                        && (scrollleft > 0 || elem.getScrollLeft() > 0)) {
                    int scrollvalue = scrollleft;

                    if (scrollvalue == 0) {
                        // mysterious are the ways of webkits scrollbar
                        // handling. In some cases webkit may report a bad
                        // (0) scrollleft before hiding the element
                        // temporary, sometimes after.
                        scrollvalue = elem.getScrollLeft();
                    }
                    // fix another bug where scrollbar remains in wrong
                    // position
                    elem.setScrollLeft(scrollvalue - 1);
                    elem.setScrollLeft(scrollvalue);
                }
            }
        });
    }

}

From source file:gwtquery.plugins.draggable.client.plugins.ScrollPlugin.java

License:Apache License

public void onDrag(DraggableHandler handler, DragContext ctx, GqEvent e) {
    DraggableOptions options = handler.getOptions();
    Element draggableElement = ctx.getDraggable();
    GQuery scrollParent = handler.getHelperScrollParent();
    Element scrollParentElement = scrollParent.get(0);
    if (scrollParentElement == null) {
        return;//  w  w  w .j a  v  a  2s . c o m
    }

    AxisOption axis = options.getAxis();
    Offset overflowOffset = $(draggableElement).data(OVERFLOW_OFFSET_KEY, Offset.class);
    int scrollSensitivity = options.getScrollSensitivity();
    int scrollSpeed = options.getScrollSpeed();

    boolean scrolled = false;

    if (scrollParentElement != null && scrollParentElement != $(GQuery.document).get(0)
            && !"html".equalsIgnoreCase(scrollParentElement.getTagName())) {
        if (AxisOption.NONE == axis || AxisOption.Y_AXIS == axis) {
            // test if we have to scroll down...
            if ((overflowOffset.top + scrollParentElement.getOffsetHeight()) - e.pageY() < scrollSensitivity) {
                scrollParentElement.setScrollTop(scrollParentElement.getScrollTop() + scrollSpeed);
                scrolled = true;
                // test if we have to scroll up...
            } else if (e.pageY() - overflowOffset.top < scrollSensitivity) {
                scrollParentElement.setScrollTop(scrollParentElement.getScrollTop() - scrollSpeed);
                scrolled = true;
            }
        }

        if (AxisOption.NONE == axis || AxisOption.X_AXIS == axis) {
            // test if we have to scroll left...
            if ((overflowOffset.left + scrollParentElement.getOffsetWidth()) - e.pageX() < scrollSensitivity) {
                scrollParentElement.setScrollLeft(scrollParentElement.getScrollLeft() + scrollSpeed);
                scrolled = true;
                // test if we have to scroll right...
            } else if (e.pageX() - overflowOffset.left < scrollSensitivity) {
                scrollParentElement.setScrollLeft(scrollParentElement.getScrollLeft() - scrollSpeed);
                scrolled = true;
            }
        }

    } else {
        if (AxisOption.NONE == axis || AxisOption.Y_AXIS == axis) {
            if (e.pageY() - document.getScrollTop() < scrollSensitivity) {
                document.setScrollTop(document.getScrollTop() - scrollSpeed);
                scrolled = true;
            } else if (Window.getClientHeight() - (e.pageY() - document.getScrollTop()) < scrollSensitivity) {
                document.setScrollTop(document.getScrollTop() + scrollSpeed);
                scrolled = true;
            }
        }

        if (AxisOption.NONE == axis || AxisOption.X_AXIS == axis) {
            if (e.pageX() - document.getScrollLeft() < scrollSensitivity) {
                document.setScrollLeft(document.getScrollLeft() - scrollSpeed);
                scrolled = true;
            } else if (Window.getClientWidth() - (e.pageX() - document.getScrollLeft()) < scrollSensitivity) {
                document.setScrollLeft(document.getScrollLeft() + scrollSpeed);
                scrolled = true;
            }
        }

    }

    if (scrolled && DragAndDropManager.getInstance().isHandleDroppable(ctx)) {
        DragAndDropManager.getInstance().initialize(ctx, e);
    }

}

From source file:jetbrains.jetpad.projectional.domUtil.Scrolling.java

License:Apache License

private static void adjustScrollers(Rectangle rect, Element element) {
    int left = element.getAbsoluteLeft() + rect.origin.x;
    int top = element.getAbsoluteTop() + rect.origin.y;
    int width = rect.dimension.x;
    int height = rect.dimension.y;

    while (element.getParentElement() != null) {
        Element parent = element.getParentElement();

        String overflow = $(parent).css("overflow");
        if ("scroll".equals(overflow) || "auto".equals(overflow)) {
            int scrollTop = parent.getScrollTop();
            int parentTop = parent.getAbsoluteTop();
            int parentHeight = parent.getClientHeight();
            int scrollLeft = parent.getScrollLeft();
            int parentLeft = parent.getAbsoluteLeft();
            int parentWidth = parent.getClientWidth();

            int deltaX = getScrollAdjustment(new Interval(parentLeft, parentLeft + parentWidth),
                    new Interval(left, left + width), scrollLeft);
            if (deltaX != 0) {
                parent.setScrollLeft(scrollLeft + deltaX);
                left -= deltaX;//  w w w .j  a v  a  2s.  c  om
            }
            int deltaY = getDelta(new Interval(parentTop, parentTop + parentHeight),
                    new Interval(top, top + height));
            if (deltaY != 0) {
                parent.setScrollTop(scrollTop + deltaY);
                top -= deltaY;
            }
        }

        element = parent;
    }
}

From source file:org.rstudio.core.client.dom.DomUtils.java

License:Open Source License

public static int ensureVisibleHoriz(Element container, Element child, int paddingLeft, int paddingRight,
        boolean calculateOnly) {
    final int scrollLeft = container.getScrollLeft();

    if (child == null)
        return scrollLeft;

    int width = child.getOffsetWidth();
    int left = getRelativePosition(container, child).x;
    left -= paddingLeft;// w w w .  j av a 2  s  .  com
    width += paddingLeft + paddingRight;

    int result;
    if (left < scrollLeft)
        result = left;
    else if (scrollLeft + container.getOffsetWidth() < left + width)
        result = left + width - container.getOffsetWidth();
    else
        result = scrollLeft;

    if (!calculateOnly && result != scrollLeft)
        container.setScrollLeft(result);

    return result;
}

From source file:org.rstudio.core.client.theme.DocTabLayoutPanel.java

License:Open Source License

public void ensureSelectedTabIsVisible(boolean animate) {
    if (currentAnimation_ != null) {
        currentAnimation_.cancel();//w w w.j a  va  2  s  .c  o m
        currentAnimation_ = null;
    }

    Element selectedTab = (Element) DomUtils.findNode(getElement(), true, false, new NodePredicate() {
        public boolean test(Node n) {
            if (n.getNodeType() != Node.ELEMENT_NODE)
                return false;
            return ((Element) n).getClassName().contains("gwt-TabLayoutPanelTab-selected");
        }
    });
    if (selectedTab == null) {
        return;
    }
    selectedTab = selectedTab.getFirstChildElement().getFirstChildElement();

    Element tabBar = getTabBarElement();

    if (!isVisible() || !isAttached() || tabBar.getOffsetWidth() == 0)
        return; // not yet loaded

    final Element tabBarParent = tabBar.getParentElement();

    final int start = tabBarParent.getScrollLeft();
    int end = DomUtils.ensureVisibleHoriz(tabBarParent, selectedTab, padding_, padding_ + rightMargin_, true);

    // When tabs are closed, the overall width shrinks, and this can lead
    // to cases where there's too much empty space on the screen
    Node lastTab = getLastChildElement(tabBar);
    if (lastTab == null || lastTab.getNodeType() != Node.ELEMENT_NODE)
        return;
    int edge = DomUtils.getRelativePosition(tabBarParent, Element.as(lastTab)).x
            + Element.as(lastTab).getOffsetWidth();
    end = Math.min(end, Math.max(0, edge - (tabBarParent.getOffsetWidth() - rightMargin_)));

    if (edge <= tabBarParent.getOffsetWidth() - rightMargin_)
        end = 0;

    if (start != end) {
        if (!animate) {
            tabBarParent.setScrollLeft(end);
        } else {
            final int finalEnd = end;
            currentAnimation_ = new Animation() {
                @Override
                protected void onUpdate(double progress) {
                    double delta = (finalEnd - start) * progress;
                    tabBarParent.setScrollLeft((int) (start + delta));
                }

                @Override
                protected void onComplete() {
                    if (this == currentAnimation_) {
                        tabBarParent.setScrollLeft(finalEnd);
                        currentAnimation_ = null;
                    }
                }
            };
            currentAnimation_.run(Math.max(200, Math.min(1500, Math.abs(end - start) * 2)));
        }
    }
}

From source file:org.waveprotocol.wave.client.wavepanel.view.dom.DomUtil.java

License:Apache License

/** 
 * Sets specified cursor to the element.
 * //ww  w  .j a v a2 s .c  o  m
 * @param element
 * @param cursorName name of the cursor
 * 
 * Walkaround of Chrome bug when cursor on the element needs mouse move to be actually changed.
 * http://code.google.com/p/chromium/issues/detail?id=26723#c87
 */
private static void setCursor(Element element, String cursorName) {
    String currentCursorName = element.getStyle().getCursor();
    if (!currentCursorName.equals(cursorName)) {
        Element wkch = Document.get().createDivElement();
        com.google.gwt.dom.client.Style wkchStyle = wkch.getStyle();
        wkchStyle.setOverflow(Style.Overflow.HIDDEN);
        wkchStyle.setPosition(Style.Position.ABSOLUTE);
        wkchStyle.setLeft(0, Style.Unit.PX);
        wkchStyle.setTop(0, Style.Unit.PX);
        wkchStyle.setWidth(100, Style.Unit.PCT);
        wkchStyle.setHeight(100, Style.Unit.PCT);

        Element wkch2 = Document.get().createDivElement();
        com.google.gwt.dom.client.Style wkch2Style = wkch2.getStyle();
        wkch2Style.setWidth(200, Style.Unit.PCT);
        wkch2Style.setHeight(200, Style.Unit.PCT);
        wkch.appendChild(wkch2);

        element.appendChild(wkch);
        element.getStyle().setProperty(STYLE_CURSOR_PROPERTY, cursorName);
        wkch.setScrollLeft(1);
        wkch.setScrollLeft(0);
        element.removeChild(wkch);
    }
}