aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-03-13 11:29:43 +0200
committerArtur Signell <artur@vaadin.com>2012-03-14 16:00:37 +0200
commit751d60aaf6b5dec813f5f7fe3d46717a0b1ca2ef (patch)
tree1e95a9de64853687c2f441a14f5e877ca9503e7b /src
parente248adc283ccc79ef89f3f752cd0f516e09f8a2c (diff)
downloadvaadin-framework-751d60aaf6b5dec813f5f7fe3d46717a0b1ca2ef.tar.gz
vaadin-framework-751d60aaf6b5dec813f5f7fe3d46717a0b1ca2ef.zip
#8500, #3557 Added HasComponents (Iterable<Component>) that must be
implemented by all components containing components. This might still change when #2924/#2527 is fixed
Diffstat (limited to 'src')
-rw-r--r--src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java20
-rw-r--r--src/com/vaadin/ui/AbstractComponentContainer.java10
-rw-r--r--src/com/vaadin/ui/ComponentContainer.java12
-rw-r--r--src/com/vaadin/ui/CustomField.java4
-rw-r--r--src/com/vaadin/ui/HasComponents.java24
5 files changed, 48 insertions, 22 deletions
diff --git a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
index 66e692694f..04f64ecaea 100644
--- a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
+++ b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
@@ -68,7 +68,7 @@ import com.vaadin.terminal.gwt.server.ComponentSizeValidator.InvalidLayout;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.AbstractField;
import com.vaadin.ui.Component;
-import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.HasComponents;
import com.vaadin.ui.Panel;
import com.vaadin.ui.Root;
@@ -945,14 +945,12 @@ public abstract class AbstractCommunicationManager implements
JSONObject hierarchyInfo = new JSONObject();
for (Paintable p : hierarchyPendingQueue) {
- if (p instanceof ComponentContainer) {
- ComponentContainer cc = (ComponentContainer) p;
+ if (p instanceof HasComponents) {
+ HasComponents cc = (HasComponents) p;
String connectorId = paintableIdMap.get(cc);
JSONArray children = new JSONArray();
- Iterator<Component> iterator = getChildComponentIterator(cc);
- while (iterator.hasNext()) {
- Component child = iterator.next();
+ for (Component child : getChildComponents(cc)) {
if (child.getState().isVisible()) {
String childConnectorId = getPaintableId(child);
children.put(childConnectorId);
@@ -1177,17 +1175,17 @@ public abstract class AbstractCommunicationManager implements
}
- private Iterator<Component> getChildComponentIterator(ComponentContainer cc) {
+ private Iterable<Component> getChildComponents(HasComponents cc) {
if (cc instanceof Panel) {
// This is so wrong.. (#2924)
if (((Panel) cc).getContent() == null) {
- return new NullIterator<Component>();
+ return Collections.emptyList();
} else {
- return Collections.singleton(
- (Component) ((Panel) cc).getContent()).iterator();
+ return Collections.singleton((Component) ((Panel) cc)
+ .getContent());
}
}
- return cc.getComponentIterator();
+ return cc;
}
/**
diff --git a/src/com/vaadin/ui/AbstractComponentContainer.java b/src/com/vaadin/ui/AbstractComponentContainer.java
index bbe2c20ea5..20b79e8a06 100644
--- a/src/com/vaadin/ui/AbstractComponentContainer.java
+++ b/src/com/vaadin/ui/AbstractComponentContainer.java
@@ -372,4 +372,14 @@ public abstract class AbstractComponentContainer extends AbstractComponent
}
}
+ /**
+ * Returns an iterator for the child components.
+ *
+ * @return An iterator for the child components.
+ * @see #getComponentIterator()
+ * @since 7.0.0
+ */
+ public Iterator<Component> iterator() {
+ return getComponentIterator();
+ }
} \ No newline at end of file
diff --git a/src/com/vaadin/ui/ComponentContainer.java b/src/com/vaadin/ui/ComponentContainer.java
index f2bfc723a5..c9bd7f5d8f 100644
--- a/src/com/vaadin/ui/ComponentContainer.java
+++ b/src/com/vaadin/ui/ComponentContainer.java
@@ -5,7 +5,6 @@
package com.vaadin.ui;
import java.io.Serializable;
-import java.util.Iterator;
/**
* Extension to the {@link Component} interface which adds to it the capacity to
@@ -17,7 +16,7 @@ import java.util.Iterator;
* @VERSION@
* @since 3.0
*/
-public interface ComponentContainer extends Component {
+public interface ComponentContainer extends HasComponents {
/**
* Adds the component into this container.
@@ -61,15 +60,6 @@ public interface ComponentContainer extends Component {
public void replaceComponent(Component oldComponent, Component newComponent);
/**
- * Gets an iterator to the collection of contained components. Using this
- * iterator it is possible to step through all components contained in this
- * container.
- *
- * @return the component iterator.
- */
- public Iterator<Component> getComponentIterator();
-
- /**
* Gets the number of children this {@link ComponentContainer} has. This
* must be symmetric with what {@link #getComponentIterator()} returns.
*
diff --git a/src/com/vaadin/ui/CustomField.java b/src/com/vaadin/ui/CustomField.java
index 5804c847af..5436cd0480 100644
--- a/src/com/vaadin/ui/CustomField.java
+++ b/src/com/vaadin/ui/CustomField.java
@@ -173,6 +173,10 @@ public abstract class CustomField<T> extends AbstractField<T> implements
return new ComponentIterator();
}
+ public Iterator<Component> iterator() {
+ return getComponentIterator();
+ }
+
public int getComponentCount() {
return (null != getContent()) ? 1 : 0;
}
diff --git a/src/com/vaadin/ui/HasComponents.java b/src/com/vaadin/ui/HasComponents.java
new file mode 100644
index 0000000000..e6f71fb3ed
--- /dev/null
+++ b/src/com/vaadin/ui/HasComponents.java
@@ -0,0 +1,24 @@
+package com.vaadin.ui;
+
+import java.util.Iterator;
+
+/**
+ * Interface that must be implemented by all {@link Component}s that contain
+ * other {@link Component}s.
+ *
+ * @author Vaadin Ltd
+ * @version @VERSION@
+ * @since 7.0.0
+ *
+ */
+public interface HasComponents extends Component, Iterable<Component> {
+ /**
+ * Gets an iterator to the collection of contained components. Using this
+ * iterator it is possible to step through all components contained in this
+ * container.
+ *
+ * @return the component iterator.
+ */
+ public Iterator<Component> getComponentIterator();
+
+}