diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2015-03-26 15:52:08 +0200 |
---|---|---|
committer | Johannes Dahlström <johannesd@vaadin.com> | 2015-04-01 13:11:31 +0000 |
commit | 99882e2958e5692fbe52bd478a5c84ac65266ce6 (patch) | |
tree | 2bbcc5c884094f76cd71f4deb9c56e2942482171 | |
parent | 3ab82ace45827365e87f9540fad3dffaed0679b5 (diff) | |
download | vaadin-framework-99882e2958e5692fbe52bd478a5c84ac65266ce6.tar.gz vaadin-framework-99882e2958e5692fbe52bd478a5c84ac65266ce6.zip |
Fix declarative support for AbstractColorPicker (#16336)
Change-Id: Icd85e028aa3ae9592fc795cadf00f1f8b7eae552
-rw-r--r-- | server/src/com/vaadin/ui/AbstractColorPicker.java | 111 | ||||
-rw-r--r-- | server/tests/src/com/vaadin/tests/server/component/colorpicker/AbstractColorPickerDeclarativeTest.java | 87 |
2 files changed, 198 insertions, 0 deletions
diff --git a/server/src/com/vaadin/ui/AbstractColorPicker.java b/server/src/com/vaadin/ui/AbstractColorPicker.java index 608a42d33b..3212d1b23f 100644 --- a/server/src/com/vaadin/ui/AbstractColorPicker.java +++ b/server/src/com/vaadin/ui/AbstractColorPicker.java @@ -17,6 +17,10 @@ package com.vaadin.ui; import java.io.Serializable; import java.lang.reflect.Method; +import java.util.Collection; + +import org.jsoup.nodes.Attributes; +import org.jsoup.nodes.Element; import com.vaadin.shared.ui.colorpicker.Color; import com.vaadin.shared.ui.colorpicker.ColorPickerServerRpc; @@ -27,6 +31,8 @@ import com.vaadin.ui.components.colorpicker.ColorChangeEvent; import com.vaadin.ui.components.colorpicker.ColorChangeListener; import com.vaadin.ui.components.colorpicker.ColorPickerPopup; import com.vaadin.ui.components.colorpicker.ColorSelector; +import com.vaadin.ui.declarative.DesignAttributeHandler; +import com.vaadin.ui.declarative.DesignContext; /** * An abstract class that defines default implementation for a color picker @@ -276,6 +282,16 @@ public abstract class AbstractColorPicker extends AbstractComponent implements } /** + * Gets the style for the popup window + * + * @since + * @return popup window style + */ + public PopupStyle getPopupStyle() { + return popupStyle; + } + + /** * Set the visibility of the RGB Tab * * @param visible @@ -294,6 +310,16 @@ public abstract class AbstractColorPicker extends AbstractComponent implements } /** + * Gets the visibility of the RGB Tab + * + * @since + * @return visibility of the RGB tab + */ + public boolean getRGBVisibility() { + return rgbVisible; + } + + /** * Set the visibility of the HSV Tab * * @param visible @@ -311,6 +337,16 @@ public abstract class AbstractColorPicker extends AbstractComponent implements } /** + * Gets the visibility of the HSV Tab + * + * @since + * @return visibility of the HSV tab + */ + public boolean getHSVVisibility() { + return hsvVisible; + } + + /** * Set the visibility of the Swatches Tab * * @param visible @@ -328,6 +364,16 @@ public abstract class AbstractColorPicker extends AbstractComponent implements } /** + * Gets the visibility of the Swatches Tab + * + * @since + * @return visibility of the swatches tab + */ + public boolean getSwatchesVisibility() { + return swatchesVisible; + } + + /** * Sets the visibility of the Color History * * @param visible @@ -341,6 +387,16 @@ public abstract class AbstractColorPicker extends AbstractComponent implements } /** + * Gets the visibility of the Color History + * + * @since + * @return visibility of color history + */ + public boolean getHistoryVisibility() { + return historyVisible; + } + + /** * Sets the visibility of the CSS color code text field * * @param visible @@ -353,6 +409,16 @@ public abstract class AbstractColorPicker extends AbstractComponent implements } } + /** + * Gets the visibility of CSS color code text field + * + * @since + * @return visibility of css color code text field + */ + public boolean getTextfieldVisibility() { + return textfieldVisible; + } + @Override protected ColorPickerState getState() { return (ColorPickerState) super.getState(); @@ -473,4 +539,49 @@ public abstract class AbstractColorPicker extends AbstractComponent implements public boolean isHtmlContentAllowed() { return isCaptionAsHtml(); } + + @Override + public void readDesign(Element design, DesignContext designContext) { + super.readDesign(design, designContext); + + Attributes attributes = design.attributes(); + if (design.hasAttr("color")) { + // Ignore the # character + String hexColor = DesignAttributeHandler.readAttribute("color", + attributes, String.class).substring(1); + setColor(new Color(Integer.parseInt(hexColor, 16))); + } + if (design.hasAttr("popup-style")) { + setPopupStyle(PopupStyle.valueOf("POPUP_" + + attributes.get("popup-style").toUpperCase())); + } + if (design.hasAttr("position")) { + String[] position = attributes.get("position").split(","); + setPosition(Integer.parseInt(position[0]), + Integer.parseInt(position[1])); + } + } + + @Override + public void writeDesign(Element design, DesignContext designContext) { + super.writeDesign(design, designContext); + + Attributes attribute = design.attributes(); + DesignAttributeHandler.writeAttribute("color", attribute, + color.getCSS(), Color.WHITE.getCSS(), String.class); + DesignAttributeHandler.writeAttribute("popup-style", attribute, + (popupStyle == PopupStyle.POPUP_NORMAL ? "normal" : "simple"), + "normal", String.class); + DesignAttributeHandler.writeAttribute("position", attribute, positionX + + "," + positionY, "0,0", String.class); + } + + @Override + protected Collection<String> getCustomAttributes() { + Collection<String> result = super.getCustomAttributes(); + result.add("color"); + result.add("position"); + result.add("popup-style"); + return result; + } } diff --git a/server/tests/src/com/vaadin/tests/server/component/colorpicker/AbstractColorPickerDeclarativeTest.java b/server/tests/src/com/vaadin/tests/server/component/colorpicker/AbstractColorPickerDeclarativeTest.java new file mode 100644 index 0000000000..59b2efdc42 --- /dev/null +++ b/server/tests/src/com/vaadin/tests/server/component/colorpicker/AbstractColorPickerDeclarativeTest.java @@ -0,0 +1,87 @@ +/* + * 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.server.component.colorpicker; + +import org.junit.Test; + +import com.vaadin.shared.ui.colorpicker.Color; +import com.vaadin.tests.design.DeclarativeTestBase; +import com.vaadin.ui.AbstractColorPicker; +import com.vaadin.ui.AbstractColorPicker.PopupStyle; +import com.vaadin.ui.ColorPicker; +import com.vaadin.ui.ColorPickerArea; + +public class AbstractColorPickerDeclarativeTest extends + DeclarativeTestBase<AbstractColorPicker> { + + @Test + public void testAllAbstractColorPickerFeatures() { + String design = "<v-color-picker color='#fafafa' default-caption-enabled='true' position='100,100'" + + " popup-style='simple' rgb-visibility='false' hsv-visibility='false'" + + " history-visibility=false textfield-visibility=false />"; + ColorPicker colorPicker = new ColorPicker(); + int colorInt = Integer.parseInt("fafafa", 16); + colorPicker.setColor(new Color(colorInt)); + colorPicker.setDefaultCaptionEnabled(true); + colorPicker.setPosition(100, 100); + colorPicker.setPopupStyle(PopupStyle.POPUP_SIMPLE); + colorPicker.setRGBVisibility(false); + colorPicker.setHSVVisibility(false); + colorPicker.setSwatchesVisibility(true); + colorPicker.setHistoryVisibility(false); + colorPicker.setTextfieldVisibility(false); + + testWrite(design, colorPicker); + testRead(design, colorPicker); + } + + @Test + public void testEmptyColorPicker() { + String design = "<v-color-picker />"; + ColorPicker colorPicker = new ColorPicker(); + testRead(design, colorPicker); + testWrite(design, colorPicker); + } + + @Test + public void testAllAbstractColorPickerAreaFeatures() { + String design = "<v-color-picker-area color='#fafafa' default-caption-enabled='true' position='100,100'" + + " popup-style='simple' rgb-visibility='false' hsv-visibility='false'" + + " history-visibility=false textfield-visibility=false />"; + AbstractColorPicker colorPicker = new ColorPickerArea(); + int colorInt = Integer.parseInt("fafafa", 16); + colorPicker.setColor(new Color(colorInt)); + colorPicker.setDefaultCaptionEnabled(true); + colorPicker.setPosition(100, 100); + colorPicker.setPopupStyle(PopupStyle.POPUP_SIMPLE); + colorPicker.setRGBVisibility(false); + colorPicker.setHSVVisibility(false); + colorPicker.setSwatchesVisibility(true); + colorPicker.setHistoryVisibility(false); + colorPicker.setTextfieldVisibility(false); + + testWrite(design, colorPicker); + testRead(design, colorPicker); + } + + @Test + public void testEmptyColorPickerArea() { + String design = "<v-color-picker-area />"; + AbstractColorPicker colorPicker = new ColorPickerArea(); + testRead(design, colorPicker); + testWrite(design, colorPicker); + } +} |