home *** CD-ROM | disk | FTP | other *** search
- /*
- * AT-SPI - Assistive Technology Service Provider Interface
- * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
- *
- * Copyright 2001 Sun Microsystems Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
- #ifndef _ACCESSIBILITY_RELATION_IDL
- #define _ACCESSIBILITY_RELATION_IDL
-
- module Accessibility {
-
- /**
- * RelationType specifies a relationship between objects (possibly one-to-many or many-to-one)
- * outside of the normal parent/child hierarchical relationship. It allows better semantic
- * identification of how objects are associated with one another.
- * For instance the RELATION_LABELLED_BY relationship may be used to identify labelling information
- * that should accompany the accessibleName property when presenting an object's content or identity
- * to the end user. Similarly, RELATION_CONTROLLER_FOR can be used to further specify the context
- * in which a valuator is useful, and/or the other UI components which are directly effected by
- * user interactions with the valuator. Common examples include association of scrollbars with
- * the viewport or panel which they control.
- */
- enum RelationType {
- /** Not a meaningful relationship; clients should not normally encounter this RelationType value. */
- RELATION_NULL,
- /** Object is a label for one or more other objects. */
- RELATION_LABEL_FOR,
- /** Object is labelled by one or more other objects. */
- RELATION_LABELLED_BY,
- /** Object is an interactive object which modifies the state, onscreen location, or other attributes
- * of one or more target objects. */
- RELATION_CONTROLLER_FOR,
- /** Object state, position, etc. is modified/controlled by user interaction with one or
- * more other objects. For instance a viewport or scroll pane may be CONTROLLED_BY scrollbars. */
- RELATION_CONTROLLED_BY,
- /** Object has a grouping relationship (e.g. ¨same group as¨) to one or more other objects. */
- RELATION_MEMBER_OF,
- /** Object is a tooltip associated with another object. */
- RELATION_TOOLTIP_FOR,
- /** Reserved for future use. */
- RELATION_NODE_CHILD_OF,
- /** Used to indicate that a relationship exists, but its type is not specified in the enumeration
- * and must be obtained via a call to getRelationTypeName. */
- RELATION_EXTENDED,
- /** Object renders content which flows logically to another object.
- * For instance, text in a paragraph may flow to another object which is not the
- * ¨next sibling¨ in the accessibility hierarchy. */
- RELATION_FLOWS_TO,
- /** Reciprocal of RELATION_FLOWS_TO. */
- RELATION_FLOWS_FROM,
- /** Object is visually and semantically considered a subwindow of another object, even though
- * it is not the object's child. Useful when dealing with embedded applications and other cases
- * where the widget hierarchy does not map cleanly to the onscreen presentation. */
- RELATION_SUBWINDOW_OF,
- /** Similar to SUBWINDOW_OF, but specifically used for cross-process embedding. */
- RELATION_EMBEDS,
- /** Reciprocal of RELATION_EMBEDS; Used to denote content rendered by embedded renderers that
- * live in a separate process space from the embedding context. */
- RELATION_EMBEDDED_BY,
- /** Denotes that the object is a transient window or frame associated with another onscreen object.
- * Similar to TOOLTIP_FOR, but more general. Useful for windows which are technically
- * toplevels but which, for one or more reasons, do not explicitly cause their associated
- * window to lose ¨window focus¨. Creation of a ROLE_WINDOW object with the POPUP_FOR relation
- * usually requires some presentation action on the part of assistive technology clients, even though
- * the previous toplevel ROLE_FRAME object may still be the active window. */
- RELATION_POPUP_FOR,
- /** This is the reciprocal relation to RELATION_POPUP_FOR. */
- RELATION_PARENT_WINDOW_OF,
- /** Indicates that an object provides descriptive information
- * about another object; more verbose than RELATION_LABEL_FOR. */
- RELATION_DESCRIPTION_FOR,
- /** Indicates that another object provides descriptive information
- * about this object; more verbose than RELATION_LABELLED_BY. */
- RELATION_DESCRIBED_BY,
- /** Do not use as a parameter value, used to determine the size of the enumeration. */
- RELATION_LAST_DEFINED
- };
-
- /**
- * An interface via which objects' non-hierarchical relationships to one another
- * are indicated. An instance of Relations represents a "one-to-many" correspondance.
- *
- * @note This interface inherits from a base class implementing ref counts.
- */
- interface Relation : Bonobo::Unknown {
-
- /** @returns the RelationType of this Relation. */
- RelationType getRelationType ();
-
- /** @returns an unlocalized string representing the relation type. */
- string getRelationTypeName ();
-
- /** @returns the number of objects to which this relationship applies. */
- short getNTargets ();
-
- /** @returns an Object which is the 'nth'target of this Relation, e.g. the Object at index i
- * in the list of Objects having the specified relationship to this Accessible.
- * \note This target should always implement Accessible, though it is returned as an Object.
- * (In this respect this method is probably ill-specified.)
- **/
- Object getTarget (in short index);
-
- /** \cond placeholders for future expansion */
- void unImplemented ();
- void unImplemented2 ();
- void unImplemented3 ();
- void unImplemented4 ();
- /** \endcond */
- };
- };
-
- #endif
-