package com.vaadin.tests.components; import com.vaadin.ui.Button; import com.vaadin.v7.ui.PopupDateField; public class AddRemoveSetStyleNamesTest extends TestBase { private String style1 = "style1"; private String style2 = "style2"; private String thestyle = "thestyle"; private PopupDateField popupDateField; private Button button1; private Button button2; private Button button3; private Button.ClickListener listener; @Override protected void setup() { popupDateField = new PopupDateField("PopupDateField"); popupDateField.setRequired(true); popupDateField.setRequiredError("abcd"); addComponent(popupDateField); listener = event -> { String style = (String) event.getButton().getData(); setComponentsStyle(style, !popupDateField.getStyleName().contains(style), event.getButton()); }; button1 = new Button("Add style1", listener); button1.setData(style1); addComponent(button1); button2 = new Button("Add style2", listener); button2.setData(style2); addComponent(button2); button3 = new Button("Set thestyle", event -> { if (popupDateField.getStyleName().contains(thestyle)) { popupDateField.removeStyleName(thestyle); button3.setCaption("Set thestyle"); } else { popupDateField.setStyleName(thestyle); button1.setCaption("Add style1"); button2.setCaption("Add style2"); button3.setCaption("Remove thestyle"); } }); addComponent(button3); } private void setComponentsStyle(String style, boolean add, Button button) { if (add) { popupDateField.addStyleName(style); button.setCaption("Remove " + style); } else { popupDateField.removeStyleName(style); button.setCaption("Add " + style); } } @Override protected String getDescription() { return "If a widget has set multiple css class names, AbtractComponentConnector.getStyleNames() removes all but first one of them. This is not acceptable, because we should be able to create connector for any existing GWT component and thus we do not know it it depends on multiple css class names."; } @Override protected Integer getTicketNumber() { return 8664; } }