/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you 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 .
 */
#ifndef __com_sun_star_table_AccessibleCellView_idl__
#define __com_sun_star_table_AccessibleCellView_idl__

#include <com/sun/star/accessibility/XAccessibleContext.idl>
#include <com/sun/star/accessibility/XAccessibleComponent.idl>
#include <com/sun/star/accessibility/XAccessibleValue.idl>
#include <com/sun/star/accessibility/XAccessibleText.idl>
#include <com/sun/star/accessibility/XAccessibleSelection.idl>
#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.idl>



module com {  module sun {  module star {  module table {


/** The accessible view of a cell in a text document or in the page preview
      of a spreadsheet document. See
    ::com::sun::star::sheet::AccessibleCell for cells in
    the edit view of a spreadsheet.
    @since OOo 1.1.2
*/
service AccessibleCellView
{
    /** This interface gives access to the visible content of a cell in a
        accessible spreadsheet page preview or accessible text document view.
    <ul>
        <li>The parent returned by
            ::com::sun::star::accessibility::XAccessibleContext::getAccessibleParent()
            is the accessible table view.</li>
        <li>The children returned by
            ::com::sun::star::accessibility::XAccessibleContext::getAccessibleChild()
            all support the interface XAccessible. Calling
            ::com::sun::star::accessibility::XAccessible::getAccessibleContext()
            for these children returns an object that supports the service
            ::com::sun::star::text::AccessibleParagraphView:
            A child of this kind is returned for every paragraph
            fragment that is contained in the cell and
            is at least partially visible. A paragraph fragment is
            the part of a paragraph that is displayed on a
            certain page.
        <li>The name is something like A10 or B23 or so on.</li>
        <li>The description is the name or the content of the given note.</li>
        <li>The role is
            ::com::sun::star::accessibility::AccessibleRole::TABLE_CELL</li>
        <li>For spreadsheets, there are relations between the cell and the
            shapes with an anchor on this cell.</li>
        <li>The following states are supported:
            <ul>
                <li>::com::sun::star::accessibility::AccessibleStateType::DEFUNC
                    is always false if the
                    cell is shown, otherwise it is true.</li>
                <li>::com::sun::star::accessibility::AccessibleStateType::EDITABLE
                    is false if the cell
                    is showed in a page preview or the cell or the table is
                    protected, otherwise it is true.</li>
                <li>::com::sun::star::accessibility::AccessibleStateType::ENABLED
                    is always true.</li>
                <li>::com::sun::star::accessibility::AccessibleStateType::MULTI_LINE
                    is always true in spreadsheets and false otherwise.</li>
                <li>::com::sun::star::accessibility::AccessibleStateType::OPAQUE
                    is false if the cell
                    has no background color or graphic, otherwise it is true.</li>
                <li>::com::sun::star::accessibility::AccessibleStateType::SELECTABLE
                    is true if the
                    cell is not showed in a page preview, otherwise is it
                    false.</li>
                <li>::com::sun::star::accessibility::AccessibleStateType::SELECTED
                    is true, if the cell
                    is selected. This is not possible in the page preview.</li>
                <li>::com::sun::star::accessibility::AccessibleStateType::SHOWING
                    is true if the
                    Bounding Box lies in the Bounding Box of the parent.
                    Otherwise it is false.</li>
                <li>::com::sun::star::accessibility::AccessibleStateType::TRANSIENT
                    is true if the cell
                    is showed in a spreadsheet page preview. Otherwise it is
                    false.</li>
                <li>::com::sun::star::accessibility::AccessibleStateType::VISIBLE
                    is always true.</li>
            </ul>
        </li>
    </ul>
     */
    interface ::com::sun::star::accessibility::XAccessibleContext;

    /** This interface gives access to the visibility of the cell.
    */
    interface ::com::sun::star::accessibility::XAccessibleComponent;

    /** This interface gives access to the value of the cell.
        Only a readonly access is possible.
     */
    interface ::com::sun::star::accessibility::XAccessibleValue;

    /** This interface is for selecting the text, value or parts of this in the
        cell. This interface is optional.
     */
    [optional] interface ::com::sun::star::accessibility::XAccessibleSelection;

    /** This is the interface for listeners */
    [optional] interface ::com::sun::star::accessibility::XAccessibleEventBroadcaster;
};


}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
