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

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

Introduction

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

Prototype

int ONFOCUS

To view the source code for com.google.gwt.user.client Event ONFOCUS.

Click Source Link

Document

Fired when an element receives keyboard focus.

Usage

From source file:asquare.gwt.debug.client.DebugUtil.java

License:Apache License

/**
 * Renders an event bitmask as a human readable String. 
 * //from w w w .  j a  va  2s  .c o m
 * @param eventMask
 * @return a String describing the events, or "" if <code>eventMask</code> is <code>0</code>
 */
public static String prettyPrintEventMask(int eventMask) {
    StringBuffer result = new StringBuffer();
    if ((eventMask & Event.ONBLUR) != 0) {
        result.append("blur ");
    }
    if ((eventMask & Event.ONCHANGE) != 0) {
        result.append("change ");
    }
    if ((eventMask & Event.ONCLICK) != 0) {
        result.append("click ");
    }
    if ((eventMask & Event.ONCONTEXTMENU) != 0) {
        result.append("contextmenu ");
    }
    if ((eventMask & Event.ONDBLCLICK) != 0) {
        result.append("dblclick ");
    }
    if ((eventMask & Event.ONERROR) != 0) {
        result.append("error ");
    }
    if ((eventMask & Event.ONFOCUS) != 0) {
        result.append("focus ");
    }
    if ((eventMask & Event.ONKEYDOWN) != 0) {
        result.append("keydown ");
    }
    if ((eventMask & Event.ONKEYPRESS) != 0) {
        result.append("keypress ");
    }
    if ((eventMask & Event.ONKEYUP) != 0) {
        result.append("keyup ");
    }
    if ((eventMask & Event.ONLOAD) != 0) {
        result.append("load ");
    }
    if ((eventMask & Event.ONLOSECAPTURE) != 0) {
        result.append("losecapture ");
    }
    if ((eventMask & Event.ONMOUSEDOWN) != 0) {
        result.append("mousedown ");
    }
    if ((eventMask & Event.ONMOUSEMOVE) != 0) {
        result.append("mousemove ");
    }
    if ((eventMask & Event.ONMOUSEOUT) != 0) {
        result.append("mouseout ");
    }
    if ((eventMask & Event.ONMOUSEOVER) != 0) {
        result.append("mouseover ");
    }
    if ((eventMask & Event.ONMOUSEUP) != 0) {
        result.append("mouseup ");
    }
    if ((eventMask & Event.ONSCROLL) != 0) {
        result.append("scroll ");
    }
    return result.toString();
}

From source file:asquare.gwt.debug.client.DebugUtil.java

License:Apache License

/**
 * Creates a human readable String describing the specified event.
 * /*from  w ww.j av a  2s  .  c  o m*/
 * @param event an {@link Event}
 * @return a String describing the <code>event</code>, or
 *         <code>"null"</code> if <code>event</code> is null
 */
public static String prettyPrintEvent(Event event) {
    if (event == null)
        return String.valueOf(event);

    switch (DOM.eventGetType(event)) {
    case Event.ONKEYDOWN:
        return "event[type=onKeyDown," + createKeyString(event) + "]";

    case Event.ONKEYUP:
        return "event[type=onKeyUp," + createKeyString(event) + "]";

    case Event.ONKEYPRESS:
        return "event[type=onKeyPress," + createKeyString(event) + "]";

    case Event.ONCHANGE:
        return "event[type=onChange,target=" + getTagName(DOM.eventGetTarget(event)) + "]";

    case Event.ONFOCUS:
        return "event[type=onFocus,target=" + getTagName(DOM.eventGetTarget(event)) + "]";

    case Event.ONBLUR:
        return "event[type=onBlur,target=" + getTagName(DOM.eventGetTarget(event)) + "]";

    case Event.ONCLICK:
        return "event[type=onClick,target=" + getTagName(DOM.eventGetTarget(event)) + "]";

    case Event.ONDBLCLICK:
        return "event[type=onDblClick,target=" + getTagName(DOM.eventGetTarget(event)) + "]";

    case Event.ONERROR:
        return "event[type=onError,target=" + getTagName(DOM.eventGetTarget(event)) + "]";

    case Event.ONLOAD:
        return "event[type=onLoad,target=" + getTagName(DOM.eventGetTarget(event)) + "]";

    case Event.ONLOSECAPTURE:
        return "event[type=onLoseCapture,target=" + getTagName(DOM.eventGetTarget(event)) + "]";

    case Event.ONMOUSEDOWN:
        return "event[type=onMouseDown," + createMouseString(event) + "]";

    case Event.ONMOUSEUP:
        return "event[type=onMouseUp," + createMouseString(event) + "]";

    case Event.ONMOUSEOVER:
        return "event[type=onMouseOver," + createMouseString(event) + "]";

    case Event.ONMOUSEOUT:
        return "event[type=onMouseOut," + createMouseString(event) + "]";

    case Event.ONMOUSEMOVE:
        return "event[type=onMouseMove," + createMouseString(event) + "]";

    case Event.ONMOUSEWHEEL:
        return "event[type=onMouseWheel," + createMouseString(event) + "]";

    case Event.ONSCROLL:
        return "event[type=onScroll,target=" + getTagName(DOM.eventGetTarget(event)) + "]";

    default:
        return DOM.eventToString(event);
    }
}

From source file:asquare.gwt.tk.demo.client.DebugPanel.java

License:Apache License

private Widget createCheckBoxes() {
    // can't use HashMap because it does not preserve order
    final Vector eventToMask = new Vector();
    eventToMask.add(new EventToMask("onfocus", Event.ONFOCUS));
    eventToMask.add(new EventToMask("onblur", Event.ONBLUR));
    eventToMask.add(new EventToMask("onchange", Event.ONCHANGE));
    eventToMask.add(new EventToMask("onkeydown", Event.ONKEYDOWN));
    eventToMask.add(new EventToMask("onkeypress", Event.ONKEYPRESS));
    eventToMask.add(new EventToMask("onkeyup", Event.ONKEYUP));
    eventToMask.add(new EventToMask("onscroll", Event.ONSCROLL));
    eventToMask.add(new EventToMask("onmousemove", Event.ONMOUSEMOVE));
    eventToMask.add(new EventToMask("onmouseover", Event.ONMOUSEOVER));
    eventToMask.add(new EventToMask("onmouseout", Event.ONMOUSEOUT));
    eventToMask.add(new EventToMask("onmousedown", Event.ONMOUSEDOWN));
    eventToMask.add(new EventToMask("onmouseup", Event.ONMOUSEUP));
    eventToMask.add(new EventToMask("onclick", Event.ONCLICK));
    eventToMask.add(new EventToMask("ondblclick", Event.ONDBLCLICK));
    eventToMask.add(new EventToMask("onerror", Event.ONERROR));

    ClickListener checkBoxController = new ClickListener() {
        public void onClick(Widget sender) {
            CheckBox cb = (CheckBox) sender;
            EventToMask mapping = (EventToMask) eventToMask.get(eventToMask.indexOf(cb.getText()));
            int traceEventMask = m_eventListener.getEventMask();
            if (cb.isChecked()) {
                traceEventMask |= mapping.m_mask;
            } else {
                traceEventMask &= ~mapping.m_mask;
            }//from   ww  w  .  j av a 2s  .  c  o  m
            m_eventListener.setEventMask(traceEventMask);
        }
    };

    FlowPanel panel = new FlowPanel();
    for (int i = 0; i < eventToMask.size(); i++) {
        EventToMask mapping = (EventToMask) eventToMask.get(i);
        addCheckBox(panel, mapping.m_event, mapping.m_mask, checkBoxController);
    }
    return panel;
}

From source file:asquare.gwt.tkdemo.client.demos.DebugPanel.java

License:Apache License

private Widget createCheckBoxes() {
    // can't use HashMap because it does not preserve order
    final ArrayList<EventToMask> eventToMask = new ArrayList<EventToMask>();
    eventToMask.add(new EventToMask("onfocus", Event.ONFOCUS));
    eventToMask.add(new EventToMask("onblur", Event.ONBLUR));
    eventToMask.add(new EventToMask("onchange", Event.ONCHANGE));
    eventToMask.add(new EventToMask("onkeydown", Event.ONKEYDOWN));
    eventToMask.add(new EventToMask("onkeypress", Event.ONKEYPRESS));
    eventToMask.add(new EventToMask("onkeyup", Event.ONKEYUP));
    eventToMask.add(new EventToMask("onscroll", Event.ONSCROLL));
    eventToMask.add(new EventToMask("onmousemove", Event.ONMOUSEMOVE));
    eventToMask.add(new EventToMask("onmouseover", Event.ONMOUSEOVER));
    eventToMask.add(new EventToMask("onmouseout", Event.ONMOUSEOUT));
    eventToMask.add(new EventToMask("onmousedown", Event.ONMOUSEDOWN));
    eventToMask.add(new EventToMask("onmouseup", Event.ONMOUSEUP));
    eventToMask.add(new EventToMask("onclick", Event.ONCLICK));
    eventToMask.add(new EventToMask("ondblclick", Event.ONDBLCLICK));
    eventToMask.add(new EventToMask("onerror", Event.ONERROR));

    ClickHandler checkBoxController = new ClickHandler() {
        public void onClick(ClickEvent event) {
            CheckBox cb = (CheckBox) event.getSource();
            String eventText = cb.getText();
            EventToMask mapping = null;/* w  w w .ja v  a  2s.  com*/
            for (int i = 0, size = eventToMask.size(); i < size; i++) {
                EventToMask candidate = eventToMask.get(i);
                if (candidate.m_eventString.equals(eventText)) {
                    mapping = candidate;
                    break;
                }
            }
            int traceEventMask = m_eventListener.getEventMask();
            if (cb.getValue()) {
                traceEventMask |= mapping.m_eventMask;
            } else {
                traceEventMask &= ~mapping.m_eventMask;
            }
            m_eventListener.setEventMask(traceEventMask);
        }
    };

    ColumnPanel panel = new ColumnPanel();
    for (int i = 0; i < eventToMask.size(); i++) {
        if (i == 0 || i == 7) {
            panel.addCell();
        }
        EventToMask mapping = eventToMask.get(i);
        addCheckBox(panel, mapping.m_eventString, mapping.m_eventMask, checkBoxController);
    }

    return panel;
}

From source file:at.ac.fhcampuswien.atom.client.gui.attributes.components.slider.SliderBar.java

License:Apache License

/**
 * Listen for events that will move the knob.
 * /*from   w  w w .j  a v a 2s. c o m*/
 * @param event the event that occurred
 */
@Override
public void onBrowserEvent(Event event) {
    super.onBrowserEvent(event);
    if (enabled) {
        switch (DOM.eventGetType(event)) {
        // Unhighlight and cancel keyboard events
        case Event.ONBLUR:
            keyTimer.cancel();
            if (slidingMouse) {
                DOM.releaseCapture(getElement());
                slidingMouse = false;
                slideKnob(event);
                stopSliding(true, true);
            } else if (slidingKeyboard) {
                slidingKeyboard = false;
                stopSliding(true, true);
            }
            unhighlight();
            break;

        // Highlight on focus
        case Event.ONFOCUS:
            highlight();
            break;

        // Mousewheel events
        case Event.ONMOUSEWHEEL:
            int velocityY = DOM.eventGetMouseWheelVelocityY(event);
            DOM.eventPreventDefault(event);
            if (velocityY > 0) {
                shiftRight(1);
            } else {
                shiftLeft(1);
            }
            break;

        // Shift left or right on key press
        case Event.ONKEYDOWN:
            if (!slidingKeyboard) {
                int multiplier = 1;
                if (DOM.eventGetCtrlKey(event)) {
                    multiplier = (int) (getTotalRange() / stepSize / 10);
                }

                switch (DOM.eventGetKeyCode(event)) {
                case KeyCodes.KEY_HOME:
                    DOM.eventPreventDefault(event);
                    setCurrentValue(minValue);
                    break;
                case KeyCodes.KEY_END:
                    DOM.eventPreventDefault(event);
                    setCurrentValue(maxValue);
                    break;
                case KeyCodes.KEY_LEFT:
                    DOM.eventPreventDefault(event);
                    slidingKeyboard = true;
                    startSliding(false, true);
                    shiftLeft(multiplier);
                    keyTimer.schedule(400, false, multiplier);
                    break;
                case KeyCodes.KEY_RIGHT:
                    DOM.eventPreventDefault(event);
                    slidingKeyboard = true;
                    startSliding(false, true);
                    shiftRight(multiplier);
                    keyTimer.schedule(400, true, multiplier);
                    break;
                case 32:
                    DOM.eventPreventDefault(event);
                    setCurrentValue(minValue + getTotalRange() / 2);
                    break;
                }
            }
            break;
        // Stop shifting on key up
        case Event.ONKEYUP:
            keyTimer.cancel();
            if (slidingKeyboard) {
                slidingKeyboard = false;
                stopSliding(true, true);
            }
            break;

        // Mouse Events
        case Event.ONMOUSEDOWN:
            setFocus(true);
            slidingMouse = true;
            DOM.setCapture(getElement());
            startSliding(true, true);
            DOM.eventPreventDefault(event);
            slideKnob(event);
            break;
        case Event.ONMOUSEUP:
            if (slidingMouse) {
                DOM.releaseCapture(getElement());
                slidingMouse = false;
                slideKnob(event);
                stopSliding(true, true);
            }
            break;
        case Event.ONMOUSEMOVE:
            if (slidingMouse) {
                slideKnob(event);
            }
            break;
        }
    }
}

From source file:cc.alcina.framework.gwt.client.widget.complex.SliderBar.java

License:Apache License

/**
 * Listen for events that will move the knob.
 *
 * @param event//from w  w  w  .ja  v a 2  s.c o  m
 *            the event that occurred
 */
@Override
public void onBrowserEvent(Event event) {
    super.onBrowserEvent(event);
    if (enabled) {
        switch (DOM.eventGetType(event)) {
        // Unhighlight and cancel keyboard events
        case Event.ONBLUR:
            keyTimer.cancel();
            if (slidingMouse) {
                DOM.releaseCapture(getElement());
                slidingMouse = false;
                slideKnob(event);
                stopSliding(true, true);
            } else if (slidingKeyboard) {
                slidingKeyboard = false;
                stopSliding(true, true);
            }
            unhighlight();
            break;
        // Highlight on focus
        case Event.ONFOCUS:
            highlight();
            break;
        // Mousewheel events
        case Event.ONMOUSEWHEEL:
            int velocityY = DOM.eventGetMouseWheelVelocityY(event);
            DOM.eventPreventDefault(event);
            if (velocityY > 0) {
                shiftUp(1);
            } else {
                shiftDown(1);
            }
            break;
        // Shift left or right on key press
        case Event.ONKEYDOWN:
            if (!slidingKeyboard && isKeyEventsEnabled()) {
                int multiplier = 1;
                if (DOM.eventGetCtrlKey(event)) {
                    multiplier = (int) (getTotalRange() / stepSize / 10);
                }
                switch (DOM.eventGetKeyCode(event)) {
                case KeyCodes.KEY_HOME:
                    DOM.eventPreventDefault(event);
                    setCurrentValue(minValue);
                    break;
                case KeyCodes.KEY_END:
                    DOM.eventPreventDefault(event);
                    setCurrentValue(maxValue);
                    break;
                case KeyCodes.KEY_LEFT:
                    DOM.eventPreventDefault(event);
                    slidingKeyboard = true;
                    startSliding(false, true);
                    shiftDown(multiplier);
                    keyTimer.schedule(400, false, multiplier);
                    break;
                case KeyCodes.KEY_RIGHT:
                    DOM.eventPreventDefault(event);
                    slidingKeyboard = true;
                    startSliding(false, true);
                    shiftUp(multiplier);
                    keyTimer.schedule(400, true, multiplier);
                    break;
                case 32:
                    DOM.eventPreventDefault(event);
                    setCurrentValue(minValue + getTotalRange() / 2);
                    break;
                }
            }
            break;
        // Stop shifting on key up
        case Event.ONKEYUP:
            keyTimer.cancel();
            if (slidingKeyboard) {
                slidingKeyboard = false;
                stopSliding(true, true);
            }
            break;
        // Mouse Events
        case Event.ONMOUSEDOWN:
            setFocus(true);
            slidingMouse = true;
            DOM.setCapture(getElement());
            startSliding(true, true);
            DOM.eventPreventDefault(event);
            slideKnob(event);
            break;
        case Event.ONMOUSEUP:
            if (slidingMouse) {
                DOM.releaseCapture(getElement());
                slidingMouse = false;
                slideKnob(event);
                stopSliding(true, true);
            }
            break;
        case Event.ONMOUSEMOVE:
            if (slidingMouse) {
                slideKnob(event);
            }
            break;
        }
    }
}

From source file:cc.alcina.framework.gwt.client.widget.dialog.RelativePopupPanel.java

License:Apache License

/**
 * Preview the {@link NativePreviewEvent}.
 * /*from   w w  w  . j  a va 2s.co m*/
 * @param event
 *            the {@link NativePreviewEvent}
 */
private void previewNativeEvent(NativePreviewEvent event) {
    // If the event has been canceled or consumed, ignore it
    if (event.isCanceled() || (!previewAllNativeEvents && event.isConsumed())) {
        // We need to ensure that we cancel the event even if its been
        // consumed so
        // that popups lower on the stack do not auto hide
        if (modal) {
            event.cancel();
        }
        return;
    }
    // Fire the event hook and return if the event is canceled
    onPreviewNativeEvent(event);
    if (event.isCanceled()) {
        return;
    }
    // If the event targets the popup or the partner, consume it
    Event nativeEvent = Event.as(event.getNativeEvent());
    boolean eventTargetsPopupOrPartner = eventTargetsPopup(nativeEvent) || eventTargetsPartner(nativeEvent);
    if (eventTargetsPopupOrPartner) {
        event.consume();
    }
    // Cancel the event if it doesn't target the modal popup. Note that the
    // event can be both canceled and consumed.
    if (modal) {
        switch (nativeEvent.getType()) {
        case BrowserEvents.KEYDOWN:
        case BrowserEvents.KEYPRESS:
        case BrowserEvents.KEYUP:
            if (nativeEvent.getAltKey() || nativeEvent.getMetaKey() || nativeEvent.getCtrlKey()) {
                return;
            }
        }
        event.cancel();
    }
    // Switch on the event type
    int type = nativeEvent.getTypeInt();
    switch (type) {
    case Event.ONMOUSEDOWN:
    case Event.ONTOUCHSTART:
        // Don't eat events if event capture is enabled, as this can
        // interfere with dialog dragging, for example.
        if (DOM.getCaptureElement() != null) {
            event.consume();
            return;
        }
        if (!eventTargetsPopupOrPartner && autoHide) {
            EventTarget target = nativeEvent.getEventTarget();
            // if (Element.is(target)) {
            // ClientUtils.dumpElementTree(Element.as(target));
            // }
            hide(true);
            return;
        }
        break;
    case Event.ONMOUSEUP:
    case Event.ONMOUSEMOVE:
    case Event.ONCLICK:
    case Event.ONDBLCLICK: {
        // Don't eat events if event capture is enabled, as this can
        // interfere with dialog dragging, for example.
        if (DOM.getCaptureElement() != null) {
            event.consume();
            return;
        }
        break;
    }
    case Event.ONFOCUS: {
        if (nativeEvent.getEventTarget().is(Element.class)) {
            Element target = nativeEvent.getEventTarget().cast();
            if (modal && !eventTargetsPopupOrPartner && (target != null)) {
                blur(target);
                event.cancel();
                return;
            }
        }
        break;
    }
    case Event.ONKEYPRESS: {
        if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE && isHideOnEscape()) {
            hide(false);
            event.cancel();
            return;
        }
        break;
    }
    }
}

From source file:com.apress.progwt.client.college.gui.ext.FocusPanelExt.java

License:Apache License

public void onBrowserEvent(Event event) {

    switch (DOM.eventGetType(event)) {
    case Event.ONCLICK:
        lastClickEventCtrl = DOM.eventGetCtrlKey(event);
        lastClickClientX = DOM.eventGetClientX(event);
        lastClickClientY = DOM.eventGetClientY(event);
        if (clickListeners != null) {
            // Log.debug("DELAYED CLICK SCHEDULE");
            delayedclickFirer.schedule(DBL_CLICK_DELAY);
        }//from  ww  w. j a va  2 s.co m
        break;

    case Event.ONMOUSEDOWN:
    case Event.ONMOUSEUP:
    case Event.ONMOUSEMOVE:
    case Event.ONMOUSEOVER:
    case Event.ONMOUSEOUT:
        if (mouseListeners != null) {
            mouseListeners.fireMouseEvent(this, event);
        }
        break;
    case Event.ONDBLCLICK:
        if (doubleClickLisenerCollection != null) {
            delayedclickFirer.cancel();
            // Log.debug("DELAYED CLICK CANCEL ON DOUBLE");
            doubleClickLisenerCollection.fireDoubleClick(this);
        }
        break;
    case Event.ONMOUSEWHEEL:
        if (mouseWheelListeners != null) {
            mouseWheelListeners.fireMouseWheelEvent(this, event);
        }
        break;

    case Event.ONBLUR:
    case Event.ONFOCUS:
        if (focusListeners != null) {
            focusListeners.fireFocusEvent(this, event);
        }
        break;

    case Event.ONKEYDOWN:
    case Event.ONKEYUP:
    case Event.ONKEYPRESS:
        if (keyboardListeners != null) {
            keyboardListeners.fireKeyboardEvent(this, event);
        }
        break;
    }
    // lastClickEvent = null;
}

From source file:com.bearsoft.gwt.ui.widgets.progress.SliderBar.java

License:Apache License

/**
 * Listen for events that will move the knob.
 *
 * @param event the event that occurred//from  ww  w .  j  a  v  a 2  s. c  o m
 */
@Override
public void onBrowserEvent(Event event) {
    super.onBrowserEvent(event);
    if (enabled) {
        switch (DOM.eventGetType(event)) {
        // Unhighlight and cancel keyboard events
        case Event.ONBLUR:
            keyTimer.cancel();
            if (slidingMouse) {
                DOM.releaseCapture(getElement());
                slidingMouse = false;
                slideKnob(event);
                stopSliding(true);
            } else if (slidingKeyboard) {
                slidingKeyboard = false;
                stopSliding(true);
            }
            unhighlightFocus();
            break;

        // Highlight on focus
        case Event.ONFOCUS:
            highlightFocus();
            break;

        // Mousewheel events
        case Event.ONMOUSEWHEEL:
            int velocityY = event.getMouseWheelVelocityY();
            event.preventDefault();
            if (velocityY > 0) {
                shiftRight(1);
            } else {
                shiftLeft(1);
            }
            break;

        // Shift left or right on key press
        case Event.ONKEYDOWN:
            if (!slidingKeyboard) {
                int multiplier = 1;
                if (event.getCtrlKey()) {
                    multiplier = (int) (getTotalRange() / stepSize / 10);
                }

                switch (event.getKeyCode()) {
                case KeyCodes.KEY_HOME:
                    event.preventDefault();
                    setValue(minValue, true);
                    break;
                case KeyCodes.KEY_END:
                    event.preventDefault();
                    setValue(maxValue, true);
                    break;
                case KeyCodes.KEY_LEFT:
                    event.preventDefault();
                    slidingKeyboard = true;
                    startSliding(false);
                    shiftLeft(multiplier);
                    keyTimer.schedule(400, false, multiplier);
                    break;
                case KeyCodes.KEY_RIGHT:
                    event.preventDefault();
                    slidingKeyboard = true;
                    startSliding(false);
                    shiftRight(multiplier);
                    keyTimer.schedule(400, true, multiplier);
                    break;
                case KeyCodes.KEY_SPACE:
                    event.preventDefault();
                    setValue(minValue + getTotalRange() / 2, true);
                    break;
                }
            }
            break;
        // Stop shifting on key up
        case Event.ONKEYUP:
            keyTimer.cancel();
            if (slidingKeyboard) {
                slidingKeyboard = false;
                stopSliding(true);
            }
            break;

        // Mouse Events
        case Event.ONMOUSEDOWN:
            setFocus(true);
            slidingMouse = true;
            DOM.setCapture(getElement());
            startSliding(true);
            event.preventDefault();
            //slideKnob(event);
            break;
        case Event.ONMOUSEUP:
            if (slidingMouse) {
                DOM.releaseCapture(getElement());
                slidingMouse = false;
                slideKnob(event);
                stopSliding(true);
            }
            break;
        case Event.ONMOUSEMOVE:
            if (slidingMouse) {
                slideKnob(event);
            }
            break;
        }
    }
}

From source file:com.cardfight.client.SliderBar.java

License:Apache License

/**
 * Listen for events that will move the knob.
 * /* w w  w  . j av  a  2s .c  o m*/
 * @param event the event that occurred
 */
@Override
public void onBrowserEvent(Event event) {
    super.onBrowserEvent(event);
    if (enabled) {
        switch (DOM.eventGetType(event)) {
        // Unhighlight and cancel keyboard events
        case Event.ONBLUR:
            keyTimer.cancel();
            decideWhichKnobGetsFocus(event);
            if (slidingMouse) {
                DOM.releaseCapture(getElement());
                slidingMouse = false;
                slideKnob(event);
                stopSliding(true, true);
            } else if (slidingKeyboard) {
                slidingKeyboard = false;
                stopSliding(true, true);
            }
            unhighlight();
            break;

        // Highlight on focus
        case Event.ONFOCUS:
            highlight();
            break;

        // Mousewheel events
        case Event.ONMOUSEWHEEL:
            int velocityY = DOM.eventGetMouseWheelVelocityY(event);
            DOM.eventPreventDefault(event);
            if (velocityY > 0) {
                shiftRight(1);
            } else {
                shiftLeft(1);
            }
            break;

        // Shift left or right on key press
        case Event.ONKEYDOWN:
            if (!slidingKeyboard) {
                int multiplier = 1;
                if (DOM.eventGetCtrlKey(event)) {
                    multiplier = (int) (getTotalRange() / stepSize / 10);
                }

                switch (DOM.eventGetKeyCode(event)) {
                case KeyboardListener.KEY_HOME:
                    DOM.eventPreventDefault(event);
                    setCurrentValue(minValue);
                    break;
                case KeyboardListener.KEY_END:
                    DOM.eventPreventDefault(event);
                    if (displaySecondKnob)
                        setCurrentValue2(maxValue);
                    else
                        setCurrentValue(maxValue);
                    break;
                case KeyboardListener.KEY_LEFT:
                    DOM.eventPreventDefault(event);
                    slidingKeyboard = true;
                    startSliding(false, true);
                    shiftLeft(multiplier);
                    keyTimer.schedule(400, false, multiplier);
                    break;
                case KeyboardListener.KEY_RIGHT:
                    DOM.eventPreventDefault(event);
                    slidingKeyboard = true;
                    startSliding(false, true);
                    shiftRight(multiplier);
                    keyTimer.schedule(400, true, multiplier);
                    break;
                case 32:
                    DOM.eventPreventDefault(event);
                    if (displaySecondKnob)
                        setCurrentValue2(minValue + getTotalRange() / 2);
                    else
                        setCurrentValue(minValue + getTotalRange() / 2);
                    break;
                }
            }
            break;
        // Stop shifting on key up
        case Event.ONKEYUP:
            keyTimer.cancel();
            if (slidingKeyboard) {
                slidingKeyboard = false;
                stopSliding(true, true);
            }
            break;

        // Mouse Events
        case Event.ONMOUSEDOWN:
            setFocus(true);
            slidingMouse = true;
            DOM.setCapture(getElement());
            decideWhichKnobGetsFocus(event);
            startSliding(true, true);
            DOM.eventPreventDefault(event);
            slideKnob(event);
            break;
        case Event.ONMOUSEUP:
            if (slidingMouse) {
                DOM.releaseCapture(getElement());
                slidingMouse = false;
                decideWhichKnobGetsFocus(event);
                slideKnob(event);
                stopSliding(true, true);
            }
            break;
        case Event.ONMOUSEMOVE:
            if (slidingMouse) {
                boolean state = knob1HasFocus;
                decideWhichKnobGetsFocus(event);
                if (state != knob1HasFocus) {
                    knob1HasFocus = state;
                    stopSliding(true, true);
                    knob1HasFocus = !state;
                    startSliding(true, true);
                }
                slideKnob(event);
            }
            break;
        }
    }
}