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_FileContent_idl__
24#define __com_sun_star_ucb_FileContent_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_ucb_XContentCreator_idl__
43#include <com/sun/star/ucb/XContentCreator.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//=============================================================================
67
68module com { module sun { module star { module ucb {
69
70//=============================================================================
71/** A File Content represents either a directory or a file in the local file
72	system.
73
74	<p>Whether a content represents a folder or a file can be determined by
75	inspecting its property <b>IsFolder</b> or <b>IsDocument</b>.
76
77	@see com::sun::star::ucb::FileContentProvider
78*/
79published service FileContent
80{
81	//-------------------------------------------------------------------------
82	/** This interface is implemented according to the specification of
83		service <type>Content</type>.
84	 */
85	interface com::sun::star::lang::XComponent;
86
87	//-------------------------------------------------------------------------
88	/** This interface is implemented according to the specification of
89		service <type>Content</type>.
90	 */
91	interface com::sun::star::ucb::XContent;
92
93	//-------------------------------------------------------------------------
94	/** This interface is implemented according to the specification of
95		service <type>Content</type>.
96
97		<p>An object representing a directory in the file system is able
98		to create a new object, which in turn can become the representation
99		of a physical file/directory being contained in the initial directory.
100		The precise way is the following:
101
102		<p>
103
104		<ol>
105		<li>
106		Let the parent folder create a new content by calling
107		<member>XContentCreator::createNewContent</member> on it. The content
108		type to use for new directories is
109		"application/vnd.sun.staroffice.fsys-folder". To create a new file
110		use the type "application/vnd.sun.staroffice.fsys-file".
111		As return value you get a new file content object.
112		</li>
113		<li>
114		Set a title at the new object by letting it execute
115		the command "setPropertyValues", which sets at least the property
116		"Title" to a non-empty value ).
117		</li>
118		<li>
119		Let the new object ( not the parent! ) execute the command "insert".
120		This will create the corresponding physical file or directory.
121		For files, you need to supply the implementation of
122		an <type scope="com::sun::star::io">XInputStream</type> with the
123		command's parameters, that provides access to the stream data.
124		</li>
125		</ol>
126
127		</p>
128	 */
129	interface com::sun::star::ucb::XContentCreator;
130
131	//-------------------------------------------------------------------------
132	/** This interface is implemented according to the specification of
133		service <type>Content</type>.
134
135		<p>
136
137		<b>Supported Commands</b>
138
139		<ul>
140		<li>
141		getCommandInfo
142		</li>
143		<li>
144		getPropertySetInfo
145		</li>
146		<li>
147		getPropertyValues
148		</li>
149		<li>
150		setPropertyValues
151		</li>
152		<li>
153		insert ( makes a newly created document persistent )
154		</li>
155		<li>
156		delete
157		</li>
158		<li>
159		open
160		</li>
161		<li>
162		transfer
163		</li>
164		</ul>
165
166		<b>Supported Properties</b>
167		<ul>
168		<li>
169		string ContentType ( read-only, either
170		"application/vnd.sun.staroffice.fsys-folder" or
171		"application/vnd.sun.staroffice.fsys-file" )
172		</li>
173		<li>
174		boolean IsDocument ( read-only, always <true/> for files, always
175		<false/> for directories )
176		</li>
177		<li>
178		boolean IsFolder ( read-only ), always <false/> for files, always
179		<true/> for directories )
180		</li>
181		<li>
182		<type scope="com::sun::star::util">DateTime</type> DateModified ( read-only )
183		</li>
184		<li>
185		boolean IsReadOnly ( read-only attribute )
186		</li>
187		<li>
188		hyper Size ( file size )
189		</li>
190		<li>
191		string Title ( file name )
192		</li>
193		<li>
194		boolean	IsVolume ( read-only )
195		</li>
196		<li>
197		boolean IsRemoveable ( read-only )
198		</li>
199		<li>
200		boolean IsRemote ( read-only )
201		</li>
202		<li>
203		boolean IsCompactDisc ( read-only )
204		</li>
205		<li>
206		boolean IsFloppy ( read-only )
207		</li>
208		<li>
209		boolean IsHidden ( read-only )
210		</li>
211		</ul>
212
213		</p>
214	 */
215	interface com::sun::star::ucb::XCommandProcessor;
216
217    //-------------------------------------------------------------------------
218    /** is an enhanced version of <type>XCommandProcessor</type> that has an
219        additional method for releasing command identifiers obtained via
220        <member>XCommandProcessor::createCommandIdentifier</member> to avoid
221        resource leaks. For a detailed description of the problem refer to
222        <member>XCommandProcessor2::releaseCommandIdentifier</member>.
223
224        <p>Where many existing <type>Content</type> implementations do not
225        (yet), every new implementation should support this interface.
226     */
227    [optional] interface com::sun::star::ucb::XCommandProcessor2;
228
229	//-------------------------------------------------------------------------
230	/** This interface is implemented according to the specification of
231		service <type>Content</type>.
232	 */
233	interface com::sun::star::beans::XPropertiesChangeNotifier;
234
235	//-------------------------------------------------------------------------
236	/** This interface is implemented according to the specification of
237		service <type>Content</type>.
238	 */
239	interface com::sun::star::beans::XPropertyContainer;
240
241	//-------------------------------------------------------------------------
242	/** This interface is implemented according to the specification of
243		service <type>Content</type>.
244	 */
245	interface com::sun::star::beans::XPropertySetInfoChangeNotifier;
246
247	//-------------------------------------------------------------------------
248	/** This interface is implemented according to the specification of
249		service <type>Content</type>.
250	 */
251	interface com::sun::star::ucb::XCommandInfoChangeNotifier;
252
253	//-------------------------------------------------------------------------
254	/** This interface is implemented according to the specification of
255		service <type>Content</type>.
256	 */
257	interface com::sun::star::container::XChild;
258};
259
260//=============================================================================
261
262}; }; }; };
263
264#endif
265