Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Figured it out myself, here is an example:</p> <pre class="lang-java prettyprint-override"><code>public class DraggablePanel extends VerticalPanel { private boolean isBeingDragged = false; private boolean isBeingMoved = false; private Element movingPanelElement; public void setMovingPanelElement(Element movingPanelElement) { this.movingPanelElement = movingPanelElement; } public DraggablePanel() { super(); DOM.sinkEvents(getElement(), Event.ONMOUSEDOWN | Event.ONMOUSEMOVE | Event.ONMOUSEUP | Event.ONMOUSEOVER); } @Override public void onBrowserEvent(Event event) { final int eventType = DOM.eventGetType(event); if (Event.ONMOUSEOVER == eventType) { if (isCursorResize(event)) { getElement().getStyle().setProperty("cursor", "s-resize"); } else if (isCursorMove(event)) { getElement().getStyle().setProperty("cursor", "move"); } else { getElement().getStyle().setProperty("cursor", "default"); } } if (Event.ONMOUSEDOWN == eventType) { if (isCursorResize(event)) { if (!isBeingDragged) { isBeingDragged = true; DOM.setCapture(getElement()); } } else if (isCursorMove(event)) { DOM.setCapture(getElement()); isBeingMoved = true; } } else if (Event.ONMOUSEMOVE == eventType) { if (!isCursorResize(event) &amp;&amp; !isCursorMove(event)) { getElement().getStyle().setProperty("cursor", "default"); } if (isBeingDragged) { int currentY = event.getClientY(); int originalY = getElement().getAbsoluteTop(); if (currentY &gt; originalY) { Integer height = currentY - originalY; this.setHeight(height + "px"); } } else if (isBeingMoved) { RootPanel.get().setWidgetPosition(this, event.getClientX(), event.getClientY()); } } else if (Event.ONMOUSEUP == eventType) { if (isBeingMoved) { isBeingMoved = false; DOM.releaseCapture(getElement()); } if (isBeingDragged) { isBeingDragged = false; DOM.releaseCapture(getElement()); } } } protected boolean isCursorResize(Event event) { int cursor = event.getClientY(); int initial = getAbsoluteTop(); int height = getOffsetHeight(); return initial + height - 20 &lt; cursor &amp;&amp; cursor &lt;= initial + height; } protected boolean isCursorMove(Event event) { int cursor = event.getClientY(); int initial = movingPanelElement.getAbsoluteTop(); int height = movingPanelElement.getOffsetHeight(); return initial &lt;= cursor &amp;&amp; cursor &lt;= initial + height; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload