summaryrefslogtreecommitdiffstats
path: root/server/src/com/vaadin/ui/AbstractComponent.java
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2013-06-10 19:28:57 +0300
committerVaadin Code Review <review@vaadin.com>2013-06-11 08:08:47 +0000
commit424af57c0a99bf93066d331fe6a3a870cc44cf24 (patch)
tree701ed59ab57c4279bb92bdde9c6879432ce05a4b /server/src/com/vaadin/ui/AbstractComponent.java
parent5adb5c2cfa5cb3d5c148e1116bd99523998e95fa (diff)
downloadvaadin-framework-424af57c0a99bf93066d331fe6a3a870cc44cf24.tar.gz
vaadin-framework-424af57c0a99bf93066d331fe6a3a870cc44cf24.zip
Move ClientConnector.setParent to Component and Extension (#11777)
Change-Id: I1f0b2597f621160329ddc432869277b2758efd52
Diffstat (limited to 'server/src/com/vaadin/ui/AbstractComponent.java')
-rw-r--r--server/src/com/vaadin/ui/AbstractComponent.java34
1 files changed, 25 insertions, 9 deletions
diff --git a/server/src/com/vaadin/ui/AbstractComponent.java b/server/src/com/vaadin/ui/AbstractComponent.java
index 9ff36a42d2..0bf27435fb 100644
--- a/server/src/com/vaadin/ui/AbstractComponent.java
+++ b/server/src/com/vaadin/ui/AbstractComponent.java
@@ -28,7 +28,6 @@ import java.util.regex.Pattern;
import com.vaadin.event.ActionManager;
import com.vaadin.event.ShortcutListener;
import com.vaadin.server.AbstractClientConnector;
-import com.vaadin.server.ClientConnector;
import com.vaadin.server.ComponentSizeValidator;
import com.vaadin.server.ErrorHandler;
import com.vaadin.server.ErrorMessage;
@@ -94,6 +93,8 @@ public abstract class AbstractComponent extends AbstractClientConnector
private boolean visible = true;
+ private HasComponents parent;
+
/* Constructor */
/**
@@ -451,17 +452,32 @@ public abstract class AbstractComponent extends AbstractClientConnector
*/
@Override
public HasComponents getParent() {
- return (HasComponents) super.getParent();
+ return parent;
}
@Override
- public void setParent(ClientConnector parent) {
- if (parent == null || parent instanceof HasComponents) {
- super.setParent(parent);
- } else {
- throw new IllegalArgumentException(
- "The parent of a Component must implement HasComponents, which "
- + parent.getClass() + " doesn't do.");
+ public void setParent(HasComponents parent) {
+ // If the parent is not changed, don't do anything
+ if (parent == this.parent) {
+ return;
+ }
+
+ if (parent != null && this.parent != null) {
+ throw new IllegalStateException(getClass().getName()
+ + " already has a parent.");
+ }
+
+ // Send a detach event if the component is currently attached
+ if (isAttached()) {
+ detach();
+ }
+
+ // Connect to new parent
+ this.parent = parent;
+
+ // Send attach event if the component is now attached
+ if (isAttached()) {
+ attach();
}
}