Java源码示例:com.google.gwt.user.client.Event.NativePreviewEvent
示例1
@Override
protected void onPreviewNativeEvent(NativePreviewEvent event) {
// Check all events outside the combobox to see if they scroll the
// page. We cannot use e.g. Window.addScrollListener() because the
// scrolled element can be at any level on the page.
// Normally this is only called when the popup is showing, but make
// sure we don't accidentally process all events when not showing.
if (!this.scrollPending && isShowing()
&& !DOM.isOrHasChild(SuggestionPopup.this.getElement(), Element.as(event.getNativeEvent()
.getEventTarget()))) {
if (getDesiredLeftPosition() != this.leftPosition || getDesiredTopPosition() != this.topPosition) {
updatePopupPositionOnScroll();
}
}
super.onPreviewNativeEvent(event);
}
示例2
@Override
protected void onPreviewNativeEvent(NativePreviewEvent event) {
// Check all events outside the combobox to see if they scroll the
// page. We cannot use e.g. Window.addScrollListener() because the
// scrolled element can be at any level on the page.
// Normally this is only called when the popup is showing, but make
// sure we don't accidentally process all events when not showing.
if (!this.scrollPending && isShowing()
&& !DOM.isOrHasChild(SuggestionPopup.this.getElement(), Element.as(event.getNativeEvent()
.getEventTarget()))) {
if (getDesiredLeftPosition() != this.leftPosition || getDesiredTopPosition() != this.topPosition) {
updatePopupPositionOnScroll();
}
}
super.onPreviewNativeEvent(event);
}
示例3
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
if (autoCollapseSlider && event != null && !event.isCanceled() && expand) {
Event nativeEvent = Event.as(event.getNativeEvent());
switch (nativeEvent.getTypeInt()) {
case Event.ONMOUSEDOWN:
case Event.ONTOUCHSTART:
case Event.ONDBLCLICK:
if (eventTargetsPopup(nativeEvent)) {
return;
}
if (eventTargetsInnerElementsPopover(nativeEvent)) {
return;
}
setExpand(false, true);
}
}
}
示例4
@Override
protected void onPreviewNativeEvent(NativePreviewEvent event) {
super.onPreviewNativeEvent(event);
switch (event.getTypeInt()) {
case Event.ONKEYDOWN:
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) {
hide();
} else if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
hide();
MockComponent.this.delete();
}
break;
}
}
示例5
/**
* ExtendedPopupPanel
*/
public ExtendedPopupPanel(boolean autoHide, boolean modal) {
super(autoHide, modal);
// Ensures when mouseup / onclick / ondblclick event is disabled drag flag and not consumed by popup
Event.addNativePreviewHandler(new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
int type = event.getTypeInt();
if (type == Event.ONMOUSEUP || type == Event.ONCLICK || type == Event.ONDBLCLICK) {
Main.get().activeFolderTree.disableDragged();
}
}
});
}
示例6
/**
* Checks if the origin of the given event is a pressed ESC key.
*
* @param event
* the event to analyze
* @return <code>true</code> if the origin of the event is a pressed ESC
* key, otherwise <code>false</code>.
*/
private static boolean isEscKey(final NativePreviewEvent event) {
final int typeInt = event.getTypeInt();
if (typeInt == Event.ONKEYDOWN) {
final int keyCode = event.getNativeEvent().getKeyCode();
if (KeyCodes.KEY_ESCAPE == keyCode) {
return true;
}
}
return false;
}
示例7
@Override
protected void onPreviewNativeEvent(NativePreviewEvent event) {
super.onPreviewNativeEvent(event);
if (isEscapeToHide() && event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ESCAPE) {
AriaStatus.getInstance().setText(ARIA.dialogClosed(getText()));
hide();
} if (isEnterToSubmit() && event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
event.getNativeEvent().stopPropagation();
event.getNativeEvent().preventDefault();
iSubmitHandler.execute();
}
}
示例8
public void checkAccessKeys(NativePreviewEvent event) {
if (event.getTypeInt() == Event.ONKEYUP && (event.getNativeEvent().getAltKey() || event.getNativeEvent().getCtrlKey())) {
for (Map.Entry<Character, Integer> entry: iTabAccessKeys.entrySet())
if (event.getNativeEvent().getKeyCode() == Character.toLowerCase(entry.getKey()) || event.getNativeEvent().getKeyCode() == Character.toUpperCase(entry.getKey())) {
iTabs.selectTab(entry.getValue());
}
}
}
示例9
private boolean eventTargetsDropDown(NativePreviewEvent event) {
Event nativeEvent = Event.as(event.getNativeEvent());
EventTarget target = nativeEvent.getEventTarget();
if (Element.is(target)) {
return this.getElement().isOrHasChild(Element.as(target));
}
return false;
}
示例10
private boolean eventTargetsContainerOrPartner(NativePreviewEvent event) {
Event nativeEvent = Event.as(event.getNativeEvent());
EventTarget target = nativeEvent.getEventTarget();
if (Element.is(target)) {
return this.isOrHasChildOfContainerOrPartner(Element.as(target));
}
return false;
}
示例11
private void previewNativeEvent(NativePreviewEvent event) {
if (event.isCanceled() || event.isConsumed()) {
event.cancel();
return;
}
boolean eventTargetsContainerOrPartner = this.eventTargetsContainerOrPartner(event);
int type = event.getTypeInt();
switch (type) {
case Event.ONMOUSEDOWN:
case Event.ONTOUCHSTART:
if (!eventTargetsContainerOrPartner) {
this.blur();
return;
}
break;
case Event.ONFOCUS:
// Not used because focus events are not previewed yet
if (!eventTargetsContainerOrPartner) {
this.blur();
} else {
this.focus();
}
break;
default:
break;
}
}
示例12
private void updateHandler() {
if (this.previewHandler != null) {
this.previewHandler.removeHandler();
this.previewHandler = null;
}
if (this.focused) {
this.previewHandler = Event.addNativePreviewHandler(new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
CompositeFocusHelper.this.previewNativeEvent(event);
}
});
}
}
示例13
@Override
protected void init() {
super.init();
dummyRootMenuBar = GWT.create(MyVMenuBar.class);
CustomMenuItem item = GWT.create(CustomMenuItem.class);
dummyRootMenuBar.getItems().add(item);
contextMenuWidget = new MyVMenuBar(true, dummyRootMenuBar);
item.setSubMenu(contextMenuWidget);
// application connection that is used for all our overlays
MyVOverlay.setApplicationConnection(this.getConnection());
registerRpc(ContextMenuClientRpc.class, new ContextMenuClientRpc() {
@Override
public void showContextMenu(int x, int y) {
showMenu(x, y);
}
});
Event.addNativePreviewHandler(new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
if (event.getTypeInt() == Event.ONKEYDOWN
&& contextMenuWidget.isPopupShowing()) {
boolean handled = contextMenuWidget.handleNavigation(
event.getNativeEvent().getKeyCode(),
event.getNativeEvent().getCtrlKey(),
event.getNativeEvent().getShiftKey());
if (handled) {
event.cancel();
}
}
}
});
}
示例14
public void onPreviewNativeEvent(NativePreviewEvent event) {
if (event.getTypeInt() == Event.ONKEYPRESS) {
futurama.evaluateKey((char) event.getNativeEvent().getKeyCode());
}
}
示例15
public void onPreviewNativeEvent(NativePreviewEvent event) {
if (isEnabled()) {
Element target = Element
.as(event.getNativeEvent().getEventTarget());
switch (event.getTypeInt()) {
case Event.ONCLICK:
if (getWidget().isOrHasChildOfButton(target)) {
if (getState().popupVisible && getState().buttonClickTogglesPopupVisibility) {
getWidget().sync();
rpc.setPopupVisible(false);
}
}
break;
case Event.ONMOUSEDOWN:
if (!getWidget().isOrHasChildOfPopup(target)
&& !getWidget().isOrHasChildOfConsole(target)
&& !getWidget().isOrHasChildOfButton(target)
&& getState().closePopupOnOutsideClick) {
if (getState().popupVisible) {
getWidget().sync();
rpc.setPopupVisible(false);
}
}
break;
case Event.ONKEYPRESS:
if (getWidget().isOrHasChildOfPopup(target)) {
// Catch children that use keyboard, so we can unfocus
// them
// when
// hiding
getWidget().addToActiveChildren(target);
}
break;
case Event.ONKEYDOWN:
if (getState().popupVisible) {
getWidget().onKeyDownOnVisiblePopup(event.getNativeEvent(), this);
}
break;
default:
break;
}
}
}
示例16
/**
* Initiates the drag only on the first move event
*
* @param originalEvent
* the original Mouse Down event. Only events on elements are
* passed in here (Element.as() is safe without check here)
*/
protected void initiateDragOnMove(final NativeEvent originalEvent) {
EventTarget eventTarget = originalEvent.getEventTarget();
boolean stopEventPropagation = false;
Element targetElement = Element.as(eventTarget);
Widget target = WidgetUtil.findWidget(targetElement, null);
Widget targetParent = target.getParent();
// Stop event propagation and prevent default behaviour if
// - target is *not* a VTabsheet.TabCaption or
// - drag mode is caption mode and widget is caption
boolean isTabCaption = WidgetUtil.findWidget(target.getElement(), TabCaption.class) != null;
boolean isCaption = VDragDropUtil.isCaptionOrCaptionless(targetParent);
if (dragMode == LayoutDragMode.CLONE && isTabCaption == false) {
stopEventPropagation = true;
// overwrite stopEventPropagation flag again if
// - root implements VHasDragFilter but
// - target is not part of its drag filter and
// - target is not a GWT Label based widget
if (root instanceof VHasDragFilter) {
if (((VHasDragFilter) root).getDragFilter()
.isDraggable(target) == false &&
(target instanceof LabelBase) == false) {
stopEventPropagation = false;
}
}
if (root instanceof VHasGrabFilter) {
VGrabFilter grabFilter = ((VHasGrabFilter) root).getGrabFilter();
if (grabFilter != null && !grabFilter.canBeGrabbed(root, target)) {
return;
}
}
}
if (dragMode == LayoutDragMode.CAPTION && isCaption) {
stopEventPropagation = true;
}
if (isElementNotDraggable(targetElement)) {
stopEventPropagation = false;
}
if (stopEventPropagation) {
originalEvent.stopPropagation();
originalEvent.preventDefault();
// Manually focus as preventDefault() will also cancel focus
targetElement.focus();
}
mouseDownHandlerReg = Event
.addNativePreviewHandler(new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(NativePreviewEvent event) {
int type = event.getTypeInt();
if (type == Event.ONMOUSEUP
|| type == Event.ONTOUCHCANCEL
|| type == Event.ONTOUCHEND) {
mouseDownHandlerReg.removeHandler();
mouseDownHandlerReg = null;
} else if (type == Event.ONMOUSEMOVE
|| type == Event.ONTOUCHMOVE) {
mouseDownHandlerReg.removeHandler();
mouseDownHandlerReg = null;
initiateDrag(originalEvent);
}
}
});
}
示例17
@Override
// Exception squid:S1604 - GWT 2.7 does not support Java 8
@SuppressWarnings("squid:S1604")
public void accept(final VDragEvent drag, final UIDL configuration, final VAcceptCallback callback) {
if (isDragStarting(drag)) {
final NativePreviewHandler nativeEventHandler = new NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(final NativePreviewEvent event) {
if (isEscKey(event) || isMouseUp(event)) {
try {
hideDropTargetHints(configuration);
} finally {
nativeEventHandlerRegistration.removeHandler();
}
}
}
};
nativeEventHandlerRegistration = Event.addNativePreviewHandler(nativeEventHandler);
setMultiRowDragDecoration(drag);
}
final int childCount = configuration.getChildCount();
accepted = false;
for (int childIndex = 0; childIndex < childCount; childIndex++) {
final VAcceptCriterion crit = getCriteria(configuration, childIndex);
crit.accept(drag, configuration.getChildUIDL(childIndex), this);
if (Boolean.TRUE.equals(accepted)) {
callback.accepted(drag);
return;
}
}
// if no VAcceptCriterion accepts and the mouse is release, an error
// message is shown
if (Event.ONMOUSEUP == Event.getTypeInt(drag.getCurrentGwtEvent().getType())) {
showErrorNotification(drag);
}
errorMessage = configuration.getStringAttribute(ERROR_MESSAGE);
}
示例18
@Override
public void onPreviewNativeEvent(NativePreviewEvent previewEvent) {
if (autoHiders.isEmpty()) {
return;
}
// TODO(danilatos,user,user): Push signal down a layer - clean this up.
Event event = Event.as(previewEvent.getNativeEvent());
int lowLevelType = event.getTypeInt();
// TODO(danilatos): Insert this logic deeply rather than
// sprinkling it in event handlers. Also the return value
// of onEventPreview is the reverse of signal handlers.
SignalEvent signal = SignalEventImpl.create(event, false);
if (signal == null) {
return;
}
// Key events (excluding escape) and mousewheel events use hideTopmostAutoHiderForKeyEvent
if (lowLevelType == Event.ONMOUSEWHEEL || signal.isKeyEvent()) {
if (hideTopmostAutoHiderForKeyEvent(false)) {
// TODO(user): We don't call previewEvent.cancel() here, since for the floating-buttons
// menu we want, for example, space-bar to still shift focus to the next blip.
// The to-do is to audit the previewEvent.cancel call below and see why it's there (and if
// it's not needed, eliminate it).
return;
}
}
// Pressing escape at any time causes us to close and discard the event.
if (signal.getKeySignalType() == KeySignalType.NOEFFECT &&
event.getKeyCode() == KeyCodes.KEY_ESCAPE) {
if (hideTopmostAutoHiderForKeyEvent(true)) {
previewEvent.cancel();
return;
}
}
// Click events and mouse-wheel events that fall through use hideAllAfter.
if (lowLevelType == Event.ONMOUSEDOWN || lowLevelType == Event.ONMOUSEWHEEL) {
hideAllAfter(signal.getTarget());
}
// Otherwise we don't do anything and the event continues as usual.
}
示例19
@Override
public void onPreviewNativeEvent(NativePreviewEvent previewEvent) {
if (autoHiders.isEmpty()) {
return;
}
// TODO(danilatos,user,user): Push signal down a layer - clean this up.
Event event = Event.as(previewEvent.getNativeEvent());
int lowLevelType = event.getTypeInt();
// TODO(danilatos): Insert this logic deeply rather than
// sprinkling it in event handlers. Also the return value
// of onEventPreview is the reverse of signal handlers.
SignalEvent signal = SignalEventImpl.create(event, false);
if (signal == null) {
return;
}
// Key events (excluding escape) and mousewheel events use hideTopmostAutoHiderForKeyEvent
if (lowLevelType == Event.ONMOUSEWHEEL || signal.isKeyEvent()) {
if (hideTopmostAutoHiderForKeyEvent(false)) {
// TODO(user): We don't call previewEvent.cancel() here, since for the floating-buttons
// menu we want, for example, space-bar to still shift focus to the next blip.
// The to-do is to audit the previewEvent.cancel call below and see why it's there (and if
// it's not needed, eliminate it).
return;
}
}
// Pressing escape at any time causes us to close and discard the event.
if (signal.getKeySignalType() == KeySignalType.NOEFFECT &&
event.getKeyCode() == KeyCodes.KEY_ESCAPE) {
if (hideTopmostAutoHiderForKeyEvent(true)) {
previewEvent.cancel();
return;
}
}
// Click events and mouse-wheel events that fall through use hideAllAfter.
if (lowLevelType == Event.ONMOUSEDOWN || lowLevelType == Event.ONMOUSEWHEEL) {
hideAllAfter(signal.getTarget());
}
// Otherwise we don't do anything and the event continues as usual.
}
示例20
/**
* Checks if the given event is of type <code>Event.ONMOUSEUP</code>.
*
* @param event
* the event to analyze
* @return <code>true</code> if the given event is of type
* <code>Event.ONMOUSEUP</code>, otherwise <code>false</code>.
*/
private static boolean isMouseUp(final NativePreviewEvent event) {
return Event.ONMOUSEUP == Event.getTypeInt(event.getNativeEvent().getType());
}