<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module-description SYSTEM "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>
  <module-name>pcr</module-name>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>org.openoffice.comp.form.ui.OTabOrderDialog</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="non-published"/>
    <supported-service>com.sun.star.form.ui.TabOrderDialog</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>org.openoffice.comp.form.ControlFontDialog</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="non-published"/>
    <supported-service>com.sun.star.form.ui.TabOrderDialog</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>com.sun.star.comp.extensions.FormComponentPropertyHandler</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="non-published"/>
    <supported-service>com.sun.star.form.inspection.FormComponentPropertyHandler</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>com.sun.star.comp.extensions.EFormsPropertyHandler</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.form.inspection.XMLFormsPropertyHandler</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>com.sun.star.comp.extensions.EditPropertyHandler</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.form.inspection.EditPropertyHandler</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>org.openoffice.comp.extensions.ObjectInspector</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.inspection.ObjectInspector</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>org.openoffice.comp.extensions.ObjectInspectorModel</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.inspection.ObjectInspectorModel</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>org.openoffice.comp.extensions.FormController</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.form.PropertyBrowserController</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>com.sun.star.comp.extensions.GenericPropertyHandler</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.inspection.GenericPropertyHandler</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>com.sun.star.comp.extensions.EventHandler</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.form.inspection.EventHandler</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>com.sun.star.comp.extensions.XSDValidationPropertyHandler</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.form.inspection.XSDValidationPropertyHandler</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>com.sun.star.comp.extensions.CellBindingPropertyHandler</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.form.inspection.CellBindingPropertyHandler</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>com.sun.star.comp.extensions.ButtonNavigationHandler</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.form.inspection.ButtonNavigationHandler</supported-service>
  </component-description>

  <component-description>
    <author>Frank Sch&ouml;nheit</author>
    <name>com.sun.star.comp.extensions.DefaultFormComponentInspectorModel</name>
    <description></description>
    <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
    <language>c++</language>
    <status value="beta"/>
    <supported-service>com.sun.star.form.inspection.DefaultFormComponentInspectorModel</supported-service>
  </component-description>

</module-description>
