summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatti Tahvonen <matti.tahvonen@itmill.com>2009-11-26 07:33:40 +0000
committerMatti Tahvonen <matti.tahvonen@itmill.com>2009-11-26 07:33:40 +0000
commita53844761aecc890e87feff6ae7df622b4da55af (patch)
treef3e36de10b934dbe2a40f31054ce1d9adeb2897d /src
parent6ff6757efad2bc44b19d458a3bea77a27e29772a (diff)
downloadvaadin-framework-a53844761aecc890e87feff6ae7df622b4da55af.tar.gz
vaadin-framework-a53844761aecc890e87feff6ae7df622b4da55af.zip
optimized event map handling
svn changeset:10050/svn branch:event-framework-3234
Diffstat (limited to 'src')
-rw-r--r--src/com/vaadin/terminal/gwt/client/ComponentDetail.java38
-rw-r--r--src/com/vaadin/terminal/gwt/client/EventListenerRegister.java70
2 files changed, 32 insertions, 76 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ComponentDetail.java b/src/com/vaadin/terminal/gwt/client/ComponentDetail.java
index 2d7f28dd4b..0384a69da3 100644
--- a/src/com/vaadin/terminal/gwt/client/ComponentDetail.java
+++ b/src/com/vaadin/terminal/gwt/client/ComponentDetail.java
@@ -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
index 63710c3db3..0000000000
--- a/src/com/vaadin/terminal/gwt/client/EventListenerRegister.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-@ITMillApache2LicenseForJavaFiles@
- */
-
-package com.vaadin.terminal.gwt.client;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * EventListenerRegister is used internally for keeping track of which component
- * events have registered listeners on the server-side.
- *
- * @author davengo GmbH (Germany/Berlin, www.davengo.com), IT Mill
- * @since 6.2
- *
- */
-public class EventListenerRegister {
-
- public static final String REGISTERED_EVENT_LISTENERS_ATTRIBUTE = "eventListeners";
-
- private List<String> eventRegistrations;
-
- EventListenerRegister() {
- }
-
- /**
- * 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.
- */
- boolean hasEventListeners(String eventIdentifier) {
- return ((!(eventRegistrations == null)) && eventRegistrations
- .contains(eventIdentifier));
- }
-
- /**
- * Stores the event listeners registered on server-side and passed along in
- * the UIDL.
- *
- * @param componentUIDL
- * The UIDL for the component
- * @since 6.2
- */
- void registerEventListenersFromUIDL(UIDL componentUIDL) {
-
- // read out the request event handlers
- if (componentUIDL.hasAttribute(REGISTERED_EVENT_LISTENERS_ATTRIBUTE)) {
- String[] registeredListeners = componentUIDL
- .getStringArrayAttribute(REGISTERED_EVENT_LISTENERS_ATTRIBUTE);
-
- if (registeredListeners == null || registeredListeners.length == 0) {
- eventRegistrations = null;
- } else {
- eventRegistrations = new ArrayList<String>(
- registeredListeners.length);
- for (String listener : registeredListeners) {
- eventRegistrations.add(listener);
- }
- }
-
- }
-
- }
-
-}