001: /*
002: ItsNat Java Web Application Framework
003: Copyright (C) 2007 Innowhere Software Services S.L., Spanish Company
004: Author: Jose Maria Arranz Santamaria
005:
006: This program is free software: you can redistribute it and/or modify
007: it under the terms of the GNU Affero General Public License as published by
008: the Free Software Foundation, either version 3 of the License, or
009: (at your option) any later version. See the GNU Affero General Public
010: License for more details. See the copy of the GNU Affero General Public License
011: included in this program. If not, see <http://www.gnu.org/licenses/>.
012: */
013:
014: package org.itsnat.impl.core.event.client2serv.dom;
015:
016: import java.util.HashMap;
017: import java.util.Map;
018:
019: /**
020: *
021: * @author jmarranz
022: */
023: public class DOMEventTypeInfo {
024: // http://en.wikipedia.org/wiki/DOM_Events
025:
026: public static final int UNKNOWN_EVENT = 0;
027: public static final int UI_EVENT = 1;
028: public static final int MOUSE_EVENT = 2;
029: public static final int HTML_EVENT = 3;
030: public static final int MUTATION_EVENT = 4;
031: public static final int KEY_EVENT = 5;
032:
033: protected static final Map eventTypes = new HashMap(); // no sincronizamos porque es sólo lectura
034:
035: static {
036: // Según el W3C
037: eventTypes.put("click", new DOMEventTypeInfo(MOUSE_EVENT, true,
038: true));
039: eventTypes.put("dblclick", new DOMEventTypeInfo(MOUSE_EVENT,
040: true, true));
041: eventTypes.put("mousedown", new DOMEventTypeInfo(MOUSE_EVENT,
042: true, true));
043: eventTypes.put("mouseup", new DOMEventTypeInfo(MOUSE_EVENT,
044: true, true));
045: eventTypes.put("mouseover", new DOMEventTypeInfo(MOUSE_EVENT,
046: true, true));
047: eventTypes.put("mousemove", new DOMEventTypeInfo(MOUSE_EVENT,
048: true, false));
049: eventTypes.put("mouseout", new DOMEventTypeInfo(MOUSE_EVENT,
050: true, true));
051:
052: eventTypes.put("keypress", new DOMEventTypeInfo(KEY_EVENT,
053: true, true));
054: eventTypes.put("keydown", new DOMEventTypeInfo(KEY_EVENT, true,
055: true));
056: eventTypes.put("keyup", new DOMEventTypeInfo(KEY_EVENT, true,
057: true));
058:
059: eventTypes.put("load", new DOMEventTypeInfo(HTML_EVENT, false,
060: false));
061: eventTypes.put("unload", new DOMEventTypeInfo(HTML_EVENT,
062: false, false));
063: eventTypes.put("abort", new DOMEventTypeInfo(HTML_EVENT, true,
064: false));
065: eventTypes.put("error", new DOMEventTypeInfo(HTML_EVENT, true,
066: false));
067: eventTypes.put("resize", new DOMEventTypeInfo(HTML_EVENT, true,
068: false));
069: eventTypes.put("scroll", new DOMEventTypeInfo(HTML_EVENT, true,
070: false));
071: eventTypes.put("select", new DOMEventTypeInfo(HTML_EVENT, true,
072: false));
073: eventTypes.put("change", new DOMEventTypeInfo(HTML_EVENT, true,
074: false));
075: eventTypes.put("submit", new DOMEventTypeInfo(HTML_EVENT, true,
076: true));
077: eventTypes.put("reset", new DOMEventTypeInfo(HTML_EVENT, true,
078: false));
079: eventTypes.put("focus", new DOMEventTypeInfo(HTML_EVENT, false,
080: false));
081: eventTypes.put("blur", new DOMEventTypeInfo(HTML_EVENT, false,
082: false));
083:
084: eventTypes.put("DOMFocusIn", new DOMEventTypeInfo(UI_EVENT,
085: true, false));
086: eventTypes.put("DOMFocusOut", new DOMEventTypeInfo(UI_EVENT,
087: true, false));
088: eventTypes.put("DOMActivate", new DOMEventTypeInfo(UI_EVENT,
089: true, true));
090:
091: eventTypes.put("DOMSubtreeModified", new DOMEventTypeInfo(
092: MUTATION_EVENT, true, false));
093: eventTypes.put("DOMNodeInserted", new DOMEventTypeInfo(
094: MUTATION_EVENT, true, false));
095: eventTypes.put("DOMNodeRemoved", new DOMEventTypeInfo(
096: MUTATION_EVENT, true, false));
097: eventTypes.put("DOMAttrModified", new DOMEventTypeInfo(
098: MUTATION_EVENT, true, false));
099: eventTypes.put("DOMCharacterDataModified",
100: new DOMEventTypeInfo(MUTATION_EVENT, true, false));
101: eventTypes.put("DOMNodeInsertedIntoDocument",
102: new DOMEventTypeInfo(MUTATION_EVENT, false, false));
103: eventTypes.put("DOMNodeRemovedFromDocument",
104: new DOMEventTypeInfo(MUTATION_EVENT, false, false));
105:
106: // No W3C pero soportado por FireFox (desde 1.0) y MSIE
107: eventTypes.put("beforeunload", new DOMEventTypeInfo(HTML_EVENT,
108: false, true));
109:
110: }
111:
112: protected int typeCode;
113: protected boolean bubbles;
114: protected boolean cancelable;
115:
116: /**
117: * Creates a new instance of DOMEventTypeInfo
118: */
119: public DOMEventTypeInfo(int typeCode, boolean bubbles,
120: boolean cancelable) {
121: this .typeCode = typeCode;
122: this .bubbles = bubbles;
123: this .cancelable = cancelable;
124: }
125:
126: public static DOMEventTypeInfo getEventTypeInfo(String type) {
127: DOMEventTypeInfo info = (DOMEventTypeInfo) eventTypes.get(type);
128: if (info == null) // evento desconocido
129: info = new DOMEventTypeInfo(UNKNOWN_EVENT, true, true);
130: return info;
131: }
132:
133: public static int getEventTypeCode(String type) {
134: DOMEventTypeInfo info = (DOMEventTypeInfo) eventTypes.get(type);
135: if (info == null)
136: return UNKNOWN_EVENT;
137: return info.getTypeCode();
138: }
139:
140: public int getTypeCode() {
141: return typeCode;
142: }
143:
144: public boolean getBubbles() {
145: return bubbles;
146: }
147:
148: public boolean getCancelable() {
149: return cancelable;
150: }
151: }
|