summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorJohn Ahlroos <john@vaadin.com>2012-08-28 09:30:46 +0300
committerJohn Ahlroos <john@vaadin.com>2012-08-28 09:30:46 +0300
commit7b9e1566d6e36c10aef3566b20267449586a81cb (patch)
tree4c577240fd35d863b88b91b24c7d2a07c67adf1b /server
parentbd5876005947b830a151889a86203fd77a6d6022 (diff)
parent52986fdf881260994e5465012af2afd80447b8b6 (diff)
downloadvaadin-framework-7b9e1566d6e36c10aef3566b20267449586a81cb.tar.gz
vaadin-framework-7b9e1566d6e36c10aef3566b20267449586a81cb.zip
Merge branch 'master' into layoutgraph
Diffstat (limited to 'server')
-rw-r--r--server/src/com/vaadin/Application.java70
-rw-r--r--server/src/com/vaadin/data/Buffered.java76
-rw-r--r--server/src/com/vaadin/data/util/QueryContainer.java685
-rw-r--r--server/src/com/vaadin/data/util/sqlcontainer/ColumnProperty.java6
-rw-r--r--server/src/com/vaadin/event/ActionManager.java2
-rw-r--r--server/src/com/vaadin/terminal/AbstractClientConnector.java78
-rw-r--r--server/src/com/vaadin/terminal/AbstractJavaScriptExtension.java2
-rw-r--r--server/src/com/vaadin/terminal/AbstractRootProvider.java35
-rw-r--r--server/src/com/vaadin/terminal/DefaultRootProvider.java51
-rw-r--r--server/src/com/vaadin/terminal/JavaScriptCallbackHelper.java6
-rw-r--r--server/src/com/vaadin/terminal/Page.java35
-rw-r--r--server/src/com/vaadin/terminal/RootProvider.java29
-rw-r--r--server/src/com/vaadin/terminal/Terminal.java36
-rw-r--r--server/src/com/vaadin/terminal/Vaadin6Component.java11
-rw-r--r--server/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java83
-rw-r--r--server/src/com/vaadin/terminal/gwt/server/ApplicationServlet.java2
-rw-r--r--server/src/com/vaadin/terminal/gwt/server/ClientConnector.java42
-rw-r--r--server/src/com/vaadin/terminal/gwt/server/DragAndDropService.java26
-rw-r--r--server/src/com/vaadin/terminal/gwt/server/JsonCodec.java175
-rw-r--r--server/src/com/vaadin/terminal/gwt/server/WebBrowser.java30
-rw-r--r--server/src/com/vaadin/ui/AbsoluteLayout.java36
-rw-r--r--server/src/com/vaadin/ui/AbstractComponent.java68
-rw-r--r--server/src/com/vaadin/ui/AbstractComponentContainer.java9
-rw-r--r--server/src/com/vaadin/ui/AbstractField.java157
-rw-r--r--server/src/com/vaadin/ui/AbstractJavaScriptComponent.java17
-rw-r--r--server/src/com/vaadin/ui/AbstractLayout.java55
-rw-r--r--server/src/com/vaadin/ui/AbstractMedia.java8
-rw-r--r--server/src/com/vaadin/ui/AbstractOrderedLayout.java53
-rw-r--r--server/src/com/vaadin/ui/AbstractSelect.java36
-rw-r--r--server/src/com/vaadin/ui/AbstractSplitPanel.java14
-rw-r--r--server/src/com/vaadin/ui/AbstractTextField.java19
-rw-r--r--server/src/com/vaadin/ui/Button.java9
-rw-r--r--server/src/com/vaadin/ui/CheckBox.java2
-rw-r--r--server/src/com/vaadin/ui/ComboBox.java4
-rw-r--r--server/src/com/vaadin/ui/Component.java14
-rw-r--r--server/src/com/vaadin/ui/ConnectorTracker.java4
-rw-r--r--server/src/com/vaadin/ui/CssLayout.java12
-rw-r--r--server/src/com/vaadin/ui/CustomComponent.java2
-rw-r--r--server/src/com/vaadin/ui/CustomField.java4
-rw-r--r--server/src/com/vaadin/ui/CustomLayout.java34
-rw-r--r--server/src/com/vaadin/ui/DateField.java30
-rw-r--r--server/src/com/vaadin/ui/DragAndDropWrapper.java24
-rw-r--r--server/src/com/vaadin/ui/Embedded.java22
-rw-r--r--server/src/com/vaadin/ui/Form.java89
-rw-r--r--server/src/com/vaadin/ui/FormLayout.java4
-rw-r--r--server/src/com/vaadin/ui/GridLayout.java106
-rw-r--r--server/src/com/vaadin/ui/JavaScript.java10
-rw-r--r--server/src/com/vaadin/ui/Label.java19
-rw-r--r--server/src/com/vaadin/ui/Layout.java120
-rw-r--r--server/src/com/vaadin/ui/Link.java39
-rw-r--r--server/src/com/vaadin/ui/ListSelect.java4
-rw-r--r--server/src/com/vaadin/ui/LoginForm.java3
-rw-r--r--server/src/com/vaadin/ui/MenuBar.java40
-rw-r--r--server/src/com/vaadin/ui/NativeSelect.java2
-rw-r--r--server/src/com/vaadin/ui/Notification.java66
-rw-r--r--server/src/com/vaadin/ui/OptionGroup.java10
-rw-r--r--server/src/com/vaadin/ui/Panel.java7
-rw-r--r--server/src/com/vaadin/ui/PopupDateField.java2
-rw-r--r--server/src/com/vaadin/ui/PopupView.java20
-rw-r--r--server/src/com/vaadin/ui/ProgressIndicator.java4
-rw-r--r--server/src/com/vaadin/ui/RichTextArea.java75
-rw-r--r--server/src/com/vaadin/ui/Root.java29
-rw-r--r--server/src/com/vaadin/ui/Select.java44
-rw-r--r--server/src/com/vaadin/ui/Slider.java8
-rw-r--r--server/src/com/vaadin/ui/TabSheet.java115
-rw-r--r--server/src/com/vaadin/ui/Table.java105
-rw-r--r--server/src/com/vaadin/ui/TextArea.java4
-rw-r--r--server/src/com/vaadin/ui/Tree.java38
-rw-r--r--server/src/com/vaadin/ui/TreeTable.java6
-rw-r--r--server/src/com/vaadin/ui/TwinColSelect.java8
-rw-r--r--server/src/com/vaadin/ui/Upload.java41
-rw-r--r--server/src/com/vaadin/ui/Video.java3
-rw-r--r--server/src/com/vaadin/ui/Window.java50
-rw-r--r--server/src/com/vaadin/ui/themes/BaseTheme.java12
-rw-r--r--server/src/com/vaadin/ui/themes/Reindeer.java18
75 files changed, 980 insertions, 2234 deletions
diff --git a/server/src/com/vaadin/Application.java b/server/src/com/vaadin/Application.java
index b120c8455a..d2924eb716 100644
--- a/server/src/com/vaadin/Application.java
+++ b/server/src/com/vaadin/Application.java
@@ -32,6 +32,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.LinkedList;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
@@ -56,6 +57,7 @@ import com.vaadin.terminal.ApplicationResource;
import com.vaadin.terminal.CombinedRequest;
import com.vaadin.terminal.DeploymentConfiguration;
import com.vaadin.terminal.RequestHandler;
+import com.vaadin.terminal.RootProvider;
import com.vaadin.terminal.Terminal;
import com.vaadin.terminal.VariableOwner;
import com.vaadin.terminal.WrappedRequest;
@@ -503,6 +505,8 @@ public class Application implements Terminal.ErrorListener, Serializable {
*/
private Set<Integer> initedRoots = new HashSet<Integer>();
+ private List<RootProvider> rootProviders = new LinkedList<RootProvider>();
+
/**
* Gets the user of the application.
*
@@ -1873,55 +1877,21 @@ public class Application implements Terminal.ErrorListener, Serializable {
*/
protected Root getRoot(WrappedRequest request)
throws RootRequiresMoreInformationException {
- String rootClassName = getRootClassName(request);
- try {
- ClassLoader classLoader = request.getDeploymentConfiguration()
- .getClassLoader();
- if (classLoader == null) {
- classLoader = getClass().getClassLoader();
- }
- Class<? extends Root> rootClass = Class.forName(rootClassName,
- true, classLoader).asSubclass(Root.class);
- try {
- Root root = rootClass.newInstance();
- return root;
- } catch (Exception e) {
- throw new RuntimeException("Could not instantiate root class "
- + rootClassName, e);
+
+ // Iterate in reverse order - test check newest provider first
+ for (int i = rootProviders.size() - 1; i >= 0; i--) {
+ RootProvider provider = rootProviders.get(i);
+
+ Class<? extends Root> rootClass = provider.getRootClass(this,
+ request);
+
+ if (rootClass != null) {
+ return provider.instantiateRoot(this, rootClass, request);
}
- } catch (ClassNotFoundException e) {
- throw new RuntimeException("Could not load root class "
- + rootClassName, e);
}
- }
- /**
- * Provides the name of the <code>Root</code> class that should be used for
- * a request. The class must have an accessible no-args constructor.
- * <p>
- * The default implementation uses the {@value #ROOT_PARAMETER} parameter
- * from web.xml.
- * </p>
- * <p>
- * This method is mainly used by the default implementation of
- * {@link #getRoot(WrappedRequest)}. If you override that method with your
- * own functionality, the results of this method might not be used.
- * </p>
- *
- * @param request
- * the request for which a new root is required
- * @return the name of the root class to use
- *
- * @since 7.0
- */
- protected String getRootClassName(WrappedRequest request) {
- Object rootClassNameObj = getProperties().get(ROOT_PARAMETER);
- if (rootClassNameObj instanceof String) {
- return (String) rootClassNameObj;
- } else {
- throw new RuntimeException("No " + ROOT_PARAMETER
- + " defined in web.xml");
- }
+ throw new RuntimeException(
+ "No root providers available or providers are not able to find root instance");
}
/**
@@ -2169,6 +2139,14 @@ public class Application implements Terminal.ErrorListener, Serializable {
return configuration.isProductionMode();
}
+ public void addRootProvider(RootProvider rootProvider) {
+ rootProviders.add(rootProvider);
+ }
+
+ public void removeRootProvider(RootProvider rootProvider) {
+ rootProviders.remove(rootProvider);
+ }
+
/**
* Finds the {@link Root} to which a particular request belongs. If the
* request originates from an existing Root, that root is returned. In other
diff --git a/server/src/com/vaadin/data/Buffered.java b/server/src/com/vaadin/data/Buffered.java
index 5461d34fbd..0b59c9ff97 100644
--- a/server/src/com/vaadin/data/Buffered.java
+++ b/server/src/com/vaadin/data/Buffered.java
@@ -77,82 +77,6 @@ public interface Buffered extends Serializable {
public void discard() throws SourceException;
/**
- * Tests if the object is in write-through mode. If the object is in
- * write-through mode, all modifications to it will result in
- * <code>commit</code> being called after the modification.
- *
- * @return <code>true</code> if the object is in write-through mode,
- * <code>false</code> if it's not.
- * @deprecated Use {@link #setBuffered(boolean)} instead. Note that
- * setReadThrough(true), setWriteThrough(true) equals
- * setBuffered(false)
- */
- @Deprecated
- public boolean isWriteThrough();
-
- /**
- * Sets the object's write-through mode to the specified status. When
- * switching the write-through mode on, the <code>commit</code> operation
- * will be performed.
- *
- * @param writeThrough
- * Boolean value to indicate if the object should be in
- * write-through mode after the call.
- * @throws SourceException
- * If the operation fails because of an exception is thrown by
- * the data source.
- * @throws InvalidValueException
- * If the implicit commit operation fails because of a
- * validation error.
- *
- * @deprecated Use {@link #setBuffered(boolean)} instead. Note that
- * setReadThrough(true), setWriteThrough(true) equals
- * setBuffered(false)
- */
- @Deprecated
- public void setWriteThrough(boolean writeThrough) throws SourceException,
- InvalidValueException;
-
- /**
- * Tests if the object is in read-through mode. If the object is in
- * read-through mode, retrieving its value will result in the value being
- * first updated from the data source to the object.
- * <p>
- * The only exception to this rule is that when the object is not in
- * write-through mode and it's buffer contains a modified value, the value
- * retrieved from the object will be the locally modified value in the
- * buffer which may differ from the value in the data source.
- * </p>
- *
- * @return <code>true</code> if the object is in read-through mode,
- * <code>false</code> if it's not.
- * @deprecated Use {@link #isBuffered(boolean)} instead. Note that
- * setReadThrough(true), setWriteThrough(true) equals
- * setBuffered(false)
- */
- @Deprecated
- public boolean isReadThrough();
-
- /**
- * Sets the object's read-through mode to the specified status. When
- * switching read-through mode on, the object's value is updated from the
- * data source.
- *
- * @param readThrough
- * Boolean value to indicate if the object should be in
- * read-through mode after the call.
- *
- * @throws SourceException
- * If the operation fails because of an exception is thrown by
- * the data source. The cause is included in the exception.
- * @deprecated Use {@link #setBuffered(boolean)} instead. Note that
- * setReadThrough(true), setWriteThrough(true) equals
- * setBuffered(false)
- */
- @Deprecated
- public void setReadThrough(boolean readThrough) throws SourceException;
-
- /**
* Sets the object's buffered mode to the specified status.
* <p>
* When the object is in buffered mode, an internal buffer will be used to
diff --git a/server/src/com/vaadin/data/util/QueryContainer.java b/server/src/com/vaadin/data/util/QueryContainer.java
deleted file mode 100644
index add93c25ee..0000000000
--- a/server/src/com/vaadin/data/util/QueryContainer.java
+++ /dev/null
@@ -1,685 +0,0 @@
-/*
- * Copyright 2011 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.data.util;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-
-/**
- * <p>
- * The <code>QueryContainer</code> is the specialized form of Container which is
- * Ordered and Indexed. This is used to represent the contents of relational
- * database tables accessed through the JDBC Connection in the Vaadin Table.
- * This creates Items based on the queryStatement provided to the container.
- * </p>
- *
- * <p>
- * The <code>QueryContainer</code> can be visualized as a representation of a
- * relational database table.Each Item in the container represents the row
- * fetched by the query.All cells in a column have same data type and the data
- * type information is retrieved from the metadata of the resultset.
- * </p>
- *
- * <p>
- * Note : If data in the tables gets modified, Container will not get reflected
- * with the updates, we have to explicity invoke QueryContainer.refresh method.
- * {@link com.vaadin.data.util.QueryContainer#refresh() refresh()}
- * </p>
- *
- * @see com.vaadin.data.Container
- *
- * @author Vaadin Ltd.
- * @since 4.0
- *
- * @deprecated will be removed in the future, use the SQLContainer add-on
- */
-
-@Deprecated
-@SuppressWarnings("serial")
-public class QueryContainer implements Container, Container.Ordered,
- Container.Indexed {
-
- // default ResultSet type
- public static final int DEFAULT_RESULTSET_TYPE = ResultSet.TYPE_SCROLL_INSENSITIVE;
-
- // default ResultSet concurrency
- public static final int DEFAULT_RESULTSET_CONCURRENCY = ResultSet.CONCUR_READ_ONLY;
-
- private int resultSetType = DEFAULT_RESULTSET_TYPE;
-
- private int resultSetConcurrency = DEFAULT_RESULTSET_CONCURRENCY;
-
- private final String queryStatement;
-
- private final Connection connection;
-
- private ResultSet result;
-
- private Collection<String> propertyIds;
-
- private final HashMap<String, Class<?>> propertyTypes = new HashMap<String, Class<?>>();
-
- private int size = -1;
-
- private Statement statement;
-
- /**
- * Constructs new <code>QueryContainer</code> with the specified
- * <code>queryStatement</code>.
- *
- * @param queryStatement
- * Database query
- * @param connection
- * Connection object
- * @param resultSetType
- * @param resultSetConcurrency
- * @throws SQLException
- * when database operation fails
- */
- public QueryContainer(String queryStatement, Connection connection,
- int resultSetType, int resultSetConcurrency) throws SQLException {
- this.queryStatement = queryStatement;
- this.connection = connection;
- this.resultSetType = resultSetType;
- this.resultSetConcurrency = resultSetConcurrency;
- init();
- }
-
- /**
- * Constructs new <code>QueryContainer</code> with the specified
- * queryStatement using the default resultset type and default resultset
- * concurrency.
- *
- * @param queryStatement
- * Database query
- * @param connection
- * Connection object
- * @see QueryContainer#DEFAULT_RESULTSET_TYPE
- * @see QueryContainer#DEFAULT_RESULTSET_CONCURRENCY
- * @throws SQLException
- * when database operation fails
- */
- public QueryContainer(String queryStatement, Connection connection)
- throws SQLException {
- this(queryStatement, connection, DEFAULT_RESULTSET_TYPE,
- DEFAULT_RESULTSET_CONCURRENCY);
- }
-
- /**
- * Fills the Container with the items and properties. Invoked by the
- * constructor.
- *
- * @throws SQLException
- * when parameter initialization fails.
- * @see QueryContainer#QueryContainer(String, Connection, int, int).
- */
- private void init() throws SQLException {
- refresh();
- ResultSetMetaData metadata;
- metadata = result.getMetaData();
- final int count = metadata.getColumnCount();
- final ArrayList<String> list = new ArrayList<String>(count);
- for (int i = 1; i <= count; i++) {
- final String columnName = metadata.getColumnName(i);
- list.add(columnName);
- final Property<?> p = getContainerProperty(new Integer(1),
- columnName);
- propertyTypes.put(columnName,
- p == null ? Object.class : p.getType());
- }
- propertyIds = Collections.unmodifiableCollection(list);
- }
-
- /**
- * <p>
- * Restores items in the container. This method will update the latest data
- * to the container.
- * </p>
- * Note: This method should be used to update the container with the latest
- * items.
- *
- * @throws SQLException
- * when database operation fails
- *
- */
-
- public void refresh() throws SQLException {
- close();
- statement = connection.createStatement(resultSetType,
- resultSetConcurrency);
- result = statement.executeQuery(queryStatement);
- result.last();
- size = result.getRow();
- }
-
- /**
- * Releases and nullifies the <code>statement</code>.
- *
- * @throws SQLException
- * when database operation fails
- */
-
- public void close() throws SQLException {
- if (statement != null) {
- statement.close();
- }
- statement = null;
- }
-
- /**
- * Gets the Item with the given Item ID from the Container.
- *
- * @param id
- * ID of the Item to retrieve
- * @return Item Id.
- */
-
- @Override
- public Item getItem(Object id) {
- return new Row(id);
- }
-
- /**
- * Gets the collection of propertyId from the Container.
- *
- * @return Collection of Property ID.
- */
-
- @Override
- public Collection<String> getContainerPropertyIds() {
- return propertyIds;
- }
-
- /**
- * Gets an collection of all the item IDs in the container.
- *
- * @return collection of Item IDs
- */
- @Override
- public Collection<?> getItemIds() {
- final Collection<Integer> c = new ArrayList<Integer>(size);
- for (int i = 1; i <= size; i++) {
- c.add(new Integer(i));
- }
- return c;
- }
-
- /**
- * Gets the property identified by the given itemId and propertyId from the
- * container. If the container does not contain the property
- * <code>null</code> is returned.
- *
- * @param itemId
- * ID of the Item which contains the Property
- * @param propertyId
- * ID of the Property to retrieve
- *
- * @return Property with the given ID if exists; <code>null</code>
- * otherwise.
- */
-
- @Override
- public synchronized Property<?> getContainerProperty(Object itemId,
- Object propertyId) {
- if (!(itemId instanceof Integer && propertyId instanceof String)) {
- return null;
- }
- Object value;
- try {
- result.absolute(((Integer) itemId).intValue());
- value = result.getObject((String) propertyId);
- } catch (final Exception e) {
- return null;
- }
-
- // Handle also null values from the database
- return new ObjectProperty<Object>(value != null ? value
- : new String(""));
- }
-
- /**
- * Gets the data type of all properties identified by the given type ID.
- *
- * @param id
- * ID identifying the Properties
- *
- * @return data type of the Properties
- */
-
- @Override
- public Class<?> getType(Object id) {
- return propertyTypes.get(id);
- }
-
- /**
- * Gets the number of items in the container.
- *
- * @return the number of items in the container.
- */
- @Override
- public int size() {
- return size;
- }
-
- /**
- * Tests if the list contains the specified Item.
- *
- * @param id
- * ID the of Item to be tested.
- * @return <code>true</code> if given id is in the container;
- * <code>false</code> otherwise.
- */
- @Override
- public boolean containsId(Object id) {
- if (!(id instanceof Integer)) {
- return false;
- }
- final int i = ((Integer) id).intValue();
- if (i < 1) {
- return false;
- }
- if (i > size) {
- return false;
- }
- return true;
- }
-
- /**
- * Creates new Item with the given ID into the Container.
- *
- * @param itemId
- * ID of the Item to be created.
- *
- * @return Created new Item, or <code>null</code> if it fails.
- *
- * @throws UnsupportedOperationException
- * if the addItem method is not supported.
- */
- @Override
- public Item addItem(Object itemId) throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Creates a new Item into the Container, and assign it an ID.
- *
- * @return ID of the newly created Item, or <code>null</code> if it fails.
- * @throws UnsupportedOperationException
- * if the addItem method is not supported.
- */
- @Override
- public Object addItem() throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Removes the Item identified by ItemId from the Container.
- *
- * @param itemId
- * ID of the Item to remove.
- * @return <code>true</code> if the operation succeeded; <code>false</code>
- * otherwise.
- * @throws UnsupportedOperationException
- * if the removeItem method is not supported.
- */
- @Override
- public boolean removeItem(Object itemId)
- throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Adds new Property to all Items in the Container.
- *
- * @param propertyId
- * ID of the Property
- * @param type
- * Data type of the new Property
- * @param defaultValue
- * The value all created Properties are initialized to.
- * @return <code>true</code> if the operation succeeded; <code>false</code>
- * otherwise.
- * @throws UnsupportedOperationException
- * if the addContainerProperty method is not supported.
- */
- @Override
- public boolean addContainerProperty(Object propertyId, Class<?> type,
- Object defaultValue) throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Removes a Property specified by the given Property ID from the Container.
- *
- * @param propertyId
- * ID of the Property to remove
- * @return <code>true</code> if the operation succeeded; <code>false</code>
- * otherwise.
- * @throws UnsupportedOperationException
- * if the removeContainerProperty method is not supported.
- */
- @Override
- public boolean removeContainerProperty(Object propertyId)
- throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Removes all Items from the Container.
- *
- * @return <code>true</code> if the operation succeeded; <code>false</code>
- * otherwise.
- * @throws UnsupportedOperationException
- * if the removeAllItems method is not supported.
- */
- @Override
- public boolean removeAllItems() throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Adds new item after the given item.
- *
- * @param previousItemId
- * Id of the previous item in ordered container.
- * @param newItemId
- * Id of the new item to be added.
- * @return Returns new item or <code>null</code> if the operation fails.
- * @throws UnsupportedOperationException
- * if the addItemAfter method is not supported.
- */
- @Override
- public Item addItemAfter(Object previousItemId, Object newItemId)
- throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Adds new item after the given item.
- *
- * @param previousItemId
- * Id of the previous item in ordered container.
- * @return Returns item id created new item or <code>null</code> if the
- * operation fails.
- * @throws UnsupportedOperationException
- * if the addItemAfter method is not supported.
- */
- @Override
- public Object addItemAfter(Object previousItemId)
- throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Returns id of first item in the Container.
- *
- * @return ID of the first Item in the list.
- */
- @Override
- public Object firstItemId() {
- if (size < 1) {
- return null;
- }
- return new Integer(1);
- }
-
- /**
- * Returns <code>true</code> if given id is first id at first index.
- *
- * @param id
- * ID of an Item in the Container.
- */
- @Override
- public boolean isFirstId(Object id) {
- return size > 0 && (id instanceof Integer)
- && ((Integer) id).intValue() == 1;
- }
-
- /**
- * Returns <code>true</code> if given id is last id at last index.
- *
- * @param id
- * ID of an Item in the Container
- *
- */
- @Override
- public boolean isLastId(Object id) {
- return size > 0 && (id instanceof Integer)
- && ((Integer) id).intValue() == size;
- }
-
- /**
- * Returns id of last item in the Container.
- *
- * @return ID of the last Item.
- */
- @Override
- public Object lastItemId() {
- if (size < 1) {
- return null;
- }
- return new Integer(size);
- }
-
- /**
- * Returns id of next item in container at next index.
- *
- * @param id
- * ID of an Item in the Container.
- * @return ID of the next Item or null.
- */
- @Override
- public Object nextItemId(Object id) {
- if (size < 1 || !(id instanceof Integer)) {
- return null;
- }
- final int i = ((Integer) id).intValue();
- if (i >= size) {
- return null;
- }
- return new Integer(i + 1);
- }
-
- /**
- * Returns id of previous item in container at previous index.
- *
- * @param id
- * ID of an Item in the Container.
- * @return ID of the previous Item or null.
- */
- @Override
- public Object prevItemId(Object id) {
- if (size < 1 || !(id instanceof Integer)) {
- return null;
- }
- final int i = ((Integer) id).intValue();
- if (i <= 1) {
- return null;
- }
- return new Integer(i - 1);
- }
-
- /**
- * The <code>Row</code> class implements methods of Item.
- *
- * @author Vaadin Ltd.
- * @since 4.0
- */
- class Row implements Item {
-
- Object id;
-
- private Row(Object rowId) {
- id = rowId;
- }
-
- /**
- * Adds the item property.
- *
- * @param id
- * ID of the new Property.
- * @param property
- * Property to be added and associated with ID.
- * @return <code>true</code> if the operation succeeded;
- * <code>false</code> otherwise.
- * @throws UnsupportedOperationException
- * if the addItemProperty method is not supported.
- */
- @Override
- public boolean addItemProperty(Object id, Property property)
- throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Gets the property corresponding to the given property ID stored in
- * the Item.
- *
- * @param propertyId
- * identifier of the Property to get
- * @return the Property with the given ID or <code>null</code>
- */
- @Override
- public Property<?> getItemProperty(Object propertyId) {
- return getContainerProperty(id, propertyId);
- }
-
- /**
- * Gets the collection of property IDs stored in the Item.
- *
- * @return unmodifiable collection containing IDs of the Properties
- * stored the Item.
- */
- @Override
- public Collection<String> getItemPropertyIds() {
- return propertyIds;
- }
-
- /**
- * Removes given item property.
- *
- * @param id
- * ID of the Property to be removed.
- * @return <code>true</code> if the item property is removed;
- * <code>false</code> otherwise.
- * @throws UnsupportedOperationException
- * if the removeItemProperty is not supported.
- */
- @Override
- public boolean removeItemProperty(Object id)
- throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- }
-
- /**
- * Closes the statement.
- *
- * @see #close()
- */
- @Override
- public void finalize() {
- try {
- close();
- } catch (final SQLException ignored) {
-
- }
- }
-
- /**
- * Adds the given item at the position of given index.
- *
- * @param index
- * Index to add the new item.
- * @param newItemId
- * Id of the new item to be added.
- * @return new item or <code>null</code> if the operation fails.
- * @throws UnsupportedOperationException
- * if the addItemAt is not supported.
- */
- @Override
- public Item addItemAt(int index, Object newItemId)
- throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Adds item at the position of provided index in the container.
- *
- * @param index
- * Index to add the new item.
- * @return item id created new item or <code>null</code> if the operation
- * fails.
- *
- * @throws UnsupportedOperationException
- * if the addItemAt is not supported.
- */
-
- @Override
- public Object addItemAt(int index) throws UnsupportedOperationException {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Gets the Index id in the container.
- *
- * @param index
- * Index Id.
- * @return ID in the given index.
- */
- @Override
- public Object getIdByIndex(int index) {
- if (size < 1 || index < 0 || index >= size) {
- return null;
- }
- return new Integer(index + 1);
- }
-
- /**
- * Gets the index of the Item corresponding to id in the container.
- *
- * @param id
- * ID of an Item in the Container
- * @return index of the Item, or -1 if the Container does not include the
- * Item
- */
-
- @Override
- public int indexOfId(Object id) {
- if (size < 1 || !(id instanceof Integer)) {
- return -1;
- }
- final int i = ((Integer) id).intValue();
- if (i >= size || i < 1) {
- return -1;
- }
- return i - 1;
- }
-
-}
diff --git a/server/src/com/vaadin/data/util/sqlcontainer/ColumnProperty.java b/server/src/com/vaadin/data/util/sqlcontainer/ColumnProperty.java
index 0146c92b5c..6e5ba0dc57 100644
--- a/server/src/com/vaadin/data/util/sqlcontainer/ColumnProperty.java
+++ b/server/src/com/vaadin/data/util/sqlcontainer/ColumnProperty.java
@@ -69,7 +69,9 @@ final public class ColumnProperty implements Property {
* @param value
* @param type
*
- * @deprecated
+ * @deprecated as of 7.0. Use
+ * {@link #ColumnProperty(String, boolean, boolean, boolean, boolean, Object, Class)
+ * instead
*/
@Deprecated
public ColumnProperty(String propertyId, boolean readOnly,
@@ -144,7 +146,7 @@ final public class ColumnProperty implements Property {
@Override
public void setValue(Object newValue) throws ReadOnlyException,
- ConversionException {
+ ConversionException {
if (newValue == null && !nullable) {
throw new NotNullableException(
"Null values are not allowed for this property.");
diff --git a/server/src/com/vaadin/event/ActionManager.java b/server/src/com/vaadin/event/ActionManager.java
index 50ddef6265..296d12ba92 100644
--- a/server/src/com/vaadin/event/ActionManager.java
+++ b/server/src/com/vaadin/event/ActionManager.java
@@ -67,7 +67,7 @@ public class ActionManager implements Action.Container, Action.Handler,
private void requestRepaint() {
if (viewer != null) {
- viewer.requestRepaint();
+ viewer.markAsDirty();
}
}
diff --git a/server/src/com/vaadin/terminal/AbstractClientConnector.java b/server/src/com/vaadin/terminal/AbstractClientConnector.java
index bc1cd2af1a..d2490225fb 100644
--- a/server/src/com/vaadin/terminal/AbstractClientConnector.java
+++ b/server/src/com/vaadin/terminal/AbstractClientConnector.java
@@ -31,9 +31,12 @@ import java.util.NoSuchElementException;
import java.util.logging.Logger;
import com.vaadin.Application;
+import com.vaadin.external.json.JSONException;
+import com.vaadin.external.json.JSONObject;
import com.vaadin.shared.communication.ClientRpc;
import com.vaadin.shared.communication.ServerRpc;
import com.vaadin.shared.communication.SharedState;
+import com.vaadin.terminal.gwt.server.AbstractCommunicationManager;
import com.vaadin.terminal.gwt.server.ClientConnector;
import com.vaadin.terminal.gwt.server.ClientMethodInvocation;
import com.vaadin.terminal.gwt.server.RpcManager;
@@ -68,6 +71,8 @@ public abstract class AbstractClientConnector implements ClientConnector {
*/
private SharedState sharedState;
+ private Class<? extends SharedState> stateType;
+
/**
* Pending RPC method invocations to be sent.
*/
@@ -80,8 +85,15 @@ public abstract class AbstractClientConnector implements ClientConnector {
private ClientConnector parent;
/* Documentation copied from interface */
+ @Deprecated
@Override
public void requestRepaint() {
+ markAsDirty();
+ }
+
+ /* Documentation copied from interface */
+ @Override
+ public void markAsDirty() {
Root root = getRoot();
if (root != null) {
root.getConnectorTracker().markDirty(this);
@@ -137,14 +149,24 @@ public abstract class AbstractClientConnector implements ClientConnector {
registerRpc(implementation, type);
}
- @Override
- public SharedState getState() {
+ protected SharedState getState() {
if (null == sharedState) {
sharedState = createState();
}
+
+ Root root = getRoot();
+ if (root != null && !root.getConnectorTracker().isDirty(this)) {
+ requestRepaint();
+ }
+
return sharedState;
}
+ @Override
+ public JSONObject encodeState() throws JSONException {
+ return AbstractCommunicationManager.encodeState(this, getState());
+ }
+
/**
* Creates the shared state bean to be used in server to client
* communication.
@@ -172,17 +194,33 @@ public abstract class AbstractClientConnector implements ClientConnector {
}
}
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.terminal.gwt.server.ClientConnector#getStateType()
- */
@Override
public Class<? extends SharedState> getStateType() {
+ // Lazy load because finding type can be expensive because of the
+ // exceptions flying around
+ if (stateType == null) {
+ stateType = findStateType();
+ }
+
+ return stateType;
+ }
+
+ private Class<? extends SharedState> findStateType() {
try {
- Method m = getClass().getMethod("getState", (Class[]) null);
- Class<?> type = m.getReturnType();
- return type.asSubclass(SharedState.class);
+ Class<?> class1 = getClass();
+ while (class1 != null) {
+ try {
+ Method m = class1.getDeclaredMethod("getState",
+ (Class[]) null);
+ Class<?> type = m.getReturnType();
+ return type.asSubclass(SharedState.class);
+ } catch (NoSuchMethodException nsme) {
+ // Try in superclass instead
+ class1 = class1.getSuperclass();
+ }
+ }
+ throw new NoSuchMethodException(getClass().getCanonicalName()
+ + ".getState()");
} catch (Exception e) {
throw new RuntimeException("Error finding state type for "
+ getClass().getName(), e);
@@ -255,8 +293,6 @@ public abstract class AbstractClientConnector implements ClientConnector {
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
addMethodInvocationToQueue(rpcInterfaceName, method, args);
- // TODO no need to do full repaint if only RPC calls
- requestRepaint();
return null;
}
@@ -279,6 +315,8 @@ public abstract class AbstractClientConnector implements ClientConnector {
// add to queue
pendingInvocations.add(new ClientMethodInvocation(this, interfaceName,
method, parameters));
+ // TODO no need to do full repaint if only RPC calls
+ requestRepaint();
}
/**
@@ -358,11 +396,17 @@ public abstract class AbstractClientConnector implements ClientConnector {
}
@Override
+ @Deprecated
public void requestRepaintAll() {
- requestRepaint();
+ markAsDirtyRecursive();
+ }
+
+ @Override
+ public void markAsDirtyRecursive() {
+ markAsDirty();
for (ClientConnector connector : getAllChildrenIterable(this)) {
- connector.requestRepaintAll();
+ connector.markAsDirtyRecursive();
}
}
@@ -438,14 +482,14 @@ public abstract class AbstractClientConnector implements ClientConnector {
extensions.add(extension);
extension.setParent(this);
- requestRepaint();
+ markAsDirty();
}
@Override
public void removeExtension(Extension extension) {
extension.setParent(null);
extensions.remove(extension);
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -482,7 +526,7 @@ public abstract class AbstractClientConnector implements ClientConnector {
@Override
public void attach() {
- requestRepaint();
+ markAsDirty();
getRoot().getConnectorTracker().registerConnector(this);
diff --git a/server/src/com/vaadin/terminal/AbstractJavaScriptExtension.java b/server/src/com/vaadin/terminal/AbstractJavaScriptExtension.java
index aae71640aa..1def6df697 100644
--- a/server/src/com/vaadin/terminal/AbstractJavaScriptExtension.java
+++ b/server/src/com/vaadin/terminal/AbstractJavaScriptExtension.java
@@ -166,7 +166,7 @@ public abstract class AbstractJavaScriptExtension extends AbstractExtension {
}
@Override
- public JavaScriptExtensionState getState() {
+ protected JavaScriptExtensionState getState() {
return (JavaScriptExtensionState) super.getState();
}
}
diff --git a/server/src/com/vaadin/terminal/AbstractRootProvider.java b/server/src/com/vaadin/terminal/AbstractRootProvider.java
new file mode 100644
index 0000000000..0b63003440
--- /dev/null
+++ b/server/src/com/vaadin/terminal/AbstractRootProvider.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2011 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.terminal;
+
+import com.vaadin.Application;
+import com.vaadin.ui.Root;
+
+public abstract class AbstractRootProvider implements RootProvider {
+
+ @Override
+ public Root instantiateRoot(Application application,
+ Class<? extends Root> type, WrappedRequest request) {
+ try {
+ return type.newInstance();
+ } catch (InstantiationException e) {
+ throw new RuntimeException("Could not instantiate root class", e);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException("Could not access root class", e);
+ }
+ }
+}
diff --git a/server/src/com/vaadin/terminal/DefaultRootProvider.java b/server/src/com/vaadin/terminal/DefaultRootProvider.java
new file mode 100644
index 0000000000..cbf8c98828
--- /dev/null
+++ b/server/src/com/vaadin/terminal/DefaultRootProvider.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2011 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.terminal;
+
+import com.vaadin.Application;
+import com.vaadin.RootRequiresMoreInformationException;
+import com.vaadin.ui.Root;
+
+public class DefaultRootProvider extends AbstractRootProvider {
+
+ @Override
+ public Class<? extends Root> getRootClass(Application application,
+ WrappedRequest request) throws RootRequiresMoreInformationException {
+ Object rootClassNameObj = application
+ .getProperty(Application.ROOT_PARAMETER);
+
+ if (rootClassNameObj instanceof String) {
+ String rootClassName = rootClassNameObj.toString();
+
+ ClassLoader classLoader = request.getDeploymentConfiguration()
+ .getClassLoader();
+ if (classLoader == null) {
+ classLoader = getClass().getClassLoader();
+ }
+ try {
+ Class<? extends Root> rootClass = Class.forName(rootClassName,
+ true, classLoader).asSubclass(Root.class);
+
+ return rootClass;
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException("Could not find root class", e);
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/server/src/com/vaadin/terminal/JavaScriptCallbackHelper.java b/server/src/com/vaadin/terminal/JavaScriptCallbackHelper.java
index 6153cf2619..f0063a8708 100644
--- a/server/src/com/vaadin/terminal/JavaScriptCallbackHelper.java
+++ b/server/src/com/vaadin/terminal/JavaScriptCallbackHelper.java
@@ -60,9 +60,7 @@ public class JavaScriptCallbackHelper implements Serializable {
JavaScriptFunction javaScriptCallback) {
callbacks.put(functionName, javaScriptCallback);
JavaScriptConnectorState state = getConnectorState();
- if (state.getCallbackNames().add(functionName)) {
- connector.requestRepaint();
- }
+ state.getCallbackNames().add(functionName);
ensureRpc();
}
@@ -100,7 +98,6 @@ public class JavaScriptCallbackHelper implements Serializable {
connector.addMethodInvocationToQueue(
JavaScriptCallbackRpc.class.getName(), CALL_METHOD,
new Object[] { name, args });
- connector.requestRepaint();
}
public void registerRpc(Class<?> rpcInterfaceType) {
@@ -119,7 +116,6 @@ public class JavaScriptCallbackHelper implements Serializable {
}
rpcInterfaces.put(interfaceName, methodNames);
- connector.requestRepaint();
}
}
diff --git a/server/src/com/vaadin/terminal/Page.java b/server/src/com/vaadin/terminal/Page.java
index 933f9b39e6..41ab8cc8b6 100644
--- a/server/src/com/vaadin/terminal/Page.java
+++ b/server/src/com/vaadin/terminal/Page.java
@@ -24,6 +24,7 @@ import java.util.LinkedList;
import java.util.List;
import com.vaadin.event.EventRouter;
+import com.vaadin.shared.ui.BorderStyle;
import com.vaadin.shared.ui.root.PageClientRpc;
import com.vaadin.shared.ui.root.RootConstants;
import com.vaadin.terminal.WrappedRequest.BrowserDetails;
@@ -128,7 +129,7 @@ public class Page implements Serializable {
/**
* The border style of the target window
*/
- private final int border;
+ private final BorderStyle border;
/**
* Creates a new open resource.
@@ -145,7 +146,7 @@ public class Page implements Serializable {
* The border style of the target window
*/
private OpenResource(Resource resource, String name, int width,
- int height, int border) {
+ int height, BorderStyle border) {
this.resource = resource;
this.name = name;
this.width = width;
@@ -174,10 +175,10 @@ public class Page implements Serializable {
target.addAttribute("height", height);
}
switch (border) {
- case BORDER_MINIMAL:
+ case MINIMAL:
target.addAttribute("border", "minimal");
break;
- case BORDER_NONE:
+ case NONE:
target.addAttribute("border", "none");
break;
}
@@ -193,19 +194,20 @@ public class Page implements Serializable {
/**
* A border style used for opening resources in a window without a border.
*/
- public static final int BORDER_NONE = 0;
+ @Deprecated
+ public static final BorderStyle BORDER_NONE = BorderStyle.NONE;
/**
* A border style used for opening resources in a window with a minimal
* border.
*/
- public static final int BORDER_MINIMAL = 1;
+ public static final BorderStyle BORDER_MINIMAL = BorderStyle.MINIMAL;
/**
* A border style that indicates that the default border style should be
* used when opening resources.
*/
- public static final int BORDER_DEFAULT = 2;
+ public static final BorderStyle BORDER_DEFAULT = BorderStyle.DEFAULT;
/**
* Listener that listens changes in URI fragment.
@@ -330,7 +332,7 @@ public class Page implements Serializable {
if (fireEvents) {
fireEvent(new FragmentChangedEvent(this, newFragment));
}
- root.requestRepaint();
+ root.markAsDirty();
}
}
@@ -491,8 +493,8 @@ public class Page implements Serializable {
true);
}
target.addAttribute(
- RootConstants.ATTRIBUTE_NOTIFICATION_POSITION,
- n.getPosition());
+ RootConstants.ATTRIBUTE_NOTIFICATION_POSITION, n
+ .getPosition().ordinal());
target.addAttribute(RootConstants.ATTRIBUTE_NOTIFICATION_DELAY,
n.getDelayMsec());
if (n.getStyleName() != null) {
@@ -521,7 +523,7 @@ public class Page implements Serializable {
*/
public void open(Resource resource) {
openList.add(new OpenResource(resource, null, -1, -1, BORDER_DEFAULT));
- root.requestRepaint();
+ root.markAsDirty();
}
/**
@@ -564,7 +566,7 @@ public class Page implements Serializable {
public void open(Resource resource, String windowName) {
openList.add(new OpenResource(resource, windowName, -1, -1,
BORDER_DEFAULT));
- root.requestRepaint();
+ root.markAsDirty();
}
/**
@@ -581,14 +583,13 @@ public class Page implements Serializable {
* @param height
* the height of the window in pixels
* @param border
- * the border style of the window. See {@link #BORDER_NONE
- * Window.BORDER_* constants}
+ * the border style of the window.
*/
public void open(Resource resource, String windowName, int width,
- int height, int border) {
+ int height, BorderStyle border) {
openList.add(new OpenResource(resource, windowName, width, height,
border));
- root.requestRepaint();
+ root.markAsDirty();
}
/**
@@ -602,7 +603,7 @@ public class Page implements Serializable {
notifications = new LinkedList<Notification>();
}
notifications.add(notification);
- root.requestRepaint();
+ root.markAsDirty();
}
/**
diff --git a/server/src/com/vaadin/terminal/RootProvider.java b/server/src/com/vaadin/terminal/RootProvider.java
new file mode 100644
index 0000000000..476cf1bd78
--- /dev/null
+++ b/server/src/com/vaadin/terminal/RootProvider.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2011 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.terminal;
+
+import com.vaadin.Application;
+import com.vaadin.RootRequiresMoreInformationException;
+import com.vaadin.ui.Root;
+
+public interface RootProvider {
+ public Class<? extends Root> getRootClass(Application application,
+ WrappedRequest request) throws RootRequiresMoreInformationException;
+
+ public Root instantiateRoot(Application application,
+ Class<? extends Root> type, WrappedRequest request);
+}
diff --git a/server/src/com/vaadin/terminal/Terminal.java b/server/src/com/vaadin/terminal/Terminal.java
index 29cb649d54..a02bcb50bb 100644
--- a/server/src/com/vaadin/terminal/Terminal.java
+++ b/server/src/com/vaadin/terminal/Terminal.java
@@ -25,44 +25,12 @@ import java.io.Serializable;
*
* @author Vaadin Ltd.
* @since 3.0
+ * @deprecated Currently only a container for ErrorEvent and ErrorListener
*/
+@Deprecated
public interface Terminal extends Serializable {
/**
- * Gets the name of the default theme for this terminal.
- *
- * @return the name of the theme that is used by default by this terminal.
- */
- public String getDefaultTheme();
-
- /**
- * Gets the width of the terminal screen in pixels. This is the width of the
- * screen and not the width available for the application.
- * <p>
- * Note that the screen width is typically not available in the
- * {@link com.vaadin.Application#init()} method as this is called before the
- * browser has a chance to report the screen size to the server.
- * </p>
- *
- * @return the width of the terminal screen.
- */
- public int getScreenWidth();
-
- /**
- * Gets the height of the terminal screen in pixels. This is the height of
- * the screen and not the height available for the application.
- *
- * <p>
- * Note that the screen height is typically not available in the
- * {@link com.vaadin.Application#init()} method as this is called before the
- * browser has a chance to report the screen size to the server.
- * </p>
- *
- * @return the height of the terminal screen.
- */
- public int getScreenHeight();
-
- /**
* An error event implementation for Terminal.
*/
public interface ErrorEvent extends Serializable {
diff --git a/server/src/com/vaadin/terminal/Vaadin6Component.java b/server/src/com/vaadin/terminal/Vaadin6Component.java
index 048000e31d..eb169c90f9 100644
--- a/server/src/com/vaadin/terminal/Vaadin6Component.java
+++ b/server/src/com/vaadin/terminal/Vaadin6Component.java
@@ -52,4 +52,15 @@ public interface Vaadin6Component extends VariableOwner, Component,
*/
public void paintContent(PaintTarget target) throws PaintException;
+ /**
+ * (non-Javadoc) {@inheritDoc}
+ * <p>
+ * For a Vaadin6Component, markAsDirty will also cause
+ * {@link #paintContent(PaintTarget)} to be called before sending changes to
+ * the client.
+ *
+ * @see com.vaadin.terminal.gwt.server.ClientConnector#markAsDirty()
+ */
+ @Override
+ public void markAsDirty();
}
diff --git a/server/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java b/server/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
index 99376ffd1f..7ea4a7d097 100644
--- a/server/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
+++ b/server/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java
@@ -880,49 +880,19 @@ public abstract class AbstractCommunicationManager implements Serializable {
// processing.
JSONObject sharedStates = new JSONObject();
for (ClientConnector connector : dirtyVisibleConnectors) {
- SharedState state = connector.getState();
- if (null != state) {
- // encode and send shared state
- try {
- Class<? extends SharedState> stateType = connector
- .getStateType();
- Object diffState = rootConnectorTracker
- .getDiffState(connector);
- if (diffState == null) {
- diffState = new JSONObject();
- // Use an empty state object as reference for full
- // repaints
- boolean emptyInitialState = JavaScriptConnectorState.class
- .isAssignableFrom(stateType);
- if (!emptyInitialState) {
- try {
- SharedState referenceState = stateType
- .newInstance();
- diffState = JsonCodec.encode(referenceState,
- null, stateType,
- root.getConnectorTracker());
- } catch (Exception e) {
- getLogger().log(
- Level.WARNING,
- "Error creating reference object for state of type "
- + stateType.getName());
- }
- }
- rootConnectorTracker.setDiffState(connector, diffState);
- }
- JSONObject stateJson = (JSONObject) JsonCodec.encode(state,
- diffState, stateType, root.getConnectorTracker());
+ // encode and send shared state
+ try {
+ JSONObject stateJson = connector.encodeState();
- if (stateJson.length() != 0) {
- sharedStates.put(connector.getConnectorId(), stateJson);
- }
- } catch (JSONException e) {
- throw new PaintException(
- "Failed to serialize shared state for connector "
- + connector.getClass().getName() + " ("
- + connector.getConnectorId() + "): "
- + e.getMessage(), e);
+ if (stateJson != null && stateJson.length() != 0) {
+ sharedStates.put(connector.getConnectorId(), stateJson);
}
+ } catch (JSONException e) {
+ throw new PaintException(
+ "Failed to serialize shared state for connector "
+ + connector.getClass().getName() + " ("
+ + connector.getConnectorId() + "): "
+ + e.getMessage(), e);
}
}
outWriter.print("\"state\":");
@@ -1273,6 +1243,37 @@ public abstract class AbstractCommunicationManager implements Serializable {
writePerformanceData(outWriter);
}
+ public static JSONObject encodeState(ClientConnector connector,
+ SharedState state) throws JSONException {
+ Root root = connector.getRoot();
+ ConnectorTracker connectorTracker = root.getConnectorTracker();
+ Class<? extends SharedState> stateType = connector.getStateType();
+ Object diffState = connectorTracker.getDiffState(connector);
+ if (diffState == null) {
+ diffState = new JSONObject();
+ // Use an empty state object as reference for full
+ // repaints
+ boolean emptyInitialState = JavaScriptConnectorState.class
+ .isAssignableFrom(stateType);
+ if (!emptyInitialState) {
+ try {
+ SharedState referenceState = stateType.newInstance();
+ diffState = JsonCodec.encode(referenceState, null,
+ stateType, root.getConnectorTracker());
+ } catch (Exception e) {
+ getLogger().log(
+ Level.WARNING,
+ "Error creating reference object for state of type "
+ + stateType.getName());
+ }
+ }
+ connectorTracker.setDiffState(connector, diffState);
+ }
+ JSONObject stateJson = (JSONObject) JsonCodec.encode(state, diffState,
+ stateType, root.getConnectorTracker());
+ return stateJson;
+ }
+
/**
* Resolves a resource URI, registering the URI with this
* {@code AbstractCommunicationManager} if needed and returns a fully
diff --git a/server/src/com/vaadin/terminal/gwt/server/ApplicationServlet.java b/server/src/com/vaadin/terminal/gwt/server/ApplicationServlet.java
index 06bc70872d..52885f3fbb 100644
--- a/server/src/com/vaadin/terminal/gwt/server/ApplicationServlet.java
+++ b/server/src/com/vaadin/terminal/gwt/server/ApplicationServlet.java
@@ -20,6 +20,7 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import com.vaadin.Application;
+import com.vaadin.terminal.DefaultRootProvider;
import com.vaadin.terminal.gwt.server.ServletPortletHelper.ApplicationClassException;
/**
@@ -69,6 +70,7 @@ public class ApplicationServlet extends AbstractApplicationServlet {
// Creates a new application instance
try {
final Application application = getApplicationClass().newInstance();
+ application.addRootProvider(new DefaultRootProvider());
return application;
} catch (final IllegalAccessException e) {
diff --git a/server/src/com/vaadin/terminal/gwt/server/ClientConnector.java b/server/src/com/vaadin/terminal/gwt/server/ClientConnector.java
index c9fe2563f9..24675c9e45 100644
--- a/server/src/com/vaadin/terminal/gwt/server/ClientConnector.java
+++ b/server/src/com/vaadin/terminal/gwt/server/ClientConnector.java
@@ -18,6 +18,8 @@ package com.vaadin.terminal.gwt.server;
import java.util.Collection;
import java.util.List;
+import com.vaadin.external.json.JSONException;
+import com.vaadin.external.json.JSONObject;
import com.vaadin.shared.Connector;
import com.vaadin.shared.communication.SharedState;
import com.vaadin.terminal.AbstractClientConnector;
@@ -63,17 +65,39 @@ public interface ClientConnector extends Connector, RpcTarget {
public ClientConnector getParent();
/**
- * Requests that the connector should be repainted as soon as possible.
+ * @deprecated As of 7.0.0, use {@link #markAsDirty()} instead
*/
+ @Deprecated
public void requestRepaint();
/**
- * Causes a repaint of this connector, and all connectors below it.
+ * Marks that this connector's state might have changed. When the framework
+ * is about to send new data to the client-side, it will run
+ * {@link #beforeClientResponse(boolean)} followed by {@link #encodeState()}
+ * for all connectors that are marked as dirty and send any updated state
+ * info to the client.
*
+ * @since 7.0.0
+ */
+ public void markAsDirty();
+
+ /**
+ * @deprecated As of 7.0.0, use {@link #markAsDirtyRecursive()} instead
+ */
+ @Deprecated
+ public void requestRepaintAll();
+
+ /**
+ * Causes this connector and all connectors below it to be marked as dirty.
+ * <p>
* This should only be used in special cases, e.g when the state of a
* descendant depends on the state of an ancestor.
+ *
+ * @see #markAsDirty()
+ *
+ * @since 7.0.0
*/
- public void requestRepaintAll();
+ public void markAsDirtyRecursive();
/**
* Sets the parent connector of the connector.
@@ -177,4 +201,16 @@ public interface ClientConnector extends Connector, RpcTarget {
* @since 7.0
*/
public void beforeClientResponse(boolean initial);
+
+ /**
+ * Called by the framework to encode the state to a JSONObject. This is
+ * typically done by calling the static method
+ * {@link AbstractCommunicationManager#encodeState(ClientConnector, SharedState)}
+ * .
+ *
+ * @return a JSON object with the encoded connector state
+ * @throws JSONException
+ * if the state can not be encoded
+ */
+ public JSONObject encodeState() throws JSONException;
}
diff --git a/server/src/com/vaadin/terminal/gwt/server/DragAndDropService.java b/server/src/com/vaadin/terminal/gwt/server/DragAndDropService.java
index 56d5ed1393..221598171c 100644
--- a/server/src/com/vaadin/terminal/gwt/server/DragAndDropService.java
+++ b/server/src/com/vaadin/terminal/gwt/server/DragAndDropService.java
@@ -31,6 +31,8 @@ import com.vaadin.event.dd.DropTarget;
import com.vaadin.event.dd.TargetDetails;
import com.vaadin.event.dd.TargetDetailsImpl;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
+import com.vaadin.external.json.JSONException;
+import com.vaadin.external.json.JSONObject;
import com.vaadin.shared.ApplicationConstants;
import com.vaadin.shared.communication.SharedState;
import com.vaadin.shared.ui.dd.DragEventType;
@@ -235,12 +237,6 @@ public class DragAndDropService implements VariableOwner, ClientConnector {
}
@Override
- public SharedState getState() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
public String getConnectorId() {
return ApplicationConstants.DRAG_AND_DROP_CONNECTOR_ID;
}
@@ -268,7 +264,13 @@ public class DragAndDropService implements VariableOwner, ClientConnector {
}
@Override
+ @Deprecated
public void requestRepaint() {
+ markAsDirty();
+ }
+
+ @Override
+ public void markAsDirty() {
// TODO Auto-generated method stub
}
@@ -280,7 +282,13 @@ public class DragAndDropService implements VariableOwner, ClientConnector {
}
@Override
+ @Deprecated
public void requestRepaintAll() {
+ markAsDirtyRecursive();
+ }
+
+ @Override
+ public void markAsDirtyRecursive() {
// TODO Auto-generated method stub
}
@@ -327,4 +335,10 @@ public class DragAndDropService implements VariableOwner, ClientConnector {
public void beforeClientResponse(boolean initial) {
// Nothing to do
}
+
+ @Override
+ public JSONObject encodeState() throws JSONException {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
diff --git a/server/src/com/vaadin/terminal/gwt/server/JsonCodec.java b/server/src/com/vaadin/terminal/gwt/server/JsonCodec.java
index 884e01f9a5..1eee9c4f52 100644
--- a/server/src/com/vaadin/terminal/gwt/server/JsonCodec.java
+++ b/server/src/com/vaadin/terminal/gwt/server/JsonCodec.java
@@ -21,9 +21,10 @@ import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.Serializable;
import java.lang.reflect.Array;
+import java.lang.reflect.Field;
import java.lang.reflect.GenericArrayType;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.WildcardType;
@@ -55,6 +56,107 @@ import com.vaadin.ui.ConnectorTracker;
*/
public class JsonCodec implements Serializable {
+ public static interface BeanProperty {
+ public Object getValue(Object bean) throws Exception;
+
+ public void setValue(Object bean, Object value) throws Exception;
+
+ public String getName();
+
+ public Type getType();
+ }
+
+ private static class FieldProperty implements BeanProperty {
+ private final Field field;
+
+ public FieldProperty(Field field) {
+ this.field = field;
+ }
+
+ @Override
+ public Object getValue(Object bean) throws Exception {
+ return field.get(bean);
+ }
+
+ @Override
+ public void setValue(Object bean, Object value) throws Exception {
+ field.set(bean, value);
+ }
+
+ @Override
+ public String getName() {
+ return field.getName();
+ }
+
+ @Override
+ public Type getType() {
+ return field.getGenericType();
+ }
+
+ public static Collection<FieldProperty> find(Class<?> type)
+ throws IntrospectionException {
+ Collection<FieldProperty> properties = new ArrayList<FieldProperty>();
+
+ Field[] fields = type.getFields();
+ for (Field field : fields) {
+ if (!Modifier.isStatic(field.getModifiers())) {
+ properties.add(new FieldProperty(field));
+ }
+ }
+
+ return properties;
+ }
+
+ }
+
+ private static class MethodProperty implements BeanProperty {
+ private final PropertyDescriptor pd;
+
+ public MethodProperty(PropertyDescriptor pd) {
+ this.pd = pd;
+ }
+
+ @Override
+ public Object getValue(Object bean) throws Exception {
+ Method readMethod = pd.getReadMethod();
+ return readMethod.invoke(bean);
+ }
+
+ @Override
+ public void setValue(Object bean, Object value) throws Exception {
+ pd.getWriteMethod().invoke(bean, value);
+ }
+
+ @Override
+ public String getName() {
+ String fieldName = pd.getWriteMethod().getName().substring(3);
+ fieldName = Character.toLowerCase(fieldName.charAt(0))
+ + fieldName.substring(1);
+ return fieldName;
+ }
+
+ public static Collection<MethodProperty> find(Class<?> type)
+ throws IntrospectionException {
+ Collection<MethodProperty> properties = new ArrayList<MethodProperty>();
+
+ for (PropertyDescriptor pd : Introspector.getBeanInfo(type)
+ .getPropertyDescriptors()) {
+ if (pd.getReadMethod() == null || pd.getWriteMethod() == null) {
+ continue;
+ }
+
+ properties.add(new MethodProperty(pd));
+ }
+ return properties;
+ }
+
+ @Override
+ public Type getType() {
+ return pd.getReadMethod().getGenericReturnType();
+ }
+
+ }
+
private static Map<Class<?>, String> typeToTransportType = new HashMap<Class<?>, String>();
/**
@@ -468,27 +570,6 @@ public class JsonCodec implements Serializable {
return set;
}
- /**
- * Returns the name that should be used as field name in the JSON. We strip
- * "set" from the setter, keeping the result - this is easy to do on both
- * server and client, avoiding some issues with cASE. E.g setZIndex()
- * becomes "zIndex". Also ensures that both getter and setter are present,
- * returning null otherwise.
- *
- * @param pd
- * @return the name to be used or null if both getter and setter are not
- * found.
- */
- static String getTransportFieldName(PropertyDescriptor pd) {
- if (pd.getReadMethod() == null || pd.getWriteMethod() == null) {
- return null;
- }
- String fieldName = pd.getWriteMethod().getName().substring(3);
- fieldName = Character.toLowerCase(fieldName.charAt(0))
- + fieldName.substring(1);
- return fieldName;
- }
-
private static Object decodeObject(Type targetType,
JSONObject serializedObject, ConnectorTracker connectorTracker)
throws JSONException {
@@ -497,31 +578,19 @@ public class JsonCodec implements Serializable {
try {
Object decodedObject = targetClass.newInstance();
- for (PropertyDescriptor pd : Introspector.getBeanInfo(targetClass)
- .getPropertyDescriptors()) {
+ for (BeanProperty property : getProperties(targetClass)) {
- String fieldName = getTransportFieldName(pd);
- if (fieldName == null) {
- continue;
- }
+ String fieldName = property.getName();
Object encodedFieldValue = serializedObject.get(fieldName);
- Type fieldType = pd.getReadMethod().getGenericReturnType();
+ Type fieldType = property.getType();
Object decodedFieldValue = decodeInternalOrCustomType(
fieldType, encodedFieldValue, connectorTracker);
- pd.getWriteMethod().invoke(decodedObject, decodedFieldValue);
+ property.setValue(decodedObject, decodedFieldValue);
}
return decodedObject;
- } catch (IllegalArgumentException e) {
- throw new JSONException(e);
- } catch (IllegalAccessException e) {
- throw new JSONException(e);
- } catch (InvocationTargetException e) {
- throw new JSONException(e);
- } catch (InstantiationException e) {
- throw new JSONException(e);
- } catch (IntrospectionException e) {
+ } catch (Exception e) {
throw new JSONException(e);
}
}
@@ -602,28 +671,36 @@ public class JsonCodec implements Serializable {
return JSONObject.NULL;
}
+ public static Collection<BeanProperty> getProperties(Class<?> type)
+ throws IntrospectionException {
+ Collection<BeanProperty> properties = new ArrayList<BeanProperty>();
+
+ properties.addAll(MethodProperty.find(type));
+ properties.addAll(FieldProperty.find(type));
+
+ return properties;
+ }
+
private static Object encodeObject(Object value, JSONObject diffState,
ConnectorTracker connectorTracker) throws JSONException {
JSONObject jsonMap = new JSONObject();
try {
- for (PropertyDescriptor pd : Introspector.getBeanInfo(
- value.getClass()).getPropertyDescriptors()) {
- String fieldName = getTransportFieldName(pd);
- if (fieldName == null) {
- continue;
- }
- Method getterMethod = pd.getReadMethod();
+ for (BeanProperty property : getProperties(value.getClass())) {
+ String fieldName = property.getName();
// We can't use PropertyDescriptor.getPropertyType() as it does
// not support generics
- Type fieldType = getterMethod.getGenericReturnType();
- Object fieldValue = getterMethod.invoke(value, (Object[]) null);
+ Type fieldType = property.getType();
+ Object fieldValue = property.getValue(value);
boolean equals = false;
Object diffStateValue = null;
- if (diffState != null) {
+ if (diffState != null && diffState.has(fieldName)) {
diffStateValue = diffState.get(fieldName);
Object referenceFieldValue = decodeInternalOrCustomType(
fieldType, diffStateValue, connectorTracker);
+ if (JSONObject.NULL.equals(diffStateValue)) {
+ diffStateValue = null;
+ }
equals = equals(fieldValue, referenceFieldValue);
}
if (!equals) {
diff --git a/server/src/com/vaadin/terminal/gwt/server/WebBrowser.java b/server/src/com/vaadin/terminal/gwt/server/WebBrowser.java
index 90aef4283d..37bc81cfcf 100644
--- a/server/src/com/vaadin/terminal/gwt/server/WebBrowser.java
+++ b/server/src/com/vaadin/terminal/gwt/server/WebBrowser.java
@@ -20,7 +20,6 @@ import java.util.Date;
import java.util.Locale;
import com.vaadin.shared.VBrowserDetails;
-import com.vaadin.terminal.Terminal;
import com.vaadin.terminal.WrappedRequest;
/**
@@ -30,7 +29,7 @@ import com.vaadin.terminal.WrappedRequest;
*
* @author Vaadin Ltd.
*/
-public class WebBrowser implements Terminal {
+public class WebBrowser {
private int screenHeight = 0;
private int screenWidth = 0;
@@ -48,34 +47,21 @@ public class WebBrowser implements Terminal {
private long clientServerTimeDelta;
/**
- * There is no default-theme for this terminal type.
+ * Gets the height of the screen in pixels. This is the full screen
+ * resolution and not the height available for the application.
*
- * @return Always returns null.
+ * @return the height of the screen in pixels.
*/
-
- @Override
- public String getDefaultTheme() {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.terminal.Terminal#getScreenHeight()
- */
-
- @Override
public int getScreenHeight() {
return screenHeight;
}
- /*
- * (non-Javadoc)
+ /**
+ * Gets the width of the screen in pixels. This is the full screen
+ * resolution and not the width available for the application.
*
- * @see com.vaadin.terminal.Terminal#getScreenWidth()
+ * @return the width of the screen in pixels.
*/
-
- @Override
public int getScreenWidth() {
return screenWidth;
}
diff --git a/server/src/com/vaadin/ui/AbsoluteLayout.java b/server/src/com/vaadin/ui/AbsoluteLayout.java
index a3bc577fe3..56bbd19852 100644
--- a/server/src/com/vaadin/ui/AbsoluteLayout.java
+++ b/server/src/com/vaadin/ui/AbsoluteLayout.java
@@ -61,7 +61,7 @@ public class AbsoluteLayout extends AbstractLayout implements
}
@Override
- public AbsoluteLayoutState getState() {
+ protected AbsoluteLayoutState getState() {
return (AbsoluteLayoutState) super.getState();
}
@@ -153,7 +153,7 @@ public class AbsoluteLayout extends AbstractLayout implements
internalRemoveComponent(c);
throw e;
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -197,7 +197,7 @@ public class AbsoluteLayout extends AbstractLayout implements
public void removeComponent(Component c) {
internalRemoveComponent(c);
super.removeComponent(c);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -245,7 +245,7 @@ public class AbsoluteLayout extends AbstractLayout implements
private void internalSetPosition(Component component,
ComponentPosition position) {
componentToCoordinates.put(component, position);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -322,7 +322,7 @@ public class AbsoluteLayout extends AbstractLayout implements
}
}
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -363,7 +363,7 @@ public class AbsoluteLayout extends AbstractLayout implements
public void setTop(Float topValue, Unit topUnits) {
this.topValue = topValue;
this.topUnits = topUnits;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -379,7 +379,7 @@ public class AbsoluteLayout extends AbstractLayout implements
public void setRight(Float rightValue, Unit rightUnits) {
this.rightValue = rightValue;
this.rightUnits = rightUnits;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -395,7 +395,7 @@ public class AbsoluteLayout extends AbstractLayout implements
public void setBottom(Float bottomValue, Unit bottomUnits) {
this.bottomValue = bottomValue;
this.bottomUnits = bottomUnits;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -411,7 +411,7 @@ public class AbsoluteLayout extends AbstractLayout implements
public void setLeft(Float leftValue, Unit leftUnits) {
this.leftValue = leftValue;
this.leftUnits = leftUnits;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -422,7 +422,7 @@ public class AbsoluteLayout extends AbstractLayout implements
*/
public void setZIndex(int zIndex) {
this.zIndex = zIndex;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -434,7 +434,7 @@ public class AbsoluteLayout extends AbstractLayout implements
*/
public void setTopValue(Float topValue) {
this.topValue = topValue;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -468,7 +468,7 @@ public class AbsoluteLayout extends AbstractLayout implements
*/
public void setRightValue(Float rightValue) {
this.rightValue = rightValue;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -492,7 +492,7 @@ public class AbsoluteLayout extends AbstractLayout implements
*/
public void setBottomValue(Float bottomValue) {
this.bottomValue = bottomValue;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -516,7 +516,7 @@ public class AbsoluteLayout extends AbstractLayout implements
*/
public void setLeftValue(Float leftValue) {
this.leftValue = leftValue;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -538,7 +538,7 @@ public class AbsoluteLayout extends AbstractLayout implements
*/
public void setTopUnits(Unit topUnits) {
this.topUnits = topUnits;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -560,7 +560,7 @@ public class AbsoluteLayout extends AbstractLayout implements
*/
public void setRightUnits(Unit rightUnits) {
this.rightUnits = rightUnits;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -582,7 +582,7 @@ public class AbsoluteLayout extends AbstractLayout implements
*/
public void setBottomUnits(Unit bottomUnits) {
this.bottomUnits = bottomUnits;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -604,7 +604,7 @@ public class AbsoluteLayout extends AbstractLayout implements
*/
public void setLeftUnits(Unit leftUnits) {
this.leftUnits = leftUnits;
- requestRepaint();
+ markAsDirty();
}
/**
diff --git a/server/src/com/vaadin/ui/AbstractComponent.java b/server/src/com/vaadin/ui/AbstractComponent.java
index cde5217ca1..b1393488f7 100644
--- a/server/src/com/vaadin/ui/AbstractComponent.java
+++ b/server/src/com/vaadin/ui/AbstractComponent.java
@@ -121,34 +121,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
return getState().getDebugId();
}
- /**
- * Gets style for component. Multiple styles are joined with spaces.
- *
- * @return the component's styleValue of property style.
- * @deprecated Use getStyleName() instead; renamed for consistency and to
- * indicate that "style" should not be used to switch client
- * side implementation, only to style the component.
- */
- @Deprecated
- public String getStyle() {
- return getStyleName();
- }
-
- /**
- * Sets and replaces all previous style names of the component. This method
- * will trigger a {@link RepaintRequestEvent}.
- *
- * @param style
- * the new style of the component.
- * @deprecated Use setStyleName() instead; renamed for consistency and to
- * indicate that "style" should not be used to switch client
- * side implementation, only to style the component.
- */
- @Deprecated
- public void setStyle(String style) {
- setStyleName(style);
- }
-
/*
* Gets the component's style. Don't add a JavaDoc comment here, we use the
* default documentation from implemented interface.
@@ -176,7 +148,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
public void setStyleName(String style) {
if (style == null || "".equals(style)) {
getState().setStyles(null);
- requestRepaint();
return;
}
if (getState().getStyles() == null) {
@@ -190,7 +161,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
styles.add(part);
}
}
- requestRepaint();
}
@Override
@@ -212,7 +182,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
List<String> styles = getState().getStyles();
if (!styles.contains(style)) {
styles.add(style);
- requestRepaint();
}
}
@@ -225,7 +194,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
getState().getStyles().remove(part);
}
}
- requestRepaint();
}
}
@@ -249,7 +217,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
@Override
public void setCaption(String caption) {
getState().setCaption(caption);
- requestRepaint();
}
/*
@@ -295,7 +262,7 @@ public abstract class AbstractComponent extends AbstractClientConnector
this.locale = locale;
// FIXME: Reload value if there is a converter
- requestRepaint();
+ markAsDirty();
}
/*
@@ -317,7 +284,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
@Override
public void setIcon(Resource icon) {
getState().setIcon(ResourceReference.create(icon));
- requestRepaint();
}
/*
@@ -337,10 +303,7 @@ public abstract class AbstractComponent extends AbstractClientConnector
*/
@Override
public void setEnabled(boolean enabled) {
- if (getState().isEnabled() != enabled) {
- getState().setEnabled(enabled);
- requestRepaint();
- }
+ getState().setEnabled(enabled);
}
/*
@@ -383,7 +346,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
*/
public void setImmediate(boolean immediate) {
getState().setImmediate(immediate);
- requestRepaint();
}
/*
@@ -408,11 +370,10 @@ public abstract class AbstractComponent extends AbstractClientConnector
}
getState().setVisible(visible);
- requestRepaint();
if (getParent() != null) {
// Must always repaint the parent (at least the hierarchy) when
// visibility of a child component changes.
- getParent().requestRepaint();
+ getParent().markAsDirty();
}
}
@@ -491,7 +452,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
*/
public void setDescription(String description) {
getState().setDescription(description);
- requestRepaint();
}
/*
@@ -575,7 +535,7 @@ public abstract class AbstractComponent extends AbstractClientConnector
public void setComponentError(ErrorMessage componentError) {
this.componentError = componentError;
fireComponentErrorEvent();
- requestRepaint();
+ markAsDirty();
}
/*
@@ -594,7 +554,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
@Override
public void setReadOnly(boolean readOnly) {
getState().setReadOnly(readOnly);
- requestRepaint();
}
/*
@@ -713,7 +672,7 @@ public abstract class AbstractComponent extends AbstractClientConnector
* @return updated component shared state
*/
@Override
- public ComponentState getState() {
+ protected ComponentState getState() {
return (ComponentState) super.getState();
}
@@ -746,17 +705,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
}
}
- /* Documentation copied from interface */
- @Override
- public void requestRepaint() {
- // Invisible components (by flag in this particular component) do not
- // need repaints
- if (!getState().isVisible()) {
- return;
- }
- super.requestRepaint();
- }
-
/* General event framework */
private static final Method COMPONENT_EVENT_METHOD = ReflectTools
@@ -803,7 +751,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
if (needRepaint) {
getState().addRegisteredEventListener(eventIdentifier);
- requestRepaint();
}
}
@@ -852,7 +799,6 @@ public abstract class AbstractComponent extends AbstractClientConnector
eventRouter.removeListener(eventType, target);
if (!eventRouter.hasListeners(eventType)) {
getState().removeRegisteredEventListener(eventIdentifier);
- requestRepaint();
}
}
}
@@ -1159,7 +1105,7 @@ public abstract class AbstractComponent extends AbstractClientConnector
}
this.height = height;
heightUnit = unit;
- requestRepaint();
+ markAsDirty();
// ComponentSizeValidator.setHeightLocation(this);
}
@@ -1197,7 +1143,7 @@ public abstract class AbstractComponent extends AbstractClientConnector
}
this.width = width;
widthUnit = unit;
- requestRepaint();
+ markAsDirty();
// ComponentSizeValidator.setWidthLocation(this);
}
diff --git a/server/src/com/vaadin/ui/AbstractComponentContainer.java b/server/src/com/vaadin/ui/AbstractComponentContainer.java
index 7450c76fda..4939eb1265 100644
--- a/server/src/com/vaadin/ui/AbstractComponentContainer.java
+++ b/server/src/com/vaadin/ui/AbstractComponentContainer.java
@@ -212,7 +212,7 @@ public abstract class AbstractComponentContainer extends AbstractComponent
// If the visibility state is toggled it might affect all children
// aswell, e.g. make container visible should make children visible if
// they were only hidden because the container was hidden.
- requestRepaintAll();
+ markAsDirtyRecursive();
}
@Override
@@ -306,12 +306,7 @@ public abstract class AbstractComponentContainer extends AbstractComponent
private void repaintChildTrees(Collection<Component> dirtyChildren) {
for (Component c : dirtyChildren) {
- if (c instanceof ComponentContainer) {
- ComponentContainer cc = (ComponentContainer) c;
- cc.requestRepaintAll();
- } else {
- c.requestRepaint();
- }
+ c.markAsDirtyRecursive();
}
}
diff --git a/server/src/com/vaadin/ui/AbstractField.java b/server/src/com/vaadin/ui/AbstractField.java
index 67a1826100..5123d08da9 100644
--- a/server/src/com/vaadin/ui/AbstractField.java
+++ b/server/src/com/vaadin/ui/AbstractField.java
@@ -97,14 +97,9 @@ public abstract class AbstractField<T> extends AbstractComponent implements
private LinkedList<Validator> validators = null;
/**
- * Auto commit mode.
+ * True if field is in buffered mode, false otherwise
*/
- private boolean writeThroughMode = true;
-
- /**
- * Reads the value from data-source, when it is not modified.
- */
- private boolean readThroughMode = true;
+ private boolean buffered;
/**
* Flag to indicate that the field is currently committing its value to the
@@ -306,7 +301,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
// Sets the buffering state
currentBufferedSourceException = new Buffered.SourceException(
this, e);
- requestRepaint();
+ markAsDirty();
// Throws the source exception
throw currentBufferedSourceException;
@@ -321,7 +316,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
fireValueChange(false);
} else if (wasModified) {
// If the value did not change, but the modification status did
- requestRepaint();
+ markAsDirty();
}
}
}
@@ -345,7 +340,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
*/
private T getFieldValue() {
// Give the value from abstract buffers if the field if possible
- if (dataSource == null || !isReadThrough() || isModified()) {
+ if (dataSource == null || isBuffered() || isModified()) {
return getInternalValue();
}
@@ -365,92 +360,6 @@ public abstract class AbstractField<T> extends AbstractComponent implements
private void setModified(boolean modified) {
getState().setModified(modified);
- requestRepaint();
- }
-
- /*
- * Tests if the field is in write-through mode. Don't add a JavaDoc comment
- * here, we use the default documentation from the implemented interface.
- */
- @Override
- public boolean isWriteThrough() {
- return writeThroughMode;
- }
-
- /**
- * Sets the field's write-through mode to the specified status. When
- * switching the write-through mode on, a {@link #commit()} will be
- * performed.
- *
- * @see #setBuffered(boolean) for an easier way to control read through and
- * write through modes
- *
- * @param writeThrough
- * Boolean value to indicate if the object should be in
- * write-through mode after the call.
- * @throws SourceException
- * If the operation fails because of an exception is thrown by
- * the data source.
- * @throws InvalidValueException
- * If the implicit commit operation fails because of a
- * validation error.
- * @deprecated Use {@link #setBuffered(boolean)} instead. Note that
- * setReadThrough(true), setWriteThrough(true) equals
- * setBuffered(false)
- */
- @Override
- @Deprecated
- public void setWriteThrough(boolean writeThrough)
- throws Buffered.SourceException, InvalidValueException {
- if (writeThroughMode == writeThrough) {
- return;
- }
- writeThroughMode = writeThrough;
- if (writeThroughMode) {
- commit();
- }
- }
-
- /*
- * Tests if the field is in read-through mode. Don't add a JavaDoc comment
- * here, we use the default documentation from the implemented interface.
- */
- @Override
- public boolean isReadThrough() {
- return readThroughMode;
- }
-
- /**
- * Sets the field's read-through mode to the specified status. When
- * switching read-through mode on, the object's value is updated from the
- * data source.
- *
- * @see #setBuffered(boolean) for an easier way to control read through and
- * write through modes
- *
- * @param readThrough
- * Boolean value to indicate if the object should be in
- * read-through mode after the call.
- *
- * @throws SourceException
- * If the operation fails because of an exception is thrown by
- * the data source. The cause is included in the exception.
- * @deprecated Use {@link #setBuffered(boolean)} instead. Note that
- * setReadThrough(true), setWriteThrough(true) equals
- * setBuffered(false)
- */
- @Override
- @Deprecated
- public void setReadThrough(boolean readThrough)
- throws Buffered.SourceException {
- if (readThroughMode == readThrough) {
- return;
- }
- readThroughMode = readThrough;
- if (!isModified() && readThroughMode && getPropertyDataSource() != null) {
- setInternalValue(convertFromDataSource(getDataSourceValue()));
- fireValueChange(false);
- }
}
/**
@@ -460,34 +369,35 @@ public abstract class AbstractField<T> extends AbstractComponent implements
* property data source until {@link #commit()} is called.
* </p>
* <p>
- * Changing buffered mode will change the read through and write through
- * state for the field.
+ * Setting buffered mode from true to false will commit any pending changes.
* </p>
* <p>
- * Mixing calls to {@link #setBuffered(boolean)} and
- * {@link #setReadThrough(boolean)} or {@link #setWriteThrough(boolean)} is
- * generally a bad idea.
+ *
* </p>
*
+ * @since 7.0.0
* @param buffered
* true if buffered mode should be turned on, false otherwise
*/
@Override
public void setBuffered(boolean buffered) {
- setReadThrough(!buffered);
- setWriteThrough(!buffered);
+ if (this.buffered == buffered) {
+ return;
+ }
+ this.buffered = buffered;
+ if (!buffered) {
+ commit();
+ }
}
/**
* Checks the buffered mode of this Field.
- * <p>
- * This method only returns true if both read and write buffering is used.
*
* @return true if buffered mode is on, false otherwise
*/
@Override
public boolean isBuffered() {
- return !isReadThrough() && !isWriteThrough();
+ return buffered;
}
/* Property interface implementation */
@@ -607,8 +517,8 @@ public abstract class AbstractField<T> extends AbstractComponent implements
setModified(dataSource != null);
valueWasModifiedByDataSourceDuringCommit = false;
- // In write through mode , try to commit
- if (isWriteThrough() && dataSource != null
+ // In not buffering, try to commit
+ if (!isBuffered() && dataSource != null
&& (isInvalidCommitted() || isValid())) {
try {
@@ -625,7 +535,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
// Sets the buffering state
currentBufferedSourceException = new Buffered.SourceException(
this, e);
- requestRepaint();
+ markAsDirty();
// Throws the source exception
throw currentBufferedSourceException;
@@ -895,7 +805,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
validators = new LinkedList<Validator>();
}
validators.add(validator);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -923,7 +833,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
if (validators != null) {
validators.remove(validator);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -933,7 +843,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
if (validators != null) {
validators.clear();
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1160,7 +1070,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
protected void fireValueChange(boolean repaintIsNotNeeded) {
fireEvent(new AbstractField.ValueChangeEvent(this));
if (!repaintIsNotNeeded) {
- requestRepaint();
+ markAsDirty();
}
}
@@ -1190,7 +1100,6 @@ public abstract class AbstractField<T> extends AbstractComponent implements
@Override
public void readOnlyStatusChange(Property.ReadOnlyStatusChangeEvent event) {
getState().setPropertyReadOnly(event.getProperty().isReadOnly());
- requestRepaint();
}
/**
@@ -1267,7 +1176,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
*/
@Override
public void valueChange(Property.ValueChangeEvent event) {
- if (isReadThrough()) {
+ if (!isBuffered()) {
if (committingValueToDataSource) {
boolean propertyNotifiesOfTheBufferedValue = equals(event
.getProperty().getValue(), getInternalValue());
@@ -1322,7 +1231,6 @@ public abstract class AbstractField<T> extends AbstractComponent implements
@Override
public void setTabIndex(int tabIndex) {
getState().setTabIndex(tabIndex);
- requestRepaint();
}
/**
@@ -1356,7 +1264,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
protected void setInternalValue(T newValue) {
value = newValue;
if (validators != null && !validators.isEmpty()) {
- requestRepaint();
+ markAsDirty();
}
}
@@ -1371,7 +1279,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
if (!isListeningToPropertyEvents) {
addPropertyListeners();
- if (!isModified() && isReadThrough()) {
+ if (!isModified() && !isBuffered()) {
// Update value from data source
discard();
}
@@ -1425,7 +1333,6 @@ public abstract class AbstractField<T> extends AbstractComponent implements
@Override
public void setRequired(boolean required) {
getState().setRequired(required);
- requestRepaint();
}
/**
@@ -1440,7 +1347,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
@Override
public void setRequiredError(String requiredMessage) {
requiredError = requiredMessage;
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -1468,7 +1375,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
*/
public void setConversionError(String valueConversionError) {
this.conversionError = valueConversionError;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1510,7 +1417,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
*/
public void setValidationVisible(boolean validateAutomatically) {
if (validationVisible != validateAutomatically) {
- requestRepaint();
+ markAsDirty();
validationVisible = validateAutomatically;
}
}
@@ -1523,7 +1430,7 @@ public abstract class AbstractField<T> extends AbstractComponent implements
public void setCurrentBufferedSourceException(
Buffered.SourceException currentBufferedSourceException) {
this.currentBufferedSourceException = currentBufferedSourceException;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1611,11 +1518,11 @@ public abstract class AbstractField<T> extends AbstractComponent implements
*/
public void setConverter(Converter<T, ?> converter) {
this.converter = (Converter<T, Object>) converter;
- requestRepaint();
+ markAsDirty();
}
@Override
- public AbstractFieldState getState() {
+ protected AbstractFieldState getState() {
return (AbstractFieldState) super.getState();
}
diff --git a/server/src/com/vaadin/ui/AbstractJavaScriptComponent.java b/server/src/com/vaadin/ui/AbstractJavaScriptComponent.java
index c442bf2204..e19bdf1b2b 100644
--- a/server/src/com/vaadin/ui/AbstractJavaScriptComponent.java
+++ b/server/src/com/vaadin/ui/AbstractJavaScriptComponent.java
@@ -34,9 +34,10 @@ import com.vaadin.terminal.JavaScriptCallbackHelper;
* , then <code>com_example_SuperComponent</code> will also be attempted if
* <code>com_example_MyComponent</code> has not been defined.
* <p>
- * JavaScript components have a very simple GWT widget ({@link JavaScriptWidget}
- * ) just consisting of a <code>div</code> element to which the JavaScript code
- * should initialize its own user interface.
+ * JavaScript components have a very simple GWT widget (
+ * {@link com.vaadin.terminal.gwt.client.ui.JavaScriptWidget} ) just consisting
+ * of a <code>div</code> element to which the JavaScript code should initialize
+ * its own user interface.
* <p>
* The initialization function will be called with <code>this</code> pointing to
* a connector wrapper object providing integration to Vaadin with the following
@@ -79,7 +80,8 @@ import com.vaadin.terminal.JavaScriptCallbackHelper;
* functions is described bellow.</li>
* <li><code>translateVaadinUri(uri)</code> - Translates a Vaadin URI to a URL
* that can be used in the browser. This is just way of accessing
- * {@link ApplicationConnection#translateVaadinUri(String)}</li>
+ * {@link com.vaadin.terminal.gwt.client.ApplicationConnection#translateVaadinUri(String)}
+ * </li>
* </ul>
* The connector wrapper also supports these special functions:
* <ul>
@@ -90,9 +92,8 @@ import com.vaadin.terminal.JavaScriptCallbackHelper;
* {@link #addFunction(String, JavaScriptFunction)} on the server will
* automatically be present as a function that triggers the registered function
* on the server.</li>
- * <li>Any field name referred to using
- * {@link #callFunction(String, Object...)} on the server will be called if a
- * function has been assigned to the field.</li>
+ * <li>Any field name referred to using {@link #callFunction(String, Object...)}
+ * on the server will be called if a function has been assigned to the field.</li>
* </ul>
* <p>
*
@@ -168,7 +169,7 @@ public abstract class AbstractJavaScriptComponent extends AbstractComponent {
}
@Override
- public JavaScriptComponentState getState() {
+ protected JavaScriptComponentState getState() {
return (JavaScriptComponentState) super.getState();
}
}
diff --git a/server/src/com/vaadin/ui/AbstractLayout.java b/server/src/com/vaadin/ui/AbstractLayout.java
index c26812f3fc..6743b09211 100644
--- a/server/src/com/vaadin/ui/AbstractLayout.java
+++ b/server/src/com/vaadin/ui/AbstractLayout.java
@@ -17,7 +17,6 @@
package com.vaadin.ui;
import com.vaadin.shared.ui.AbstractLayoutState;
-import com.vaadin.ui.Layout.MarginHandler;
/**
* An abstract class that defines default implementation for the {@link Layout}
@@ -26,62 +25,12 @@ import com.vaadin.ui.Layout.MarginHandler;
* @author Vaadin Ltd.
* @since 5.0
*/
-@SuppressWarnings("serial")
public abstract class AbstractLayout extends AbstractComponentContainer
- implements Layout, MarginHandler {
-
- protected MarginInfo margins = new MarginInfo(false);
+ implements Layout {
@Override
- public AbstractLayoutState getState() {
+ protected AbstractLayoutState getState() {
return (AbstractLayoutState) super.getState();
}
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.ui.Layout#setMargin(boolean)
- */
- @Override
- public void setMargin(boolean enabled) {
- margins.setMargins(enabled);
- getState().setMarginsBitmask(margins.getBitMask());
- requestRepaint();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.ui.Layout.MarginHandler#getMargin()
- */
- @Override
- public MarginInfo getMargin() {
- return margins;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.ui.Layout.MarginHandler#setMargin(MarginInfo)
- */
- @Override
- public void setMargin(MarginInfo marginInfo) {
- margins.setMargins(marginInfo);
- getState().setMarginsBitmask(margins.getBitMask());
- requestRepaint();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.ui.Layout#setMargin(boolean, boolean, boolean, boolean)
- */
- @Override
- public void setMargin(boolean topEnabled, boolean rightEnabled,
- boolean bottomEnabled, boolean leftEnabled) {
- margins.setMargins(topEnabled, rightEnabled, bottomEnabled, leftEnabled);
- getState().setMarginsBitmask(margins.getBitMask());
- requestRepaint();
- }
-
}
diff --git a/server/src/com/vaadin/ui/AbstractMedia.java b/server/src/com/vaadin/ui/AbstractMedia.java
index 51a3bcd2be..77c12ac045 100644
--- a/server/src/com/vaadin/ui/AbstractMedia.java
+++ b/server/src/com/vaadin/ui/AbstractMedia.java
@@ -33,7 +33,7 @@ import com.vaadin.terminal.gwt.server.ResourceReference;
public abstract class AbstractMedia extends AbstractComponent {
@Override
- public AbstractMediaState getState() {
+ protected AbstractMediaState getState() {
return (AbstractMediaState) super.getState();
}
@@ -66,7 +66,6 @@ public abstract class AbstractMedia extends AbstractComponent {
if (source != null) {
getState().getSources().add(new ResourceReference(source));
getState().getSourceTypes().add(source.getMIMEType());
- requestRepaint();
}
}
@@ -103,7 +102,6 @@ public abstract class AbstractMedia extends AbstractComponent {
*/
public void setShowControls(boolean showControls) {
getState().setShowControls(showControls);
- requestRepaint();
}
/**
@@ -126,7 +124,6 @@ public abstract class AbstractMedia extends AbstractComponent {
*/
public void setAltText(String altText) {
getState().setAltText(altText);
- requestRepaint();
}
/**
@@ -145,7 +142,6 @@ public abstract class AbstractMedia extends AbstractComponent {
*/
public void setHtmlContentAllowed(boolean htmlContentAllowed) {
getState().setHtmlContentAllowed(htmlContentAllowed);
- requestRepaint();
}
/**
@@ -164,7 +160,6 @@ public abstract class AbstractMedia extends AbstractComponent {
*/
public void setAutoplay(boolean autoplay) {
getState().setAutoplay(autoplay);
- requestRepaint();
}
/**
@@ -181,7 +176,6 @@ public abstract class AbstractMedia extends AbstractComponent {
*/
public void setMuted(boolean muted) {
getState().setMuted(muted);
- requestRepaint();
}
/**
diff --git a/server/src/com/vaadin/ui/AbstractOrderedLayout.java b/server/src/com/vaadin/ui/AbstractOrderedLayout.java
index a7cc780414..596bbb7ee2 100644
--- a/server/src/com/vaadin/ui/AbstractOrderedLayout.java
+++ b/server/src/com/vaadin/ui/AbstractOrderedLayout.java
@@ -25,6 +25,7 @@ import com.vaadin.event.LayoutEvents.LayoutClickNotifier;
import com.vaadin.shared.Connector;
import com.vaadin.shared.EventId;
import com.vaadin.shared.MouseEventDetails;
+import com.vaadin.shared.ui.MarginInfo;
import com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutServerRpc;
import com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutState;
import com.vaadin.shared.ui.orderedlayout.AbstractOrderedLayoutState.ChildComponentData;
@@ -32,7 +33,8 @@ import com.vaadin.terminal.Sizeable;
@SuppressWarnings("serial")
public abstract class AbstractOrderedLayout extends AbstractLayout implements
- Layout.AlignmentHandler, Layout.SpacingHandler, LayoutClickNotifier {
+ Layout.AlignmentHandler, Layout.SpacingHandler, LayoutClickNotifier,
+ Layout.MarginHandler {
private AbstractOrderedLayoutServerRpc rpc = new AbstractOrderedLayoutServerRpc() {
@@ -61,7 +63,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
}
@Override
- public AbstractOrderedLayoutState getState() {
+ protected AbstractOrderedLayoutState getState() {
return (AbstractOrderedLayoutState) super.getState();
}
@@ -142,13 +144,10 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
private void componentRemoved(Component c) {
getState().getChildData().remove(c);
- requestRepaint();
}
private void componentAdded(Component c) {
getState().getChildData().put(c, new ChildComponentData());
- requestRepaint();
-
}
/**
@@ -226,23 +225,10 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
components.add(newLocation, oldComponent);
}
- requestRepaint();
+ markAsDirty();
}
}
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.ui.Layout.AlignmentHandler#setComponentAlignment(com
- * .vaadin.ui.Component, int, int)
- */
- @Override
- public void setComponentAlignment(Component childComponent,
- int horizontalAlignment, int verticalAlignment) {
- Alignment a = new Alignment(horizontalAlignment + verticalAlignment);
- setComponentAlignment(childComponent, a);
- }
-
@Override
public void setComponentAlignment(Component childComponent,
Alignment alignment) {
@@ -251,7 +237,6 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
if (childData != null) {
// Alignments are bit masks
childData.setAlignmentBitmask(alignment.getBitMask());
- requestRepaint();
} else {
throw new IllegalArgumentException(
"Component must be added to layout before using setComponentAlignment()");
@@ -285,7 +270,6 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
@Override
public void setSpacing(boolean spacing) {
getState().setSpacing(spacing);
- requestRepaint();
}
/*
@@ -335,8 +319,7 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
}
childData.setExpandRatio(ratio);
- requestRepaint();
- };
+ }
/**
* Returns the expand ratio of given component.
@@ -392,4 +375,28 @@ public abstract class AbstractOrderedLayout extends AbstractLayout implements
return components.get(index);
}
+ @Override
+ public void setMargin(boolean enabled) {
+ setMargin(new MarginInfo(enabled));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.ui.Layout.MarginHandler#getMargin()
+ */
+ @Override
+ public MarginInfo getMargin() {
+ return new MarginInfo(getState().getMarginsBitmask());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.ui.Layout.MarginHandler#setMargin(MarginInfo)
+ */
+ @Override
+ public void setMargin(MarginInfo marginInfo) {
+ getState().setMarginsBitmask(marginInfo.getBitMask());
+ }
}
diff --git a/server/src/com/vaadin/ui/AbstractSelect.java b/server/src/com/vaadin/ui/AbstractSelect.java
index 19a74782c4..21ff7ba948 100644
--- a/server/src/com/vaadin/ui/AbstractSelect.java
+++ b/server/src/com/vaadin/ui/AbstractSelect.java
@@ -462,7 +462,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
if (!isNullSelectionAllowed()
&& (id == null || id == getNullSelectionItemId())) {
// skip empty selection if nullselection is not allowed
- requestRepaint();
+ markAsDirty();
} else if (id != null && containsId(id)) {
acceptedSelections.add(id);
}
@@ -470,7 +470,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
if (!isNullSelectionAllowed() && acceptedSelections.size() < 1) {
// empty selection not allowed, keep old value
- requestRepaint();
+ markAsDirty();
return;
}
@@ -498,7 +498,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
if (!isNullSelectionAllowed()
&& (clientSideSelectedKeys.length == 0
|| clientSideSelectedKeys[0] == null || clientSideSelectedKeys[0] == getNullSelectionItemId())) {
- requestRepaint();
+ markAsDirty();
return;
}
if (clientSideSelectedKeys.length == 0) {
@@ -513,7 +513,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
final Object id = itemIdMapper
.get(clientSideSelectedKeys[0]);
if (!isNullSelectionAllowed() && id == null) {
- requestRepaint();
+ markAsDirty();
} else if (id != null
&& id.equals(getNullSelectionItemId())) {
setValue(null, true);
@@ -975,7 +975,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
*/
setValue(null);
- requestRepaint();
+ markAsDirty();
}
}
@@ -1042,7 +1042,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
}
}
- requestRepaint();
+ markAsDirty();
}
}
@@ -1071,7 +1071,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
this.allowNewOptions = allowNewOptions;
- requestRepaint();
+ markAsDirty();
}
}
@@ -1087,7 +1087,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
public void setItemCaption(Object itemId, String caption) {
if (itemId != null) {
itemCaptions.put(itemId, caption);
- requestRepaint();
+ markAsDirty();
}
}
@@ -1173,7 +1173,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
} else {
itemIcons.put(itemId, icon);
}
- requestRepaint();
+ markAsDirty();
}
}
@@ -1239,7 +1239,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
public void setItemCaptionMode(ItemCaptionMode mode) {
if (mode != null) {
itemCaptionMode = mode;
- requestRepaint();
+ markAsDirty();
}
}
@@ -1302,13 +1302,13 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
if (propertyId != null) {
itemCaptionPropertyId = propertyId;
setItemCaptionMode(ITEM_CAPTION_MODE_PROPERTY);
- requestRepaint();
+ markAsDirty();
} else {
itemCaptionPropertyId = null;
if (getItemCaptionMode() == ITEM_CAPTION_MODE_PROPERTY) {
setItemCaptionMode(ITEM_CAPTION_MODE_EXPLICIT_DEFAULTS_ID);
}
- requestRepaint();
+ markAsDirty();
}
}
@@ -1360,7 +1360,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
throw new IllegalArgumentException(
"Property type must be assignable to Resource");
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1579,7 +1579,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
.containerPropertySetChange(event);
}
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1594,7 +1594,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
.containerItemSetChange(event);
}
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1665,7 +1665,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
public void setNullSelectionAllowed(boolean nullSelectionAllowed) {
if (nullSelectionAllowed != this.nullSelectionAllowed) {
this.nullSelectionAllowed = nullSelectionAllowed;
- requestRepaint();
+ markAsDirty();
}
}
@@ -1824,13 +1824,13 @@ public abstract class AbstractSelect extends AbstractField<Object> implements
@Override
public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
- requestRepaint();
+ markAsDirty();
}
@Override
public void itemPropertySetChange(
com.vaadin.data.Item.PropertySetChangeEvent event) {
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/AbstractSplitPanel.java b/server/src/com/vaadin/ui/AbstractSplitPanel.java
index 03e8a2dfb6..8b7499115c 100644
--- a/server/src/com/vaadin/ui/AbstractSplitPanel.java
+++ b/server/src/com/vaadin/ui/AbstractSplitPanel.java
@@ -154,8 +154,6 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer {
if (c != null) {
super.addComponent(c);
}
-
- requestRepaint();
}
/**
@@ -179,7 +177,6 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer {
if (c != null) {
super.addComponent(c);
}
- requestRepaint();
}
/**
@@ -217,7 +214,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer {
} else if (c == getSecondComponent()) {
getState().setSecondChild(null);
}
- requestRepaint();
+ markAsDirty();
}
/*
@@ -259,7 +256,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer {
} else if (oldComponent == getSecondComponent()) {
setSecondComponent(newComponent);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -329,8 +326,6 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer {
splitterState.setPositionUnit(unit.getSymbol());
splitterState.setPositionReversed(reverse);
posUnit = unit;
-
- requestRepaint();
}
/**
@@ -452,8 +447,6 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer {
state.setMaxPosition(maxPos);
state.setMaxPositionUnit(maxPosUnit.getSymbol());
posMaxUnit = maxPosUnit;
-
- requestRepaint();
}
/**
@@ -465,7 +458,6 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer {
*/
public void setLocked(boolean locked) {
getSplitterState().setLocked(locked);
- requestRepaint();
}
/**
@@ -520,7 +512,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer {
}
@Override
- public AbstractSplitPanelState getState() {
+ protected AbstractSplitPanelState getState() {
return (AbstractSplitPanelState) super.getState();
}
diff --git a/server/src/com/vaadin/ui/AbstractTextField.java b/server/src/com/vaadin/ui/AbstractTextField.java
index 86315f801f..1bd61023a4 100644
--- a/server/src/com/vaadin/ui/AbstractTextField.java
+++ b/server/src/com/vaadin/ui/AbstractTextField.java
@@ -92,7 +92,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements
}
@Override
- public AbstractTextFieldState getState() {
+ protected AbstractTextFieldState getState() {
return (AbstractTextFieldState) super.getState();
}
@@ -184,7 +184,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements
// If the modified status changes, or if we have a
// formatter, repaint is needed after all.
if (wasModified != isModified()) {
- requestRepaint();
+ markAsDirty();
}
}
}
@@ -271,7 +271,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements
*/
public void setNullRepresentation(String nullRepresentation) {
this.nullRepresentation = nullRepresentation;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -297,7 +297,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements
*/
public void setNullSettingAllowed(boolean nullSettingAllowed) {
this.nullSettingAllowed = nullSettingAllowed;
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -324,7 +324,6 @@ public abstract class AbstractTextField extends AbstractField<String> implements
*/
public void setMaxLength(int maxLength) {
getState().setMaxLength(maxLength);
- requestRepaint();
}
/**
@@ -351,7 +350,6 @@ public abstract class AbstractTextField extends AbstractField<String> implements
columns = 0;
}
getState().setColumns(columns);
- requestRepaint();
}
/**
@@ -372,7 +370,6 @@ public abstract class AbstractTextField extends AbstractField<String> implements
*/
public void setInputPrompt(String inputPrompt) {
getState().setInputPrompt(inputPrompt);
- requestRepaint();
}
/* ** Text Change Events ** */
@@ -443,7 +440,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements
*/
if (lastKnownTextContent != null) {
lastKnownTextContent = null;
- requestRepaint();
+ markAsDirty();
}
}
@@ -468,7 +465,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements
*/
public void setTextChangeEventMode(TextChangeEventMode inputEventMode) {
textChangeEventMode = inputEventMode;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -539,7 +536,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements
*/
public void setTextChangeTimeout(int timeout) {
textChangeEventTimeout = timeout;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -630,7 +627,7 @@ public abstract class AbstractTextField extends AbstractField<String> implements
selectionPosition = pos;
selectionLength = length;
focus();
- requestRepaint();
+ markAsDirty();
}
/**
diff --git a/server/src/com/vaadin/ui/Button.java b/server/src/com/vaadin/ui/Button.java
index f568d770e8..8546d8f830 100644
--- a/server/src/com/vaadin/ui/Button.java
+++ b/server/src/com/vaadin/ui/Button.java
@@ -478,7 +478,6 @@ public class Button extends AbstractComponent implements
*/
public void setDisableOnClick(boolean disableOnClick) {
getState().setDisableOnClick(disableOnClick);
- requestRepaint();
}
/*
@@ -499,7 +498,6 @@ public class Button extends AbstractComponent implements
@Override
public void setTabIndex(int tabIndex) {
getState().setTabIndex(tabIndex);
- requestRepaint();
}
@Override
@@ -509,7 +507,7 @@ public class Button extends AbstractComponent implements
}
@Override
- public ButtonState getState() {
+ protected ButtonState getState() {
return (ButtonState) super.getState();
}
@@ -526,10 +524,7 @@ public class Button extends AbstractComponent implements
* <code>false</code> otherwise
*/
public void setHtmlContentAllowed(boolean htmlContentAllowed) {
- if (getState().isHtmlContentAllowed() != htmlContentAllowed) {
- getState().setHtmlContentAllowed(htmlContentAllowed);
- requestRepaint();
- }
+ getState().setHtmlContentAllowed(htmlContentAllowed);
}
/**
diff --git a/server/src/com/vaadin/ui/CheckBox.java b/server/src/com/vaadin/ui/CheckBox.java
index 158c9d0032..6da86b9711 100644
--- a/server/src/com/vaadin/ui/CheckBox.java
+++ b/server/src/com/vaadin/ui/CheckBox.java
@@ -106,7 +106,7 @@ public class CheckBox extends AbstractField<Boolean> {
}
@Override
- public CheckBoxState getState() {
+ protected CheckBoxState getState() {
return (CheckBoxState) super.getState();
}
diff --git a/server/src/com/vaadin/ui/ComboBox.java b/server/src/com/vaadin/ui/ComboBox.java
index e2655be405..af19ca5b96 100644
--- a/server/src/com/vaadin/ui/ComboBox.java
+++ b/server/src/com/vaadin/ui/ComboBox.java
@@ -81,7 +81,7 @@ public class ComboBox extends Select {
*/
public void setInputPrompt(String inputPrompt) {
this.inputPrompt = inputPrompt;
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -110,7 +110,7 @@ public class ComboBox extends Select {
*/
public void setTextInputAllowed(boolean textInputAllowed) {
this.textInputAllowed = textInputAllowed;
- requestRepaint();
+ markAsDirty();
}
/**
diff --git a/server/src/com/vaadin/ui/Component.java b/server/src/com/vaadin/ui/Component.java
index ff7ed47930..89e282d4e1 100644
--- a/server/src/com/vaadin/ui/Component.java
+++ b/server/src/com/vaadin/ui/Component.java
@@ -23,7 +23,6 @@ import java.util.Locale;
import com.vaadin.Application;
import com.vaadin.event.FieldEvents;
-import com.vaadin.shared.ComponentState;
import com.vaadin.terminal.ErrorMessage;
import com.vaadin.terminal.Resource;
import com.vaadin.terminal.Sizeable;
@@ -624,19 +623,6 @@ public interface Component extends ClientConnector, Sizeable, Serializable {
public Locale getLocale();
/**
- * Returns the current shared state bean for the component. The state (or
- * changes to it) is communicated from the server to the client.
- *
- * Subclasses can use a more specific return type for this method.
- *
- * @return The state object for the component
- *
- * @since 7.0
- */
- @Override
- public ComponentState getState();
-
- /**
* Adds an unique id for component that get's transferred to terminal for
* testing purposes. Keeping identifiers unique is the responsibility of the
* programmer.
diff --git a/server/src/com/vaadin/ui/ConnectorTracker.java b/server/src/com/vaadin/ui/ConnectorTracker.java
index 2afe7f9025..72879e0a25 100644
--- a/server/src/com/vaadin/ui/ConnectorTracker.java
+++ b/server/src/com/vaadin/ui/ConnectorTracker.java
@@ -385,4 +385,8 @@ public class ConnectorTracker implements Serializable {
diffStates.put(connector, diffState);
}
+ public boolean isDirty(ClientConnector connector) {
+ return dirtyConnectors.contains(connector);
+ }
+
}
diff --git a/server/src/com/vaadin/ui/CssLayout.java b/server/src/com/vaadin/ui/CssLayout.java
index 0192debc4a..b16bcf31df 100644
--- a/server/src/com/vaadin/ui/CssLayout.java
+++ b/server/src/com/vaadin/ui/CssLayout.java
@@ -102,7 +102,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier {
components.add(c);
try {
super.addComponent(c);
- requestRepaint();
+ markAsDirty();
} catch (IllegalArgumentException e) {
components.remove(c);
throw e;
@@ -125,7 +125,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier {
components.addFirst(c);
try {
super.addComponent(c);
- requestRepaint();
+ markAsDirty();
} catch (IllegalArgumentException e) {
components.remove(c);
throw e;
@@ -154,7 +154,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier {
components.add(index, c);
try {
super.addComponent(c);
- requestRepaint();
+ markAsDirty();
} catch (IllegalArgumentException e) {
components.remove(c);
throw e;
@@ -171,7 +171,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier {
public void removeComponent(Component c) {
components.remove(c);
super.removeComponent(c);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -211,7 +211,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier {
}
@Override
- public CssLayoutState getState() {
+ protected CssLayoutState getState() {
return (CssLayoutState) super.getState();
}
@@ -276,7 +276,7 @@ public class CssLayout extends AbstractLayout implements LayoutClickNotifier {
components.add(newLocation, oldComponent);
}
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/CustomComponent.java b/server/src/com/vaadin/ui/CustomComponent.java
index 88f7b162c1..b67fa89ecb 100644
--- a/server/src/com/vaadin/ui/CustomComponent.java
+++ b/server/src/com/vaadin/ui/CustomComponent.java
@@ -100,7 +100,7 @@ public class CustomComponent extends AbstractComponentContainer {
super.addComponent(compositionRoot);
}
root = compositionRoot;
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/CustomField.java b/server/src/com/vaadin/ui/CustomField.java
index 794e472dae..9ac5e2defb 100644
--- a/server/src/com/vaadin/ui/CustomField.java
+++ b/server/src/com/vaadin/ui/CustomField.java
@@ -120,13 +120,13 @@ public abstract class CustomField<T> extends AbstractField<T> implements
@Override
public void setHeight(float height, Unit unit) {
super.setHeight(height, unit);
- requestRepaintAll();
+ markAsDirtyRecursive();
}
@Override
public void setWidth(float height, Unit unit) {
super.setWidth(height, unit);
- requestRepaintAll();
+ markAsDirtyRecursive();
}
// ComponentContainer methods
diff --git a/server/src/com/vaadin/ui/CustomLayout.java b/server/src/com/vaadin/ui/CustomLayout.java
index 2da443bfa5..54308b99c3 100644
--- a/server/src/com/vaadin/ui/CustomLayout.java
+++ b/server/src/com/vaadin/ui/CustomLayout.java
@@ -123,7 +123,7 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component {
}
@Override
- public CustomLayoutState getState() {
+ protected CustomLayoutState getState() {
return (CustomLayoutState) super.getState();
}
@@ -145,7 +145,6 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component {
getState().getChildLocations().put(c, location);
c.setParent(this);
fireComponentAttachEvent(c);
- requestRepaint();
}
/**
@@ -176,7 +175,6 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component {
slots.values().remove(c);
getState().getChildLocations().remove(c);
super.removeComponent(c);
- requestRepaint();
}
/**
@@ -251,7 +249,6 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component {
slots.put(oldLocation, newComponent);
getState().getChildLocations().put(newComponent, oldLocation);
getState().getChildLocations().put(oldComponent, newLocation);
- requestRepaint();
}
}
@@ -277,7 +274,6 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component {
public void setTemplateName(String templateName) {
getState().setTemplateName(templateName);
getState().setTemplateContents(null);
- requestRepaint();
}
/**
@@ -288,34 +284,6 @@ public class CustomLayout extends AbstractLayout implements Vaadin6Component {
public void setTemplateContents(String templateContents) {
getState().setTemplateContents(templateContents);
getState().setTemplateName(null);
- requestRepaint();
- }
-
- /**
- * Although most layouts support margins, CustomLayout does not. The
- * behaviour of this layout is determined almost completely by the actual
- * template.
- *
- * @throws UnsupportedOperationException
- */
- @Override
- public void setMargin(boolean enabled) {
- throw new UnsupportedOperationException(
- "CustomLayout does not support margins.");
- }
-
- /**
- * Although most layouts support margins, CustomLayout does not. The
- * behaviour of this layout is determined almost completely by the actual
- * template.
- *
- * @throws UnsupportedOperationException
- */
- @Override
- public void setMargin(boolean topEnabled, boolean rightEnabled,
- boolean bottomEnabled, boolean leftEnabled) {
- throw new UnsupportedOperationException(
- "CustomLayout does not support margins.");
}
@Override
diff --git a/server/src/com/vaadin/ui/DateField.java b/server/src/com/vaadin/ui/DateField.java
index 5130d665eb..828fa3b21d 100644
--- a/server/src/com/vaadin/ui/DateField.java
+++ b/server/src/com/vaadin/ui/DateField.java
@@ -131,7 +131,7 @@ public class DateField extends AbstractField<Date> implements
/**
* Resolution identifier: seconds.
*
- * @deprecated Use {@link Resolution#SECOND}
+ * @deprecated As of 7.0, use {@link Resolution#SECOND}
*/
@Deprecated
public static final Resolution RESOLUTION_SEC = Resolution.SECOND;
@@ -139,7 +139,7 @@ public class DateField extends AbstractField<Date> implements
/**
* Resolution identifier: minutes.
*
- * @deprecated Use {@link Resolution#MINUTE}
+ * @deprecated As of 7.0, use {@link Resolution#MINUTE}
*/
@Deprecated
public static final Resolution RESOLUTION_MIN = Resolution.MINUTE;
@@ -147,7 +147,7 @@ public class DateField extends AbstractField<Date> implements
/**
* Resolution identifier: hours.
*
- * @deprecated Use {@link Resolution#HOUR}
+ * @deprecated As of 7.0, use {@link Resolution#HOUR}
*/
@Deprecated
public static final Resolution RESOLUTION_HOUR = Resolution.HOUR;
@@ -155,7 +155,7 @@ public class DateField extends AbstractField<Date> implements
/**
* Resolution identifier: days.
*
- * @deprecated Use {@link Resolution#DAY}
+ * @deprecated As of 7.0, use {@link Resolution#DAY}
*/
@Deprecated
public static final Resolution RESOLUTION_DAY = Resolution.DAY;
@@ -163,7 +163,7 @@ public class DateField extends AbstractField<Date> implements
/**
* Resolution identifier: months.
*
- * @deprecated Use {@link Resolution#MONTH}
+ * @deprecated As of 7.0, use {@link Resolution#MONTH}
*/
@Deprecated
public static final Resolution RESOLUTION_MONTH = Resolution.MONTH;
@@ -171,7 +171,7 @@ public class DateField extends AbstractField<Date> implements
/**
* Resolution identifier: years.
*
- * @deprecated Use {@link Resolution#YEAR}
+ * @deprecated As of 7.0, use {@link Resolution#YEAR}
*/
@Deprecated
public static final Resolution RESOLUTION_YEAR = Resolution.YEAR;
@@ -429,7 +429,7 @@ public class DateField extends AbstractField<Date> implements
* if handleUnparsableDateString throws an exception. In
* this case the invalid text remains in the DateField.
*/
- requestRepaint();
+ markAsDirty();
} catch (Converter.ConversionException e) {
/*
@@ -471,7 +471,7 @@ public class DateField extends AbstractField<Date> implements
* change and form depends on this implementation detail.
*/
notifyFormOfValidityChange();
- requestRepaint();
+ markAsDirty();
}
} else if (newDate != oldDate
&& (newDate == null || !newDate.equals(oldDate))) {
@@ -562,7 +562,7 @@ public class DateField extends AbstractField<Date> implements
* this.
*/
notifyFormOfValidityChange();
- requestRepaint();
+ markAsDirty();
return;
}
@@ -588,7 +588,7 @@ public class DateField extends AbstractField<Date> implements
* thing as form does in its value change listener that
* it registers to all fields.
*/
- f.requestRepaint();
+ f.markAsDirty();
formFound = true;
break;
}
@@ -639,7 +639,7 @@ public class DateField extends AbstractField<Date> implements
*/
public void setResolution(Resolution resolution) {
this.resolution = resolution;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -699,7 +699,7 @@ public class DateField extends AbstractField<Date> implements
*/
public void setDateFormat(String dateFormat) {
this.dateFormat = dateFormat;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -725,7 +725,7 @@ public class DateField extends AbstractField<Date> implements
*/
public void setLenient(boolean lenient) {
this.lenient = lenient;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -781,7 +781,7 @@ public class DateField extends AbstractField<Date> implements
*/
public void setShowISOWeekNumbers(boolean showWeekNumbers) {
showISOWeekNumbers = showWeekNumbers;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -850,7 +850,7 @@ public class DateField extends AbstractField<Date> implements
*/
public void setTimeZone(TimeZone timeZone) {
this.timeZone = timeZone;
- requestRepaint();
+ markAsDirty();
}
/**
diff --git a/server/src/com/vaadin/ui/DragAndDropWrapper.java b/server/src/com/vaadin/ui/DragAndDropWrapper.java
index 3fd94210d8..ec805ecf46 100644
--- a/server/src/com/vaadin/ui/DragAndDropWrapper.java
+++ b/server/src/com/vaadin/ui/DragAndDropWrapper.java
@@ -60,7 +60,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget,
String id = (String) rawVariables.get("fi" + i);
files[i] = file;
receivers.put(id, file);
- requestRepaint(); // paint Receivers
+ markAsDirty(); // paint Receivers
}
}
}
@@ -156,22 +156,6 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget,
.valueOf((String) getData("horizontalLocation"));
}
- /**
- * @deprecated use {@link #getVerticalDropLocation()} instead
- */
- @Deprecated
- public VerticalDropLocation verticalDropLocation() {
- return getVerticalDropLocation();
- }
-
- /**
- * @deprecated use {@link #getHorizontalDropLocation()} instead
- */
- @Deprecated
- public HorizontalDropLocation horizontalDropLocation() {
- return getHorizontalDropLocation();
- }
-
}
public enum DragStartMode {
@@ -223,7 +207,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget,
*/
public void setHTML5DataFlavor(String type, Object value) {
html5DataFlavors.put(type, value);
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -270,7 +254,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget,
public void setDropHandler(DropHandler dropHandler) {
this.dropHandler = dropHandler;
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -286,7 +270,7 @@ public class DragAndDropWrapper extends CustomComponent implements DropTarget,
public void setDragStartMode(DragStartMode dragStartMode) {
this.dragStartMode = dragStartMode;
- requestRepaint();
+ markAsDirty();
}
public DragStartMode getDragStartMode() {
diff --git a/server/src/com/vaadin/ui/Embedded.java b/server/src/com/vaadin/ui/Embedded.java
index d019ea3b0b..41b93d0b27 100644
--- a/server/src/com/vaadin/ui/Embedded.java
+++ b/server/src/com/vaadin/ui/Embedded.java
@@ -196,7 +196,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
if (altText != this.altText
|| (altText != null && !altText.equals(this.altText))) {
this.altText = altText;
- requestRepaint();
+ markAsDirty();
}
}
@@ -222,7 +222,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
*/
public void setParameter(String name, String value) {
parameters.put(name, value);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -244,7 +244,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
*/
public void removeParameter(String name) {
parameters.remove(name);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -307,7 +307,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
if (codebase != this.codebase
|| (codebase != null && !codebase.equals(this.codebase))) {
this.codebase = codebase;
- requestRepaint();
+ markAsDirty();
}
}
@@ -325,7 +325,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
if (codetype != this.codetype
|| (codetype != null && !codetype.equals(this.codetype))) {
this.codetype = codetype;
- requestRepaint();
+ markAsDirty();
}
}
@@ -350,7 +350,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
setParameter("wmode", "transparent");
}
}
- requestRepaint();
+ markAsDirty();
}
}
@@ -365,7 +365,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
if (standby != this.standby
|| (standby != null && !standby.equals(this.standby))) {
this.standby = standby;
- requestRepaint();
+ markAsDirty();
}
}
@@ -390,7 +390,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
if (classId != this.classId
|| (classId != null && !classId.equals(this.classId))) {
this.classId = classId;
- requestRepaint();
+ markAsDirty();
}
}
@@ -443,7 +443,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
} else {
// Keep previous type
}
- requestRepaint();
+ markAsDirty();
}
}
@@ -467,7 +467,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
}
if (type != this.type) {
this.type = type;
- requestRepaint();
+ markAsDirty();
}
}
@@ -502,7 +502,7 @@ public class Embedded extends AbstractComponent implements Vaadin6Component {
if (archive != this.archive
|| (archive != null && !archive.equals(this.archive))) {
this.archive = archive;
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/Form.java b/server/src/com/vaadin/ui/Form.java
index a1ec0f9917..55404b2e6b 100644
--- a/server/src/com/vaadin/ui/Form.java
+++ b/server/src/com/vaadin/ui/Form.java
@@ -99,14 +99,9 @@ public class Form extends AbstractField<Object> implements Item.Editor,
private Buffered.SourceException currentBufferedSourceException = null;
/**
- * Is the form in write trough mode.
+ * Is the form in buffered mode.
*/
- private boolean writeThrough = true;
-
- /**
- * Is the form in read trough mode.
- */
- private boolean readThrough = true;
+ private boolean buffered = false;
/**
* Mapping from propertyName to corresponding field.
@@ -138,7 +133,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
private final ValueChangeListener fieldValueChangeListener = new ValueChangeListener() {
@Override
public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
- requestRepaint();
+ markAsDirty();
}
};
@@ -200,7 +195,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
}
@Override
- public FormState getState() {
+ protected FormState getState() {
return (FormState) super.getState();
}
@@ -347,7 +342,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
if (problems == null) {
if (currentBufferedSourceException != null) {
currentBufferedSourceException = null;
- requestRepaint();
+ markAsDirty();
}
return;
}
@@ -362,7 +357,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
final Buffered.SourceException e = new Buffered.SourceException(this,
causes);
currentBufferedSourceException = e;
- requestRepaint();
+ markAsDirty();
throw e;
}
@@ -391,7 +386,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
if (problems == null) {
if (currentBufferedSourceException != null) {
currentBufferedSourceException = null;
- requestRepaint();
+ markAsDirty();
}
return;
}
@@ -406,7 +401,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
final Buffered.SourceException e = new Buffered.SourceException(this,
causes);
currentBufferedSourceException = e;
- requestRepaint();
+ markAsDirty();
throw e;
}
@@ -427,50 +422,15 @@ public class Form extends AbstractField<Object> implements Item.Editor,
}
/*
- * Is the editor in a read-through mode? Don't add a JavaDoc comment here,
- * we use the default one from the interface.
- */
- @Override
- @Deprecated
- public boolean isReadThrough() {
- return readThrough;
- }
-
- /*
- * Is the editor in a write-through mode? Don't add a JavaDoc comment here,
- * we use the default one from the interface.
- */
- @Override
- @Deprecated
- public boolean isWriteThrough() {
- return writeThrough;
- }
-
- /*
- * Sets the editor's read-through mode to the specified status. Don't add a
+ * Sets the editor's buffered mode to the specified status. Don't add a
* JavaDoc comment here, we use the default one from the interface.
*/
@Override
- public void setReadThrough(boolean readThrough) {
- if (readThrough != this.readThrough) {
- this.readThrough = readThrough;
+ public void setBuffered(boolean buffered) {
+ if (buffered != this.buffered) {
+ this.buffered = buffered;
for (final Iterator<Object> i = propertyIds.iterator(); i.hasNext();) {
- (fields.get(i.next())).setReadThrough(readThrough);
- }
- }
- }
-
- /*
- * Sets the editor's read-through mode to the specified status. Don't add a
- * JavaDoc comment here, we use the default one from the interface.
- */
- @Override
- public void setWriteThrough(boolean writeThrough) throws SourceException,
- InvalidValueException {
- if (writeThrough != this.writeThrough) {
- this.writeThrough = writeThrough;
- for (final Iterator<Object> i = propertyIds.iterator(); i.hasNext();) {
- (fields.get(i.next())).setWriteThrough(writeThrough);
+ (fields.get(i.next())).setBuffered(buffered);
}
}
}
@@ -531,7 +491,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
public void addField(Object propertyId, Field<?> field) {
registerField(propertyId, field);
attachField(propertyId, field);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -560,11 +520,10 @@ public class Form extends AbstractField<Object> implements Item.Editor,
propertyIds.addLast(propertyId);
}
- // Update the read and write through status and immediate to match the
+ // Update the buffered mode and immediate to match the
// form.
// Should this also include invalidCommitted (#3993)?
- field.setReadThrough(readThrough);
- field.setWriteThrough(writeThrough);
+ field.setBuffered(buffered);
if (isImmediate() && field instanceof AbstractComponent) {
((AbstractComponent) field).setImmediate(true);
}
@@ -761,7 +720,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
// If the new datasource is null, just set null datasource
if (itemDatasource == null) {
- requestRepaint();
+ markAsDirty();
return;
}
@@ -861,10 +820,6 @@ public class Form extends AbstractField<Object> implements Item.Editor,
// Replace the previous layout
layout.setParent(this);
getState().setLayout(layout);
-
- // Hierarchy has changed so we need to repaint (this could be a
- // hierarchy repaint only)
- requestRepaint();
}
/**
@@ -949,8 +904,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
: new Select();
newField.setCaption(oldField.getCaption());
newField.setReadOnly(oldField.isReadOnly());
- newField.setReadThrough(oldField.isReadThrough());
- newField.setWriteThrough(oldField.isWriteThrough());
+ newField.setBuffered(oldField.isBuffered());
// Creates the options list
newField.addContainerProperty("desc", String.class, "");
@@ -1281,11 +1235,6 @@ public class Form extends AbstractField<Object> implements Item.Editor,
getState().setFooter(footer);
footer.setParent(this);
-
- // Hierarchy has changed so we need to repaint (this could be a
- // hierarchy repaint only)
- requestRepaint();
-
}
@Override
@@ -1295,7 +1244,7 @@ public class Form extends AbstractField<Object> implements Item.Editor,
// some ancestor still disabled, don't update children
return;
} else {
- getLayout().requestRepaintAll();
+ getLayout().markAsDirtyRecursive();
}
}
diff --git a/server/src/com/vaadin/ui/FormLayout.java b/server/src/com/vaadin/ui/FormLayout.java
index c4ba4665ea..15ea478597 100644
--- a/server/src/com/vaadin/ui/FormLayout.java
+++ b/server/src/com/vaadin/ui/FormLayout.java
@@ -16,6 +16,8 @@
package com.vaadin.ui;
+import com.vaadin.shared.ui.MarginInfo;
+
/**
* FormLayout is used by {@link Form} to layout fields. It may also be used
* separately without {@link Form}.
@@ -36,7 +38,7 @@ public class FormLayout extends AbstractOrderedLayout {
public FormLayout() {
super();
setSpacing(true);
- setMargin(true, false, true, false);
+ setMargin(new MarginInfo(true, false, true, false));
setWidth(100, UNITS_PERCENTAGE);
}
diff --git a/server/src/com/vaadin/ui/GridLayout.java b/server/src/com/vaadin/ui/GridLayout.java
index 5a748c04f6..3870b71611 100644
--- a/server/src/com/vaadin/ui/GridLayout.java
+++ b/server/src/com/vaadin/ui/GridLayout.java
@@ -30,6 +30,7 @@ import com.vaadin.event.LayoutEvents.LayoutClickNotifier;
import com.vaadin.shared.Connector;
import com.vaadin.shared.EventId;
import com.vaadin.shared.MouseEventDetails;
+import com.vaadin.shared.ui.MarginInfo;
import com.vaadin.shared.ui.gridlayout.GridLayoutServerRpc;
import com.vaadin.shared.ui.gridlayout.GridLayoutState;
import com.vaadin.terminal.LegacyPaint;
@@ -63,8 +64,8 @@ import com.vaadin.terminal.Vaadin6Component;
*/
@SuppressWarnings("serial")
public class GridLayout extends AbstractLayout implements
- Layout.AlignmentHandler, Layout.SpacingHandler, LayoutClickNotifier,
- Vaadin6Component {
+ Layout.AlignmentHandler, Layout.SpacingHandler, Layout.MarginHandler,
+ LayoutClickNotifier, Vaadin6Component {
private GridLayoutServerRpc rpc = new GridLayoutServerRpc() {
@@ -140,7 +141,7 @@ public class GridLayout extends AbstractLayout implements
}
@Override
- public GridLayoutState getState() {
+ protected GridLayoutState getState() {
return (GridLayoutState) super.getState();
}
@@ -253,7 +254,7 @@ public class GridLayout extends AbstractLayout implements
}
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -399,7 +400,7 @@ public class GridLayout extends AbstractLayout implements
super.removeComponent(component);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -805,14 +806,6 @@ public class GridLayout extends AbstractLayout implements
}
/**
- * @deprecated Use {@link #getColumn1()} instead.
- */
- @Deprecated
- public int getX1() {
- return getColumn1();
- }
-
- /**
* Gets the column of the top-left corner cell.
*
* @return the column of the top-left corner cell.
@@ -822,14 +815,6 @@ public class GridLayout extends AbstractLayout implements
}
/**
- * @deprecated Use {@link #getColumn2()} instead.
- */
- @Deprecated
- public int getX2() {
- return getColumn2();
- }
-
- /**
* Gets the column of the bottom-right corner cell.
*
* @return the column of the bottom-right corner cell.
@@ -839,14 +824,6 @@ public class GridLayout extends AbstractLayout implements
}
/**
- * @deprecated Use {@link #getRow1()} instead.
- */
- @Deprecated
- public int getY1() {
- return getRow1();
- }
-
- /**
* Gets the row of the top-left corner cell.
*
* @return the row of the top-left corner cell.
@@ -856,14 +833,6 @@ public class GridLayout extends AbstractLayout implements
}
/**
- * @deprecated Use {@link #getRow2()} instead.
- */
- @Deprecated
- public int getY2() {
- return getRow2();
- }
-
- /**
* Gets the row of the bottom-right corner cell.
*
* @return the row of the bottom-right corner cell.
@@ -993,8 +962,6 @@ public class GridLayout extends AbstractLayout implements
}
getState().setColumns(columns);
-
- requestRepaint();
}
/**
@@ -1037,8 +1004,6 @@ public class GridLayout extends AbstractLayout implements
}
getState().setRows(rows);
-
- requestRepaint();
}
/**
@@ -1131,7 +1096,7 @@ public class GridLayout extends AbstractLayout implements
} else {
oldLocation.setComponent(newComponent);
newLocation.setComponent(oldComponent);
- requestRepaint();
+ markAsDirty();
}
}
@@ -1148,25 +1113,11 @@ public class GridLayout extends AbstractLayout implements
cursorY = 0;
}
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.ui.Layout.AlignmentHandler#setComponentAlignment(com
- * .vaadin.ui.Component, int, int)
- */
- @Override
- public void setComponentAlignment(Component childComponent,
- int horizontalAlignment, int verticalAlignment) {
- componentToAlignment.put(childComponent, new Alignment(
- horizontalAlignment + verticalAlignment));
- requestRepaint();
- }
-
@Override
public void setComponentAlignment(Component childComponent,
Alignment alignment) {
componentToAlignment.put(childComponent, alignment);
- requestRepaint();
+ markAsDirty();
}
/*
@@ -1177,7 +1128,6 @@ public class GridLayout extends AbstractLayout implements
@Override
public void setSpacing(boolean spacing) {
getState().setSpacing(spacing);
- requestRepaint();
}
/*
@@ -1223,7 +1173,7 @@ public class GridLayout extends AbstractLayout implements
setRows(getRows() + 1);
structuralChange = true;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1282,7 +1232,7 @@ public class GridLayout extends AbstractLayout implements
}
structuralChange = true;
- requestRepaint();
+ markAsDirty();
}
@@ -1307,7 +1257,7 @@ public class GridLayout extends AbstractLayout implements
*/
public void setColumnExpandRatio(int columnIndex, float ratio) {
columnExpandRatio.put(columnIndex, ratio);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1345,7 +1295,7 @@ public class GridLayout extends AbstractLayout implements
*/
public void setRowExpandRatio(int rowIndex, float ratio) {
rowExpandRatio.put(rowIndex, ratio);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1416,4 +1366,36 @@ public class GridLayout extends AbstractLayout implements
LayoutClickEvent.class, listener);
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.ui.Layout.MarginHandler#setMargin(boolean)
+ */
+ @Override
+ public void setMargin(boolean enabled) {
+ setMargin(new MarginInfo(enabled));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.vaadin.ui.Layout.MarginHandler#setMargin(com.vaadin.shared.ui.MarginInfo
+ * )
+ */
+ @Override
+ public void setMargin(MarginInfo marginInfo) {
+ getState().setMarginsBitmask(marginInfo.getBitMask());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.ui.Layout.MarginHandler#getMargin()
+ */
+ @Override
+ public MarginInfo getMargin() {
+ return new MarginInfo(getState().getMarginsBitmask());
+ }
+
}
diff --git a/server/src/com/vaadin/ui/JavaScript.java b/server/src/com/vaadin/ui/JavaScript.java
index 35cc1893f6..e34ccae82a 100644
--- a/server/src/com/vaadin/ui/JavaScript.java
+++ b/server/src/com/vaadin/ui/JavaScript.java
@@ -66,7 +66,7 @@ public class JavaScript extends AbstractExtension {
}
@Override
- public JavaScriptManagerState getState() {
+ protected JavaScriptManagerState getState() {
return (JavaScriptManagerState) super.getState();
}
@@ -93,9 +93,7 @@ public class JavaScript extends AbstractExtension {
*/
public void addFunction(String name, JavaScriptFunction function) {
functions.put(name, function);
- if (getState().getNames().add(name)) {
- requestRepaint();
- }
+ getState().getNames().add(name);
}
/**
@@ -111,9 +109,7 @@ public class JavaScript extends AbstractExtension {
*/
public void removeFunction(String name) {
functions.remove(name);
- if (getState().getNames().remove(name)) {
- requestRepaint();
- }
+ getState().getNames().remove(name);
}
/**
diff --git a/server/src/com/vaadin/ui/Label.java b/server/src/com/vaadin/ui/Label.java
index 668b99a74c..81a343e937 100644
--- a/server/src/com/vaadin/ui/Label.java
+++ b/server/src/com/vaadin/ui/Label.java
@@ -151,7 +151,7 @@ public class Label extends AbstractComponent implements Property<String>,
}
@Override
- public LabelState getState() {
+ protected LabelState getState() {
return (LabelState) super.getState();
}
@@ -168,7 +168,7 @@ public class Label extends AbstractComponent implements Property<String>,
public String getValue() {
if (getPropertyDataSource() == null) {
// Use internal value if we are running without a data source
- return getState().getText();
+ return getState().text;
}
return ConverterUtil.convertFromModel(getPropertyDataSource()
.getValue(), String.class, getConverter(), getLocale());
@@ -189,8 +189,7 @@ public class Label extends AbstractComponent implements Property<String>,
+ String.class.getName());
}
if (getPropertyDataSource() == null) {
- getState().setText((String) newStringValue);
- requestRepaint();
+ getState().text = (String) newStringValue;
} else {
throw new IllegalStateException(
"Label is only a Property.Viewer and cannot update its data source");
@@ -266,7 +265,7 @@ public class Label extends AbstractComponent implements Property<String>,
.isAssignableFrom(dataSource.getClass())) {
((Property.ValueChangeNotifier) dataSource).addListener(this);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -277,7 +276,7 @@ public class Label extends AbstractComponent implements Property<String>,
* @see ContentMode
*/
public ContentMode getContentMode() {
- return getState().getContentMode();
+ return getState().contentMode;
}
/**
@@ -293,8 +292,7 @@ public class Label extends AbstractComponent implements Property<String>,
throw new IllegalArgumentException("Content mode can not be null");
}
- getState().setContentMode(contentMode);
- requestRepaint();
+ getState().contentMode = contentMode;
}
/* Value change events */
@@ -384,8 +382,7 @@ public class Label extends AbstractComponent implements Property<String>,
@Override
public void valueChange(Property.ValueChangeEvent event) {
// Update the internal value from the data source
- getState().setText(getValue());
- requestRepaint();
+ getState().text = getValue();
fireValueChange();
}
@@ -485,7 +482,7 @@ public class Label extends AbstractComponent implements Property<String>,
*/
public void setConverter(Converter<String, ?> converter) {
this.converter = (Converter<String, Object>) converter;
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/Layout.java b/server/src/com/vaadin/ui/Layout.java
index 6a95d23f8c..b32cf8c47d 100644
--- a/server/src/com/vaadin/ui/Layout.java
+++ b/server/src/com/vaadin/ui/Layout.java
@@ -18,8 +18,7 @@ package com.vaadin.ui;
import java.io.Serializable;
-import com.vaadin.shared.ui.VMarginInfo;
-import com.vaadin.shared.ui.AlignmentInfo.Bits;
+import com.vaadin.shared.ui.MarginInfo;
/**
* Extension to the {@link ComponentContainer} interface which adds the
@@ -33,104 +32,12 @@ import com.vaadin.shared.ui.AlignmentInfo.Bits;
public interface Layout extends ComponentContainer, Serializable {
/**
- * Enable layout margins. Affects all four sides of the layout. This will
- * tell the client-side implementation to leave extra space around the
- * layout. The client-side implementation decides the actual amount, and it
- * can vary between themes.
- *
- * @param enabled
- */
- public void setMargin(boolean enabled);
-
- /**
- * Enable specific layout margins. This will tell the client-side
- * implementation to leave extra space around the layout in specified edges,
- * clockwise from top (top, right, bottom, left). The client-side
- * implementation decides the actual amount, and it can vary between themes.
- *
- * @param top
- * @param right
- * @param bottom
- * @param left
- */
- public void setMargin(boolean top, boolean right, boolean bottom,
- boolean left);
-
- /**
* AlignmentHandler is most commonly an advanced {@link Layout} that can
* align its components.
*/
public interface AlignmentHandler extends Serializable {
/**
- * Contained component should be aligned horizontally to the left.
- *
- * @deprecated Use of {@link Alignment} class and its constants
- */
- @Deprecated
- public static final int ALIGNMENT_LEFT = Bits.ALIGNMENT_LEFT;
-
- /**
- * Contained component should be aligned horizontally to the right.
- *
- * @deprecated Use of {@link Alignment} class and its constants
- */
- @Deprecated
- public static final int ALIGNMENT_RIGHT = Bits.ALIGNMENT_RIGHT;
-
- /**
- * Contained component should be aligned vertically to the top.
- *
- * @deprecated Use of {@link Alignment} class and its constants
- */
- @Deprecated
- public static final int ALIGNMENT_TOP = Bits.ALIGNMENT_TOP;
-
- /**
- * Contained component should be aligned vertically to the bottom.
- *
- * @deprecated Use of {@link Alignment} class and its constants
- */
- @Deprecated
- public static final int ALIGNMENT_BOTTOM = Bits.ALIGNMENT_BOTTOM;
-
- /**
- * Contained component should be horizontally aligned to center.
- *
- * @deprecated Use of {@link Alignment} class and its constants
- */
- @Deprecated
- public static final int ALIGNMENT_HORIZONTAL_CENTER = Bits.ALIGNMENT_HORIZONTAL_CENTER;
-
- /**
- * Contained component should be vertically aligned to center.
- *
- * @deprecated Use of {@link Alignment} class and its constants
- */
- @Deprecated
- public static final int ALIGNMENT_VERTICAL_CENTER = Bits.ALIGNMENT_VERTICAL_CENTER;
-
- /**
- * Set alignment for one contained component in this layout. Alignment
- * is calculated as a bit mask of the two passed values.
- *
- * @deprecated Use {@link #setComponentAlignment(Component, Alignment)}
- * instead
- *
- * @param childComponent
- * the component to align within it's layout cell.
- * @param horizontalAlignment
- * the horizontal alignment for the child component (left,
- * center, right). Use ALIGNMENT constants.
- * @param verticalAlignment
- * the vertical alignment for the child component (top,
- * center, bottom). Use ALIGNMENT constants.
- */
- @Deprecated
- public void setComponentAlignment(Component childComponent,
- int horizontalAlignment, int verticalAlignment);
-
- /**
* Set alignment for one contained component in this layout. Use
* predefined alignments from Alignment class.
*
@@ -197,6 +104,19 @@ public interface Layout extends ComponentContainer, Serializable {
* its components).
*/
public interface MarginHandler extends Serializable {
+
+ /**
+ * Enable layout margins. Affects all four sides of the layout. This
+ * will tell the client-side implementation to leave extra space around
+ * the layout. The client-side implementation decides the actual amount,
+ * and it can vary between themes.
+ *
+ * @param enabled
+ * true if margins should be enabled on all sides, false to
+ * disable all margins
+ */
+ public void setMargin(boolean enabled);
+
/**
* Enable margins for this layout.
*
@@ -224,16 +144,4 @@ public interface Layout extends ComponentContainer, Serializable {
public MarginInfo getMargin();
}
- @SuppressWarnings("serial")
- public static class MarginInfo extends VMarginInfo implements Serializable {
-
- public MarginInfo(boolean enabled) {
- super(enabled, enabled, enabled, enabled);
- }
-
- public MarginInfo(boolean top, boolean right, boolean bottom,
- boolean left) {
- super(top, right, bottom, left);
- }
- }
}
diff --git a/server/src/com/vaadin/ui/Link.java b/server/src/com/vaadin/ui/Link.java
index 57f2088054..f98a2b0d2d 100644
--- a/server/src/com/vaadin/ui/Link.java
+++ b/server/src/com/vaadin/ui/Link.java
@@ -18,7 +18,7 @@ package com.vaadin.ui;
import java.util.Map;
-import com.vaadin.terminal.Page;
+import com.vaadin.shared.ui.BorderStyle;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.Resource;
@@ -34,19 +34,22 @@ import com.vaadin.terminal.Vaadin6Component;
public class Link extends AbstractComponent implements Vaadin6Component {
/* Target window border type constant: No window border */
- public static final int TARGET_BORDER_NONE = Page.BORDER_NONE;
+ @Deprecated
+ public static final BorderStyle TARGET_BORDER_NONE = BorderStyle.NONE;
/* Target window border type constant: Minimal window border */
- public static final int TARGET_BORDER_MINIMAL = Page.BORDER_MINIMAL;
+ @Deprecated
+ public static final BorderStyle TARGET_BORDER_MINIMAL = BorderStyle.MINIMAL;
/* Target window border type constant: Default window border */
- public static final int TARGET_BORDER_DEFAULT = Page.BORDER_DEFAULT;
+ @Deprecated
+ public static final BorderStyle TARGET_BORDER_DEFAULT = BorderStyle.DEFAULT;
private Resource resource = null;
private String targetName;
- private int targetBorder = TARGET_BORDER_DEFAULT;
+ private BorderStyle targetBorder = BorderStyle.DEFAULT;
private int targetWidth = -1;
@@ -89,7 +92,7 @@ public class Link extends AbstractComponent implements Vaadin6Component {
*
*/
public Link(String caption, Resource resource, String targetName,
- int width, int height, int border) {
+ int width, int height, BorderStyle border) {
setCaption(caption);
this.resource = resource;
setTargetName(targetName);
@@ -131,10 +134,10 @@ public class Link extends AbstractComponent implements Vaadin6Component {
// Target window border
switch (getTargetBorder()) {
- case TARGET_BORDER_MINIMAL:
+ case MINIMAL:
target.addAttribute("border", "minimal");
break;
- case TARGET_BORDER_NONE:
+ case NONE:
target.addAttribute("border", "none");
break;
}
@@ -145,7 +148,7 @@ public class Link extends AbstractComponent implements Vaadin6Component {
*
* @return the target window border.
*/
- public int getTargetBorder() {
+ public BorderStyle getTargetBorder() {
return targetBorder;
}
@@ -183,13 +186,9 @@ public class Link extends AbstractComponent implements Vaadin6Component {
* @param targetBorder
* the targetBorder to set.
*/
- public void setTargetBorder(int targetBorder) {
- if (targetBorder == TARGET_BORDER_DEFAULT
- || targetBorder == TARGET_BORDER_MINIMAL
- || targetBorder == TARGET_BORDER_NONE) {
- this.targetBorder = targetBorder;
- requestRepaint();
- }
+ public void setTargetBorder(BorderStyle targetBorder) {
+ this.targetBorder = targetBorder;
+ markAsDirty();
}
/**
@@ -200,7 +199,7 @@ public class Link extends AbstractComponent implements Vaadin6Component {
*/
public void setTargetHeight(int targetHeight) {
this.targetHeight = targetHeight;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -211,7 +210,7 @@ public class Link extends AbstractComponent implements Vaadin6Component {
*/
public void setTargetName(String targetName) {
this.targetName = targetName;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -222,7 +221,7 @@ public class Link extends AbstractComponent implements Vaadin6Component {
*/
public void setTargetWidth(int targetWidth) {
this.targetWidth = targetWidth;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -242,7 +241,7 @@ public class Link extends AbstractComponent implements Vaadin6Component {
*/
public void setResource(Resource resource) {
this.resource = resource;
- requestRepaint();
+ markAsDirty();
}
@Override
diff --git a/server/src/com/vaadin/ui/ListSelect.java b/server/src/com/vaadin/ui/ListSelect.java
index eb54183164..da78e24fa8 100644
--- a/server/src/com/vaadin/ui/ListSelect.java
+++ b/server/src/com/vaadin/ui/ListSelect.java
@@ -62,7 +62,7 @@ public class ListSelect extends AbstractSelect {
}
if (this.columns != columns) {
this.columns = columns;
- requestRepaint();
+ markAsDirty();
}
}
@@ -88,7 +88,7 @@ public class ListSelect extends AbstractSelect {
}
if (this.rows != rows) {
this.rows = rows;
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/LoginForm.java b/server/src/com/vaadin/ui/LoginForm.java
index c8634ea81a..bb7767084c 100644
--- a/server/src/com/vaadin/ui/LoginForm.java
+++ b/server/src/com/vaadin/ui/LoginForm.java
@@ -99,6 +99,9 @@ public class LoginForm extends CustomComponent {
throws IOException {
String requestPathInfo = request.getRequestPathInfo();
if ("/loginHandler".equals(requestPathInfo)) {
+ // Ensure Root.getCurrent() works in listeners
+ Root.setCurrent(getRoot());
+
response.setCacheTime(-1);
response.setContentType("text/html; charset=utf-8");
response.getWriter()
diff --git a/server/src/com/vaadin/ui/MenuBar.java b/server/src/com/vaadin/ui/MenuBar.java
index 37728ee69b..51c06cf934 100644
--- a/server/src/com/vaadin/ui/MenuBar.java
+++ b/server/src/com/vaadin/ui/MenuBar.java
@@ -223,7 +223,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
}
MenuItem newItem = new MenuItem(caption, icon, command);
menuItems.add(newItem);
- requestRepaint();
+ markAsDirty();
return newItem;
@@ -259,7 +259,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
menuItems.add(newItem);
}
- requestRepaint();
+ markAsDirty();
return newItem;
}
@@ -283,7 +283,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
if (item != null) {
menuItems.remove(item);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -291,7 +291,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
*/
public void removeItems() {
menuItems.clear();
- requestRepaint();
+ markAsDirty();
}
/**
@@ -318,7 +318,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
} else {
moreItem = new MenuItem("", null, null);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -345,7 +345,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
public void setAutoOpen(boolean autoOpenTopLevelMenu) {
if (autoOpenTopLevelMenu != openRootOnHover) {
openRootOnHover = autoOpenTopLevelMenu;
- requestRepaint();
+ markAsDirty();
}
}
@@ -373,7 +373,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
*/
public void setHtmlContentAllowed(boolean htmlContentAllowed) {
this.htmlContentAllowed = htmlContentAllowed;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -521,7 +521,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
newItem.setParent(this);
itsChildren.add(newItem);
- requestRepaint();
+ markAsDirty();
return newItem;
}
@@ -560,7 +560,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
newItem = addItem(caption, icon, command);
}
- requestRepaint();
+ markAsDirty();
return newItem;
}
@@ -651,7 +651,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
*/
public void setIcon(Resource icon) {
itsIcon = icon;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -664,7 +664,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
if (text != null) {
itsText = text;
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -679,7 +679,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
if (itsChildren.isEmpty()) {
itsChildren = null;
}
- requestRepaint();
+ markAsDirty();
}
}
@@ -690,7 +690,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
if (itsChildren != null) {
itsChildren.clear();
itsChildren = null;
- requestRepaint();
+ markAsDirty();
}
}
@@ -706,7 +706,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
public void setEnabled(boolean enabled) {
this.enabled = enabled;
- requestRepaint();
+ markAsDirty();
}
public boolean isEnabled() {
@@ -715,7 +715,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
public void setVisible(boolean visible) {
this.visible = visible;
- requestRepaint();
+ markAsDirty();
}
public boolean isVisible() {
@@ -724,7 +724,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
private void setSeparator(boolean isSeparator) {
this.isSeparator = isSeparator;
- requestRepaint();
+ markAsDirty();
}
public boolean isSeparator() {
@@ -733,7 +733,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
public void setStyleName(String styleName) {
this.styleName = styleName;
- requestRepaint();
+ markAsDirty();
}
public String getStyleName() {
@@ -750,7 +750,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
*/
public void setDescription(String description) {
this.description = description;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -855,7 +855,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
"A menu item with children cannot be checkable");
}
this.checkable = checkable;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -897,7 +897,7 @@ public class MenuBar extends AbstractComponent implements Vaadin6Component {
*/
public void setChecked(boolean checked) {
this.checked = checked;
- requestRepaint();
+ markAsDirty();
}
}// class MenuItem
diff --git a/server/src/com/vaadin/ui/NativeSelect.java b/server/src/com/vaadin/ui/NativeSelect.java
index 53c225a256..c2969874b0 100644
--- a/server/src/com/vaadin/ui/NativeSelect.java
+++ b/server/src/com/vaadin/ui/NativeSelect.java
@@ -64,7 +64,7 @@ public class NativeSelect extends AbstractSelect {
}
if (this.columns != columns) {
this.columns = columns;
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/Notification.java b/server/src/com/vaadin/ui/Notification.java
index d408889519..22ad31dffe 100644
--- a/server/src/com/vaadin/ui/Notification.java
+++ b/server/src/com/vaadin/ui/Notification.java
@@ -18,6 +18,7 @@ package com.vaadin.ui;
import java.io.Serializable;
+import com.vaadin.shared.Position;
import com.vaadin.terminal.Page;
import com.vaadin.terminal.Resource;
@@ -61,18 +62,33 @@ import com.vaadin.terminal.Resource;
*
*/
public class Notification implements Serializable {
- public static final int TYPE_HUMANIZED_MESSAGE = 1;
- public static final int TYPE_WARNING_MESSAGE = 2;
- public static final int TYPE_ERROR_MESSAGE = 3;
- public static final int TYPE_TRAY_NOTIFICATION = 4;
-
- public static final int POSITION_CENTERED = 1;
- public static final int POSITION_CENTERED_TOP = 2;
- public static final int POSITION_CENTERED_BOTTOM = 3;
- public static final int POSITION_TOP_LEFT = 4;
- public static final int POSITION_TOP_RIGHT = 5;
- public static final int POSITION_BOTTOM_LEFT = 6;
- public static final int POSITION_BOTTOM_RIGHT = 7;
+ public enum Type {
+ HUMANIZED_MESSAGE, WARNING_MESSAGE, ERROR_MESSAGE, TRAY_NOTIFICATION;
+ }
+
+ @Deprecated
+ public static final Type TYPE_HUMANIZED_MESSAGE = Type.HUMANIZED_MESSAGE;
+ @Deprecated
+ public static final Type TYPE_WARNING_MESSAGE = Type.WARNING_MESSAGE;
+ @Deprecated
+ public static final Type TYPE_ERROR_MESSAGE = Type.ERROR_MESSAGE;
+ @Deprecated
+ public static final Type TYPE_TRAY_NOTIFICATION = Type.TRAY_NOTIFICATION;
+
+ @Deprecated
+ public static final Position POSITION_CENTERED = Position.MIDDLE_CENTER;
+ @Deprecated
+ public static final Position POSITION_CENTERED_TOP = Position.TOP_CENTER;
+ @Deprecated
+ public static final Position POSITION_CENTERED_BOTTOM = Position.BOTTOM_CENTER;
+ @Deprecated
+ public static final Position POSITION_TOP_LEFT = Position.TOP_LEFT;
+ @Deprecated
+ public static final Position POSITION_TOP_RIGHT = Position.TOP_RIGHT;
+ @Deprecated
+ public static final Position POSITION_BOTTOM_LEFT = Position.BOTTOM_LEFT;
+ @Deprecated
+ public static final Position POSITION_BOTTOM_RIGHT = Position.BOTTOM_RIGHT;
public static final int DELAY_FOREVER = -1;
public static final int DELAY_NONE = 0;
@@ -80,7 +96,7 @@ public class Notification implements Serializable {
private String caption;
private String description;
private Resource icon;
- private int position = POSITION_CENTERED;
+ private Position position = Position.MIDDLE_CENTER;
private int delayMsec = 0;
private String styleName;
private boolean htmlContentAllowed;
@@ -107,7 +123,7 @@ public class Notification implements Serializable {
* @param type
* The type of message
*/
- public Notification(String caption, int type) {
+ public Notification(String caption, Type type) {
this(caption, null, type);
}
@@ -141,7 +157,7 @@ public class Notification implements Serializable {
* @param type
* The type of message
*/
- public Notification(String caption, String description, int type) {
+ public Notification(String caption, String description, Type type) {
this(caption, description, type, false);
}
@@ -161,7 +177,7 @@ public class Notification implements Serializable {
* Whether html in the caption and description should be
* displayed as html or as plain text
*/
- public Notification(String caption, String description, int type,
+ public Notification(String caption, String description, Type type,
boolean htmlContentAllowed) {
this.caption = caption;
this.description = description;
@@ -169,22 +185,22 @@ public class Notification implements Serializable {
setType(type);
}
- private void setType(int type) {
+ private void setType(Type type) {
switch (type) {
- case TYPE_WARNING_MESSAGE:
+ case WARNING_MESSAGE:
delayMsec = 1500;
styleName = "warning";
break;
- case TYPE_ERROR_MESSAGE:
+ case ERROR_MESSAGE:
delayMsec = -1;
styleName = "error";
break;
- case TYPE_TRAY_NOTIFICATION:
+ case TRAY_NOTIFICATION:
delayMsec = 3000;
- position = POSITION_BOTTOM_RIGHT;
+ position = Position.BOTTOM_RIGHT;
styleName = "tray";
- case TYPE_HUMANIZED_MESSAGE:
+ case HUMANIZED_MESSAGE:
default:
break;
}
@@ -233,7 +249,7 @@ public class Notification implements Serializable {
*
* @return The position
*/
- public int getPosition() {
+ public Position getPosition() {
return position;
}
@@ -243,7 +259,7 @@ public class Notification implements Serializable {
* @param position
* The desired notification position
*/
- public void setPosition(int position) {
+ public void setPosition(Position position) {
this.position = position;
}
@@ -373,7 +389,7 @@ public class Notification implements Serializable {
* @param type
* The message type
*/
- public static void show(String caption, int type) {
+ public static void show(String caption, Type type) {
new Notification(caption, type).show(Page.getCurrent());
}
} \ No newline at end of file
diff --git a/server/src/com/vaadin/ui/OptionGroup.java b/server/src/com/vaadin/ui/OptionGroup.java
index dfb5019331..12507442c9 100644
--- a/server/src/com/vaadin/ui/OptionGroup.java
+++ b/server/src/com/vaadin/ui/OptionGroup.java
@@ -125,14 +125,14 @@ public class OptionGroup extends AbstractSelect implements
Set<?> newValueSet = (Set<?>) newValue;
for (Object itemId : currentValueSet) {
if (!isItemEnabled(itemId) && !newValueSet.contains(itemId)) {
- requestRepaint();
+ markAsDirty();
return;
}
}
for (Object itemId : newValueSet) {
if (!isItemEnabled(itemId)
&& !currentValueSet.contains(itemId)) {
- requestRepaint();
+ markAsDirty();
return;
}
}
@@ -141,7 +141,7 @@ public class OptionGroup extends AbstractSelect implements
newValue = getNullSelectionItemId();
}
if (!isItemEnabled(newValue)) {
- requestRepaint();
+ markAsDirty();
return;
}
}
@@ -169,7 +169,7 @@ public class OptionGroup extends AbstractSelect implements
} else {
disabledItemIds.add(itemId);
}
- requestRepaint();
+ markAsDirty();
}
}
@@ -200,7 +200,7 @@ public class OptionGroup extends AbstractSelect implements
*/
public void setHtmlContentAllowed(boolean htmlContentAllowed) {
this.htmlContentAllowed = htmlContentAllowed;
- requestRepaint();
+ markAsDirty();
}
/**
diff --git a/server/src/com/vaadin/ui/Panel.java b/server/src/com/vaadin/ui/Panel.java
index ba68238707..00810b83db 100644
--- a/server/src/com/vaadin/ui/Panel.java
+++ b/server/src/com/vaadin/ui/Panel.java
@@ -176,7 +176,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable,
.addListener((ComponentContainer.ComponentDetachListener) this);
content = newContent;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -318,7 +318,6 @@ public class Panel extends AbstractComponentContainer implements Scrollable,
"Scroll offset must be at least 0");
}
getState().setScrollLeft(scrollLeft);
- requestRepaint();
}
/*
@@ -333,7 +332,6 @@ public class Panel extends AbstractComponentContainer implements Scrollable,
"Scroll offset must be at least 0");
}
getState().setScrollTop(scrollTop);
- requestRepaint();
}
/* Documented in superclass */
@@ -465,7 +463,6 @@ public class Panel extends AbstractComponentContainer implements Scrollable,
@Override
public void setTabIndex(int tabIndex) {
getState().setTabIndex(tabIndex);
- requestRepaint();
}
/**
@@ -489,7 +486,7 @@ public class Panel extends AbstractComponentContainer implements Scrollable,
}
@Override
- public PanelState getState() {
+ protected PanelState getState() {
return (PanelState) super.getState();
}
diff --git a/server/src/com/vaadin/ui/PopupDateField.java b/server/src/com/vaadin/ui/PopupDateField.java
index a4304faaf9..acff49a142 100644
--- a/server/src/com/vaadin/ui/PopupDateField.java
+++ b/server/src/com/vaadin/ui/PopupDateField.java
@@ -84,7 +84,7 @@ public class PopupDateField extends DateField {
*/
public void setInputPrompt(String inputPrompt) {
this.inputPrompt = inputPrompt;
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/PopupView.java b/server/src/com/vaadin/ui/PopupView.java
index 4a5814f660..786257c240 100644
--- a/server/src/com/vaadin/ui/PopupView.java
+++ b/server/src/com/vaadin/ui/PopupView.java
@@ -147,7 +147,7 @@ public class PopupView extends AbstractComponentContainer implements
throw new IllegalArgumentException("Content must not be null");
}
content = newContent;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -160,22 +160,6 @@ public class PopupView extends AbstractComponentContainer implements
}
/**
- * @deprecated Use {@link #setPopupVisible()} instead.
- */
- @Deprecated
- public void setPopupVisibility(boolean visible) {
- setPopupVisible(visible);
- }
-
- /**
- * @deprecated Use {@link #isPopupVisible()} instead.
- */
- @Deprecated
- public boolean getPopupVisibility() {
- return isPopupVisible();
- }
-
- /**
* Set the visibility of the popup. Does not hide the minimal
* representation.
*
@@ -195,7 +179,7 @@ public class PopupView extends AbstractComponentContainer implements
visibleComponent = null;
}
fireEvent(new PopupVisibilityEvent(this));
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/ProgressIndicator.java b/server/src/com/vaadin/ui/ProgressIndicator.java
index d3e292a3e1..528c404ab9 100644
--- a/server/src/com/vaadin/ui/ProgressIndicator.java
+++ b/server/src/com/vaadin/ui/ProgressIndicator.java
@@ -226,7 +226,7 @@ public class ProgressIndicator extends AbstractField<Number> implements
*/
public void setIndeterminate(boolean newValue) {
indeterminate = newValue;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -246,7 +246,7 @@ public class ProgressIndicator extends AbstractField<Number> implements
*/
public void setPollingInterval(int newValue) {
pollingInterval = newValue;
- requestRepaint();
+ markAsDirty();
}
/**
diff --git a/server/src/com/vaadin/ui/RichTextArea.java b/server/src/com/vaadin/ui/RichTextArea.java
index e3d1168559..51caa82136 100644
--- a/server/src/com/vaadin/ui/RichTextArea.java
+++ b/server/src/com/vaadin/ui/RichTextArea.java
@@ -16,7 +16,6 @@
package com.vaadin.ui;
-import java.text.Format;
import java.util.Map;
import com.vaadin.data.Property;
@@ -35,12 +34,6 @@ public class RichTextArea extends AbstractField<String> implements
Vaadin6Component {
/**
- * Value formatter used to format the string contents.
- */
- @Deprecated
- private Format format;
-
- /**
* Null representation.
*/
private String nullRepresentation = "null";
@@ -123,7 +116,7 @@ public class RichTextArea extends AbstractField<String> implements
}
// Adds the content as variable
- String value = getFormattedValue();
+ String value = getValue();
if (value == null) {
value = getNullRepresentation();
}
@@ -164,38 +157,7 @@ public class RichTextArea extends AbstractField<String> implements
*/
selectAll = true;
focus();
- requestRepaint();
- }
-
- /**
- * Gets the formatted string value. Sets the field value by using the
- * assigned Format.
- *
- * @return the Formatted value.
- * @see #setFormat(Format)
- * @see Format
- * @deprecated
- */
- @Deprecated
- protected String getFormattedValue() {
- Object v = getValue();
- if (v == null) {
- return null;
- }
- return v.toString();
- }
-
- @Override
- public String getValue() {
- String v = super.getValue();
- if (format == null || v == null) {
- return v;
- }
- try {
- return format.format(v);
- } catch (final IllegalArgumentException e) {
- return v;
- }
+ markAsDirty();
}
@Override
@@ -207,7 +169,7 @@ public class RichTextArea extends AbstractField<String> implements
// has been updated
String newValue = (String) variables.get("text");
- final String oldValue = getFormattedValue();
+ final String oldValue = getValue();
if (newValue != null
&& (oldValue == null || isNullSettingAllowed())
&& newValue.equals(getNullRepresentation())) {
@@ -218,10 +180,10 @@ public class RichTextArea extends AbstractField<String> implements
boolean wasModified = isModified();
setValue(newValue, true);
- // If the modified status changes, or if we have a formatter,
+ // If the modified status changes,
// repaint is needed after all.
- if (format != null || wasModified != isModified()) {
- requestRepaint();
+ if (wasModified != isModified()) {
+ markAsDirty();
}
}
}
@@ -323,31 +285,6 @@ public class RichTextArea extends AbstractField<String> implements
this.nullSettingAllowed = nullSettingAllowed;
}
- /**
- * Gets the value formatter of TextField.
- *
- * @return the Format used to format the value.
- * @deprecated replaced by {@link com.vaadin.data.util.PropertyFormatter}
- */
- @Deprecated
- public Format getFormat() {
- return format;
- }
-
- /**
- * Gets the value formatter of TextField.
- *
- * @param format
- * the Format used to format the value. Null disables the
- * formatting.
- * @deprecated replaced by {@link com.vaadin.data.util.PropertyFormatter}
- */
- @Deprecated
- public void setFormat(Format format) {
- this.format = format;
- requestRepaint();
- }
-
@Override
protected boolean isEmpty() {
return super.isEmpty() || getValue().length() == 0;
diff --git a/server/src/com/vaadin/ui/Root.java b/server/src/com/vaadin/ui/Root.java
index b37005a16e..67f2e04a65 100644
--- a/server/src/com/vaadin/ui/Root.java
+++ b/server/src/com/vaadin/ui/Root.java
@@ -34,6 +34,7 @@ import com.vaadin.event.MouseEvents.ClickEvent;
import com.vaadin.event.MouseEvents.ClickListener;
import com.vaadin.shared.EventId;
import com.vaadin.shared.MouseEventDetails;
+import com.vaadin.shared.ui.BorderStyle;
import com.vaadin.shared.ui.root.RootConstants;
import com.vaadin.shared.ui.root.RootServerRpc;
import com.vaadin.shared.ui.root.RootState;
@@ -283,13 +284,12 @@ public abstract class Root extends AbstractComponentContainer implements
* @param height
* the height of the window in pixels
* @param border
- * the border style of the window. See {@link #BORDER_NONE
- * Window.BORDER_* constants}
+ * the border style of the window.
* @deprecated As of 7.0, use getPage().open instead
*/
@Deprecated
public void open(Resource resource, String windowName, int width,
- int height, int border) {
+ int height, BorderStyle border) {
getPage().open(resource, windowName, width, height, border);
}
@@ -498,7 +498,7 @@ public abstract class Root extends AbstractComponentContainer implements
}
@Override
- public RootState getState() {
+ protected RootState getState() {
return (RootState) super.getState();
}
@@ -723,7 +723,7 @@ public abstract class Root extends AbstractComponentContainer implements
private void attachWindow(Window w) {
windows.add(w);
w.setParent(this);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -746,7 +746,7 @@ public abstract class Root extends AbstractComponentContainer implements
}
window.setParent(null);
window.fireClose();
- requestRepaint();
+ markAsDirty();
return true;
}
@@ -788,7 +788,7 @@ public abstract class Root extends AbstractComponentContainer implements
*/
public void setFocusedComponent(Focusable focusable) {
pendingFocus = focusable;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -808,7 +808,7 @@ public abstract class Root extends AbstractComponentContainer implements
"The component where to scroll must belong to this root.");
}
scrollIntoView = component;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -860,8 +860,6 @@ public abstract class Root extends AbstractComponentContainer implements
if (content != null) {
super.addComponent(content);
}
-
- requestRepaint();
}
/**
@@ -1015,7 +1013,7 @@ public abstract class Root extends AbstractComponentContainer implements
*/
public void setResizeLazy(boolean resizeLazy) {
this.resizeLazy = resizeLazy;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1126,7 +1124,7 @@ public abstract class Root extends AbstractComponentContainer implements
* Notification.show does not allow HTML.
*/
@Deprecated
- public void showNotification(String caption, int type) {
+ public void showNotification(String caption, Notification.Type type) {
Notification notification = new Notification(caption, type);
notification.setHtmlContentAllowed(true);// Backwards compatibility
getPage().showNotification(notification);
@@ -1181,7 +1179,8 @@ public abstract class Root extends AbstractComponentContainer implements
* be aware that HTML by default not allowed.
*/
@Deprecated
- public void showNotification(String caption, String description, int type) {
+ public void showNotification(String caption, String description,
+ Notification.Type type) {
Notification notification = new Notification(caption, description, type);
notification.setHtmlContentAllowed(true);// Backwards compatibility
getPage().showNotification(notification);
@@ -1212,8 +1211,8 @@ public abstract class Root extends AbstractComponentContainer implements
* @deprecated As of 7.0, use new Notification(...).show(Page).
*/
@Deprecated
- public void showNotification(String caption, String description, int type,
- boolean htmlContentAllowed) {
+ public void showNotification(String caption, String description,
+ Notification.Type type, boolean htmlContentAllowed) {
getPage()
.showNotification(
new Notification(caption, description, type,
diff --git a/server/src/com/vaadin/ui/Select.java b/server/src/com/vaadin/ui/Select.java
index 698350cb30..20345b55e0 100644
--- a/server/src/com/vaadin/ui/Select.java
+++ b/server/src/com/vaadin/ui/Select.java
@@ -676,15 +676,21 @@ public class Select extends AbstractSelect implements AbstractSelect.Filtering,
}
@Override
+ @Deprecated
public void requestRepaint() {
- super.requestRepaint();
+ markAsDirty();
+ }
+
+ @Override
+ public void markAsDirty() {
+ super.markAsDirty();
optionRequest = false;
prevfilterstring = filterstring;
filterstring = null;
}
private void optionRepaint() {
- super.requestRepaint();
+ super.markAsDirty();
}
@Override
@@ -697,40 +703,6 @@ public class Select extends AbstractSelect implements AbstractSelect.Filtering,
return filteringMode;
}
- /**
- * Note, one should use more generic setWidth(String) method instead of
- * this. This now days actually converts columns to width with em css unit.
- *
- * Sets the number of columns in the editor. If the number of columns is set
- * 0, the actual number of displayed columns is determined implicitly by the
- * adapter.
- *
- * @deprecated
- *
- * @param columns
- * the number of columns to set.
- */
- @Deprecated
- public void setColumns(int columns) {
- if (columns < 0) {
- columns = 0;
- }
- if (this.columns != columns) {
- this.columns = columns;
- setWidth(columns, Select.UNITS_EM);
- requestRepaint();
- }
- }
-
- /**
- * @deprecated see setter function
- * @return
- */
- @Deprecated
- public int getColumns() {
- return columns;
- }
-
@Override
public void addListener(BlurListener listener) {
addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener,
diff --git a/server/src/com/vaadin/ui/Slider.java b/server/src/com/vaadin/ui/Slider.java
index f7672f617c..d4e2db4853 100644
--- a/server/src/com/vaadin/ui/Slider.java
+++ b/server/src/com/vaadin/ui/Slider.java
@@ -174,7 +174,7 @@ public class Slider extends AbstractField<Double> implements Vaadin6Component {
if (getValue() > max) {
setValue(max);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -198,7 +198,7 @@ public class Slider extends AbstractField<Double> implements Vaadin6Component {
if (getValue() < min) {
setValue(min);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -220,7 +220,7 @@ public class Slider extends AbstractField<Double> implements Vaadin6Component {
*/
public void setOrientation(int orientation) {
this.orientation = orientation;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -244,7 +244,7 @@ public class Slider extends AbstractField<Double> implements Vaadin6Component {
return;
}
this.resolution = resolution;
- requestRepaint();
+ markAsDirty();
}
/**
diff --git a/server/src/com/vaadin/ui/TabSheet.java b/server/src/com/vaadin/ui/TabSheet.java
index 5a1aa02845..82faedcc41 100644
--- a/server/src/com/vaadin/ui/TabSheet.java
+++ b/server/src/com/vaadin/ui/TabSheet.java
@@ -176,7 +176,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
fireSelectedTabChange();
}
}
- requestRepaint();
+ markAsDirty();
}
}
@@ -301,7 +301,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
fireSelectedTabChange();
}
super.addComponent(c);
- requestRepaint();
+ markAsDirty();
return tab;
}
}
@@ -361,8 +361,9 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
String caption = null;
Resource icon = null;
if (TabSheet.class.isAssignableFrom(source.getClass())) {
- caption = ((TabSheet) source).getTabCaption(c);
- icon = ((TabSheet) source).getTabIcon(c);
+ Tab tab = ((TabSheet) source).getTab(c);
+ caption = tab.getCaption();
+ icon = tab.getIcon();
}
source.removeComponent(c);
addTab(c, caption, icon);
@@ -474,83 +475,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
*/
public void hideTabs(boolean tabsHidden) {
this.tabsHidden = tabsHidden;
- requestRepaint();
- }
-
- /**
- * Gets tab caption. The tab is identified by the tab content component.
- *
- * @param c
- * the component in the tab
- * @deprecated Use {@link #getTab(Component)} and {@link Tab#getCaption()}
- * instead.
- */
- @Deprecated
- public String getTabCaption(Component c) {
- Tab info = tabs.get(c);
- if (info == null) {
- return "";
- } else {
- return info.getCaption();
- }
- }
-
- /**
- * Sets tab caption. The tab is identified by the tab content component.
- *
- * @param c
- * the component in the tab
- * @param caption
- * the caption to set.
- * @deprecated Use {@link #getTab(Component)} and
- * {@link Tab#setCaption(String)} instead.
- */
- @Deprecated
- public void setTabCaption(Component c, String caption) {
- Tab info = tabs.get(c);
- if (info != null) {
- info.setCaption(caption);
- requestRepaint();
- }
- }
-
- /**
- * Gets the icon for a tab. The tab is identified by the tab content
- * component.
- *
- * @param c
- * the component in the tab
- * @deprecated Use {@link #getTab(Component)} and {@link Tab#getIcon()}
- * instead.
- */
- @Deprecated
- public Resource getTabIcon(Component c) {
- Tab info = tabs.get(c);
- if (info == null) {
- return null;
- } else {
- return info.getIcon();
- }
- }
-
- /**
- * Sets icon for the given component. The tab is identified by the tab
- * content component.
- *
- * @param c
- * the component in the tab
- * @param icon
- * the icon to set
- * @deprecated Use {@link #getTab(Component)} and
- * {@link Tab#setIcon(Resource)} instead.
- */
- @Deprecated
- public void setTabIcon(Component c, Resource icon) {
- Tab info = tabs.get(c);
- if (info != null) {
- info.setIcon(icon);
- requestRepaint();
- }
+ markAsDirty();
}
/**
@@ -594,7 +519,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
setSelected(c);
updateSelection();
fireSelectedTabChange();
- requestRepaint();
+ markAsDirty();
}
}
@@ -612,13 +537,13 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
// "cached" update even though the client knows nothing about the
// connector
if (selected instanceof ComponentContainer) {
- ((ComponentContainer) selected).requestRepaintAll();
+ ((ComponentContainer) selected).markAsDirtyRecursive();
} else if (selected instanceof Table) {
// Workaround until there's a generic way of telling a component
// that there is no client side state to rely on. See #8642
((Table) selected).refreshRowCache();
} else if (selected != null) {
- selected.requestRepaint();
+ selected.markAsDirty();
}
}
@@ -791,7 +716,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
copyTabMetadata(oldTab, newTab);
copyTabMetadata(tmp, oldTab);
- requestRepaint();
+ markAsDirty();
}
}
@@ -1103,7 +1028,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
@Override
public void setCaption(String caption) {
this.caption = caption;
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -1114,7 +1039,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
@Override
public void setIcon(Resource icon) {
this.icon = icon;
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -1128,7 +1053,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
if (updateSelection()) {
fireSelectedTabChange();
}
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -1142,7 +1067,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
if (updateSelection()) {
fireSelectedTabChange();
}
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -1153,7 +1078,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
@Override
public void setClosable(boolean closable) {
this.closable = closable;
- requestRepaint();
+ markAsDirty();
}
public void close() {
@@ -1168,7 +1093,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
@Override
public void setDescription(String description) {
this.description = description;
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -1179,7 +1104,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
@Override
public void setComponentError(ErrorMessage componentError) {
this.componentError = componentError;
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -1195,7 +1120,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
@Override
public void setStyleName(String styleName) {
this.styleName = styleName;
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -1255,7 +1180,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
int oldPosition = getTabPosition(tab);
components.remove(oldPosition);
components.add(position, tab.getComponent());
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1282,7 +1207,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
@Override
public void setTabIndex(int tabIndex) {
this.tabIndex = tabIndex;
- requestRepaint();
+ markAsDirty();
}
@Override
diff --git a/server/src/com/vaadin/ui/Table.java b/server/src/com/vaadin/ui/Table.java
index 6f7f88f883..8fc3fc2572 100644
--- a/server/src/com/vaadin/ui/Table.java
+++ b/server/src/com/vaadin/ui/Table.java
@@ -729,7 +729,7 @@ public class Table extends AbstractSelect implements Action.Container,
this.columnHeaders.put(it.next(), columnHeaders[i]);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -788,7 +788,7 @@ public class Table extends AbstractSelect implements Action.Container,
this.columnIcons.put(it.next(), columnIcons[i]);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -888,7 +888,7 @@ public class Table extends AbstractSelect implements Action.Container,
} else {
columnWidths.put(propertyId, Integer.valueOf(width));
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1026,7 +1026,7 @@ public class Table extends AbstractSelect implements Action.Container,
}
if (this.cacheRate != cacheRate) {
this.cacheRate = cacheRate;
- requestRepaint();
+ markAsDirty();
}
}
@@ -1158,7 +1158,7 @@ public class Table extends AbstractSelect implements Action.Container,
columnIcons.put(propertyId, icon);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1198,7 +1198,7 @@ public class Table extends AbstractSelect implements Action.Container,
columnHeaders.put(propertyId, header);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1361,7 +1361,7 @@ public class Table extends AbstractSelect implements Action.Container,
public void setColumnReorderingAllowed(boolean columnReorderingAllowed) {
if (columnReorderingAllowed != this.columnReorderingAllowed) {
this.columnReorderingAllowed = columnReorderingAllowed;
- requestRepaint();
+ markAsDirty();
}
}
@@ -1507,31 +1507,6 @@ public class Table extends AbstractSelect implements Action.Container,
}
/**
- * Getter for property pageBuffering.
- *
- * @deprecated functionality is not needed in ajax rendering model
- *
- * @return the Value of property pageBuffering.
- */
- @Deprecated
- public boolean isPageBufferingEnabled() {
- return true;
- }
-
- /**
- * Setter for property pageBuffering.
- *
- * @deprecated functionality is not needed in ajax rendering model
- *
- * @param pageBuffering
- * the New value of property pageBuffering.
- */
- @Deprecated
- public void setPageBufferingEnabled(boolean pageBuffering) {
-
- }
-
- /**
* Getter for property selectable.
*
* <p>
@@ -1557,7 +1532,7 @@ public class Table extends AbstractSelect implements Action.Container,
public void setSelectable(boolean selectable) {
if (this.selectable != selectable) {
this.selectable = selectable;
- requestRepaint();
+ markAsDirty();
}
}
@@ -1583,7 +1558,7 @@ public class Table extends AbstractSelect implements Action.Container,
}
if (columnHeaderMode != this.columnHeaderMode) {
this.columnHeaderMode = columnHeaderMode;
- requestRepaint();
+ markAsDirty();
}
}
@@ -1652,7 +1627,7 @@ public class Table extends AbstractSelect implements Action.Container,
}
setRowCacheInvalidated(true);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1661,17 +1636,39 @@ public class Table extends AbstractSelect implements Action.Container,
* Note that a {@code Table} does not necessarily repaint its contents when
* this method has been called. See {@link #refreshRowCache()} for forcing
* an update of the contents.
+ *
+ * @deprecated As of 7.0.0, use {@link #markAsDirty()} instead
*/
+ @Deprecated
@Override
public void requestRepaint() {
+ markAsDirty();
+ }
+
+ /**
+ * Requests that the Table should be repainted as soon as possible.
+ *
+ * Note that a {@code Table} does not necessarily repaint its contents when
+ * this method has been called. See {@link #refreshRowCache()} for forcing
+ * an update of the contents.
+ */
+
+ @Override
+ public void markAsDirty() {
// Overridden only for javadoc
- super.requestRepaint();
+ super.markAsDirty();
}
+ @Deprecated
@Override
public void requestRepaintAll() {
- super.requestRepaintAll();
+ markAsDirtyRecursive();
+ }
+
+ @Override
+ public void markAsDirtyRecursive() {
+ super.markAsDirtyRecursive();
// Avoid sending a partial repaint (#8714)
refreshRowCache();
@@ -2230,16 +2227,6 @@ public class Table extends AbstractSelect implements Action.Container,
}
/**
- * Refreshes the current page contents.
- *
- * @deprecated should not need to be used
- */
- @Deprecated
- public void refreshCurrentPage() {
-
- }
-
- /**
* Sets the row header mode.
* <p>
* The mode can be one of the following ones:
@@ -2471,7 +2458,7 @@ public class Table extends AbstractSelect implements Action.Container,
if (!isNullSelectionAllowed()
&& (id == null || id == getNullSelectionItemId())) {
// skip empty selection if nullselection is not allowed
- requestRepaint();
+ markAsDirty();
} else if (id != null && containsId(id)) {
newValue.add(id);
renderedButNotSelectedItemIds.remove(id);
@@ -2498,7 +2485,7 @@ public class Table extends AbstractSelect implements Action.Container,
if (!isNullSelectionAllowed() && newValue.isEmpty()) {
// empty selection not allowed, keep old value
- requestRepaint();
+ markAsDirty();
return;
}
@@ -2837,7 +2824,7 @@ public class Table extends AbstractSelect implements Action.Container,
if (refreshContent) {
refreshRenderedCells();
// Ensure that client gets a response
- requestRepaint();
+ markAsDirty();
}
}
@@ -3786,7 +3773,7 @@ public class Table extends AbstractSelect implements Action.Container,
refreshRowCache();
containerChangeToBeRendered = true;
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -4470,7 +4457,7 @@ public class Table extends AbstractSelect implements Action.Container,
* would support this.
*
* @return True iff sorting is disabled.
- * @deprecated Use {@link #isSortEnabled()} instead
+ * @deprecated As of 7.0, use {@link #isSortEnabled()} instead
*/
@Deprecated
public boolean isSortDisabled() {
@@ -4491,7 +4478,7 @@ public class Table extends AbstractSelect implements Action.Container,
*
* @param sortDisabled
* True iff sorting is disabled.
- * @deprecated Use {@link #setSortEnabled(boolean)} instead
+ * @deprecated As of 7.0, use {@link #setSortEnabled(boolean)} instead
*/
@Deprecated
public void setSortDisabled(boolean sortDisabled) {
@@ -4511,7 +4498,7 @@ public class Table extends AbstractSelect implements Action.Container,
public void setSortEnabled(boolean sortEnabled) {
if (this.sortEnabled != sortEnabled) {
this.sortEnabled = sortEnabled;
- requestRepaint();
+ markAsDirty();
}
}
@@ -4608,7 +4595,7 @@ public class Table extends AbstractSelect implements Action.Container,
// some ancestor still disabled, don't update children
return;
} else {
- requestRepaintAll();
+ markAsDirtyRecursive();
}
}
@@ -4620,7 +4607,7 @@ public class Table extends AbstractSelect implements Action.Container,
*/
public void setDragMode(TableDragMode newDragMode) {
dragMode = newDragMode;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -4704,7 +4691,7 @@ public class Table extends AbstractSelect implements Action.Container,
*/
public void setMultiSelectMode(MultiSelectMode mode) {
multiSelectMode = mode;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -5012,7 +4999,7 @@ public class Table extends AbstractSelect implements Action.Container,
columnFooters.put(propertyId, footer);
}
- requestRepaint();
+ markAsDirty();
}
/**
@@ -5028,7 +5015,7 @@ public class Table extends AbstractSelect implements Action.Container,
public void setFooterVisible(boolean visible) {
if (visible != columnFootersVisible) {
columnFootersVisible = visible;
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/TextArea.java b/server/src/com/vaadin/ui/TextArea.java
index fed06b561a..0dc9722eb3 100644
--- a/server/src/com/vaadin/ui/TextArea.java
+++ b/server/src/com/vaadin/ui/TextArea.java
@@ -81,7 +81,7 @@ public class TextArea extends AbstractTextField {
}
@Override
- public TextAreaState getState() {
+ protected TextAreaState getState() {
return (TextAreaState) super.getState();
}
@@ -96,7 +96,6 @@ public class TextArea extends AbstractTextField {
rows = 0;
}
getState().setRows(rows);
- requestRepaint();
}
/**
@@ -117,7 +116,6 @@ public class TextArea extends AbstractTextField {
*/
public void setWordwrap(boolean wordwrap) {
getState().setWordwrap(wordwrap);
- requestRepaint();
}
/**
diff --git a/server/src/com/vaadin/ui/Tree.java b/server/src/com/vaadin/ui/Tree.java
index dda0a78aff..2d6673a67d 100644
--- a/server/src/com/vaadin/ui/Tree.java
+++ b/server/src/com/vaadin/ui/Tree.java
@@ -184,7 +184,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
*/
public boolean expandItem(Object itemId) {
boolean success = expandItem(itemId, true);
- requestRepaint();
+ markAsDirty();
return success;
}
@@ -215,7 +215,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
expandedItemId = itemId;
if (initialPaint) {
- requestRepaint();
+ markAsDirty();
} else if (sendChildTree) {
requestPartialRepaint();
}
@@ -225,13 +225,13 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
}
@Override
- public void requestRepaint() {
- super.requestRepaint();
+ public void markAsDirty() {
+ super.markAsDirty();
partialUpdate = false;
}
private void requestPartialRepaint() {
- super.requestRepaint();
+ super.markAsDirty();
partialUpdate = true;
}
@@ -262,7 +262,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
todo.addAll(getChildren(id));
}
}
- requestRepaint();
+ markAsDirty();
return result;
}
@@ -282,7 +282,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
// Collapse
expanded.remove(itemId);
- requestRepaint();
+ markAsDirty();
fireCollapseEvent(itemId);
return true;
@@ -349,7 +349,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
public void setSelectable(boolean selectable) {
if (this.selectable != selectable) {
this.selectable = selectable;
- requestRepaint();
+ markAsDirty();
}
}
@@ -362,7 +362,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
public void setMultiselectMode(MultiSelectMode mode) {
if (multiSelectMode != mode && mode != null) {
multiSelectMode = mode;
- requestRepaint();
+ markAsDirty();
}
}
@@ -478,7 +478,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
if (!isNullSelectionAllowed()
&& (id == null || id == getNullSelectionItemId())) {
// skip empty selection if nullselection is not allowed
- requestRepaint();
+ markAsDirty();
} else if (id != null && containsId(id)) {
s.add(id);
}
@@ -486,7 +486,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
if (!isNullSelectionAllowed() && s.size() < 1) {
// empty selection not allowed, keep old value
- requestRepaint();
+ markAsDirty();
return;
}
@@ -796,7 +796,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
final boolean success = ((Container.Hierarchical) items)
.setChildrenAllowed(itemId, areChildrenAllowed);
if (success) {
- requestRepaint();
+ markAsDirty();
}
return success;
}
@@ -812,7 +812,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
final boolean success = ((Container.Hierarchical) items).setParent(
itemId, newParentId);
if (success) {
- requestRepaint();
+ markAsDirty();
}
return success;
}
@@ -1036,7 +1036,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
if (!actionHandlers.contains(actionHandler)) {
actionHandlers.add(actionHandler);
- requestRepaint();
+ markAsDirty();
}
}
}
@@ -1058,7 +1058,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
actionMapper = null;
}
- requestRepaint();
+ markAsDirty();
}
}
@@ -1068,7 +1068,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
public void removeAllActionHandlers() {
actionHandlers = null;
actionMapper = null;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1182,7 +1182,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
public void setItemStyleGenerator(ItemStyleGenerator itemStyleGenerator) {
if (this.itemStyleGenerator != itemStyleGenerator) {
this.itemStyleGenerator = itemStyleGenerator;
- requestRepaint();
+ markAsDirty();
}
}
@@ -1342,7 +1342,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
*/
public void setDragMode(TreeDragMode dragMode) {
this.dragMode = dragMode;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -1601,7 +1601,7 @@ public class Tree extends AbstractSelect implements Container.Hierarchical,
public void setItemDescriptionGenerator(ItemDescriptionGenerator generator) {
if (generator != itemDescriptionGenerator) {
itemDescriptionGenerator = generator;
- requestRepaint();
+ markAsDirty();
}
}
diff --git a/server/src/com/vaadin/ui/TreeTable.java b/server/src/com/vaadin/ui/TreeTable.java
index 7548a4840b..05757a6d09 100644
--- a/server/src/com/vaadin/ui/TreeTable.java
+++ b/server/src/com/vaadin/ui/TreeTable.java
@@ -463,7 +463,7 @@ public class TreeTable extends Table implements Hierarchical {
// been processed
clearFocusedRowPending = true;
}
- requestRepaint();
+ markAsDirty();
}
@Override
@@ -561,7 +561,7 @@ public class TreeTable extends Table implements Hierarchical {
}
if (containerSupportsPartialUpdates && !forceFullRefresh) {
- requestRepaint();
+ markAsDirty();
} else {
// For containers that do not send item set change events, always do
// full repaint instead of partial row update.
@@ -826,7 +826,7 @@ public class TreeTable extends Table implements Hierarchical {
*/
public void setAnimationsEnabled(boolean animationsEnabled) {
this.animationsEnabled = animationsEnabled;
- requestRepaint();
+ markAsDirty();
}
private static final Logger getLogger() {
diff --git a/server/src/com/vaadin/ui/TwinColSelect.java b/server/src/com/vaadin/ui/TwinColSelect.java
index 80f4ae49c8..891e695a5f 100644
--- a/server/src/com/vaadin/ui/TwinColSelect.java
+++ b/server/src/com/vaadin/ui/TwinColSelect.java
@@ -79,7 +79,7 @@ public class TwinColSelect extends AbstractSelect {
}
if (this.columns != columns) {
this.columns = columns;
- requestRepaint();
+ markAsDirty();
}
}
@@ -111,7 +111,7 @@ public class TwinColSelect extends AbstractSelect {
}
if (this.rows != rows) {
this.rows = rows;
- requestRepaint();
+ markAsDirty();
}
}
@@ -159,7 +159,7 @@ public class TwinColSelect extends AbstractSelect {
*/
public void setRightColumnCaption(String rightColumnCaption) {
this.rightColumnCaption = rightColumnCaption;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -179,7 +179,7 @@ public class TwinColSelect extends AbstractSelect {
*/
public void setLeftColumnCaption(String leftColumnCaption) {
this.leftColumnCaption = leftColumnCaption;
- requestRepaint();
+ markAsDirty();
}
/**
diff --git a/server/src/com/vaadin/ui/Upload.java b/server/src/com/vaadin/ui/Upload.java
index c4f15ebea9..619db07eea 100644
--- a/server/src/com/vaadin/ui/Upload.java
+++ b/server/src/com/vaadin/ui/Upload.java
@@ -138,7 +138,7 @@ public class Upload extends AbstractComponent implements Component.Focusable,
int id = (Integer) variables.get("pollForStart");
if (!isUploading && id == nextid) {
notStarted = true;
- requestRepaint();
+ markAsDirty();
} else {
}
}
@@ -829,7 +829,7 @@ public class Upload extends AbstractComponent implements Component.Focusable,
isUploading = false;
contentLength = -1;
interrupted = false;
- requestRepaint();
+ markAsDirty();
}
public boolean isUploading() {
@@ -856,33 +856,6 @@ public class Upload extends AbstractComponent implements Component.Focusable,
}
/**
- * This method is deprecated, use addListener(ProgressListener) instead.
- *
- * @deprecated Use addListener(ProgressListener) instead.
- * @param progressListener
- */
- @Deprecated
- public void setProgressListener(ProgressListener progressListener) {
- addListener(progressListener);
- }
-
- /**
- * This method is deprecated.
- *
- * @deprecated Replaced with addListener/removeListener
- * @return listener
- *
- */
- @Deprecated
- public ProgressListener getProgressListener() {
- if (progressListeners == null || progressListeners.isEmpty()) {
- return null;
- } else {
- return progressListeners.iterator().next();
- }
- }
-
- /**
* ProgressListener receives events to track progress of upload.
*/
public interface ProgressListener extends Serializable {
@@ -928,7 +901,7 @@ public class Upload extends AbstractComponent implements Component.Focusable,
*/
public void setButtonCaption(String buttonCaption) {
this.buttonCaption = buttonCaption;
- requestRepaint();
+ markAsDirty();
}
/**
@@ -949,14 +922,14 @@ public class Upload extends AbstractComponent implements Component.Focusable,
* fired.
*/
public void submitUpload() {
- requestRepaint();
+ markAsDirty();
forceSubmit = true;
}
@Override
- public void requestRepaint() {
+ public void markAsDirty() {
forceSubmit = false;
- super.requestRepaint();
+ super.markAsDirty();
}
/*
@@ -1009,7 +982,7 @@ public class Upload extends AbstractComponent implements Component.Focusable,
fireUploadSuccess(event.getFileName(), event.getMimeType(),
event.getContentLength());
endUpload();
- requestRepaint();
+ markAsDirty();
}
@Override
diff --git a/server/src/com/vaadin/ui/Video.java b/server/src/com/vaadin/ui/Video.java
index 95a38c59d5..b54d404da6 100644
--- a/server/src/com/vaadin/ui/Video.java
+++ b/server/src/com/vaadin/ui/Video.java
@@ -44,7 +44,7 @@ import com.vaadin.terminal.gwt.server.ResourceReference;
public class Video extends AbstractMedia {
@Override
- public VideoState getState() {
+ protected VideoState getState() {
return (VideoState) super.getState();
}
@@ -80,7 +80,6 @@ public class Video extends AbstractMedia {
*/
public void setPoster(Resource poster) {
getState().setPoster(ResourceReference.create(poster));
- requestRepaint();
}
/**
diff --git a/server/src/com/vaadin/ui/Window.java b/server/src/com/vaadin/ui/Window.java
index d1d2c25d8b..d79588cc63 100644
--- a/server/src/com/vaadin/ui/Window.java
+++ b/server/src/com/vaadin/ui/Window.java
@@ -174,14 +174,14 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
final int x = positionx.intValue();
// This is information from the client so it is already using the
// position. No need to repaint.
- setPositionX(x < 0 ? -1 : x, false);
+ setPositionX(x < 0 ? -1 : x);
}
final Integer positiony = (Integer) variables.get("positiony");
if (positiony != null) {
final int y = positiony.intValue();
// This is information from the client so it is already using the
// position. No need to repaint.
- setPositionY(y < 0 ? -1 : y, false);
+ setPositionY(y < 0 ? -1 : y);
}
if (isClosable()) {
@@ -255,26 +255,8 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
* @since 4.0.0
*/
public void setPositionX(int positionX) {
- setPositionX(positionX, true);
- }
-
- /**
- * Sets the distance of Window left border in pixels from left border of the
- * containing (main window).
- *
- * @param positionX
- * the Distance of Window left border in pixels from left border
- * of the containing (main window). or -1 if unspecified.
- * @param repaintRequired
- * true if the window needs to be repainted, false otherwise
- * @since 6.3.4
- */
- private void setPositionX(int positionX, boolean repaintRequired) {
getState().setPositionX(positionX);
getState().setCentered(false);
- if (repaintRequired) {
- requestRepaint();
- }
}
/**
@@ -301,27 +283,8 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
* @since 4.0.0
*/
public void setPositionY(int positionY) {
- setPositionY(positionY, true);
- }
-
- /**
- * Sets the distance of Window top border in pixels from top border of the
- * containing (main window).
- *
- * @param positionY
- * the Distance of Window top border in pixels from top border of
- * the containing (main window). or -1 if unspecified
- * @param repaintRequired
- * true if the window needs to be repainted, false otherwise
- *
- * @since 6.3.4
- */
- private void setPositionY(int positionY, boolean repaintRequired) {
getState().setPositionY(positionY);
getState().setCentered(false);
- if (repaintRequired) {
- requestRepaint();
- }
}
private static final Method WINDOW_CLOSE_METHOD;
@@ -530,7 +493,7 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
}
}
bringToFront = Integer.valueOf(maxBringToFront + 1);
- requestRepaint();
+ markAsDirty();
}
/**
@@ -543,7 +506,6 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
public void setModal(boolean modal) {
getState().setModal(modal);
center();
- requestRepaint();
}
/**
@@ -561,7 +523,6 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
*/
public void setResizable(boolean resizable) {
getState().setResizable(resizable);
- requestRepaint();
}
/**
@@ -595,7 +556,6 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
*/
public void setResizeLazy(boolean resizeLazy) {
getState().setResizeLazy(resizeLazy);
- requestRepaint();
}
/**
@@ -609,7 +569,6 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
*/
public void center() {
getState().setCentered(true);
- requestRepaint();
}
/**
@@ -674,7 +633,6 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
*/
public void setDraggable(boolean draggable) {
getState().setDraggable(draggable);
- requestRepaint();
}
/*
@@ -838,7 +796,7 @@ public class Window extends Panel implements FocusNotifier, BlurNotifier,
}
@Override
- public WindowState getState() {
+ protected WindowState getState() {
return (WindowState) super.getState();
}
}
diff --git a/server/src/com/vaadin/ui/themes/BaseTheme.java b/server/src/com/vaadin/ui/themes/BaseTheme.java
index bdb0087d2e..9e95627eec 100644
--- a/server/src/com/vaadin/ui/themes/BaseTheme.java
+++ b/server/src/com/vaadin/ui/themes/BaseTheme.java
@@ -45,18 +45,6 @@ public class BaseTheme {
public static final String BUTTON_LINK = "link";
/**
- * Removes extra decorations from the panel.
- *
- * @deprecated Base theme does not implement this style, but it is defined
- * here since it has been a part of the framework before
- * multiple themes were available. Use the constant provided by
- * the theme you're using instead, e.g.
- * {@link Reindeer#PANEL_LIGHT} or {@link Runo#PANEL_LIGHT}.
- */
- @Deprecated
- public static final String PANEL_LIGHT = "light";
-
- /**
* Adds the connector lines between a parent node and its child nodes to
* indicate the tree hierarchy better.
*/
diff --git a/server/src/com/vaadin/ui/themes/Reindeer.java b/server/src/com/vaadin/ui/themes/Reindeer.java
index 7bc6720465..037f59d7b4 100644
--- a/server/src/com/vaadin/ui/themes/Reindeer.java
+++ b/server/src/com/vaadin/ui/themes/Reindeer.java
@@ -48,12 +48,6 @@ public class Reindeer extends BaseTheme {
*/
public static final String LABEL_SMALL = "light";
- /**
- * @deprecated Use {@link #LABEL_SMALL} instead.
- */
- @Deprecated
- public static final String LABEL_LIGHT = "small";
-
/***************************************************************************
*
* Button styles
@@ -68,12 +62,6 @@ public class Reindeer extends BaseTheme {
public static final String BUTTON_DEFAULT = "primary";
/**
- * @deprecated Use {@link #BUTTON_DEFAULT} instead
- */
- @Deprecated
- public static final String BUTTON_PRIMARY = BUTTON_DEFAULT;
-
- /**
* Small sized button, use for context specific actions for example
*/
public static final String BUTTON_SMALL = "small";
@@ -129,12 +117,6 @@ public class Reindeer extends BaseTheme {
public static final String TABSHEET_SMALL = "bar";
/**
- * @deprecated Use {@link #TABSHEET_SMALL} instead.
- */
- @Deprecated
- public static final String TABSHEET_BAR = TABSHEET_SMALL;
-
- /**
* Removes borders and background color from the tab sheet. The tabs are
* presented with minimal lines indicating the selected tab.
*/