aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/src/com/vaadin/ui/AbstractComponent.java28
-rw-r--r--uitest/src/com/vaadin/tests/components/abstractfield/AbstractComponentStyleNameTest.java115
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());
+ }
+}