]> source.dussan.org Git - gwtquery.git/commitdiff
live methods should follow the same api that gquery uses for bind, using Event.*...
authorManolo Carrasco <manolo@apache.org>
Sat, 9 Apr 2011 00:56:13 +0000 (00:56 +0000)
committerManolo Carrasco <manolo@apache.org>
Sat, 9 Apr 2011 00:56:13 +0000 (00:56 +0000)
gwtquery-core/src/main/java/com/google/gwt/query/client/GQuery.java
gwtquery-core/src/main/java/com/google/gwt/query/client/LazyGQuery.java
gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/Events.java
gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/LazyEvents.java
gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/events/EventsListener.java

index c8c95539c395ea1e3d21085c45cd2d3ba77da7fe..787963366ccc8da25a82cfd4cb56d831088c29c4 100644 (file)
@@ -879,6 +879,21 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
     return as(Events).bind(eventbits, data, funcs);\r
   }\r
 \r
+  /**\r
+   * Binds a set of handlers to a particular Event for each matched element.\r
+   * \r
+   * The event handlers are passed as Functions that you can use to prevent\r
+   * default behavior. To stop both default action and event bubbling, the\r
+   * function event handler has to return false.\r
+   * \r
+   * You can pass an additional Object data to your Function as the second\r
+   * parameter\r
+   * \r
+   */\r
+  public GQuery bind(String eventType, final Object data, final Function... funcs) {\r
+    return as(Events).bind(eventType, data, funcs);\r
+  }\r
+\r
   /**\r
    * Bind a set of functions to the blur event of each matched element. Or\r
    * trigger the event if no functions are provided.\r
@@ -1427,7 +1442,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * initially used with {@link #live(String, Function)}\r
    */\r
   public GQuery die() {\r
-    return as(Events).die(null);\r
+    return die(0);\r
   }\r
 \r
   /**\r
@@ -1439,6 +1454,16 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
   public GQuery die(String eventName) {\r
     return as(Events).die(eventName);\r
   }\r
+  \r
+  /**\r
+   * Remove an event handlers previously attached using\r
+   * {@link #live(int, Function)} In order for this method to function\r
+   * correctly, the selector used with it must match exactly the selector\r
+   * initially used with {@link #live(int, Function)}\r
+   */\r
+  public GQuery die(int eventbits) {\r
+    return as(Events).die(eventbits);\r
+  }\r
 \r
   /**\r
    * Run one or more Functions over each element of the GQuery. You have to\r
@@ -2008,10 +2033,25 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * </ul>\r
    * </p>\r
    */\r
-  public GQuery live(String eventName, Function func) {\r
-    return as(Events).live(eventName, null, func);\r
+  public GQuery live(String eventName, Function... funcs) {\r
+    return as(Events).live(eventName, null, funcs);\r
   }\r
   \r
+  /**\r
+   * Attach a handler for this event to all elements which match the current\r
+   * selector, now and in the future.\r
+   */\r
+  public GQuery live(int eventbits, Function...funcs){\r
+    return as(Events).live(eventbits, null, funcs);\r
+  }\r
+\r
+  /**\r
+   * Attach a handler for this event to all elements which match the current\r
+   * selector, now and in the future.\r
+   */\r
+  public GQuery live(int eventbits, Object data, Function...funcs){\r
+    return as(Events).live(eventbits, data, funcs);\r
+  }\r
 \r
   /**\r
    * <p>\r
index 2a5b32ce53c58763db1cb0e6d51ac48f845a17a8..edf79fbba195237137aee31103f7ac4e89610293 100644 (file)
@@ -680,6 +680,14 @@ public interface LazyGQuery<T> extends LazyBase<T>{
    */
   LazyGQuery<T> die(String eventName);
 
+  /**
+   * Remove an event handlers previously attached using
+   * {@link #live(int, Function)} In order for this method to function
+   * correctly, the selector used with it must match exactly the selector
+   * initially used with {@link #live(int, Function)}
+   */
+  LazyGQuery<T> die(int eventbits);
+
   /**
    * Run one or more Functions over each element of the GQuery. You have to
    * override one of these funcions: public void f(Element e) public String
@@ -1050,7 +1058,19 @@ public interface LazyGQuery<T> extends LazyBase<T>{
    * </ul>
    * </p>
    */
-  LazyGQuery<T> live(String eventName, Function func);
+  LazyGQuery<T> live(String eventName, Function... funcs);
+
+  /**
+   * Attach a handler for this event to all elements which match the current
+   * selector, now and in the future.
+   */
+  LazyGQuery<T> live(int eventbits, Function...funcs);
+
+  /**
+   * Attach a handler for this event to all elements which match the current
+   * selector, now and in the future.
+   */
+  LazyGQuery<T> live(int eventbits, Object data, Function...funcs);
 
   /**
    * <p>
index fc58ce0f991bb144354594726047722880cad9ae..bdd3802e9f4f9e004ef0d79753fe2a39623c7d86 100644 (file)
@@ -109,21 +109,33 @@ public class Events extends GQuery {
   public GQuery die(String eventName) {
     EventsListener.getInstance(
         Element.is(currentContext) ? (Element) currentContext : body).die(
-        eventName, currentSelector);
+            eventName, currentSelector);
     return this;
   }
 
-  public GQuery live(String eventName, final Object data, Function func) {
+  public GQuery die(int eventbits) {
+    EventsListener.getInstance(
+        Element.is(currentContext) ? (Element) currentContext : body).die(
+            eventbits, currentSelector);
+    return this;
+  }
 
-    // bind live delegating event to the current context
+  public GQuery live(String eventName, final Object data, Function... funcs) {
     EventsListener.getInstance(
         Element.is(currentContext) ? (Element) currentContext : body).live(
-        eventName, currentSelector, data, func);
-
+        eventName, currentSelector, data, funcs);
+    return this;
+  }
+  
+  public GQuery live(int eventbits, final Object data, Function... funcs) {
+    EventsListener.getInstance(
+        Element.is(currentContext) ? (Element) currentContext : body).live(
+            eventbits, currentSelector, data, funcs);
     return this;
 
   }
 
+
   /**
    * Binds a handler to a particular Event (like Event.ONCLICK) for each matched
    * element. The handler is executed only once for each element.
index 126f6b60399604bef700f8156fa999dfde248659..5ce730115e63b2a2700b255e0fa3794eec899867 100644 (file)
@@ -75,7 +75,11 @@ public interface LazyEvents<T> extends LazyBase<T>{
    */
   GQuery die(String eventName);
 
-  GQuery live(String eventName, Object data, Function func);
+  GQuery die(int eventbits);
+
+  GQuery live(String eventName, Object data, Function... funcs);
+
+  GQuery live(int eventbits, Object data, Function... funcs);
 
   /**
    * Binds a handler to a particular Event (like Event.ONCLICK) for each matched
index e77540ffef565bc40cfad6af042c4afb5255a476..bc7c807fbde8c77b3baf38899fd6052b55b08bf4 100644 (file)
@@ -281,7 +281,7 @@ public class EventsListener implements EventListener {
   private Element element;
 
   private JsObjectArray<BindFunction> elementEvents = JsObjectArray.createArray().cast();
-  private Map<String, LiveBindFunction> liveBindFunctionByEventType = new HashMap<String, LiveBindFunction>();
+  private Map<Integer, LiveBindFunction> liveBindFunctionByEventType = new HashMap<Integer, LiveBindFunction>();
 
   private EventsListener(Element element) {
     this.element = element;
@@ -328,21 +328,26 @@ public class EventsListener implements EventListener {
       bind(b, nameSpace, data, function, -1);
     }
   }
-
+  
   public void die(String eventName, String cssSelector) {
-    if (eventName == null) {
+    int eventType = "submit".equals(eventName) ? eventType = ONSUBMIT
+        : Event.getTypeInt(eventName);
+    die(eventType, cssSelector);
+  }
+
+  public void die(int eventbits, String cssSelector) {
+    if (eventbits == 0) {
       for (LiveBindFunction liveBindFunction : liveBindFunctionByEventType.values()) {
         liveBindFunction.removeBindFunctionForSelector(cssSelector);
       }
     } else {
-      LiveBindFunction liveBindFunction = liveBindFunctionByEventType.get(eventName);
+      LiveBindFunction liveBindFunction = liveBindFunctionByEventType.get(eventbits);
       liveBindFunction.removeBindFunctionForSelector(cssSelector);
     }
 
   }
 
   public void dispatchEvent(Event event) {
-
     int etype = "submit".equalsIgnoreCase(event.getType()) ? ONSUBMIT
         : DOM.eventGetType(event);
     for (int i = 0; i < elementEvents.length(); i++) {
@@ -364,26 +369,28 @@ public class EventsListener implements EventListener {
     return getGwtEventListener(element);
   }
 
-  public void live(String eventName, String cssSelector, Object data, Function f) {
-    int eventType = 0;
-    if ("submit".equals(eventName)) {
-      eventType = ONSUBMIT;
-    } else {
-      eventType = Event.getTypeInt(eventName);
-    }
+  public void live(String eventName, String cssSelector, Object data, Function... f) {
+    int eventType = "submit".equals(eventName) ? eventType = ONSUBMIT
+        : Event.getTypeInt(eventName);
+    live(eventType, cssSelector, data, f);
+  }
+  
+  public void live(int eventbits, String cssSelector, Object data, Function... funcs) {
 
     // is a LiveBindFunction already attached for this kind of event
-    LiveBindFunction liveBindFunction = liveBindFunctionByEventType.get(eventName);
+    LiveBindFunction liveBindFunction = liveBindFunctionByEventType.get(eventbits);
     if (liveBindFunction == null) {
-      liveBindFunction = new LiveBindFunction(eventType, "live");
-      eventBits |= eventType;
+      liveBindFunction = new LiveBindFunction(eventbits, "live");
+      eventBits |= eventbits;
       sink();
       elementEvents.add(liveBindFunction);
-      liveBindFunctionByEventType.put(eventName, liveBindFunction);
+      liveBindFunctionByEventType.put(eventbits, liveBindFunction);
     }
 
-    liveBindFunction.addBindFunctionForSelector(cssSelector, new BindFunction(
-        eventType, "live", f, data));
+    for (Function f: funcs) {
+      liveBindFunction.addBindFunctionForSelector(cssSelector, new BindFunction(
+          eventbits, "live", f, data));
+    }
 
   }
 
@@ -439,7 +446,7 @@ public class EventsListener implements EventListener {
   private void clean() {
     cleanGQListeners(element);
     elementEvents = JsObjectArray.createArray().cast();
-    liveBindFunctionByEventType = new HashMap<String, LiveBindFunction>();
+    liveBindFunctionByEventType = new HashMap<Integer, LiveBindFunction>();
   }
 
   private void sink() {