1*b1cdbd2cSJim Jagielski/**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_ucb_TransientDocumentsContentProvider_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_ucb_TransientDocumentsContentProvider_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_ucb_XContentProvider_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/ucb/XContentProvider.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski//=============================================================================
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module ucb {
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski//=============================================================================
35*b1cdbd2cSJim Jagielski/** The Transient Documents Content Provider (TDCP) implements a
36*b1cdbd2cSJim Jagielski    <type>ContentProvider</type> for the <type>UniversalContentBroker</type>
37*b1cdbd2cSJim Jagielski	(UCB).
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski    <p>It provides access to the hierachical structure of the documents that
40*b1cdbd2cSJim Jagielski    are active in a running OpenOffice.org process. As long as a document was
41*b1cdbd2cSJim Jagielski    not closed, the TDCP can access it. All documents that have been loaded -
42*b1cdbd2cSJim Jagielski    regardless of their persistent document format (sxw, doc, sxc, xls, ...)
43*b1cdbd2cSJim Jagielski    or that have been created  but not yet saved to any storage medium, are
44*b1cdbd2cSJim Jagielski    supported. The TDCP is not able to load any documents itself. This is
45*b1cdbd2cSJim Jagielski    exclusively done by the OpenOffice.org document handling framework. The
46*b1cdbd2cSJim Jagielski    document contents provided by the TDCP represent live data, which may
47*b1cdbd2cSJim Jagielski    differ from any persistent representation of the document, for instance,
48*b1cdbd2cSJim Jagielski    because the user modified the document after loading, but did not yet save
49*b1cdbd2cSJim Jagielski    it.
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski    @see TransientDocumentsRootContent
52*b1cdbd2cSJim Jagielski    @see TransientDocumentsDocumentContent
53*b1cdbd2cSJim Jagielski    @see TransientDocumentsFolderContent
54*b1cdbd2cSJim Jagielski    @see TransientDocumentsStreamContent
55*b1cdbd2cSJim Jagielski
56*b1cdbd2cSJim Jagielski    @since OpenOffice 2.0
57*b1cdbd2cSJim Jagielski*/
58*b1cdbd2cSJim Jagielskiservice TransientDocumentsContentProvider
59*b1cdbd2cSJim Jagielski{
60*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
61*b1cdbd2cSJim Jagielski    /** provides four different types of contents: Stream, Folder, Document and
62*b1cdbd2cSJim Jagielski        Root.
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielski		<p>
65*b1cdbd2cSJim Jagielski
66*b1cdbd2cSJim Jagielski        <b>TDCP Contents</b>
67*b1cdbd2cSJim Jagielski		<ol>
68*b1cdbd2cSJim Jagielski		<li>
69*b1cdbd2cSJim Jagielski        A TDCP Stream (<type>TransientDocumentsStreamContent</type>) is a
70*b1cdbd2cSJim Jagielski        content which represents a data stream of an Office document. It is
71*b1cdbd2cSJim Jagielski        contained in a TDCP Folder or TDCP Document. A TDCP Stream has no
72*b1cdbd2cSJim Jagielski        children.
73*b1cdbd2cSJim Jagielski		</li>
74*b1cdbd2cSJim Jagielski		<li>
75*b1cdbd2cSJim Jagielski        A TDCP Folder (<type>TransientDocumentsFolderContent</type>) is a
76*b1cdbd2cSJim Jagielski        container for other TDCP Folders and TDCP Streams. It may be contained
77*b1cdbd2cSJim Jagielski        in another TDCP Folder or in a TDCP Document.
78*b1cdbd2cSJim Jagielski		</li>
79*b1cdbd2cSJim Jagielski		<li>
80*b1cdbd2cSJim Jagielski        A TDCP Document (<type>TransientDocumentsDocumentContent</type>)
81*b1cdbd2cSJim Jagielski        represents the root folder of a transient document. It is a container
82*b1cdbd2cSJim Jagielski        for other TDCP Folders and TDCP Streams. It is always a child of the
83*b1cdbd2cSJim Jagielski        TDCP Root.
84*b1cdbd2cSJim Jagielski		</li>
85*b1cdbd2cSJim Jagielski        <li>
86*b1cdbd2cSJim Jagielski        There is at most one instance of a TDCP Root
87*b1cdbd2cSJim Jagielski        (<type>TransientDocumentsRootContent</type>) at a time. All other TDCP
88*b1cdbd2cSJim Jagielski        contents are children of this folder. The TDCP Root Folder can contain
89*b1cdbd2cSJim Jagielski        only TDCP Documents. It has the fixed URL "vnd.sun.star.tdoc:/".
90*b1cdbd2cSJim Jagielski        </li>
91*b1cdbd2cSJim Jagielski		</ol>
92*b1cdbd2cSJim Jagielski
93*b1cdbd2cSJim Jagielski        <p><b>URL Scheme for TDCP Contents</b>
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski        <p>Each TDCP content has an identifier corresponding to the following
96*b1cdbd2cSJim Jagielski        scheme:
97*b1cdbd2cSJim Jagielski
98*b1cdbd2cSJim Jagielski        <ul>
99*b1cdbd2cSJim Jagielski        <li>
100*b1cdbd2cSJim Jagielski        tdcp-URL   = "vnd.sun.star.tdoc:" abs-path
101*b1cdbd2cSJim Jagielski        </li>
102*b1cdbd2cSJim Jagielski        <li>
103*b1cdbd2cSJim Jagielski        abs-path   = +( "/" segment )
104*b1cdbd2cSJim Jagielski        </li>
105*b1cdbd2cSJim Jagielski        <li>
106*b1cdbd2cSJim Jagielski        segment    = *( pchar )
107*b1cdbd2cSJim Jagielski        </li>
108*b1cdbd2cSJim Jagielski        <li>
109*b1cdbd2cSJim Jagielski        pchar      = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | ","
110*b1cdbd2cSJim Jagielski        </li>
111*b1cdbd2cSJim Jagielski        <li>
112*b1cdbd2cSJim Jagielski        unreserved = alphanum | mark
113*b1cdbd2cSJim Jagielski        </li>
114*b1cdbd2cSJim Jagielski        <li>
115*b1cdbd2cSJim Jagielski        mark       = "-" | "_" | "." | "!" | "~" | "*" | "'" | "("  | ")"
116*b1cdbd2cSJim Jagielski        </li>
117*b1cdbd2cSJim Jagielski        <li>
118*b1cdbd2cSJim Jagielski        escaped    = "%" hex hex
119*b1cdbd2cSJim Jagielski        </li>
120*b1cdbd2cSJim Jagielski        </ul>
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski        <p>Examples:
123*b1cdbd2cSJim Jagielski
124*b1cdbd2cSJim Jagielski        <ul>
125*b1cdbd2cSJim Jagielski        <li>
126*b1cdbd2cSJim Jagielski        vnd.sun.star.tdoc:/
127*b1cdbd2cSJim Jagielski        ( The TDCP Root  )
128*b1cdbd2cSJim Jagielski        </li>
129*b1cdbd2cSJim Jagielski        <li>
130*b1cdbd2cSJim Jagielski        vnd.sun.star.tdoc:/22
131*b1cdbd2cSJim Jagielski        ( The document with the id 22 )
132*b1cdbd2cSJim Jagielski        </li>
133*b1cdbd2cSJim Jagielski        <li>
134*b1cdbd2cSJim Jagielski        vnd.sun.star.tdoc:/22/
135*b1cdbd2cSJim Jagielski        ( The document with the id 22 )
136*b1cdbd2cSJim Jagielski        </li>
137*b1cdbd2cSJim Jagielski        <li>
138*b1cdbd2cSJim Jagielski        vnd.sun.star.tdoc:/42/folder/subfolder
139*b1cdbd2cSJim Jagielski        ( The folder/stream named subfolder contained in folder named folder,
140*b1cdbd2cSJim Jagielski        which is contained in the document with the id 42 )
141*b1cdbd2cSJim Jagielski        </li>
142*b1cdbd2cSJim Jagielski        </ul>
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski        </p>
145*b1cdbd2cSJim Jagielski     */
146*b1cdbd2cSJim Jagielski	interface com::sun::star::ucb::XContentProvider;
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielski};
149*b1cdbd2cSJim Jagielski
150*b1cdbd2cSJim Jagielski//=============================================================================
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski}; }; }; };
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim Jagielski#endif
155