]> source.dussan.org Git - vaadin-framework.git/commitdiff
optimized event map handling
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 26 Nov 2009 07:33:40 +0000 (07:33 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 26 Nov 2009 07:33:40 +0000 (07:33 +0000)
svn changeset:10050/svn branch:event-framework-3234

src/com/vaadin/terminal/gwt/client/ComponentDetail.java
src/com/vaadin/terminal/gwt/client/EventListenerRegister.java [deleted file]

index 2d7f28dd4bb53687f1d702fb9f5adc9d65923769..0384a69da3ecf6c0b077b184054a25f5ce6ce17f 100644 (file)
@@ -2,12 +2,12 @@ package com.vaadin.terminal.gwt.client;
 
 import java.util.HashMap;
 
+import com.google.gwt.core.client.JsArrayString;
 import com.vaadin.terminal.gwt.client.RenderInformation.FloatSize;
 import com.vaadin.terminal.gwt.client.RenderInformation.Size;
 
 class ComponentDetail {
 
-    private EventListenerRegister eventListenerRegister = new EventListenerRegister();
     private Paintable component;
     private TooltipInfo tooltipInfo = new TooltipInfo();
     private String pid;
@@ -104,12 +104,38 @@ class ComponentDetail {
         }
     }
 
-    void registerEventListenersFromUIDL(UIDL uidl) {
-        eventListenerRegister.registerEventListenersFromUIDL(uidl);
-    }
+    private JsArrayString eventListeners;
+
+    /**
+     * Stores the event listeners registered on server-side and passed along in
+     * the UIDL.
+     * 
+     * @param componentUIDL
+     *            The UIDL for the component
+     * @since 6.2
+     */
+    native void registerEventListenersFromUIDL(UIDL uidl)
+    /*-{
+        this.@com.vaadin.terminal.gwt.client.ComponentDetail::eventListeners = uidl[1].eventListeners;
+    }-*/;
 
+    /**
+     * Checks if there is a registered server side listener for the event.
+     * 
+     * @param eventIdentifier
+     *            The identifier for the event
+     * @return true if at least one listener has been registered on server side
+     *         for the event identified by eventIdentifier.
+     */
     public boolean hasEventListeners(String eventIdentifier) {
-        return eventListenerRegister.hasEventListeners(eventIdentifier);
+        if (eventListeners != null) {
+            int l = eventListeners.length();
+            for (int i = 0; i < l; i++) {
+                if (eventListeners.get(i).equals(eventIdentifier)) {
+                    return true;
+                }
+            }
+        }
+        return false;
     }
-
 }
diff --git a/src/com/vaadin/terminal/gwt/client/EventListenerRegister.java b/src/com/vaadin/terminal/gwt/client/EventListenerRegister.java
deleted file mode 100644 (file)
index 63710c3..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* \r
-@ITMillApache2LicenseForJavaFiles@\r
- */\r
-\r
-package com.vaadin.terminal.gwt.client;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-/**\r
- * \r
- * EventListenerRegister is used internally for keeping track of which component\r
- * events have registered listeners on the server-side.\r
- * \r
- * @author davengo GmbH (Germany/Berlin, www.davengo.com), IT Mill\r
- * @since 6.2\r
- * \r
- */\r
-public class EventListenerRegister {\r
-\r
-    public static final String REGISTERED_EVENT_LISTENERS_ATTRIBUTE = "eventListeners";\r
-\r
-    private List<String> eventRegistrations;\r
-\r
-    EventListenerRegister() {\r
-    }\r
-\r
-    /**\r
-     * Checks if there is a registered server side listener for the event.\r
-     * \r
-     * @param eventIdentifier\r
-     *            The identifier for the event\r
-     * @return true if at least one listener has been registered on server side\r
-     *         for the event identified by eventIdentifier.\r
-     */\r
-    boolean hasEventListeners(String eventIdentifier) {\r
-        return ((!(eventRegistrations == null)) && eventRegistrations\r
-                .contains(eventIdentifier));\r
-    }\r
-\r
-    /**\r
-     * Stores the event listeners registered on server-side and passed along in\r
-     * the UIDL.\r
-     * \r
-     * @param componentUIDL\r
-     *            The UIDL for the component\r
-     * @since 6.2\r
-     */\r
-    void registerEventListenersFromUIDL(UIDL componentUIDL) {\r
-\r
-        // read out the request event handlers\r
-        if (componentUIDL.hasAttribute(REGISTERED_EVENT_LISTENERS_ATTRIBUTE)) {\r
-            String[] registeredListeners = componentUIDL\r
-                    .getStringArrayAttribute(REGISTERED_EVENT_LISTENERS_ATTRIBUTE);\r
-\r
-            if (registeredListeners == null || registeredListeners.length == 0) {\r
-                eventRegistrations = null;\r
-            } else {\r
-                eventRegistrations = new ArrayList<String>(\r
-                        registeredListeners.length);\r
-                for (String listener : registeredListeners) {\r
-                    eventRegistrations.add(listener);\r
-                }\r
-            }\r
-\r
-        }\r
-\r
-    }\r
-\r
-}\r