From d13ca5506a2f7eb3dce75b98238bdb280ec7fa20 Mon Sep 17 00:00:00 2001
From: Artur Signell
Date: Thu, 25 Aug 2016 19:37:57 +0300
Subject: Implement new Label
Label does intentionally not implement HasValue as it
cannot provide a value to a model
Change-Id: I36b8e1794d64caf566fa802177051ae2eb637bf9
---
.../com/vaadin/client/ui/label/LabelConnector.java | 6 -
.../vaadin/v7/client/ui/label/LabelConnector.java | 82 +++
.../src/main/java/com/vaadin/v7/ui/Label.java | 624 +++++++++++++++++++++
.../component/label/LabelConvertersTest.java | 87 +++
.../server/component/label/LabelListenersTest.java | 103 ++++
.../java/com/vaadin/v7/ui/LabelDataSourceTest.java | 118 ++++
.../src/main/java/com/vaadin/server/FontIcon.java | 2 +-
server/src/main/java/com/vaadin/ui/Label.java | 502 ++---------------
.../AbstractComponentDeclarativeTest.java | 7 +-
.../component/label/LabelConvertersTest.java | 87 ---
.../component/label/LabelDeclarativeTest.java | 16 -
.../server/component/label/LabelListenersTest.java | 103 ----
.../java/com/vaadin/ui/LabelDataSourceTest.java | 117 ----
server/src/test/java/com/vaadin/ui/LabelTest.java | 25 +
.../com/vaadin/shared/ui/label/ContentMode.java | 21 +-
.../com/vaadin/v7/shared/ui/label/ContentMode.java | 57 ++
.../com/vaadin/v7/shared/ui/label/LabelState.java | 26 +
.../src/main/java/com/vaadin/tests/Components.java | 2 +-
.../java/com/vaadin/tests/CustomLayoutDemo.java | 2 +-
.../src/main/java/com/vaadin/tests/LayoutDemo.java | 2 +-
.../java/com/vaadin/tests/NativeWindowing.java | 2 +-
.../PerformanceTestBasicComponentRendering.java | 2 +-
.../PerformanceTestLabelsAndOrderedLayouts.java | 2 +-
.../tests/PerformanceTestSubTreeCaching.java | 2 +-
.../java/com/vaadin/tests/TestCaptionWrapper.java | 2 +-
.../com/vaadin/tests/TestForNativeWindowing.java | 2 +-
.../com/vaadin/tests/TestForRichTextEditor.java | 2 +-
.../java/com/vaadin/tests/TestForStyledUpload.java | 2 +-
.../main/java/com/vaadin/tests/TestForUpload.java | 2 +-
.../main/java/com/vaadin/tests/TestIFrames.java | 2 +-
.../main/java/com/vaadin/tests/TreeFilesystem.java | 2 +-
.../com/vaadin/tests/UsingObjectsInSelect.java | 2 +-
.../tests/application/ApplicationCloseTest.java | 2 +-
.../vaadin/tests/components/AbstractTestUI.java | 2 +-
.../java/com/vaadin/tests/components/TestBase.java | 2 +-
.../components/button/ButtonMouseDetails.java | 2 +-
.../tests/components/caption/IconsInCaption.java | 2 +-
.../components/colorpicker/ColorPickerTestUI.java | 2 +-
.../components/combobox/ComboFocusBlurEvents.java | 4 +-
.../tests/components/combobox/ComboPushTiming.java | 5 +-
.../components/customcomponent/ClipContent.java | 2 +-
.../components/datefield/DateFieldEmptyValid.java | 2 +-
.../components/datefield/ValueThroughProperty.java | 4 +-
.../draganddropwrapper/DragAndDropBatchUpload.java | 2 +-
.../SingleUseDragAndDropUpload.java | 2 +-
.../TooltipHandlingWhenNotDefined.java | 3 +-
.../tests/components/grid/GridWithLabelEditor.java | 2 +-
.../vaadin/tests/components/label/LabelModes.java | 6 -
.../components/label/LabelPropertySourceValue.java | 2 +-
.../vaadin/tests/components/label/LabelTest.java | 39 +-
.../com/vaadin/tests/components/label/Labels.java | 2 +-
.../tests/components/label/MarginsInLabels.java | 2 +-
.../components/listselect/ListSelectJump.java | 2 +-
.../OptionGroupMultipleValueChange.java | 2 +-
.../components/orderedlayout/BoxLayoutTest.java | 2 +-
.../components/orderedlayout/LayoutResizeTest.java | 2 +-
.../components/panel/PanelShouldNotScroll.java | 2 +-
.../components/popupview/PopupViewOffScreen.java | 2 +-
.../richtextarea/RichTextAreaEmptyString.java | 2 +-
.../tests/components/table/EditableTableLeak.java | 2 +-
.../table/HeaderRightClickAfterDrag.java | 2 +-
.../table/LabelEmbeddedClickThroughForTable.java | 2 +-
.../tests/components/table/SortLabelsInTable.java | 2 +-
.../tests/components/table/TableInTabsheet.java | 2 +-
.../table/TableMatchesMouseDownMouseUpElement.java | 2 +-
.../components/table/TableRowScrolledBottom.java | 2 +-
.../com/vaadin/tests/components/table/Tables.java | 2 +-
.../treetable/ComponentsInTreeTable.java | 3 +-
.../vaadin/tests/components/ui/LazyInitUIs.java | 2 +-
.../tests/components/ui/UISerialization.java | 2 +-
.../tests/components/window/LazyWindowResize.java | 2 +-
.../com/vaadin/tests/extensions/ResponsiveUI.java | 2 +-
.../vaadin/tests/fieldgroup/AbstractBasicCrud.java | 2 +-
.../java/com/vaadin/tests/fonticon/FontIcons.java | 2 +-
.../vaadin/tests/integration/JSR286Portlet.java | 2 +-
.../tests/layouts/HiddenHorizontalLayout.java | 2 +-
.../tests/layouts/TestLayoutPerformance.java | 2 +-
.../layouts/layouttester/BaseAddReplaceMove.java | 2 +-
.../layouttester/BaseLayoutForSpacingMargin.java | 2 +-
.../layouts/layouttester/BaseLayoutTestUI.java | 2 +-
.../GridLayout/GridAddReplaceMove.java | 2 +-
.../GridLayout/GridBaseLayoutTestUI.java | 2 +-
.../GridLayout/GridLayoutMarginSpacing.java | 2 +-
.../v71beta/CSSInjectWithColorpicker.java | 2 +-
.../main/java/com/vaadin/tests/push/BasicPush.java | 68 +--
.../com/vaadin/tests/push/PushConfiguration.java | 33 +-
.../com/vaadin/tests/push/PushConfigurator.java | 2 +-
.../vaadin/tests/serialization/SerializerTest.java | 12 +-
.../com/vaadin/tests/themes/CSSInjectTest.java | 2 +-
.../java/com/vaadin/tests/themes/valo/Labels.java | 2 +-
.../com/vaadin/tests/themes/valo/PopupViews.java | 2 +-
.../com/vaadin/tests/themes/valo/ValoThemeUI.java | 2 +-
.../src/main/java/com/vaadin/tests/util/Log.java | 2 +-
.../com/vaadin/tests/util/SampleDirectory.java | 2 +-
.../widgetset/client/ClientRpcClassConnector.java | 2 +-
.../widgetset/client/IdTestLabelConnector.java | 2 +-
.../vaadin/tests/widgetset/client/LabelState.java | 2 +-
.../widgetset/client/SerializerTestConnector.java | 2 +-
.../server/grid/GridClientColumnRenderers.java | 2 +-
.../tests/serialization/SerializerTestTest.java | 2 +-
100 files changed, 1301 insertions(+), 1005 deletions(-)
create mode 100644 compatibility-client/src/main/java/com/vaadin/v7/client/ui/label/LabelConnector.java
create mode 100644 compatibility-server/src/main/java/com/vaadin/v7/ui/Label.java
create mode 100644 compatibility-server/src/test/java/com/vaadin/tests/server/component/label/LabelConvertersTest.java
create mode 100644 compatibility-server/src/test/java/com/vaadin/tests/server/component/label/LabelListenersTest.java
create mode 100644 compatibility-server/src/test/java/com/vaadin/v7/ui/LabelDataSourceTest.java
delete mode 100644 server/src/test/java/com/vaadin/tests/server/component/label/LabelConvertersTest.java
delete mode 100644 server/src/test/java/com/vaadin/tests/server/component/label/LabelListenersTest.java
delete mode 100644 server/src/test/java/com/vaadin/ui/LabelDataSourceTest.java
create mode 100644 server/src/test/java/com/vaadin/ui/LabelTest.java
create mode 100644 shared/src/main/java/com/vaadin/v7/shared/ui/label/ContentMode.java
create mode 100644 shared/src/main/java/com/vaadin/v7/shared/ui/label/LabelState.java
diff --git a/client/src/main/java/com/vaadin/client/ui/label/LabelConnector.java b/client/src/main/java/com/vaadin/client/ui/label/LabelConnector.java
index 40734a7a61..0d66a06941 100644
--- a/client/src/main/java/com/vaadin/client/ui/label/LabelConnector.java
+++ b/client/src/main/java/com/vaadin/client/ui/label/LabelConnector.java
@@ -55,15 +55,9 @@ public class LabelConnector extends AbstractComponentConnector {
break;
case HTML:
- case RAW:
sinkOnloads = true;
- case XML:
getWidget().setHTML(getState().text);
break;
- default:
- getWidget().setText("");
- break;
-
}
Profiler.leave("LabelConnector.onStateChanged update content");
diff --git a/compatibility-client/src/main/java/com/vaadin/v7/client/ui/label/LabelConnector.java b/compatibility-client/src/main/java/com/vaadin/v7/client/ui/label/LabelConnector.java
new file mode 100644
index 0000000000..d8c35a275d
--- /dev/null
+++ b/compatibility-client/src/main/java/com/vaadin/v7/client/ui/label/LabelConnector.java
@@ -0,0 +1,82 @@
+/*
+ * 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();
+ }
+
+}
diff --git a/compatibility-server/src/main/java/com/vaadin/v7/ui/Label.java b/compatibility-server/src/main/java/com/vaadin/v7/ui/Label.java
new file mode 100644
index 0000000000..dc89fffabf
--- /dev/null
+++ b/compatibility-server/src/main/java/com/vaadin/v7/ui/Label.java
@@ -0,0 +1,624 @@
+/*
+ * 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}
+ *
+ *
+ * The contents of the label may contain simple formatting:
+ *
+ * - <b> Bold
+ *
- <i> Italic
+ *
- <u> Underlined
+ *
- <br/> Linebreak
+ *
- <ul><li>item 1</li><li>item 2</li></ul> List of
+ * items
+ *
+ * The b,i,u and li tags can contain all the tags in
+ * the list recursively.
+ *
+ *
+ * @author Vaadin Ltd.
+ * @since 3.0
+ */
+@SuppressWarnings("serial")
+public class Label extends AbstractComponent implements Property,
+ Property.Viewer, Property.ValueChangeListener,
+ Property.ValueChangeNotifier, Comparable