List of usage examples for com.google.gwt.dom.client Element setScrollLeft
@Override
public void setScrollLeft(int scrollLeft)
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); } }