/* -*- 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_inspection_PropertyControlType_idl__
#define __com_sun_star_inspection_PropertyControlType_idl__

module com {  module sun {  module star {  module inspection {

/** describes pre-defined possible control types to be used to display and enter
    property values within an ObjectInspector.

    <p>The type of a control determines its visual appearance, its behavior, and - important
    for property handlers using a control - the expected type when reading and writing the
    control's value.</p>

    @see XPropertyControl
    @see XPropertyControlFactory
    @see XPropertyControl::ValueType

    @since OOo 2.0.3
*/
constants PropertyControlType
{
    /** denotes a control which allows the user to choose from a list of
        possible property values

        <p>Controls of type #ListBox exchange their values as <code>string</code>.</p>

        <p>Additionally, those controls support the XStringListControl interface.</p>
    */
    const short ListBox = 1;

    /** denotes a control which allows the user to choose from a list of
        possible property values, combined with the possibility to enter a new
        property value.

        <p>Controls of type #ComboBox exchange their values as <code>string</code>.</p>

        <p>Additionally, those controls support the XStringListControl interface.</p>
    */
    const short ComboBox = 2;

    /** denotes a control which allows the user to enter property values consisting of a single line of text

        <p>Controls of type #TextField exchange their values as <code>string</code>.</p>
    */
    const short TextField = 3;

    /** denotes a control which allows the user to enter pure text, including line breaks

        <p>Controls of type #MultiLineTextField exchange their values as <code>string</code>.</p>
    */
    const short MultiLineTextField = 4;

    /** denotes a control which allows the user to enter a single character

        <p>Controls of type #CharacterField exchange their values as <code>short</code>,
        being a single UTF-16 character.</p>
    */
    const short CharacterField = 5;

    /** denotes a control which allows the user to enter a list of single-line strings

        <p>Controls of type #StringListField exchange their values as
        <code>sequence&lt; string &gt;</code>.</p>
    */
    const short StringListField = 6;

    /** denotes a control which allows the user to choose from a list of colors.

        <p>Controls of type #ColorListBox usually exchange their values as
        com::sun::star::util::Color.</p>

        <p>Additionally, those controls support the XStringListControl interface. If you use
        this interface to add additional entries to the list box, which have no color associated with it,
        then you can also exchange values as <code>string</code>. That is, if you write a string into
        XPropertyControl::Value, and if this string has previously been added to the list
        using the XStringListControl interface, this string is selected. Vice versa, if the user
        selects one of those non-color strings in the list, then reading XPropertyControl::Value
        will retrieve you this string.</p>
    */
    const short ColorListBox = 7;

    /** denotes a control which allows the user to enter a numerical value

        <p>Controls of type #NumericField exchange their values as <code>double</code>.</p>

        <p>Additionally, those controls support the XNumericControl interface.</p>
    */
    const short NumericField = 8;

    /** denotes a control which allows the user to enter a date value

        <p>Controls of type #DateField exchange their values as com::sun::star::util::Date.</p>
    */
    const short DateField = 9;

    /** denotes a control which allows the user to enter a time value

        <p>Controls of type #TimeField exchange their values as com::sun::star::util::Time.</p>
    */
    const short TimeField = 10;

    /** denotes a control which allows the user to enter a combined date/time value

        <p>Controls of type #DateTimeField exchange their values as com::sun::star::util::DateTime.</p>
    */
    const short DateTimeField = 11;

    /** denotes a control which displays a string in a hyperlink-like appearance

        <p>Controls of type #HyperlinkField exchange their values as <code>string</code>.</p>

        <p>Additionally, those controls support the XHyperlinkControl interface.</p>
    */
    const short HyperlinkField = 12;

    /** denotes a non-standard property control, which is usually provided by an XPropertyHandler
    */
    const short Unknown = 13;
};


}; }; }; };

#endif

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