List of usage examples for com.google.gwt.user.client Event releaseCapture
public static void releaseCapture(Element elem)
From source file:at.ait.dme.yuma.client.colorpicker.SliderBar.java
License:Artistic License
/** * Fired whenever a browser event is received. * @param event Event to process/*from w w w . j a va 2s . c om*/ */ @Override public void onBrowserEvent(Event event) { switch (DOM.eventGetType(event)) { case Event.ONMOUSEUP: Event.releaseCapture(this.getElement()); capturedMouse = false; break; case Event.ONMOUSEDOWN: Event.setCapture(this.getElement()); capturedMouse = true; case Event.ONMOUSEMOVE: if (capturedMouse) { DOM.eventPreventDefault(event); int y = DOM.eventGetClientY(event) - getAbsoluteTop() + Window.getScrollTop(); if (y < 0) y = 0; if (y > 256) y = 256; DOM.setStyleAttribute(slider.getElement(), "top", y - 4 + "px"); if (parent != null) { parent.onBarSelected(y); } } } }
From source file:at.ait.dme.yuma.client.colorpicker.SliderMap.java
License:Artistic License
/** * Fired whenever a browser event is received. * @param event Event to process/*from w ww .j a va 2 s .c o m*/ */ @Override public void onBrowserEvent(Event event) { super.onBrowserEvent(event); switch (DOM.eventGetType(event)) { case Event.ONMOUSEUP: Event.releaseCapture(this.getElement()); capturedMouse = false; break; case Event.ONMOUSEDOWN: Event.setCapture(this.getElement()); capturedMouse = true; case Event.ONMOUSEMOVE: if (capturedMouse) { DOM.eventPreventDefault(event); int x = DOM.eventGetClientX(event) - colorUnderlay.getAbsoluteLeft() + 1 + Window.getScrollLeft(); int y = DOM.eventGetClientY(event) - colorUnderlay.getAbsoluteTop() + 1 + Window.getScrollTop(); if (x < 0) x = 0; if (x > 256) x = 256; if (y < 0) y = 0; if (y > 256) y = 256; DOM.setStyleAttribute(slider.getElement(), "left", x - 7 + "px"); DOM.setStyleAttribute(slider.getElement(), "top", y - 7 + "px"); if (parent != null) { parent.onMapSelected(x, y); } } } }
From source file:com.haulmont.cuba.web.widgets.client.addons.dragdroplayouts.ui.VLayoutDragDropMouseHandler.java
License:Apache License
/** * Called when the dragging a component should be initiated by both a mouse * down event as well as a touch start event * * FIXME This method is a BIG hack to circumvent Vaadin's very poor client * side API's. This will break often. Refactor once Vaadin gets a grip. * * @param event/*from w ww . j a va 2 s. c o m*/ */ protected void initiateDrag(NativeEvent event) { // Check that dragging is enabled if (dragMode == LayoutDragMode.NONE) { return; } // Dragging can only be done with left mouse button and no modifier keys if (!isMouseDragEvent(event) && !Util.isTouchEvent(event)) { return; } // Get target widget EventTarget eventTarget = event.getEventTarget(); Element targetElement = Element.as(eventTarget); Widget target = WidgetUtil.findWidget(targetElement, null); if (isEventOnScrollBar(event)) { return; } // do not drag close button of TabSheet tab if (isElementNotDraggable(targetElement)) { VDragAndDropManager.get().interruptDrag(); return; } // Abort if drag mode is caption mode and widget is not a caption boolean isPanelCaption = target instanceof VPanel && targetElement.getParentElement().getClassName().contains("v-panel-caption"); boolean isCaption = isPanelCaption || VDragDropUtil.isCaptionOrCaptionless(target); if (dragMode == LayoutDragMode.CAPTION && !isCaption) { /* * Ensure target is a caption in caption mode */ return; } if (dragMode == LayoutDragMode.CAPTION && isCaption) { /* * Ensure that captions in nested layouts don't get accepted if in * caption mode */ Widget w = VDragDropUtil.getTransferableWidget(target); ComponentConnector c = Util.findConnectorFor(w); ComponentConnector parent = (ComponentConnector) c.getParent(); if (parent.getWidget() != root) { return; } } // Create the transfarable VTransferable transferable = VDragDropUtil.createLayoutTransferableFromMouseDown(event, root, target); // Are we trying to drag the root layout if (transferable == null) { VConsole.log("Creating transferable on mouse down returned null"); return; } // Resolve the component final Widget w; ComponentConnector c = null, parent = null; if (target instanceof TabCaption) { TabCaption tabCaption = (TabCaption) target; Tab tab = tabCaption.getTab(); int tabIndex = ((ComplexPanel) tab.getParent()).getWidgetIndex(tab); VTabsheet tabsheet = tab.getTabsheet(); w = tab; c = tabsheet.getTab(tabIndex); parent = Util.findConnectorFor(tabsheet); } else if (root instanceof VDDAccordion) { w = target; parent = Util.findConnectorFor(root); StackItem tab = WidgetUtil.findWidget(targetElement, StackItem.class); if (tab != null && root.getElement().isOrHasChild(tab.getElement())) { c = ((VDDAccordion) root).getTab(((VDDAccordion) root).getTabPosition(tab)); } } else if (transferable.getData(Constants.TRANSFERABLE_DETAIL_COMPONENT) != null) { ComponentConnector connector = (ComponentConnector) transferable .getData(Constants.TRANSFERABLE_DETAIL_COMPONENT); w = connector.getWidget(); c = Util.findConnectorFor(w); parent = (ComponentConnector) c.getParent(); } else { // Failsafe if no widget was found w = root; c = Util.findConnectorFor(w); parent = (ComponentConnector) c.getParent(); VConsole.log("Could not resolve component, using root as component"); } VConsole.log("Dragging widget: " + w); VConsole.log(" in parent: " + parent); // Ensure component is draggable if (!VDragDropUtil.isDraggingEnabled(parent, w)) { VConsole.log("Dragging disabled for " + w.getClass().getName() + " in " + parent.getWidget().getClass().getName()); VDragAndDropManager.get().interruptDrag(); return; } // Announce drag start to listeners for (DragStartListener dl : dragStartListeners) { if (!dl.dragStart(w, dragMode)) { VDragAndDropManager.get().interruptDrag(); return; } } currentDraggedWidget = w; // Announce to handler that we are starting a drag operation VDragEvent currentDragEvent = VDragAndDropManager.get().startDrag(transferable, event, true); /* * Create the drag image */ boolean hasDragCaption = false; com.google.gwt.dom.client.Element dragImageElement = null; if (root instanceof VHasDragCaptionProvider) { VDragCaptionProvider dragCaptionProvider = ((VHasDragCaptionProvider) root).getDragCaptionProvider(); if (dragCaptionProvider != null) { hasDragCaption = true; dragImageElement = dragCaptionProvider.getDragCaptionElement(currentDraggedWidget); } } if (!hasDragCaption && dragImageProvider != null) { dragImageElement = dragImageProvider.getDragImageElement(w); } if (dragImageElement != null) { // Set stylename to proxy component as well if (hasDragCaption) { dragImageElement.addClassName(ACTIVE_DRAG_CUSTOM_IMAGE_STYLENAME); } else { dragImageElement.addClassName(ACTIVE_DRAG_SOURCE_STYLENAME); } } else if (root instanceof VCssLayout) { /* * CSS Layout does not have an enclosing div so we just use the * component div */ dragImageElement = w.getElement(); } else if (root instanceof VTabsheet) { /* * Tabsheet should use the dragged tab as a drag image */ dragImageElement = targetElement; } else if (root instanceof VAccordion) { /* * Accordion should use the dragged tab as a drag image */ dragImageElement = targetElement; } else if (root instanceof VFormLayout) { /* * Dragging a component in a form layout should include the caption * and error indicator as well */ Element rowElement = (Element) VDDFormLayout .getRowFromChildElement((com.google.gwt.dom.client.Element) w.getElement().cast(), (com.google.gwt.dom.client.Element) root.getElement().cast()) .cast(); dragImageElement = rowElement; } else { /* * For other layouts we just use the target element; */ dragImageElement = w.getElement(); } Element clone; if (hasDragCaption) { currentDragEvent.setDragImage(dragImageElement); clone = dragImageElement; } else { currentDragEvent.createDragImage(dragImageElement, true); clone = currentDragEvent.getDragImage(); } assert (clone != null); // Lock drag image dimensions if (!hasDragCaption) { clone.getStyle().setWidth(dragImageElement.getOffsetWidth(), Style.Unit.PX); clone.getStyle().setHeight(dragImageElement.getOffsetHeight(), Style.Unit.PX); } if (c != null && c.delegateCaptionHandling() && !(root instanceof VTabsheet) && !(root instanceof VAccordion)) { /* * Captions are not being dragged with the widget since they are * separate. Manually add a clone of the caption to the drag image. */ if (target instanceof VCaption) { clone.insertFirst(targetElement.cloneNode(true)); } } if (BrowserInfo.get().isIE()) { // Fix IE not aligning the drag image correctly when dragging // layouts clone.getStyle().setPosition(Position.ABSOLUTE); } currentDraggedWidget.addStyleName(ACTIVE_DRAG_SOURCE_STYLENAME); // Listen to mouse up for cleanup mouseUpHandlerReg = Event.addNativePreviewHandler(new Event.NativePreviewHandler() { @Override public void onPreviewNativeEvent(NativePreviewEvent event) { if (event.getTypeInt() == Event.ONMOUSEUP || event.getTypeInt() == Event.ONTOUCHEND || event.getTypeInt() == Event.ONTOUCHCANCEL) { if (mouseUpHandlerReg != null) { mouseUpHandlerReg.removeHandler(); if (currentDraggedWidget != null) { currentDraggedWidget.removeStyleName(ACTIVE_DRAG_SOURCE_STYLENAME); if (dragImageProvider != null) { com.google.gwt.dom.client.Element dragImageElement = dragImageProvider .getDragImageElement(currentDraggedWidget); if (dragImageElement != null) { dragImageElement.removeClassName(ACTIVE_DRAG_SOURCE_STYLENAME); } } currentDraggedWidget = null; } } // Ensure capturing is turned off at mouse up Event.releaseCapture(RootPanel.getBodyElement()); } } }); }
From source file:com.lushprojects.circuitjs1.client.Scrollbar.java
License:Open Source License
public void onMouseUp(MouseUpEvent e) { // GWT.log("Up"); e.preventDefault();/*from ww w . j a v a 2 s . c o m*/ Event.releaseCapture(can.getElement()); if (enabled && dragging) { val = calcValueFromPos(e.getX()); dragging = false; draw(); if (command != null) command.execute(); } }
From source file:com.risevision.ui.client.common.widgets.colorPicker.SliderBar.java
License:Artistic License
/** * Fired whenever a browser event is received. * @param event Event to process/* ww w .j a v a 2 s. co m*/ */ @Override public void onBrowserEvent(Event event) { switch (DOM.eventGetType(event)) { case Event.ONMOUSEUP: Event.releaseCapture(this.getElement()); capturedMouse = false; break; case Event.ONMOUSEDOWN: Event.setCapture(this.getElement()); capturedMouse = true; case Event.ONMOUSEMOVE: if (capturedMouse) { event.preventDefault(); if (vertical) { int y = event.getClientY() - getAbsoluteTop() + Window.getScrollTop(); if (y < 0) y = 0; if (y > 256) y = 256; slider.getElement().getStyle().setProperty("top", y - 4 + "px"); if (parent != null) { parent.onBarSelected(mode, y); } } else { int x = event.getClientX() - getAbsoluteLeft() + Window.getScrollLeft(); if (x < 0) x = 0; if (x > 256) x = 256; slider.getElement().getStyle().setProperty("left", 256 - x - 4 + "px"); if (parent != null) { parent.onBarSelected(mode, x); } } } } }
From source file:com.risevision.ui.client.common.widgets.colorPicker.SliderMap.java
License:Artistic License
/** * Fired whenever a browser event is received. * @param event Event to process//from w w w. j a v a 2 s. c o m */ @Override public void onBrowserEvent(Event event) { super.onBrowserEvent(event); switch (DOM.eventGetType(event)) { case Event.ONMOUSEUP: Event.releaseCapture(this.getElement()); capturedMouse = false; break; case Event.ONMOUSEDOWN: Event.setCapture(this.getElement()); capturedMouse = true; case Event.ONMOUSEMOVE: if (capturedMouse) { event.preventDefault(); int x = event.getClientX() - colorUnderlay.getAbsoluteLeft() + 1 + Window.getScrollLeft(); int y = event.getClientY() - colorUnderlay.getAbsoluteTop() + 1 + Window.getScrollTop(); if (x < 0) x = 0; if (x > 256) x = 256; if (y < 0) y = 0; if (y > 256) y = 256; slider.getElement().getStyle().setProperty("left", x - 7 + "px"); slider.getElement().getStyle().setProperty("top", y - 7 + "px"); if (parent != null) { parent.onMapSelected(x, y); } } } }
From source file:com.risevision.ui.client.common.widgets.SliderBarWidget.java
License:Artistic License
/** * Fired whenever a browser event is received. * @param event Event to process/*from w ww . java2s .co m*/ */ @Override public void onBrowserEvent(Event event) { switch (DOM.eventGetType(event)) { case Event.ONMOUSEUP: Event.releaseCapture(this.getElement()); capturedMouse = false; break; case Event.ONMOUSEDOWN: Event.setCapture(this.getElement()); capturedMouse = true; case Event.ONMOUSEMOVE: if (capturedMouse) { event.preventDefault(); if (vertical) { int y = event.getClientY() - getAbsoluteTop() + Window.getScrollTop() - 7; if (y < 0) y = 0; if (y > length) y = length; thumb.getStyle().setProperty("top", y - halfThumb + "px"); pos = y; } else { int x = event.getClientX() - getAbsoluteLeft() + Window.getScrollLeft() - 7; if (x < 0) x = 0; if (x > length) x = length; thumb.getStyle().setProperty("left", x - halfThumb + "px"); pos = x; } if (onBarSelected != null) { onBarSelected.execute(); } } } }
From source file:com.vaadin.addon.calendar.gwt.client.ui.schedule.SimpleDayCell.java
public void onMouseUp(MouseUpEvent event) { if (event.getNativeButton() != NativeEvent.BUTTON_LEFT) { return;//from w w w .j a v a 2 s .co m } Widget w = (Widget) event.getSource(); if (moveRegistration != null) { Event.releaseCapture(getElement()); moveRegistration.removeHandler(); moveRegistration = null; keyDownHandler.removeHandler(); keyDownHandler = null; } if (w == bottomspacer && monthEventMouseDown) { GWT.log("Mouse up over bottomspacer"); } else if (clickedWidget instanceof MonthEventLabel && monthEventMouseDown) { MonthEventLabel mel = (MonthEventLabel) clickedWidget; int endX = event.getClientX(); int endY = event.getClientY(); int xDiff = startX - endX; int yDiff = startY - endY; startX = -1; startY = -1; prevDayDiff = 0; prevWeekDiff = 0; if (!mel.isTimeSpecificEvent() && (xDiff < -3 || xDiff > 3 || yDiff < -3 || yDiff > 3)) { eventMoved(moveEvent); } else if (calendar.getEventClickListener() != null) { CalendarEvent e = getEventByWidget(mel); calendar.getEventClickListener().eventClick(e); } moveEvent = null; } else if (w == this) { getMonthGrid().setSelectionReady(); } else if (w instanceof Label && labelMouseDown) { String clickedDate = calendar.getDateFormat().format(date); if (calendar.getDateClickListener() != null) { calendar.getDateClickListener().dateClick(clickedDate); } } monthEventMouseDown = false; labelMouseDown = false; clickedWidget = null; }
From source file:com.vaadin.addon.calendar.gwt.client.ui.schedule.SimpleDayCell.java
public void onMouseMove(MouseMoveEvent event) { if (clickedWidget instanceof MonthEventLabel && !monthEventMouseDown || (startY < 0 && startX < 0)) { return;//from ww w .j a v a2 s . c o m } MonthEventLabel w = (MonthEventLabel) clickedWidget; if (calendar.isDisabledOrReadOnly()) { Event.releaseCapture(getElement()); monthEventMouseDown = false; startY = -1; startX = -1; return; } int currentY = event.getClientY(); int currentX = event.getClientX(); int moveY = (currentY - startY); int moveX = (currentX - startX); if ((moveY < 5 && moveY > -6) && (moveX < 5 && moveX > -6)) { return; } int dateCellWidth = getWidth(); int dateCellHeigth = getHeigth(); Element parent = getMonthGrid().getElement(); int relativeX = event.getRelativeX(parent); int relativeY = event.getRelativeY(parent); int weekDiff = 0; if (moveY > 0) { weekDiff = (startYrelative + moveY) / dateCellHeigth; } else { weekDiff = (moveY - (dateCellHeigth - startYrelative)) / dateCellHeigth; } int dayDiff = 0; if (moveX >= 0) { dayDiff = (startXrelative + moveX) / dateCellWidth; } else { dayDiff = (moveX - (dateCellWidth - startXrelative)) / dateCellWidth; } // Check boundaries if (relativeY < 0 || relativeY >= (calendar.getMonthGrid().getRowCount() * dateCellHeigth) || relativeX < 0 || relativeX >= (calendar.getMonthGrid().getColumnCount() * dateCellWidth)) { return; } GWT.log("Event moving delta: " + weekDiff + " weeks " + dayDiff + " days" + " (" + getCell() + "," + getRow() + ")"); CalendarEvent e = moveEvent; if (e == null) { e = getEventByWidget(w); } Date from = e.getStart(); Date to = e.getEnd(); long duration = to.getTime() - from.getTime(); long daysMs = dayDiff * VCalendar.DAYINMILLIS; long weeksMs = weekDiff * VCalendar.WEEKINMILLIS; from.setTime(startDateFrom.getTime() + weeksMs + daysMs); to.setTime((from.getTime() + duration)); e.setStart(from); e.setEnd(to); e.setStartTime(new Date(from.getTime())); e.setEndTime(new Date(to.getTime())); updateDragPosition(w, dayDiff, weekDiff); }
From source file:com.vaadin.addon.calendar.gwt.client.ui.schedule.SimpleDayCell.java
protected void cancelEventDrag(MonthEventLabel w) { if (moveRegistration != null) { // reset position if (moveEvent == null) { moveEvent = getEventByWidget(w); }//from w w w . java2 s . c o m moveEvent.setStart(startDateFrom); moveEvent.setEnd(startDateTo); calendar.updateEventToMonthGrid(moveEvent); // reset drag-related properties Event.releaseCapture(getElement()); moveRegistration.removeHandler(); moveRegistration = null; keyDownHandler.removeHandler(); keyDownHandler = null; setFocus(false); monthEventMouseDown = false; startY = -1; startX = -1; moveEvent = null; labelMouseDown = false; clickedWidget = null; } }