]> source.dussan.org Git - vaadin-framework.git/commitdiff
eventPreview fixed, should not interfere with modal window.
authorMarc Englund <marc.englund@itmill.com>
Thu, 13 Mar 2008 13:50:41 +0000 (13:50 +0000)
committerMarc Englund <marc.englund@itmill.com>
Thu, 13 Mar 2008 13:50:41 +0000 (13:50 +0000)
svn changeset:4036/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/Notification.java

index 6931f93c89d1500eae6797dec80f5a5c5c5bc56e..8a703a7290a341917145f0b8d286b216250500ec 100644 (file)
@@ -7,7 +7,6 @@ package com.itmill.toolkit.terminal.gwt.client.ui;
 import com.google.gwt.user.client.DOM;\r
 import com.google.gwt.user.client.Element;\r
 import com.google.gwt.user.client.Event;\r
-import com.google.gwt.user.client.EventPreview;\r
 import com.google.gwt.user.client.Timer;\r
 import com.google.gwt.user.client.ui.HTML;\r
 import com.google.gwt.user.client.ui.Widget;\r
@@ -35,12 +34,12 @@ public class Notification extends ToolkitOverlay {
 \r
     private Timer fader;\r
     private Timer delay;\r
-    private EventPreview eventPreview;\r
 \r
-    private String temporaryStyle;\r
     private int x = -1;\r
     private int y = -1;\r
 \r
+    private String temporaryStyle;\r
+\r
     public Notification() {\r
         setStylePrimaryName(STYLENAME);\r
         sinkEvents(Event.ONCLICK);\r
@@ -59,7 +58,7 @@ public class Notification extends ToolkitOverlay {
     }\r
 \r
     public void startDelay() {\r
-        DOM.releaseCapture(getElement());\r
+        DOM.removeEventPreview(this);\r
         if (delayMsec > 0) {\r
             delay = new Timer() {\r
                 public void run() {\r
@@ -102,36 +101,11 @@ public class Notification extends ToolkitOverlay {
             addStyleName(style);\r
         }\r
         super.show();\r
-        DOM.removeEventPreview(this);\r
         setPosition(position);\r
-\r
-        DOM.setCapture(getElement());\r
-\r
-        if (style.equals("error")) {\r
-            if (eventPreview == null) {\r
-                eventPreview = new EventPreview() {\r
-                    public boolean onEventPreview(Event event) {\r
-                        Element target = DOM.eventGetTarget(event);\r
-                        if (DOM.isOrHasChild(getElement(), target)\r
-                                && DOM.eventGetType(event) == Event.ONCLICK) {\r
-                            startDelay();\r
-                            DOM.removeEventPreview(this);\r
-                            return true;\r
-                        } else {\r
-                            DOM.eventCancelBubble(event, true);\r
-                            return false;\r
-                        }\r
-                    }\r
-                };\r
-            }\r
-\r
-            DOM.addEventPreview(eventPreview);\r
-        }\r
-\r
     }\r
 \r
     public void hide() {\r
-        DOM.releaseCapture(getElement());\r
+        DOM.removeEventPreview(this);\r
         cancelDelay();\r
         cancelFade();\r
         if (temporaryStyle != null) {\r
@@ -142,7 +116,7 @@ public class Notification extends ToolkitOverlay {
     }\r
 \r
     public void fade() {\r
-        DOM.releaseCapture(getElement());\r
+        DOM.removeEventPreview(this);\r
         cancelDelay();\r
         fader = new Timer() {\r
             int opacity = startOpacity;\r
@@ -221,8 +195,28 @@ public class Notification extends ToolkitOverlay {
     }\r
 \r
     public void onBrowserEvent(Event event) {\r
-        switch (DOM.eventGetType(event)) {\r
+        DOM.removeEventPreview(this);\r
+        if (fader == null) {\r
+            fade();\r
+        }\r
+    }\r
+\r
+    public boolean onEventPreview(Event event) {\r
+        int type = DOM.eventGetType(event);\r
+        // "modal"\r
+        if (delayMsec == -1) {\r
+            if (type == Event.ONCLICK\r
+                    && DOM\r
+                            .isOrHasChild(getElement(), DOM\r
+                                    .eventGetTarget(event))) {\r
+                fade();\r
+            }\r
+            return false;\r
+        }\r
+        // default\r
+        switch (type) {\r
         case Event.ONMOUSEMOVE:\r
+\r
             if (x < 0) {\r
                 x = DOM.eventGetClientX(event);\r
                 y = DOM.eventGetClientY(event);\r
@@ -231,12 +225,14 @@ public class Notification extends ToolkitOverlay {
                 startDelay();\r
             }\r
             break;\r
+        case Event.ONCLICK:\r
+        case Event.ONDBLCLICK:\r
+        case Event.KEYEVENTS:\r
+        case Event.ONSCROLL:\r
         default:\r
-            if (fader == null) {\r
-                fade();\r
-            }\r
-            break;\r
+            startDelay();\r
         }\r
+        return true;\r
     }\r
 \r
 }\r