<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
<!--***********************************************************
 * 
 * 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.
 * 
 ***********************************************************-->


<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
<module-name>svx</module-name>
<component-description>

<author>Andre Fischer</author>
<name>AccessibleOLEShape</name>

<description>Derived from AccessibleShape this component supports the
additional com.sun.star.accessibility.XAccessibleAction interface in
order to supply more detailed information about accessible OLE shapes.  For
more detailed information see the documentation of the base component
AccessibleShape, the supported services, and the link to the general
accessibility documentation.</description>

<reference-docu xlink-href="http://ui.openoffice.org/accessibility"
title="Link to a general description of UNO accessibility"/>

<loader-name>com.sun.star.loader.SharedLibrary</loader-name>
<language>c++</language>
<status value="alpha"/>

<supported-service>com.sun.star.drawing.AccessibleShape</supported-service>
<supported-service>com.sun.star.accessibility.Accessible</supported-service>
<supported-service>com.sun.star.accessibility.AccessibleContext</supported-service>

<type>com.sun.star.accessibility.XAccessible</type>
<type>com.sun.star.accessibility.XAccessibleContext</type>
<type>com.sun.star.accessibility.XAccessibleEventBroadcaster</type>
<type>com.sun.star.accessibility.XAccessibleComponent</type>
<type>com.sun.star.accessibility.XAccessibleExtendedComponent</type>
<type>com.sun.star.accessibility.XAccessibleAction</type>
<type>com.sun.star.lang.XTypeProvider</type>
<type>com.sun.star.lang.XServiceInfo</type>
<type>com.sun.star.lang.XComponent</type>
<type>com.sun.star.document.XEventListener</type>
<type>com.sun.star.lang.XUnoTunnel</type>

</component-description>
</module-description>
