All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.gwt.user.client.ui.LabelBase Maven / Gradle / Ivy

There is a newer version: 2.10.0
Show newest version
/*
 * Copyright 2010 Google Inc.
 * 
 * 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.google.gwt.user.client.ui;

import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style.WhiteSpace;
import com.google.gwt.i18n.shared.DirectionEstimator;
import com.google.gwt.i18n.shared.HasDirectionEstimator;

/**
 * Abstract base class for all text display widgets.
 * 
 * 

Use in UiBinder Templates

* * @param the value type */ public class LabelBase extends Widget implements HasWordWrap, HasDirectionEstimator, HasAutoHorizontalAlignment { /** * The widget's DirectionalTextHelper object. */ final DirectionalTextHelper directionalTextHelper; /** * The widget's auto horizontal alignment policy. * * @see HasAutoHorizontalAlignment */ private AutoHorizontalAlignmentConstant autoHorizontalAlignment; /** * The widget's horizontal alignment. */ private HorizontalAlignmentConstant horzAlign; protected LabelBase(boolean inline) { this(inline ? Document.get().createSpanElement() : Document.get().createDivElement(), inline); } protected LabelBase(Element element) { this(element, "span".equalsIgnoreCase(element.getTagName())); } private LabelBase(Element element, boolean isElementInline) { assert (isElementInline ? "span" : "div").equalsIgnoreCase(element.getTagName()); setElement(element); directionalTextHelper = new DirectionalTextHelper(getElement(), isElementInline); } public AutoHorizontalAlignmentConstant getAutoHorizontalAlignment() { return autoHorizontalAlignment; } public DirectionEstimator getDirectionEstimator() { return directionalTextHelper.getDirectionEstimator(); } public HorizontalAlignmentConstant getHorizontalAlignment() { return horzAlign; } public boolean getWordWrap() { return !WhiteSpace.NOWRAP.getCssName().equals(getElement().getStyle().getWhiteSpace()); } public void setAutoHorizontalAlignment( AutoHorizontalAlignmentConstant autoAlignment) { autoHorizontalAlignment = autoAlignment; updateHorizontalAlignment(); } /** * {@inheritDoc} *

* See note at {@link #setDirectionEstimator(DirectionEstimator)}. */ public void setDirectionEstimator(boolean enabled) { directionalTextHelper.setDirectionEstimator(enabled); updateHorizontalAlignment(); } /** * {@inheritDoc} *

* Note: DirectionEstimator should be set before the widget has any content; * it's highly recommended to set it using a constructor. Reason: if the * widget already has non-empty content, this will update its direction * according to the new estimator's result. This may cause flicker, and thus * should be avoided. */ public void setDirectionEstimator(DirectionEstimator directionEstimator) { directionalTextHelper.setDirectionEstimator(directionEstimator); updateHorizontalAlignment(); } /** * {@inheritDoc} * *

* Note: A subsequent call to {@link #setAutoHorizontalAlignment} may override * the horizontal alignment set by this method. *

* Note: For {@code null}, the horizontal alignment is cleared, allowing it to * be determined by the standard HTML mechanisms such as inheritance and CSS * rules. * * @see #setAutoHorizontalAlignment */ public void setHorizontalAlignment(HorizontalAlignmentConstant align) { setAutoHorizontalAlignment(align); } public void setWordWrap(boolean wrap) { getElement().getStyle().setWhiteSpace(wrap ? WhiteSpace.NORMAL : WhiteSpace.NOWRAP); } /** * Sets the horizontal alignment of the widget according to the current * AutoHorizontalAlignment setting. Should be invoked whenever the horizontal * alignment may be affected, i.e. on every modification of the content or its * direction. */ protected void updateHorizontalAlignment() { HorizontalAlignmentConstant align; if (autoHorizontalAlignment == null) { align = null; } else if (autoHorizontalAlignment instanceof HorizontalAlignmentConstant) { align = (HorizontalAlignmentConstant) autoHorizontalAlignment; } else { /* * autoHorizontalAlignment is a truly automatic policy, i.e. either * ALIGN_CONTENT_START or ALIGN_CONTENT_END */ align = autoHorizontalAlignment == ALIGN_CONTENT_START ? HorizontalAlignmentConstant.startOf(directionalTextHelper.getTextDirection()) : HorizontalAlignmentConstant.endOf(directionalTextHelper.getTextDirection()); } if (align != horzAlign) { horzAlign = align; getElement().getStyle().setProperty("textAlign", horzAlign == null ? "" : horzAlign.getTextAlignString()); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy