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