Browse Source

Make value changes in color picker user originated (#11252)

* Make value changes in color picker user originated

This is not a programmatically initiated event, so it should have the
'userOriginated' property set to 'true'.

 - Added test to verify that indeed event is user originated after the change
tags/8.6.1
Jeremy Stucki 5 years ago
parent
commit
040efce830

+ 2
- 2
server/src/main/java/com/vaadin/ui/AbstractColorPicker.java View File

@@ -464,8 +464,8 @@ public abstract class AbstractColorPicker extends AbstractField<Color> {
window.addCloseListener(
event -> getState().popupVisible = false);
window.addValueChangeListener(event -> {
setValue(event.getValue());
rpc.changeColor(event.getValue().getCSS());
window.setValue(color);
setValue(event.getValue(), true);
});
window.getHistory().setValue(color);
window.setPositionX(positionX);

+ 38
- 0
uitest/src/main/java/com/vaadin/tests/components/colorpicker/ColorPickerUserColorChange.java View File

@@ -0,0 +1,38 @@
package com.vaadin.tests.components.colorpicker;

import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.colorpicker.Color;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.AbstractColorPicker;
import com.vaadin.ui.Button;
import com.vaadin.ui.ColorPicker;
import com.vaadin.ui.Label;

public class ColorPickerUserColorChange extends AbstractTestUI {

public static final String value = "User originated: ";

@Override
protected void setup(VaadinRequest request) {
AbstractColorPicker colorpicker = new ColorPicker("ColorPicker",
Color.GREEN);
Label isUserOriginated = new Label(value);
isUserOriginated.setId("labelValue");
colorpicker.setPosition(250, 0);
colorpicker.setId("clp");
colorpicker.setRGBVisibility(true);
colorpicker.setHSVVisibility(true);
colorpicker.setTextfieldVisibility(true);
colorpicker.setSwatchesVisibility(true);
colorpicker.addValueChangeListener(event -> {
isUserOriginated.setValue(value + event.isUserOriginated());
});
addComponent(isUserOriginated);
addComponent(colorpicker);
Button changeColor = new Button("Change Color", e -> {
colorpicker.setValue(Color.YELLOW);
});
changeColor.setId("changeColor");
addComponent(changeColor);
}
}

+ 32
- 0
uitest/src/test/java/com/vaadin/tests/components/colorpicker/ColorPickerUserColorChangeTest.java View File

@@ -0,0 +1,32 @@
package com.vaadin.tests.components.colorpicker;

import com.vaadin.tests.tb3.MultiBrowserTest;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

import static org.junit.Assert.assertEquals;

public class ColorPickerUserColorChangeTest extends MultiBrowserTest {

@Test
public void testUserOriginatedTrue() {
openTestURL();
// Open colorPicker
findElement(By.className("v-button-v-colorpicker ")).click();
sleep(100);
// click somewhere inside the gradient layer
findElement(By.className("v-colorpicker-gradient-clicklayer")).click();
// confirm selection by clicking "OK" button
findElements(By.className("v-button")).stream()
.filter(el -> el.getText().equals("OK")).findFirst().get()
.click();

WebElement label = findElement(By.id("labelValue"));
assertEquals(true, label.getText().endsWith("true"));

findElement(By.id("changeColor")).click();
assertEquals(false, label.getText().endsWith("true"));
assertEquals(true, label.getText().endsWith("false"));
}
}

Loading…
Cancel
Save