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();
}
}
});
}
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);
}
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());
}
}
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);
}
}
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());
}
}
Aggregations