From 5a1ffa814230c3da751ab5953da0fb0ae75c4c80 Mon Sep 17 00:00:00 2001 From: John Ahlroos Date: Thu, 24 Apr 2014 21:12:15 +0300 Subject: Allow editing colorpicker values in colorpicker in textfield #13469 This fix adds support for typing in color values according to http://www.w3schools.com/cssref/css_colors_legal.asp into the colorpicker popup input textfield. Change-Id: If14ead791725c3052c05aa31e12e237e90c32348 --- .../colorpicker/ColorPickerInputFormatsTest.java | 98 ++++ .../components/colorpicker/ColorPickerTest.html | 94 ++-- .../components/colorpicker/ColorPickerTest.java | 492 -------------------- .../components/colorpicker/ColorPickerTestUI.java | 509 +++++++++++++++++++++ 4 files changed, 654 insertions(+), 539 deletions(-) create mode 100644 uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerInputFormatsTest.java delete mode 100644 uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTest.java create mode 100644 uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTestUI.java (limited to 'uitest/src') diff --git a/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerInputFormatsTest.java b/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerInputFormatsTest.java new file mode 100644 index 0000000000..90c01116cc --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerInputFormatsTest.java @@ -0,0 +1,98 @@ +/* + * 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.colorpicker; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.Keys; +import org.openqa.selenium.WebElement; + +import com.vaadin.tests.tb3.MultiBrowserTest; + +/** + * Test legal color values according to + * http://www.w3schools.com/cssref/css_colors_legal.asp + */ +public class ColorPickerInputFormatsTest extends MultiBrowserTest { + + @Override + protected Class getUIClass() { + return ColorPickerTestUI.class; + } + + @Test + public void testRGBValue() throws Exception { + openTestURL(); + + setColorpickerValue("rgb(100,100,100)"); + + assertEquals("#646464", getColorpickerValue()); + } + + @Test + public void testRGBAValue() { + openTestURL(); + + setColorpickerValue("rgba(100,100,100, 0.5)"); + + assertEquals("#646464", getColorpickerValue()); + } + + @Test + public void testHSLValue() { + openTestURL(); + + setColorpickerValue("hsl(120,100%,50%)"); + + assertEquals("#00ff00", getColorpickerValue()); + } + + @Test + public void testHSLAValue() { + openTestURL(); + + setColorpickerValue("hsla(120,100%,50%, 0.3)"); + + assertEquals("#00ff00", getColorpickerValue()); + } + + private void setColorpickerValue(String value) { + + // Open colorpicker + getDriver().findElement(By.id("colorpicker1")).click(); + + // Add RGB value + WebElement field = getDriver().findElement( + By.className("v-colorpicker-preview-textfield")); + + // Select all text + field.sendKeys(Keys.chord(Keys.CONTROL, "a")); + + // Replace with rgb value + field.sendKeys(value); + + // Submit + field.sendKeys(Keys.ENTER); + } + + private String getColorpickerValue() { + WebElement field = getDriver().findElement( + By.className("v-colorpicker-preview-textfield")); + return field.getAttribute("value"); + } +} diff --git a/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTest.html b/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTest.html index 23c44d3cc0..48a4219c87 100644 --- a/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTest.html +++ b/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTest.html @@ -4,16 +4,16 @@ -ColorPickerTest +ColorPickerTestUI - + - + @@ -25,17 +25,17 @@ - + - + - + @@ -47,12 +47,12 @@ - + - + @@ -64,42 +64,42 @@ - + - + - + - + - + - + - + @@ -123,59 +123,59 @@ - + - + - + - + - + - + - + - + - + - + @@ -187,73 +187,73 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -265,12 +265,12 @@ - + - + @@ -287,29 +287,29 @@ - + - + - + - + - + @@ -321,17 +321,17 @@ - + - + - + diff --git a/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTest.java b/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTest.java deleted file mode 100644 index 0f7e639725..0000000000 --- a/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTest.java +++ /dev/null @@ -1,492 +0,0 @@ -package com.vaadin.tests.components.colorpicker; - -import java.awt.Graphics; -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.Date; - -import javax.imageio.ImageIO; - -import com.vaadin.data.Property.ValueChangeEvent; -import com.vaadin.server.StreamResource; -import com.vaadin.shared.ui.colorpicker.Color; -import com.vaadin.shared.ui.label.ContentMode; -import com.vaadin.tests.components.TestBase; -import com.vaadin.ui.AbstractColorPicker; -import com.vaadin.ui.Alignment; -import com.vaadin.ui.CheckBox; -import com.vaadin.ui.ColorPicker; -import com.vaadin.ui.ColorPickerArea; -import com.vaadin.ui.Embedded; -import com.vaadin.ui.GridLayout; -import com.vaadin.ui.HorizontalLayout; -import com.vaadin.ui.Label; -import com.vaadin.ui.Panel; -import com.vaadin.ui.VerticalLayout; -import com.vaadin.ui.components.colorpicker.ColorChangeEvent; -import com.vaadin.ui.components.colorpicker.ColorChangeListener; - -public class ColorPickerTest extends TestBase implements ColorChangeListener { - - @Override - protected String getDescription() { - return "Vaadin 7 compatible ColorPicker"; - } - - @Override - protected Integer getTicketNumber() { - return 9201; - } - - /** The foreground color. */ - private Color foregroundColor = Color.BLACK; // The currently selected - - /** The background color. */ - private Color backgroundColor = Color.WHITE; // The currently selected - - // The display box where the image is rendered - /** The display. */ - private Embedded display; - - private AbstractColorPicker colorpicker1; - private AbstractColorPicker colorpicker2; - private AbstractColorPicker colorpicker3; - private AbstractColorPicker colorpicker4; - private AbstractColorPicker colorpicker5; - private AbstractColorPicker colorpicker6; - - private boolean rgbVisible = true; - private boolean hsvVisible = true; - private boolean swaVisible = true; - private boolean historyVisible = true; - private boolean txtfieldVisible = true; - - private final CheckBox rgbBox = new CheckBox("RGB tab visible"); - private final CheckBox hsvBox = new CheckBox("HSV tab visible"); - private final CheckBox swaBox = new CheckBox("Swatches tab visible"); - private final CheckBox hisBox = new CheckBox("History visible"); - private final CheckBox txtBox = new CheckBox("CSS field visible"); - - /** - * This class is used to represent the preview of the color selection. - */ - public class MyImageSource implements StreamResource.StreamSource { - - /** The imagebuffer. */ - private java.io.ByteArrayOutputStream imagebuffer = null; - - /** The bg color. */ - private final java.awt.Color bgColor; - - /** The fg color. */ - private final java.awt.Color fgColor; - - /** - * Instantiates a new my image source. - * - * @param fg - * the foreground - * @param bg - * the background - */ - public MyImageSource(java.awt.Color fg, java.awt.Color bg) { - fgColor = fg; - bgColor = bg; - } - - /* Must implement this method that returns the resource as a stream. */ - @Override - public InputStream getStream() { - - /* Create an image and draw something on it. */ - BufferedImage image = new BufferedImage(270, 270, - BufferedImage.TYPE_INT_RGB); - Graphics drawable = image.getGraphics(); - drawable.setColor(bgColor); - drawable.fillRect(0, 0, 270, 270); - drawable.setColor(fgColor); - drawable.fillOval(25, 25, 220, 220); - drawable.setColor(java.awt.Color.blue); - drawable.drawRect(0, 0, 269, 269); - drawable.setColor(java.awt.Color.black); - drawable.drawString( - "r=" + String.valueOf(fgColor.getRed()) + ",g=" - + String.valueOf(fgColor.getGreen()) + ",b=" - + String.valueOf(fgColor.getBlue()), 50, 100); - drawable.drawString( - "r=" + String.valueOf(bgColor.getRed()) + ",g=" - + String.valueOf(bgColor.getGreen()) + ",b=" - + String.valueOf(bgColor.getBlue()), 5, 15); - - try { - /* Write the image to a buffer. */ - imagebuffer = new ByteArrayOutputStream(); - ImageIO.write(image, "png", imagebuffer); - - /* Return a stream from the buffer. */ - return new ByteArrayInputStream(imagebuffer.toByteArray()); - } catch (IOException e) { - return null; - } - } - } - - private void setPopupVisibilities() { - - rgbBox.setEnabled(!(rgbVisible && !hsvVisible && !swaVisible)); - hsvBox.setEnabled(!(!rgbVisible && hsvVisible && !swaVisible)); - swaBox.setEnabled(!(!rgbVisible && !hsvVisible && swaVisible)); - - colorpicker1.setRGBVisibility(rgbVisible); - colorpicker2.setRGBVisibility(rgbVisible); - colorpicker3.setRGBVisibility(rgbVisible); - colorpicker4.setRGBVisibility(rgbVisible); - colorpicker5.setRGBVisibility(rgbVisible); - colorpicker6.setRGBVisibility(rgbVisible); - - colorpicker1.setHSVVisibility(hsvVisible); - colorpicker2.setHSVVisibility(hsvVisible); - colorpicker3.setHSVVisibility(hsvVisible); - colorpicker4.setHSVVisibility(hsvVisible); - colorpicker5.setHSVVisibility(hsvVisible); - colorpicker6.setHSVVisibility(hsvVisible); - - colorpicker1.setSwatchesVisibility(swaVisible); - colorpicker2.setSwatchesVisibility(swaVisible); - colorpicker3.setSwatchesVisibility(swaVisible); - colorpicker4.setSwatchesVisibility(swaVisible); - colorpicker5.setSwatchesVisibility(swaVisible); - colorpicker6.setSwatchesVisibility(swaVisible); - - colorpicker1.setHistoryVisibility(historyVisible); - colorpicker2.setHistoryVisibility(historyVisible); - colorpicker3.setHistoryVisibility(historyVisible); - colorpicker4.setHistoryVisibility(historyVisible); - colorpicker5.setHistoryVisibility(historyVisible); - colorpicker6.setHistoryVisibility(historyVisible); - - colorpicker1.setTextfieldVisibility(txtfieldVisible); - colorpicker2.setTextfieldVisibility(txtfieldVisible); - colorpicker3.setTextfieldVisibility(txtfieldVisible); - colorpicker4.setTextfieldVisibility(txtfieldVisible); - colorpicker5.setTextfieldVisibility(txtfieldVisible); - colorpicker6.setTextfieldVisibility(txtfieldVisible); - } - - @Override - protected void setup() { - getLayout().setWidth("1000px"); - getLayout().setHeight(null); - getLayout().addStyleName("colorpicker-mainwindow-content"); - - // Create an instance of the preview and add it to the window - display = new Embedded("Color preview"); - display.setWidth("270px"); - display.setHeight("270px"); - - // Add the foreground and background colorpickers to a layout - HorizontalLayout mainLayout = new HorizontalLayout(); - mainLayout.addStyleName("colorpicker-mainlayout"); - mainLayout.setWidth("100%"); - mainLayout.setHeight(null); - mainLayout.setMargin(true); - mainLayout.setSpacing(true); - getLayout().addComponent(mainLayout); - - VerticalLayout layoutLeft = new VerticalLayout(); - layoutLeft.setWidth("450px"); - layoutLeft.setHeight(null); - layoutLeft.setSpacing(true); - - GridLayout optLayout = new GridLayout(3, 2); - optLayout.setWidth("100%"); - optLayout.setHeight(null); - optLayout.setMargin(true); - optLayout.setSpacing(true); - - rgbBox.setValue(rgbVisible); - rgbBox.addValueChangeListener(new CheckBox.ValueChangeListener() { - @Override - public void valueChange(ValueChangeEvent event) { - rgbVisible = (Boolean) event.getProperty().getValue(); - setPopupVisibilities(); - } - }); - rgbBox.setImmediate(true); - rgbBox.setId("rgbBox"); - optLayout.addComponent(rgbBox); - - hsvBox.setValue(hsvVisible); - hsvBox.addValueChangeListener(new CheckBox.ValueChangeListener() { - @Override - public void valueChange(ValueChangeEvent event) { - hsvVisible = (Boolean) event.getProperty().getValue(); - setPopupVisibilities(); - } - }); - hsvBox.setImmediate(true); - hsvBox.setId("hsvBox"); - optLayout.addComponent(hsvBox); - - swaBox.setValue(swaVisible); - swaBox.addValueChangeListener(new CheckBox.ValueChangeListener() { - @Override - public void valueChange(ValueChangeEvent event) { - swaVisible = (Boolean) event.getProperty().getValue(); - setPopupVisibilities(); - } - }); - swaBox.setImmediate(true); - swaBox.setId("swaBox"); - optLayout.addComponent(swaBox); - - hisBox.setValue(historyVisible); - hisBox.addValueChangeListener(new CheckBox.ValueChangeListener() { - @Override - public void valueChange(ValueChangeEvent event) { - historyVisible = (Boolean) event.getProperty().getValue(); - setPopupVisibilities(); - } - }); - hisBox.setImmediate(true); - hisBox.setId("hisBox"); - optLayout.addComponent(hisBox); - - txtBox.setValue(txtfieldVisible); - txtBox.addValueChangeListener(new CheckBox.ValueChangeListener() { - @Override - public void valueChange(ValueChangeEvent event) { - txtfieldVisible = (Boolean) event.getProperty().getValue(); - setPopupVisibilities(); - } - }); - txtBox.setImmediate(true); - txtBox.setId("txtBox"); - optLayout.addComponent(txtBox); - - Panel optPanel = new Panel("Customize the color picker popup window", - optLayout); - layoutLeft.addComponent(optPanel); - - HorizontalLayout layout1 = createHorizontalLayout(); - - colorpicker1 = new ColorPicker("Foreground", foregroundColor); - colorpicker1.setHtmlContentAllowed(true); - colorpicker1.addColorChangeListener(this); - colorpicker1.setId("colorpicker1"); - layout1.addComponent(colorpicker1); - layout1.setComponentAlignment(colorpicker1, Alignment.MIDDLE_CENTER); - - colorpicker2 = new ColorPicker("Background", backgroundColor); - colorpicker2.addColorChangeListener(this); - colorpicker2.setId("colorpicker2"); - layout1.addComponent(colorpicker2); - layout1.setComponentAlignment(colorpicker2, Alignment.MIDDLE_CENTER); - - Panel panel1 = new Panel( - "Button-like colorpicker with current color and CSS code", - layout1); - layoutLeft.addComponent(panel1); - - HorizontalLayout layout2 = createHorizontalLayout(); - - colorpicker3 = new ColorPicker("Foreground", foregroundColor); - colorpicker3.addColorChangeListener(this); - colorpicker3.setWidth("120px"); - colorpicker3.setCaption("Foreground"); - colorpicker3.setId("colorpicker3"); - layout2.addComponent(colorpicker3); - layout2.setComponentAlignment(colorpicker3, Alignment.MIDDLE_CENTER); - - colorpicker4 = new ColorPicker("Background", backgroundColor); - colorpicker4.addColorChangeListener(this); - colorpicker4.setWidth("120px"); - colorpicker4.setCaption("Background"); - colorpicker4.setId("colorpicker4"); - layout2.addComponent(colorpicker4); - layout2.setComponentAlignment(colorpicker4, Alignment.MIDDLE_CENTER); - - Panel panel2 = new Panel( - "Button-like colorpicker with current color and custom caption", - layout2); - layoutLeft.addComponent(panel2); - - HorizontalLayout layout3 = createHorizontalLayout(); - - colorpicker5 = new ColorPickerArea("Foreground", foregroundColor); - colorpicker5.setCaption("Foreground"); - colorpicker5.addColorChangeListener(this); - colorpicker5.setId("colorpicker5"); - layout3.addComponent(colorpicker5); - layout3.setComponentAlignment(colorpicker5, Alignment.MIDDLE_CENTER); - - colorpicker6 = new ColorPickerArea("Background", backgroundColor); - colorpicker6.setCaption("Background"); - colorpicker6.setDefaultCaptionEnabled(false); - colorpicker6.addColorChangeListener(this); - colorpicker6.setId("colorpicker6"); - layout3.addComponent(colorpicker6); - layout3.setComponentAlignment(colorpicker6, Alignment.MIDDLE_CENTER); - - Panel panel3 = new Panel("Color area colorpicker with caption", layout3); - panel3.setWidth("100%"); - panel3.setHeight(null); - layoutLeft.addComponent(panel3); - - Label divider1 = new Label("
", ContentMode.HTML); - layoutLeft.addComponent(divider1); - - Label divider2 = new Label("
", ContentMode.HTML); - layoutLeft.addComponent(divider2); - - HorizontalLayout layout4 = createHorizontalLayout(); - - addShadeButton(new Color(Integer.parseInt("000000", 16)), layout4); - addShadeButton(new Color(Integer.parseInt("333333", 16)), layout4); - addShadeButton(new Color(Integer.parseInt("666666", 16)), layout4); - addShadeButton(new Color(Integer.parseInt("999999", 16)), layout4); - addShadeButton(new Color(Integer.parseInt("cccccc", 16)), layout4); - addShadeButton(new Color(Integer.parseInt("ffffff", 16)), layout4); - - Panel panel4 = new Panel( - "Button-like colorpickers with disabled caption (no effect on fg/bg colors)", - layout4); - layoutLeft.addComponent(panel4); - - HorizontalLayout layout5 = createHorizontalLayout(); - - addShadeArea(new Color(Integer.parseInt("000000", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("111111", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("222222", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("333333", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("444444", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("555555", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("666666", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("777777", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("888888", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("999999", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("aaaaaa", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("bbbbbb", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("cccccc", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("dddddd", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("eeeeee", 16)), layout5); - addShadeArea(new Color(Integer.parseInt("ffffff", 16)), layout5); - - Panel panel5 = new Panel( - "Area colorpickers with no given caption (no effect on fg/bg colors)", - layout5); - layoutLeft.addComponent(panel5); - - mainLayout.addComponent(layoutLeft); - - mainLayout.addComponent(display); - - updateDisplay(foregroundColor, backgroundColor); - } - - private HorizontalLayout createHorizontalLayout() { - HorizontalLayout layout = new HorizontalLayout(); - layout.setWidth("100%"); - layout.setHeight(null); - layout.setMargin(true); - return layout; - } - - private int shadeButtonCounter = 1; - - private void addShadeButton(Color color, HorizontalLayout layout) { - AbstractColorPicker colorPicker = new ColorPicker(color.toString(), - color); - colorPicker.setDefaultCaptionEnabled(false); - colorPicker.setWidth("41px"); - colorPicker.setId("shadebutton_" + shadeButtonCounter); - layout.addComponent(colorPicker); - layout.setComponentAlignment(colorPicker, Alignment.MIDDLE_CENTER); - - ++shadeButtonCounter; - } - - private int shadeAreaCounter = 1; - - private void addShadeArea(Color color, HorizontalLayout layout) { - AbstractColorPicker colorPicker = new ColorPickerArea(color.toString(), - color); - colorPicker.setWidth("20px"); - colorPicker.setHeight("20px"); - colorPicker.setId("shadearea_" + shadeAreaCounter); - layout.addComponent(colorPicker); - layout.setComponentAlignment(colorPicker, Alignment.MIDDLE_CENTER); - - ++shadeAreaCounter; - } - - // This is called whenever a colorpicker popup is closed - /** - * Update display. - * - * @param fg - * the fg - * @param bg - * the bg - */ - public void updateDisplay(Color fg, Color bg) { - java.awt.Color awtFg = new java.awt.Color(fg.getRed(), fg.getGreen(), - fg.getBlue()); - java.awt.Color awtBg = new java.awt.Color(bg.getRed(), bg.getGreen(), - bg.getBlue()); - StreamResource.StreamSource imagesource = new MyImageSource(awtFg, - awtBg); - - Date now = new Date(); - SimpleDateFormat format = new SimpleDateFormat("hhmmss"); - - StreamResource imageresource = new StreamResource(imagesource, - "myimage" + format.format(now) + ".png"); - imageresource.setCacheTime(0); - - display.setSource(imageresource); - } - - @Override - public void colorChanged(ColorChangeEvent event) { - if (event.getSource() == colorpicker1 - || event.getSource() == colorpicker3 - || event.getSource() == colorpicker5) { - foregroundColor = event.getColor(); - - if (event.getSource() != colorpicker1) { - colorpicker1.setColor(event.getColor()); - } - if (event.getSource() != colorpicker3) { - colorpicker3.setColor(event.getColor()); - } - if (event.getSource() != colorpicker5) { - colorpicker5.setColor(event.getColor()); - } - - } else if (event.getSource() == colorpicker2 - || event.getSource() == colorpicker4 - || event.getSource() == colorpicker6) { - backgroundColor = event.getColor(); - - if (event.getSource() != colorpicker2) { - colorpicker2.setColor(event.getColor()); - } - if (event.getSource() != colorpicker4) { - colorpicker4.setColor(event.getColor()); - } - if (event.getSource() != colorpicker6) { - colorpicker6.setColor(event.getColor()); - } - - } else { - return; - } - - updateDisplay(foregroundColor, backgroundColor); - } -} diff --git a/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTestUI.java b/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTestUI.java new file mode 100644 index 0000000000..544cdafaf0 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/colorpicker/ColorPickerTestUI.java @@ -0,0 +1,509 @@ +/* + * 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.colorpicker; + +import java.awt.Graphics; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.text.SimpleDateFormat; +import java.util.Date; + +import javax.imageio.ImageIO; + +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.server.StreamResource; +import com.vaadin.server.VaadinRequest; +import com.vaadin.shared.ui.colorpicker.Color; +import com.vaadin.shared.ui.label.ContentMode; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.AbstractColorPicker; +import com.vaadin.ui.Alignment; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.ColorPicker; +import com.vaadin.ui.ColorPickerArea; +import com.vaadin.ui.Embedded; +import com.vaadin.ui.GridLayout; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.Panel; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.components.colorpicker.ColorChangeEvent; +import com.vaadin.ui.components.colorpicker.ColorChangeListener; + +public class ColorPickerTestUI extends AbstractTestUI implements + ColorChangeListener { + + @Override + public String getTestDescription() { + return "Vaadin 7 compatible ColorPicker"; + } + + @Override + protected Integer getTicketNumber() { + return 9201; + } + + /** The foreground color. */ + private Color foregroundColor = Color.BLACK; // The currently selected + + /** The background color. */ + private Color backgroundColor = Color.WHITE; // The currently selected + + // The display box where the image is rendered + /** The display. */ + private Embedded display; + + private AbstractColorPicker colorpicker1; + private AbstractColorPicker colorpicker2; + private AbstractColorPicker colorpicker3; + private AbstractColorPicker colorpicker4; + private AbstractColorPicker colorpicker5; + private AbstractColorPicker colorpicker6; + + private boolean rgbVisible = true; + private boolean hsvVisible = true; + private boolean swaVisible = true; + private boolean historyVisible = true; + private boolean txtfieldVisible = true; + + private final CheckBox rgbBox = new CheckBox("RGB tab visible"); + private final CheckBox hsvBox = new CheckBox("HSV tab visible"); + private final CheckBox swaBox = new CheckBox("Swatches tab visible"); + private final CheckBox hisBox = new CheckBox("History visible"); + private final CheckBox txtBox = new CheckBox("CSS field visible"); + + /** + * This class is used to represent the preview of the color selection. + */ + public class MyImageSource implements StreamResource.StreamSource { + + /** The imagebuffer. */ + private java.io.ByteArrayOutputStream imagebuffer = null; + + /** The bg color. */ + private final java.awt.Color bgColor; + + /** The fg color. */ + private final java.awt.Color fgColor; + + /** + * Instantiates a new my image source. + * + * @param fg + * the foreground + * @param bg + * the background + */ + public MyImageSource(java.awt.Color fg, java.awt.Color bg) { + fgColor = fg; + bgColor = bg; + } + + /* Must implement this method that returns the resource as a stream. */ + @Override + public InputStream getStream() { + + /* Create an image and draw something on it. */ + BufferedImage image = new BufferedImage(270, 270, + BufferedImage.TYPE_INT_RGB); + Graphics drawable = image.getGraphics(); + drawable.setColor(bgColor); + drawable.fillRect(0, 0, 270, 270); + drawable.setColor(fgColor); + drawable.fillOval(25, 25, 220, 220); + drawable.setColor(java.awt.Color.blue); + drawable.drawRect(0, 0, 269, 269); + drawable.setColor(java.awt.Color.black); + drawable.drawString( + "r=" + String.valueOf(fgColor.getRed()) + ",g=" + + String.valueOf(fgColor.getGreen()) + ",b=" + + String.valueOf(fgColor.getBlue()), 50, 100); + drawable.drawString( + "r=" + String.valueOf(bgColor.getRed()) + ",g=" + + String.valueOf(bgColor.getGreen()) + ",b=" + + String.valueOf(bgColor.getBlue()), 5, 15); + + try { + /* Write the image to a buffer. */ + imagebuffer = new ByteArrayOutputStream(); + ImageIO.write(image, "png", imagebuffer); + + /* Return a stream from the buffer. */ + return new ByteArrayInputStream(imagebuffer.toByteArray()); + } catch (IOException e) { + return null; + } + } + } + + private void setPopupVisibilities() { + + rgbBox.setEnabled(!(rgbVisible && !hsvVisible && !swaVisible)); + hsvBox.setEnabled(!(!rgbVisible && hsvVisible && !swaVisible)); + swaBox.setEnabled(!(!rgbVisible && !hsvVisible && swaVisible)); + + colorpicker1.setRGBVisibility(rgbVisible); + colorpicker2.setRGBVisibility(rgbVisible); + colorpicker3.setRGBVisibility(rgbVisible); + colorpicker4.setRGBVisibility(rgbVisible); + colorpicker5.setRGBVisibility(rgbVisible); + colorpicker6.setRGBVisibility(rgbVisible); + + colorpicker1.setHSVVisibility(hsvVisible); + colorpicker2.setHSVVisibility(hsvVisible); + colorpicker3.setHSVVisibility(hsvVisible); + colorpicker4.setHSVVisibility(hsvVisible); + colorpicker5.setHSVVisibility(hsvVisible); + colorpicker6.setHSVVisibility(hsvVisible); + + colorpicker1.setSwatchesVisibility(swaVisible); + colorpicker2.setSwatchesVisibility(swaVisible); + colorpicker3.setSwatchesVisibility(swaVisible); + colorpicker4.setSwatchesVisibility(swaVisible); + colorpicker5.setSwatchesVisibility(swaVisible); + colorpicker6.setSwatchesVisibility(swaVisible); + + colorpicker1.setHistoryVisibility(historyVisible); + colorpicker2.setHistoryVisibility(historyVisible); + colorpicker3.setHistoryVisibility(historyVisible); + colorpicker4.setHistoryVisibility(historyVisible); + colorpicker5.setHistoryVisibility(historyVisible); + colorpicker6.setHistoryVisibility(historyVisible); + + colorpicker1.setTextfieldVisibility(txtfieldVisible); + colorpicker2.setTextfieldVisibility(txtfieldVisible); + colorpicker3.setTextfieldVisibility(txtfieldVisible); + colorpicker4.setTextfieldVisibility(txtfieldVisible); + colorpicker5.setTextfieldVisibility(txtfieldVisible); + colorpicker6.setTextfieldVisibility(txtfieldVisible); + } + + @Override + protected void setup(VaadinRequest request) { + getLayout().setWidth("1000px"); + getLayout().setHeight(null); + getLayout().addStyleName("colorpicker-mainwindow-content"); + + // Create an instance of the preview and add it to the window + display = new Embedded("Color preview"); + display.setWidth("270px"); + display.setHeight("270px"); + + // Add the foreground and background colorpickers to a layout + HorizontalLayout mainLayout = new HorizontalLayout(); + mainLayout.addStyleName("colorpicker-mainlayout"); + mainLayout.setWidth("100%"); + mainLayout.setHeight(null); + mainLayout.setMargin(true); + mainLayout.setSpacing(true); + getLayout().addComponent(mainLayout); + + VerticalLayout layoutLeft = new VerticalLayout(); + layoutLeft.setWidth("450px"); + layoutLeft.setHeight(null); + layoutLeft.setSpacing(true); + + GridLayout optLayout = new GridLayout(3, 2); + optLayout.setWidth("100%"); + optLayout.setHeight(null); + optLayout.setMargin(true); + optLayout.setSpacing(true); + + rgbBox.setValue(rgbVisible); + rgbBox.addValueChangeListener(new CheckBox.ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + rgbVisible = (Boolean) event.getProperty().getValue(); + setPopupVisibilities(); + } + }); + rgbBox.setImmediate(true); + rgbBox.setId("rgbBox"); + optLayout.addComponent(rgbBox); + + hsvBox.setValue(hsvVisible); + hsvBox.addValueChangeListener(new CheckBox.ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + hsvVisible = (Boolean) event.getProperty().getValue(); + setPopupVisibilities(); + } + }); + hsvBox.setImmediate(true); + hsvBox.setId("hsvBox"); + optLayout.addComponent(hsvBox); + + swaBox.setValue(swaVisible); + swaBox.addValueChangeListener(new CheckBox.ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + swaVisible = (Boolean) event.getProperty().getValue(); + setPopupVisibilities(); + } + }); + swaBox.setImmediate(true); + swaBox.setId("swaBox"); + optLayout.addComponent(swaBox); + + hisBox.setValue(historyVisible); + hisBox.addValueChangeListener(new CheckBox.ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + historyVisible = (Boolean) event.getProperty().getValue(); + setPopupVisibilities(); + } + }); + hisBox.setImmediate(true); + hisBox.setId("hisBox"); + optLayout.addComponent(hisBox); + + txtBox.setValue(txtfieldVisible); + txtBox.addValueChangeListener(new CheckBox.ValueChangeListener() { + @Override + public void valueChange(ValueChangeEvent event) { + txtfieldVisible = (Boolean) event.getProperty().getValue(); + setPopupVisibilities(); + } + }); + txtBox.setImmediate(true); + txtBox.setId("txtBox"); + optLayout.addComponent(txtBox); + + Panel optPanel = new Panel("Customize the color picker popup window", + optLayout); + layoutLeft.addComponent(optPanel); + + HorizontalLayout layout1 = createHorizontalLayout(); + + colorpicker1 = new ColorPicker("Foreground", foregroundColor); + colorpicker1.setHtmlContentAllowed(true); + colorpicker1.addColorChangeListener(this); + colorpicker1.setId("colorpicker1"); + layout1.addComponent(colorpicker1); + layout1.setComponentAlignment(colorpicker1, Alignment.MIDDLE_CENTER); + + colorpicker2 = new ColorPicker("Background", backgroundColor); + colorpicker2.addColorChangeListener(this); + colorpicker2.setId("colorpicker2"); + layout1.addComponent(colorpicker2); + layout1.setComponentAlignment(colorpicker2, Alignment.MIDDLE_CENTER); + + Panel panel1 = new Panel( + "Button-like colorpicker with current color and CSS code", + layout1); + layoutLeft.addComponent(panel1); + + HorizontalLayout layout2 = createHorizontalLayout(); + + colorpicker3 = new ColorPicker("Foreground", foregroundColor); + colorpicker3.addColorChangeListener(this); + colorpicker3.setWidth("120px"); + colorpicker3.setCaption("Foreground"); + colorpicker3.setId("colorpicker3"); + layout2.addComponent(colorpicker3); + layout2.setComponentAlignment(colorpicker3, Alignment.MIDDLE_CENTER); + + colorpicker4 = new ColorPicker("Background", backgroundColor); + colorpicker4.addColorChangeListener(this); + colorpicker4.setWidth("120px"); + colorpicker4.setCaption("Background"); + colorpicker4.setId("colorpicker4"); + layout2.addComponent(colorpicker4); + layout2.setComponentAlignment(colorpicker4, Alignment.MIDDLE_CENTER); + + Panel panel2 = new Panel( + "Button-like colorpicker with current color and custom caption", + layout2); + layoutLeft.addComponent(panel2); + + HorizontalLayout layout3 = createHorizontalLayout(); + + colorpicker5 = new ColorPickerArea("Foreground", foregroundColor); + colorpicker5.setCaption("Foreground"); + colorpicker5.addColorChangeListener(this); + colorpicker5.setId("colorpicker5"); + layout3.addComponent(colorpicker5); + layout3.setComponentAlignment(colorpicker5, Alignment.MIDDLE_CENTER); + + colorpicker6 = new ColorPickerArea("Background", backgroundColor); + colorpicker6.setCaption("Background"); + colorpicker6.setDefaultCaptionEnabled(false); + colorpicker6.addColorChangeListener(this); + colorpicker6.setId("colorpicker6"); + layout3.addComponent(colorpicker6); + layout3.setComponentAlignment(colorpicker6, Alignment.MIDDLE_CENTER); + + Panel panel3 = new Panel("Color area colorpicker with caption", layout3); + panel3.setWidth("100%"); + panel3.setHeight(null); + layoutLeft.addComponent(panel3); + + Label divider1 = new Label("
", ContentMode.HTML); + layoutLeft.addComponent(divider1); + + Label divider2 = new Label("
", ContentMode.HTML); + layoutLeft.addComponent(divider2); + + HorizontalLayout layout4 = createHorizontalLayout(); + + addShadeButton(new Color(Integer.parseInt("000000", 16)), layout4); + addShadeButton(new Color(Integer.parseInt("333333", 16)), layout4); + addShadeButton(new Color(Integer.parseInt("666666", 16)), layout4); + addShadeButton(new Color(Integer.parseInt("999999", 16)), layout4); + addShadeButton(new Color(Integer.parseInt("cccccc", 16)), layout4); + addShadeButton(new Color(Integer.parseInt("ffffff", 16)), layout4); + + Panel panel4 = new Panel( + "Button-like colorpickers with disabled caption (no effect on fg/bg colors)", + layout4); + layoutLeft.addComponent(panel4); + + HorizontalLayout layout5 = createHorizontalLayout(); + + addShadeArea(new Color(Integer.parseInt("000000", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("111111", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("222222", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("333333", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("444444", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("555555", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("666666", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("777777", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("888888", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("999999", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("aaaaaa", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("bbbbbb", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("cccccc", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("dddddd", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("eeeeee", 16)), layout5); + addShadeArea(new Color(Integer.parseInt("ffffff", 16)), layout5); + + Panel panel5 = new Panel( + "Area colorpickers with no given caption (no effect on fg/bg colors)", + layout5); + layoutLeft.addComponent(panel5); + + mainLayout.addComponent(layoutLeft); + + mainLayout.addComponent(display); + + updateDisplay(foregroundColor, backgroundColor); + } + + private HorizontalLayout createHorizontalLayout() { + HorizontalLayout layout = new HorizontalLayout(); + layout.setWidth("100%"); + layout.setHeight(null); + layout.setMargin(true); + return layout; + } + + private int shadeButtonCounter = 1; + + private void addShadeButton(Color color, HorizontalLayout layout) { + AbstractColorPicker colorPicker = new ColorPicker(color.toString(), + color); + colorPicker.setDefaultCaptionEnabled(false); + colorPicker.setWidth("41px"); + colorPicker.setId("shadebutton_" + shadeButtonCounter); + layout.addComponent(colorPicker); + layout.setComponentAlignment(colorPicker, Alignment.MIDDLE_CENTER); + + ++shadeButtonCounter; + } + + private int shadeAreaCounter = 1; + + private void addShadeArea(Color color, HorizontalLayout layout) { + AbstractColorPicker colorPicker = new ColorPickerArea(color.toString(), + color); + colorPicker.setWidth("20px"); + colorPicker.setHeight("20px"); + colorPicker.setId("shadearea_" + shadeAreaCounter); + layout.addComponent(colorPicker); + layout.setComponentAlignment(colorPicker, Alignment.MIDDLE_CENTER); + + ++shadeAreaCounter; + } + + // This is called whenever a colorpicker popup is closed + /** + * Update display. + * + * @param fg + * the fg + * @param bg + * the bg + */ + public void updateDisplay(Color fg, Color bg) { + java.awt.Color awtFg = new java.awt.Color(fg.getRed(), fg.getGreen(), + fg.getBlue()); + java.awt.Color awtBg = new java.awt.Color(bg.getRed(), bg.getGreen(), + bg.getBlue()); + StreamResource.StreamSource imagesource = new MyImageSource(awtFg, + awtBg); + + Date now = new Date(); + SimpleDateFormat format = new SimpleDateFormat("hhmmss"); + + StreamResource imageresource = new StreamResource(imagesource, + "myimage" + format.format(now) + ".png"); + imageresource.setCacheTime(0); + + display.setSource(imageresource); + } + + @Override + public void colorChanged(ColorChangeEvent event) { + if (event.getSource() == colorpicker1 + || event.getSource() == colorpicker3 + || event.getSource() == colorpicker5) { + foregroundColor = event.getColor(); + + if (event.getSource() != colorpicker1) { + colorpicker1.setColor(event.getColor()); + } + if (event.getSource() != colorpicker3) { + colorpicker3.setColor(event.getColor()); + } + if (event.getSource() != colorpicker5) { + colorpicker5.setColor(event.getColor()); + } + + } else if (event.getSource() == colorpicker2 + || event.getSource() == colorpicker4 + || event.getSource() == colorpicker6) { + backgroundColor = event.getColor(); + + if (event.getSource() != colorpicker2) { + colorpicker2.setColor(event.getColor()); + } + if (event.getSource() != colorpicker4) { + colorpicker4.setColor(event.getColor()); + } + if (event.getSource() != colorpicker6) { + colorpicker6.setColor(event.getColor()); + } + + } else { + return; + } + + updateDisplay(foregroundColor, backgroundColor); + } +} -- cgit v1.2.3
ColorPickerTest
ColorPickerTestUI
open/run/com.vaadin.tests.components.colorpicker.ColorPickerTest?restartApplication/run/com.vaadin.tests.components.colorpicker.ColorPickerTestUI?restartApplication
waitForElementPresentvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/Slot[1]/VColorPickerGradient[0]#clicklayervaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/Slot[1]/VColorPickerGradient[0]#clicklayer
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/Slot[1]/VColorPickerGradient[0]#clicklayervaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/Slot[1]/VColorPickerGradient[0]#clicklayer 190,87
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/Slot[1]/VColorPickerGradient[0]#clicklayervaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/Slot[1]/VColorPickerGradient[0]#clicklayer 51,33
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_Scolorpicker5/domChild[1]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_Scolorpicker5/domChild[1] 10,15
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[2]/VButton[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[2]/VButton[0]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCustomComponent[0]/VColorPickerGrid[0]/domChild[0]/domChild[1]/domChild[0]/domChild[3]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCustomComponent[0]/VColorPickerGrid[0]/domChild[0]/domChild[1]/domChild[0]/domChild[3] 9,9
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_Scolorpicker6/domChild[1]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_Scolorpicker6/domChild[1] 12,24
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCustomComponent[0]/VColorPickerGrid[0]/domChild[0]/domChild[1]/domChild[0]/domChild[1]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCustomComponent[0]/VColorPickerGrid[0]/domChild[0]/domChild[1]/domChild[0]/domChild[1] 9,12
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_Scolorpicker5/domChild[1]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_Scolorpicker5/domChild[1] 11,17
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_Scolorpicker5/domChild[1]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_Scolorpicker5/domChild[1] 11,17
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_Scolorpicker6/domChild[1]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_Scolorpicker6/domChild[1] 21,15
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[1]/domChild[0]/domChild[0]/domChild[0] 12,6
dragAndDropvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[2]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VSlider[0]/domChild[2]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[2]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VSlider[0]/domChild[2]/domChild[0] 136,0
dragAndDropvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[2]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VSlider[0]/domChild[2]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[2]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VSlider[0]/domChild[2]/domChild[0] 100,0
dragAndDropvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[2]/VVerticalLayout[0]/VOrderedLayout$Slot[2]/VSlider[0]/domChild[2]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[2]/VVerticalLayout[0]/VOrderedLayout$Slot[2]/VSlider[0]/domChild[2]/domChild[0] -60,0
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[2]/domChild[0]/domChild[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild[2]/domChild[0]/domChild[0]/domChild[0] 43,8
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VCustomComponent[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VColorPickerGrid[0]/domChild[0]/domChild[1]/domChild[11]/domChild[9]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VCustomComponent[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VColorPickerGrid[0]/domChild[0]/domChild[1]/domChild[11]/domChild[9] 12,10
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_Scolorpicker5/domChild[1]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_Scolorpicker5/domChild[1] 14,25
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_SswaBox/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_SswaBox/domChild[0] 9,6
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_StxtBox/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_StxtBox/domChild[0] 6,9
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_ShisBox/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_ShisBox/domChild[0] 6,7
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_SrgbBox/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_SrgbBox/domChild[0] 6,7
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_SrgbBox/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_SrgbBox/domChild[0] 6,7
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_ShsvBox/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_ShsvBox/domChild[0] 6,9
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_ShsvBox/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_ShsvBox/domChild[0] 6,9
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_StxtBox/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_StxtBox/domChild[0] 8,8
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_ShisBox/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_ShisBox/domChild[0] 6,8
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_SswaBox/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_SswaBox/domChild[0] 4,8
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[1]/VButton[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[1]/VButton[0]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/Slot[1]/VColorPickerGradient[0]#clicklayervaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/Slot[1]/VColorPickerGradient[0]#clicklayer 148,127
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCustomComponent[0]/VColorPickerGrid[0]/domChild[0]/domChild[1]/domChild[0]/domChild[6]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCustomComponent[0]/VColorPickerGrid[0]/domChild[0]/domChild[1]/domChild[0]/domChild[6] 10,7
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_Sshadearea_16/domChild[1]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_Sshadearea_16/domChild[1] 10,-65
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/Slot[1]/VColorPickerGradient[0]#clicklayervaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/Slot[0]/VTabsheet[0]/VTabsheetPanel[0]/VVerticalLayout[0]/Slot[1]/VColorPickerGradient[0]#clicklayer 36,93
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]/domChild[0]
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::PID_Sshadearea_16/domChild[1]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::PID_Sshadearea_16/domChild[1] 19,-65
mouseClickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCustomComponent[0]/VColorPickerGrid[0]/domChild[0]/domChild[1]/domChild[0]/domChild[4]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VVerticalLayout[0]/VOrderedLayout$Slot[0]/VCustomComponent[0]/VColorPickerGrid[0]/domChild[0]/domChild[1]/domChild[0]/domChild[4] 6,7
clickvaadin=runcomvaadintestscomponentscolorpickerColorPickerTest::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]vaadin=runcomvaadintestscomponentscolorpickerColorPickerTestUI::/VWindow[0]/FocusableScrollPanel[0]/VVerticalLayout[0]/VOrderedLayout$Slot[3]/VHorizontalLayout[0]/VOrderedLayout$Slot[0]/VButton[0]/domChild[0]