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: + *

+ * 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