<?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>sc</module-name>
    <component-description>
        <author>Niklas Nebel</author>
        <name>com.sun.star.comp.office.ScHeaderFooterTextCursor</name>
        <description>
	This component provides access to a text cursor in a page header or footer.
</description>
        <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
        <language>c++</language>
        <status value="final"/>
        <supported-service>com.sun.star.text.TextCursor</supported-service>
        <type>com.sun.star.awt.FocusEvent</type>
        <type>com.sun.star.awt.FontDescriptor</type>
        <type>com.sun.star.awt.FontSlant</type>
        <type>com.sun.star.awt.InputEvent</type>
        <type>com.sun.star.awt.KeyEvent</type>
        <type>com.sun.star.awt.MouseEvent</type>
        <type>com.sun.star.awt.PaintEvent</type>
        <type>com.sun.star.awt.Rectangle</type>
        <type>com.sun.star.awt.WindowEvent</type>
        <type>com.sun.star.awt.XFocusListener</type>
        <type>com.sun.star.awt.XKeyListener</type>
        <type>com.sun.star.awt.XMouseListener</type>
        <type>com.sun.star.awt.XMouseMotionListener</type>
        <type>com.sun.star.awt.XPaintListener</type>
        <type>com.sun.star.awt.XWindow</type>
        <type>com.sun.star.awt.XWindowListener</type>
        <type>com.sun.star.beans.Property</type>
        <type>com.sun.star.beans.PropertyChangeEvent</type>
        <type>com.sun.star.beans.PropertyState</type>
        <type>com.sun.star.beans.PropertyValue</type>
        <type>com.sun.star.beans.PropertyVetoException</type>
        <type>com.sun.star.beans.UnknownPropertyException</type>
        <type>com.sun.star.beans.XPropertyChangeListener</type>
        <type>com.sun.star.beans.XPropertySet</type>
        <type>com.sun.star.beans.XPropertySetInfo</type>
        <type>com.sun.star.beans.XPropertyState</type>
        <type>com.sun.star.beans.XVetoableChangeListener</type>
        <type>com.sun.star.container.ContainerEvent</type>
        <type>com.sun.star.container.NoSuchElementException</type>
        <type>com.sun.star.container.XContainer</type>
        <type>com.sun.star.container.XContainerListener</type>
        <type>com.sun.star.container.XElementAccess</type>
        <type>com.sun.star.container.XEnumeration</type>
        <type>com.sun.star.container.XEnumerationAccess</type>
        <type>com.sun.star.container.XIndexAccess</type>
        <type>com.sun.star.container.XIndexReplace</type>
        <type>com.sun.star.container.XNameAccess</type>
        <type>com.sun.star.frame.FrameAction</type>
        <type>com.sun.star.frame.FrameActionEvent</type>
        <type>com.sun.star.frame.XController</type>
        <type>com.sun.star.frame.XFrame</type>
        <type>com.sun.star.frame.XFrameActionListener</type>
        <type>com.sun.star.frame.XFrames</type>
        <type>com.sun.star.frame.XFramesSupplier</type>
        <type>com.sun.star.frame.XModel</type>
        <type>com.sun.star.lang.EventObject</type>
        <type>com.sun.star.lang.IllegalArgumentException</type>
        <type>com.sun.star.lang.IndexOutOfBoundsException</type>
        <type>com.sun.star.lang.Locale</type>
        <type>com.sun.star.lang.WrappedTargetException</type>
        <type>com.sun.star.lang.XComponent</type>
        <type>com.sun.star.lang.XEventListener</type>
        <type>com.sun.star.lang.XMultiServiceFactory</type>
        <type>com.sun.star.lang.XServiceInfo</type>
        <type>com.sun.star.lang.XSingleServiceFactory</type>
        <type>com.sun.star.lang.XTypeProvider</type>
        <type>com.sun.star.lang.XUnoTunnel</type>
        <type>com.sun.star.registry.InvalidRegistryException</type>
        <type>com.sun.star.registry.InvalidValueException</type>
        <type>com.sun.star.registry.RegistryKeyType</type>
        <type>com.sun.star.registry.RegistryValueType</type>
        <type>com.sun.star.registry.XRegistryKey</type>
        <type>com.sun.star.sheet.XHeaderFooterContent</type>
        <type>com.sun.star.style.LineSpacing</type>
        <type>com.sun.star.style.TabAlign</type>
        <type>com.sun.star.style.TabStop</type>
        <type>com.sun.star.text.XSimpleText</type>
        <type>com.sun.star.text.XText</type>
        <type>com.sun.star.text.XTextContent</type>
        <type>com.sun.star.text.XTextCursor</type>
        <type>com.sun.star.text.XTextField</type>
        <type>com.sun.star.text.XTextFieldsSupplier</type>
        <type>com.sun.star.text.XTextRange</type>
        <type>com.sun.star.text.XTextRangeMover</type>
        <type>com.sun.star.uno.Any</type>
        <type>com.sun.star.uno.Exception</type>
        <type>com.sun.star.uno.Reference</type>
        <type>com.sun.star.uno.RuntimeException</type>
        <type>com.sun.star.uno.Sequence</type>
        <type>com.sun.star.uno.Type</type>
        <type>com.sun.star.uno.TypeClass</type>
        <type>com.sun.star.uno.XAdapter</type>
        <type>com.sun.star.uno.XAggregation</type>
        <type>com.sun.star.uno.XInterface</type>
        <type>com.sun.star.uno.XReference</type>
        <type>com.sun.star.uno.XWeak</type>
        <type>com.sun.star.uno.genfunc</type>
        <type>com.sun.star.util.URL</type>
    </component-description>
    <project-build-dependency>cppu</project-build-dependency>
    <project-build-dependency>cppuhelper</project-build-dependency>
    <project-build-dependency>osl</project-build-dependency>
    <project-build-dependency>rsc</project-build-dependency>
    <project-build-dependency>rtl</project-build-dependency>
    <project-build-dependency>sal</project-build-dependency>
    <project-build-dependency>sfx2</project-build-dependency>
    <project-build-dependency>sot</project-build-dependency>
    <project-build-dependency>stl</project-build-dependency>
    <project-build-dependency>svtools</project-build-dependency>
    <project-build-dependency>svx</project-build-dependency>
    <project-build-dependency>tools</project-build-dependency>
    <project-build-dependency>typelib</project-build-dependency>
    <project-build-dependency>uno</project-build-dependency>
    <project-build-dependency>unotools</project-build-dependency>
    <project-build-dependency>vcl</project-build-dependency>
    <project-build-dependency>vos</project-build-dependency>
</module-description>
