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