blob: 0c1573cad0d7784d244571c8245a83419c5ef2e8 [file] [log] [blame]
/*
* Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package javax.accessibility;
/**
* Class {@code AccessibleState} describes a component's particular state. The
* actual state of the component is defined as an {@code AccessibleStateSet},
* which is a composed set of {@code AccessibleStates}.
* <p>
* The {@link #toDisplayString()} method allows you to obtain the localized
* string for a locale independent key from a predefined {@code ResourceBundle}
* for the keys defined in this class.
* <p>
* The constants in this class present a strongly typed enumeration of common
* object roles. A public constructor for this class has been purposely omitted
* and applications should use one of the constants from this class. If the
* constants in this class are not sufficient to describe the role of an object,
* a subclass should be generated from this class and it should provide
* constants in a similar manner.
*
* @author Willie Walker
* @author Peter Korn
*/
public class AccessibleState extends AccessibleBundle {
// If you add or remove anything from here, make sure you
// update AccessibleResourceBundle.java.
/**
* Indicates a window is currently the active window. This includes windows,
* dialogs, frames, etc. In addition, this state is used to indicate the
* currently active child of a component such as a list, table, or tree. For
* example, the active child of a list is the child that is drawn with a
* rectangle around it.
*
* @see AccessibleRole#WINDOW
* @see AccessibleRole#FRAME
* @see AccessibleRole#DIALOG
*/
public static final AccessibleState ACTIVE
= new AccessibleState("active");
/**
* Indicates this object is currently pressed. This is usually associated
* with buttons and indicates the user has pressed a mouse button while the
* pointer was over the button and has not yet released the mouse button.
*
* @see AccessibleRole#PUSH_BUTTON
*/
public static final AccessibleState PRESSED
= new AccessibleState("pressed");
/**
* Indicates that the object is armed. This is usually used on buttons that
* have been pressed but not yet released, and the mouse pointer is still
* over the button.
*
* @see AccessibleRole#PUSH_BUTTON
*/
public static final AccessibleState ARMED
= new AccessibleState("armed");
/**
* Indicates the current object is busy. This is usually used on objects
* such as progress bars, sliders, or scroll bars to indicate they are in a
* state of transition.
*
* @see AccessibleRole#PROGRESS_BAR
* @see AccessibleRole#SCROLL_BAR
* @see AccessibleRole#SLIDER
*/
public static final AccessibleState BUSY
= new AccessibleState("busy");
/**
* Indicates this object is currently checked. This is usually used on
* objects such as toggle buttons, radio buttons, and check boxes.
*
* @see AccessibleRole#TOGGLE_BUTTON
* @see AccessibleRole#RADIO_BUTTON
* @see AccessibleRole#CHECK_BOX
*/
public static final AccessibleState CHECKED
= new AccessibleState("checked");
/**
* Indicates the user can change the contents of this object. This is
* usually used primarily for objects that allow the user to enter text.
* Other objects, such as scroll bars and sliders, are automatically
* editable if they are enabled.
*
* @see #ENABLED
*/
public static final AccessibleState EDITABLE
= new AccessibleState("editable");
/**
* Indicates this object allows progressive disclosure of its children. This
* is usually used with hierarchical objects such as trees and is often
* paired with the {@code EXPANDED} or {@code COLLAPSED} states.
*
* @see #EXPANDED
* @see #COLLAPSED
* @see AccessibleRole#TREE
*/
public static final AccessibleState EXPANDABLE
= new AccessibleState("expandable");
/**
* Indicates this object is collapsed. This is usually paired with the
* {@code EXPANDABLE} state and is used on objects that provide progressive
* disclosure such as trees.
*
* @see #EXPANDABLE
* @see #EXPANDED
* @see AccessibleRole#TREE
*/
public static final AccessibleState COLLAPSED
= new AccessibleState("collapsed");
/**
* Indicates this object is expanded. This is usually paired with the
* {@code EXPANDABLE} state and is used on objects that provide progressive
* disclosure such as trees.
*
* @see #EXPANDABLE
* @see #COLLAPSED
* @see AccessibleRole#TREE
*/
public static final AccessibleState EXPANDED
= new AccessibleState("expanded");
/**
* Indicates this object is enabled. The absence of this state from an
* object's state set indicates this object is not enabled. An object that
* is not enabled cannot be manipulated by the user. In a graphical display,
* it is usually grayed out.
*/
public static final AccessibleState ENABLED
= new AccessibleState("enabled");
/**
* Indicates this object can accept keyboard focus, which means all events
* resulting from typing on the keyboard will normally be passed to it when
* it has focus.
*
* @see #FOCUSED
*/
public static final AccessibleState FOCUSABLE
= new AccessibleState("focusable");
/**
* Indicates this object currently has the keyboard focus.
*
* @see #FOCUSABLE
*/
public static final AccessibleState FOCUSED
= new AccessibleState("focused");
/**
* Indicates this object is minimized and is represented only by an icon.
* This is usually only associated with frames and internal frames.
*
* @see AccessibleRole#FRAME
* @see AccessibleRole#INTERNAL_FRAME
*/
public static final AccessibleState ICONIFIED
= new AccessibleState("iconified");
/**
* Indicates something must be done with this object before the user can
* interact with an object in a different window. This is usually associated
* only with dialogs.
*
* @see AccessibleRole#DIALOG
*/
public static final AccessibleState MODAL
= new AccessibleState("modal");
/**
* Indicates this object paints every pixel within its rectangular region. A
* non-opaque component paints only some of its pixels, allowing the pixels
* underneath it to "show through". A component that does not fully paint
* its pixels therefore provides a degree of transparency.
*
* @see Accessible#getAccessibleContext
* @see AccessibleContext#getAccessibleComponent
* @see AccessibleComponent#getBounds
*/
public static final AccessibleState OPAQUE
= new AccessibleState("opaque");
/**
* Indicates the size of this object is not fixed.
*
* @see Accessible#getAccessibleContext
* @see AccessibleContext#getAccessibleComponent
* @see AccessibleComponent#getSize
* @see AccessibleComponent#setSize
*/
public static final AccessibleState RESIZABLE
= new AccessibleState("resizable");
/**
* Indicates this object allows more than one of its children to be selected
* at the same time.
*
* @see Accessible#getAccessibleContext
* @see AccessibleContext#getAccessibleSelection
* @see AccessibleSelection
*/
public static final AccessibleState MULTISELECTABLE
= new AccessibleState("multiselectable");
/**
* Indicates this object is the child of an object that allows its children
* to be selected, and that this child is one of those children that can be
* selected.
*
* @see #SELECTED
* @see Accessible#getAccessibleContext
* @see AccessibleContext#getAccessibleSelection
* @see AccessibleSelection
*/
public static final AccessibleState SELECTABLE
= new AccessibleState("selectable");
/**
* Indicates this object is the child of an object that allows its children
* to be selected, and that this child is one of those children that has
* been selected.
*
* @see #SELECTABLE
* @see Accessible#getAccessibleContext
* @see AccessibleContext#getAccessibleSelection
* @see AccessibleSelection
*/
public static final AccessibleState SELECTED
= new AccessibleState("selected");
/**
* Indicates this object, the object's parent, the object's parent's parent,
* and so on, are all visible. Note that this does not necessarily mean the
* object is painted on the screen. It might be occluded by some other
* showing object.
*
* @see #VISIBLE
*/
public static final AccessibleState SHOWING
= new AccessibleState("showing");
/**
* Indicates this object is visible. Note: this means that the object
* intends to be visible; however, it may not in fact be showing on the
* screen because one of the objects that this object is contained by is not
* visible.
*
* @see #SHOWING
*/
public static final AccessibleState VISIBLE
= new AccessibleState("visible");
/**
* Indicates the orientation of this object is vertical. This is usually
* associated with objects such as scrollbars, sliders, and progress bars.
*
* @see #VERTICAL
* @see AccessibleRole#SCROLL_BAR
* @see AccessibleRole#SLIDER
* @see AccessibleRole#PROGRESS_BAR
*/
public static final AccessibleState VERTICAL
= new AccessibleState("vertical");
/**
* Indicates the orientation of this object is horizontal. This is usually
* associated with objects such as scrollbars, sliders, and progress bars.
*
* @see #HORIZONTAL
* @see AccessibleRole#SCROLL_BAR
* @see AccessibleRole#SLIDER
* @see AccessibleRole#PROGRESS_BAR
*/
public static final AccessibleState HORIZONTAL
= new AccessibleState("horizontal");
/**
* Indicates this (text) object can contain only a single line of text.
*/
public static final AccessibleState SINGLE_LINE
= new AccessibleState("singleline");
/**
* Indicates this (text) object can contain multiple lines of text.
*/
public static final AccessibleState MULTI_LINE
= new AccessibleState("multiline");
/**
* Indicates this object is transient. An assistive technology should not
* add a {@code PropertyChange} listener to an object with transient state,
* as that object will never generate any events. Transient objects are
* typically created to answer Java Accessibility method queries, but
* otherwise do not remain linked to the underlying object (for example,
* those objects underneath lists, tables, and trees in Swing, where only
* one actual {@code UI Component} does shared rendering duty for all of the
* data objects underneath the actual list/table/tree elements).
*
* @since 1.5
*/
public static final AccessibleState TRANSIENT
= new AccessibleState("transient");
/**
* Indicates this object is responsible for managing its subcomponents. This
* is typically used for trees and tables that have a large number of
* subcomponents and where the objects are created only when needed and
* otherwise remain virtual. The application should not manage the
* subcomponents directly.
*
* @since 1.5
*/
public static final AccessibleState MANAGES_DESCENDANTS
= new AccessibleState ("managesDescendants");
/**
* Indicates that the object state is indeterminate. An example is selected
* text that is partially bold and partially not bold. In this case the
* attributes associated with the selected text are indeterminate.
*
* @since 1.5
*/
public static final AccessibleState INDETERMINATE
= new AccessibleState ("indeterminate");
/**
* A state indicating that text is truncated by a bounding rectangle and
* that some of the text is not displayed on the screen. An example is text
* in a spreadsheet cell that is truncated by the bounds of the cell.
*
* @since 1.5
*/
public static final AccessibleState TRUNCATED
= new AccessibleState("truncated");
/**
* Creates a new {@code AccessibleState} using the given locale independent
* key. This should not be a public method. Instead, it is used to create
* the constants in this file to make it a strongly typed enumeration.
* Subclasses of this class should enforce similar policy.
* <p>
* The key {@code String} should be a locale independent key for the state.
* It is not intended to be used as the actual {@code String} to display to
* the user. To get the localized string, use {@link #toDisplayString()}.
*
* @param key the locale independent name of the state
* @see AccessibleBundle#toDisplayString
*/
protected AccessibleState(String key) {
this.key = key;
}
}