Example usage for org.w3c.dom.events EventTarget addEventListener

List of usage examples for org.w3c.dom.events EventTarget addEventListener

Introduction

In this page you can find the example usage for org.w3c.dom.events EventTarget addEventListener.

Prototype

public void addEventListener(String type, EventListener listener, boolean useCapture);

Source Link

Document

This method allows the registration of event listeners on the event target.

Usage

From source file:org.pdfsam.ui.news.NewsStage.java

static void wrapHrefToOpenNative(Document document) {
    // TODO find a better way
    NodeList nodeList = document.getElementsByTagName("a");
    for (int i = 0; i < nodeList.getLength(); i++) {
        EventTarget eventTarget = (EventTarget) nodeList.item(i);
        eventTarget.addEventListener("click", e -> {
            HTMLAnchorElement anchorElement = (HTMLAnchorElement) e.getCurrentTarget();
            eventStudio().broadcast(new OpenUrlRequest(anchorElement.getHref()));
            e.preventDefault();/*from ww  w.  java  2  s  .  c o m*/
        }, false);
    }
}

From source file:de._692b8c32.cdlauncher.MainController.java

@Override
public void initialize(URL location, ResourceBundle resources) {
    try {/*from   www .j av  a  2 s  . co  m*/
        HttpClient client = HttpClients.createDefault();
        SyndFeed feed = new SyndFeedInput().build(new BufferedReader(new InputStreamReader(client
                .execute(new HttpGet(
                        "http://rss.moddb.com/mods/cc-tiberian-sun-project-nemesis/articles/feed/rss.xml"))
                .getEntity().getContent())));
        feed.getAuthor();

        StringBuilder builder = new StringBuilder();
        builder.append("<style>");
        builder.append("* { color: white; background-color: black; }");
        builder.append("img { max-height: 50px; float: left; margin-right: 5px; margin-top: 20px; }");
        builder.append("p { margin-top: -30px; margin-bottom: 20px; min-height: 70px; }");
        builder.append("a { text-decoration: none; }");
        builder.append("</style>");
        for (SyndEntry entry : feed.getEntries()) {
            builder.append("<a href='").append(entry.getLink()).append("' target='_blank'><h2>")
                    .append(entry.getTitle()).append("</h2>");
            builder.append("<p>").append(entry.getDescription().getValue()).append("</p></a>");
        }

        news.getEngine().documentProperty().addListener((document, oldValue, newValue) -> {
            NodeList nodeList = newValue.getElementsByTagName("a");
            for (int i = 0; i < nodeList.getLength(); i++) {
                Node node = nodeList.item(i);
                EventTarget eventTarget = (EventTarget) node;
                eventTarget.addEventListener("click", evt -> {
                    application.getHostServices()
                            .showDocument(((HTMLAnchorElement) evt.getCurrentTarget()).getHref());
                    evt.preventDefault();
                }, false);
            }
        });

        news.getEngine().loadContent(builder.toString());
    } catch (IOException | IllegalArgumentException | FeedException ex) {
        Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, "Failed to load RSS", ex);
    }
}

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

private void addListener(EventTarget targetElement) {
    addEventToUsedEvents();/*from   w w  w.ja v  a2  s .co  m*/

    if (this.phase.equals("capture")) {
        targetElement.addEventListener(this.eventType, this, true);
    } else {
        targetElement.addEventListener(this.eventType, this, false);
    }
}

From source file:de.betterform.xml.xforms.Container.java

/**
 * Adds a DOM Event Listener to the specified target node.
 *
 * @param targetId      the id of the target node.
 * @param eventType     the event type./* ww w. j a v a 2  s  .  co m*/
 * @param eventListener the Event Listener.
 * @param useCapture    use event capturing or not.
 * @throws XFormsException if the target node could not be found.
 * todo: remove this method - unused
 */
public void addEventListener(String targetId, String eventType, EventListener eventListener, boolean useCapture)
        throws XFormsException {
    EventTarget eventTarget = lookupEventTarget(targetId);
    if (eventTarget != null) {
        eventTarget.addEventListener(eventType, eventListener, useCapture);
        return;
    }

    throw new XFormsException("Unable to add eventlistener. Event target '" + targetId + "' not found");
}

From source file:de.betterform.xml.xforms.Container.java

/**
 * Removes a DOM Event Listener from the specified target node.
 *
 * @param targetId      the id of the target node.
 * @param eventType     the event type./*from   www.ja  v  a  2s.  c o m*/
 * @param eventListener the Event Listener.
 * @param useCapture    use event capturing or not.
 * @throws XFormsException if the target node could not be found.
 * todo: remove this method - unused
 */
public void removeEventListener(String targetId, String eventType, EventListener eventListener,
        boolean useCapture) throws XFormsException {
    EventTarget eventTarget = lookupEventTarget(targetId);
    if (eventTarget != null) {
        eventTarget.addEventListener(eventType, eventListener, useCapture);
        return;
    }

    throw new XFormsException("Unable to remove eventlistener. Event target '" + targetId + "' not found");
}

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

protected void initializeXForms(IWContext iwc) {
    addResources(iwc);/*from   www.  j a v a 2 s . c  om*/

    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:org.alfresco.web.forms.xforms.XFormsBean.java

/** @param xformsSession the current session */
public void setXFormsSession(final XFormsSession xformsSession) throws FormBuilderException, XFormsException {
    this.xformsSession = xformsSession;

    final FacesContext facesContext = FacesContext.getCurrentInstance();
    final ExternalContext externalContext = facesContext.getExternalContext();
    final HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
    final ServletContext servletContext = (ServletContext) externalContext.getContext();

    writeLock.lock();/*from  w w w. j ava  2 s. c o m*/
    try {
        final ChibaBean chibaBean = new ChibaBean();
        chibaBean.setConfig(servletContext.getRealPath("/WEB-INF/chiba.xml"));
        Pair<Document, XSModel> chibaPair = this.getXFormsDocument();
        chibaBean.setXMLContainer(chibaPair.getFirst(), chibaPair.getSecond());

        final EventTarget et = (EventTarget) chibaBean.getXMLContainer().getDocumentElement();
        final EventListener el = new EventListener() {
            public void handleEvent(final Event e) {
                final XMLEvent xmle = (XMLEvent) e;
                if (XFormsBean.LOGGER.isDebugEnabled())
                    XFormsBean.LOGGER.debug("received event " + xmle.getType() + ": " + xmle);

                XFormsBean.this.xformsSession.eventLog.add(xmle);
            }
        };

        // interaction events my occur during init so we have to register before
        et.addEventListener(ChibaEventNames.LOAD_URI, el, true);
        et.addEventListener(ChibaEventNames.RENDER_MESSAGE, el, true);
        et.addEventListener(ChibaEventNames.REPLACE_ALL, el, true);

        et.addEventListener(XFormsEventNames.ENABLED, el, true);
        et.addEventListener(XFormsEventNames.DISABLED, el, true);
        et.addEventListener(XFormsEventNames.REQUIRED, el, true);
        et.addEventListener(XFormsEventNames.OPTIONAL, el, true);
        et.addEventListener(XFormsEventNames.READONLY, el, true);
        et.addEventListener(XFormsEventNames.READWRITE, el, true);
        et.addEventListener(XFormsEventNames.VALID, el, true);
        et.addEventListener(XFormsEventNames.INVALID, el, true);
        et.addEventListener(XFormsEventNames.IN_RANGE, el, true);
        et.addEventListener(XFormsEventNames.OUT_OF_RANGE, el, true);
        et.addEventListener(XFormsEventNames.SELECT, el, true);
        et.addEventListener(XFormsEventNames.DESELECT, el, true);
        et.addEventListener(XFormsEventNames.INSERT, el, true);
        et.addEventListener(XFormsEventNames.DELETE, el, true);

        chibaBean.init();

        // register for notification events
        et.addEventListener(XFormsEventNames.SUBMIT, el, true);
        et.addEventListener(XFormsEventNames.SUBMIT_DONE, el, true);
        et.addEventListener(XFormsEventNames.SUBMIT_ERROR, el, true);
        et.addEventListener(ChibaEventNames.STATE_CHANGED, el, true);
        et.addEventListener(ChibaEventNames.PROTOTYPE_CLONED, el, true);
        et.addEventListener(ChibaEventNames.ID_GENERATED, el, true);
        et.addEventListener(ChibaEventNames.ITEM_INSERTED, el, true);
        et.addEventListener(ChibaEventNames.ITEM_DELETED, el, true);
        et.addEventListener(ChibaEventNames.INDEX_CHANGED, el, true);
        et.addEventListener(ChibaEventNames.SWITCH_TOGGLED, el, true);
        this.xformsSession.chibaBean = chibaBean;
    } finally {
        writeLock.unlock();
    }
}

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

/**
 * test, if updateControlValue correctly changes the value and a value-changed event occurs on the relevant
 * control.//from   ww  w  .  j ava  2  s.c  om
 *
 * @throws Exception
 */
public void testUpdateControlValue1() throws Exception {
    processor.setXMLContainer(getClass().getResourceAsStream("actions.xhtml"));
    processor.init();

    TestEventListener listener = new TestEventListener();
    JXPathContext context = JXPathContext.newContext(this.processor.getXMLContainer());
    Node node = (Node) context.getPointer("//*[@id='hello-input']").getNode();
    EventTarget eventTarget = (EventTarget) node;
    eventTarget.addEventListener(XFormsEventNames.VALUE_CHANGED, listener, false);

    processor.updateControlValue("hello-input", "Hello new World");
    assertTrue(listener.getType().equals(XFormsEventNames.VALUE_CHANGED));
    assertTrue(listener.getId().equals("hello-input"));

    //test the side effect of dispatching the DOMActivate to a setvalue trigger -> the instance has a new value
    Document instance = processor.getContainer().getDefaultModel().getDefaultInstance().getInstanceDocument();
    JXPathContext context1 = JXPathContext.newContext(instance);
    assertTrue(context1.getValue("//helloworld").equals("Hello new World"));
}

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

/**
 * test if updateControlValue suppresses update for unchanged value.
 *
 * @throws Exception/*from w w w  .  ja v a2  s  .c om*/
 */
public void testUpdateControlValue2() throws Exception {
    processor.setXMLContainer(getClass().getResourceAsStream("actions.xhtml"));
    processor.init();

    TestEventListener listener = new TestEventListener();
    JXPathContext context = JXPathContext.newContext(this.processor.getXMLContainer());
    Node node = (Node) context.getPointer("//*[@id='hello-input']").getNode();
    EventTarget eventTarget = (EventTarget) node;
    eventTarget.addEventListener(XFormsEventNames.VALUE_CHANGED, listener, false);

    processor.updateControlValue("hello-input", "Hello World");
    //value mustn't change cause value of node is 'Hello World' initially - test the case that setValue isn't called
    assertNull(listener.getType());
    assertNull(listener.getId());
}

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

/**
 * adds a DOM EventListener to a target Node.
 *
 * @param targetId      the target Node for this Event
 * @param eventType     the type of Event
 * @param eventListener the EventListener
 * @param useCapture    true, if capture should be used for this Eventtype
 * @throws XFormsException throws XFormsException if target Node cannot be found
 *//* w  w  w.  jav  a 2s . c  o m*/
public void addEventListener(String targetId, String eventType, EventListener eventListener, boolean useCapture)
        throws XFormsException {
    if (this.rootContext != null) {
        Pointer pointer = this.rootContext.getPointer("//*[@id='" + targetId + "']");

        if (pointer != null) {
            EventTarget eventTarget = (EventTarget) pointer.getNode();
            eventTarget.addEventListener(eventType, eventListener, useCapture);

            return;
        }
    }

    throw new XFormsException("event target '" + targetId + "' not found");
}