diff options
-rw-r--r-- | server/src/com/vaadin/ui/AbstractComponent.java | 28 | ||||
-rw-r--r-- | uitest/src/com/vaadin/tests/components/abstractfield/AbstractComponentStyleNameTest.java | 115 |
2 files changed, 143 insertions, 0 deletions
diff --git a/server/src/com/vaadin/ui/AbstractComponent.java b/server/src/com/vaadin/ui/AbstractComponent.java index 27d97d5e03..338898372a 100644 --- a/server/src/com/vaadin/ui/AbstractComponent.java +++ b/server/src/com/vaadin/ui/AbstractComponent.java @@ -243,6 +243,34 @@ public abstract class AbstractComponent extends AbstractClientConnector } } + /** + * Adds or removes a style name. Multiple styles can be specified as a + * space-separated list of style names. + * + * If the {@code add} parameter is true, the style name is added to the + * component. If the {@code add} parameter is false, the style name is + * removed from the component. + * <p> + * Functionally this is equivalent to using {@link #addStyleName(String)} or + * {@link #removeStyleName(String)} + * + * @since + * @param style + * the style name to be added or removed + * @param add + * <code>true</code> to add the given style, <code>false</code> + * to remove it + * @see #addStyleName(String) + * @see #removeStyleName(String) + */ + public void setStyleName(String style, boolean add) { + if (add) { + addStyleName(style); + } else { + removeStyleName(style); + } + } + /* * Get's the component's caption. Don't add a JavaDoc comment here, we use * the default documentation from implemented interface. diff --git a/uitest/src/com/vaadin/tests/components/abstractfield/AbstractComponentStyleNameTest.java b/uitest/src/com/vaadin/tests/components/abstractfield/AbstractComponentStyleNameTest.java new file mode 100644 index 0000000000..41ba5571ad --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/abstractfield/AbstractComponentStyleNameTest.java @@ -0,0 +1,115 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.tests.components.abstractfield; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.Button; + +public class AbstractComponentStyleNameTest { + + AbstractComponent c; + + @Before + public void setup() { + c = new Button(); + } + + @Test + public void add() { + c.addStyleName("foo"); + Assert.assertEquals("foo", c.getStyleName()); + } + + @Test + public void addWithHeadingSpace() { + c.addStyleName(" foo"); + Assert.assertEquals("foo", c.getStyleName()); + } + + @Test + public void addWithTrailingSpace() { + c.addStyleName("foo "); + Assert.assertEquals("foo", c.getStyleName()); + } + + @Test + public void removeWithHeadingSpace() { + c.setStyleName("foo"); + c.removeStyleName(" foo"); + Assert.assertEquals("", c.getStyleName()); + } + + @Test + public void removeWithTrailingSpace() { + c.setStyleName("foo"); + c.removeStyleName("foo "); + Assert.assertEquals("", c.getStyleName()); + } + + @Test + public void addMultipleTimes() { + c.addStyleName("foo"); + c.addStyleName("foo"); + Assert.assertEquals("foo", c.getStyleName()); + } + + @Test + public void setStyleAdd() { + c.setStyleName("foo", true); + Assert.assertEquals("foo", c.getStyleName()); + } + + @Test + public void setStyleMultipleAdd() { + c.setStyleName("foo", true); + c.setStyleName("foo", true); + Assert.assertEquals("foo", c.getStyleName()); + } + + @Test + public void setStyleRemove() { + c.addStyleName("foo"); + c.setStyleName("foo", false); + Assert.assertEquals("", c.getStyleName()); + } + + @Test + public void setStyleMultipleRemove() { + c.addStyleName("foo"); + c.setStyleName("foo", false); + c.setStyleName("foo", false); + Assert.assertEquals("", c.getStyleName()); + } + + @Test + public void remove() { + c.addStyleName("foo"); + c.removeStyleName("foo"); + Assert.assertEquals("", c.getStyleName()); + } + + @Test + public void removeMultipleTimes() { + c.addStyleName("foo"); + c.removeStyleName("foo"); + c.removeStyleName("foo"); + Assert.assertEquals("", c.getStyleName()); + } +} |