aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/main/java/com/vaadin/ui/HasStyleNames.java
diff options
context:
space:
mode:
authorKnoobie <Knoobie@gmx.de>2018-12-18 14:29:59 +0100
committerSun Zhe <31067185+ZheSun88@users.noreply.github.com>2018-12-18 15:29:59 +0200
commit353ba29cfdefddb032122cbeae5f02f6d9de76ba (patch)
tree05ee1da595faaab05976e9ab339472799648135b /server/src/main/java/com/vaadin/ui/HasStyleNames.java
parent9c9c962549eb04adac87b0cfe26d24b17843fb6a (diff)
downloadvaadin-framework-353ba29cfdefddb032122cbeae5f02f6d9de76ba.tar.gz
vaadin-framework-353ba29cfdefddb032122cbeae5f02f6d9de76ba.zip
Checkbox allow customizing of input and label classNames. (#11372)
* add client side integration for custom styles for checkbox.label and checkbox.input * add server side integration for checkbox element styling * add server side tests * add client side test
Diffstat (limited to 'server/src/main/java/com/vaadin/ui/HasStyleNames.java')
-rw-r--r--server/src/main/java/com/vaadin/ui/HasStyleNames.java179
1 files changed, 179 insertions, 0 deletions
diff --git a/server/src/main/java/com/vaadin/ui/HasStyleNames.java b/server/src/main/java/com/vaadin/ui/HasStyleNames.java
new file mode 100644
index 0000000000..953711b1e6
--- /dev/null
+++ b/server/src/main/java/com/vaadin/ui/HasStyleNames.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright 2000-2018 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.ui;
+
+import java.io.Serializable;
+
+/**
+ * Implemented by components which support style names.
+ *
+ * <p>
+ * Each style name will occur only once as specified and it is not
+ * prefixed with the style name of the component.
+ * </p>
+ *
+ * @since
+ */
+public interface HasStyleNames extends Serializable {
+
+ /**
+ * Gets all user-defined CSS style names of a component. If the component
+ * has multiple style names defined, the return string is a space-separated
+ * list of style names. Built-in style names defined in Vaadin or GWT are
+ * not returned.
+ *
+ * <p>
+ * The style names are returned only in the basic form in which they were
+ * added.
+ * </p>
+ *
+ * @since
+ * @return the style name or a space-separated list of user-defined style
+ * names of the component
+ * @see #setStyleName(String)
+ * @see #addStyleName(String)
+ * @see #removeStyleName(String)
+ */
+ String getStyleName();
+
+ /**
+ * Sets one or more user-defined style names of the component, replacing any
+ * previous user-defined styles. Multiple styles can be specified as a
+ * space-separated list of style names. The style names must be valid CSS
+ * class names.
+ *
+ * <p>
+ * It is normally a good practice to use {@link #addStyleName(String)
+ * addStyleName()} rather than this setter, as different software
+ * abstraction layers can then add their own styles without accidentally
+ * removing those defined in other layers.
+ * </p>
+ *
+ * @since
+ * @param style
+ * the new style or styles of the component as a space-separated
+ * list
+ * @see #getStyleName()
+ * @see #addStyleName(String)
+ * @see #removeStyleName(String)
+ */
+ void setStyleName(String style);
+
+ /**
+ * 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)
+ */
+ default void setStyleName(String style, boolean add) {
+ if (add) {
+ addStyleName(style);
+ } else {
+ removeStyleName(style);
+ }
+ }
+
+ /**
+ * Adds one or more style names to this component. Multiple styles can be
+ * specified as a space-separated list of style names. The style name will
+ * be rendered as a HTML class name, which can be used in a CSS definition.
+ *
+ *
+ * @since
+ * @param style
+ * the new style to be added to the component
+ * @see #getStyleName()
+ * @see #setStyleName(String)
+ * @see #removeStyleName(String)
+ */
+ void addStyleName(String style);
+
+ /**
+ * Adds one or more style names to this component by using one or multiple
+ * parameters.
+ *
+ * @since
+ * @param styles
+ * the style name or style names to be added to the component
+ * @see #addStyleName(String)
+ * @see #setStyleName(String)
+ * @see #removeStyleName(String)
+ */
+ default void addStyleNames(String... styles) {
+ for (String style : styles) {
+ addStyleName(style);
+ }
+ }
+
+ /**
+ * Removes one or more style names from component. Multiple styles can be
+ * specified as a space-separated list of style names.
+ *
+ * <p>
+ * The parameter must be a valid CSS style name. Only user-defined style
+ * names added with {@link #addStyleName(String) addStyleName()} or
+ * {@link #setStyleName(String) setStyleName()} can be removed; built-in
+ * style names defined in Vaadin or GWT can not be removed.
+ * </p>
+ *
+ * @since
+ * @param style
+ * the style name or style names to be removed
+ * @see #getStyleName()
+ * @see #setStyleName(String)
+ * @see #addStyleName(String)
+ */
+ void removeStyleName(String style);
+
+ /**
+ * Removes one or more style names from component. Multiple styles can be
+ * specified by using multiple parameters.
+ *
+ * <p>
+ * The parameter must be a valid CSS style name. Only user-defined style
+ * names added with {@link #addStyleName(String) addStyleName()} or
+ * {@link #setStyleName(String) setStyleName()} can be removed; built-in
+ * style names defined in Vaadin or GWT can not be removed.
+ * </p>
+ *
+ * @since
+ * @param styles
+ * the style name or style names to be removed
+ * @see #removeStyleName(String)
+ * @see #setStyleName(String)
+ * @see #addStyleName(String)
+ */
+ default void removeStyleNames(String... styles) {
+ for (String style : styles) {
+ removeStyleName(style);
+ }
+ }
+
+}