Example usage for org.w3c.dom.events Event stopPropagation

List of usage examples for org.w3c.dom.events Event stopPropagation

Introduction

In this page you can find the example usage for org.w3c.dom.events Event stopPropagation.

Prototype

public void stopPropagation();

Source Link

Document

The stopPropagation method is used prevent further propagation of an event during event flow.

Usage

From source file:de.betterform.xml.xforms.action.AbstractAction.java

/**
 * This method is called whenever an event occurs of the type for which the
 * <code>EventListener</code> interface was registered.
 *
 * @param event The <code>Event</code> contains contextual information about
 *              the event. It also contains the <code>stopPropagation</code> and
 *              <code>preventDefault</code> methods which are used in determining the
 *              event's flow and default action.
 */// w w  w.j a va 2s.  c  o m
public final void handleEvent(Event event) {
    try {
        if (event.getType().equals(this.eventType)) {
            boolean doPerform = false;

            if (this.propagate.equals("stop")) {
                event.stopPropagation();
            }
            if (this.defaultAction.equals("cancel")) {
                event.preventDefault();
            }

            if (getLogger().isTraceEnabled()) {
                String currentEventId = (((Element) event.getCurrentTarget()).getAttribute("id"));
                String targetEventId = (((Element) event.getTarget()).getAttribute("id"));
                LOGGER.trace(
                        "currentEventTargetId: '" + currentEventId + "' eventTargetId:'" + targetEventId + "'");

                getLogger().trace("handling event '" + this.eventType + "' target: "
                        + DOMUtil.getCanonicalPath(this.element) + "' Event Phase: (" + event.getEventPhase()
                        + ")");
            }

            if (getLogger().isDebugEnabled()) {
                switch (event.getEventPhase()) {
                case Event.CAPTURING_PHASE:
                    if (getLogger().isDebugEnabled()) {
                        getLogger().debug("CAPTURING PHASE");
                    }

                    break;
                case Event.AT_TARGET:
                    if (getLogger().isDebugEnabled()) {
                        getLogger().debug("AT_TARGET");
                    }

                    break;
                case Event.BUBBLING_PHASE:
                    if (getLogger().isDebugEnabled()) {
                        getLogger().debug("BUBBLING");
                    }
                    break;
                }
            }

            if (event.getEventPhase() == Event.CAPTURING_PHASE && this.phase.equals("capture")) {
                doPerform = true;
            } else if (event.getEventPhase() == Event.AT_TARGET) {
                doPerform = true;
            } else if (event.getEventPhase() == Event.BUBBLING_PHASE) {
                doPerform = true;
            }

            String targetEventId = (((Element) event.getTarget()).getAttribute("id"));
            if (!(this.eventTargetId.equals(""))) {
                if (event.getType().equals(this.eventType) && targetEventId.equals(this.eventTargetId)) {
                    doPerform = true;
                } else {
                    doPerform = false;
                }
            }

            if (doPerform) {
                performConditional(this.element);
            }
        }
    } catch (Exception e) {
        // handle exception, prevent default action and stop event propagation
        this.container.handleEventException(e);
        event.preventDefault();
        event.stopPropagation();
    }
}

From source file:com.vladsch.idea.multimarkdown.editor.MultiMarkdownFxPreviewEditor.java

protected void workerStateChanged(ObservableValue<? extends Worker.State> observable, Worker.State oldState,
        Worker.State newState) {/*from  w w  w . j a va2s .c o  m*/
    //logger.info("[" + instance + "] " + "newState: " + newState + ", oldState: " + oldState);
    if (newState == Worker.State.SUCCEEDED) {
        // restore scroll if we had it
        JSObject jsobj = (JSObject) webEngine.executeScript("window");
        jsobj.setMember("java", new JSBridge(this));

        EventListener listener = new EventListener() {
            @Override
            public void handleEvent(org.w3c.dom.events.Event evt) {
                evt.stopPropagation();
                evt.preventDefault();

                if (project.isDisposed())
                    return;

                Element link = (Element) evt.getCurrentTarget();
                org.w3c.dom.Document doc = webEngine.getDocument();
                final String href = link.getAttribute("href");
                if (href.charAt(0) == '#') {
                    if (href.length() != 1) {
                        // tries to go to an anchor
                        String hrefName = href.substring(1);
                        // scroll it into view
                        try {
                            JSObject result = (JSObject) webEngine.executeScript("(function () {\n"
                                    + "    var elemTop = 0;\n" + "    var elems = '';\n"
                                    + "    var elem = window.document.getElementById('" + hrefName + "');\n"
                                    + "    if (!elem) {\n"
                                    + "        var elemList = window.document.getElementsByTagName('a');\n"
                                    + "        for (a in elemList) {\n"
                                    + "            var aElem = elemList[a]\n"
                                    + "            if (aElem.hasOwnProperty('name') && aElem.name == '"
                                    + hrefName + "') {\n" + "                elem = aElem;\n"
                                    + "                break;\n" + "            }\n" + "        }\n" + "    }\n"
                                    + "    if (elem) {\n"
                                    + "        while (elem && elem.tagName !== 'HTML') {\n"
                                    + "            elems += ',' + elem.tagName + ':' + elem.offsetTop\n"
                                    + "            if (elem.offsetTop) {\n"
                                    + "                elemTop += elem.offsetTop;\n"
                                    + "                break;\n" + "            }\n"
                                    + "            elem = elem.parentNode\n" + "        }\n" + "    }\n"
                                    + "    return { elemTop: elemTop, elems: elems, found: !!elem };\n" + "})()"
                                    + "");
                            int elemTop = (Integer) result.getMember("elemTop");
                            boolean elemFound = (Boolean) result.getMember("found");
                            String parentList = (String) result.getMember("elems");
                            //logger.trace(parentList);
                            if (elemFound)
                                webEngine.executeScript("window.scroll(0, " + elemTop + ")");
                        } catch (JSException ex) {
                            String error = ex.toString();
                            logger.info("[" + instance + "] " + "JSException on script", ex);
                        }
                    }
                } else {
                    MultiMarkdownPathResolver.launchExternalLink(project, href);
                }
            }
        };

        NodeList nodeList;
        org.w3c.dom.Document doc = webEngine.getDocument();
        if (doc != null) {
            ((EventTarget) doc.getDocumentElement()).addEventListener("contextmenu", new EventListener() {
                @Override
                public void handleEvent(Event evt) {
                    evt.preventDefault();
                }
            }, false);

            Element el = doc.getElementById("a");
            nodeList = doc.getElementsByTagName("a");
            for (int i = 0; i < nodeList.getLength(); i++) {
                ((EventTarget) nodeList.item(i)).addEventListener("click", listener, false);
            }

            // all images are mapped during conversion. Any relative ones are not resolved.
            //nodeList = doc.getElementsByTagName("img");
            //for (int i = 0; i < nodeList.getLength(); i++) {
            //    HTMLImageElementImpl imgNode = (HTMLImageElementImpl) nodeList.item(i);
            //    String src = imgNode.getSrc();
            //    if (!src.startsWith("http://") && !src.startsWith("https://") && !src.startsWith("ftp://") && !src.startsWith("file://")) {
            //        // relative to document, change it to absolute file://
            //        // this means it does not resolve, leave it
            //        if (!project.isDisposed() && containingFile != null && resolver != null) {
            //            ImageLinkRef linkRef = new ImageLinkRef(new FileRef(containingFile), src, null, null);
            //            PathInfo resolvedTarget = resolver.resolve(linkRef, LinkResolver.ONLY_URI, null);
            //
            //            assert resolvedTarget == null || resolvedTarget instanceof LinkRef && linkRef.isURI() : "Expected URI LinkRef, got " + linkRef;
            //            if (resolvedTarget != null) {
            //                imgNode.setSrc(resolvedTarget.getFilePath());
            //            }
            //        }
            //    }
            //}
        }

        if (pageScript != null && pageScript.length() > 0) {
            webEngine.executeScript(pageScript);
        }

        // enable debug if it is enabled in settings
        if (MultiMarkdownGlobalSettings.getInstance().enableFirebug.getValue()) {
            enableDebug();
        }

        String scroll = scrollOffset;
        if (scroll != null) {
            try {
                //webEngine.executeScript("window.java.log('test info')");
                webEngine.executeScript(
                        "" + "window.setTimeout(function () { " + "    window.java.log('before scroll');"
                                + "    " + scroll + ";\n" + "    window.java.log('after scroll');" + "}, 50);");
            } catch (Exception e) {
                logger.info("[" + instance + "] " + "JSException on script", e);
            }
        }

        try {
            webEngine.executeScript("window.addEventListener('scroll', function() { "
                    + "    window.java.onScroll();" + "    window.setTimeout(function () { "
                    + "        window.java.repaint()" + "    }, 100);" + "})");
        } catch (Exception e) {
            logger.info("[" + instance + "] " + "", e);
        }

        //if (needStyleSheetUpdate) {
        //    setStyleSheet();
        //}
    }

    if (newState == Worker.State.READY || newState == Worker.State.FAILED
            || newState == Worker.State.SUCCEEDED) {
        htmlWorkerRunning = false;
    }
}

From source file:de.betterform.xml.xforms.model.submission.Submission.java

/**
 * Performs the implementation specific default action for this event.
 *
 * @param event the event./* ww w.j av  a2 s .c  o m*/
 */
public void performDefault(Event event) {
    try {
        if (event.getType().equals(XFormsEventNames.SUBMIT)) {
            submit();
        }
    } catch (Exception e) {
        // handle exception and stop event propagation
        this.container.handleEventException(e);
        event.stopPropagation();
    }
}

From source file:de.betterform.xml.xforms.ui.Repeat.java

/**
 * This method is called whenever an event occurs of the type for which the
 * <code>EventListener</code> interface was registered.
 *
 * @param event The <code>Event</code> contains contextual information about
 *              the event. It also contains the <code>stopPropagation</code> and
 *              <code>preventDefault</code> methods which are used in determining the
 *              event's flow and default action.
 *//*  w  w w  .  j  av  a  2  s. co m*/
public void handleEvent(Event event) {
    try {
        String instancePath = (String) ((XercesXMLEvent) event).getContextInfo().get("canonPath");
        instancePath = instancePath.substring(0, instancePath.lastIndexOf("["));

        if (this.nodeset.size() == 0) {
            return;
        }
        Node n = (Node) ((NodeWrapper) this.nodeset.get(0)).getUnderlyingNode();
        String path = DOMUtil.getCanonicalPath(n);
        path = path.substring(0, path.lastIndexOf("["));

        if (instancePath.equals(path)) {
            if (BetterFormEventNames.NODE_INSERTED.equals(event.getType())) {
                handleNodeInserted(event);
                return;
            }
            // event is dispatched by Instance
            if (BetterFormEventNames.NODE_DELETED.equals(event.getType())) {
                handleNodeDeleted(event);
                return;
            }
        }
    } catch (Exception e) {
        // handle exception, prevent default action and stop event propagation
        this.container.handleEventException(e);
        event.preventDefault();
        event.stopPropagation();
    }
}

From source file:de.betterform.xml.xforms.model.Model.java

/**
 * Performs the implementation specific default action for this event.
 *
 * @param event the event./* w w w .  j av  a 2  s  . c  om*/
 */
public void performDefault(Event event) {
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("\n\n>>>>>>>>>>>>>>>>>>>>>>>>> " + event.getType().toUpperCase()
                + " <<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
    }
    try {
        if (event.getType().equals(XFormsEventNames.MODEL_CONSTRUCT)) {
            modelConstruct();
            return;
        }
        if (event.getType().equals(XFormsEventNames.MODEL_CONSTRUCT_DONE)) {
            modelConstructDone();
            return;
        }
        if (event.getType().equals(XFormsEventNames.MODEL_DESTRUCT)) {
            this.dispose();
            return;
        }
        if (event.getType().equals(XFormsEventNames.READY)) {
            ready();
            return;
        }
        if (event.getType().equals(XFormsEventNames.REFRESH)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }

            refresh();
            return;
        }
        if (event.getType().equals(XFormsEventNames.REVALIDATE)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            revalidate();
            return;
        }
        if (event.getType().equals(XFormsEventNames.RECALCULATE)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            recalculate();
            return;
        }
        if (event.getType().equals(XFormsEventNames.REBUILD)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            rebuild();
            return;
        }
        if (event.getType().equals(XFormsEventNames.RESET)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            reset();
            return;
        }
        if (event.getType().equals(XFormsEventNames.BINDING_EXCEPTION)) {
            getLogger().error(this + " binding exception: " + ((XMLEvent) event).getContextInfo());
            return;
        }
        if (event.getType().equals(XFormsEventNames.LINK_EXCEPTION)) {
            getLogger().error(this + " link exception: " + ((XMLEvent) event).getContextInfo());
            //                this.container.shutdown();
            //                throw new XFormsLinkException("XForms Link Exception: " + ((XMLEvent) event).getContextInfo().get("resource-uri"), event.getTarget(), ((XMLEvent) event).getContextInfo());
            //todo:config switch for strict exception handlilng
        }
        if (event.getType().equals(XFormsEventNames.LINK_ERROR)) {
            getLogger().warn(this + " link error: " + ((XMLEvent) event).getContextInfo());
            return;
        }
        if (event.getType().equals(XFormsEventNames.COMPUTE_EXCEPTION)) {
            getLogger().error(this + " compute exception: " + ((XMLEvent) event).getContextInfo());
            return;
        }
        if (event.getType().equals(XFormsEventNames.VERSION_EXCEPTION)) {
            getLogger().error(this + " version exception: " + ((XMLEvent) event).getContextInfo());
            this.container.shutdown();
            throw new XFormsVersionException(
                    "version exception: " + ((XMLEvent) event).getContextInfo().get("error-information"),
                    event.getTarget(), ((XMLEvent) event).getContextInfo());
        }
    } catch (Exception e) {
        // handle exception and stop event propagation
        this.container.handleEventException(e);
        event.stopPropagation();
    }
}

From source file:org.chiba.xml.xforms.action.AbstractAction.java

/**
 * This method is called whenever an event occurs of the type for which the
 * <code>EventListener</code> interface was registered.
 *
 * @param event The <code>Event</code> contains contextual information about
 * the event. It also contains the <code>stopPropagation</code> and
 * <code>preventDefault</code> methods which are used in determining the
 * event's flow and default action.//from w w w . j  av a  2s. c  om
 */
public final void handleEvent(Event event) {
    try {
        if (event.getType().equals(this.eventType)) {
            if (getLogger().isDebugEnabled()) {
                String phase = "";
                switch (event.getEventPhase()) {
                case Event.CAPTURING_PHASE:
                    phase = "capturing phase";
                    break;
                case Event.AT_TARGET:
                    phase = "at target";
                    break;
                case Event.BUBBLING_PHASE:
                    phase = "bubbling phase";
                    break;
                }
                getLogger().debug(this + " handling event '" + this.eventType + "' (" + phase + ")");
            }

            setEvent(event);

            if (event instanceof XMLEvent)
                eventContextInfo = ((XMLEvent) event).getContextInfo();

            performWhileAndIf(this.element);

        }
    } catch (Exception e) {
        // handle exception, prevent default action and stop event propagation
        this.container.handleEventException(e);
        event.preventDefault();
        event.stopPropagation();
    }
}

From source file:org.chiba.xml.xforms.core.Model.java

/**
 * Performs the implementation specific default action for this event.
 *
 * @param event the event.//from  www.j  av a2  s  .c o m
 */
public void performDefault(Event event) {
    try {
        if (event.getType().equals(XFormsEventNames.MODEL_CONSTRUCT)) {
            modelConstruct();
            return;
        }
        if (event.getType().equals(XFormsEventNames.MODEL_CONSTRUCT_DONE)) {
            modelConstructDone();
            return;
        }
        if (event.getType().equals(XFormsEventNames.READY)) {
            ready();
            return;
        }
        if (event.getType().equals(XFormsEventNames.REFRESH)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }

            refresh();
            return;
        }
        if (event.getType().equals(XFormsEventNames.REVALIDATE)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            revalidate();
            return;
        }
        if (event.getType().equals(XFormsEventNames.RECALCULATE)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            recalculate();
            return;
        }
        if (event.getType().equals(XFormsEventNames.REBUILD)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            rebuild();
            return;
        }
        if (event.getType().equals(XFormsEventNames.RESET)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            reset();
            return;
        }
        if (event.getType().equals(XFormsEventNames.BINDING_EXCEPTION)) {
            getLogger().error(this + " binding exception: "
                    + ((XMLEvent) event).getContextInfo(XMLEvent.DIRTY_DEFAULT_INFO));
            return;
        }
        if (event.getType().equals(XFormsEventNames.LINK_EXCEPTION)) {
            getLogger().error(this + " link exception: "
                    + ((XMLEvent) event).getContextInfo(XFormsEventNames.RESOURCE_URI_PROPERTY));
            return;
        }
        if (event.getType().equals(XFormsEventNames.LINK_ERROR)) {
            getLogger().warn(this + " link error: "
                    + ((XMLEvent) event).getContextInfo(XFormsEventNames.RESOURCE_URI_PROPERTY));
            return;
        }
        if (event.getType().equals(XFormsEventNames.COMPUTE_EXCEPTION)) {
            getLogger().error(this + " compute exception: "
                    + ((XMLEvent) event).getContextInfo(XMLEvent.DIRTY_DEFAULT_INFO));
            return;
        }
    } catch (Exception e) {
        // handle exception and stop event propagation
        this.container.handleEventException(e);
        event.stopPropagation();
    }
}

From source file:org.chiba.xml.xforms.Model.java

/**
 * Performs the default action for the given event.
 *
 * @param event the event for which default action is requested.
 *//*  w w  w. jav a 2  s .  c  om*/
protected void performDefault(Event event) {
    try {
        if (event.getType().equals(EventFactory.MODEL_CONSTRUCT)) {
            modelConstruct();
            return;
        }
        if (event.getType().equals(EventFactory.MODEL_CONSTRUCT_DONE)) {
            modelConstructDone();
            return;
        }
        if (event.getType().equals(EventFactory.READY)) {
            ready();
            return;
        }
        if (event.getType().equals(EventFactory.REFRESH)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }

            refresh();
            return;
        }
        if (event.getType().equals(EventFactory.REVALIDATE)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            revalidate();
            return;
        }
        if (event.getType().equals(EventFactory.RECALCULATE)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            recalculate();
            return;
        }
        if (event.getType().equals(EventFactory.REBUILD)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            rebuild();
            return;
        }
        if (event.getType().equals(EventFactory.RESET)) {
            if (isCancelled(event)) {
                getLogger().debug(this + event.getType() + " cancelled");
                return;
            }
            reset();
            return;
        }
        if (event.getType().equals(EventFactory.SUBMIT_ERROR)) {
            getLogger().warn(this + " submit error: " + ((XFormsEvent) event).getContextInfo());
            return;
        }
        if (event.getType().equals(EventFactory.BINDING_EXCEPTION)) {
            getLogger().error(this + " binding exception: " + ((XFormsEvent) event).getContextInfo());
            return;
        }
        if (event.getType().equals(EventFactory.LINK_EXCEPTION)) {
            getLogger().error(this + " link exception: " + ((XFormsEvent) event).getContextInfo());
            return;
        }
        if (event.getType().equals(EventFactory.LINK_ERROR)) {
            getLogger().warn(this + " link error: " + ((XFormsEvent) event).getContextInfo());
            return;
        }
        if (event.getType().equals(EventFactory.COMPUTE_EXCEPTION)) {
            getLogger().error(this + " compute exception: " + ((XFormsEvent) event).getContextInfo());
            return;
        }
    } catch (Exception e) {
        // handle exception and stop event propagation
        handleException(e);
        event.stopPropagation();
    }
}

From source file:org.chiba.xml.xforms.ui.Repeat.java

/**
 * This method is called whenever an event occurs of the type for which the
 * <code>EventListener</code> interface was registered.
 *
 * @param event The <code>Event</code> contains contextual information about
 * the event. It also contains the <code>stopPropagation</code> and
 * <code>preventDefault</code> methods which are used in determining the
 * event's flow and default action.//from   www  .ja va  2s .  co  m
 */
public void handleEvent(Event event) {
    try {
        if (ChibaEventNames.NODE_INSERTED.equals(event.getType())) {
            handleNodeInserted(event);
            return;
        }
        if (ChibaEventNames.NODE_DELETED.equals(event.getType())) {
            handleNodeDeleted(event);
            return;
        }
    } catch (Exception e) {
        // handle exception, prevent default action and stop event propagation
        this.container.handleEventException(e);
        event.preventDefault();
        event.stopPropagation();
    }
}

From source file:org.chiba.xml.xforms.ui.Submit.java

/**
 * This method is called whenever an event occurs of the type for which the
 * <code>EventListener</code> interface was registered.
 *
 * @param event The <code>Event</code> contains contextual information about
 * the event. It also contains the <code>stopPropagation</code> and
 * <code>preventDefault</code> methods which are used in determining the
 * event's flow and default action./* w w  w .  ja v a 2 s . c o m*/
 */
public void handleEvent(Event event) {
    try {
        if (event.getType().equals(DOMEventNames.ACTIVATE)) {
            // from the spec: Upon receiving event DOMActivate, this form control
            // dispatches event xforms-submit to the submission element specified
            // by required attribute submission.
            this.container.dispatch(this.submissionId, XFormsEventNames.SUBMIT, null);
            return;
        }
    } catch (Exception e) {
        // handle exception, prevent default action and stop event propagation
        this.container.handleEventException(e);
        event.preventDefault();
        event.stopPropagation();
    }
}