]> source.dussan.org Git - vaadin-framework.git/commitdiff
fixes #2292. Onload size notification for IButton and some other components
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 5 Dec 2008 17:47:10 +0000 (17:47 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 5 Dec 2008 17:47:10 +0000 (17:47 +0000)
svn changeset:6104/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ICaption.java
src/com/itmill/toolkit/terminal/gwt/client/ui/IButton.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ICheckBox.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ILink.java
src/com/itmill/toolkit/terminal/gwt/client/ui/Icon.java

index 229be453d968efbd688ae8f7b422e33ffd6c510d..2b99b3fb1a3a5227e95123b668bbaea33375486f 100644 (file)
@@ -91,7 +91,6 @@ public class ICaption extends HTML {
                 icon.setWidth("0px");
                 icon.setHeight("0px");
 
-                DOM.sinkEvents(icon.getElement(), Event.ONLOAD);
                 DOM.insertChild(getElement(), icon.getElement(),
                         getInsertPosition(ATTRIBUTE_ICON));
             }
@@ -212,6 +211,7 @@ public class ICaption extends HTML {
 
     }
 
+    @Override
     public void onBrowserEvent(Event event) {
         super.onBrowserEvent(event);
         final Element target = DOM.eventGetTarget(event);
index 15641acff81fc6883030142c1a5e67d699e0b748..1faeda88ecb38503868a760f3773bda968717ef4 100644 (file)
@@ -4,6 +4,8 @@
 
 package com.itmill.toolkit.terminal.gwt.client.ui;
 
+import java.util.HashSet;
+
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
@@ -15,6 +17,7 @@ import com.itmill.toolkit.terminal.gwt.client.BrowserInfo;
 import com.itmill.toolkit.terminal.gwt.client.ITooltip;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
+import com.itmill.toolkit.terminal.gwt.client.Util;
 
 public class IButton extends Button implements Paintable {
 
@@ -32,6 +35,11 @@ public class IButton extends Button implements Paintable {
 
     private Icon icon;
 
+    /**
+     * Helper flat to handle special-case where the button is moved from under
+     * mouse while clicking it. In this case mouse leaves the button without
+     * moving.
+     */
     private boolean clickPending;
 
     public IButton() {
@@ -45,7 +53,7 @@ public class IButton extends Button implements Paintable {
                     return;
                 }
                 /*
-                 * TODO isolata workaround. Safari don't always seem to fire
+                 * TODO isolate workaround. Safari don't always seem to fire
                  * onblur previously focused component before button is clicked.
                  */
                 IButton.this.setFocus(true);
@@ -110,23 +118,24 @@ public class IButton extends Button implements Paintable {
         }
     }
 
+    @Override
     public void setText(String text) {
         DOM.setInnerText(captionElement, text);
     }
 
+    @Override
     public void onBrowserEvent(Event event) {
         super.onBrowserEvent(event);
 
-        // Handle special-case where the button is moved from under mouse
-        // while clicking it. In this case mouse leaves the button without
-        // moving.
-        if (DOM.eventGetType(event) == Event.ONMOUSEDOWN) {
+        if (DOM.eventGetType(event) == Event.ONLOAD) {
+            HashSet<Widget> set = new HashSet<Widget>();
+            set.add(this);
+            Util.componentSizeUpdated(set);
+        } else if (DOM.eventGetType(event) == Event.ONMOUSEDOWN) {
             clickPending = true;
-        }
-        if (DOM.eventGetType(event) == Event.ONMOUSEMOVE) {
+        } else if (DOM.eventGetType(event) == Event.ONMOUSEMOVE) {
             clickPending = false;
-        }
-        if (DOM.eventGetType(event) == Event.ONMOUSEOUT) {
+        } else if (DOM.eventGetType(event) == Event.ONMOUSEOUT) {
             if (clickPending) {
                 click();
             }
index 74bad0bfb9f6f8e8daf657129af0da150132cc7d..c3b3c8d0c003065d83f23e3b177348aada64aa04 100644 (file)
@@ -4,6 +4,8 @@
 
 package com.itmill.toolkit.terminal.gwt.client.ui;
 
+import java.util.HashSet;
+
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
@@ -13,6 +15,7 @@ import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
 import com.itmill.toolkit.terminal.gwt.client.ITooltip;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
+import com.itmill.toolkit.terminal.gwt.client.Util;
 
 public class ICheckBox extends com.google.gwt.user.client.ui.CheckBox implements
         Paintable, Field {
@@ -89,18 +92,26 @@ public class ICheckBox extends com.google.gwt.user.client.ui.CheckBox implements
         immediate = uidl.getBooleanAttribute("immediate");
     }
 
+    @Override
     public void onBrowserEvent(Event event) {
         super.onBrowserEvent(event);
+        if (event.getTypeInt() == Event.ONLOAD) {
+            HashSet<Widget> set = new HashSet<Widget>();
+            set.add(this);
+            Util.componentSizeUpdated(set);
+        }
         if (client != null) {
             client.handleTooltipEvent(event, this);
         }
     }
 
+    @Override
     public void setWidth(String width) {
         setBlockMode();
         super.setWidth(width);
     }
 
+    @Override
     public void setHeight(String height) {
         setBlockMode();
         super.setHeight(height);
index d8cee6e466b1afaa3269f0f101b436179d5d5a4e..80154fb9d0f0499d687b6c03d5e42cc0a9f46060 100644 (file)
@@ -4,6 +4,8 @@
 
 package com.itmill.toolkit.terminal.gwt.client.ui;
 
+import java.util.HashSet;
+
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.Event;
@@ -15,6 +17,7 @@ import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
 import com.itmill.toolkit.terminal.gwt.client.ITooltip;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
+import com.itmill.toolkit.terminal.gwt.client.Util;
 
 public class ILink extends HTML implements Paintable, ClickListener {
 
@@ -157,8 +160,14 @@ public class ILink extends HTML implements Paintable, ClickListener {
         }
     }
 
+    @Override
     public void onBrowserEvent(Event event) {
         final Element target = DOM.eventGetTarget(event);
+        if (event.getTypeInt() == Event.ONLOAD) {
+            HashSet<Widget> set = new HashSet<Widget>();
+            set.add(this);
+            Util.componentSizeUpdated(set);
+        }
         if (client != null) {
             client.handleTooltipEvent(event, this);
         }
index 52672d69f445385de8861b0908c7fa338416229f..f76a5f8881a7cce035eb82ace4a5a733a4443da0 100644 (file)
@@ -5,6 +5,7 @@
 package com.itmill.toolkit.terminal.gwt.client.ui;
 
 import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.ui.UIObject;
 import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
 
@@ -30,6 +31,8 @@ public class Icon extends UIObject {
             String uri = client.translateToolkitUri(uidlUri);
             DOM.setElementProperty(getElement(), "src", uri);
             myUri = uidlUri;
+            // start sinkin onload events, widgets responsibility to react
+            sinkEvents(Event.ONLOAD);
         }
     }