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

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

Introduction

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

Prototype

public EventTarget getTarget();

Source Link

Document

Used to indicate the EventTarget to which the event was originally dispatched.

Usage

From source file:de.betterform.agent.betty.AppletProcessor.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 v a 2 s  .co m*/
public void handleEvent(Event event) {
    ensureContextClassLoader();

    if (event instanceof XMLEvent) {
        try {
            //                Object contextInfo = ((XMLEvent) event).getContextInfo();
            //                String eventType = event.getType();
            Element targetElement = (Element) event.getTarget();
            String targetId = targetElement.getAttribute("id");

            XMLEvent xmlEvent = (XMLEvent) event;
            LOG.debug("AppletProcessor handling " + event.getType().toString());
            StringBuffer eventToEvaluate = new StringBuffer("fluxProcessor.applyChanges('");
            //eventToEvaluate.append(event.getType());
            eventToEvaluate.append(targetId);
            eventToEvaluate.append("',[{");
            eventToEvaluate.append("eventType:'");
            eventToEvaluate.append(event.getType());
            eventToEvaluate.append("'");

            Map defaultInfo = (Map) xmlEvent.getContextInfo();
            if (defaultInfo != null && defaultInfo.size() != 0) {
                LOG.info("adding contextInfo");
                LOG.info("defaultInfo " + defaultInfo);

                eventToEvaluate.append(",");
                // build the list of contextInfo properties
                Iterator it = defaultInfo.keySet().iterator();
                while (it.hasNext()) {
                    String key = (String) it.next();
                    String value = "" + defaultInfo.get(key);
                    //append
                    if (key.contains("-")) {
                        key = key.replace("-", "_");
                    }
                    eventToEvaluate.append(key + ":'");
                    eventToEvaluate.append(value + "");
                    eventToEvaluate.append("'");
                    if (it.hasNext()) {
                        eventToEvaluate.append(",");
                    }

                }
            }

            eventToEvaluate.append("}]);");
            LOG.debug("string to eval: " + eventToEvaluate.toString());

            if (isReady) {
                //pass for execution
                this.betty.javascriptEval(eventToEvaluate.toString());
            } else {
                this.initialEventBuffer.append(eventToEvaluate);
            }
        } catch (Exception e) {
            e.printStackTrace();
            this.xformsProcessor.handleEventException(e);
        }

    }

}

From source file:com.idega.block.form.presentation.FormViewer.java

protected void initializeXForms(IWContext iwc) {
    addResources(iwc);// ww  w  .  jav  a 2  s.c o  m

    Document document = resolveXFormsDocument(iwc);

    if (document == null)
        return;

    HttpServletRequest request = iwc.getRequest();
    HttpServletResponse response = iwc.getResponse();
    HttpSession session = iwc.getSession();

    XFormsSessionManager sessionManager = null;
    XFormsSession xformsSession = null;

    try {
        sessionManager = getXFormsSessionManager(session);
        // get IdegaXFormsSessionBase instance
        xformsSession = sessionManager.createXFormsSession(request, response, session);
    } catch (XFormsConfigException e) {
        LOGGER.log(Level.WARNING, "Error creating XFormsSession", e);
    } catch (Exception e) {
        LOGGER.log(Level.WARNING, "Error creating XFormsSession", e);
        CoreUtil.sendExceptionNotification(e);
    }

    Throwable exception = null;
    WebAdapter adapter = xformsSession.getAdapter();
    try {
        setupAdapter(adapter, document, xformsSession, iwc);
        adapter.init();

        EventTarget eventTarget = (EventTarget) ((Document) adapter.getXForms()).getDocumentElement();

        final WebAdapter eventAdapter = adapter;
        EventListener eventListener = new EventListener() {
            @Override
            public void handleEvent(Event event) {
                String id = CoreConstants.EMPTY;
                if (event.getTarget() instanceof Element) {
                    id = ((Element) event.getTarget()).getAttribute("id");
                }

                if (XFormsEventNames.SUBMIT_DONE.equals(event.getType())) {
                    ELUtil.getInstance().publishEvent(new SubmissionEvent(eventAdapter, event));
                }

                LOGGER.info("Got event, type=" + event.getType() + ", id=" + id);
            }
        };

        eventTarget.addEventListener(XFormsEventNames.SUBMIT_DONE, eventListener, true);
        eventTarget.addEventListener(XFormsEventNames.SUBMIT_ERROR, eventListener, true);

        XMLEvent exitEvent = adapter.checkForExitEvent();
        if (exitEvent != null) {
            handleExit(exitEvent, xformsSession, session, request, response);
        } else {
            // actually add the XFormsSession at the manager
            sessionManager.addXFormsSession(xformsSession);
            setSessionKey(xformsSession.getKey());
        }
    } catch (IOException e) {
        exception = e;
        LOGGER.log(Level.WARNING, "handleExit failed", e);
    } catch (XFormsException e) {
        exception = e;
        LOGGER.log(Level.WARNING, "Could not set XML container", e);
        shutdown(adapter, session, xformsSession.getKey());
    } catch (IdegaChibaException e) {
        exception = e;
        LOGGER.log(Level.WARNING, "Chiba exception", e);
    } finally {
        if (exception != null) {
            String messageToClient = exception instanceof IdegaChibaException
                    ? ((IdegaChibaException) exception).getMessageToClient()
                    : null;
            if (StringUtil.isEmpty(messageToClient)) {
                IWResourceBundle iwrb = getIWResourceBundle(iwc,
                        com.idega.block.form.IWBundleStarter.BUNDLE_IDENTIFIER);
                messageToClient = iwrb.getLocalizedString("chiba_error_rendering_form",
                        "We are very sorry, an error occurred... We are working on it. Please, try later.");
            }
            getChildren().add(new Heading1(messageToClient));

            shutdown(adapter, session, xformsSession.getKey());

            String identifier = getFormId(iwc);
            identifier = StringUtil.isEmpty(identifier) ? getSubmissionId(iwc) : identifier;
            CoreUtil.sendExceptionNotification("Error opening XForm: " + identifier, exception);
        }
    }
}

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.
 *//*from  w w w. j  a va 2s.  c  om*/
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:de.betterform.agent.web.flux.FluxProcessor.java

/**
 * listen to processor with XMLEvents and add a xmlEvent object to the
 * EventQueue for every incoming DOM Event from the processor.
 *
 * @param event the handled DOMEvent//  w ww .jav a2  s  . c o m
 */
public void handleEvent(Event event) {
    super.handleEvent(event);
    try {
        if (event instanceof XMLEvent) {
            XMLEvent xmlEvent = (XMLEvent) event;
            String type = xmlEvent.getType();

            if (BetterFormEventNames.REPLACE_ALL.equals(type)
                    || BetterFormEventNames.REPLACE_ALL_XFORMS.equals(type)) {
                // get event context and store it in session
                Map submissionResponse = new HashMap();
                submissionResponse.put("header", xmlEvent.getContextInfo("header"));
                submissionResponse.put("body", xmlEvent.getContextInfo("body"));
                this.xformsProcessor.setContextParam(WebFactory.BETTERFORM_SUBMISSION_RESPONSE,
                        submissionResponse);

                // add event properties to log
                xmlEvent.addProperty("webcontext", (String) getContextParam("contextroot"));
                this.eventQueue.add(xmlEvent);

                this.exitEvent = xmlEvent;
                shutdown();
                return;
            } else if (BetterFormEventNames.LOAD_URI.equals(type)) {
                // get event properties
                String show = (String) xmlEvent.getContextInfo("show");
                if ("embed".equals(show)) {
                    Element targetElement = (Element) xmlEvent.getContextInfo("targetElement");
                    StringWriter result = new StringWriter();
                    generateUI(targetElement, result);
                    xmlEvent.addProperty("targetElement", result.toString());
                    /*
                                            if(LOGGER.isDebugEnabled()) {
                    DOMUtil.prettyPrintDOM(targetElement);
                    LOGGER.debug("xf:load show=\"embed\" Markup: \n" + result.toString() +"\n");
                                            }
                                            DOMUtil.prettyPrintDOM(targetElement);
                                            System.out.println("xf:load show=\"embed\" Markup: \n" + result.toString() +"\n");
                    */
                }

                // add event to log
                this.eventQueue.add(xmlEvent);
                if ("replace".equals(show)) {
                    this.exitEvent = xmlEvent;
                    shutdown();
                    //this.xformsSession.getManager().deleteXFormsSession(this.xformsSession.getKey());
                    WebUtil.removeSession(getKey());
                }

                return;
            } else if (BetterFormEventNames.STATE_CHANGED.equals(type)) {
                /*
                todo: This is a HACK cause BETTERFORM_STATE_CHANGED events are not sent consistently. For some reason
                todo: datatype changes are not always signalled e.g. when the datatype changes from a 'date' to
                todo: a 'string'. This should be fixed in betterForm Core - after that this branch should be removed again.
                 */

                // get event properties
                Element target = (Element) event.getTarget();
                String targetId = target.getAttributeNS(null, "id");
                String targetName = target.getLocalName();
                String dataType = (String) xmlEvent.getContextInfo("type");
                if (dataType == null) {
                    XFormsElement control = lookup(targetId);

                    //todo: this is copied from EventLog code - this is really a HACK!
                    if (EventQueue.HELPER_ELEMENTS.contains(targetName)) {
                        String parentId = ((Element) target.getParentNode()).getAttributeNS(null, "id");
                        xmlEvent.addProperty("parentId", parentId);
                    } else if (control instanceof BindingElement) {
                        if (LOGGER.isDebugEnabled()) {
                            DOMUtil.prettyPrintDOM(control.getElement());
                        }

                        Element bfData = DOMUtil.getChildElement(control.getElement(),
                                NamespaceConstants.BETTERFORM_PREFIX + ":data");
                        if (bfData != null) {
                            String internalType = bfData.getAttributeNS(NamespaceConstants.BETTERFORM_NS,
                                    "type");
                            xmlEvent.addProperty("type", internalType);
                        }
                    }
                }
                this.eventQueue.add(xmlEvent);
                return;
            } else if (XFormsEventNames.VERSION_EXCEPTION.equals(type)) {
                WebUtil.removeSession(getKey());
                xmlEvent.addProperty("errorinformation", xmlEvent.getContextInfo().get("error-information"));
            }
            this.eventQueue.add(xmlEvent);
        }
    } catch (Exception e) {
        handleEventException(e);
    }
}

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

/**
 * Performs the implementation specific default action for this event.
 *
 * @param event the event./*from  w  ww.j av  a  2  s .c o  m*/
 */
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();
    }
}