xref: /trunk/main/offapi/com/sun/star/ucb/Content.idl (revision cdf0e10c)
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
28#ifndef __com_sun_star_ucb_Content_idl__
29#define __com_sun_star_ucb_Content_idl__
30
31#ifndef __com_sun_star_ucb_XContent_idl__
32#include <com/sun/star/ucb/XContent.idl>
33#endif
34
35#ifndef __com_sun_star_ucb_XContent_idl__
36#include <com/sun/star/ucb/XContent.idl>
37#endif
38
39#ifndef __com_sun_star_lang_XComponent_idl__
40#include <com/sun/star/lang/XComponent.idl>
41#endif
42
43#ifndef __com_sun_star_ucb_XCommandProcessor_idl__
44#include <com/sun/star/ucb/XCommandProcessor.idl>
45#endif
46
47#ifndef __com_sun_star_ucb_XCommandProcessor2_idl__
48#include <com/sun/star/ucb/XCommandProcessor2.idl>
49#endif
50
51#ifndef __com_sun_star_ucb_XCommandInfoChangeNotifier_idl__
52#include <com/sun/star/ucb/XCommandInfoChangeNotifier.idl>
53#endif
54
55#ifndef __com_sun_star_beans_XPropertyContainer_idl__
56#include <com/sun/star/beans/XPropertyContainer.idl>
57#endif
58
59#ifndef __com_sun_star_beans_XPropertySetInfoChangeNotifier_idl__
60#include <com/sun/star/beans/XPropertySetInfoChangeNotifier.idl>
61#endif
62
63#ifndef __com_sun_star_beans_XPropertiesChangeNotifier_idl__
64#include <com/sun/star/beans/XPropertiesChangeNotifier.idl>
65#endif
66
67#ifndef __com_sun_star_ucb_XContentCreator_idl__
68#include <com/sun/star/ucb/XContentCreator.idl>
69#endif
70
71#ifndef __com_sun_star_container_XChild_idl__
72#include <com/sun/star/container/XChild.idl>
73#endif
74
75//=============================================================================
76
77module com { module sun { module star { module ucb {
78
79//=============================================================================
80/** A <type>Content</type> is a service that provides access to data of a
81    content provided by an implementation of the service
82    <type>ContentProvider</type>.
83*/
84published service Content
85{
86    //-------------------------------------------------------------------------
87    /** provides access to the identitity and the type of the content and
88        allows the registration of listeners for <type>ContentEvent</type>s.
89
90        <p>This interface is required.
91     */
92    interface com::sun::star::ucb::XContent;
93
94    //-------------------------------------------------------------------------
95    /** must be implemented to make it possible to resolve cyclic object
96        references.
97
98        <p>Those references i.e. may occure if there are listeners
99        registered at the content ( the content holds the listeners ) and
100        the implementation of the listener interface holds a reference on
101        the content. If the content shall be released,
102        <member scope="com::sun::star::lang">XComponent::dispose</member> must
103        be called at the content. The implementation of this method must call
104        <member scope="com::sun::star::lang">XEventListener::disposing</member>
105        on the registered listeners and release the appropriate object
106        references. At the other hand, the implementation of
107        XEventListener::disposing must release its appropriate references.
108
109        <p>This interface is required.
110     */
111    interface com::sun::star::lang::XComponent;
112
113    //-------------------------------------------------------------------------
114    /** enables the caller to let the content execute commands.
115
116        <p>It is strongly recommended that any implementation supports the
117        improved <type>XCommandProcessor2</type> interface.</p>
118
119        <p>Typical commands are "open", "delete", "getPropertyValues" and
120        "setPropertyValues". Each content must support a set of standard
121        commands and properties. Also there is a set of predefined optionally
122        commands and properties. A content may define additional commands and
123        properties. </p>
124
125        <p>This interface is required. </p>
126
127        <pre>
128        =======================================================================
129        Commands:
130        =======================================================================
131
132        [return type]
133            [command name]
134                [parameter type and name]
135
136        -----------------------------------------------------------------------
137        Mandatory commands:
138        -----------------------------------------------------------------------
139
140        // This command obtains an interface which allows to query
141        // information on commands supported by a content.
142        <type>XCommandInfo</type>
143            getCommandInfo
144                void
145
146        // This command obtains an interface which allows to query
147        // information on properties supported by a content.
148        <type scope="com::sun::star::beans">XPropertySetInfo</type>
149            getPropertySetInfo
150                void
151
152        // This command obtains property values from the content.
153        // Note: The execution will not be aborted, if there are properties
154        //       requested, that are unknown to the content! The returned
155        //       row object must contain a NULL value in the corresponding
156        //       column instead.
157        <type scope="com::sun::star::sdbc">XRow</type>
158            getPropertyValues
159                sequence&lt; <type scope="com::sun::star::beans">Property</type> &gt; aProps
160
161        // This command sets property values of the content.
162        // Note that setPropertyValues does not throw an exception in the case
163        // that one or more of the requested property values cannot be set! The
164        // implementation should set as much property values as possible. This
165        // command returns a sequence< any > which has exactly the same number
166        // of elements like the number of properties to set. Every sequence
167        // element contains the status for a property. The first sequence
168        // elements corresponds to the first element in the sequence of
169        // <type scope="com::sun::star::beans">PropertyValue</type> passed as
170        // command argument and so on. The exceptions will never be passed to
171        // an Interaction Handler.
172        //
173        // An any containing:
174        //
175        // - No value indicates, that the property value was set successfully.
176        // - <type scope="com::sun::star::beans">UnknownPropertyException</type>
177        //   indicates, that the property is not known to the content
178        //   implementation.
179        // - <type scope="com::sun::star::beans">IllegalTypeException</type>
180        //   indicates, that the data type of the property value is not
181        //   acceptable.
182        // - <type scope="com::sun::star::lang">IllegalAccessException</type>
183        //   indicates, that the property is constant
184        //   (<member scope="com::sun::star::beans">PropertyAttribute::READONLY</member>
185        //   is set).
186        // - <type scope="com::sun::star::lang">IllegalArgumentException</type>
187        //   indicates, that the property value is not acceptable. For instance,
188        //   setting an empty title may be illegal.
189        // - Any other execption derived from <type scope="com::sun::star::uno">Exception</type>
190        //   indicates, that the value was not set successfully. For example,
191        //   this can be a <type>InteractiveAugmentedIOException</type>
192        //   transporting the error code <member>IOErrorCode::ACCESS_DENIED</member>.
193        //
194        // If the value to set is equal to the current value, no exception must
195        // be added to the returned sequence
196        sequence&lt; any &gt;
197            setPropertyValues
198                sequence&lt; <type scope="com::sun::star::beans">PropertyValue</type> &gt; aValues
199
200        -----------------------------------------------------------------------
201        Optional commands:
202        -----------------------------------------------------------------------
203
204        // For folder objects, this command will return an implementation
205        // of service <type>DynamicResultSet</type>.
206        //
207        // The <type>OpenCommandArgument2</type> members must be filled as follows:
208        //
209        // Mode         : ALL or FOLDERS or DOCUMENTS. The implementation
210        //                of the open command MUST support all these modes!
211        // Priority     : can be set, but implementation may ignore the value
212        // Sink         : empty( ignored )
213        // Properties   : The properties for that the result set shall
214        //                contain the property values. The order of the
215        //                sequence is the same as the order of result set
216        //                columns. First element of sequence will be row
217        //                number one, second will be row number two, ...
218        // SortingInfo      : contains sort criteria, if result set shall
219        //                be sorted, otherwise it can be left empty.
220        //
221        // The exceution must be aborted by the implementation of this command
222        // (by throwing a <type>CommandAbortedException</type>), if an
223        // unsupported mode is requested.
224        <type>XDynamicResultSet</type>
225            <B>open</B>
226                <type>OpenCommandArgument2</type> aOpenCommandArg
227
228        // For non-folder objects, the <type>OpenCommandArgument2</type> struct
229        // will be prefilled with a data sink object, which will be filled
230        // with the content data.
231        //
232        // The <type>OpenCommandArgument2</type> members must be filled as follows:
233        //
234        // Mode         : DOCUMENT or DOCUMENT_SHARE_DENY_NONE or
235        //                DOCUMENT_SHARE_DENY_WRITE. Support for DOCUMENT
236        //                is mandatory, all others are optional.
237        // Priority     : can be set, but implementation may ignore the value
238        // Sink         : a sink, where the implementation can put the
239        //                document data into.
240        // Properties   : empty ( ignored )
241        // SortingInfo      : empty ( ignored )
242        //
243        // The exceution must be aborted by the implementation of this command
244        // (by throwing a <type>CommandAbortedException</type>), if an
245        // unsupported mode is requested.
246        void
247            <B>open</B>
248                <type>OpenCommandArgument2</type> aOpenCommandArg
249
250        // This command triggers an update operation on a content. For example,
251        // when "updating" a POP3-Inbox, the content for that box will get
252        // and store all new objects on the appropriate server. The inserted
253        // contents will be notified by calling
254        // <member>XContentEventListener::contentEvent</member>.
255        void
256            <B>update</B>
257                <type>OpenCommandArgument2</type> aOpenCommandArg
258
259        // This command triggers a synchronization operation between locally
260        // cached data and remote server's data. For example, when
261        // "synchronizing" a POP3-Inbox the content for that box will get and
262        // store all new objects and destroy all cached data for objects no
263        // longer existing on the server. The inserted/deleted contents will
264        // be notified by calling
265        // <member>XContent::contentEvent</member>.
266        void
267            <B>synchronize</B>
268                <type>OpenCommandArgument2</type> aOpenCommandArg
269
270        // This command closes an object.
271        void
272            <B>close</B>
273                void
274
275        // This command deletes an object. If <TRUE/> is passed as parameter,
276        // the object will be destroyed physically. Otherwise it will be put
277        // into trash can, if such a service is available and the object to
278        // be deleted supports the command "undelete".
279        // On successful completion of this command, the deleted content
280        // must propagate its deletion by notifying a <type>ContentEvent</type>
281        // - <member>ContentAction::DELETED</member>. Additionally, the contents
282        // parent must notify a <type>ContentEvent</type>
283        // - <member>ContentAction::REMOVED</member>
284        void
285            <B>delete</B>
286                boolean bDeletePhysically
287
288        // This command restores an object previously deleted into trash. It
289        // must be supported by objects which claim to be undeletable, but
290        // should never be called directly.
291        void
292            <B>undelete</B>
293                void
294
295        // (1) This command inserts a new content. It commits the process of
296        // creating a new content via executing the command "createNewContent"
297        // and initializing it via setting properties, afterwards.
298        // The command is not called on the content which created the new
299        // content, because the new object already knows where it is to be
300        // inserted (i.e. Calling createNewContent with the content type for a
301        // message on a News Group creates a content which internally belongs
302        // to the Outbox. Calling "insert" on that message will result in
303        // posting the article to the appropriate News Group). Not calling
304        // "insert" for the new content, i.e. because the user cancels writing
305        // a new message, simply discards the new object. No extra call to
306        // "delete" is necessary.
307        // On successful completion of this command, the parent of the inserted
308        // content must propagate the change by notifying a
309        // <type>ContentEvent</type> - <member>ContentAction::INSERTED</member>.
310        //
311        // (2) Additionally this command can be called at any time to overwrite
312        // the data of an existing content.
313        void
314            <B>insert</B>
315                <type>InsertCommandArgument</type> aInsertCommandArg
316
317        // This command searches for subcontents of a content matching the
318        // given search criteria. The command will return an implemenation
319        // of service <type>DynamicResultSet</type>.
320        <type>XDynamicResultSet</type>
321            <B>search</B>
322                <type>SearchCommandArgument</type> aSearchCommandArg
323
324        // <b>Important note:</b> A client that wants to transfer data should
325        // not execute this command, but it should execute the command
326        // "globalTransfer" at the <type>UniversalContentBroker</type>.
327        // This command is able to transfer all kind of content
328        // supported by that UCB.
329        //
330        // This command transfers (copies/moves) an object from one location
331        // to another. It must be executed at the folder content representing
332        // the destination of the transfer operation. Note that the
333        // implementation need not(!) be able to handle any type of contents.
334        // Generally, there are good chances that a transfer of a content will
335        // succeed, if source and target folder have the same URL scheme.
336        // But there is no guaranty for that. For instance, moving a message
337        // from a folder on IMAP server A to a folder on IMAP server B may
338        // fail, because the transfer command can't be implemented efficiently
339        // for this scenario, because it is not directly supported by the IMAP
340        // protocol. On the other hand, moving a message from one folder to
341        // another folder on the same IMAP server should work, because it can
342        // be implemeted efficiently. If an implementation is not able to
343        // handle a given source URL, it should indicate this by issuing a
344        // <type>InteractiveBadTransferURLException</type> interaction request.
345        // Source and target folder may be the same when doing a move operation.
346        //
347        // Transfers without the transfer command can be done as follows:
348        //
349        // 1) Create a new content at the target folder
350        //    --> targetContent = target.execute( "createNewContent", type )
351        // 2) Transfer data from source to target content
352        //    --> props = sourceContent.execute( "getPropertyValues", ... )
353        //    --> dataStream = sourceContent.execute( "open", ... )
354        //    --> targetContent.execute( "setPropertyValues", props )
355        // 3) Insert ( commit ) the new content
356        //    --> targetContent.execute( "insert", dataStream )
357        // 4) For move operations only: destroy the source content
358        //    sourceContent.execute( "delete", ... )
359        //
360        // This mechanism should work for all transfer operations, but generally
361        // it's less efficient than the transfer command.
362        void
363            <B>transfer</B>
364                <type>TransferInfo</type> aTransferInfo
365
366        // This command obtains an exlusive write lock for the resource. The
367        // lock is active until command "unlock" is executed or the OOo
368        // session that obtained the lock ends or until the lock is released by
369        // a third party (e.g. a system administrator).
370        void
371            <B>lock</B>
372                void
373        Exceptions: <type>InteractiveLockingLockedException</type>
374                    <type>InteractiveLockingLockExpiredException</type>
375
376        // This command removes a lock obtained by executing the command "lock"
377        // from the resource.
378        void
379            <B>unlock</B>
380                void
381        Exceptions: <type>InteractiveLockingNotLockedException</type>
382                    <type>InteractiveLockingLockExpiredException</type>
383
384        // Note that <type>InteractiveLockingLockExpiredException</type> might
385        // be raised by any command that requires a previously obtained lock.
386
387        // This command creates a new non-persistent content of a given type.
388        //
389        // <p>Creation of a new (persistent) content:
390        // <ol>
391        //    <li>creatabletypes = obtain "CreatableContentsInfo" property<br>
392        //        from creator
393        //    <li>choose a suitable type from creatabletypes
394        //    <li>newObject = execute command "createNewContent(type)" at<br>
395        //        creator
396        //    <li>initialize the new object (i.e. newObject.Property1 = ...)
397        //    <li>execute command "insert" at new content. This command
398        //        commits the data and makes the new content persistent.
399        // </ol>
400        //
401        // This command must be supported by every Content that supports the
402        // property "CreatableContentsInfo" if the returned property value
403        // contains a non-empty sequence of creatable types.
404        //
405        // Note: This command is part of the replacement for the deprecated
406        // interface <type>XContentCreator</type>.
407        <type>XContent</type> >
408            <B>createNewContent</B>
409                <type>ContentInfo<type> contentinfo
410
411        =======================================================================
412        Properties:
413        =======================================================================
414
415        -----------------------------------------------------------------------
416        Mandatory properties:
417        -----------------------------------------------------------------------
418
419        // contains a unique(!) type string for the content ( i.e.
420        // "application/vnd.sun.star.hierarchy-link" ). This property is always
421        // read-only. It does not contain the media type ( MIME types ) of the
422        // content. Media types may be provided through the optional property
423        // "MediaType".
424        // The value of this property should match the information on creatable
425        // contents given by UCB contents that implement the property
426        // "CreatableContentsInfo".
427        string ContentType
428
429        // indicates, whether a content can contain other contents.
430        boolean IsFolder
431
432        // indicates, whether a content is a document. This means, the
433        // content can dump itself into a data sink.
434        boolean IsDocument
435
436        // contains the title of an object (e.g. the subject of a message).
437        string Title;
438
439        -----------------------------------------------------------------------
440        Optional properties:
441        -----------------------------------------------------------------------
442
443        // contains the interval for automatic updates of an object.
444        // It is specified in seconds.
445        long AutoUpdateInterval
446
447        // contains the maximum number of network connections
448        // allowed for one (internet) protocol at a time. (e.g. The HTTP
449        // cache can be configured to use a maximum for the number of
450        // connections used for browsing.)
451        short ConnectionLimit
452
453        // contains the current connection mode for the object.
454        // (see <type>ConnectionMode</type>)
455        short ConnectionMode
456
457        // contains the date and time the object was created.
458        <type scope"com::sun::star::util">DateTime</type> DateCreated
459
460        // contains the date and time the object was last modified.
461        <type scope"com::sun::star::util">DateTime</type> DateModified
462
463        // contains the count of documents of a folder.
464        long DocumentCount;
465
466        // contains the count of marked documents within a folder.
467        long DocumentCountMarked
468
469        // contains a sequence of documemt header fields (i.e. header
470        // fields of a MIME-message, or the document info of an
471        // office document ). For some standard header fields there
472        // are predefined separate properties, like &quot;MessageTo&quot;.
473        sequence&lt; <type>DocumentHeaderField</type> &gt; DocumentHeader
474
475        // contains information about the way a folder stores the
476        // contents of (remote) documents.
477        <type>DocumentStoreMode</type> DocumentStoreMode
478
479        // contains the count of subfolders of a folder.
480        long FolderCount
481
482        // contains the free space left on a storage device. It is
483            specified in bytes.
484        hyper FreeSpace
485
486        // indicates whether a content has subcontents, which are documents.
487        boolean HasDocuments
488
489        // indicates whether a content has subcontents, which are folders.
490        boolean HasFolders
491
492        // indicates whether a content is &quot;marked&quot;.
493        boolean IsMarked
494
495        // indicates whether a content has been "read".
496        boolean IsRead;
497
498        // indicates whether a content is read-only.
499        boolean IsReadOnly
500
501        // indicates whether a content is subscribed.
502        boolean IsSubscribed
503
504        // indicates whether the feature to store contents depending on
505        // their age is active.
506        boolean IsTimeLimitedStore;
507
508        // indicates whether (sub)contents shall be automatically updated
509        // everytime a (folder) content is opened. This property may be
510        // used to control whether a folder content should read data only
511        // from local cache when it is opened, or whether it should connect
512        // to a server to obtain latest data.
513        boolean UpdateOnOpen
514
515        // contains the keywords of a document (e.g. the value
516        // of the &quot;keywords&quot; header field of a news article).
517        string Keywords
518
519        // contains the media type ( MIME type ) of a content. It is highly
520        // recommended to support this property if the content's implementation
521        // can obtain the media type natively from its data source ( i.e.
522        // HTTP servers provide media types for all their documents ).
523        string MediaType
524
525        // contains the BCC (blind carbon copy) receiver(s) of a message.
526        string MessageBCC
527
528        // contains the CC (carbon copy) receiver(s) of a message.
529        string MessageCC
530
531        // contains (the address of) the sender of a message.
532        string MessageFrom
533
534        // contains the ID of a message.
535        string MessageId
536
537        // contains the &quot;In-Reply-To&quot; field of a message.
538        string MessageInReplyTo
539
540        // contains the &quot;Reply-To&quot; field of a message.
541        string MessageReplyTo
542
543        // contains the recipient(s) of a message.
544        string MessageTo
545
546        // contains the name(s) of the newsgroup(s) into which a message
547        // was posted.
548        string NewsGroups
549
550        // contains a password (e.g. needed to access a POP3-Server).
551        string Password
552
553        // contains a priority (i.e. of a message).
554        <type>Priority</type> Priority
555
556        // contains the &quot;References&quot; field of a news article.
557        string References
558
559        // contains the rules set for a content.
560        <type>RuleSet</type> Rules
561
562        // contains the count of seen/read subcontents of a folder content.
563        long SeenCount
564
565        // contains the base directory to use on a server. (e.g. Setting
566        // the server base of an FTP-Account to &quot;/pub/incoming&quot;
567        // will result in showing contents from that directory and not from
568        // server's root directory)
569        string ServerBase
570
571        // contains a server name (e.g. The name of the server to use for
572        // a POP3-Account).
573        string ServerName
574
575        // contains a numeric server port.
576        short ServerPort
577
578        // contains the size (usually in bytes) of an object.
579        hyper Size
580
581        // contains a size limit for an object. (e.g. One may specify the
582        // maximum size of the HTTP-Cache)
583        hyper SizeLimit
584
585        // contains the count of subscribed contents of a folder.
586        long SubscribedCount
587
588        // contains the policy to use when synchronizing two objects.
589        <type>SynchronizePolicy</type> SynchronizePolicy
590
591        // contains information about the target frame to use when displaying
592        // an object.
593
594        <p>The value is a string containing three tokens, separated by &quot;;&quot;
595        (A semicolon):<br/>
596        <dl>
597        <dt>1st token
598        </dt><dd>Behavior on &quot;select&quot; ( single click )
599        </dd><dt>2nd token
600        </dt><dd>Behavior on &quot;open&quot;   ( double click )
601        </dd><dt>3rd token
602        </dt><dd>Behavior on &quot;open in new task&quot; ( double click + CTRL key )
603        </dd></dl>
604        </p>
605        <p>  Each token may contain the following values:<br/>
606        <dl>
607        <dt>&quot;_beamer&quot;
608        </dt><dd>Show in &quot;Beamer&quot;
609        </dd><dt>&quot;_top&quot;
610        </dt><dd>Show in current frame (replaces old)
611        </dd><dt>&quot;_blank&quot;
612        </dt><dd>Show in new task
613        </dd></dl>
614        </p>
615        string TargetFrames
616
617        // for contents that are links to other contents, contains the URL of
618        // the target content
619        string TargetURL
620
621        // contains the value to use if the property "IsTimeLimitedStore" is set.
622        short TimeLimitStore;
623
624        // contains a user name. (e.g. the user name needed to access a
625        // POP3-Account)
626        string UserName
627
628        // describes a verification policy.
629        <type>VerificationMode</type> VerificationMode
630
631        // contains the types of Contents a Content object can create via
632        // command "createNewContent".
633        //
634        // If the property value can be a non-empty sequence, the Content must
635        // also support command "createNewContent".
636        //
637        // Note: This property is part of the replacement for the deprecated
638        // interface <type>XContentCreator</type>.
639        sequence <type>ContentInfo</type> CreatableContentsInfo
640
641        </pre>
642     */
643    interface com::sun::star::ucb::XCommandProcessor;
644
645    //-------------------------------------------------------------------------
646    /** is an enhanced version of <type>XCommandProcessor</type> that has an
647        additional method for releasing command identifiers obtained via
648        <member>XCommandProcessor::createCommandIdentifier</member> to avoid
649        resource leaks. For a detailed description of the problem refer to
650        <member>XCommandProcessor2::releaseCommandIdentifier</member>.
651
652        <p>Where many existing <type>Content</type> implementations do not
653        (yet), every new implementation should support this interface.
654     */
655    [optional] interface com::sun::star::ucb::XCommandProcessor2;
656
657    //-------------------------------------------------------------------------
658    /** notifies changes of property values to listeners registered for
659        those properties.
660
661        <p>This interface is required.
662     */
663    interface com::sun::star::beans::XPropertiesChangeNotifier;
664
665    //-------------------------------------------------------------------------
666    /** can be used to add new properties to the content and to remove
667        properties from the content dynamically.
668
669        <p>Note that the dynamic properties must be kept persistent. The
670        service <type>Store</type> (UCB persistence service) may be used to
671        implement this.
672
673        <p><b>Important:</b> The implementation of
674        <method scope="com::sun::star::beans">XPropertyContainer::addProperty</method>
675        must at least support adding properties of the following basic data
676        types:
677
678        <p>
679        <ul>
680        <li>boolean
681        <li>char
682        <li>byte
683        <li>string
684        <li>short
685        <li>long
686        <li>hyper
687        <li>float
688        <li>double
689        </ul>
690
691        <p>If a property with an unsupported type shall be added a
692        <type scope="com::sun::star::beans">IllegalTypeException</type> must
693        be raised.
694     */
695    interface com::sun::star::beans::XPropertyContainer;
696
697    //-------------------------------------------------------------------------
698    /** can be used to notify properties removed from or added to the
699        content's property set.
700
701        <p>This interface must be implemented, if the implementation can
702        dynamically change it's property set ( e.g. because it implements
703        the interface
704        <type scope="com::sun::star::beans">XPropertyContainer</type>. )
705     */
706    [optional] interface com::sun::star::beans::XPropertySetInfoChangeNotifier;
707
708    //-------------------------------------------------------------------------
709    /** can be used to notify commands removed from or added to the
710        content's command set.
711
712        <p>This interface must be implemented, if the implementation can
713        dynamically change it's command set ( e.g. because the set of
714        available commands depends on the value of a property of the
715        content ).
716
717        <p>This interface is optional.
718     */
719    [optional] interface com::sun::star::ucb::XCommandInfoChangeNotifier;
720
721    //-------------------------------------------------------------------------
722    /** creates new contents (i.e. creates a new folder in another folder
723        somewhere in the local file system).
724
725        <p>A content is "new", if it does not physically exist before creating
726        it using this interface.
727
728        <p>This interface is optional. It should be implemented by contents
729        which shall be able to create new objects.
730
731        @deprecated
732
733        <p>This interface is <b>deprecated</b>. Use property
734        "CreatableContentsInfo" and command "createNewContent" instead.
735     */
736    [optional] interface com::sun::star::ucb::XContentCreator;
737
738    //-------------------------------------------------------------------------
739    /** provides access to the parent content of this content.
740
741        <p>The object returned by the implementation of the method
742        <member scope="com::sun::star::container">XChild::getParent()</member>
743        must implement the service <type>Content</type>. If the content is a
744        root object, an empty interface may be returned.
745
746        <p>This interface must be implemented by a content which is a (logical)
747        child of a content.
748     */
749    [optional] interface com::sun::star::container::XChild;
750};
751
752//=============================================================================
753
754}; }; }; };
755
756#endif
757