break;
case HTML:
- case RAW:
sinkOnloads = true;
- case XML:
getWidget().setHTML(getState().text);
break;
- default:
- getWidget().setText("");
- break;
-
}
Profiler.leave("LabelConnector.onStateChanged update content");
--- /dev/null
+/*
+ * Copyright 2000-2016 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.v7.client.ui.label;
+
+import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.PreElement;
+import com.vaadin.client.Profiler;
+import com.vaadin.client.WidgetUtil;
+import com.vaadin.client.communication.StateChangeEvent;
+import com.vaadin.client.ui.AbstractComponentConnector;
+import com.vaadin.client.ui.VLabel;
+import com.vaadin.shared.ui.Connect;
+import com.vaadin.shared.ui.Connect.LoadStyle;
+import com.vaadin.v7.shared.ui.label.LabelState;
+import com.vaadin.v7.ui.Label;
+
+@Connect(value = Label.class, loadStyle = LoadStyle.EAGER)
+public class LabelConnector extends AbstractComponentConnector {
+
+ @Override
+ public LabelState getState() {
+ return (LabelState) super.getState();
+ }
+
+ @Override
+ public void onStateChanged(StateChangeEvent stateChangeEvent) {
+ super.onStateChanged(stateChangeEvent);
+ boolean sinkOnloads = false;
+ Profiler.enter("LabelConnector.onStateChanged update content");
+ switch (getState().contentMode) {
+ case PREFORMATTED:
+ PreElement preElement = Document.get().createPreElement();
+ preElement.setInnerText(getState().text);
+ // clear existing content
+ getWidget().setHTML("");
+ // add preformatted text to dom
+ getWidget().getElement().appendChild(preElement);
+ break;
+
+ case TEXT:
+ getWidget().setText(getState().text);
+ break;
+
+ case HTML:
+ case RAW:
+ sinkOnloads = true;
+ case XML:
+ getWidget().setHTML(getState().text);
+ break;
+ default:
+ getWidget().setText("");
+ break;
+
+ }
+ Profiler.leave("LabelConnector.onStateChanged update content");
+
+ if (sinkOnloads) {
+ Profiler.enter("LabelConnector.onStateChanged sinkOnloads");
+ WidgetUtil.sinkOnloadForImages(getWidget().getElement());
+ Profiler.leave("LabelConnector.onStateChanged sinkOnloads");
+ }
+ }
+
+ @Override
+ public VLabel getWidget() {
+ return (VLabel) super.getWidget();
+ }
+
+}
--- /dev/null
+/*
+ * Copyright 2000-2016 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.v7.ui;
+
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.Locale;
+
+import org.jsoup.nodes.Element;
+
+import com.vaadin.shared.util.SharedUtil;
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.declarative.DesignContext;
+import com.vaadin.ui.declarative.DesignFormatter;
+import com.vaadin.v7.data.Property;
+import com.vaadin.v7.data.util.converter.Converter;
+import com.vaadin.v7.data.util.converter.ConverterUtil;
+import com.vaadin.v7.shared.ui.label.ContentMode;
+import com.vaadin.v7.shared.ui.label.LabelState;
+
+/**
+ * Label component for showing non-editable short texts.
+ *
+ * The label content can be set to the modes specified by {@link ContentMode}
+ *
+ * <p>
+ * The contents of the label may contain simple formatting:
+ * <ul>
+ * <li><b><b></b> Bold
+ * <li><b><i></b> Italic
+ * <li><b><u></b> Underlined
+ * <li><b><br/></b> Linebreak
+ * <li><b><ul><li>item 1</li><li>item 2</li></ul></b> List of
+ * items
+ * </ul>
+ * The <b>b</b>,<b>i</b>,<b>u</b> and <b>li</b> tags can contain all the tags in
+ * the list recursively.
+ * </p>
+ *
+ * @author Vaadin Ltd.
+ * @since 3.0
+ */
+@SuppressWarnings("serial")
+public class Label extends AbstractComponent implements Property<String>,
+ Property.Viewer, Property.ValueChangeListener,
+ Property.ValueChangeNotifier, Comparable<Label> {
+
+ /**
+ * @deprecated As of 7.0, use {@link ContentMode#TEXT} instead
+ */
+ @Deprecated
+ public static final ContentMode CONTENT_TEXT = ContentMode.TEXT;
+
+ /**
+ * @deprecated As of 7.0, use {@link ContentMode#PREFORMATTED} instead
+ */
+ @Deprecated
+ public static final ContentMode CONTENT_PREFORMATTED = ContentMode.PREFORMATTED;
+
+ /**
+ * @deprecated As of 7.0, use {@link ContentMode#HTML} instead
+ */
+ @Deprecated
+ public static final ContentMode CONTENT_XHTML = ContentMode.HTML;
+
+ /**
+ * @deprecated As of 7.0, use {@link ContentMode#XML} instead
+ */
+ @Deprecated
+ public static final ContentMode CONTENT_XML = ContentMode.XML;
+
+ /**
+ * @deprecated As of 7.0, use {@link ContentMode#RAW} instead
+ */
+ @Deprecated
+ public static final ContentMode CONTENT_RAW = ContentMode.RAW;
+
+ /**
+ * @deprecated As of 7.0, use {@link ContentMode#TEXT} instead
+ */
+ @Deprecated
+ public static final ContentMode CONTENT_DEFAULT = ContentMode.TEXT;
+
+ /**
+ * A converter used to convert from the data model type to the field type
+ * and vice versa. Label type is always String.
+ */
+ private Converter<String, Object> converter = null;
+
+ private Property<String> dataSource = null;
+
+ /**
+ * Creates an empty Label.
+ */
+ public Label() {
+ this("");
+ }
+
+ /**
+ * Creates a new instance of Label with text-contents.
+ *
+ * @param content
+ */
+ public Label(String content) {
+ this(content, ContentMode.TEXT);
+ }
+
+ /**
+ * Creates a new instance of Label with text-contents read from given
+ * datasource.
+ *
+ * @param contentSource
+ */
+ public Label(Property contentSource) {
+ this(contentSource, ContentMode.TEXT);
+ }
+
+ /**
+ * Creates a new instance of Label with text-contents.
+ *
+ * @param content
+ * @param contentMode
+ */
+ public Label(String content, ContentMode contentMode) {
+ setValue(content);
+ setContentMode(contentMode);
+ setWidth(100, Unit.PERCENTAGE);
+ }
+
+ /**
+ * Creates a new instance of Label with text-contents read from given
+ * datasource.
+ *
+ * @param contentSource
+ * @param contentMode
+ */
+ public Label(Property contentSource, ContentMode contentMode) {
+ setPropertyDataSource(contentSource);
+ setContentMode(contentMode);
+ setWidth(100, Unit.PERCENTAGE);
+ }
+
+ @Override
+ protected LabelState getState() {
+ return (LabelState) super.getState();
+ }
+
+ @Override
+ protected LabelState getState(boolean markAsDirty) {
+ return (LabelState) super.getState(markAsDirty);
+ }
+
+ /**
+ * Gets the value of the label.
+ * <p>
+ * The value of the label is the text that is shown to the end user.
+ * Depending on the {@link ContentMode} it is plain text or markup.
+ * </p>
+ *
+ * @return the value of the label.
+ */
+ @Override
+ public String getValue() {
+ if (getPropertyDataSource() == null) {
+ // Use internal value if we are running without a data source
+ return getState(false).text;
+ }
+ return getDataSourceValue();
+ }
+
+ /**
+ * Returns the current value of the data source converted using the current
+ * locale.
+ *
+ * @return
+ */
+ private String getDataSourceValue() {
+ return ConverterUtil.convertFromModel(
+ getPropertyDataSource().getValue(), String.class,
+ getConverter(), getLocale());
+ }
+
+ /**
+ * Set the value of the label. Value of the label is the XML contents of the
+ * label. Since Vaadin 7.2, changing the value of Label instance with that
+ * method will fire ValueChangeEvent.
+ *
+ * @param newStringValue
+ * the New value of the label.
+ */
+ @Override
+ public void setValue(String newStringValue) {
+ if (getPropertyDataSource() == null) {
+
+ LabelState state = getState(false);
+ String oldTextValue = state.text;
+ if (!SharedUtil.equals(oldTextValue, newStringValue)) {
+ getState().text = newStringValue;
+ fireValueChange();
+ }
+ } else {
+ throw new IllegalStateException(
+ "Label is only a Property.Viewer and cannot update its data source");
+ }
+ }
+
+ /**
+ * Gets the type of the Property.
+ *
+ * @see com.vaadin.v7.data.Property#getType()
+ */
+ @Override
+ public Class<String> getType() {
+ return String.class;
+ }
+
+ /**
+ * Gets the viewing data-source property.
+ *
+ * @return the data source property.
+ * @see com.vaadin.v7.data.Property.Viewer#getPropertyDataSource()
+ */
+ @Override
+ public Property getPropertyDataSource() {
+ return dataSource;
+ }
+
+ /**
+ * Sets the property as data-source for viewing. Since Vaadin 7.2 a
+ * ValueChangeEvent is fired if the new value is different from previous.
+ *
+ * @param newDataSource
+ * the new data source Property
+ * @see com.vaadin.v7.data.Property.Viewer#setPropertyDataSource(com.vaadin.v7.data.Property)
+ */
+ @Override
+ public void setPropertyDataSource(Property newDataSource) {
+ // Stops listening the old data source changes
+ if (dataSource != null && Property.ValueChangeNotifier.class
+ .isAssignableFrom(dataSource.getClass())) {
+ ((Property.ValueChangeNotifier) dataSource).removeListener(this);
+ }
+
+ // Check if the current converter is compatible.
+ if (newDataSource != null
+ && !ConverterUtil.canConverterPossiblyHandle(getConverter(),
+ getType(), newDataSource.getType())) {
+ // There is no converter set or there is no way the current
+ // converter can be compatible.
+ Converter<String, ?> c = ConverterUtil.getConverter(String.class,
+ newDataSource.getType(), getSession());
+ setConverter(c);
+ }
+
+ dataSource = newDataSource;
+ if (dataSource != null) {
+ // Update the value from the data source. If data source was set to
+ // null, retain the old value
+ updateValueFromDataSource();
+ }
+
+ // Listens the new data source if possible
+ if (dataSource != null && Property.ValueChangeNotifier.class
+ .isAssignableFrom(dataSource.getClass())) {
+ ((Property.ValueChangeNotifier) dataSource).addListener(this);
+ }
+ markAsDirty();
+ }
+
+ /**
+ * Gets the content mode of the Label.
+ *
+ * @return the Content mode of the label.
+ *
+ * @see ContentMode
+ */
+ public ContentMode getContentMode() {
+ return getState(false).contentMode;
+ }
+
+ /**
+ * Sets the content mode of the Label.
+ *
+ * @param contentMode
+ * the New content mode of the label.
+ *
+ * @see ContentMode
+ */
+ public void setContentMode(ContentMode contentMode) {
+ if (contentMode == null) {
+ throw new IllegalArgumentException("Content mode can not be null");
+ }
+
+ getState().contentMode = contentMode;
+ }
+
+ /* Value change events */
+
+ private static final Method VALUE_CHANGE_METHOD;
+
+ static {
+ try {
+ VALUE_CHANGE_METHOD = Property.ValueChangeListener.class
+ .getDeclaredMethod("valueChange",
+ new Class[] { Property.ValueChangeEvent.class });
+ } catch (final java.lang.NoSuchMethodException e) {
+ // This should never happen
+ throw new java.lang.RuntimeException(
+ "Internal error finding methods in Label");
+ }
+ }
+
+ /**
+ * Value change event
+ *
+ * @author Vaadin Ltd.
+ * @since 3.0
+ */
+ public static class ValueChangeEvent extends Component.Event
+ implements Property.ValueChangeEvent {
+
+ /**
+ * New instance of text change event
+ *
+ * @param source
+ * the Source of the event.
+ */
+ public ValueChangeEvent(Label source) {
+ super(source);
+ }
+
+ /**
+ * Gets the Property that has been modified.
+ *
+ * @see com.vaadin.v7.data.Property.ValueChangeEvent#getProperty()
+ */
+ @Override
+ public Property getProperty() {
+ return (Property) getSource();
+ }
+ }
+
+ /**
+ * Adds the value change listener.
+ *
+ * @param listener
+ * the Listener to be added.
+ * @see com.vaadin.v7.data.Property.ValueChangeNotifier#addListener(com.vaadin.v7.data.Property.ValueChangeListener)
+ */
+ @Override
+ public void addValueChangeListener(Property.ValueChangeListener listener) {
+ addListener(Label.ValueChangeEvent.class, listener,
+ VALUE_CHANGE_METHOD);
+ }
+
+ /**
+ * @deprecated As of 7.0, replaced by
+ * {@link #addValueChangeListener(com.vaadin.v7.data.Property.ValueChangeListener)}
+ **/
+ @Override
+ @Deprecated
+ public void addListener(Property.ValueChangeListener listener) {
+ addValueChangeListener(listener);
+ }
+
+ /**
+ * Removes the value change listener.
+ *
+ * @param listener
+ * the Listener to be removed.
+ * @see com.vaadin.v7.data.Property.ValueChangeNotifier#removeListener(com.vaadin.v7.data.Property.ValueChangeListener)
+ */
+ @Override
+ public void removeValueChangeListener(
+ Property.ValueChangeListener listener) {
+ removeListener(Label.ValueChangeEvent.class, listener,
+ VALUE_CHANGE_METHOD);
+ }
+
+ /**
+ * @deprecated As of 7.0, replaced by
+ * {@link #removeValueChangeListener(com.vaadin.v7.data.Property.ValueChangeListener)}
+ **/
+ @Override
+ @Deprecated
+ public void removeListener(Property.ValueChangeListener listener) {
+ removeValueChangeListener(listener);
+ }
+
+ /**
+ * Emits the options change event.
+ */
+ protected void fireValueChange() {
+ // Set the error message
+ fireEvent(new Label.ValueChangeEvent(this));
+ }
+
+ /**
+ * Listens the value change events from data source.
+ *
+ * @see com.vaadin.v7.data.Property.ValueChangeListener#valueChange(Property.ValueChangeEvent)
+ */
+ @Override
+ public void valueChange(Property.ValueChangeEvent event) {
+ updateValueFromDataSource();
+ }
+
+ private void updateValueFromDataSource() {
+ // Update the internal value from the data source
+ String newConvertedValue = getDataSourceValue();
+ if (!SharedUtil.equals(newConvertedValue, getState(false).text)) {
+ getState().text = newConvertedValue;
+ fireValueChange();
+ }
+ }
+
+ @Override
+ public void attach() {
+ super.attach();
+ localeMightHaveChanged();
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ super.setLocale(locale);
+ localeMightHaveChanged();
+ }
+
+ private void localeMightHaveChanged() {
+ if (getPropertyDataSource() != null) {
+ updateValueFromDataSource();
+ }
+ }
+
+ private String getComparableValue() {
+ String stringValue = getValue();
+ if (stringValue == null) {
+ stringValue = "";
+ }
+
+ if (getContentMode() == ContentMode.HTML
+ || getContentMode() == ContentMode.XML) {
+ return stripTags(stringValue);
+ } else {
+ return stringValue;
+ }
+
+ }
+
+ /**
+ * Compares the Label to other objects.
+ *
+ * <p>
+ * Labels can be compared to other labels for sorting label contents. This
+ * is especially handy for sorting table columns.
+ * </p>
+ *
+ * <p>
+ * In RAW, PREFORMATTED and TEXT modes, the label contents are compared as
+ * is. In XML, UIDL and HTML modes, only CDATA is compared and tags ignored.
+ * If the other object is not a Label, its toString() return value is used
+ * in comparison.
+ * </p>
+ *
+ * @param other
+ * the Other object to compare to.
+ * @return a negative integer, zero, or a positive integer as this object is
+ * less than, equal to, or greater than the specified object.
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ @Override
+ public int compareTo(Label other) {
+
+ String thisValue = getComparableValue();
+ String otherValue = other.getComparableValue();
+
+ return thisValue.compareTo(otherValue);
+ }
+
+ /**
+ * Strips the tags from the XML.
+ *
+ * @param xml
+ * the String containing a XML snippet.
+ * @return the original XML without tags.
+ */
+ private String stripTags(String xml) {
+
+ final StringBuffer res = new StringBuffer();
+
+ int processed = 0;
+ final int xmlLen = xml.length();
+ while (processed < xmlLen) {
+ int next = xml.indexOf('<', processed);
+ if (next < 0) {
+ next = xmlLen;
+ }
+ res.append(xml.substring(processed, next));
+ if (processed < xmlLen) {
+ next = xml.indexOf('>', processed);
+ if (next < 0) {
+ next = xmlLen;
+ }
+ processed = next + 1;
+ }
+ }
+
+ return res.toString();
+ }
+
+ /**
+ * Gets the converter used to convert the property data source value to the
+ * label value.
+ *
+ * @return The converter or null if none is set.
+ */
+ public Converter<String, Object> getConverter() {
+ return converter;
+ }
+
+ /**
+ * Sets the converter used to convert the label value to the property data
+ * source type. The converter must have a presentation type of String.
+ *
+ * @param converter
+ * The new converter to use.
+ */
+ public void setConverter(Converter<String, ?> converter) {
+ this.converter = (Converter<String, Object>) converter;
+ markAsDirty();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.ui.AbstractComponent#readDesign(org.jsoup.nodes .Element,
+ * com.vaadin.ui.declarative.DesignContext)
+ */
+ @Override
+ public void readDesign(Element design, DesignContext designContext) {
+ super.readDesign(design, designContext);
+ String innerHtml = design.html();
+ boolean plainText = design.hasAttr(DESIGN_ATTR_PLAIN_TEXT);
+ if (plainText) {
+ setContentMode(ContentMode.TEXT);
+ } else {
+ setContentMode(ContentMode.HTML);
+ }
+ if (innerHtml != null && !"".equals(innerHtml)) {
+ if (plainText) {
+ innerHtml = DesignFormatter.decodeFromTextNode(innerHtml);
+ }
+ setValue(innerHtml);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.ui.AbstractComponent#getCustomAttributes()
+ */
+ @Override
+ protected Collection<String> getCustomAttributes() {
+ Collection<String> result = super.getCustomAttributes();
+ result.add("value");
+ result.add("content-mode");
+ result.add("plain-text");
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.vaadin.ui.AbstractComponent#writeDesign(org.jsoup.nodes.Element
+ * , com.vaadin.ui.declarative.DesignContext)
+ */
+ @Override
+ public void writeDesign(Element design, DesignContext designContext) {
+ super.writeDesign(design, designContext);
+ String content = getValue();
+ if (content != null) {
+ switch (getContentMode()) {
+ case TEXT:
+ case PREFORMATTED:
+ case XML:
+ case RAW: {
+ // FIXME This attribute is not enough to be able to restore the
+ // content mode in readDesign. The content mode should instead
+ // be written directly in the attribute and restored in
+ // readDesign. See ticket #19435
+ design.attr(DESIGN_ATTR_PLAIN_TEXT, true);
+ String encodeForTextNode = DesignFormatter
+ .encodeForTextNode(content);
+ if (encodeForTextNode != null) {
+ design.html(encodeForTextNode);
+ }
+ }
+ break;
+ case HTML:
+ design.html(content);
+ break;
+ default:
+ throw new IllegalStateException(
+ "ContentMode " + getContentMode()
+ + " is not supported by writeDesign");
+ }
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright 2000-2016 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.label;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.vaadin.server.VaadinSession;
+import com.vaadin.tests.data.bean.Person;
+import com.vaadin.tests.util.AlwaysLockedVaadinSession;
+import com.vaadin.util.CurrentInstance;
+import com.vaadin.v7.data.Property;
+import com.vaadin.v7.data.util.MethodProperty;
+import com.vaadin.v7.ui.Label;
+
+public class LabelConvertersTest {
+ @Before
+ public void clearExistingThreadLocals() {
+ // Ensure no previous test left some thread locals hanging
+ CurrentInstance.clearAll();
+ }
+
+ @Test
+ public void testLabelSetDataSourceLaterOn() {
+ Person p = Person.createTestPerson1();
+ Label l = new Label("My label");
+ assertEquals("My label", l.getValue());
+ assertNull(l.getConverter());
+ l.setPropertyDataSource(new MethodProperty<String>(p, "firstName"));
+ assertEquals(p.getFirstName(), l.getValue());
+ p.setFirstName("123");
+ assertEquals("123", l.getValue());
+ }
+
+ @Test
+ public void testIntegerDataSource() {
+ VaadinSession.setCurrent(new AlwaysLockedVaadinSession(null));
+ Label l = new Label("Foo");
+ Property ds = new MethodProperty<Integer>(Person.createTestPerson1(),
+ "age");
+ l.setPropertyDataSource(ds);
+ assertEquals(String.valueOf(Person.createTestPerson1().getAge()),
+ l.getValue());
+ }
+
+ @Test
+ public void testSetValueWithDataSource() {
+ try {
+ MethodProperty<String> property = new MethodProperty<String>(
+ Person.createTestPerson1(), "firstName");
+ Label l = new Label(property);
+ l.setValue("Foo");
+ fail("setValue should throw an exception when a data source is set");
+ } catch (Exception e) {
+ }
+
+ }
+
+ @Test
+ public void testLabelWithoutDataSource() {
+ Label l = new Label("My label");
+ assertEquals("My label", l.getValue());
+ assertNull(l.getConverter());
+ assertNull(l.getPropertyDataSource());
+ l.setValue("New value");
+ assertEquals("New value", l.getValue());
+ assertNull(l.getConverter());
+ assertNull(l.getPropertyDataSource());
+ }
+}
--- /dev/null
+package com.vaadin.tests.server.component.label;
+
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.createStrictMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+import org.easymock.EasyMock;
+import org.junit.Test;
+
+import com.vaadin.tests.server.component.AbstractListenerMethodsTestBase;
+import com.vaadin.v7.data.Property;
+import com.vaadin.v7.data.Property.ValueChangeListener;
+import com.vaadin.v7.ui.Label;
+import com.vaadin.v7.ui.Label.ValueChangeEvent;
+
+public class LabelListenersTest extends AbstractListenerMethodsTestBase {
+
+ @Test
+ public void testValueChangeListenerAddGetRemove() throws Exception {
+ testListenerAddGetRemove(Label.class, ValueChangeEvent.class,
+ ValueChangeListener.class);
+ }
+
+ @Test
+ public void testValueChangeFiredWhenSettingValue() {
+ Label underTest = new Label();
+
+ // setup the mock listener
+ ValueChangeListener mockListener = createStrictMock(
+ ValueChangeListener.class);
+ // record
+ mockListener.valueChange(
+ anyObject(com.vaadin.v7.data.Property.ValueChangeEvent.class));
+
+ // test
+ underTest.addValueChangeListener(mockListener);
+
+ replay(mockListener);
+ underTest.setValue("A new value");
+
+ verify(mockListener);
+
+ }
+
+ @Test
+ public void testValueChangeFiredWhenSettingPropertyDataSource() {
+ // setup
+ Label underTest = new Label();
+
+ Property mockProperty = EasyMock.createMock(Property.class);
+
+ ValueChangeListener mockListener = createStrictMock(
+ ValueChangeListener.class);
+ // record
+ mockListener.valueChange(
+ anyObject(com.vaadin.v7.data.Property.ValueChangeEvent.class));
+
+ expect(mockProperty.getType()).andReturn(String.class).atLeastOnce();
+ expect(mockProperty.getValue()).andReturn("Any").atLeastOnce();
+
+ // test
+
+ replay(mockListener, mockProperty);
+ underTest.addValueChangeListener(mockListener);
+ underTest.setPropertyDataSource(mockProperty);
+
+ verify(mockListener);
+
+ }
+
+ @Test
+ public void testValueChangeNotFiredWhenNotSettingValue() {
+ Label underTest = new Label();
+ // setup the mock listener
+ ValueChangeListener mockListener = createStrictMock(
+ ValueChangeListener.class);
+ // record: nothing to record
+
+ // test
+ underTest.addValueChangeListener(mockListener);
+ replay(mockListener);
+ verify(mockListener);
+ }
+
+ @Test
+ public void testNoValueChangeFiredWhenSettingPropertyDataSourceToNull() {
+ Label underTest = new Label();
+ // setup the mock Listener
+ ValueChangeListener mockListener = createStrictMock(
+ ValueChangeListener.class);
+ // record: nothing to record
+
+ // test
+ underTest.addValueChangeListener(mockListener);
+ underTest.setPropertyDataSource(null);
+
+ replay(mockListener);
+ verify(mockListener);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright 2000-2016 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.v7.ui;
+
+import java.util.Locale;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.vaadin.server.VaadinSession;
+import com.vaadin.tests.util.AlwaysLockedVaadinSession;
+import com.vaadin.tests.util.MockUI;
+import com.vaadin.ui.UI;
+import com.vaadin.v7.data.util.ObjectProperty;
+
+public class LabelDataSourceTest {
+
+ Label label;
+ private static final String STRING_DS_VALUE = "String DatA source";
+ private static final int INTEGER_DS_VALUE = 1587;
+ private static final String INTEGER_STRING_VALUE_FI = "1Â 587";
+ private static final String INTEGER_STRING_VALUE_EN_US = "1,587";
+ private static final Object INTEGER_STRING_VALUE_DE = "1.587";
+ ObjectProperty<String> stringDataSource;
+ private ObjectProperty<Integer> integerDataSource;
+ VaadinSession vaadinSession;
+
+ @Before
+ public void setup() {
+ vaadinSession = new AlwaysLockedVaadinSession(null);
+ VaadinSession.setCurrent(vaadinSession);
+
+ label = new Label();
+ stringDataSource = new ObjectProperty<String>(STRING_DS_VALUE);
+ integerDataSource = new ObjectProperty<Integer>(INTEGER_DS_VALUE);
+ }
+
+ @Test
+ public void stringDataSource() {
+ label.setPropertyDataSource(stringDataSource);
+ Assert.assertEquals(STRING_DS_VALUE, label.getState().text);
+ Assert.assertEquals(STRING_DS_VALUE, label.getValue());
+ Assert.assertEquals(stringDataSource, label.getPropertyDataSource());
+ label.setPropertyDataSource(null);
+ Assert.assertEquals(STRING_DS_VALUE, label.getState().text);
+ Assert.assertEquals(STRING_DS_VALUE, label.getValue());
+ Assert.assertEquals(null, label.getPropertyDataSource());
+ label.setValue("foo");
+ Assert.assertEquals("foo", label.getState().text);
+ Assert.assertEquals("foo", label.getValue());
+ Assert.assertNull(label.getPropertyDataSource());
+
+ }
+
+ @Test
+ public void integerDataSourceFi() {
+ label.setLocale(new Locale("fi", "FI"));
+ label.setPropertyDataSource(integerDataSource);
+ Assert.assertEquals(INTEGER_STRING_VALUE_FI, label.getState().text);
+ Assert.assertEquals(INTEGER_STRING_VALUE_FI, label.getValue());
+ Assert.assertEquals(integerDataSource, label.getPropertyDataSource());
+ }
+
+ @Test
+ public void integerDataSourceEn() {
+ label.setLocale(new Locale("en", "US"));
+ label.setPropertyDataSource(integerDataSource);
+ Assert.assertEquals(INTEGER_STRING_VALUE_EN_US, label.getState().text);
+ Assert.assertEquals(INTEGER_STRING_VALUE_EN_US, label.getValue());
+ Assert.assertEquals(integerDataSource, label.getPropertyDataSource());
+ }
+
+ @Test
+ public void changeLocaleAfterDataSource() {
+ label.setLocale(new Locale("en", "US"));
+ label.setPropertyDataSource(integerDataSource);
+ label.setLocale(new Locale("fi", "FI"));
+ Assert.assertEquals(INTEGER_STRING_VALUE_FI, label.getState().text);
+ Assert.assertEquals(INTEGER_STRING_VALUE_FI, label.getValue());
+ Assert.assertEquals(integerDataSource, label.getPropertyDataSource());
+ }
+
+ @Test
+ public void setRemoveDataSource() {
+ label.setValue("before");
+ label.setPropertyDataSource(stringDataSource);
+ Assert.assertEquals(STRING_DS_VALUE, label.getValue());
+ label.setPropertyDataSource(null);
+ Assert.assertEquals(STRING_DS_VALUE, label.getValue());
+ label.setValue("after");
+ Assert.assertEquals("after", label.getValue());
+ }
+
+ @Test
+ public void attachToSessionWithDifferentLocale() {
+ label.setValue("before");
+ // label.setLocale(Locale.GERMANY);
+ label.setPropertyDataSource(integerDataSource);
+ UI ui = new MockUI();
+ ui.setLocale(Locale.GERMANY);
+ ui.setContent(label);
+ Assert.assertEquals(INTEGER_STRING_VALUE_DE, label.getState().text);
+ }
+}
package com.vaadin.server;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
+import com.vaadin.v7.shared.ui.label.ContentMode;
/**
* A font icon is a type of icon that is made by displaying one character from a
package com.vaadin.ui;
-import java.lang.reflect.Method;
import java.util.Collection;
-import java.util.Locale;
import org.jsoup.nodes.Element;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.shared.ui.label.LabelState;
-import com.vaadin.shared.util.SharedUtil;
import com.vaadin.ui.declarative.DesignContext;
import com.vaadin.ui.declarative.DesignFormatter;
-import com.vaadin.v7.data.Property;
-import com.vaadin.v7.data.util.converter.Converter;
-import com.vaadin.v7.data.util.converter.ConverterUtil;
/**
* Label component for showing non-editable short texts.
- *
- * The label content can be set to the modes specified by {@link ContentMode}
- *
* <p>
- * The contents of the label may contain simple formatting:
- * <ul>
- * <li><b><b></b> Bold
- * <li><b><i></b> Italic
- * <li><b><u></b> Underlined
- * <li><b><br/></b> Linebreak
- * <li><b><ul><li>item 1</li><li>item 2</li></ul></b> List of
- * items
- * </ul>
- * The <b>b</b>,<b>i</b>,<b>u</b> and <b>li</b> tags can contain all the tags in
- * the list recursively.
- * </p>
+ * The label content can be set to the modes specified by {@link ContentMode}.
+ * If content mode is set to HTML, any HTML content is allowed.
*
* @author Vaadin Ltd.
* @since 3.0
*/
@SuppressWarnings("serial")
-public class Label extends AbstractComponent implements Property<String>,
- Property.Viewer, Property.ValueChangeListener,
- Property.ValueChangeNotifier, Comparable<Label> {
-
- /**
- * @deprecated As of 7.0, use {@link ContentMode#TEXT} instead
- */
- @Deprecated
- public static final ContentMode CONTENT_TEXT = ContentMode.TEXT;
-
- /**
- * @deprecated As of 7.0, use {@link ContentMode#PREFORMATTED} instead
- */
- @Deprecated
- public static final ContentMode CONTENT_PREFORMATTED = ContentMode.PREFORMATTED;
-
- /**
- * @deprecated As of 7.0, use {@link ContentMode#HTML} instead
- */
- @Deprecated
- public static final ContentMode CONTENT_XHTML = ContentMode.HTML;
-
- /**
- * @deprecated As of 7.0, use {@link ContentMode#XML} instead
- */
- @Deprecated
- public static final ContentMode CONTENT_XML = ContentMode.XML;
-
- /**
- * @deprecated As of 7.0, use {@link ContentMode#RAW} instead
- */
- @Deprecated
- public static final ContentMode CONTENT_RAW = ContentMode.RAW;
-
- /**
- * @deprecated As of 7.0, use {@link ContentMode#TEXT} instead
- */
- @Deprecated
- public static final ContentMode CONTENT_DEFAULT = ContentMode.TEXT;
-
- /**
- * A converter used to convert from the data model type to the field type
- * and vice versa. Label type is always String.
- */
- private Converter<String, Object> converter = null;
-
- private Property<String> dataSource = null;
+public class Label extends AbstractComponent {
/**
* Creates an empty Label.
}
/**
- * Creates a new instance of Label with text-contents.
- *
- * @param content
- */
- public Label(String content) {
- this(content, ContentMode.TEXT);
- }
-
- /**
- * Creates a new instance of Label with text-contents read from given
- * datasource.
- *
- * @param contentSource
- */
- public Label(Property contentSource) {
- this(contentSource, ContentMode.TEXT);
- }
-
- /**
- * Creates a new instance of Label with text-contents.
+ * Creates a new instance with text content mode and the given text.
*
- * @param content
- * @param contentMode
+ * @param text
+ * the text to set
*/
- public Label(String content, ContentMode contentMode) {
- setValue(content);
- setContentMode(contentMode);
- setWidth(100, Unit.PERCENTAGE);
+ public Label(String text) {
+ this(text, ContentMode.TEXT);
}
/**
- * Creates a new instance of Label with text-contents read from given
- * datasource.
+ * Creates a new instance with the given text and content mode.
*
- * @param contentSource
+ * @param text
+ * the text to set
* @param contentMode
+ * the content mode to use
*/
- public Label(Property contentSource, ContentMode contentMode) {
- setPropertyDataSource(contentSource);
+ public Label(String text, ContentMode contentMode) {
+ setValue(text);
setContentMode(contentMode);
- setWidth(100, Unit.PERCENTAGE);
+ setWidth("100%");
}
@Override
}
/**
- * Gets the value of the label.
- * <p>
- * The value of the label is the text that is shown to the end user.
- * Depending on the {@link ContentMode} it is plain text or markup.
- * </p>
- *
- * @return the value of the label.
- */
- @Override
- public String getValue() {
- if (getPropertyDataSource() == null) {
- // Use internal value if we are running without a data source
- return getState(false).text;
- }
- return getDataSourceValue();
- }
-
- /**
- * Returns the current value of the data source converted using the current
- * locale.
+ * Gets the content mode of the label.
*
- * @return
- */
- private String getDataSourceValue() {
- return ConverterUtil.convertFromModel(
- getPropertyDataSource().getValue(), String.class,
- getConverter(), getLocale());
- }
-
- /**
- * Set the value of the label. Value of the label is the XML contents of the
- * label. Since Vaadin 7.2, changing the value of Label instance with that
- * method will fire ValueChangeEvent.
- *
- * @param newStringValue
- * the New value of the label.
- */
- @Override
- public void setValue(String newStringValue) {
- if (getPropertyDataSource() == null) {
-
- LabelState state = getState(false);
- String oldTextValue = state.text;
- if (!SharedUtil.equals(oldTextValue, newStringValue)) {
- getState().text = newStringValue;
- fireValueChange();
- }
- } else {
- throw new IllegalStateException(
- "Label is only a Property.Viewer and cannot update its data source");
- }
- }
-
- /**
- * Gets the type of the Property.
- *
- * @see com.vaadin.v7.data.Property#getType()
- */
- @Override
- public Class<String> getType() {
- return String.class;
- }
-
- /**
- * Gets the viewing data-source property.
- *
- * @return the data source property.
- * @see com.vaadin.v7.data.Property.Viewer#getPropertyDataSource()
- */
- @Override
- public Property getPropertyDataSource() {
- return dataSource;
- }
-
- /**
- * Sets the property as data-source for viewing. Since Vaadin 7.2 a
- * ValueChangeEvent is fired if the new value is different from previous.
- *
- * @param newDataSource
- * the new data source Property
- * @see com.vaadin.v7.data.Property.Viewer#setPropertyDataSource(com.vaadin.v7.data.Property)
- */
- @Override
- public void setPropertyDataSource(Property newDataSource) {
- // Stops listening the old data source changes
- if (dataSource != null && Property.ValueChangeNotifier.class
- .isAssignableFrom(dataSource.getClass())) {
- ((Property.ValueChangeNotifier) dataSource).removeListener(this);
- }
-
- // Check if the current converter is compatible.
- if (newDataSource != null
- && !ConverterUtil.canConverterPossiblyHandle(
- getConverter(), getType(), newDataSource.getType())) {
- // There is no converter set or there is no way the current
- // converter can be compatible.
- Converter<String, ?> c = ConverterUtil.getConverter(
- String.class, newDataSource.getType(), getSession());
- setConverter(c);
- }
-
- dataSource = newDataSource;
- if (dataSource != null) {
- // Update the value from the data source. If data source was set to
- // null, retain the old value
- updateValueFromDataSource();
- }
-
- // Listens the new data source if possible
- if (dataSource != null && Property.ValueChangeNotifier.class
- .isAssignableFrom(dataSource.getClass())) {
- ((Property.ValueChangeNotifier) dataSource).addListener(this);
- }
- markAsDirty();
- }
-
- /**
- * Gets the content mode of the Label.
- *
- * @return the Content mode of the label.
+ * @return the content mode of the label
*
* @see ContentMode
*/
}
/**
- * Sets the content mode of the Label.
+ * Sets the content mode of the label.
*
* @param contentMode
- * the New content mode of the label.
+ * the content mode to set
*
* @see ContentMode
*/
getState().contentMode = contentMode;
}
- /* Value change events */
-
- private static final Method VALUE_CHANGE_METHOD;
-
- static {
- try {
- VALUE_CHANGE_METHOD = Property.ValueChangeListener.class
- .getDeclaredMethod("valueChange",
- new Class[] { Property.ValueChangeEvent.class });
- } catch (final java.lang.NoSuchMethodException e) {
- // This should never happen
- throw new java.lang.RuntimeException(
- "Internal error finding methods in Label");
- }
- }
-
- /**
- * Value change event
- *
- * @author Vaadin Ltd.
- * @since 3.0
- */
- public static class ValueChangeEvent extends Component.Event
- implements Property.ValueChangeEvent {
-
- /**
- * New instance of text change event
- *
- * @param source
- * the Source of the event.
- */
- public ValueChangeEvent(Label source) {
- super(source);
- }
-
- /**
- * Gets the Property that has been modified.
- *
- * @see com.vaadin.v7.data.Property.ValueChangeEvent#getProperty()
- */
- @Override
- public Property getProperty() {
- return (Property) getSource();
- }
- }
-
- /**
- * Adds the value change listener.
- *
- * @param listener
- * the Listener to be added.
- * @see com.vaadin.v7.data.Property.ValueChangeNotifier#addListener(com.vaadin.v7.data.Property.ValueChangeListener)
- */
- @Override
- public void addValueChangeListener(Property.ValueChangeListener listener) {
- addListener(Label.ValueChangeEvent.class, listener,
- VALUE_CHANGE_METHOD);
- }
-
- /**
- * @deprecated As of 7.0, replaced by
- * {@link #addValueChangeListener(com.vaadin.v7.data.Property.ValueChangeListener)}
- **/
- @Override
- @Deprecated
- public void addListener(Property.ValueChangeListener listener) {
- addValueChangeListener(listener);
- }
-
- /**
- * Removes the value change listener.
- *
- * @param listener
- * the Listener to be removed.
- * @see com.vaadin.v7.data.Property.ValueChangeNotifier#removeListener(com.vaadin.v7.data.Property.ValueChangeListener)
- */
- @Override
- public void removeValueChangeListener(
- Property.ValueChangeListener listener) {
- removeListener(Label.ValueChangeEvent.class, listener,
- VALUE_CHANGE_METHOD);
- }
-
- /**
- * @deprecated As of 7.0, replaced by
- * {@link #removeValueChangeListener(com.vaadin.v7.data.Property.ValueChangeListener)}
- **/
- @Override
- @Deprecated
- public void removeListener(Property.ValueChangeListener listener) {
- removeValueChangeListener(listener);
- }
-
- /**
- * Emits the options change event.
- */
- protected void fireValueChange() {
- // Set the error message
- fireEvent(new Label.ValueChangeEvent(this));
- }
-
/**
- * Listens the value change events from data source.
+ * Sets the text to be shown in the label.
*
- * @see com.vaadin.v7.data.Property.ValueChangeListener#valueChange(Property.ValueChangeEvent)
+ * @param value
+ * the text to show in the label, null is converted to an empty
+ * string
*/
- @Override
- public void valueChange(Property.ValueChangeEvent event) {
- updateValueFromDataSource();
- }
-
- private void updateValueFromDataSource() {
- // Update the internal value from the data source
- String newConvertedValue = getDataSourceValue();
- if (!SharedUtil.equals(newConvertedValue, getState(false).text)) {
- getState().text = newConvertedValue;
- fireValueChange();
- }
- }
-
- @Override
- public void attach() {
- super.attach();
- localeMightHaveChanged();
- }
-
- @Override
- public void setLocale(Locale locale) {
- super.setLocale(locale);
- localeMightHaveChanged();
- }
-
- private void localeMightHaveChanged() {
- if (getPropertyDataSource() != null) {
- updateValueFromDataSource();
- }
- }
-
- private String getComparableValue() {
- String stringValue = getValue();
- if (stringValue == null) {
- stringValue = "";
- }
-
- if (getContentMode() == ContentMode.HTML
- || getContentMode() == ContentMode.XML) {
- return stripTags(stringValue);
+ public void setValue(String value) {
+ if (value == null) {
+ getState().text = "";
} else {
- return stringValue;
+ getState().text = value;
}
-
- }
-
- /**
- * Compares the Label to other objects.
- *
- * <p>
- * Labels can be compared to other labels for sorting label contents. This
- * is especially handy for sorting table columns.
- * </p>
- *
- * <p>
- * In RAW, PREFORMATTED and TEXT modes, the label contents are compared as
- * is. In XML, UIDL and HTML modes, only CDATA is compared and tags ignored.
- * If the other object is not a Label, its toString() return value is used
- * in comparison.
- * </p>
- *
- * @param other
- * the Other object to compare to.
- * @return a negative integer, zero, or a positive integer as this object is
- * less than, equal to, or greater than the specified object.
- * @see java.lang.Comparable#compareTo(java.lang.Object)
- */
- @Override
- public int compareTo(Label other) {
-
- String thisValue = getComparableValue();
- String otherValue = other.getComparableValue();
-
- return thisValue.compareTo(otherValue);
}
/**
- * Strips the tags from the XML.
+ * Gets the text shown in the label.
*
- * @param xml
- * the String containing a XML snippet.
- * @return the original XML without tags.
+ * @return the text shown in the label, not null
*/
- private String stripTags(String xml) {
-
- final StringBuffer res = new StringBuffer();
-
- int processed = 0;
- final int xmlLen = xml.length();
- while (processed < xmlLen) {
- int next = xml.indexOf('<', processed);
- if (next < 0) {
- next = xmlLen;
- }
- res.append(xml.substring(processed, next));
- if (processed < xmlLen) {
- next = xml.indexOf('>', processed);
- if (next < 0) {
- next = xmlLen;
- }
- processed = next + 1;
- }
- }
-
- return res.toString();
- }
-
- /**
- * Gets the converter used to convert the property data source value to the
- * label value.
- *
- * @return The converter or null if none is set.
- */
- public Converter<String, Object> getConverter() {
- return converter;
- }
-
- /**
- * Sets the converter used to convert the label value to the property data
- * source type. The converter must have a presentation type of String.
- *
- * @param converter
- * The new converter to use.
- */
- public void setConverter(Converter<String, ?> converter) {
- this.converter = (Converter<String, Object>) converter;
- markAsDirty();
+ public String getValue() {
+ return getState(false).text;
}
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.ui.AbstractComponent#readDesign(org.jsoup.nodes .Element,
- * com.vaadin.ui.declarative.DesignContext)
- */
@Override
public void readDesign(Element design, DesignContext designContext) {
super.readDesign(design, designContext);
}
}
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.ui.AbstractComponent#getCustomAttributes()
- */
@Override
protected Collection<String> getCustomAttributes() {
Collection<String> result = super.getCustomAttributes();
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see com.vaadin.ui.AbstractComponent#writeDesign(org.jsoup.nodes.Element
- * , com.vaadin.ui.declarative.DesignContext)
- */
@Override
public void writeDesign(Element design, DesignContext designContext) {
super.writeDesign(design, designContext);
if (content != null) {
switch (getContentMode()) {
case TEXT:
- case PREFORMATTED:
- case XML:
- case RAW: {
+ case PREFORMATTED: {
// FIXME This attribute is not enough to be able to restore the
// content mode in readDesign. The content mode should instead
// be written directly in the attribute and restored in
case HTML:
design.html(content);
break;
- default:
- throw new IllegalStateException(
- "ContentMode " + getContentMode()
- + " is not supported by writeDesign");
}
}
}
+
}
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalSplitPanel;
import com.vaadin.ui.Label;
+import com.vaadin.ui.Panel;
import com.vaadin.ui.declarative.Design;
import com.vaadin.ui.declarative.DesignContext;
@Test
public void testSizeAuto() {
- String design = "<vaadin-label size-auto />";
+ component = new Panel();
+ String design = "<vaadin-panel size-auto />";
component.setSizeUndefined();
testRead(design, component);
testWrite(design, component);
@Test
public void testWidthAuto() {
- String design = "<vaadin-label height=\"20px\"/ width-auto />";
+ component = new Panel();
+ String design = "<vaadin-panel height=\"20px\"/ width-auto />";
component.setCaptionAsHtml(false);
component.setHeight("20px");
component.setWidth(null);
+++ /dev/null
-/*
- * Copyright 2000-2016 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.label;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import com.vaadin.server.VaadinSession;
-import com.vaadin.tests.data.bean.Person;
-import com.vaadin.tests.util.AlwaysLockedVaadinSession;
-import com.vaadin.ui.Label;
-import com.vaadin.util.CurrentInstance;
-import com.vaadin.v7.data.Property;
-import com.vaadin.v7.data.util.MethodProperty;
-
-public class LabelConvertersTest {
- @Before
- public void clearExistingThreadLocals() {
- // Ensure no previous test left some thread locals hanging
- CurrentInstance.clearAll();
- }
-
- @Test
- public void testLabelSetDataSourceLaterOn() {
- Person p = Person.createTestPerson1();
- Label l = new Label("My label");
- assertEquals("My label", l.getValue());
- assertNull(l.getConverter());
- l.setPropertyDataSource(new MethodProperty<String>(p, "firstName"));
- assertEquals(p.getFirstName(), l.getValue());
- p.setFirstName("123");
- assertEquals("123", l.getValue());
- }
-
- @Test
- public void testIntegerDataSource() {
- VaadinSession.setCurrent(new AlwaysLockedVaadinSession(null));
- Label l = new Label("Foo");
- Property ds = new MethodProperty<Integer>(Person.createTestPerson1(),
- "age");
- l.setPropertyDataSource(ds);
- assertEquals(String.valueOf(Person.createTestPerson1().getAge()),
- l.getValue());
- }
-
- @Test
- public void testSetValueWithDataSource() {
- try {
- MethodProperty<String> property = new MethodProperty<String>(
- Person.createTestPerson1(), "firstName");
- Label l = new Label(property);
- l.setValue("Foo");
- fail("setValue should throw an exception when a data source is set");
- } catch (Exception e) {
- }
-
- }
-
- @Test
- public void testLabelWithoutDataSource() {
- Label l = new Label("My label");
- assertEquals("My label", l.getValue());
- assertNull(l.getConverter());
- assertNull(l.getPropertyDataSource());
- l.setValue("New value");
- assertEquals("New value", l.getValue());
- assertNull(l.getConverter());
- assertNull(l.getPropertyDataSource());
- }
-}
Assert.assertEquals("& Test", root.html());
}
- @Test
- public void testNullValue() {
- Label label = new Label();
- label.setValue(null);
-
- label.setContentMode(ContentMode.TEXT);
- Element root = new Element(Tag.valueOf("vaadin-label"), "");
- label.writeDesign(root, new DesignContext());
- Assert.assertEquals("", root.html());
-
- label.setContentMode(ContentMode.HTML);
- root = new Element(Tag.valueOf("vaadin-label"), "");
- label.writeDesign(root, new DesignContext());
- Assert.assertEquals("", root.html());
- }
-
/**
* FIXME Using another content mode than TEXT OR HTML is currently not
* supported and will cause the content mode to fallback without the users
+++ /dev/null
-package com.vaadin.tests.server.component.label;
-
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createStrictMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-
-import org.easymock.EasyMock;
-import org.junit.Test;
-
-import com.vaadin.tests.server.component.AbstractListenerMethodsTestBase;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.Label.ValueChangeEvent;
-import com.vaadin.v7.data.Property;
-import com.vaadin.v7.data.Property.ValueChangeListener;
-
-public class LabelListenersTest extends AbstractListenerMethodsTestBase {
-
- @Test
- public void testValueChangeListenerAddGetRemove() throws Exception {
- testListenerAddGetRemove(Label.class, ValueChangeEvent.class,
- ValueChangeListener.class);
- }
-
- @Test
- public void testValueChangeFiredWhenSettingValue() {
- Label underTest = new Label();
-
- // setup the mock listener
- ValueChangeListener mockListener = createStrictMock(
- ValueChangeListener.class);
- // record
- mockListener.valueChange(
- anyObject(com.vaadin.v7.data.Property.ValueChangeEvent.class));
-
- // test
- underTest.addValueChangeListener(mockListener);
-
- replay(mockListener);
- underTest.setValue("A new value");
-
- verify(mockListener);
-
- }
-
- @Test
- public void testValueChangeFiredWhenSettingPropertyDataSource() {
- // setup
- Label underTest = new Label();
-
- Property mockProperty = EasyMock.createMock(Property.class);
-
- ValueChangeListener mockListener = createStrictMock(
- ValueChangeListener.class);
- // record
- mockListener.valueChange(
- anyObject(com.vaadin.v7.data.Property.ValueChangeEvent.class));
-
- expect(mockProperty.getType()).andReturn(String.class).atLeastOnce();
- expect(mockProperty.getValue()).andReturn("Any").atLeastOnce();
-
- // test
-
- replay(mockListener, mockProperty);
- underTest.addValueChangeListener(mockListener);
- underTest.setPropertyDataSource(mockProperty);
-
- verify(mockListener);
-
- }
-
- @Test
- public void testValueChangeNotFiredWhenNotSettingValue() {
- Label underTest = new Label();
- // setup the mock listener
- ValueChangeListener mockListener = createStrictMock(
- ValueChangeListener.class);
- // record: nothing to record
-
- // test
- underTest.addValueChangeListener(mockListener);
- replay(mockListener);
- verify(mockListener);
- }
-
- @Test
- public void testNoValueChangeFiredWhenSettingPropertyDataSourceToNull() {
- Label underTest = new Label();
- // setup the mock Listener
- ValueChangeListener mockListener = createStrictMock(
- ValueChangeListener.class);
- // record: nothing to record
-
- // test
- underTest.addValueChangeListener(mockListener);
- underTest.setPropertyDataSource(null);
-
- replay(mockListener);
- verify(mockListener);
- }
-
-}
+++ /dev/null
-/*
- * Copyright 2000-2016 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.util.Locale;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.vaadin.server.VaadinSession;
-import com.vaadin.tests.util.AlwaysLockedVaadinSession;
-import com.vaadin.tests.util.MockUI;
-import com.vaadin.v7.data.util.ObjectProperty;
-
-public class LabelDataSourceTest {
-
- Label label;
- private static final String STRING_DS_VALUE = "String DatA source";
- private static final int INTEGER_DS_VALUE = 1587;
- private static final String INTEGER_STRING_VALUE_FI = "1Â 587";
- private static final String INTEGER_STRING_VALUE_EN_US = "1,587";
- private static final Object INTEGER_STRING_VALUE_DE = "1.587";
- ObjectProperty<String> stringDataSource;
- private ObjectProperty<Integer> integerDataSource;
- VaadinSession vaadinSession;
-
- @Before
- public void setup() {
- vaadinSession = new AlwaysLockedVaadinSession(null);
- VaadinSession.setCurrent(vaadinSession);
-
- label = new Label();
- stringDataSource = new ObjectProperty<String>(STRING_DS_VALUE);
- integerDataSource = new ObjectProperty<Integer>(INTEGER_DS_VALUE);
- }
-
- @Test
- public void stringDataSource() {
- label.setPropertyDataSource(stringDataSource);
- Assert.assertEquals(STRING_DS_VALUE, label.getState().text);
- Assert.assertEquals(STRING_DS_VALUE, label.getValue());
- Assert.assertEquals(stringDataSource, label.getPropertyDataSource());
- label.setPropertyDataSource(null);
- Assert.assertEquals(STRING_DS_VALUE, label.getState().text);
- Assert.assertEquals(STRING_DS_VALUE, label.getValue());
- Assert.assertEquals(null, label.getPropertyDataSource());
- label.setValue("foo");
- Assert.assertEquals("foo", label.getState().text);
- Assert.assertEquals("foo", label.getValue());
- Assert.assertNull(label.getPropertyDataSource());
-
- }
-
- @Test
- public void integerDataSourceFi() {
- label.setLocale(new Locale("fi", "FI"));
- label.setPropertyDataSource(integerDataSource);
- Assert.assertEquals(INTEGER_STRING_VALUE_FI, label.getState().text);
- Assert.assertEquals(INTEGER_STRING_VALUE_FI, label.getValue());
- Assert.assertEquals(integerDataSource, label.getPropertyDataSource());
- }
-
- @Test
- public void integerDataSourceEn() {
- label.setLocale(new Locale("en", "US"));
- label.setPropertyDataSource(integerDataSource);
- Assert.assertEquals(INTEGER_STRING_VALUE_EN_US, label.getState().text);
- Assert.assertEquals(INTEGER_STRING_VALUE_EN_US, label.getValue());
- Assert.assertEquals(integerDataSource, label.getPropertyDataSource());
- }
-
- @Test
- public void changeLocaleAfterDataSource() {
- label.setLocale(new Locale("en", "US"));
- label.setPropertyDataSource(integerDataSource);
- label.setLocale(new Locale("fi", "FI"));
- Assert.assertEquals(INTEGER_STRING_VALUE_FI, label.getState().text);
- Assert.assertEquals(INTEGER_STRING_VALUE_FI, label.getValue());
- Assert.assertEquals(integerDataSource, label.getPropertyDataSource());
- }
-
- @Test
- public void setRemoveDataSource() {
- label.setValue("before");
- label.setPropertyDataSource(stringDataSource);
- Assert.assertEquals(STRING_DS_VALUE, label.getValue());
- label.setPropertyDataSource(null);
- Assert.assertEquals(STRING_DS_VALUE, label.getValue());
- label.setValue("after");
- Assert.assertEquals("after", label.getValue());
- }
-
- @Test
- public void attachToSessionWithDifferentLocale() {
- label.setValue("before");
- // label.setLocale(Locale.GERMANY);
- label.setPropertyDataSource(integerDataSource);
- UI ui = new MockUI();
- ui.setLocale(Locale.GERMANY);
- ui.setContent(label);
- Assert.assertEquals(INTEGER_STRING_VALUE_DE, label.getState().text);
- }
-}
--- /dev/null
+package com.vaadin.ui;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class LabelTest {
+
+ @Test
+ public void emptyLabelValue() {
+ Assert.assertEquals("", new Label().getValue());
+ }
+
+ @Test
+ public void labelInitialValue() {
+ Assert.assertEquals("initial", new Label("initial").getValue());
+ }
+
+ @Test
+ public void labelSetValue() {
+ Label label = new Label();
+ label.setValue("foo");
+ Assert.assertEquals("foo", label.getValue());
+ }
+
+}
/**
* Content modes defining how the client should interpret a Label's value.
*
- * @since 7.0.0
+ * @since 7.0
*/
public enum ContentMode {
/**
/**
* Content mode, where the label contains HTML.
*/
- HTML,
+ HTML
- /**
- * Content mode, where the label contains well-formed or well-balanced XML.
- * This is handled in the same way as {@link #HTML}.
- *
- * @deprecated Use {@link #HTML} instead
- */
- @Deprecated
- XML,
-
- /**
- * Legacy content mode, where the label contains RAW output. This is handled
- * in exactly the same way as {@link #HTML}.
- *
- * @deprecated Use {@link #HTML} instead
- */
- @Deprecated
- RAW;
}
--- /dev/null
+/*
+ * Copyright 2000-2016 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.v7.shared.ui.label;
+
+/**
+ * Content modes defining how the client should interpret a Label's value.
+ *
+ * @since 7.0.0
+ */
+public enum ContentMode {
+ /**
+ * Content mode, where the label contains only plain text.
+ */
+ TEXT,
+
+ /**
+ * Content mode, where the label contains preformatted text. In this mode
+ * newlines are preserved when rendered on the screen.
+ */
+ PREFORMATTED,
+
+ /**
+ * Content mode, where the label contains HTML.
+ */
+ HTML,
+
+ /**
+ * Content mode, where the label contains well-formed or well-balanced XML.
+ * This is handled in the same way as {@link #HTML}.
+ *
+ * @deprecated Use {@link #HTML} instead
+ */
+ @Deprecated
+ XML,
+
+ /**
+ * Legacy content mode, where the label contains RAW output. This is handled
+ * in exactly the same way as {@link #HTML}.
+ *
+ * @deprecated Use {@link #HTML} instead
+ */
+ @Deprecated
+ RAW;
+}
--- /dev/null
+/*
+ * Copyright 2000-2016 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.v7.shared.ui.label;
+
+import com.vaadin.shared.AbstractComponentState;
+
+public class LabelState extends AbstractComponentState {
+ {
+ primaryStyleName = "v-label";
+ }
+ public ContentMode contentMode = ContentMode.TEXT;
+ public String text = "";
+}
import com.vaadin.server.LegacyApplication;
import com.vaadin.server.Sizeable;
import com.vaadin.shared.MouseEventDetails.MouseButton;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractComponentTest;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.Component;
import com.vaadin.v7.data.util.HierarchicalContainer;
import com.vaadin.v7.event.ItemClickEvent;
import com.vaadin.v7.event.ItemClickEvent.ItemClickListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Tree;
import com.vaadin.v7.ui.Tree.ItemStyleGenerator;
package com.vaadin.tests;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Component.Event;
import com.vaadin.ui.PasswordField;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Field;
import com.vaadin.v7.ui.Tree;
package com.vaadin.tests;
import com.vaadin.server.ClassResource;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Component;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Panel;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
/**
* This example demonstrates layouts. Layouts are populated with sample Vaadin
import java.net.URL;
import com.vaadin.server.LegacyApplication;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.VerticalLayout;
import java.util.Map;
import com.vaadin.server.UserError;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.DateField;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.ComboBox;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.TextField;
import java.util.Date;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.AbstractOrderedLayout;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
import java.util.Date;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
public class PerformanceTestSubTreeCaching extends CustomComponent {
import com.vaadin.server.ErrorMessage;
import com.vaadin.server.ExternalResource;
import com.vaadin.server.UserError;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.Upload;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.NativeSelect;
import com.vaadin.v7.ui.OptionGroup;
import com.vaadin.v7.ui.ProgressIndicator;
import java.net.URL;
import com.vaadin.server.LegacyApplication;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.VerticalLayout;
package com.vaadin.tests;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.data.Property.ValueChangeEvent;
import com.vaadin.v7.data.Property.ValueChangeListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.RichTextArea;
/**
import com.vaadin.server.LegacyApplication;
import com.vaadin.server.StreamResource;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
import com.vaadin.ui.Upload.SucceededEvent;
import com.vaadin.ui.Upload.SucceededListener;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.ProgressIndicator;
public class TestForStyledUpload extends LegacyApplication
import java.lang.management.MemoryMXBean;
import com.vaadin.server.StreamResource;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.Upload.StartedListener;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.data.Property.ValueChangeEvent;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.AbstractField;
import com.vaadin.v7.ui.ProgressIndicator;
import com.vaadin.v7.ui.Select;
package com.vaadin.tests;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
public class TestIFrames extends CustomComponent {
import java.io.File;
import com.vaadin.server.VaadinSession;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.util.SampleDirectory;
import com.vaadin.ui.Label;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.data.Item;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Tree;
import com.vaadin.v7.ui.Tree.ExpandEvent;
import java.util.LinkedList;
import java.util.Random;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.data.Property.ValueChangeEvent;
import com.vaadin.v7.data.Property.ValueChangeListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Select;
public class UsingObjectsInSelect extends com.vaadin.server.LegacyApplication
package com.vaadin.tests.application;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.server.VaadinServlet;
import com.vaadin.server.WebBrowser;
import com.vaadin.shared.communication.PushMode;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.shared.ui.ui.Transport;
import com.vaadin.shared.ui.ui.UIState.PushConfigurationState;
import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
import com.vaadin.ui.Notification;
import com.vaadin.ui.Notification.Type;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.PushConfiguration;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
package com.vaadin.tests.components;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
/**
*
package com.vaadin.tests.components.button;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
public class ButtonMouseDetails extends TestBase {
package com.vaadin.tests.components.caption;
import com.vaadin.server.ThemeResource;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.VaadinClasses;
import com.vaadin.tests.components.TestBase;
import com.vaadin.tests.util.Log;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.data.Property.ValueChangeEvent;
import com.vaadin.v7.data.Property.ValueChangeListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.ComboBox;
public class IconsInCaption extends TestBase {
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.Alignment;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.Label;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.AbstractColorPicker;
import com.vaadin.v7.ui.ColorPicker;
import com.vaadin.v7.ui.ColorPickerArea;
import com.vaadin.event.FieldEvents;
import com.vaadin.event.FieldEvents.BlurEvent;
import com.vaadin.event.FieldEvents.FocusEvent;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
-import com.vaadin.ui.Label;
import com.vaadin.v7.data.util.ObjectProperty;
+import com.vaadin.v7.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.ComboBox;
+import com.vaadin.v7.ui.Label;
import com.vaadin.v7.ui.TextField;
public class ComboFocusBlurEvents extends TestBase {
import com.vaadin.event.FieldEvents.BlurEvent;
import com.vaadin.event.FieldEvents.FocusEvent;
import com.vaadin.server.VaadinSession;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
-import com.vaadin.ui.Label;
import com.vaadin.v7.data.util.ObjectProperty;
+import com.vaadin.v7.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.ComboBox;
+import com.vaadin.v7.ui.Label;
import com.vaadin.v7.ui.ProgressIndicator;
import com.vaadin.v7.ui.TextField;
private void changeValue(final ComboBox cb) {
executor.execute(new Runnable() {
+ @Override
public void run() {
VaadinSession.getCurrent().lock();
try {
package com.vaadin.tests.components.customcomponent;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.Label;
import com.vaadin.v7.data.Property.ValueChangeEvent;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.TextField;
public class ClipContent extends TestBase {
import java.util.Locale;
import com.vaadin.shared.ui.datefield.Resolution;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.tests.util.Log;
import com.vaadin.ui.Button;
import com.vaadin.v7.data.Property.ValueChangeEvent;
import com.vaadin.v7.data.Property.ValueChangeListener;
import com.vaadin.v7.data.util.ObjectProperty;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.PopupDateField;
@SuppressWarnings("serial")
import java.util.Date;
import java.util.Locale;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Label;
import com.vaadin.v7.data.Property;
import com.vaadin.v7.data.util.ObjectProperty;
+import com.vaadin.v7.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.DateField;
+import com.vaadin.v7.ui.Label;
import com.vaadin.v7.ui.PopupDateField;
public class ValueThroughProperty extends TestBase {
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.server.StreamVariable;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.DragAndDropWrapper;
import com.vaadin.ui.DragAndDropWrapper.WrapperTransferable;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Html5File;
import com.vaadin.ui.Label;
import com.vaadin.server.FontAwesome;
import com.vaadin.server.StreamVariable;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUIWithLog;
import com.vaadin.ui.Button;
import com.vaadin.ui.DragAndDropWrapper;
import com.vaadin.ui.DragAndDropWrapper.WrapperTransferable;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Html5File;
import com.vaadin.ui.Label;
package com.vaadin.tests.components.draganddropwrapper;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.DragAndDropWrapper;
CssLayout wrapperLayout = new CssLayout();
wrapperLayout.setWidth("100%");
- Label label = new Label("Can I has the tooltip?", Label.CONTENT_XHTML);
+ Label label = new Label("Can I has the tooltip?", ContentMode.HTML);
label.setId("tooltipLabel");
label.setDescription("Good! Tooltip works!");
label.setSizeUndefined();
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.Label;
import com.vaadin.v7.data.Validator;
import com.vaadin.v7.data.Validator.InvalidValueException;
import com.vaadin.v7.ui.Field;
import com.vaadin.v7.ui.Grid;
+import com.vaadin.v7.ui.Label;
public class GridWithLabelEditor extends AbstractTestUI {
l.setWidth(null);
addTestComponent(l);
- l = createLabel(
- "This label contains\nnewlines and spaces\nand is in\nraw mode");
- l.setContentMode(ContentMode.RAW);
- l.setWidth(null);
- addTestComponent(l);
-
}
private Label createLabel(String text, String caption) {
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Label;
import com.vaadin.v7.data.util.ObjectProperty;
+import com.vaadin.v7.ui.Label;
public class LabelPropertySourceValue extends AbstractTestUI {
private Label label;
import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractComponentTest;
import com.vaadin.ui.Label;
-import com.vaadin.v7.data.Property.ValueChangeListener;
-public class LabelTest extends AbstractComponentTest<Label>
- implements ValueChangeListener {
+public class LabelTest extends AbstractComponentTest<Label> {
private Command<Label, String> setValueCommand = new Command<Label, String>() {
}
};
- private Command<Label, Boolean> valueChangeListenerCommand = new Command<Label, Boolean>() {
- @Override
- public void execute(Label c, Boolean value, Object data) {
- if (value) {
- c.addListener(LabelTest.this);
- } else {
- c.removeListener(LabelTest.this);
-
- }
- }
- };
-
private Command<Label, ContentMode> contentModeCommand = new Command<Label, ContentMode>() {
@Override
public void execute(Label c, ContentMode value, Object data) {
createContentModeSelect(CATEGORY_FEATURES);
createValueSelect(CATEGORY_FEATURES);
- createValueChangeListener(CATEGORY_LISTENERS);
}
private void createValueSelect(String category) {
LinkedHashMap<String, ContentMode> options = new LinkedHashMap<String, ContentMode>();
options.put("Text", ContentMode.TEXT);
options.put("Preformatted", ContentMode.PREFORMATTED);
- options.put("Raw", ContentMode.RAW);
- options.put("UIDL", ContentMode.XML); // Deprecated UIDL mode still used
- // to avoid breaking old tests
options.put("XHTML", ContentMode.HTML);
- options.put("XML", ContentMode.XML);
createSelectAction("Content mode", category, options, "Text",
contentModeCommand);
}
- private void createValueChangeListener(String category) {
- createBooleanAction("Value change listener", category, false,
- valueChangeListenerCommand);
- }
-
- @Override
- public void valueChange(com.vaadin.v7.data.Property.ValueChangeEvent event) {
- Object o = event.getProperty().getValue();
-
- // Distinguish between null and 'null'
- String value = "null";
- if (o != null) {
- value = "'" + o.toString() + "'";
- }
-
- log(event.getClass().getSimpleName() + ", new value: " + value);
- }
-
}
package com.vaadin.tests.components.label;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.ComponentTestCase;
import com.vaadin.tests.util.LoremIpsum;
import com.vaadin.ui.Label;
+import com.vaadin.shared.ui.label.ContentMode;
public class Labels extends ComponentTestCase<Label> {
package com.vaadin.tests.components.label;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.AbstractLayout;
import com.vaadin.ui.Accordion;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
public class MarginsInLabels extends AbstractTestUI {
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.MarginInfo;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.AbstractSelect;
import com.vaadin.v7.ui.ListSelect;
package com.vaadin.tests.components.optiongroup;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Label;
import com.vaadin.v7.data.Property;
import com.vaadin.v7.data.Property.ValueChangeEvent;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.OptionGroup;
public class OptionGroupMultipleValueChange extends TestBase {
import com.vaadin.server.ThemeResource;
import com.vaadin.server.UserError;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.AbstractOrderedLayout;
import com.vaadin.ui.themes.Reindeer;
import com.vaadin.v7.data.Property.ValueChangeEvent;
import com.vaadin.v7.data.Property.ValueChangeListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.AbstractField;
import com.vaadin.v7.ui.NativeSelect;
import com.vaadin.v7.ui.TextField;
package com.vaadin.tests.components.orderedlayout;
import com.vaadin.server.ThemeResource;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.VerticalSplitPanel;
import com.vaadin.ui.themes.Reindeer;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
public class LayoutResizeTest extends TestBase {
package com.vaadin.tests.components.panel;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Component;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.Label;
import java.util.ArrayList;
import java.util.List;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.tests.util.LoremIpsum;
import com.vaadin.ui.Button;
import com.vaadin.ui.PopupView;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.BaseTheme;
+import com.vaadin.shared.ui.label.ContentMode;
public class PopupViewOffScreen extends TestBase {
package com.vaadin.tests.components.richtextarea;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Label;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.RichTextArea;
public class RichTextAreaEmptyString extends TestBase {
import java.io.Serializable;
import java.util.HashMap;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.tests.util.TestUtils;
import com.vaadin.ui.Button;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
import com.vaadin.v7.data.Container;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.DefaultFieldFactory;
import com.vaadin.v7.ui.Field;
import com.vaadin.v7.ui.Table;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.MouseEventDetails;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Label;
import com.vaadin.ui.Window;
import com.vaadin.v7.data.util.BeanItemContainer;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
public class HeaderRightClickAfterDrag extends AbstractTestUI {
import com.vaadin.server.ThemeResource;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Component;
import com.vaadin.ui.Embedded;
import com.vaadin.v7.data.Item;
import com.vaadin.v7.event.ItemClickEvent;
import com.vaadin.v7.event.ItemClickEvent.ItemClickListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
public class LabelEmbeddedClickThroughForTable extends AbstractTestUI {
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
-import com.vaadin.ui.Label;
import com.vaadin.v7.data.Item;
+import com.vaadin.v7.ui.Label;
import com.vaadin.v7.ui.Table;
public class SortLabelsInTable extends AbstractTestUI {
import java.net.MalformedURLException;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.AbsoluteLayout;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.Reindeer;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.Table.Align;
package com.vaadin.tests.components.table;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.data.Item;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
public class TableMatchesMouseDownMouseUpElement extends AbstractTestUI {
package com.vaadin.tests.components.table;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
public class TableRowScrolledBottom extends AbstractTestUI {
import com.vaadin.event.Action.Handler;
import com.vaadin.server.Resource;
import com.vaadin.shared.ui.MultiSelectMode;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.shared.ui.table.CollapseMenuContent;
import com.vaadin.shared.ui.table.TableConstants;
import com.vaadin.tests.components.select.AbstractSelectTestCase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
import com.vaadin.v7.event.ItemClickEvent.ItemClickListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.Table.Align;
import com.vaadin.v7.ui.Table.CellStyleGenerator;
package com.vaadin.tests.components.treetable;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Component;
tt.addItem(new Object[] { l, "VerticalLayout" }, 2);
Label lbl = new Label("<b>foo</b><br/><i>bar</i>");
- lbl.setContentMode(Label.CONTENT_XHTML);
+ lbl.setContentMode(ContentMode.HTML);
tt.addItem(new Object[] { lbl, "Label" }, 3);
tt.addItem(new Object[] { new Button("Test"), "Button" }, 4);
import com.vaadin.server.UICreateEvent;
import com.vaadin.server.UIProviderEvent;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUIProvider;
import com.vaadin.ui.Label;
import com.vaadin.ui.Link;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
public class LazyInitUIs extends AbstractTestUIProvider {
import java.util.Date;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.tests.util.Log;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
public class UISerialization extends AbstractTestUI {
import com.vaadin.server.Page.BrowserWindowResizeEvent;
import com.vaadin.server.Page.BrowserWindowResizeListener;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestCase;
import com.vaadin.tests.util.Log;
import com.vaadin.tests.util.LoremIpsum;
import com.vaadin.ui.Window;
import com.vaadin.ui.Window.ResizeEvent;
import com.vaadin.ui.Window.ResizeListener;
+import com.vaadin.shared.ui.label.ContentMode;
public class LazyWindowResize extends AbstractTestCase {
import com.vaadin.annotations.Theme;
import com.vaadin.server.Responsive;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.HorizontalSplitPanel;
import com.vaadin.ui.Label;
+import com.vaadin.shared.ui.label.ContentMode;
@Theme("tests-responsive")
public class ResponsiveUI extends AbstractTestUI {
import com.vaadin.annotations.Theme;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.shared.util.SharedUtil;
import com.vaadin.tests.components.AbstractTestUIWithLog;
import com.vaadin.ui.Alignment;
import com.vaadin.v7.data.util.BeanItem;
import com.vaadin.v7.data.util.BeanItemContainer;
import com.vaadin.v7.data.validator.IntegerRangeValidator;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.ComboBox;
import com.vaadin.v7.ui.Field;
import com.vaadin.v7.ui.TextField;
import com.vaadin.server.ThemeResource;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.Position;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Accordion;
import com.vaadin.ui.Button;
import com.vaadin.ui.TextField;
import com.vaadin.ui.Upload;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.AbstractSelect;
import com.vaadin.v7.ui.ComboBox;
import com.vaadin.v7.ui.ListSelect;
import com.vaadin.server.VaadinPortletSession;
import com.vaadin.server.VaadinPortletSession.PortletListener;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.Label;
import com.vaadin.ui.Link;
import com.vaadin.ui.Upload;
import com.vaadin.ui.Upload.Receiver;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.TextField;
/**
package com.vaadin.tests.layouts;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
package com.vaadin.tests.layouts;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
import com.vaadin.ui.Layout;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.NativeSelect;
import com.vaadin.v7.ui.TextField;
package com.vaadin.tests.layouts.layouttester;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.AbstractLayout;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.TextField;
package com.vaadin.tests.layouts.layouttester;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.AbstractLayout;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Label;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
/**
import com.vaadin.server.ThemeResource;
import com.vaadin.server.UserError;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.AbstractLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.TextField;
package com.vaadin.tests.layouts.layouttester.GridLayout;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.TextField;
package com.vaadin.tests.layouts.layouttester.GridLayout;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.layouts.layouttester.BaseLayoutTestUI;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.GridLayout;
import com.vaadin.ui.Label;
package com.vaadin.tests.layouts.layouttester.GridLayout;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Label;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.Table;
/**
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.MarginInfo;
import com.vaadin.shared.ui.colorpicker.Color;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Component;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.data.Property.ValueChangeEvent;
import com.vaadin.v7.data.Property.ValueChangeListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.ColorPicker;
import com.vaadin.v7.ui.ComboBox;
import com.vaadin.v7.ui.TextArea;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Label;
-import com.vaadin.v7.data.util.ObjectProperty;
@Push
public class BasicPush extends AbstractTestUI {
public static final String INCREMENT_BUTTON_ID = "incrementCounter";
- private ObjectProperty<Integer> counter = new ObjectProperty<Integer>(0);
-
- private ObjectProperty<Integer> counter2 = new ObjectProperty<Integer>(0);
-
+ private int clientCounter = 0;
+ private int serverCounter = 0;
private final Timer timer = new Timer(true);
private TimerTask task;
/*
* Client initiated push.
*/
- Label lbl = new Label(counter);
+ Label lbl = new Label("0");
lbl.setCaption("Client counter (click 'increment' to update):");
lbl.setId(CLIENT_COUNTER_ID);
addComponent(lbl);
@Override
public void buttonClick(ClickEvent event) {
- counter.setValue(counter.getValue() + 1);
+ clientCounter++;
+ lbl.setValue(String.valueOf(clientCounter));
}
});
incrementButton.setId(INCREMENT_BUTTON_ID);
/*
* Server initiated push.
*/
- lbl = new Label(counter2);
- lbl.setCaption("Server counter (updates each 3s by server thread) :");
- lbl.setId(SERVER_COUNTER_ID);
- addComponent(lbl);
-
- Button startTimer = new Button("Start timer",
- new Button.ClickListener() {
-
- @Override
- public void buttonClick(ClickEvent event) {
- counter2.setValue(0);
- if (task != null) {
- task.cancel();
- }
- task = new TimerTask() {
-
- @Override
- public void run() {
- access(new Runnable() {
- @Override
- public void run() {
- counter2.setValue(
- counter2.getValue() + 1);
- }
- });
- }
- };
- timer.scheduleAtFixedRate(task, 3000, 3000);
- }
- });
+ Label serverCounterLabel = new Label("0");
+ serverCounterLabel.setCaption(
+ "Server counter (updates each 3s by server thread) :");
+ serverCounterLabel.setId(SERVER_COUNTER_ID);
+ addComponent(serverCounterLabel);
+
+ Button startTimer = new Button("Start timer", (ClickListener) event -> {
+ serverCounter = 0;
+ serverCounterLabel.setValue(String.valueOf(serverCounter));
+ if (task != null) {
+ task.cancel();
+ }
+ task = new TimerTask() {
+
+ @Override
+ public void run() {
+ access(() -> {
+ serverCounter++;
+ serverCounterLabel
+ .setValue(String.valueOf(serverCounter));
+ });
+ }
+ };
+ timer.scheduleAtFixedRate(task, 3000, 3000);
+ });
startTimer.setId(START_TIMER_ID);
addComponent(startTimer);
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
-import com.vaadin.v7.data.util.ObjectProperty;
public class PushConfiguration extends AbstractTestUI {
- private ObjectProperty<Integer> counter = new ObjectProperty<Integer>(0);
-
- private ObjectProperty<Integer> counter2 = new ObjectProperty<Integer>(0);
-
+ private int counter = 0;
+ private int counter2 = 0;
private final Timer timer = new Timer(true);
private final TimerTask task = new TimerTask() {
access(new Runnable() {
@Override
public void run() {
- counter2.setValue(counter2.getValue() + 1);
+ counter2++;
+ serverCounterLabel.setValue("" + counter2);
}
});
}
};
+ private Label serverCounterLabel;
@Override
protected void setup(VaadinRequest request) {
/*
* Client initiated push.
*/
- Label lbl = new Label(counter);
- lbl.setCaption("Client counter (click 'increment' to update):");
- addComponent(lbl);
+ Label clientCounterLabel = new Label("0");
+ clientCounterLabel
+ .setCaption("Client counter (click 'increment' to update):");
+ addComponent(clientCounterLabel);
addComponent(new Button("Increment", new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
- counter.setValue(counter.getValue() + 1);
+ clientCounterLabel.setValue("" + counter++);
}
}));
spacer();
- /*
- * Server initiated push.
- */
- lbl = new Label(counter2);
- lbl.setCaption("Server counter (updates each 1s by server thread) :");
- addComponent(lbl);
+ serverCounterLabel = new Label(String.valueOf(counter2));
+ serverCounterLabel.setCaption(
+ "Server counter (updates each 1s by server thread) :");
+ addComponent(serverCounterLabel);
addComponent(new Button("Reset", new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
- counter2.setValue(0);
+ counter2 = 0;
+ serverCounterLabel.setValue("0");
}
}));
}
import java.util.Collections;
import com.vaadin.shared.communication.PushMode;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.shared.ui.ui.Transport;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.data.Property.ValueChangeEvent;
import com.vaadin.v7.data.Property.ValueChangeListener;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.NativeSelect;
import com.vaadin.v7.ui.TextField;
-/*
+/*
* Copyright 2000-2016 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
};
rpc.sendEnum(ContentMode.TEXT,
- new ContentMode[] { ContentMode.PREFORMATTED, ContentMode.XML },
- Arrays.asList(ContentMode.HTML, ContentMode.RAW));
+ new ContentMode[] { ContentMode.PREFORMATTED,
+ ContentMode.TEXT },
+ Arrays.asList(ContentMode.HTML, ContentMode.TEXT));
state.contentMode = ContentMode.TEXT;
- state.array = new ContentMode[] { ContentMode.PREFORMATTED,
- ContentMode.XML };
- state.list = Arrays.asList(ContentMode.HTML, ContentMode.RAW);
+ state.array = new ContentMode[] { ContentMode.PREFORMATTED };
+ state.list = Arrays.asList(ContentMode.HTML);
rpc.sendDate(new Date(1));
rpc.sendDate(new Date(2013 - 1900, 5 - 1, 31, 11, 12, 13));
import com.vaadin.server.Page;
import com.vaadin.server.Page.Styles;
import com.vaadin.server.StreamResource;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Label;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.TextArea;
public class CSSInjectTest extends TestBase {
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.shared.ui.MarginInfo;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.ValoTheme;
+import com.vaadin.shared.ui.label.ContentMode;
/**
*
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Component;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.PopupView.Content;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.ValoTheme;
+import com.vaadin.shared.ui.label.ContentMode;
public class PopupViews extends VerticalLayout implements View {
public PopupViews() {
import com.vaadin.server.VaadinRequest;
import com.vaadin.server.VaadinSession;
import com.vaadin.server.WebBrowser;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.v7.data.Property.ValueChangeListener;
import com.vaadin.v7.data.util.HierarchicalContainer;
import com.vaadin.v7.data.util.IndexedContainer;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.NativeSelect;
@Theme("tests-valo")
import java.util.ArrayList;
import java.util.List;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
public class Log extends VerticalLayout {
List<Label> eventLabels = new ArrayList<Label>();
import com.vaadin.server.SystemError;
import com.vaadin.server.VaadinService;
import com.vaadin.server.VaadinSession;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.ui.Label;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;
+import com.vaadin.shared.ui.label.ContentMode;
/**
* Provides sample directory based on application directory. If this fails then
*/
package com.vaadin.tests.widgetset.client;
-import com.vaadin.client.ui.label.LabelConnector;
import com.vaadin.shared.ui.Connect;
import com.vaadin.shared.ui.MediaControl;
import com.vaadin.tests.widgetset.server.ClientRpcClassComponent;
+import com.vaadin.v7.client.ui.label.LabelConnector;
@Connect(ClientRpcClassComponent.class)
public class ClientRpcClassConnector extends LabelConnector {
package com.vaadin.tests.widgetset.client;
-import com.vaadin.client.ui.label.LabelConnector;
import com.vaadin.shared.ui.Connect;
+import com.vaadin.v7.client.ui.label.LabelConnector;
/**
* Connects server-side <code>IdTestLabel</code> component to client-side
/**
* State class with the same simple name as
- * {@link com.vaadin.shared.ui.label.LabelState} to test #8683
+ * {@link com.vaadin.v7.shared.ui.label.LabelState} to test #8683
*
* @author Vaadin Ltd
* @version @VERSION@
import com.vaadin.client.extensions.AbstractExtensionConnector;
import com.vaadin.shared.Connector;
import com.vaadin.shared.ui.Connect;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.widgetset.server.SerializerTestExtension;
+import com.vaadin.shared.ui.label.ContentMode;
import elemental.json.Json;
import elemental.json.JsonBoolean;
import com.vaadin.annotations.Widgetset;
import com.vaadin.server.VaadinRequest;
-import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.tests.widgetset.TestingWidgetSet;
import com.vaadin.tests.widgetset.client.grid.GridClientColumnRendererConnector.Renderers;
import com.vaadin.tests.widgetset.client.grid.GridClientColumnRendererRpc;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.ui.AbstractSelect.ItemCaptionMode;
+import com.vaadin.shared.ui.label.ContentMode;
import com.vaadin.v7.ui.NativeSelect;
@Widgetset(TestingWidgetSet.NAME)
Assert.assertEquals("sendDate: January 1, 1970 12:00:00 AM UTC",
getLogRow(logRow++));
Assert.assertEquals(
- "sendEnum: PREFORMATTED, [HTML, RAW], [PREFORMATTED, XML]",
+ "sendEnum: PREFORMATTED, [HTML, TEXT], [PREFORMATTED, TEXT]",
getLogRow(logRow++));
Assert.assertEquals(
"sendWrappedGenerics: {[SimpleTestBean(1)]={1=[SimpleTestBean(42)]}}",