- /*
 - * @(#)Label.java 1.47 00/04/06
 - *
 - * Copyright 1995-2000 Sun Microsystems, Inc. All Rights Reserved.
 - *
 - * This software is the proprietary information of Sun Microsystems, Inc.
 - * Use is subject to license terms.
 - *
 - */
 - package java.awt;
 - import java.awt.peer.LabelPeer;
 - import javax.accessibility.*;
 - /**
 - * A <code>Label</code> object is a component for placing text in a
 - * container. A label displays a single line of read-only text.
 - * The text can be changed by the application, but a user cannot edit it
 - * directly.
 - * <p>
 - * For example, the code . . .
 - * <p>
 - * <hr><blockquote><pre>
 - * setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
 - * add(new Label("Hi There!"));
 - * add(new Label("Another Label"));
 - * </pre></blockquote><hr>
 - * <p>
 - * produces the following label:
 - * <p>
 - * <img src="doc-files/Label-1.gif"
 - * ALIGN=center HSPACE=10 VSPACE=7>
 - *
 - * @version 1.47, 04/06/00
 - * @author Sami Shaio
 - * @since JDK1.0
 - */
 - public class Label extends Component implements Accessible {
 - static {
 - /* ensure that the necessary native libraries are loaded */
 - Toolkit.loadLibraries();
 - initIDs();
 - }
 - /**
 - * Indicates that the label should be left justified.
 - */
 - public static final int LEFT = 0;
 - /**
 - * Indicates that the label should be centered.
 - */
 - public static final int CENTER = 1;
 - /**
 - * Indicates that the label should be right justified.
 - * @since JDK1.0t.
 - */
 - public static final int RIGHT = 2;
 - /**
 - * The text of this label.
 - * This text can be modified by the program
 - * but never by the user.
 - *
 - * @serial
 - * @see getText()
 - * @see setText()
 - */
 - String text;
 - /**
 - * The label's alignment. The default alignment is set
 - * to be left justified.
 - *
 - * @serial
 - * @see getAlignment()
 - * @see setAlignment()
 - */
 - int alignment = LEFT;
 - private static final String base = "label";
 - private static int nameCounter = 0;
 - /*
 - * JDK 1.1 serialVersionUID
 - */
 - private static final long serialVersionUID = 3094126758329070636L;
 - /**
 - * Constructs an empty label.
 - * The text of the label is the empty string <code>""</code>.
 - */
 - public Label() {
 - this("", LEFT);
 - }
 - /**
 - * Constructs a new label with the specified string of text,
 - * left justified.
 - * @param text the string that the label presents.
 - * A <code>null</code> value
 - * will be accepted without causing a NullPointerException
 - * to be thrown.
 - */
 - public Label(String text) {
 - this(text, LEFT);
 - }
 - /**
 - * Constructs a new label that presents the specified string of
 - * text with the specified alignment.
 - * Possible values for <code>alignment</code> are <code>Label.LEFT</code>,
 - * <code>Label.RIGHT</code>, and <code>Label.CENTER</code>.
 - * @param text the string that the label presents.
 - * A <code>null</code> value
 - * will be accepted without causing a NullPointerException
 - * to be thrown.
 - * @param alignment the alignment value.
 - */
 - public Label(String text, int alignment) {
 - this.text = text;
 - setAlignment(alignment);
 - }
 - /**
 - * Construct a name for this component. Called by getName() when the
 - * name is <code>null</code>.
 - */
 - String constructComponentName() {
 - synchronized (getClass()) {
 - return base + nameCounter++;
 - }
 - }
 - /**
 - * Creates the peer for this label. The peer allows us to
 - * modify the appearance of the label without changing its
 - * functionality.
 - */
 - public void addNotify() {
 - synchronized (getTreeLock()) {
 - if (peer == null)
 - peer = getToolkit().createLabel(this);
 - super.addNotify();
 - }
 - }
 - /**
 - * Gets the current alignment of this label. Possible values are
 - * <code>Label.LEFT</code>, <code>Label.RIGHT</code>, and
 - * <code>Label.CENTER</code>.
 - * @see java.awt.Label#setAlignment
 - */
 - public int getAlignment() {
 - return alignment;
 - }
 - /**
 - * Sets the alignment for this label to the specified alignment.
 - * Possible values are <code>Label.LEFT</code>,
 - * <code>Label.RIGHT</code>, and <code>Label.CENTER</code>.
 - * @param alignment the alignment to be set.
 - * @exception IllegalArgumentException if an improper value for
 - * <code>alignment</code> is given.
 - * @see java.awt.Label#getAlignment
 - */
 - public synchronized void setAlignment(int alignment) {
 - switch (alignment) {
 - case LEFT:
 - case CENTER:
 - case RIGHT:
 - this.alignment = alignment;
 - LabelPeer peer = (LabelPeer)this.peer;
 - if (peer != null) {
 - peer.setAlignment(alignment);
 - }
 - return;
 - }
 - throw new IllegalArgumentException("improper alignment: " + alignment);
 - }
 - /**
 - * Gets the text of this label.
 - * @return the text of this label, or <code>null</code> if
 - * the text has been set to <code>null</code>.
 - * @see java.awt.Label#setText
 - */
 - public String getText() {
 - return text;
 - }
 - /**
 - * Sets the text for this label to the specified text.
 - * @param text the text that this label displays. If
 - * <code>text</code> is <code>null</code>, it is
 - * treated for display purposes like an empty
 - * string <code>""</code>.
 - * @see java.awt.Label#getText
 - */
 - public void setText(String text) {
 - boolean testvalid = false;
 - synchronized (this) {
 - if (text != this.text && (this.text == null ||
 - !this.text.equals(text))) {
 - this.text = text;
 - LabelPeer peer = (LabelPeer)this.peer;
 - if (peer != null) {
 - peer.setText(text);
 - }
 - testvalid = true;
 - }
 - }
 - // This could change the preferred size of the Component.
 - if (testvalid && valid) {
 - invalidate();
 - }
 - }
 - /**
 - * Returns the parameter string representing the state of this
 - * label. This string is useful for debugging.
 - * @return the parameter string of this label.
 - */
 - protected String paramString() {
 - String str = ",align=";
 - switch (alignment) {
 - case LEFT: str += "left"; break;
 - case CENTER: str += "center"; break;
 - case RIGHT: str += "right"; break;
 - }
 - return super.paramString() + str + ",text=" + text;
 - }
 - /**
 - * Initialize JNI field and method IDs
 - */
 - private static native void initIDs();
 - /////////////////
 - // Accessibility support
 - ////////////////
 - /**
 - * Gets the AccessibleContext associated with this Label.
 - * For labels, the AccessibleContext takes the form of an
 - * AccessibleAWTLabel.
 - * A new AccessibleAWTLabel instance is created if necessary.
 - *
 - * @return an AccessibleAWTLabel that serves as the
 - * AccessibleContext of this Label
 - */
 - public AccessibleContext getAccessibleContext() {
 - if (accessibleContext == null) {
 - accessibleContext = new AccessibleAWTLabel();
 - }
 - return accessibleContext;
 - }
 - /**
 - * This class implements accessibility support for the
 - * <code>Label</code> class. It provides an implementation of the
 - * Java Accessibility API appropriate to label user-interface elements.
 - */
 - protected class AccessibleAWTLabel extends AccessibleAWTComponent {
 - public AccessibleAWTLabel() {
 - super();
 - }
 - /**
 - * Get the accessible name of this object.
 - *
 - * @return the localized name of the object -- can be null if this
 - * object does not have a name
 - * @see AccessibleContext#setAccessibleName
 - */
 - public String getAccessibleName() {
 - if (accessibleName != null) {
 - return accessibleName;
 - } else {
 - if (getText() == null) {
 - return super.getAccessibleName();
 - } else {
 - return getText();
 - }
 - }
 - }
 - /**
 - * Get the role of this object.
 - *
 - * @return an instance of AccessibleRole describing the role of the object
 - * @see AccessibleRole
 - */
 - public AccessibleRole getAccessibleRole() {
 - return AccessibleRole.LABEL;
 - }
 - } // inner class AccessibleAWTLabel
 - }