diff options
author | Artur Signell <artur@vaadin.com> | 2016-08-23 15:16:55 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2016-08-25 10:11:30 +0000 |
commit | d140deb4bf3bfc615f4e5fbdd45a36a1655c525e (patch) | |
tree | 957c7c6b84a37527617c6b07e34ae9497cbbb9b0 /client | |
parent | c0117c3baf907c09781c4b56a64d29b4e43c9281 (diff) | |
download | vaadin-framework-d140deb4bf3bfc615f4e5fbdd45a36a1655c525e.tar.gz vaadin-framework-d140deb4bf3bfc615f4e5fbdd45a36a1655c525e.zip |
Move Vaadin 7 CheckBox to compatibility package
Adds a v7 AbstractFieldConnector for the compatibility package
Remove dependency from core to old AbstractField
Change-Id: I5da665de69cf469adfa946cf18aae1a3e56c3486
Diffstat (limited to 'client')
15 files changed, 118 insertions, 63 deletions
diff --git a/client/src/main/java/com/vaadin/client/VCaption.java b/client/src/main/java/com/vaadin/client/VCaption.java index 3c07470c27..7e8fd97d25 100644 --- a/client/src/main/java/com/vaadin/client/VCaption.java +++ b/client/src/main/java/com/vaadin/client/VCaption.java @@ -26,12 +26,12 @@ import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HasHTML; import com.vaadin.client.communication.StateChangeEvent; -import com.vaadin.client.ui.AbstractFieldConnector; +import com.vaadin.client.ui.HasErrorIndicator; +import com.vaadin.client.ui.HasRequiredIndicator; import com.vaadin.client.ui.Icon; import com.vaadin.client.ui.ImageIcon; import com.vaadin.client.ui.aria.AriaHelper; import com.vaadin.shared.AbstractComponentState; -import com.vaadin.shared.AbstractFieldState; import com.vaadin.shared.ComponentConstants; import com.vaadin.shared.ui.ComponentStateUtil; @@ -158,14 +158,13 @@ public class VCaption extends HTML { boolean hasIcon = owner.getState().resources .containsKey(ComponentConstants.ICON_RESOURCE); boolean showRequired = false; - boolean showError = owner.getState().errorMessage != null; - if (owner.getState() instanceof AbstractFieldState) { - AbstractFieldState abstractFieldState = (AbstractFieldState) owner - .getState(); - showError = showError && !abstractFieldState.hideErrors; + boolean showError = false; + if (owner instanceof HasRequiredIndicator) { + showRequired = ((HasRequiredIndicator) owner) + .isRequiredIndicatorVisible(); } - if (owner instanceof AbstractFieldConnector) { - showRequired = ((AbstractFieldConnector) owner).isRequired(); + if (owner instanceof HasErrorIndicator) { + showError = ((HasErrorIndicator) owner).isErrorIndicatorVisible(); } if (icon != null) { @@ -454,24 +453,27 @@ public class VCaption extends HTML { } } - public static boolean isNeeded(AbstractComponentState state) { + public static boolean isNeeded(ComponentConnector connector) { + AbstractComponentState state = connector.getState(); if (state.caption != null) { return true; } if (state.resources.containsKey(ComponentConstants.ICON_RESOURCE)) { return true; } - if (state.errorMessage != null) { + if (connector instanceof HasErrorIndicator + && ((HasErrorIndicator) connector).isErrorIndicatorVisible()) { return true; } - if (state instanceof AbstractFieldState) { - if (((AbstractFieldState) state).required) { - return true; - } + if (connector instanceof HasRequiredIndicator + && ((HasRequiredIndicator) connector) + .isRequiredIndicatorVisible()) { + return true; } return false; + } /** diff --git a/client/src/main/java/com/vaadin/client/ui/AbstractComponentConnector.java b/client/src/main/java/com/vaadin/client/ui/AbstractComponentConnector.java index f59b7d581d..a6d73be0c8 100644 --- a/client/src/main/java/com/vaadin/client/ui/AbstractComponentConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/AbstractComponentConnector.java @@ -62,7 +62,7 @@ import com.vaadin.shared.ui.ComponentStateUtil; import com.vaadin.shared.ui.TabIndexState; public abstract class AbstractComponentConnector extends AbstractConnector - implements ComponentConnector { + implements ComponentConnector, HasErrorIndicator { private HandlerRegistration contextHandler = null; @@ -616,8 +616,7 @@ public abstract class AbstractComponentConnector extends AbstractConnector * primary style name of the widget returned by {@link #getWidget()} * <p> * This method can be overridden to provide additional style names for the - * component, for example see - * {@link AbstractFieldConnector#updateWidgetStyleNames()} + * component, for example see {@code AbstractFieldConnector} * </p> */ protected void updateWidgetStyleNames() { @@ -809,4 +808,9 @@ public abstract class AbstractComponentConnector extends AbstractConnector public void flush() { // No generic implementation. Override if needed } + + @Override + public boolean isErrorIndicatorVisible() { + return getState().errorMessage != null; + } } diff --git a/client/src/main/java/com/vaadin/client/ui/AbstractFieldConnector.java b/client/src/main/java/com/vaadin/client/ui/AbstractFieldConnector.java index 2783083a8d..f714023d39 100644 --- a/client/src/main/java/com/vaadin/client/ui/AbstractFieldConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/AbstractFieldConnector.java @@ -18,8 +18,8 @@ package com.vaadin.client.ui; import com.vaadin.client.StyleConstants; import com.vaadin.shared.AbstractFieldState; -public abstract class AbstractFieldConnector - extends AbstractComponentConnector { +public abstract class AbstractFieldConnector extends AbstractComponentConnector + implements HasRequiredIndicator, HasErrorIndicator { @Override public AbstractFieldState getState() { @@ -43,11 +43,17 @@ public abstract class AbstractFieldConnector * * @return true if required indicator should be shown */ - public boolean isRequired() { + @Override + public boolean isRequiredIndicatorVisible() { return getState().required && !isReadOnly(); } @Override + public boolean isErrorIndicatorVisible() { + return super.isErrorIndicatorVisible() && !getState().hideErrors; + } + + @Override protected void updateWidgetStyleNames() { super.updateWidgetStyleNames(); @@ -56,8 +62,9 @@ public abstract class AbstractFieldConnector // add / remove error style name to Fields setWidgetStyleNameWithPrefix(getWidget().getStylePrimaryName(), - StyleConstants.REQUIRED_EXT, isRequired()); + StyleConstants.REQUIRED_EXT, isRequiredIndicatorVisible()); - getWidget().setStyleName(StyleConstants.REQUIRED, isRequired()); + getWidget().setStyleName(StyleConstants.REQUIRED, + isRequiredIndicatorVisible()); } } diff --git a/client/src/main/java/com/vaadin/client/v7/ui/checkbox/LegacyCheckBoxConnector.java b/client/src/main/java/com/vaadin/client/ui/HasErrorIndicator.java index f3e46e9b01..806617b8ee 100644 --- a/client/src/main/java/com/vaadin/client/v7/ui/checkbox/LegacyCheckBoxConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/HasErrorIndicator.java @@ -13,13 +13,21 @@ * License for the specific language governing permissions and limitations under * the License. */ -package com.vaadin.client.v7.ui.checkbox; +package com.vaadin.client.ui; -import com.vaadin.client.ui.checkbox.CheckBoxConnector; -import com.vaadin.shared.ui.Connect; -import com.vaadin.v7.ui.CheckBox; +import com.vaadin.client.ComponentConnector; -@Connect(CheckBox.class) -public class LegacyCheckBoxConnector extends CheckBoxConnector { +/** + * Implemented by connectors supporting an error indicator. + */ +public interface HasErrorIndicator extends ComponentConnector { + + /** + * Checks if an error indicator should be shown for the given connector. + * + * @return <code>true</code> to show an indicator, <code>false</code> + * otherwise + */ + boolean isErrorIndicatorVisible(); } diff --git a/client/src/main/java/com/vaadin/client/ui/HasRequiredIndicator.java b/client/src/main/java/com/vaadin/client/ui/HasRequiredIndicator.java new file mode 100644 index 0000000000..5575c3a774 --- /dev/null +++ b/client/src/main/java/com/vaadin/client/ui/HasRequiredIndicator.java @@ -0,0 +1,33 @@ +/* + * 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.client.ui; + +import com.vaadin.client.ComponentConnector; + +/** + * Implemented by connectors supporting a required flag. + */ +public interface HasRequiredIndicator extends ComponentConnector { + + /** + * Checks if a required indicator should be shown for the given connector. + * + * @return <code>true</code> to show an indicator, <code>false</code> + * otherwise + */ + boolean isRequiredIndicatorVisible(); + +} diff --git a/client/src/main/java/com/vaadin/client/ui/VCustomLayout.java b/client/src/main/java/com/vaadin/client/ui/VCustomLayout.java index 70e243cc1e..82140a12fe 100644 --- a/client/src/main/java/com/vaadin/client/ui/VCustomLayout.java +++ b/client/src/main/java/com/vaadin/client/ui/VCustomLayout.java @@ -300,20 +300,22 @@ public class VCustomLayout extends ComplexPanel { return res; } - /** Update caption for given widget */ - public void updateCaption(ComponentConnector paintable) { - Widget widget = paintable.getWidget(); + /** + * Update caption for the given child connector. + */ + public void updateCaption(ComponentConnector childConnector) { + Widget widget = childConnector.getWidget(); if (widget.getParent() != this) { // Widget has not been added because the location was not found return; } VCaptionWrapper wrapper = childWidgetToCaptionWrapper.get(widget); - if (VCaption.isNeeded(paintable.getState())) { + if (VCaption.isNeeded(childConnector)) { if (wrapper == null) { // Add a wrapper between the layout and the child widget final String loc = getLocation(widget); super.remove(widget); - wrapper = new VCaptionWrapper(paintable, client); + wrapper = new VCaptionWrapper(childConnector, client); super.add(wrapper, locationToElement.get(loc)); childWidgetToCaptionWrapper.put(widget, wrapper); } diff --git a/client/src/main/java/com/vaadin/client/ui/VFormLayout.java b/client/src/main/java/com/vaadin/client/ui/VFormLayout.java index d31479d855..550f20c755 100644 --- a/client/src/main/java/com/vaadin/client/ui/VFormLayout.java +++ b/client/src/main/java/com/vaadin/client/ui/VFormLayout.java @@ -302,8 +302,8 @@ public class VFormLayout extends SimplePanel { removeStyleDependentName("hasdescription"); } - boolean required = owner instanceof AbstractFieldConnector - && ((AbstractFieldConnector) owner).isRequired(); + boolean required = owner instanceof HasRequiredIndicator + && ((HasRequiredIndicator) owner).isRequiredIndicatorVisible(); AriaHelper.handleInputRequired(owner.getWidget(), required); diff --git a/client/src/main/java/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java b/client/src/main/java/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java index e38cefb91f..0e82397261 100644 --- a/client/src/main/java/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/absolutelayout/AbsoluteLayoutConnector.java @@ -116,20 +116,21 @@ public class AbsoluteLayoutConnector extends AbstractComponentContainerConnector * .client.ComponentConnector) */ @Override - public void updateCaption(ComponentConnector component) { + public void updateCaption(ComponentConnector childConnector) { VAbsoluteLayout absoluteLayoutWidget = getWidget(); - boolean captionIsNeeded = VCaption.isNeeded(component.getState()); + boolean captionIsNeeded = VCaption.isNeeded(childConnector); VCaption caption = absoluteLayoutWidget - .getWidgetCaption(component.getWidget()); + .getWidgetCaption(childConnector.getWidget()); if (captionIsNeeded) { if (caption == null) { - caption = new VCaption(component, getConnection()); + caption = new VCaption(childConnector, getConnection()); } - absoluteLayoutWidget.setWidgetCaption(component.getWidget(), + absoluteLayoutWidget.setWidgetCaption(childConnector.getWidget(), caption); } else if (caption != null) { - absoluteLayoutWidget.setWidgetCaption(component.getWidget(), null); + absoluteLayoutWidget.setWidgetCaption(childConnector.getWidget(), + null); } } diff --git a/client/src/main/java/com/vaadin/client/ui/checkbox/CheckBoxConnector.java b/client/src/main/java/com/vaadin/client/ui/checkbox/CheckBoxConnector.java index 706ee30cc5..598280cf5c 100644 --- a/client/src/main/java/com/vaadin/client/ui/checkbox/CheckBoxConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/checkbox/CheckBoxConnector.java @@ -82,7 +82,7 @@ public class CheckBoxConnector extends AbstractFieldConnector getWidget().setAriaInvalid(false); } - getWidget().setAriaRequired(isRequired()); + getWidget().setAriaRequired(isRequiredIndicatorVisible()); if (isReadOnly()) { getWidget().setEnabled(false); } diff --git a/client/src/main/java/com/vaadin/client/ui/csslayout/CssLayoutConnector.java b/client/src/main/java/com/vaadin/client/ui/csslayout/CssLayoutConnector.java index fe5f843098..40e473c8d8 100644 --- a/client/src/main/java/com/vaadin/client/ui/csslayout/CssLayoutConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/csslayout/CssLayoutConnector.java @@ -190,7 +190,7 @@ public class CssLayoutConnector extends AbstractLayoutConnector { String childId = child.getConnectorId(); VCaption caption = childIdToCaption.get(childId); - if (VCaption.isNeeded(child.getState())) { + if (VCaption.isNeeded(child)) { if (caption == null) { caption = new VCaption(child, getConnection()); childIdToCaption.put(childId, caption); diff --git a/client/src/main/java/com/vaadin/client/ui/formlayout/FormLayoutConnector.java b/client/src/main/java/com/vaadin/client/ui/formlayout/FormLayoutConnector.java index eede83e3e9..eccec23877 100644 --- a/client/src/main/java/com/vaadin/client/ui/formlayout/FormLayoutConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/formlayout/FormLayoutConnector.java @@ -27,8 +27,8 @@ import com.vaadin.client.TooltipInfo; import com.vaadin.client.Util; import com.vaadin.client.WidgetUtil; import com.vaadin.client.communication.StateChangeEvent; -import com.vaadin.client.ui.AbstractFieldConnector; import com.vaadin.client.ui.AbstractLayoutConnector; +import com.vaadin.client.ui.HasErrorIndicator; import com.vaadin.client.ui.LayoutClickEventHandler; import com.vaadin.client.ui.PostLayoutListener; import com.vaadin.client.ui.VFormLayout; @@ -248,10 +248,9 @@ public class FormLayoutConnector extends AbstractLayoutConnector component.getState(), component.isEnabled()); boolean hideErrors = false; - // FIXME This incorrectly depends on AbstractFieldConnector - if (component instanceof AbstractFieldConnector) { - hideErrors = ((AbstractFieldConnector) component) - .getState().hideErrors; + if (component instanceof HasErrorIndicator) { + hideErrors = !((HasErrorIndicator) component) + .isErrorIndicatorVisible(); } getWidget().table.updateError(component.getWidget(), diff --git a/client/src/main/java/com/vaadin/client/ui/gridlayout/GridLayoutConnector.java b/client/src/main/java/com/vaadin/client/ui/gridlayout/GridLayoutConnector.java index 976fbb11c5..3113183e3e 100644 --- a/client/src/main/java/com/vaadin/client/ui/gridlayout/GridLayoutConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/gridlayout/GridLayoutConnector.java @@ -170,7 +170,7 @@ public class GridLayoutConnector extends AbstractComponentContainerConnector public void updateCaption(ComponentConnector childConnector) { VGridLayout layout = getWidget(); Cell cell = layout.widgetToCell.get(childConnector.getWidget()); - if (VCaption.isNeeded(childConnector.getState())) { + if (VCaption.isNeeded(childConnector)) { VLayoutSlot layoutSlot = cell.slot; VCaption caption = layoutSlot.getCaption(); if (caption == null) { diff --git a/client/src/main/java/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java b/client/src/main/java/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java index db6203efb3..0e3bf73342 100644 --- a/client/src/main/java/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java @@ -33,14 +33,14 @@ import com.vaadin.client.Util; import com.vaadin.client.WidgetUtil; import com.vaadin.client.communication.StateChangeEvent; import com.vaadin.client.communication.StateChangeEvent.StateChangeHandler; -import com.vaadin.client.ui.AbstractFieldConnector; import com.vaadin.client.ui.AbstractLayoutConnector; +import com.vaadin.client.ui.HasErrorIndicator; +import com.vaadin.client.ui.HasRequiredIndicator; import com.vaadin.client.ui.Icon; import com.vaadin.client.ui.LayoutClickEventHandler; import com.vaadin.client.ui.aria.AriaHelper; import com.vaadin.client.ui.layout.ElementResizeEvent; import com.vaadin.client.ui.layout.ElementResizeListener; -import com.vaadin.shared.AbstractFieldState; import com.vaadin.shared.ComponentConstants; import com.vaadin.shared.communication.URLReference; import com.vaadin.shared.ui.AlignmentInfo; @@ -260,15 +260,14 @@ public abstract class AbstractOrderedLayoutConnector List<String> styles = child.getState().styles; String error = child.getState().errorMessage; - boolean showError = error != null; - if (child.getState() instanceof AbstractFieldState) { - AbstractFieldState abstractFieldState = (AbstractFieldState) child - .getState(); - showError = showError && !abstractFieldState.hideErrors; + boolean showError = false; + if (child instanceof HasErrorIndicator) { + showError = ((HasErrorIndicator) child).isErrorIndicatorVisible(); } boolean required = false; - if (child instanceof AbstractFieldConnector) { - required = ((AbstractFieldConnector) child).isRequired(); + if (child instanceof HasRequiredIndicator) { + required = ((HasRequiredIndicator) child) + .isRequiredIndicatorVisible(); } boolean enabled = child.isEnabled(); diff --git a/client/src/main/java/com/vaadin/client/ui/panel/PanelConnector.java b/client/src/main/java/com/vaadin/client/ui/panel/PanelConnector.java index ab3acdfec0..2e5237598f 100644 --- a/client/src/main/java/com/vaadin/client/ui/panel/PanelConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/panel/PanelConnector.java @@ -143,7 +143,7 @@ public class PanelConnector extends AbstractSingleComponentContainerConnector getWidget().setIconUri(null, client); } - getWidget().setErrorIndicatorVisible(null != getState().errorMessage); + getWidget().setErrorIndicatorVisible(isErrorIndicatorVisible()); // We may have actions attached to this panel if (uidl.getChildCount() > 0) { diff --git a/client/src/main/java/com/vaadin/client/ui/popupview/PopupViewConnector.java b/client/src/main/java/com/vaadin/client/ui/popupview/PopupViewConnector.java index 3916b419c1..1ee6e9b9f7 100644 --- a/client/src/main/java/com/vaadin/client/ui/popupview/PopupViewConnector.java +++ b/client/src/main/java/com/vaadin/client/ui/popupview/PopupViewConnector.java @@ -63,13 +63,13 @@ public class PopupViewConnector extends AbstractHasComponentsConnector } @Override - public void updateCaption(ComponentConnector component) { - if (VCaption.isNeeded(component.getState())) { + public void updateCaption(ComponentConnector childConnector) { + if (VCaption.isNeeded(childConnector)) { if (getWidget().popup.captionWrapper != null) { getWidget().popup.captionWrapper.updateCaption(); } else { getWidget().popup.captionWrapper = new VCaptionWrapper( - component, getConnection()); + childConnector, getConnection()); getWidget().popup.setWidget(getWidget().popup.captionWrapper); getWidget().popup.captionWrapper.updateCaption(); } |