void create(final int initialX, final int initialY, final int timeout, final Callback callback) { if (!attached) { addToLayer(layer, shapeProxy); setLocation(shapeProxy, relativeX(initialX), relativeY(initialY)); attached = true; callback.onStart(initialX, initialY); } handlerRegs[0] = RootPanel.get().addDomHandler(getMouseMoveHandler(initialX, initialY, timeout, callback), MouseMoveEvent.getType()); handlerRegs[1] = RootPanel.get().addDomHandler(mouseDownEvent -> { mouseDownEvent.stopPropagation(); mouseDownEvent.preventDefault(); }, MouseDownEvent.getType()); handlerRegs[2] = RootPanel.get().addDomHandler(getMouseUpHandler(callback), MouseUpEvent.getType()); }