diff options
author | Henri Sara <hesara@vaadin.com> | 2012-11-14 13:49:47 +0200 |
---|---|---|
committer | Henri Sara <hesara@vaadin.com> | 2012-11-14 13:49:47 +0200 |
commit | aca92f4937cc54f122b20c4bfb6288ee007c9e47 (patch) | |
tree | 7d7ee8e0cfa760e5f6b1da15ea8fe088f542540f /server | |
parent | 1b7a4a1ee9e03f445cbfcbb520a5ac970ccf47de (diff) | |
download | vaadin-framework-aca92f4937cc54f122b20c4bfb6288ee007c9e47.tar.gz vaadin-framework-aca92f4937cc54f122b20c4bfb6288ee007c9e47.zip |
Panel and Window based on AbstractSingleComponentContainer (#2924)
Change-Id: I9eb1f40a02dcad0f756ad2518d86ef1c52aa69c2
Diffstat (limited to 'server')
-rw-r--r-- | server/src/com/vaadin/ui/Panel.java | 175 | ||||
-rw-r--r-- | server/src/com/vaadin/ui/Window.java | 30 |
2 files changed, 26 insertions, 179 deletions
diff --git a/server/src/com/vaadin/ui/Panel.java b/server/src/com/vaadin/ui/Panel.java index 521c3e3d27..b5cfe04407 100644 --- a/server/src/com/vaadin/ui/Panel.java +++ b/server/src/com/vaadin/ui/Panel.java @@ -16,8 +16,6 @@ package com.vaadin.ui; -import java.util.Collections; -import java.util.Iterator; import java.util.Map; import com.vaadin.event.Action; @@ -41,15 +39,8 @@ import com.vaadin.ui.Component.Focusable; * @since 3.0 */ @SuppressWarnings("serial") -public class Panel extends AbstractComponentContainer implements Scrollable, - ComponentContainer.ComponentAttachListener, - ComponentContainer.ComponentDetachListener, Action.Notifier, Focusable, - LegacyComponent { - - /** - * Content of the panel. - */ - private ComponentContainer content; +public class Panel extends AbstractSingleComponentContainer implements + Scrollable, Action.Notifier, Focusable, LegacyComponent { /** * Keeps track of the Actions added to this component, and manages the @@ -122,75 +113,6 @@ public class Panel extends AbstractComponentContainer implements Scrollable, super.setCaption(caption); } - /** - * Returns the content of the Panel. - * - * @return - */ - public ComponentContainer getContent() { - return content; - } - - /** - * - * Set the content of the Panel. If null is given as the new content then a - * layout is automatically created and set as the content. - * - * @param content - * The new content - */ - public void setContent(ComponentContainer newContent) { - - // If the content is null we create the default content - if (newContent == null) { - newContent = createDefaultContent(); - } - - // if (newContent == null) { - // throw new IllegalArgumentException("Content cannot be null"); - // } - - if (newContent == content) { - // don't set the same content twice - return; - } - - // detach old content if present - if (content != null) { - content.setParent(null); - content.removeListener((ComponentContainer.ComponentAttachListener) this); - content.removeListener((ComponentContainer.ComponentDetachListener) this); - } - - // Sets the panel to be parent for the content - newContent.setParent(this); - - // Sets the new content - content = newContent; - - // Adds the event listeners for new content - newContent - .addListener((ComponentContainer.ComponentAttachListener) this); - newContent - .addListener((ComponentContainer.ComponentDetachListener) this); - - content = newContent; - markAsDirty(); - } - - /** - * Create a ComponentContainer which is added by default to the Panel if - * user does not specify any content. - * - * @return - */ - private ComponentContainer createDefaultContent() { - VerticalLayout layout = new VerticalLayout(); - // Force margins by default - layout.setMargin(true); - return layout; - } - /* * (non-Javadoc) * @@ -205,53 +127,12 @@ public class Panel extends AbstractComponentContainer implements Scrollable, } /** - * Adds the component into this container. - * - * @param c - * the component to be added. - * @see com.vaadin.ui.AbstractComponentContainer#addComponent(com.vaadin.ui.Component) - */ - @Override - public void addComponent(Component c) { - content.addComponent(c); - // No repaint request is made as we except the underlying container to - // request repaints - } - - /** - * Removes the component from this container. - * - * @param c - * The component to be removed. - * @see com.vaadin.ui.AbstractComponentContainer#removeComponent(com.vaadin.ui.Component) - */ - @Override - public void removeComponent(Component c) { - content.removeComponent(c); - // No repaint request is made as we except the underlying container to - // request repaints - } - - /** - * Gets the component container iterator for going through all the - * components in the container. - * - * @return the Iterator of the components inside the container. - * @see com.vaadin.ui.ComponentContainer#getComponentIterator() - */ - @Override - public Iterator<Component> iterator() { - return Collections.singleton((Component) content).iterator(); - } - - /** * Called when one or more variables handled by the implementing class are * changed. * * @see com.vaadin.server.VariableOwner#changeVariables(Object, Map) */ @Override - @SuppressWarnings("unchecked") public void changeVariables(Object source, Map<String, Object> variables) { // Get new size final Integer newWidth = (Integer) variables.get("width"); @@ -332,47 +213,6 @@ public class Panel extends AbstractComponentContainer implements Scrollable, getState().scrollTop = scrollTop; } - /* Documented in superclass */ - @Override - public void replaceComponent(Component oldComponent, Component newComponent) { - - content.replaceComponent(oldComponent, newComponent); - } - - /** - * A new component is attached to container. - * - * @see com.vaadin.ui.ComponentContainer.ComponentAttachListener#componentAttachedToContainer(com.vaadin.ui.ComponentContainer.ComponentAttachEvent) - */ - @Override - public void componentAttachedToContainer(ComponentAttachEvent event) { - if (event.getContainer() == content) { - fireComponentAttachEvent(event.getAttachedComponent()); - } - } - - /** - * A component has been detached from container. - * - * @see com.vaadin.ui.ComponentContainer.ComponentDetachListener#componentDetachedFromContainer(com.vaadin.ui.ComponentContainer.ComponentDetachEvent) - */ - @Override - public void componentDetachedFromContainer(ComponentDetachEvent event) { - if (event.getContainer() == content) { - fireComponentDetachEvent(event.getDetachedComponent()); - } - } - - /** - * Removes all components from this container. - * - * @see com.vaadin.ui.ComponentContainer#removeAllComponents() - */ - @Override - public void removeAllComponents() { - content.removeAllComponents(); - } - /* * ACTIONS */ @@ -490,17 +330,6 @@ public class Panel extends AbstractComponentContainer implements Scrollable, super.focus(); } - /* - * (non-Javadoc) - * - * @see com.vaadin.ui.ComponentContainer#getComponentCount() - */ - @Override - public int getComponentCount() { - // This is so wrong... (#2924) - return content.getComponentCount(); - } - @Override protected PanelState getState() { return (PanelState) super.getState(); diff --git a/server/src/com/vaadin/ui/Window.java b/server/src/com/vaadin/ui/Window.java index b09ef13497..7e9fecbdc5 100644 --- a/server/src/com/vaadin/ui/Window.java +++ b/server/src/com/vaadin/ui/Window.java @@ -105,20 +105,38 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier, setSizeUndefined(); } - /* - * (non-Javadoc) + /** + * Add a component to the content ({@link ComponentContainer}) of a window. + * + * This version creates an empty {@link VerticalLayout} if no container is + * defined, but this automatic creation will be removed in future versions. * - * @see com.vaadin.ui.Panel#addComponent(com.vaadin.ui.Component) + * @param c + * component to add + * + * @deprecated use Window.setContent(Component) instead */ - - @Override + @Deprecated public void addComponent(Component c) { if (c instanceof Window) { throw new IllegalArgumentException( "Window cannot be added to another via addComponent. " + "Use addWindow(Window) instead."); } - super.addComponent(c); + + if (getContent() == null) { + // TODO this automatic creation should be removed in the future + VerticalLayout content = new VerticalLayout(); + content.setMargin(true); + setContent(content); + } + + if (getContent() instanceof ComponentContainer) { + ((ComponentContainer) getContent()).addComponent(c); + } else { + throw new IllegalArgumentException( + "Cannot add component to a window whose content is not a ComponentContainer"); + } } /* ********************************************************************* */ |