From: Matti Tahvonen Date: Thu, 26 Nov 2009 07:33:40 +0000 (+0000) Subject: optimized event map handling X-Git-Tag: 6.7.0.beta1~2241^2~3 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=a53844761aecc890e87feff6ae7df622b4da55af;p=vaadin-framework.git optimized event map handling svn changeset:10050/svn branch:event-framework-3234 --- 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 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( - registeredListeners.length); - for (String listener : registeredListeners) { - eventRegistrations.add(listener); - } - } - - } - - } - -}