Change RichTextAreaImpl and subclasses to not be coupled to Widget/RichTextArea:
http://gwt-code-reviews.appspot.com/139801
Patch by: sven.brunken
Review by: jlabanca
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7551 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/user/client/ui/RichTextArea.java b/user/src/com/google/gwt/user/client/ui/RichTextArea.java
index 68938ca..dd750c1 100644
--- a/user/src/com/google/gwt/user/client/ui/RichTextArea.java
+++ b/user/src/com/google/gwt/user/client/ui/RichTextArea.java
@@ -579,7 +579,7 @@
public RichTextArea() {
setElement(impl.getElement());
setStyleName("gwt-RichTextArea");
- impl.setWidget(this);
+ impl.setOwner(this);
}
public HandlerRegistration addInitializeHandler(InitializeHandler handler) {
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImpl.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImpl.java
index 2a31169..a25051b 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImpl.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImpl.java
@@ -15,6 +15,7 @@
*/
package com.google.gwt.user.client.ui.impl;
+import com.google.gwt.event.logical.shared.HasInitializeHandlers;
import com.google.gwt.event.logical.shared.InitializeEvent;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
@@ -32,7 +33,7 @@
public class RichTextAreaImpl {
protected Element elem;
- protected RichTextArea richTextWidget;
+ protected HasInitializeHandlers owner;
public RichTextAreaImpl() {
elem = createElement();
@@ -74,12 +75,21 @@
DOM.setElementProperty(elem, "value", html);
}
+ public void setOwner(HasInitializeHandlers owner) {
+ this.owner = owner;
+ }
+
public void setText(String text) {
DOM.setElementProperty(elem, "value", text);
}
+ /**
+ * @deprecated as of GWT 2.1, use {@link #setOwner(HasInitializeHandlers)}
+ * instead
+ */
+ @Deprecated
public void setWidget(RichTextArea richTextWidget) {
- this.richTextWidget = richTextWidget;
+ setOwner(richTextWidget);
}
public void uninitElement() {
@@ -96,8 +106,8 @@
protected void onElementInitialized() {
hookEvents();
- if (richTextWidget != null) {
- InitializeEvent.fire(richTextWidget);
+ if (owner != null) {
+ InitializeEvent.fire(owner);
}
}
}
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplIE6.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplIE6.java
index c1fa928..cce8d8f 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplIE6.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplIE6.java
@@ -93,10 +93,12 @@
var handler = $entry(function() {
if (elem.__listener) {
- // Weird: this code has the context of the script frame, but we need the
- // event from the edit iframe's window.
- var evt = elem.contentWindow.event;
- elem.__listener.@com.google.gwt.user.client.ui.Widget::onBrowserEvent(Lcom/google/gwt/user/client/Event;)(evt);
+ if (@com.google.gwt.user.client.impl.DOMImpl::isMyListener(Ljava/lang/Object;)(elem.__listener)) {
+ // Weird: this code has the context of the script frame, but we need the
+ // event from the edit iframe's window.
+ var evt = elem.contentWindow.event;
+ elem.__listener.@com.google.gwt.user.client.EventListener::onBrowserEvent(Lcom/google/gwt/user/client/Event;)(evt);
+ }
}
});
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplSafari.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplSafari.java
index 7d94ad6..2aa2a68 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplSafari.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplSafari.java
@@ -39,7 +39,9 @@
elem.__gwt_handler = function(evt) {
if (elem.__listener) {
- elem.__listener.@com.google.gwt.user.client.ui.Widget::onBrowserEvent(Lcom/google/gwt/user/client/Event;)(evt);
+ if (@com.google.gwt.user.client.impl.DOMImpl::isMyListener(Ljava/lang/Object;)(elem.__listener)) {
+ elem.__listener.@com.google.gwt.user.client.EventListener::onBrowserEvent(Lcom/google/gwt/user/client/Event;)(evt);
+ }
}
};
diff --git a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java
index a60d5a2..0f71706 100644
--- a/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java
+++ b/user/src/com/google/gwt/user/client/ui/impl/RichTextAreaImplStandard.java
@@ -306,7 +306,9 @@
elem.__gwt_handler = $entry(function(evt) {
if (elem.__listener) {
- elem.__listener.@com.google.gwt.user.client.ui.Widget::onBrowserEvent(Lcom/google/gwt/user/client/Event;)(evt);
+ if (@com.google.gwt.user.client.impl.DOMImpl::isMyListener(Ljava/lang/Object;)(elem.__listener)) {
+ elem.__listener.@com.google.gwt.user.client.EventListener::onBrowserEvent(Lcom/google/gwt/user/client/Event;)(evt);
+ }
}
});