/* -*- 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_awt_grid_UnoControlGridModel_idl__
#define __com_sun_star_awt_grid_UnoControlGridModel_idl__

#include <com/sun/star/awt/grid/XGridColumnModel.idl>
#include <com/sun/star/awt/grid/XGridDataModel.idl>
#include <com/sun/star/awt/UnoControlModel.idl>
#include <com/sun/star/view/SelectionType.idl>
#include <com/sun/star/awt/FontDescriptor.idl>
#include <com/sun/star/style/VerticalAlignment.idl>
#include <com/sun/star/util/Color.idl>


module com {  module sun {  module star {  module awt { module grid {


/** specifies the standard model of a UnoControlGrid control.

    @since OOo 3.3
 */
published service UnoControlGridModel
{
    /** specifies the standard model of a com::sun::star::awt::UnoControl. */
    service com::sun::star::awt::UnoControlModel;

    /** Specifies whether the grid control should display a special header column.

    <p>The default value is `FALSE`</p>
    */
    [property] boolean ShowRowHeader;

    /** specifies the width of the row header column, if applicable.

        <p>The width is specified in application font units - see com::sun::star::util::MeasureUnit.</p>

        <p>The value given here is ignored if #ShowRowHeader is `FALSE`.</p>
    */
    [property] long RowHeaderWidth;

    /** Specifies whether the grid control should display a title row.

    <p>The default value is `TRUE`</p>
    */
    [property] boolean ShowColumnHeader;

    /** specifies the height of the column header row, if applicable.

        <p>The height is specified in application font units - see com::sun::star::util::MeasureUnit.</p>

        <p>The value given here is ignored if #ShowColumnHeader is `FALSE`.</p>

        <p>If the property is `VOID`, the grid control shall automatically determine a height which conveniently allows,
        according to the used font, to display one line of text.</p>
    */
    [property, maybevoid] long ColumnHeaderHeight;

    /** Specifies the height of rows in the grid control.

        <p>The height is specified in application font units - see com::sun::star::util::MeasureUnit.</p>
    */
    [property, maybevoid] long RowHeight;

    /** Specifies the XGridColumnModel that is providing the column structure.

        <p>You can implement your own instance of XGridColumnModel or use
        the DefaultGridColumnModel.

        <p>The column model is in the ownership of the grid model: When you set a new column model, or dispose
        the grid model, then the (old) column model is disposed, too.</p>

        <p>The default for this property is an empty instance of the DefaultGridColumnModel.</p>
    */
    [property] XGridColumnModel ColumnModel;

    /** Specifies the XGridDataModel that is providing the hierarchical data.

        <p>You can implement your own instance of XGridDataModel or use
        the DefaultGridDataModel.

        <p>The data model is in the ownership of the grid model: When you set a new data model, or dispose
        the grid model, then the (old) data model is disposed, too.</p>

        <p>The default for this property is an empty instance of the DefaultGridDataModel.</p>
    */
    [property] XGridDataModel GridDataModel;

    /** Specifies the vertical scrollbar mode.
        <p>The default value is `FALSE`</p>
    */
    [property] boolean HScroll;

    /** Specifies the horizontal scrollbar mode.
        <p>The default value is `FALSE`</p>
    */
    [property] boolean VScroll;

    /** Specifies that the control can be reached with the TAB key.
     */
    [property] boolean Tabstop;

    /** Specifies the selection mode that is enabled for this grid control.
        <p>The default value is com::sun::star::view::SelectionType::SINGLE</p>
    */
    [property] ::com::sun::star::view::SelectionType SelectionModel;

    /** controls whether or not to paint horizontal and vertical lines between the grid cells.

        @see GridLineColor
    */
    [property] boolean UseGridLines;

    /** specifies the color to be used when drawing lines between cells

        <p>If this property has a value of `VOID`, the grid control renderer will use some default color,
        depending on the control's style settings.</p>

        @see UseGridLines
    */
    [property, maybevoid] ::com::sun::star::util::Color             GridLineColor;

    /** specifies the color to be used when drawing the background of row or column headers

        <p>If this property has a value of `VOID`, the grid control renderer will use some default color,
        depending on the control's style settings.</p>
    */
    [property, maybevoid] ::com::sun::star::util::Color             HeaderBackgroundColor;

    /** specifies the color to be used when drawing the text within row or column headers

        <p>If this property has a value of `VOID`, the grid control renderer will use some default color,
        depending on the control's style settings.</p>
    */
    [property, maybevoid] ::com::sun::star::util::Color             HeaderTextColor;

    /** specifies the color to be used when drawing the background of selected cells, while the control has the focus.

        <p>If this property has a value of `VOID`, the grid control renderer will use some default color,
        depending on the control's style settings.</p>
    */
    [property, maybevoid] ::com::sun::star::util::Color             ActiveSelectionBackgroundColor;

    /** specifies the color to be used when drawing the background of selected cells, while the control does not have
        the focus.

        <p>If this property has a value of `VOID`, the grid control renderer will use some default color,
        depending on the control's style settings.</p>
    */
    [property, maybevoid] ::com::sun::star::util::Color             InactiveSelectionBackgroundColor;

    /** specifies the color to be used when drawing the text of selected cells, while the control has the focus.

        <p>If this property has a value of `VOID`, the grid control renderer will use some default color,
        depending on the control's style settings.</p>
    */
    [property, maybevoid] ::com::sun::star::util::Color             ActiveSelectionTextColor;

    /** specifies the color to be used when drawing the text of selected cells, while the control does not have
        the focus.

        <p>If this property has a value of `VOID`, the grid control renderer will use some default color,
        depending on the control's style settings.</p>
    */
    [property, maybevoid] ::com::sun::star::util::Color             InactiveSelectionTextColor;

    /** specifies the colors to be used as background for data rows.

        <p>If this sequence is non-empty, the data rows will be rendered with alternating background colors: Assuming
        the sequence has <code>n</code> elements, each row will use the background color as specified by its number's
        remainder modulo <code>n</code>.</p>

        <p>If this sequence is empty, all rows will use the same background color as the control as whole.</p>

        <p>If this property has a value of `VOID`, rows will be painted
        in alternating background colors, every second row having a background color derived from the control's
        selection color.</p>
    */
    [property, maybevoid] sequence< ::com::sun::star::util::Color > RowBackgroundColors;

    /** specifies the vertical alignment of the content in the control.
     */
    [property] com::sun::star::style::VerticalAlignment VerticalAlign;

    /** specifies the font attributes of the text in the control.
     */
    [property] com::sun::star::awt::FontDescriptor FontDescriptor;

    /** specifies the color to be used when drawing cell texts

        <p>If this property has a value of `VOID`, the grid control renderer will use some default color,
        depending on the control's style settings.</p>
    */
    [property, maybevoid] ::com::sun::star::util::Color             TextColor;

    /** specifies the color to be used when drawing text lines (underlining and strikethrough)

        <p>If this property has a value of `VOID`, the grid control renderer will use some default color,
        depending on the control's style settings.</p>
     */
    [property, maybevoid] com::sun::star::util::Color               TextLineColor;

    /** specifies the com::sun::star::text::FontEmphasis
        value of the text in the control.
     */
    [property] short FontEmphasisMark;

    /** specifies the com::sun::star::text::FontRelief
        value of the text in the control.
     */
    [property] short FontRelief;

    /** specifies the help text of the control.
     */
    [property] string HelpText;

    /** specifies the help URL of the control.
     */
    [property] string HelpURL;

};


}; }; }; }; };

#endif

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