/*************************************************************************
 *
 *  OpenOffice.org - a multi-platform office productivity suite
 *
 *  $RCSfile: XAccessibleAction.idl,v $
 *
 *  $Revision: 1.8 $
 *
 *  last change: $Author: rt $ $Date: 2005-09-07 20:29:46 $
 *
 *  The Contents of this file are made available subject to
 *  the terms of GNU Lesser General Public License Version 2.1.
 *
 *
 *    GNU Lesser General Public License Version 2.1
 *    =============================================
 *    Copyright 2005 by Sun Microsystems, Inc.
 *    901 San Antonio Road, Palo Alto, CA 94303, USA
 *
 *    This library is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU Lesser General Public
 *    License version 2.1, as published by the Free Software Foundation.
 *
 *    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
 *    Lesser General Public License for more details.
 *
 *    You should have received a copy of the GNU Lesser 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 __com_sun_star_accessibility_XAccessibleAction_idl__
#define __com_sun_star_accessibility_XAccessibleAction_idl__

#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif
#ifndef __com_sun_star_lang_IndexOutOfBoundsException_idl__
#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
#endif

module com { module sun { module star { module accessibility {

 published interface XAccessibleKeyBinding;

/** Implement this interface to give access to actions that can be executed
    for accessible objects.

    <p>Every accessible object that can be manipulated beyond its methods
    exported over the accessibility API should support this interface to
    expose all actions that it can perform.  Each action can be performed or
    be queried for a description or associated key bindings.</p>

    @since OOo 1.1.2
*/
published interface XAccessibleAction : ::com::sun::star::uno::XInterface
{
    /** Returns the number of accessible actions available in this object.

        <p>If there are more than one, the first one is considered the
        "default" action of the object.</p>

        @return
            The returned value of the number of actions is zero if there are
            no actions.
    */
    long getAccessibleActionCount ();

    /** Perform the specified Action on the object.

        @param nIndex
            This index specifies the action to perform.  If it lies outside
            the valid range <FALSE/> is returned and no action is performed.
        @return
            Returns <TRUE/> if the action was successfully performed.  If
            the action could not be performed successfully <FALSE/> is
            returned.

        @throws IndexOutOfBoundsException
            If no action with the given index exists then an
            <type scope="::com::sun::star::lang">IndexOutOfBoundsException</type>
            exception is thrown.
    */
    boolean doAccessibleAction ([in] long nIndex)
        raises (::com::sun::star::lang::IndexOutOfBoundsException);

    /** Returns a description of the specified action of the object.

        @param nIndex
            This index specifies the action of which to return a
            description.  If it lies outside the valid range an empty string
            is returned.

        @return
            The returned value is a localized string of the specified action.

        @throws IndexOutOfBoundsException
            If the given index lies not in the valid range then an
            <type scope="::com::sun::star::lang">IndexOutOfBoundsException</type>
            exception is thrown.
    */
    string getAccessibleActionDescription ([in] long nIndex)
        raises (::com::sun::star::lang::IndexOutOfBoundsException);

    /** Returns a key binding object, if there is one, associated with the
        specified action.  Note that there can be several alternative key
        bindings for an action.  See <type>XAccessibleKeyBinding</type> for
        more information about how key bindings are represented.

        @param nIndex
            This index specifies the action of which to return the key
            binding.

        @return
            The returned object describes a set of key bindings associated
            with the specified action.

        @throws IndexOutOfBoundsException
            if the given index is not valid.
    */
    XAccessibleKeyBinding getAccessibleActionKeyBinding ([in] long nIndex)
        raises (::com::sun::star::lang::IndexOutOfBoundsException);
};

}; }; }; };

#endif
