List of usage examples for com.vaadin.client ComponentConnector getState
@Override
public AbstractComponentState getState();
From source file:com.haulmont.cuba.web.toolkit.ui.client.caption.CubaCaptionWidget.java
License:Apache License
@Override public boolean updateCaption() { ComponentConnector owner = getOwner(); /* CAUTION copied from super class with small changes */ boolean wasPlacedAfterComponent = placedAfterComponent; // Caption is placed after component unless there is some part which // moves it above. placedAfterComponent = captionPlacedAfterComponentByDefault; String style = CLASSNAME;/*from w w w . j a v a2 s . c o m*/ if (ComponentStateUtil.hasStyles(owner.getState())) { for (String customStyle : owner.getState().styles) { style += " " + CLASSNAME + "-" + customStyle; } } if (!owner.isEnabled()) { style += " " + StyleConstants.DISABLED; } setStyleName(style); 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; } if (owner instanceof AbstractFieldConnector) { showRequired = ((AbstractFieldConnector) owner).isRequired(); } if (icon != null) { getElement().removeChild(icon.getElement()); icon = null; } if (hasIcon) { String uri = owner.getState().resources.get(ComponentConstants.ICON_RESOURCE).getURL(); icon = getOwner().getConnection().getIcon(uri); if (icon instanceof ImageIcon) { // onload will set appropriate size later icon.setWidth("0"); icon.setHeight("0"); } DOM.insertChild(getElement(), icon.getElement(), getInsertPosition(InsertPosition.ICON)); // Icon forces the caption to be above the component placedAfterComponent = false; } if (owner.getState().caption != null) { // A caption text should be shown if the attribute is set // If the caption is null the ATTRIBUTE_CAPTION should not be set to // avoid ending up here. if (captionText == null) { captionText = DOM.createDiv(); captionText.setClassName("v-captiontext"); DOM.insertChild(getElement(), captionText, getInsertPosition(InsertPosition.CAPTION)); } // Update caption text String c = owner.getState().caption; // A text forces the caption to be above the component. placedAfterComponent = false; if (c == null || c.trim().equals("")) { // Not sure if c even can be null. Should not. // This is required to ensure that the caption uses space in all // browsers when it is set to the empty string. If there is an // icon, error indicator or required indicator they will ensure // that space is reserved. if (!hasIcon && !showRequired && !showError) { captionText.setInnerHTML(" "); } } else { setCaptionText(captionText, owner.getState()); } } else if (captionText != null) { // Remove existing getElement().removeChild(captionText); captionText = null; } if (ComponentStateUtil.hasDescription(owner.getState()) && captionText != null) { addStyleDependentName("hasdescription"); } else { removeStyleDependentName("hasdescription"); } AriaHelper.handleInputRequired(owner.getWidget(), showRequired); if (showRequired) { if (requiredFieldIndicator == null) { requiredFieldIndicator = DOM.createDiv(); requiredFieldIndicator.setClassName("v-required-field-indicator"); requiredFieldIndicator.setInnerText("*"); DOM.insertChild(getElement(), requiredFieldIndicator, getInsertPosition(InsertPosition.REQUIRED)); // Hide the required indicator from assistive device Roles.getTextboxRole().setAriaHiddenState(requiredFieldIndicator, true); } } else if (requiredFieldIndicator != null) { // Remove existing requiredFieldIndicator.removeFromParent(); requiredFieldIndicator = null; } if (isContextHelpIconEnabled(owner.getState())) { if (contextHelpIndicatorElement == null) { contextHelpIndicatorElement = DOM.createDiv(); contextHelpIndicatorElement.setClassName(CONTEXT_HELP_CLASSNAME); DOM.insertChild(getElement(), contextHelpIndicatorElement, getContextHelpInsertPosition()); if (clickHandlerRegistration == null) { clickHandlerRegistration = addClickHandler(this); } } } else { if (contextHelpIndicatorElement != null) { contextHelpIndicatorElement.removeFromParent(); contextHelpIndicatorElement = null; } if (clickHandlerRegistration != null) { clickHandlerRegistration.removeHandler(); clickHandlerRegistration = null; } } AriaHelper.handleInputInvalid(owner.getWidget(), showError); if (showError) { if (errorIndicatorElement == null) { errorIndicatorElement = DOM.createDiv(); errorIndicatorElement.setInnerHTML(" "); errorIndicatorElement.setClassName("v-errorindicator"); DOM.insertChild(getElement(), errorIndicatorElement, getInsertPosition(InsertPosition.ERROR)); // Hide error indicator from assistive devices Roles.getTextboxRole().setAriaHiddenState(errorIndicatorElement, true); } } else if (errorIndicatorElement != null) { // Remove existing errorIndicatorElement.removeFromParent(); errorIndicatorElement = null; } addStyleName(CLASSNAME); if (captionHolder != null) { captionHolder.captionUpdated(this); } return (wasPlacedAfterComponent != placedAfterComponent); }
From source file:com.haulmont.cuba.web.toolkit.ui.client.cssactionslayout.CubaCssActionsLayoutConnector.java
License:Apache License
@Override protected boolean isCaptionNeeded(ComponentConnector child) { AbstractComponentState state = child.getState(); return super.isCaptionNeeded(child) || (state instanceof AbstractFieldState && ((AbstractFieldState) state).contextHelpText != null && !((AbstractFieldState) state).contextHelpText.isEmpty()); }
From source file:com.haulmont.cuba.web.toolkit.ui.client.fieldgrouplayout.CubaFieldGroupLayoutComponentSlot.java
License:Apache License
@Override public void onBrowserEvent(Event event) { if (DOM.eventGetType(event) == Event.ONCLICK) { Element target = Element.as(event.getEventTarget()); ComponentConnector componentConnector = Util.findConnectorFor(getWidget()); if (target == contextHelpIndicatorElement && componentConnector instanceof HasContextHelpConnector) { HasContextHelpConnector connector = (HasContextHelpConnector) componentConnector; if (hasContextHelpIconListeners(componentConnector.getState())) { connector.contextHelpIconClick(event); }//from w ww . j av a2s .c o m } } }
From source file:com.haulmont.cuba.web.toolkit.ui.client.gridlayout.CubaGridLayoutConnector.java
License:Apache License
@Override public void updateCaption(ComponentConnector childConnector) { // CAUTION copied from GridLayoutConnector.updateCaption(ComponentConnector childConnector) VGridLayout layout = getWidget();/*from w w w . j a v a 2s. c om*/ VGridLayout.Cell cell = layout.widgetToCell.get(childConnector.getWidget()); AbstractComponentState state = childConnector.getState(); if (VCaption.isNeeded(state) || isContextHelpIconEnabled(state)) { VLayoutSlot layoutSlot = cell.slot; VCaption caption = layoutSlot.getCaption(); if (caption == null) { // use our own caption widget caption = new CubaCaptionWidget(childConnector, getConnection()); setDefaultCaptionParameters((CubaCaptionWidget) caption); Widget widget = childConnector.getWidget(); layout.setCaption(widget, caption); } caption.updateCaption(); } else { layout.setCaption(childConnector.getWidget(), null); getLayoutManager().setNeedsLayout(this); } }
From source file:com.haulmont.cuba.web.toolkit.ui.client.orderedactionslayout.CubaOrderedActionsLayoutConnector.java
License:Apache License
@Override protected void updateCaptionInternal(ComponentConnector child) { // CAUTION copied from superclass CubaOrderedLayoutSlot slot = (CubaOrderedLayoutSlot) getWidget().getSlot(child.getWidget()); String caption = child.getState().caption; URLReference iconUrl = child.getState().resources.get(ComponentConstants.ICON_RESOURCE); String iconUrlString = iconUrl != null ? iconUrl.getURL() : null; Icon icon = child.getConnection().getIcon(iconUrlString); 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; }//ww w . j a v a 2 s . co m boolean required = false; if (child instanceof AbstractFieldConnector) { required = ((AbstractFieldConnector) child).isRequired(); } boolean enabled = child.isEnabled(); if (slot.hasCaption() && null == caption) { slot.setCaptionResizeListener(null); } // Haulmont API boolean contextHelpIconEnabled = isContextHelpIconEnabled(child.getState()); // Haulmont API slot.setCaption(caption, contextHelpIconEnabled, icon, styles, error, showError, required, enabled, child.getState().captionAsHtml); AriaHelper.handleInputRequired(child.getWidget(), required); AriaHelper.handleInputInvalid(child.getWidget(), showError); AriaHelper.bindCaption(child.getWidget(), slot.getCaptionElement()); if (slot.hasCaption()) { CaptionPosition pos = slot.getCaptionPosition(); slot.setCaptionResizeListener(slotCaptionResizeListener); if (child.isRelativeHeight() && (pos == CaptionPosition.TOP || pos == CaptionPosition.BOTTOM)) { getWidget().updateCaptionOffset(slot.getCaptionElement()); } else if (child.isRelativeWidth() && (pos == CaptionPosition.LEFT || pos == CaptionPosition.RIGHT)) { getWidget().updateCaptionOffset(slot.getCaptionElement()); } } }
From source file:com.haulmont.cuba.web.toolkit.ui.client.orderedactionslayout.CubaOrderedLayoutSlot.java
License:Apache License
@Override public void onClick(ClickEvent event) { Element target = Element.as(event.getNativeEvent().getEventTarget()); ComponentConnector componentConnector = Util.findConnectorFor(getWidget()); if (target == contextHelpIcon && componentConnector instanceof HasContextHelpConnector) { HasContextHelpConnector connector = (HasContextHelpConnector) componentConnector; if (hasContextHelpIconListeners(componentConnector.getState())) { connector.contextHelpIconClick(event); }/* w ww. java2 s .c o m*/ } }
From source file:com.haulmont.cuba.web.widgets.client.caption.CubaCaptionWidget.java
License:Apache License
@Override public boolean updateCaption() { ComponentConnector owner = getOwner(); // CAUTION copied from super class with small changes boolean wasPlacedAfterComponent = placedAfterComponent; // Caption is placed after component unless there is some part which // moves it above. placedAfterComponent = captionPlacedAfterComponentByDefault; String style = CLASSNAME;/* w ww . j a v a 2 s .c o m*/ if (ComponentStateUtil.hasStyles(owner.getState())) { for (String customStyle : owner.getState().styles) { style += " " + CLASSNAME + "-" + customStyle; } } if (!owner.isEnabled()) { style += " " + StyleConstants.DISABLED; } setStyleName(style); 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; } if (owner instanceof AbstractFieldConnector) { showRequired = ((AbstractFieldConnector) owner).isRequired(); } if (icon != null) { getElement().removeChild(icon.getElement()); icon = null; } if (hasIcon) { String uri = owner.getState().resources.get(ComponentConstants.ICON_RESOURCE).getURL(); icon = getOwner().getConnection().getIcon(uri); if (icon instanceof ImageIcon) { // onload will set appropriate size later icon.setWidth("0"); icon.setHeight("0"); } DOM.insertChild(getElement(), icon.getElement(), getInsertPosition(InsertPosition.ICON)); // Icon forces the caption to be above the component placedAfterComponent = false; } if (owner.getState().caption != null) { // A caption text should be shown if the attribute is set // If the caption is null the ATTRIBUTE_CAPTION should not be set to // avoid ending up here. if (captionText == null) { captionText = DOM.createDiv(); captionText.setClassName("v-captiontext"); DOM.insertChild(getElement(), captionText, getInsertPosition(InsertPosition.CAPTION)); } // Update caption text String c = owner.getState().caption; // A text forces the caption to be above the component. placedAfterComponent = false; if (c == null || c.trim().equals("")) { // Not sure if c even can be null. Should not. // This is required to ensure that the caption uses space in all // browsers when it is set to the empty string. If there is an // icon, error indicator or required indicator they will ensure // that space is reserved. if (!hasIcon && !showRequired && !showError) { captionText.setInnerHTML(" "); } } else { setCaptionText(captionText, owner.getState()); } } else if (captionText != null) { // Remove existing getElement().removeChild(captionText); captionText = null; } if (ComponentStateUtil.hasDescription(owner.getState()) && captionText != null) { addStyleDependentName("hasdescription"); } else { removeStyleDependentName("hasdescription"); } AriaHelper.handleInputRequired(owner.getWidget(), showRequired); if (showRequired) { if (requiredFieldIndicator == null) { requiredFieldIndicator = DOM.createDiv(); requiredFieldIndicator.setClassName("v-required-field-indicator"); requiredFieldIndicator.setInnerText("*"); DOM.insertChild(getElement(), requiredFieldIndicator, getInsertPosition(InsertPosition.REQUIRED)); // Hide the required indicator from assistive device Roles.getTextboxRole().setAriaHiddenState(requiredFieldIndicator, true); } } else if (requiredFieldIndicator != null) { // Remove existing requiredFieldIndicator.removeFromParent(); requiredFieldIndicator = null; } if (isContextHelpIconEnabled(owner.getState())) { if (contextHelpIndicatorElement == null) { contextHelpIndicatorElement = DOM.createDiv(); contextHelpIndicatorElement.setClassName(CONTEXT_HELP_CLASSNAME); if (hasContextHelpIconListeners(owner.getState())) { contextHelpIndicatorElement.addClassName(CONTEXT_HELP_CLICKABLE_CLASSNAME); } DOM.insertChild(getElement(), contextHelpIndicatorElement, getContextHelpInsertPosition()); if (clickHandlerRegistration == null) { clickHandlerRegistration = addClickHandler(this); } } } else { if (contextHelpIndicatorElement != null) { contextHelpIndicatorElement.removeFromParent(); contextHelpIndicatorElement = null; } if (clickHandlerRegistration != null) { clickHandlerRegistration.removeHandler(); clickHandlerRegistration = null; } } AriaHelper.handleInputInvalid(owner.getWidget(), showError); if (showError) { if (errorIndicatorElement == null) { errorIndicatorElement = DOM.createDiv(); errorIndicatorElement.setInnerHTML(" "); errorIndicatorElement.setClassName("v-errorindicator"); DOM.insertChild(getElement(), errorIndicatorElement, getInsertPosition(InsertPosition.ERROR)); // Hide error indicator from assistive devices Roles.getTextboxRole().setAriaHiddenState(errorIndicatorElement, true); } } else if (errorIndicatorElement != null) { // Remove existing errorIndicatorElement.removeFromParent(); errorIndicatorElement = null; } addStyleName(CLASSNAME); if (captionHolder != null) { captionHolder.captionUpdated(this); } return (wasPlacedAfterComponent != placedAfterComponent); }
From source file:com.haulmont.cuba.web.widgets.client.gridlayout.CubaGridLayoutConnector.java
License:Apache License
@Override public void updateCaption(ComponentConnector childConnector) { // CAUTION copied from GridLayoutConnector.updateCaption(ComponentConnector childConnector) VGridLayout layout = getWidget();//from www .j a v a2 s . com VGridLayout.Cell cell = layout.widgetToCell.get(childConnector.getWidget()); AbstractComponentState state = childConnector.getState(); if (VCaption.isNeeded(childConnector) || isContextHelpIconEnabled(state)) { VLayoutSlot layoutSlot = cell.slot; VCaption caption = layoutSlot.getCaption(); if (caption == null) { // use our own caption widget caption = new CubaCaptionWidget(childConnector, getConnection()); setDefaultCaptionParameters((CubaCaptionWidget) caption); Widget widget = childConnector.getWidget(); layout.setCaption(widget, caption); } caption.updateCaption(); } else { layout.setCaption(childConnector.getWidget(), null); getLayoutManager().setNeedsLayout(this); } }
From source file:com.haulmont.cuba.web.widgets.client.orderedactionslayout.CubaOrderedActionsLayoutConnector.java
License:Apache License
@Override protected void updateCaptionInternal(ComponentConnector child) { // CAUTION copied from superclass CubaOrderedLayoutSlot slot = (CubaOrderedLayoutSlot) getWidget().getSlot(child.getWidget()); String caption = child.getState().caption; URLReference iconUrl = child.getState().resources.get(ComponentConstants.ICON_RESOURCE); String iconUrlString = iconUrl != null ? iconUrl.getURL() : null; Icon icon = child.getConnection().getIcon(iconUrlString); 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(); // vaadin8 rework // showError = showError && !abstractFieldState.hideErrors; }//from w w w .j a v a 2 s .co m boolean required = false; if (child instanceof AbstractFieldConnector) { required = ((AbstractFieldConnector) child).isRequiredIndicatorVisible(); } boolean enabled = child.isEnabled(); if (slot.hasCaption() && null == caption) { slot.setCaptionResizeListener(null); } // Haulmont API boolean contextHelpIconEnabled = isContextHelpIconEnabled(child.getState()); // Haulmont API slot.setCaption(caption, contextHelpIconEnabled, icon, styles, error, showError, required, enabled, child.getState().captionAsHtml); AriaHelper.handleInputRequired(child.getWidget(), required); AriaHelper.handleInputInvalid(child.getWidget(), showError); AriaHelper.bindCaption(child.getWidget(), slot.getCaptionElement()); if (slot.hasCaption()) { CaptionPosition pos = slot.getCaptionPosition(); slot.setCaptionResizeListener(slotCaptionResizeListener); if (child.isRelativeHeight() && (pos == CaptionPosition.TOP || pos == CaptionPosition.BOTTOM)) { getWidget().updateCaptionOffset(slot.getCaptionElement()); } else if (child.isRelativeWidth() && (pos == CaptionPosition.LEFT || pos == CaptionPosition.RIGHT)) { getWidget().updateCaptionOffset(slot.getCaptionElement()); } } }
From source file:com.haulmont.cuba.web.widgets.client.orderedactionslayout.CubaOrderedLayoutSlot.java
License:Apache License
public void setCaption(String captionText, boolean contextHelpIconEnabled, Icon icon, List<String> styles, String error, boolean showError, boolean required, boolean enabled, boolean captionAsHtml) { // CAUTION copied from super // Caption wrappers Widget widget = getWidget();/*from w w w.j ava 2 s .co m*/ final Element focusedElement = WidgetUtil.getFocusedElement(); // By default focus will not be lost boolean focusLost = false; if (captionText != null || icon != null || error != null || required || contextHelpIconEnabled) { if (caption == null) { caption = DOM.createDiv(); captionWrap = DOM.createDiv(); captionWrap.addClassName(StyleConstants.UI_WIDGET); captionWrap.addClassName("v-has-caption"); getElement().appendChild(captionWrap); orphan(widget); captionWrap.appendChild(widget.getElement()); adopt(widget); // Made changes to DOM. Focus can be lost if it was in the // widget. focusLost = (focusedElement == null ? false : widget.getElement().isOrHasChild(focusedElement)); } } else if (caption != null) { orphan(widget); getElement().appendChild(widget.getElement()); adopt(widget); captionWrap.removeFromParent(); caption = null; captionWrap = null; // Made changes to DOM. Focus can be lost if it was in the widget. focusLost = (focusedElement == null ? false : widget.getElement().isOrHasChild(focusedElement)); } // Caption text if (captionText != null) { if (this.captionText == null) { this.captionText = DOM.createSpan(); this.captionText.addClassName("v-captiontext"); if (caption != null) { caption.appendChild(this.captionText); } } if (captionText.trim().equals("")) { this.captionText.setInnerHTML(" "); } else { if (captionAsHtml) { this.captionText.setInnerHTML(captionText); } else { this.captionText.setInnerText(captionText); } } } else if (this.captionText != null) { this.captionText.removeFromParent(); this.captionText = null; } // Icon if (this.icon != null) { this.icon.getElement().removeFromParent(); } if (icon != null) { if (caption != null) { caption.insertFirst(icon.getElement()); } } this.icon = icon; // Required if (required) { if (requiredIcon == null) { requiredIcon = DOM.createSpan(); // TODO decide something better (e.g. use CSS to insert the // character) requiredIcon.setInnerHTML("*"); requiredIcon.setClassName("v-required-field-indicator"); // The star should not be read by the screen reader, as it is // purely visual. Required state is set at the element level for // the screen reader. Roles.getTextboxRole().setAriaHiddenState(requiredIcon, true); } if (caption != null) { caption.appendChild(requiredIcon); } } else if (requiredIcon != null) { requiredIcon.removeFromParent(); requiredIcon = null; } // Context Help // Haulmont API if (contextHelpIconEnabled) { if (contextHelpIcon == null) { contextHelpIcon = DOM.createSpan(); // TODO decide something better (e.g. use CSS to insert the character) contextHelpIcon.setInnerHTML("?"); contextHelpIcon.setClassName(CONTEXT_HELP_CLASSNAME); ComponentConnector componentConnector = Util.findConnectorFor(widget); if (hasContextHelpIconListeners(componentConnector.getState())) { contextHelpIcon.addClassName(CONTEXT_HELP_CLICKABLE_CLASSNAME); } // The question mark should not be read by the screen reader, as it is // purely visual. Required state is set at the element level for // the screen reader. Roles.getTextboxRole().setAriaHiddenState(contextHelpIcon, true); } if (caption != null) { caption.appendChild(contextHelpIcon); if (clickHandlerRegistration == null) { clickHandlerRegistration = addDomHandler(this, ClickEvent.getType()); } } } else { if (this.contextHelpIcon != null) { this.contextHelpIcon.removeFromParent(); this.contextHelpIcon = null; } if (clickHandlerRegistration != null) { clickHandlerRegistration.removeHandler(); clickHandlerRegistration = null; } } // Error if (error != null && showError) { if (errorIcon == null) { errorIcon = DOM.createSpan(); errorIcon.setClassName("v-errorindicator"); } if (caption != null) { caption.appendChild(errorIcon); } } else if (errorIcon != null) { errorIcon.removeFromParent(); errorIcon = null; } if (caption != null) { // Styles caption.setClassName("v-caption"); if (styles != null) { for (String style : styles) { caption.addClassName("v-caption-" + style); } } if (enabled) { caption.removeClassName("v-disabled"); } else { caption.addClassName("v-disabled"); } // Caption position if (captionText != null || icon != null) { setCaptionPosition(CaptionPosition.TOP); } else { setCaptionPosition(CaptionPosition.RIGHT); } } if (focusLost) { // Find out what element is currently focused. Element currentFocus = WidgetUtil.getFocusedElement(); if (currentFocus != null && currentFocus.equals(Document.get().getBody())) { // Focus has moved to BodyElement and should be moved back to // original location. This happened because of adding or // removing the captionWrap focusedElement.focus(); } else if (currentFocus != focusedElement) { // Focus is either moved somewhere else on purpose or IE has // lost it. Investigate further. Timer focusTimer = new Timer() { @Override public void run() { if (WidgetUtil.getFocusedElement() == null) { // This should never become an infinite loop and // even if it does it will be stopped once something // is done with the browser. schedule(25); } else if (WidgetUtil.getFocusedElement().equals(Document.get().getBody())) { // Focus found it's way to BodyElement. Now it can // be restored focusedElement.focus(); } } }; if (BrowserInfo.get().isIE8()) { // IE8 can't fix the focus immediately. It will fail. focusTimer.schedule(25); } else { // Newer IE versions can handle things immediately. focusTimer.run(); } } } }