List of usage examples for org.w3c.dom.events Event getTarget
public EventTarget getTarget();
EventTarget
to which the event was originally dispatched. 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(); } }