/**************************************************************
 * 
 * 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
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/


#ifndef __com_sun_star_sheet_AccessibleSpreadsheetDocumentView_idl__
#define __com_sun_star_sheet_AccessibleSpreadsheetDocumentView_idl__

#ifndef __com_sun_star_accessibility_XAccessibleContext_idl__
#include <com/sun/star/accessibility/XAccessibleContext.idl>
#endif

#ifndef __com_sun_star_accessibility_XAccessibleComponent_idl__
#include <com/sun/star/accessibility/XAccessibleComponent.idl>
#endif

#ifndef __com_sun_star_accessibility_XAccessibleSelection_idl__
#include <com/sun/star/accessibility/XAccessibleSelection.idl>
#endif

#ifndef __com_sun_star_accessibility_XAccessibleEventBroadcaster_idl__
#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.idl>
#endif

//=============================================================================

module com {  module sun {  module star {  module sheet {

//=============================================================================

/** The accessible view of a spreadsheet document

	 @since OpenOffice 1.1.2

 */
published service AccessibleSpreadsheetDocumentView
{
	/** This interface gives access to any object that is contained in this
		document.

	<ul>
		<li>The parent returned by <method>getAccessibleParent</method>
			is the window which contains the view of these document.</li>
		<li>The children returned by <method>getAccessibleChild</method> all
			support the interface XAccessible. Calling
			<method>getAccessibleContext</method> for these children returns
			an object that supports one of the following services.</li>
		<ul>
			<li><type scope="::com::sun::star::sheet">AccessibleSpreadsheet</type>:
				A child where calling <method>getAccessibleChild</method>
				an object that supports this service is returned for
				the current spreadsheet which is showing in this document
				window. There is every time one child which supports this
				service, because it is only possible to have one spreadsheet
				in the current document window.</li>
			<li><type scope="::com::sun::star::drawing">AccessibleShape</type>:
				A child where calling <method>getAccessibleChild</method>
				an object that supports this service is returned
				for every shape that is at the current table. These
				objects are children of the
				<type>AccessibleSpreadsheetDocumentView</type> regardless
				whether they are bound to a table or a cell.</li>
			<li><type scope="::com::sun::star::text">AccessibleParagraphView</type>:
				A child where calling <method>getAccessibleChild</method>
				an object that supports this service is returned for
				the current cell in edit mode. This is necessary to
				have an object which allows event listeners. It exists
				only if a cell is in edit mode.</li>
			<li><type scope="::com::sun::star::accessibility">AccessibleContext</type>:
				A child where calling <method>getAccessibleChild</method>
				an object that supports this service is returned for
				the current OLE object in edit mode. It exists
				only if a OLE object is in edit mode.</li>
		</ul>
		<p>The following rules apply to the children order. General it
			represents the paint order. The object in the background came
			first and than all over lying objects. The last painted object
			is also the last child.</p>
		<ul>
			<li>Graphics, embedded objects and shapes appear
				before the other childs if they are painted in the
				background. Their order reflects the z order.</li>
			<li>The current table is painted after the background and so it
				comes after all background objects.</li>
			<li>Graphics, embedded objects and shapes appear
				behind any other children except controls if they are
				painted in the foreground. Their order reflects the z order.</li>
			<li>Controls appear behind the other graphic objects. Their order
				reflects the z order.</li>
			<li>The temporary object for the cell or OLE in edit mode (only
				one can exist in the same time) is the last object.</li>
		</ul>
		<li>The description is ???.</li>
		<li>The name is Spreadsheet Document View with a unique number.</li>
		<li>The role is <const scope="::com::sun::star::accessibility">AccessibleRole::DOCUMENT</const></li>
		<li>There are no relations.</li>
		<li>The following states are supported:
			<ul>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::DEFUNC</const> is always false until the document is
					closed.</li>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::EDITABLE</const> is always true.</li>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::ENABLED</const> is always true.</li>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::MULTI_LINE</const> makes no sense in on a document and
					so it is left out of the list.</li>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::MULTI_SELECTABLE</const> is always false, because a
				document is not selectable. Only the children are
				selectable. So it is left out of the list.</li>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::OPAQUE</const> is always true.</li>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::RESIZEABLE</const> is always false, because you can
					resize the window, but not the document. So it is left out
					of the list.</li>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::SELECTABLE</const> is always false, because a
					document is not selectable. Only the children are
					selectable. So it is left out of the list.</li>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::SELECTED</const> is always false, because a
					document is not selectable. Only the children are
					selectable. So it is left out of the list.</li>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::SHOWING</const>Is true if the Bounding Box lies in
					the Bounding Box of the parent. Otherwise it is false.</li>
				<li><const scope="::com::sun::star::accessibility">AccessibleStateType::VISIBLE</const>Is always true.</li>
			</ul>
		</li>
	</ul>

	 */
	interface ::com::sun::star::accessibility::XAccessibleContext;

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

	/** This interface is for selecting the document's children like
	  	shapes or the whole table.
	 */
	interface ::com::sun::star::accessibility::XAccessibleSelection;

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

//=============================================================================

}; }; }; };

#endif