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
\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
}\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
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
}\r
\r
public void fade() {\r
- DOM.releaseCapture(getElement());\r
+ DOM.removeEventPreview(this);\r
cancelDelay();\r
fader = new Timer() {\r
int opacity = startOpacity;\r
}\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
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