Search in sources :

Example 6 with Event

use of com.google.gwt.user.client.Event in project rstudio by rstudio.

the class ChunkContextToolbar method initRunPrevious.

private void initRunPrevious(boolean dark) {
    runPrevious_.setTitle(RStudioGinjector.INSTANCE.getCommands().executePreviousChunks().getMenuLabel(false));
    runPrevious_.setResource(new ImageResource2x(dark ? RES.runPreviousChunksDark2x() : RES.runPreviousChunksLight2x()));
    DOM.sinkEvents(runPrevious_.getElement(), Event.ONCLICK);
    DOM.setEventListener(runPrevious_.getElement(), new EventListener() {

        @Override
        public void onBrowserEvent(Event event) {
            if (DOM.eventGetType(event) == Event.ONCLICK) {
                host_.runPreviousChunks();
            }
        }
    });
}
Also used : ImageResource2x(org.rstudio.core.client.resources.ImageResource2x) Event(com.google.gwt.user.client.Event) EventListener(com.google.gwt.user.client.EventListener)

Example 7 with Event

use of com.google.gwt.user.client.Event in project gwt-test-utils by gwt-test-utils.

the class DOMImplPatcher method buttonClick.

@PatchMethod
static void buttonClick(Object domImpl, ButtonElement button) {
    EventTarget relatedTarget = button.cast();
    Event onMouseOver = EventBuilder.create(Event.ONMOUSEOVER).setTarget(button).setRelatedTarget(relatedTarget).build();
    dispatchEvent(domImpl, button, onMouseOver);
    Event onMouseDown = EventBuilder.create(Event.ONMOUSEDOWN).setTarget(button).setRelatedTarget(relatedTarget).setButton(Event.BUTTON_LEFT).build();
    dispatchEvent(domImpl, button, onMouseDown);
    Event onMouseUp = EventBuilder.create(Event.ONMOUSEUP).setTarget(button).setRelatedTarget(relatedTarget).setButton(Event.BUTTON_LEFT).build();
    dispatchEvent(domImpl, button, onMouseUp);
    Event onClick = EventBuilder.create(Event.ONCLICK).setTarget(button).setRelatedTarget(relatedTarget).build();
    dispatchEvent(domImpl, button, onClick);
}
Also used : Event(com.google.gwt.user.client.Event) PatchMethod(com.googlecode.gwt.test.patchers.PatchMethod)

Example 8 with Event

use of com.google.gwt.user.client.Event in project gwt-test-utils by gwt-test-utils.

the class Browser method emptyText.

/**
     * <p>
     * Remove the text within a widget which implements HasText interface by simulating a long
     * backspace key press.
     * </p>
     * <p>
     * <ul>
     * <li>For each character in the text value of the widget, a {@link KeyDownEvent} is triggered
     * with value {@link KeyCodes#KEY_BACKSPACE} . It can be prevented with normal effect.</li>
     * <li><strong>Only one</strong> {@link KeyUpEvent} is triggered with value
     * {@link KeyCodes#KEY_BACKSPACE}.</li>
     * <li>Than, a {@link BlurEvent} is triggered.</li>
     * <li>Finally, if at least one on the KeyDown events has not been prevented, a
     * {@link ChangeEvent} is triggered.</li>
     * </p>
     * <p>
     * Note that no {@link KeyPressEvent} would be triggered.
     * </p>
     *
     * @param hasTextWidget The widget to fill. If this implementation actually isn't a
     *                      {@link Widget} instance, nothing would be done.
     */
public static void emptyText(HasText hasTextWidget) {
    boolean changed = false;
    int baseLength = hasTextWidget.getText().length();
    for (int i = 0; i < baseLength; i++) {
        Event keyDownEvent = EventBuilder.create(Event.ONKEYDOWN).setKeyCode(KeyCodes.KEY_BACKSPACE).build();
        dispatchEvent((IsWidget) hasTextWidget, keyDownEvent);
        boolean keyDownEventPreventDefault = JavaScriptObjects.getBoolean(keyDownEvent, JsoProperties.EVENT_PREVENTDEFAULT);
        if (!keyDownEventPreventDefault) {
            hasTextWidget.setText(hasTextWidget.getText().substring(0, hasTextWidget.getText().length() - 1));
            changed = true;
        }
    }
    // don't have to check if the event can be dispatch since it's check
    // before
    Event keyUpEvent = EventBuilder.create(Event.ONKEYUP).setKeyCode(KeyCodes.KEY_BACKSPACE).build();
    dispatchEvent((IsWidget) hasTextWidget, keyUpEvent);
    dispatchEvent((IsWidget) hasTextWidget, EventBuilder.create(Event.ONBLUR).build());
    if (changed) {
        dispatchEvent((IsWidget) hasTextWidget, EventBuilder.create(Event.ONCHANGE).build());
    }
}
Also used : Event(com.google.gwt.user.client.Event) ColumnSortEvent(com.google.gwt.user.cellview.client.ColumnSortEvent)

Example 9 with Event

use of com.google.gwt.user.client.Event in project gwt-test-utils by gwt-test-utils.

the class Browser method pressKey.

/**
     * <p>
     * Simulate a user key press, adding some a character at {@link ValueBoxBase#getCursorPos()}
     * index and deleting {@link ValueBoxBase#getSelectedText()} if the targeted widget is a
     * {@link ValueBoxBase} instance.
     * </p>
     * <p>
     * {@link KeyDownEvent}, {@link KeyPressEvent} and {@link KeyUpEvent} are triggered with keyCode
     * of the pressed key. They can be prevented with normal effect.
     * </p>
     *
     * @param keyCode The code of the key to be pressed.
     * @param widget  The widget to fill. <strong>It has to be attached and visible</strong>
     */
public static <T extends IsWidget & HasText> void pressKey(int keyCode, T widget) {
    if (widget == null) {
        return;
    }
    // trigger keyDown and keyPress
    Event keyDownEvent = EventBuilder.create(Event.ONKEYDOWN).setKeyCode(keyCode).build();
    Event keyPressEvent = EventBuilder.create(Event.ONKEYPRESS).setKeyCode(keyCode).build();
    dispatchEventsInternal(widget, true, keyDownEvent, keyPressEvent);
    // check if one on the events has been prevented
    boolean keyDownEventPreventDefault = JavaScriptObjects.getBoolean(keyDownEvent, JsoProperties.EVENT_PREVENTDEFAULT);
    boolean keyPressEventPreventDefault = JavaScriptObjects.getBoolean(keyPressEvent, JsoProperties.EVENT_PREVENTDEFAULT);
    if (!keyDownEventPreventDefault && !keyPressEventPreventDefault) {
        StringBuilder sb = new StringBuilder(widget.getText());
        // remove selectionRange
        int selectionStart = JavaScriptObjects.getInteger(widget.asWidget().getElement(), JsoProperties.SELECTION_START);
        int selectionEnd = JavaScriptObjects.getInteger(widget.asWidget().getElement(), JsoProperties.SELECTION_END);
        switch(keyCode) {
            case KeyCodes.KEY_ALT:
            case KeyCodes.KEY_CTRL:
            case KeyCodes.KEY_DELETE:
            case KeyCodes.KEY_DOWN:
            case KeyCodes.KEY_END:
            case KeyCodes.KEY_ENTER:
            case KeyCodes.KEY_ESCAPE:
            case KeyCodes.KEY_HOME:
            case KeyCodes.KEY_LEFT:
            case KeyCodes.KEY_PAGEDOWN:
            case KeyCodes.KEY_PAGEUP:
            case KeyCodes.KEY_RIGHT:
            case KeyCodes.KEY_SHIFT:
            case KeyCodes.KEY_UP:
                // nothing to do
                break;
            case KeyCodes.KEY_TAB:
                blur(widget);
                break;
            case KeyCodes.KEY_BACKSPACE:
                if (selectionStart == selectionEnd) {
                    sb.deleteCharAt(selectionStart);
                } else {
                    sb.replace(selectionStart, selectionEnd, "");
                }
                widget.setText(sb.toString());
                break;
            default:
                sb.replace(selectionStart, selectionEnd, "");
                sb.insert(selectionStart, (char) keyCode);
                selectionStart = selectionEnd = selectionStart + 1;
                widget.setText(sb.toString());
                JavaScriptObjects.setProperty(widget.asWidget().getElement(), JsoProperties.SELECTION_START, selectionStart);
                JavaScriptObjects.setProperty(widget.asWidget().getElement(), JsoProperties.SELECTION_END, selectionEnd);
        }
        // trigger keyUp
        Event keyUpEvent = EventBuilder.create(Event.ONKEYUP).setKeyCode(keyCode).build();
        dispatchEventsInternal(widget, true, keyUpEvent);
    }
}
Also used : Event(com.google.gwt.user.client.Event) ColumnSortEvent(com.google.gwt.user.cellview.client.ColumnSortEvent)

Example 10 with Event

use of com.google.gwt.user.client.Event in project gwt-test-utils by gwt-test-utils.

the class Browser method removeText.

/**
     * <p>
     * Remove a fixed number of character from the text within a widget which implements HasText
     * interface by simulating a backspace key press.
     * </p>
     * <p>
     * <ul>
     * <li>x {@link KeyDownEvent} are triggered with value {@link KeyCodes#KEY_BACKSPACE}, with x the
     * number of backspace press passed as parameter. It can be prevented with normal effect.</li>
     * <li>Than, x {@link KeyUpEvent} are triggered with value {@link KeyCodes#KEY_BACKSPACE}, with x
     * the number of backspace press passed as parameter.</li>
     * <li>Than, a {@link BlurEvent} is triggered.</li>
     * <li>Finally, if at least one on the KeyDown events has not been prevented, a
     * {@link ChangeEvent} is triggered.</li>
     * </p>
     * <p>
     * Note that no {@link KeyPressEvent} would be triggered.
     * </p>
     *
     * @param hasTextWidget        The targeted widget. If this implementation actually isn't a
     *                             {@link Widget} instance, nothing would be done.
     * @param backspacePressNumber The number of backspace key press to simulate.
     */
public static void removeText(HasText hasTextWidget, int backspacePressNumber) {
    boolean changed = false;
    for (int i = 0; i < backspacePressNumber; i++) {
        Event keyDownEvent = EventBuilder.create(Event.ONKEYDOWN).setKeyCode(KeyCodes.KEY_BACKSPACE).build();
        Event keyUpEvent = EventBuilder.create(Event.ONKEYUP).setKeyCode(KeyCodes.KEY_BACKSPACE).build();
        dispatchEvent((IsWidget) hasTextWidget, keyDownEvent, keyUpEvent);
        boolean keyDownEventPreventDefault = JavaScriptObjects.getBoolean(keyDownEvent, JsoProperties.EVENT_PREVENTDEFAULT);
        if (!keyDownEventPreventDefault) {
            hasTextWidget.setText(hasTextWidget.getText().substring(0, hasTextWidget.getText().length() - 1));
            changed = true;
        }
    }
    dispatchEvent((IsWidget) hasTextWidget, EventBuilder.create(Event.ONBLUR).build());
    if (changed) {
        dispatchEvent((IsWidget) hasTextWidget, EventBuilder.create(Event.ONCHANGE).build());
    }
}
Also used : Event(com.google.gwt.user.client.Event) ColumnSortEvent(com.google.gwt.user.cellview.client.ColumnSortEvent)

Aggregations

Event (com.google.gwt.user.client.Event)31 EventListener (com.google.gwt.user.client.EventListener)12 ClickEvent (com.google.gwt.event.dom.client.ClickEvent)10 ColumnSortEvent (com.google.gwt.user.cellview.client.ColumnSortEvent)7 SpanElement (com.google.gwt.dom.client.SpanElement)5 KeyDownEvent (com.google.gwt.event.dom.client.KeyDownEvent)5 KeyboardEvent (elemental.events.KeyboardEvent)5 BlurEvent (com.google.gwt.event.dom.client.BlurEvent)4 ClickHandler (com.google.gwt.event.dom.client.ClickHandler)4 KeyUpEvent (com.google.gwt.event.dom.client.KeyUpEvent)4 Test (org.junit.Test)4 ScheduledCommand (com.google.gwt.core.client.Scheduler.ScheduledCommand)3 KeyPressEvent (com.google.gwt.event.dom.client.KeyPressEvent)3 ValueChangeEvent (com.google.gwt.event.logical.shared.ValueChangeEvent)3 PositionCallback (com.google.gwt.user.client.ui.PopupPanel.PositionCallback)3 PatchMethod (com.googlecode.gwt.test.patchers.PatchMethod)3 ImageResource2x (org.rstudio.core.client.resources.ImageResource2x)3 ToolbarPopupMenu (org.rstudio.core.client.widget.ToolbarPopupMenu)3 OnEditEnabler (com.google.gerrit.client.ui.OnEditEnabler)2 Element (com.google.gwt.dom.client.Element)2