Example usage for com.google.gwt.dom.client Node as

List of usage examples for com.google.gwt.dom.client Node as

Introduction

In this page you can find the example usage for com.google.gwt.dom.client Node as.

Prototype

public static Node as(JavascriptObjectEquivalent o) 

Source Link

Document

Assert that the given JavaScriptObject is a DOM node and automatically typecast it.

Usage

From source file:cc.alcina.framework.gwt.client.gwittir.widget.RichTextArea.java

License:Apache License

@SuppressWarnings("unchecked")
public RichTextArea(boolean withToolbar, String defaultFontSize) {
    this.defaultFontSize = defaultFontSize;
    old = base.getHTML();//from  w w w. jav  a2 s .com
    this.setComparator(SimpleComparator.INSTANCE);
    this.base.addBlurHandler(new BlurHandler() {
        public void onBlur(BlurEvent event) {
            EventTarget eventTarget = event.getNativeEvent().getEventTarget();
            if (Node.is(eventTarget)) {
                Node elt = Node.as(eventTarget);
                if (DomUtils.isAncestorOf(toolbar.getElement(), elt)) {
                    return;
                }
            }
            changes.firePropertyChange("value", old, getValue());
        }
    });
    this.base.addKeyUpHandler(new KeyUpHandler() {
        public void onKeyUp(KeyUpEvent event) {
            int keyCode = event.getNativeKeyCode();
            if (keyCode == 'M' && event.isControlKeyDown()) {
                if (maximised) {
                    RichTextArea.this.removeStyleName("max");
                    WidgetUtils.restoreFromMaximise();
                } else {
                    WidgetUtils.maximiseWidget(RichTextArea.this);
                    RichTextArea.this.addStyleName("max");
                }
                maximised = !maximised;
            }
        }
    });
    this.base.addInitializeHandler(new InitializeHandler() {
        @Override
        public void onInitialize(InitializeEvent event) {
            styleBody(base.getElement(), "12px");
        }
    });
    FlowPanel fp = new FlowPanel();
    if (withToolbar) {
        FlowPanel tbHolder = new FlowPanel();
        tbHolder.setStyleName("alcina-richTextToolbarBkg");
        tbHolder.add(toolbar);
        fp.add(tbHolder);
    }
    fp.add(base);
    super.initWidget(fp);
}

From source file:client.net.sf.saxon.ce.Xslt20ProcessorImpl.java

License:Mozilla Public License

private void registerEventHandlers(Controller controller) throws XPathException {
    // add an event listener to capture registered event modes
    if (registeredEventModes != null) {
        return;//from www  .j ava 2 s  . c  o  m
    }
    Element docElement = (com.google.gwt.user.client.Element) (Object) Document.get();
    registeredEventModes = controller.getRuleManager().getModesInNamespace(NamespaceConstant.IXSL);
    // Restriction: only one event listener per element
    if (registeredEventModes.size() > 0 && !registeredForEvents) {
        registeredForEvents = true;
        registerNonDOMevents(controller);
        if (DOM.getEventListener((com.google.gwt.user.client.Element) docElement) == null) {
            principleEventListener = true;
            DOM.setEventListener((com.google.gwt.user.client.Element) docElement, new EventListener() {
                public void onBrowserEvent(Event event) {

                    EventTarget eTarget = event.getEventTarget();
                    Node eventNode;
                    if (Node.is(eTarget)) {
                        eventNode = Node.as(eTarget);
                    } else {
                        eventNode = Node.as(getCorrespondingSVGElement(eTarget));
                        if (eventNode == null) {
                            return;
                        }
                    }
                    bubbleApplyTemplates(eventNode, event);
                }
            });
        } else {
            // can't register for event so register for relayEvent
            Controller.addEventProcessor(this);
        }
    }
    // Events for all processor instances may register 1 or more event types
    for (Mode eventMode : registeredEventModes) {
        String eventName = eventMode.getModeName().getLocalName();
        if (!eventName.startsWith("on")) {
            logger.warning("Event name: '" + eventName + "' is invalid - names should begin with 'on'");
        } else {
            eventName = eventName.substring(2);
        }
        int eventNo = Event.getTypeInt(eventName);
        DOM.sinkEvents((com.google.gwt.user.client.Element) docElement,
                eventNo | DOM.getEventsSunk((com.google.gwt.user.client.Element) docElement));

    }

}

From source file:com.google.gwt.sample.contacts.client.view.ContactsViewImpl.java

@UiHandler("contactsTable")
void onTableClicked(ClickEvent event) {
    if (presenter != null) {
        EventTarget target = event.getNativeEvent().getEventTarget();
        Node node = Node.as(target);
        TableCellElement cell = findNearestParentCell(node);
        if (cell == null) {
            return;
        }/*ww  w . j a  v a  2 s .  co  m*/

        TableRowElement tr = TableRowElement.as(cell.getParentElement());
        int row = tr.getSectionRowIndex();

        if (cell != null) {
            if (shouldFireClickEvent(cell)) {
                presenter.onItemClicked(rowData.get(row));
            }
            if (shouldFireSelectEvent(cell)) {
                presenter.onItemSelected(rowData.get(row));
            }
        }
    }
}

From source file:com.gwtm.ui.client.widgets.OverlayPanel.java

License:Apache License

@Override
public void onBrowserEvent(Event e) {
    EventTarget target = e.getEventTarget();
    Node node = Node.as(target);

    if (Element.is(node)) {
        Element ele = Element.as(target);
        // maek sure click is invoked from overlay not inner widget
        if (ele.getClassName().contains(ThemeManager.getTheme().overlaypanel())) {
            super.onBrowserEvent(e);
            return;
        }//from   w  w w  .j a v a2 s.co  m
    }
}

From source file:com.gwtmobile.ui.client.event.DragController.java

License:Apache License

protected void fireDragEvent(DragEvent e) {
    if (_capturingDragEventsHandler != null) {
        e.dispatch(_capturingDragEventsHandler);
        return;//from w  ww  . j a va  2  s.  com
    }
    EventTarget target = e.getNativeEvent().getEventTarget();
    Node node = Node.as(target);
    if (!Element.is(node)) {
        node = node.getParentNode(); // Text node
    }
    if (Element.is(node)) {
        Element ele = Element.as(target);
        int count = 0;
        while (ele != null) {
            for (DragEventsHandler handler : _dragEventHandlers) {
                if (ele.equals(handler.getElement())) {
                    e.dispatch(handler);
                    count++;
                    if (e.getStopPropagation() || count == _dragEventHandlers.size()) {
                        return;
                    }
                }
            }
            ele = ele.getParentElement();
        }
    }
}

From source file:com.gwtmobile.ui.client.event.DragController.java

License:Apache License

protected void fireSwipeEvent(SwipeEvent e) {
    if (_capturingSwipeEventsHandler != null) {
        e.dispatch(_capturingSwipeEventsHandler);
        return;/*w  w w  .ja va2 s . c  o  m*/
    }
    if (_capturingDragEventsHandler != null) {
        return;
    }
    EventTarget target = e.getNativeEvent().getEventTarget();
    Node node = Node.as(target);
    if (!Element.is(node)) {
        node = node.getParentNode(); //Text node
    }
    if (Element.is(node)) {
        Element ele = Element.as(target);
        int count = 0;
        while (ele != null) {
            for (SwipeEventsHandler handler : _swipeEventHandlers) {
                if (ele.equals(handler.getElement())) {
                    e.dispatch(handler);
                    count++;
                    if (e.getStopPropagation() || count == _swipeEventHandlers.size()) {
                        return;
                    }
                }
            }
            ele = ele.getParentElement();
        }
    }
}

From source file:com.vaadin.client.ui.dd.DDEventHandleStrategy.java

License:Apache License

/**
 * Get target element for {@code event}.
 * /*from www . j a va  2s  . c  o m*/
 * @param event
 *            GWT event to find target
 * @param mediator
 *            VDragAndDropManager data accessor
 * @return target element for {@code event}
 */
public Element getTargetElement(NativePreviewEvent event, DDManagerMediator mediator) {
    NativeEvent gwtEvent = event.getNativeEvent();
    Element targetElement;
    if (WidgetUtil.isTouchEvent(gwtEvent) || mediator.getManager().getDragElement() != null) {
        int x = WidgetUtil.getTouchOrMouseClientX(gwtEvent);
        int y = WidgetUtil.getTouchOrMouseClientY(gwtEvent);
        // Util.browserDebugger();
        targetElement = WidgetUtil.getElementFromPoint(x, y);
    } else {
        Node targetNode = Node.as(gwtEvent.getEventTarget());

        if (Element.is(targetNode)) {
            targetElement = Element.as(targetNode);
        } else {
            targetElement = targetNode.getParentElement();
        }
    }
    return targetElement;
}

From source file:com.vaadin.client.ui.dd.VaaclipseDragAndDropManager.java

License:Apache License

/**
 * This method is used to start Vaadin client side drag and drop operation.
 * Operation may be started by virtually any Widget.
 * <p>/*from   w ww. j a va2 s  . c  o  m*/
 * Cancels possible existing drag. TODO figure out if this is always a bug
 * if one is active. Maybe a good and cheap lifesaver thought.
 * <p>
 * If possible, method automatically detects current {@link VDropHandler}
 * and fires {@link VDropHandler#dragEnter(VDragEvent)} event on it.
 * <p>
 * May also be used to control the drag and drop operation. If this option
 * is used, {@link VDropHandler} is searched on mouse events and appropriate
 * methods on it called automatically.
 * 
 * @param transferable
 * @param nativeEvent
 * @param handleDragEvents
 *            if true, {@link VaaclipseDragAndDropManager} handles the drag and drop
 *            operation GWT event preview.
 * @return
 */
public VDragEvent startDrag(VTransferable transferable, final NativeEvent startEvent,
        final boolean handleDragEvents) {

    VConsole.log("!!! start !!!");

    interruptDrag();
    isStarted = false;

    currentDrag = new VDragEvent(transferable, startEvent);
    currentDrag.setCurrentGwtEvent(startEvent);

    final Command startDrag = new Command() {

        @Override
        public void execute() {
            isStarted = true;
            addActiveDragSourceStyleName();
            VDropHandler dh = null;
            if (startEvent != null) {
                dh = findDragTarget(Element.as(currentDrag.getCurrentGwtEvent().getEventTarget()));
            }
            if (dh != null) {
                // drag has started on a DropHandler, kind of drag over
                // happens
                currentDropHandler = dh;
                dh.dragEnter(currentDrag);
            }

            if (handleDragEvents) {
                handlerRegistration = Event.addNativePreviewHandler(defaultDragAndDropEventHandler);
                if (dragElement != null && dragElement.getParentElement() == null) {
                    // deferred attaching drag image is on going, we can
                    // hurry with it now
                    lazyAttachDragElement.cancel();
                    lazyAttachDragElement.run();
                }
            }
            // just capture something to prevent text selection in IE
            Event.setCapture(RootPanel.getBodyElement());
        }

        private void addActiveDragSourceStyleName() {
            ComponentConnector dragSource = currentDrag.getTransferable().getDragSource();
            dragSource.getWidget().addStyleName(ACTIVE_DRAG_SOURCE_STYLENAME);
        }
    };

    final int eventType = Event.as(startEvent).getTypeInt();
    if (handleDragEvents && (eventType == Event.ONMOUSEDOWN || eventType == Event.ONTOUCHSTART)) {
        // only really start drag event on mousemove
        deferredStartRegistration = Event.addNativePreviewHandler(new NativePreviewHandler() {

            @Override
            public void onPreviewNativeEvent(NativePreviewEvent event) {
                int typeInt = event.getTypeInt();
                switch (typeInt) {
                case Event.ONMOUSEOVER:
                    if (dragElement == null) {
                        break;
                    }
                    EventTarget currentEventTarget = event.getNativeEvent().getCurrentEventTarget();
                    if (Node.is(currentEventTarget) && !dragElement.isOrHasChild(Node.as(currentEventTarget))) {
                        // drag image appeared below, ignore
                        break;
                    }
                case Event.ONKEYDOWN:
                case Event.ONKEYPRESS:
                case Event.ONKEYUP:
                case Event.ONBLUR:
                case Event.ONFOCUS:
                    // don't cancel possible drag start
                    break;
                case Event.ONMOUSEOUT:

                    if (dragElement == null) {
                        break;
                    }
                    EventTarget relatedEventTarget = event.getNativeEvent().getRelatedEventTarget();
                    if (Node.is(relatedEventTarget) && !dragElement.isOrHasChild(Node.as(relatedEventTarget))) {
                        // drag image appeared below, ignore
                        break;
                    }
                case Event.ONMOUSEMOVE:
                case Event.ONTOUCHMOVE:
                    if (deferredStartRegistration != null) {
                        deferredStartRegistration.removeHandler();
                        deferredStartRegistration = null;
                    }
                    currentDrag.setCurrentGwtEvent(event.getNativeEvent());
                    startDrag.execute();
                    break;
                default:
                    // on any other events, clean up the
                    // deferred drag start
                    if (deferredStartRegistration != null) {
                        deferredStartRegistration.removeHandler();
                        deferredStartRegistration = null;
                    }
                    currentDrag = null;
                    clearDragElement();
                    break;
                }
            }

        });

    } else {
        startDrag.execute();
    }

    return currentDrag;
}

From source file:com.vaadin.client.ui.dd.VDragAndDropManager.java

License:Apache License

/**
 * This method is used to start Vaadin client side drag and drop operation.
 * Operation may be started by virtually any Widget.
 * <p>//from   ww  w .j a va2  s.c  o m
 * Cancels possible existing drag. TODO figure out if this is always a bug
 * if one is active. Maybe a good and cheap lifesaver thought.
 * <p>
 * If possible, method automatically detects current {@link VDropHandler}
 * and fires {@link VDropHandler#dragEnter(VDragEvent)} event on it.
 * <p>
 * May also be used to control the drag and drop operation. If this option
 * is used, {@link VDropHandler} is searched on mouse events and appropriate
 * methods on it called automatically.
 * 
 * @param transferable
 * @param nativeEvent
 * @param handleDragEvents
 *            if true, {@link VDragAndDropManager} handles the drag and drop
 *            operation GWT event preview.
 * @return
 */
public VDragEvent startDrag(VTransferable transferable, final NativeEvent startEvent,
        final boolean handleDragEvents) {
    interruptDrag();
    isStarted = false;

    currentDrag = new VDragEvent(transferable, startEvent);
    currentDrag.setCurrentGwtEvent(startEvent);

    final Command startDrag = new Command() {

        @Override
        public void execute() {
            isStarted = true;
            addActiveDragSourceStyleName();
            VDropHandler dh = null;
            if (startEvent != null) {
                dh = findDragTarget(Element.as(currentDrag.getCurrentGwtEvent().getEventTarget()));
            }
            if (dh != null) {
                // drag has started on a DropHandler, kind of drag over
                // happens
                currentDropHandler = dh;
                dh.dragEnter(currentDrag);
            }

            if (handleDragEvents) {
                handlerRegistration = Event.addNativePreviewHandler(defaultDragAndDropEventHandler);
                if (dragElement != null && dragElement.getParentElement() == null) {
                    attachDragElement();
                }
            }
            // just capture something to prevent text selection in IE
            Event.setCapture(RootPanel.getBodyElement());
        }

        private void addActiveDragSourceStyleName() {
            ComponentConnector dragSource = currentDrag.getTransferable().getDragSource();
            dragSource.getWidget().addStyleName(ACTIVE_DRAG_SOURCE_STYLENAME);
        }
    };

    final int eventType = Event.as(startEvent).getTypeInt();
    if (handleDragEvents && (eventType == Event.ONMOUSEDOWN || eventType == Event.ONTOUCHSTART)) {
        // only really start drag event on mousemove
        deferredStartRegistration = Event.addNativePreviewHandler(new NativePreviewHandler() {

            private int startX = WidgetUtil.getTouchOrMouseClientX(currentDrag.getCurrentGwtEvent());
            private int startY = WidgetUtil.getTouchOrMouseClientY(currentDrag.getCurrentGwtEvent());

            @Override
            public void onPreviewNativeEvent(NativePreviewEvent event) {
                int typeInt = event.getTypeInt();
                if (typeInt == -1 && event.getNativeEvent().getType().toLowerCase().contains("pointer")) {
                    /*
                     * Ignore PointerEvents since IE10 and IE11 send
                     * also MouseEvents for backwards compatibility.
                     */
                    return;
                }

                switch (typeInt) {
                case Event.ONMOUSEOVER:
                    if (dragElement == null) {
                        break;
                    }
                    EventTarget currentEventTarget = event.getNativeEvent().getCurrentEventTarget();
                    if (Node.is(currentEventTarget) && !dragElement.isOrHasChild(Node.as(currentEventTarget))) {
                        // drag image appeared below, ignore
                        break;
                    }
                case Event.ONKEYDOWN:
                case Event.ONKEYPRESS:
                case Event.ONKEYUP:
                case Event.ONBLUR:
                case Event.ONFOCUS:
                    // don't cancel possible drag start
                    break;
                case Event.ONMOUSEOUT:

                    if (dragElement == null) {
                        break;
                    }
                    EventTarget relatedEventTarget = event.getNativeEvent().getRelatedEventTarget();
                    if (Node.is(relatedEventTarget) && !dragElement.isOrHasChild(Node.as(relatedEventTarget))) {
                        // drag image appeared below, ignore
                        break;
                    }
                case Event.ONMOUSEMOVE:
                case Event.ONTOUCHMOVE:
                    int currentX = WidgetUtil.getTouchOrMouseClientX(event.getNativeEvent());
                    int currentY = WidgetUtil.getTouchOrMouseClientY(event.getNativeEvent());
                    if (Math.abs(startX - currentX) > MINIMUM_DISTANCE_TO_START_DRAG
                            || Math.abs(startY - currentY) > MINIMUM_DISTANCE_TO_START_DRAG) {
                        ensureDeferredRegistrationCleanup();
                        currentDrag.setCurrentGwtEvent(event.getNativeEvent());
                        startDrag.execute();
                    }
                    break;
                default:
                    ensureDeferredRegistrationCleanup();
                    currentDrag = null;
                    clearDragElement();
                    break;
                }
            }

        });

    } else {
        startDrag.execute();
    }

    return currentDrag;
}

From source file:com.vaadin.terminal.gwt.client.ui.dd.VDragAndDropManager.java

License:Open Source License

/**
 * This method is used to start Vaadin client side drag and drop operation.
 * Operation may be started by virtually any Widget.
 * <p>/*from www. j  a va 2  s .  c om*/
 * Cancels possible existing drag. TODO figure out if this is always a bug
 * if one is active. Maybe a good and cheap lifesaver thought.
 * <p>
 * If possible, method automatically detects current {@link VDropHandler}
 * and fires {@link VDropHandler#dragEnter(VDragEvent)} event on it.
 * <p>
 * May also be used to control the drag and drop operation. If this option
 * is used, {@link VDropHandler} is searched on mouse events and appropriate
 * methods on it called automatically.
 * 
 * @param transferable
 * @param nativeEvent
 * @param handleDragEvents
 *            if true, {@link VDragAndDropManager} handles the drag and drop
 *            operation GWT event preview.
 * @return
 */
public VDragEvent startDrag(VTransferable transferable, final NativeEvent startEvent,
        final boolean handleDragEvents) {
    interruptDrag();
    isStarted = false;

    currentDrag = new VDragEvent(transferable, startEvent);
    currentDrag.setCurrentGwtEvent(startEvent);

    final Command startDrag = new Command() {

        public void execute() {
            isStarted = true;
            addActiveDragSourceStyleName();
            VDropHandler dh = null;
            if (startEvent != null) {
                dh = findDragTarget(Element.as(currentDrag.getCurrentGwtEvent().getEventTarget()));
            }
            if (dh != null) {
                // drag has started on a DropHandler, kind of drag over
                // happens
                currentDropHandler = dh;
                dh.dragEnter(currentDrag);
            }

            if (handleDragEvents) {
                handlerRegistration = Event.addNativePreviewHandler(defaultDragAndDropEventHandler);
                if (dragElement != null && dragElement.getParentElement() == null) {
                    // deferred attaching drag image is on going, we can
                    // hurry with it now
                    lazyAttachDragElement.cancel();
                    lazyAttachDragElement.run();
                }
            }
            // just capture something to prevent text selection in IE
            Event.setCapture(RootPanel.getBodyElement());
        }

        private void addActiveDragSourceStyleName() {
            Paintable dragSource = currentDrag.getTransferable().getDragSource();
            ((Widget) dragSource).addStyleName(ACTIVE_DRAG_SOURCE_STYLENAME);
        }
    };

    final int eventType = Event.as(startEvent).getTypeInt();
    if (handleDragEvents && (eventType == Event.ONMOUSEDOWN || eventType == Event.ONTOUCHSTART)) {
        // only really start drag event on mousemove
        deferredStartRegistration = Event.addNativePreviewHandler(new NativePreviewHandler() {

            public void onPreviewNativeEvent(NativePreviewEvent event) {
                int typeInt = event.getTypeInt();
                switch (typeInt) {
                case Event.ONMOUSEOVER:
                    if (dragElement == null) {
                        break;
                    }
                    EventTarget currentEventTarget = event.getNativeEvent().getCurrentEventTarget();
                    if (Node.is(currentEventTarget) && !dragElement.isOrHasChild(Node.as(currentEventTarget))) {
                        // drag image appeared below, ignore
                        break;
                    }
                case Event.ONKEYDOWN:
                case Event.ONKEYPRESS:
                case Event.ONKEYUP:
                case Event.ONBLUR:
                case Event.ONFOCUS:
                    // don't cancel possible drag start
                    break;
                case Event.ONMOUSEOUT:

                    if (dragElement == null) {
                        break;
                    }
                    EventTarget relatedEventTarget = event.getNativeEvent().getRelatedEventTarget();
                    if (Node.is(relatedEventTarget) && !dragElement.isOrHasChild(Node.as(relatedEventTarget))) {
                        // drag image appeared below, ignore
                        break;
                    }
                case Event.ONMOUSEMOVE:
                case Event.ONTOUCHMOVE:
                    if (deferredStartRegistration != null) {
                        deferredStartRegistration.removeHandler();
                        deferredStartRegistration = null;
                    }
                    currentDrag.setCurrentGwtEvent(event.getNativeEvent());
                    startDrag.execute();
                    break;
                default:
                    // on any other events, clean up the
                    // deferred drag start
                    if (deferredStartRegistration != null) {
                        deferredStartRegistration.removeHandler();
                        deferredStartRegistration = null;
                    }
                    currentDrag = null;
                    clearDragElement();
                    break;
                }
            }

        });

    } else {
        startDrag.execute();
    }

    return currentDrag;
}