Example usage for com.google.gwt.user.client Event setCapture

List of usage examples for com.google.gwt.user.client Event setCapture

Introduction

In this page you can find the example usage for com.google.gwt.user.client Event setCapture.

Prototype

public static void setCapture(Element elem) 

Source Link

Document

Sets mouse-capture on the given element.

Usage

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/*  w w  w. j av a2s.c  o 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) {
            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/*w  w  w. j  av  a  2s  . 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.lushprojects.circuitjs1.client.Scrollbar.java

License:Open Source License

void doMouseDown(int x, boolean mouse) {
    if (enabled) {
        if (x < HMARGIN + SCROLLHEIGHT) {
            if (val > min)
                val--;
        } else {/* w  w  w. j a v a  2s .c  o m*/
            if (x > CirSim.VERTICALPANELWIDTH - HMARGIN - SCROLLHEIGHT) {
                if (val < max)
                    val++;
            } else {
                val = calcValueFromPos(x);
                dragging = true;

                // setCapture doesn't work on touch for some reason; touchend/touchmoved events
                // don't get sent
                if (mouse)
                    Event.setCapture(can.getElement());
            }
        }
        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//from   w w  w .j  a  v a 2 s .c o  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// ww w.j  ava  2s .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 ww w .  j  av  a  2 s  .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) {
            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 startCalendarEventDrag(MouseDownEvent event, final MonthEventLabel w) {
    if (w.isTimeSpecificEvent()) {
        return;//from  www .  java 2 s  .com
    }

    moveRegistration = addMouseMoveHandler(this);
    startX = event.getClientX();
    startY = event.getClientY();
    startYrelative = event.getRelativeY(w.getParent().getElement()) % getHeigth();
    startXrelative = event.getRelativeX(w.getParent().getElement()) % getWidth();

    CalendarEvent e = getEventByWidget(w);
    startDateFrom = (Date) e.getStart().clone();
    startDateTo = (Date) e.getEnd().clone();

    Event.setCapture(getElement());
    keyDownHandler = addKeyDownHandler(new KeyDownHandler() {

        public void onKeyDown(KeyDownEvent event) {
            if (event.getNativeKeyCode() == KeyCodes.KEY_ESCAPE) {
                cancelEventDrag(w);
            }
        }

    });

    focus();

    GWT.log("Start drag");
}

From source file:com.vaadin.addon.spreadsheet.client.SheetWidget.java

/**
 *
 * @param target/*  www.j  a va 2s.c  o m*/
 *            The clicked element
 * @param event
 *            The original event (that can be onClick or onTouchStart)
 */
protected void onSheetMouseDown(Event event) {
    Element target = event.getEventTarget().cast();

    String className = target.getAttribute("class");

    // click target is the inner div because IE10 and 9 are not compatible
    // with 'pointer-events: none'
    if ((BrowserInfo.get().isIE9() || BrowserInfo.get().isIE10())
            && (className == null || className.isEmpty())) {
        String parentClassName = target.getParentElement().getAttribute("class");
        if (parentClassName.contains("cell")) {
            className = parentClassName;
        }
    }
    if (cellCommentEditMode && !className.contains("comment-overlay")) {
        cellCommentEditMode = false;
        currentlyEditedCellComment.setEditMode(false);
        if (currentlyEditedCellComment.equals(cellCommentOverlay)) {
            cellCommentOverlay.hide();
            cellCommentCellClassName = null;
            cellCommentCellColumn = -1;
            cellCommentCellRow = -1;
        }
    }

    if (className.contains("sheet") || target.getTagName().equals("input") || className.equals("floater")) {
        return; // event target is one of the panes or input
    }

    if (isEventInCustomEditorCell(event)) {
        // allow sheet context menu on top of custom editors
        if (event.getButton() == NativeEvent.BUTTON_RIGHT) {
            actionHandler.onCellRightClick(event, selectedCellCol, selectedCellRow);
        } else if (selectingCells) { // this is probably unnecessary
            stoppedSelectingCellsWithDrag(event);
        }
    } else if (className.contains("cell")) {
        if (className.equals("cell-comment-triangle")) {
            jsniUtil.parseColRow(target.getParentElement().getAttribute("class"));
        } else {
            jsniUtil.parseColRow(className);
        }
        int targetCol = jsniUtil.getParsedCol();
        int targetRow = jsniUtil.getParsedRow();
        // because of text overflow, the click might have happened on
        // top of a another cell than what event has.
        // merged cells are a special case, text won't overflow -> skip
        try {
            if (!className.endsWith(MERGED_CELL_CLASSNAME)) {
                int clientX = SpreadsheetWidget.getTouchOrMouseClientX(event);
                int clientY = SpreadsheetWidget.getTouchOrMouseClientY(event);

                Cell targetCell = getRealEventTargetCell(clientX, clientY, getCell(targetCol, targetRow));
                target = targetCell.getElement();
                targetCol = targetCell.getCol();
                targetRow = targetCell.getRow();
            }
        } catch (JavaScriptException jse) {
            debugConsole.severe(
                    "SheetWidget:onSheetMouseDown - JSE while trying to find real event target, className:"
                            + className);
        } catch (IndexOutOfBoundsException ioobe) {
            debugConsole.severe(
                    "SheetWidget:onSheetMouseDown - IOOBE while trying to find real event target, className:"
                            + className);
        }

        event.stopPropagation();
        event.preventDefault();
        if (event.getButton() == NativeEvent.BUTTON_RIGHT) {
            Event.releaseCapture(sheet);
            actionHandler.onCellRightClick(event, targetCol, targetRow);
        } else {
            sheet.focus();
            // quit input if active
            if (editingCell && !input.getElement().isOrHasChild(target)) {
                actionHandler.onCellInputBlur(input.getValue());
            }
            if (event.getCtrlKey() || event.getMetaKey() || event.getShiftKey()) {
                actionHandler.onCellClick(targetCol, targetRow, target.getInnerText(), event.getShiftKey(),
                        event.getMetaKey() || event.getCtrlKey(), true);
                tempCol = -1;
                tempRow = -1;
            } else { // no special keys used
                // link cells are special keys
                // TODO should investigate what is the correct action when
                // clicking on hyperlink cells that overflow to next cells
                if (cellLinksMap != null
                        && cellLinksMap.containsKey(toKey(jsniUtil.getParsedCol(), jsniUtil.getParsedRow()))) {
                    actionHandler.onLinkCellClick(targetCol, targetRow);
                } else { // otherwise selecting starts
                    actionHandler.onCellClick(targetCol, targetRow, target.getInnerText(), event.getShiftKey(),
                            event.getMetaKey() || event.getCtrlKey(), false);
                    selectingCells = true;
                    tempCol = targetCol;
                    tempRow = targetRow;
                    startCellTopLeft = isCellRenderedInTopLeftPane(targetCol, targetRow);
                    startCellTopRight = isCellRenderedInTopRightPane(targetCol, targetRow);
                    startCellBottomLeft = isCellRenderedInBottomLeftPane(targetCol, targetRow);
                    crossedDown = !startCellTopLeft && !startCellTopRight;
                    crossedLeft = !startCellTopLeft && !startCellBottomLeft;
                    clientX = SpreadsheetWidget.getTouchOrMouseClientX(event);
                    clientY = SpreadsheetWidget.getTouchOrMouseClientY(event);
                    Event.setCapture(sheet);
                }
            }
        }
    }
}

From source file:com.vaadin.addon.spreadsheet.client.SheetWidget.java

private void startRowResizeDrag(int rowIndex, int clientX, int clientY) {
    // for some reason FF doesn't hide headers instantly,
    // the event might be from hidden div
    while (actionHandler.isRowHidden(rowIndex)) {
        rowIndex--;//from   ww  w  .  ja  va  2s. co m
    }
    if (rowIndex == 0) { // ERROR ...
        return;
    }
    Event.setCapture(getElement());
    resizingRow = true;
    resized = false;
    resizedRowIndex = rowIndex;
    resizedColumnIndex = -1;
    DivElement header;
    if (resizedRowIndex <= verticalSplitPosition) {
        header = frozenRowHeaders.get(resizedRowIndex - 1);
    } else {
        header = rowHeaders.get(rowIndex - firstRowIndex);
    }
    resizeFirstEdgePos = header.getAbsoluteTop();
    resizeLastEdgePos = header.getAbsoluteBottom();
    if (actionHandler.getRowHeight(rowIndex) > 0) {
        resizeTooltipLabel.setText("Height: " + actionHandler.getRowHeight(rowIndex) + "pt");
    } else {
        resizeTooltipLabel.setText("Hide row");
    }
    showResizeTooltipRelativeTo(clientX, clientY);
    resizeTooltip.show();
    spreadsheet.addClassName(ROW_RESIZING_CLASSNAME);
    resizeLineStable.addClassName("row" + rowIndex);
    rowIndex++;
    while (rowIndex < actionHandler.getMaxRows() && actionHandler.isRowHidden(rowIndex)) {
        rowIndex++;
    }
    resizeLine.addClassName("rh row" + (rowIndex));

    handleRowResizeDrag(clientX, clientY);
}

From source file:com.vaadin.addon.spreadsheet.client.SheetWidget.java

private void startColumnResizeDrag(final int columnIndex, final int clientX, final int clientY) {
    resized = false;//from w  ww  .  j  a  va2 s. c  om
    Scheduler.get().scheduleDeferred(new ScheduledCommand() {

        @Override
        public void execute() {
            if (columnResizeCancelled) {
                return;
            }
            // for some reason FF doesn't hide headers instantly,
            // the event might be from hidden div
            int tempColumnIndex = columnIndex;
            while (actionHandler.isColumnHidden(tempColumnIndex)) {
                tempColumnIndex--;
            }
            if (tempColumnIndex < 1) { // ERROR ...
                return;
            }
            Event.setCapture(getElement());
            resizingColumn = true;
            resizedColumnIndex = tempColumnIndex;
            resizedRowIndex = -1;
            DivElement header;
            if (resizedColumnIndex <= horizontalSplitPosition) {
                header = frozenColumnHeaders.get(resizedColumnIndex - 1);
            } else {
                header = colHeaders.get(tempColumnIndex - firstColumnIndex);
            }
            resizeFirstEdgePos = header.getAbsoluteLeft();
            resizeLastEdgePos = header.getAbsoluteRight();
            if (actionHandler.getColWidth(tempColumnIndex) > 0) {
                resizeTooltipLabel.setText("Width: " + actionHandler.getColWidth(tempColumnIndex) + "px");
            } else {
                resizeTooltipLabel.setText("Hide column");
            }
            showResizeTooltipRelativeTo(clientX, clientY);
            resizeTooltip.show();
            spreadsheet.addClassName(COLUMN_RESIZING_CLASSNAME);
            resizeLineStable.addClassName("col" + tempColumnIndex);
            tempColumnIndex++;
            while (columnIndex <= actionHandler.getMaxColumns()
                    && actionHandler.isColumnHidden(tempColumnIndex)) {
                tempColumnIndex++;
            }
            resizeLine.addClassName("ch col" + (tempColumnIndex));

            handleColumnResizeDrag(clientX, clientY);
        }
    });
}