1/**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23#ifndef com_sun_star_chart2_data_TabularDataProviderArguments_idl
24#define com_sun_star_chart2_data_TabularDataProviderArguments_idl
25
26#include <com/sun/star/chart/ChartDataRowSource.idl>
27
28module com
29{
30module sun
31{
32module star
33{
34module chart2
35{
36module data
37{
38
39/**
40  */
41service TabularDataProviderArguments
42{
43    /** the range address string spanning all data.
44
45        <p>The range address string must be interpretable by the
46        component that implements <type>XDataProvider</type> and gets
47        this property as argument to
48        <member>XDataProvider::detectArguments</member>.</p>
49
50        <p>The representation string is of a form that may be used in the
51        user interface.  Example for OpenOffice Calc: "$Sheet1.$A$1:$D$7",
52        example for OpenOffice Writer: "&lt;Table1.A1:D7&gt;".</p>
53
54        <p>When used as input, this range will be split in columns or
55        rows depending on the property
56        <member>DataRowSource</member>.</p>
57
58        <p>When used as output of
59        <member>XDataProvider::detectArguments</member> this is the
60        range that spans the ranges of all given
61        <type>XDataSequence</type>s.  If the result is ambiguous,
62        i.e., a splitting of this range would not yield the same
63        result, this property should be empty.  The latter is the
64        case, when ranges are overlapping, the lengths of sequences
65        are not equal or even if the order of two sequences is swapped
66        (e.g. data comes from column A, C, B).</p>
67     */
68    [property]   string                                        CellRangeRepresentation;
69
70    /** determines, whether data sequences are created out of columns
71        or rows in a table.
72
73        <p>If this property is not given as argument it is assumed to
74        <member scope="com::sun::star::chart">ChartDataRowSource::COLUMNS</member>,
75        i.e., the default is "take data from columns".</p>
76     */
77    [property]   ::com::sun::star::chart::ChartDataRowSource   DataRowSource;
78
79    /** If data comes from columns, the first row will provide the
80        labels for all sequences, if data comes from rows, the first
81        column will provide the labels for all sequences.
82
83        <p>Even if this property is false, the
84        <type>XLabeledDataSequence</type> may contain a label, but
85        this will not be the first cell of the selection.  It may be a
86        generic string like "Column C".</p>
87
88        <p>If this property is not given as argument it is assumed to
89        be <FALSE/>, i.e., the default is "no labels".</p>
90     */
91    [property]   boolean                                       FirstCellAsLabel;
92
93    /** determines the order of the created labeled sequences
94
95        <p>For example a SequenceMapping of [3,0,2,1] indicates that
96        the sequence from old position '3' should now be the first one.
97        Then comes the sequence from old position '0'. Then that one
98        from old position '2' and then the sequence from old position '1'.</p>
99
100        <p>If the SequenceMapping contains invalid indexes just
101        ignore those single indexes. For example if you only have three
102        labeled sequences and a SequenceMapping [2,5,1,0], you should
103        ignore the '5' and continue to place the sequence from
104        old index '1' to the next new position and so on.</p>
105
106        <p>If the given SequenceMapping does not cover all exsisting
107        labeled sequences just put the remaining sequences in old order
108        behind the others. For example you have 4 sequences and a
109        SequenceMapping [3,1]. The result should be a as if [3,1,0,2]
110        was given.</p>
111     */
112    [property]   sequence< long >                              SequenceMapping;
113
114    /** If <FALSE/> the data provider may create a data sequence
115        containing generated categories that fit the rest of the data,
116        like e.g. "Row 12", "Row 13", etc.
117
118        <p>This property is not relevant for the splitting up of the
119        data.  It just indicates, if the chart wants to use part of
120        the data as categories, so that generic categories can be
121        returned if it doesn't.</p>
122
123        <p>The generic category labeled sequence returned should be
124        the first one in the returned <type>XDataSource</type>. It
125        needs no label. The values should have their role set to
126        "categories".  The generic strings returned should also be
127        localized.</p>
128     */
129    [optional, property] boolean                               HasCategories;
130
131    /** This property is for providing proprietary table indexes for
132        each table appearing in a range given in
133        CellRangeRepresentation.
134
135        @deprecated
136
137        <p>This argument is supported by Spreadsheets in order to be
138        able to export a document into the StarOffice 5.0 binary
139        format.</p>
140
141        <p>Example: If you have the sheets (Sheet1, Sheet2, Sheet3) in
142        your document and a chart uses the range
143        "Sheet2.A1:.A5 Sheet3.A1:.A5 Sheet2.B1:.B5 Sheet1:B1:.B5", your
144        TableNumberList would be "1 2 1 0".  A simple range like
145        "Sheet1.A1:.E4" would have the TableNumberList in "0"</p>.
146     */
147    [optional, property] string                               TableNumberList;
148};
149
150} ; // data
151} ; // chart2
152} ; // com
153} ; // sun
154} ; // star
155
156
157#endif
158