/*

   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

 */
package org.apache.batik.dom.events;


import org.w3c.dom.DOMException;
import org.w3c.dom.events.Event;

import java.util.HashMap;

This class implements the behavior of DocumentEvent.
Author:Stephane Hillion
Version:$Id: DocumentEventSupport.java 1813521 2017-10-27 12:34:11Z ssteiner $
/** * This class implements the behavior of DocumentEvent. * * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a> * @version $Id: DocumentEventSupport.java 1813521 2017-10-27 12:34:11Z ssteiner $ */
public class DocumentEventSupport {
The Event type.
/** * The Event type. */
public static final String EVENT_TYPE = "Event";
The MutationEvent type.
/** * The MutationEvent type. */
public static final String MUTATION_EVENT_TYPE = "MutationEvent";
The MutationNameEvent type.
/** * The MutationNameEvent type. */
public static final String MUTATION_NAME_EVENT_TYPE = "MutationNameEvent";
The MouseEvent type.
/** * The MouseEvent type. */
public static final String MOUSE_EVENT_TYPE = "MouseEvent";
The UIEvent type.
/** * The UIEvent type. */
public static final String UI_EVENT_TYPE = "UIEvent";
The KeyEvent type.
/** * The KeyEvent type. */
public static final String KEYBOARD_EVENT_TYPE = "KeyboardEvent";
The TextEvent type.
/** * The TextEvent type. */
public static final String TEXT_EVENT_TYPE = "TextEvent";
The CustomEvent type.
/** * The CustomEvent type. */
public static final String CUSTOM_EVENT_TYPE = "CustomEvent";
The Event type.
/** * The Event type. */
public static final String EVENT_DOM2_TYPE = "Events";
The MutationEvent type.
/** * The MutationEvent type. */
public static final String MUTATION_EVENT_DOM2_TYPE = "MutationEvents";
The MouseEvent type.
/** * The MouseEvent type. */
public static final String MOUSE_EVENT_DOM2_TYPE = "MouseEvents";
The UIEvent type.
/** * The UIEvent type. */
public static final String UI_EVENT_DOM2_TYPE = "UIEvents";
The KeyEvent type.
/** * The KeyEvent type. */
public static final String KEY_EVENT_DOM2_TYPE = "KeyEvents";
The event factories table.
/** * The event factories table. */
protected HashMap<String, EventFactory> eventFactories = new HashMap<String, EventFactory>(); { // DOM 3 event names: eventFactories.put(EVENT_TYPE.toLowerCase(), new SimpleEventFactory()); eventFactories.put(MUTATION_EVENT_TYPE.toLowerCase(), new MutationEventFactory()); eventFactories.put(MUTATION_NAME_EVENT_TYPE.toLowerCase(), new MutationNameEventFactory()); eventFactories.put(MOUSE_EVENT_TYPE.toLowerCase(), new MouseEventFactory()); eventFactories.put(KEYBOARD_EVENT_TYPE.toLowerCase(), new KeyboardEventFactory()); eventFactories.put(UI_EVENT_TYPE.toLowerCase(), new UIEventFactory()); eventFactories.put(TEXT_EVENT_TYPE.toLowerCase(), new TextEventFactory()); eventFactories.put(CUSTOM_EVENT_TYPE.toLowerCase(), new CustomEventFactory()); // DOM 2 event names: eventFactories.put(EVENT_DOM2_TYPE.toLowerCase(), new SimpleEventFactory()); eventFactories.put(MUTATION_EVENT_DOM2_TYPE.toLowerCase(), new MutationEventFactory()); eventFactories.put(MOUSE_EVENT_DOM2_TYPE.toLowerCase(), new MouseEventFactory()); eventFactories.put(KEY_EVENT_DOM2_TYPE.toLowerCase(), new KeyEventFactory()); eventFactories.put(UI_EVENT_DOM2_TYPE.toLowerCase(), new UIEventFactory()); }
Creates a new Event depending on the specified parameter.
Params:
  • eventType – The eventType parameter specifies the type of Event interface to be created. If the Event interface specified is supported by the implementation this method will return a new Event of the interface type requested. If the Event is to be dispatched via the dispatchEvent method the appropriate event init method must be called after creation in order to initialize the Event's values. As an example, a user wishing to synthesize some kind of UIEvent would call createEvent with the parameter "UIEvent". The initUIEvent method could then be called on the newly created UIEvent to set the specific type of UIEvent to be dispatched and set its context information.The createEvent method is used in creating Events when it is either inconvenient or unnecessary for the user to create an Event themselves. In cases where the implementation provided Event is insufficient, users may supply their own Event implementations for use with the dispatchEvent method.
Throws:
  • DOMException – NOT_SUPPORTED_ERR: Raised if the implementation does not support the type of Event interface requested
Returns:The newly created Event
/** * Creates a new Event depending on the specified parameter. * * @param eventType The <code>eventType</code> parameter specifies the * type of <code>Event</code> interface to be created. If the * <code>Event</code> interface specified is supported by the * implementation this method will return a new <code>Event</code> of * the interface type requested. If the <code>Event</code> is to be * dispatched via the <code>dispatchEvent</code> method the * appropriate event init method must be called after creation in order * to initialize the <code>Event</code>'s values. As an example, a * user wishing to synthesize some kind of <code>UIEvent</code> would * call <code>createEvent</code> with the parameter "UIEvent". The * <code>initUIEvent</code> method could then be called on the newly * created <code>UIEvent</code> to set the specific type of UIEvent to * be dispatched and set its context information.The * <code>createEvent</code> method is used in creating * <code>Event</code>s when it is either inconvenient or unnecessary * for the user to create an <code>Event</code> themselves. In cases * where the implementation provided <code>Event</code> is * insufficient, users may supply their own <code>Event</code> * implementations for use with the <code>dispatchEvent</code> method. * * @return The newly created <code>Event</code> * * @exception DOMException * NOT_SUPPORTED_ERR: Raised if the implementation does not support the * type of <code>Event</code> interface requested */
public Event createEvent(String eventType) throws DOMException { EventFactory ef = eventFactories.get(eventType.toLowerCase()); if (ef == null) { throw new DOMException(DOMException.NOT_SUPPORTED_ERR, "Bad event type: " + eventType); } return ef.createEvent(); }
Registers a new EventFactory object.
/** * Registers a new EventFactory object. */
public void registerEventFactory(String eventType, EventFactory factory) { eventFactories.put(eventType.toLowerCase(), factory); }
This interface represents an event factory.
/** * This interface represents an event factory. */
public interface EventFactory {
Creates a new Event object.
/** * Creates a new Event object. */
Event createEvent(); }
To create a simple event.
/** * To create a simple event. */
protected static class SimpleEventFactory implements EventFactory {
Creates a new Event object.
/** * Creates a new Event object. */
public Event createEvent() { return new DOMEvent(); } }
To create a mutation event.
/** * To create a mutation event. */
protected static class MutationEventFactory implements EventFactory {
Creates a new Event object.
/** * Creates a new Event object. */
public Event createEvent() { return new DOMMutationEvent(); } }
To create a mutation name event.
/** * To create a mutation name event. */
protected static class MutationNameEventFactory implements EventFactory {
Creates a new Event object.
/** * Creates a new Event object. */
public Event createEvent() { return new DOMMutationNameEvent(); } }
To create a mouse event.
/** * To create a mouse event. */
protected static class MouseEventFactory implements EventFactory {
Creates a new Event object.
/** * Creates a new Event object. */
public Event createEvent() { return new DOMMouseEvent(); } }
To create a key event.
/** * To create a key event. */
protected static class KeyEventFactory implements EventFactory {
Creates a new Event object.
/** * Creates a new Event object. */
public Event createEvent() { return new DOMKeyEvent(); } }
To create a keyboard event.
/** * To create a keyboard event. */
protected static class KeyboardEventFactory implements EventFactory {
Creates a new Event object.
/** * Creates a new Event object. */
public Event createEvent() { return new DOMKeyboardEvent(); } }
To create a UI event.
/** * To create a UI event. */
protected static class UIEventFactory implements EventFactory {
Creates a new Event object.
/** * Creates a new Event object. */
public Event createEvent() { return new DOMUIEvent(); } }
To create a Text event.
/** * To create a Text event. */
protected static class TextEventFactory implements EventFactory {
Creates a new Event object.
/** * Creates a new Event object. */
public Event createEvent() { return new DOMTextEvent(); } }
To create a Custom event.
/** * To create a Custom event. */
protected static class CustomEventFactory implements EventFactory {
Creates a new Event object.
/** * Creates a new Event object. */
public Event createEvent() { return new DOMCustomEvent(); } } }