/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * Copyright 2000, 2010 Oracle and/or its affiliates.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * This file is part of OpenOffice.org.
 *
 * OpenOffice.org is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3
 * only, as published by the Free Software Foundation.
 *
 * OpenOffice.org is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License version 3 for more details
 * (a copy is included in the LICENSE file that accompanied this code).
 *
 * You should have received a copy of the GNU Lesser General Public License
 * version 3 along with OpenOffice.org.  If not, see
 * <http://www.openoffice.org/license.html>
 * for a copy of the LGPLv3 License.
 *
 ************************************************************************/

#ifndef __com_sun_star_sheet_SheetCellRange_idl__
#define __com_sun_star_sheet_SheetCellRange_idl__


#include <com/sun/star/table/CellRange.idl>
#include <com/sun/star/style/CharacterProperties.idl>
#include <com/sun/star/style/CharacterPropertiesAsian.idl>
#include <com/sun/star/style/CharacterPropertiesComplex.idl>
#include <com/sun/star/style/ParagraphProperties.idl>
#include <com/sun/star/sheet/SheetRangesQuery.idl>


#include <com/sun/star/util/XReplaceable.idl>
#include <com/sun/star/util/XMergeable.idl>
#include <com/sun/star/util/XIndent.idl>
#include <com/sun/star/table/XColumnRowRange.idl>
#include <com/sun/star/table/XAutoFormattable.idl>
#include <com/sun/star/sheet/XSheetCellRange.idl>
#include <com/sun/star/sheet/XCellRangeData.idl>
#include <com/sun/star/sheet/XCellRangeFormula.idl>
#include <com/sun/star/sheet/XCellRangeAddressable.idl>
#include <com/sun/star/sheet/XSheetOperation.idl>
#include <com/sun/star/sheet/XCellSeries.idl>
#include <com/sun/star/sheet/XArrayFormulaRange.idl>
#include <com/sun/star/sheet/XMultipleOperation.idl>
#include <com/sun/star/util/XSortable.idl>
#include <com/sun/star/util/XImportable.idl>
#include <com/sun/star/sheet/XSubTotalCalculatable.idl>
#include <com/sun/star/sheet/XSheetFilterableEx.idl>
#include <com/sun/star/sheet/XCellFormatRangesSupplier.idl>
#include <com/sun/star/sheet/XUniqueCellFormatRangesSupplier.idl>
#include <com/sun/star/chart/XChartDataArray.idl>


#include <com/sun/star/awt/Point.idl>
#include <com/sun/star/awt/Size.idl>
#include <com/sun/star/sheet/XSheetConditionalEntries.idl>
#include <com/sun/star/beans/XPropertySet.idl>
#include <com/sun/star/beans/XTolerantMultiPropertySet.idl>
#include <com/sun/star/util/XModifyBroadcaster.idl>

//=============================================================================

module com {  module sun {  module star {  module sheet {

//=============================================================================

/** represents a rectangular range of cells in a spreadsheet document.

    <p>This service is an extension of the CellRange service for use
    in spreadsheet documents.</p>
 */
published service SheetCellRange
{
    //-------------------------------------------------------------------------

    /** provides basic handling of cell ranges and contributes common cell
        formatting properties.
     */
    service com::sun::star::table::CellRange;

    //-------------------------------------------------------------------------

    /** contributes properties for character formatting of Western text.
     */
    service com::sun::star::style::CharacterProperties;

    //-------------------------------------------------------------------------

    /** contributes properties for character formatting of Asian text.
     */
    service com::sun::star::style::CharacterPropertiesAsian;

    //-------------------------------------------------------------------------

    /** contributes properties for character formatting of Complex text.
     */
    service com::sun::star::style::CharacterPropertiesComplex;

    //-------------------------------------------------------------------------

    /** contributes properties for paragraph formatting.
     */
    service com::sun::star::style::ParagraphProperties;

    //-------------------------------------------------------------------------

    /** provides interfaces to find cells with specific properties.
     */
    service com::sun::star::sheet::SheetRangesQuery;

    //=========================================================================

    /** provides "Find & Replace" functionality.

        <p>The property
        <member scope="com::sun::star::util">SearchDescriptor::SearchWords</member>
        has a different meaning in spreadsheets: If set to <TRUE/>, the
        spreadsheet searches for cells containing the search text only.</p>
     */
    interface com::sun::star::util::XReplaceable;

    //-------------------------------------------------------------------------

    /** provides merging and unmerging the cells of this cell range.
     */
    interface com::sun::star::util::XMergeable;

    //-------------------------------------------------------------------------

    /** provides modifying the cell indentation.
     */
    interface com::sun::star::util::XIndent;

    //-------------------------------------------------------------------------

    /** provides access to the collections of columns and rows.
     */
    interface com::sun::star::table::XColumnRowRange;

    //-------------------------------------------------------------------------

    /** provides applying an AutoFormat to the cell range.
     */
    interface com::sun::star::table::XAutoFormattable;

    //-------------------------------------------------------------------------

    /** provides access to the spreadsheet that contains this cell range.
     */
    interface com::sun::star::sheet::XSheetCellRange;

    //-------------------------------------------------------------------------

    /** provides simultaneous access to the contents of all cells.
     */
    interface com::sun::star::sheet::XCellRangeData;

    //-------------------------------------------------------------------------

    /** provides simultaneous access to the formula contents of all cells.

        @since OOo 1.1.2
     */
    [optional] interface com::sun::star::sheet::XCellRangeFormula;

    //-------------------------------------------------------------------------

    /** provides access to the cell range address of this range.
     */
    interface com::sun::star::sheet::XCellRangeAddressable;

    //-------------------------------------------------------------------------

    /** provides computation of a value based on the contents of all
        cells of this range and to clear specific cells.
     */
    interface com::sun::star::sheet::XSheetOperation;

    //-------------------------------------------------------------------------

    /** provides filling out the cell range automatically with values based
        on a start value, step count and fill mode.
     */
    interface com::sun::star::sheet::XCellSeries;

    //-------------------------------------------------------------------------

    /** provides handling of array formulas.
     */
    interface com::sun::star::sheet::XArrayFormulaRange;

    //-------------------------------------------------------------------------

    /** provides access to the Multiple Operations feature.
     */
    interface com::sun::star::sheet::XMultipleOperation;

    //-------------------------------------------------------------------------

    /** provides sorting functionality.
     */
    interface com::sun::star::util::XSortable;

    //-------------------------------------------------------------------------

    /** provides functionality to import data from external data sources.

        @see com::sun::star::sheet::DatabaseImportDescriptor

     */
    interface com::sun::star::util::XImportable;

    //-------------------------------------------------------------------------

    /** provides calculating SubTotal values in this range.
     */
    interface com::sun::star::sheet::XSubTotalCalculatable;

    //-------------------------------------------------------------------------

    /** provides filtering the contents of this range.
     */
    interface com::sun::star::sheet::XSheetFilterableEx;

    //-------------------------------------------------------------------------

    /** provide access to a collection of equal-formatted cell ranges.
     */
    interface com::sun::star::sheet::XCellFormatRangesSupplier;

    //-------------------------------------------------------------------------

    /** provide access to a collection of equal-formatted cell ranges.
     */
    interface com::sun::star::sheet::XUniqueCellFormatRangesSupplier;

    //-------------------------------------------------------------------------

    /** provides modifying the source data cells of a chart and makes
        it possible to learn about changes in the cell values.
     */
    interface com::sun::star::chart::XChartDataArray;

    //-------------------------------------------------------------------------

    [optional] interface com::sun::star::beans::XTolerantMultiPropertySet;

    //-------------------------------------------------------------------------

    /**

    @since OOo 2.0

    */
    [optional] interface com::sun::star::util::XModifyBroadcaster;

    //=========================================================================

    /** contains the position of the top left cell of this range in
        the sheet (in 1/100 mm).

        <p>This property contains the absolute position in the whole
        sheet, not the position in the visible area.</p>
     */
    [readonly, property] com::sun::star::awt::Point Position;

    //-------------------------------------------------------------------------

    /** contains the size of this range (in 1/100 mm).
     */
    [readonly, property] com::sun::star::awt::Size Size;

    //-------------------------------------------------------------------------

    /** contains the conditional formatting settings for this cell.

        <p>After a conditional format has been changed it has to be
        reinserted into the property set.</p>

        @see com::sun::star::sheet::TableConditionalFormat
     */
    [property] com::sun::star::sheet::XSheetConditionalEntries
        ConditionalFormat;

    //-------------------------------------------------------------------------

    /** contains the conditional formatting settings for this cell,
        using localized formulas.

        <p>After a conditional format has been changed it has to be
        reinserted into the property set.</p>

        @see com::sun::star::sheet::TableConditionalFormat
     */
    [optional, property] com::sun::star::sheet::XSheetConditionalEntries
        ConditionalFormatLocal;

    //-------------------------------------------------------------------------

    /** contains the data validation settings for this cell.

        <p>After the data validation settings have been changed the
        validation has to be reinserted into the property set.</p>

        @see com::sun::star::sheet::TableValidation
     */
    [property] com::sun::star::beans::XPropertySet Validation;

    //-------------------------------------------------------------------------

    /** contains the data validation settings for this cell,
        using localized formulas.

        <p>After the data validation settings have been changed the
        validation has to be reinserted into the property set.</p>

        @see com::sun::star::sheet::TableValidation
     */
    [optional, property] com::sun::star::beans::XPropertySet ValidationLocal;

    //-------------------------------------------------------------------------

    /** Returns the absolute address of the range as string, e.g. "$Sheet1.$B$2:$D$5".
     */
    [optional, readonly, property] string AbsoluteName;
};

//=============================================================================

}; }; }; };

#endif

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