xref: /AOO41X/main/offapi/com/sun/star/ucb/PackageFolderContent.idl (revision d1766043198e81d0bcfc626e12893e7b4d7e31ca)
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_ucb_PackageFolderContent_idl__
24#define __com_sun_star_ucb_PackageFolderContent_idl__
25
26#ifndef __com_sun_star_lang_XComponent_idl__
27#include <com/sun/star/lang/XComponent.idl>
28#endif
29
30#ifndef __com_sun_star_ucb_XContent_idl__
31#include <com/sun/star/ucb/XContent.idl>
32#endif
33
34#ifndef __com_sun_star_ucb_XCommandProcessor_idl__
35#include <com/sun/star/ucb/XCommandProcessor.idl>
36#endif
37
38#ifndef __com_sun_star_ucb_XCommandProcessor2_idl__
39#include <com/sun/star/ucb/XCommandProcessor2.idl>
40#endif
41
42#ifndef __com_sun_star_beans_XPropertiesChangeNotifier_idl__
43#include <com/sun/star/beans/XPropertiesChangeNotifier.idl>
44#endif
45
46#ifndef __com_sun_star_beans_XPropertyContainer_idl__
47#include <com/sun/star/beans/XPropertyContainer.idl>
48#endif
49
50#ifndef __com_sun_star_beans_XPropertySetInfoChangeNotifier_idl__
51#include <com/sun/star/beans/XPropertySetInfoChangeNotifier.idl>
52#endif
53
54#ifndef __com_sun_star_ucb_XCommandInfoChangeNotifier_idl__
55#include <com/sun/star/ucb/XCommandInfoChangeNotifier.idl>
56#endif
57
58#ifndef __com_sun_star_container_XChild_idl__
59#include <com/sun/star/container/XChild.idl>
60#endif
61
62#ifndef __com_sun_star_ucb_XContentCreator_idl__
63#include <com/sun/star/ucb/XContentCreator.idl>
64#endif
65
66//=============================================================================
67
68module com { module sun { module star { module ucb {
69
70//=============================================================================
71/** A PCP Folder is a container for other PCP Folders and PCP Streams.
72
73    @see com::sun::star::ucb::PackageContentProvider
74    @see com::sun::star::ucb::PackageStreamContent
75*/
76published service PackageFolderContent
77{
78    //-------------------------------------------------------------------------
79    /** This interface is implemented according to the specification of
80        service <type>Content</type>.
81     */
82    interface com::sun::star::lang::XComponent;
83
84    //-------------------------------------------------------------------------
85    /** This interface is implemented according to the specification of
86        service <type>Content</type>.
87     */
88    interface com::sun::star::ucb::XContent;
89
90    //-------------------------------------------------------------------------
91    /** This interface is implemented according to the specification of
92        service <type>Content</type>.
93
94        <p>
95
96        <b>Supported Commands</b>
97        <ul>
98        <li>
99        getCommandInfo
100        </li>
101        <li>
102        getPropertySetInfo
103        </li>
104        <li>
105        getPropertyValues
106        </li>
107        <li>
108        setPropertyValues
109        </li>
110        <li>
111        insert ( makes a newly created folder persistent )
112        </li>
113        <li>
114        delete
115        </li>
116        <li>
117        open
118        </li>
119        <li>
120        transfer ( only transfers from PCP Folders/PCP Streams to other
121        PCP folders. It does not handle contents with a URL scheme other
122        then the PCP-URL-scheme. )
123        </li>
124        <li>
125        flush ( a command introduced by the PCP Folder. It takes a
126        void-argument and returns void. This command is used to write unsaved
127        changes to the underlying package file. Note that the current
128        implementation of PCP contents never flushes automatically! Operations
129        which require a flush to get persistent, are:
130        "setPropertyValues( < any_non_read_only_property > ) ", "delete",
131        "insert" )
132        </li>
133        </ul>
134
135        <b>Supported Properties</b>
136        <ul>
137        <li>
138        string ContentType ( read-only, always "application/vnd.sun.star.pkg-folder" )
139        </li>
140        <li>
141        boolean IsDocument ( read-only, always false )
142        </li>
143        <li>
144        boolean IsFolder ( read-only, always true )
145        </li>
146        <li>
147        string MediaType
148        </li>
149        <li>
150        string Title
151        </li>
152        </ul>
153
154        </p>
155     */
156    interface com::sun::star::ucb::XCommandProcessor;
157
158    //-------------------------------------------------------------------------
159    /** is an enhanced version of <type>XCommandProcessor</type> that has an
160        additional method for releasing command identifiers obtained via
161        <member>XCommandProcessor::createCommandIdentifier</member> to avoid
162        resource leaks. For a detailed description of the problem refer to
163        <member>XCommandProcessor2::releaseCommandIdentifier</member>.
164
165        <p>Where many existing <type>Content</type> implementations do not
166        (yet), every new implementation should support this interface.
167     */
168    [optional] interface com::sun::star::ucb::XCommandProcessor2;
169
170    //-------------------------------------------------------------------------
171    /** This interface is implemented according to the specification of
172        service <type>Content</type>.
173     */
174    interface com::sun::star::beans::XPropertiesChangeNotifier;
175
176    //-------------------------------------------------------------------------
177    /** This interface is implemented according to the specification of
178        service <type>Content</type>.
179     */
180    interface com::sun::star::beans::XPropertyContainer;
181
182    //-------------------------------------------------------------------------
183    /** This interface is implemented according to the specification of
184        service <type>Content</type>.
185     */
186    interface com::sun::star::beans::XPropertySetInfoChangeNotifier;
187
188    //-------------------------------------------------------------------------
189    /** This interface is implemented according to the specification of
190        service <type>Content</type>.
191     */
192    interface com::sun::star::ucb::XCommandInfoChangeNotifier;
193
194    //-------------------------------------------------------------------------
195    /** This interface is implemented according to the specification of
196        service <type>Content</type>.
197     */
198    interface com::sun::star::container::XChild;
199
200    //-------------------------------------------------------------------------
201    /** This interface is implemented according to the specification of
202        service <type>Content</type>.
203
204        <p>
205
206        A PCP Folder can create other PCP Folders and PCP Streams. To create
207        a new child of a PCP Folder:
208
209        <ol>
210        <li>
211        Let the parent folder create a new content by calling
212        <member>XContentCreator::createNewContent</member> on it. The content
213        type to use for new folders is "application/vnd.sun.star.pkg-folder".
214        To create a new PCP Stream, use the type
215        "application/vnd.sun.star.pkg-stream".
216        </li>
217        <li>
218        Set a title at the new folder / stream. ( Let the new child execute
219        the command "setPropertyValues", which sets at least the property
220        "Title" to a non-empty value ).
221        </li>
222        <li>
223        Let the new child ( not the parent! ) execute the command "insert".
224        This will commit the creation process. For streams, you need to supply
225        the implementation of an
226        <type scope="com::sun::star::io">XInputStream</type> with the command's
227        parameters, that provides access to the stream data.
228        </li>
229        </ol>
230
231        </p>
232
233        <p>
234        Another, more convenient way for creating streams is simply to assemble
235        the URL for the new content ( last part of the path will become the
236        title of the new stream ) and to obtain a Content object for that URL
237        from the UCB. Then let the content execute the command "insert". The
238        command will fail, if you set the command's parameter
239        <member>InsertCommandArgument::ReplaceExisting"</member>
240        to false and there is already a stream with the title given by the
241        content's URL.
242
243        </p>
244     */
245    interface com::sun::star::ucb::XContentCreator;
246};
247
248//=============================================================================
249
250}; }; }; };
251
252#endif
253