diff options
author | Leif Åstrand <leif@vaadin.com> | 2015-03-15 14:32:38 +0200 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-04-07 10:35:52 +0000 |
commit | b7808ca2836683a8d8bca15413a723656e9f1b92 (patch) | |
tree | 6b5be9d43d2a4fa86ad99f78202211f853841ce5 /server/src/com/vaadin/ui/declarative | |
parent | e56d11aa71f88444c3f109c65f0b7424bf2a8638 (diff) | |
download | vaadin-framework-b7808ca2836683a8d8bca15413a723656e9f1b92.tar.gz vaadin-framework-b7808ca2836683a8d8bca15413a723656e9f1b92.zip |
Add selective data write support to AbstractSelect (#17148)
Change-Id: I06f82fe05f3b370af85538c0a85f2e60ee28d72d
Diffstat (limited to 'server/src/com/vaadin/ui/declarative')
-rw-r--r-- | server/src/com/vaadin/ui/declarative/DesignContext.java | 54 | ||||
-rw-r--r-- | server/src/com/vaadin/ui/declarative/ShouldWriteDataDelegate.java | 55 |
2 files changed, 109 insertions, 0 deletions
diff --git a/server/src/com/vaadin/ui/declarative/DesignContext.java b/server/src/com/vaadin/ui/declarative/DesignContext.java index f991b3013a..54be5dcea3 100644 --- a/server/src/com/vaadin/ui/declarative/DesignContext.java +++ b/server/src/com/vaadin/ui/declarative/DesignContext.java @@ -75,6 +75,8 @@ public class DesignContext implements Serializable { // component creation listeners private List<ComponentCreationListener> listeners = new ArrayList<ComponentCreationListener>(); + private ShouldWriteDataDelegate shouldWriteDataDelegate = ShouldWriteDataDelegate.DEFAULT; + public DesignContext(Document doc) { this.doc = doc; // Initialize the mapping between prefixes and package names. @@ -661,4 +663,56 @@ public class DesignContext implements Serializable { return true; } + + /** + * Determines whether the container data of a component should be written + * out by delegating to a {@link ShouldWriteDataDelegate}. The default + * delegate assumes that all component data is provided by a data source + * connected to a back end system and that the data should thus not be + * written. + * + * @since + * @see #setShouldWriteDataDelegate(ShouldWriteDataDelegate) + * @param component + * the component to check + * @return <code>true</code> if container data should be written out for the + * provided component; otherwise <code>false</code>. + */ + public boolean shouldWriteData(Component component) { + return getShouldWriteDataDelegate().shouldWriteData(component); + } + + /** + * Sets the delegate that determines whether the container data of a + * component should be written out. + * + * @since + * @see #shouldWriteChildren(Component, Component) + * @see #getShouldWriteDataDelegate() + * @param shouldWriteDataDelegate + * the delegate to set, not <code>null</code> + * @throws IllegalArgumentException + * if the provided delegate is <code>null</code> + */ + public void setShouldWriteDataDelegate( + ShouldWriteDataDelegate shouldWriteDataDelegate) { + if (shouldWriteDataDelegate == null) { + throw new IllegalArgumentException("Delegate cannot be null"); + } + this.shouldWriteDataDelegate = shouldWriteDataDelegate; + } + + /** + * Gets the delegate that determines whether the container data of a + * component should be written out. + * + * @since + * @see #setShouldWriteDataDelegate(ShouldWriteDataDelegate) + * @see #shouldWriteChildren(Component, Component) + * @return the shouldWriteDataDelegate the currently use delegate + */ + public ShouldWriteDataDelegate getShouldWriteDataDelegate() { + return shouldWriteDataDelegate; + } + } diff --git a/server/src/com/vaadin/ui/declarative/ShouldWriteDataDelegate.java b/server/src/com/vaadin/ui/declarative/ShouldWriteDataDelegate.java new file mode 100644 index 0000000000..29a78e1db6 --- /dev/null +++ b/server/src/com/vaadin/ui/declarative/ShouldWriteDataDelegate.java @@ -0,0 +1,55 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.ui.declarative; + +import java.io.Serializable; + +import com.vaadin.ui.Component; + +/** + * Delegate used by {@link DesignContext} to determine whether container data + * should be written out for a component. + * + * @see DesignContext#shouldWriteData(Component) + * + * @since + * @author Vaadin Ltd + */ +public interface ShouldWriteDataDelegate extends Serializable { + + /** + * The default delegate implementation that assumes that all component data + * is provided by a data source connected to a back end system and that the + * data should thus not be written. + */ + public static final ShouldWriteDataDelegate DEFAULT = new ShouldWriteDataDelegate() { + @Override + public boolean shouldWriteData(Component component) { + return false; + } + }; + + /** + * Determines whether the container data of a component should be written + * out. + * + * @param component + * the component to check + * @return <code>true</code> if container data should be written out for the + * provided component; otherwise <code>false</code>. + */ + boolean shouldWriteData(Component component); +} |