1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_ucb.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski /**************************************************************************
28*b1cdbd2cSJim Jagielski                                 TODO
29*b1cdbd2cSJim Jagielski  **************************************************************************
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski  **************************************************************************
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski     Props/Commands:
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski                         root  document folder  folder  stream  stream
36*b1cdbd2cSJim Jagielski                                                 (new)          (new)
37*b1cdbd2cSJim Jagielski     ----------------------------------------------------------------
38*b1cdbd2cSJim Jagielski     ContentType         r       r       r       r       r       r
39*b1cdbd2cSJim Jagielski     IsDocument          r       r       r       r       r       r
40*b1cdbd2cSJim Jagielski     IsFolder            r       r       r       r       r       r
41*b1cdbd2cSJim Jagielski     Title               r       r       w       w       w       w
42*b1cdbd2cSJim Jagielski     CreatableContentsInfo r     r       r       r       r       r
43*b1cdbd2cSJim Jagielski     Storage             -       -       r       r       -       -
44*b1cdbd2cSJim Jagielski     DocumentModel       -       r       -       -       -       -
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski     getCommandInfo      x       x       x       x       x       x
47*b1cdbd2cSJim Jagielski     getPropertySetInfo  x       x       x       x       x       x
48*b1cdbd2cSJim Jagielski     getPropertyValues   x       x       x       x       x       x
49*b1cdbd2cSJim Jagielski     setPropertyValues   x       x       x       x       x       x
50*b1cdbd2cSJim Jagielski     insert              -       -       x       x       x(*)    x(*)
51*b1cdbd2cSJim Jagielski     delete              -       -       x       -       x       -
52*b1cdbd2cSJim Jagielski     open                x       x       x       -       x       -
53*b1cdbd2cSJim Jagielski     transfer            -       x       x       -       -       -
54*b1cdbd2cSJim Jagielski     createNewContent    -       x       x       -       -       -
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski #ifdef NO_STREAM_CREATION_WITHIN_DOCUMENT_ROOT
57*b1cdbd2cSJim Jagielski  (*) not supported by streams that are direct children of document
58*b1cdbd2cSJim Jagielski #endif
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski  *************************************************************************/
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski #include "com/sun/star/beans/Property.hpp"
63*b1cdbd2cSJim Jagielski #include "com/sun/star/beans/PropertyAttribute.hpp"
64*b1cdbd2cSJim Jagielski #include "com/sun/star/beans/PropertyValue.hpp"
65*b1cdbd2cSJim Jagielski #include "com/sun/star/embed/XStorage.hpp"
66*b1cdbd2cSJim Jagielski #include "com/sun/star/frame/XModel.hpp"
67*b1cdbd2cSJim Jagielski #include "com/sun/star/ucb/CommandInfo.hpp"
68*b1cdbd2cSJim Jagielski #include "com/sun/star/ucb/OpenCommandArgument2.hpp"
69*b1cdbd2cSJim Jagielski #include "com/sun/star/ucb/TransferInfo.hpp"
70*b1cdbd2cSJim Jagielski 
71*b1cdbd2cSJim Jagielski #include "tdoc_content.hxx"
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski namespace com { namespace sun { namespace star { namespace embed {
74*b1cdbd2cSJim Jagielski     class XStorage;
75*b1cdbd2cSJim Jagielski } } } }
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski using namespace com::sun::star;
78*b1cdbd2cSJim Jagielski using namespace tdoc_ucp;
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski //=========================================================================
81*b1cdbd2cSJim Jagielski //
82*b1cdbd2cSJim Jagielski // Content implementation.
83*b1cdbd2cSJim Jagielski //
84*b1cdbd2cSJim Jagielski //=========================================================================
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski #define MAKEPROPSEQUENCE( a ) \
87*b1cdbd2cSJim Jagielski     uno::Sequence< beans::Property >( a, sizeof( a )  / sizeof( a[ 0 ] ) )
88*b1cdbd2cSJim Jagielski 
89*b1cdbd2cSJim Jagielski #define MAKECMDSEQUENCE( a ) \
90*b1cdbd2cSJim Jagielski     uno::Sequence< ucb::CommandInfo >( a, sizeof( a )  / sizeof( a[ 0 ] ) )
91*b1cdbd2cSJim Jagielski 
92*b1cdbd2cSJim Jagielski //=========================================================================
93*b1cdbd2cSJim Jagielski //
94*b1cdbd2cSJim Jagielski // IMPORTENT: If any property data ( name / type / ... ) are changed, then
95*b1cdbd2cSJim Jagielski //            Content::getPropertyValues(...) must be adapted too!
96*b1cdbd2cSJim Jagielski //
97*b1cdbd2cSJim Jagielski //=========================================================================
98*b1cdbd2cSJim Jagielski 
99*b1cdbd2cSJim Jagielski // virtual
getProperties(const uno::Reference<ucb::XCommandEnvironment> &)100*b1cdbd2cSJim Jagielski uno::Sequence< beans::Property > Content::getProperties(
101*b1cdbd2cSJim Jagielski             const uno::Reference< ucb::XCommandEnvironment > & /*xEnv*/ )
102*b1cdbd2cSJim Jagielski {
103*b1cdbd2cSJim Jagielski     osl::Guard< osl::Mutex > aGuard( m_aMutex );
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski     if ( m_aProps.getType() == STREAM )
106*b1cdbd2cSJim Jagielski     {
107*b1cdbd2cSJim Jagielski         //=================================================================
108*b1cdbd2cSJim Jagielski         //
109*b1cdbd2cSJim Jagielski         // Stream: Supported properties
110*b1cdbd2cSJim Jagielski         //
111*b1cdbd2cSJim Jagielski         //=================================================================
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski         static const beans::Property aStreamPropertyInfoTable[] =
114*b1cdbd2cSJim Jagielski         {
115*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
116*b1cdbd2cSJim Jagielski             // Mandatory properties
117*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
118*b1cdbd2cSJim Jagielski             beans::Property(
119*b1cdbd2cSJim Jagielski                 rtl::OUString(
120*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "ContentType" ) ),
121*b1cdbd2cSJim Jagielski                 -1,
122*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
123*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
124*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
125*b1cdbd2cSJim Jagielski             ),
126*b1cdbd2cSJim Jagielski             beans::Property(
127*b1cdbd2cSJim Jagielski                 rtl::OUString(
128*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "IsDocument" ) ),
129*b1cdbd2cSJim Jagielski                 -1,
130*b1cdbd2cSJim Jagielski                 getCppuBooleanType(),
131*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
132*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
133*b1cdbd2cSJim Jagielski             ),
134*b1cdbd2cSJim Jagielski             beans::Property(
135*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsFolder" ) ),
136*b1cdbd2cSJim Jagielski                 -1,
137*b1cdbd2cSJim Jagielski                 getCppuBooleanType(),
138*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
139*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
140*b1cdbd2cSJim Jagielski             ),
141*b1cdbd2cSJim Jagielski             beans::Property(
142*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ),
143*b1cdbd2cSJim Jagielski                 -1,
144*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
145*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
146*b1cdbd2cSJim Jagielski             ),
147*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
148*b1cdbd2cSJim Jagielski             // Optional standard properties
149*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
150*b1cdbd2cSJim Jagielski             beans::Property(
151*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
152*b1cdbd2cSJim Jagielski                     "CreatableContentsInfo" ) ),
153*b1cdbd2cSJim Jagielski                 -1,
154*b1cdbd2cSJim Jagielski                 getCppuType( static_cast<
155*b1cdbd2cSJim Jagielski                     const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
156*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
157*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
158*b1cdbd2cSJim Jagielski             )
159*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
160*b1cdbd2cSJim Jagielski             // New properties
161*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
162*b1cdbd2cSJim Jagielski         };
163*b1cdbd2cSJim Jagielski         return MAKEPROPSEQUENCE( aStreamPropertyInfoTable );
164*b1cdbd2cSJim Jagielski     }
165*b1cdbd2cSJim Jagielski     else if ( m_aProps.getType() == FOLDER )
166*b1cdbd2cSJim Jagielski     {
167*b1cdbd2cSJim Jagielski         //=================================================================
168*b1cdbd2cSJim Jagielski         //
169*b1cdbd2cSJim Jagielski         // Folder: Supported properties
170*b1cdbd2cSJim Jagielski         //
171*b1cdbd2cSJim Jagielski         //=================================================================
172*b1cdbd2cSJim Jagielski 
173*b1cdbd2cSJim Jagielski         static const beans::Property aFolderPropertyInfoTable[] =
174*b1cdbd2cSJim Jagielski         {
175*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
176*b1cdbd2cSJim Jagielski             // Mandatory properties
177*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
178*b1cdbd2cSJim Jagielski             beans::Property(
179*b1cdbd2cSJim Jagielski                 rtl::OUString(
180*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "ContentType" ) ),
181*b1cdbd2cSJim Jagielski                 -1,
182*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
183*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
184*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
185*b1cdbd2cSJim Jagielski             ),
186*b1cdbd2cSJim Jagielski             beans::Property(
187*b1cdbd2cSJim Jagielski                 rtl::OUString(
188*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "IsDocument" ) ),
189*b1cdbd2cSJim Jagielski                 -1,
190*b1cdbd2cSJim Jagielski                 getCppuBooleanType(),
191*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
192*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
193*b1cdbd2cSJim Jagielski             ),
194*b1cdbd2cSJim Jagielski             beans::Property(
195*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsFolder" ) ),
196*b1cdbd2cSJim Jagielski                 -1,
197*b1cdbd2cSJim Jagielski                 getCppuBooleanType(),
198*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
199*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
200*b1cdbd2cSJim Jagielski             ),
201*b1cdbd2cSJim Jagielski             beans::Property(
202*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ),
203*b1cdbd2cSJim Jagielski                 -1,
204*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
205*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
206*b1cdbd2cSJim Jagielski             ),
207*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
208*b1cdbd2cSJim Jagielski             // Optional standard properties
209*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
210*b1cdbd2cSJim Jagielski             beans::Property(
211*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
212*b1cdbd2cSJim Jagielski                     "CreatableContentsInfo" ) ),
213*b1cdbd2cSJim Jagielski                 -1,
214*b1cdbd2cSJim Jagielski                 getCppuType( static_cast<
215*b1cdbd2cSJim Jagielski                     const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
216*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
217*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
218*b1cdbd2cSJim Jagielski             ),
219*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
220*b1cdbd2cSJim Jagielski             // New properties
221*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
222*b1cdbd2cSJim Jagielski             beans::Property(
223*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Storage" ) ),
224*b1cdbd2cSJim Jagielski                 -1,
225*b1cdbd2cSJim Jagielski                 getCppuType( static_cast<
226*b1cdbd2cSJim Jagielski                     const uno::Reference< embed::XStorage > * >( 0 ) ),
227*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
228*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
229*b1cdbd2cSJim Jagielski             )
230*b1cdbd2cSJim Jagielski         };
231*b1cdbd2cSJim Jagielski         return MAKEPROPSEQUENCE( aFolderPropertyInfoTable );
232*b1cdbd2cSJim Jagielski     }
233*b1cdbd2cSJim Jagielski     else if ( m_aProps.getType() == DOCUMENT )
234*b1cdbd2cSJim Jagielski     {
235*b1cdbd2cSJim Jagielski         //=================================================================
236*b1cdbd2cSJim Jagielski         //
237*b1cdbd2cSJim Jagielski         // Document: Supported properties
238*b1cdbd2cSJim Jagielski         //
239*b1cdbd2cSJim Jagielski         //=================================================================
240*b1cdbd2cSJim Jagielski 
241*b1cdbd2cSJim Jagielski         static const beans::Property aDocPropertyInfoTable[] =
242*b1cdbd2cSJim Jagielski         {
243*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
244*b1cdbd2cSJim Jagielski             // Mandatory properties
245*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
246*b1cdbd2cSJim Jagielski             beans::Property(
247*b1cdbd2cSJim Jagielski                 rtl::OUString(
248*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "ContentType" ) ),
249*b1cdbd2cSJim Jagielski                 -1,
250*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
251*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
252*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
253*b1cdbd2cSJim Jagielski             ),
254*b1cdbd2cSJim Jagielski             beans::Property(
255*b1cdbd2cSJim Jagielski                 rtl::OUString(
256*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "IsDocument" ) ),
257*b1cdbd2cSJim Jagielski                 -1,
258*b1cdbd2cSJim Jagielski                 getCppuBooleanType(),
259*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
260*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
261*b1cdbd2cSJim Jagielski             ),
262*b1cdbd2cSJim Jagielski             beans::Property(
263*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsFolder" ) ),
264*b1cdbd2cSJim Jagielski                 -1,
265*b1cdbd2cSJim Jagielski                 getCppuBooleanType(),
266*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
267*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
268*b1cdbd2cSJim Jagielski             ),
269*b1cdbd2cSJim Jagielski             beans::Property(
270*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ),
271*b1cdbd2cSJim Jagielski                 -1,
272*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
273*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
274*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
275*b1cdbd2cSJim Jagielski             ),
276*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
277*b1cdbd2cSJim Jagielski             // Optional standard properties
278*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
279*b1cdbd2cSJim Jagielski             beans::Property(
280*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
281*b1cdbd2cSJim Jagielski                     "CreatableContentsInfo" ) ),
282*b1cdbd2cSJim Jagielski                 -1,
283*b1cdbd2cSJim Jagielski                 getCppuType( static_cast<
284*b1cdbd2cSJim Jagielski                     const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
285*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
286*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
287*b1cdbd2cSJim Jagielski             ),
288*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
289*b1cdbd2cSJim Jagielski             // New properties
290*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
291*b1cdbd2cSJim Jagielski             beans::Property(
292*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DocumentModel" ) ),
293*b1cdbd2cSJim Jagielski                 -1,
294*b1cdbd2cSJim Jagielski                 getCppuType( static_cast<
295*b1cdbd2cSJim Jagielski                     const uno::Reference< frame::XModel > * >( 0 ) ),
296*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
297*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
298*b1cdbd2cSJim Jagielski             )
299*b1cdbd2cSJim Jagielski         };
300*b1cdbd2cSJim Jagielski         return MAKEPROPSEQUENCE( aDocPropertyInfoTable );
301*b1cdbd2cSJim Jagielski     }
302*b1cdbd2cSJim Jagielski     else
303*b1cdbd2cSJim Jagielski     {
304*b1cdbd2cSJim Jagielski         //=================================================================
305*b1cdbd2cSJim Jagielski         //
306*b1cdbd2cSJim Jagielski         // Root: Supported properties
307*b1cdbd2cSJim Jagielski         //
308*b1cdbd2cSJim Jagielski         //=================================================================
309*b1cdbd2cSJim Jagielski 
310*b1cdbd2cSJim Jagielski         OSL_ENSURE( m_aProps.getType() == ROOT, "Wrong content type!" );
311*b1cdbd2cSJim Jagielski 
312*b1cdbd2cSJim Jagielski         static const beans::Property aRootPropertyInfoTable[] =
313*b1cdbd2cSJim Jagielski         {
314*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////////
315*b1cdbd2cSJim Jagielski             // Mandatory properties
316*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////////
317*b1cdbd2cSJim Jagielski             beans::Property(
318*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ContentType" ) ),
319*b1cdbd2cSJim Jagielski                 -1,
320*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
321*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
322*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
323*b1cdbd2cSJim Jagielski             ),
324*b1cdbd2cSJim Jagielski             beans::Property(
325*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsDocument" ) ),
326*b1cdbd2cSJim Jagielski                 -1,
327*b1cdbd2cSJim Jagielski                 getCppuBooleanType(),
328*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
329*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
330*b1cdbd2cSJim Jagielski             ),
331*b1cdbd2cSJim Jagielski             beans::Property(
332*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsFolder" ) ),
333*b1cdbd2cSJim Jagielski                 -1,
334*b1cdbd2cSJim Jagielski                 getCppuBooleanType(),
335*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
336*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
337*b1cdbd2cSJim Jagielski             ),
338*b1cdbd2cSJim Jagielski             beans::Property(
339*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ),
340*b1cdbd2cSJim Jagielski                 -1,
341*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
342*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
343*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
344*b1cdbd2cSJim Jagielski             ),
345*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////////
346*b1cdbd2cSJim Jagielski             // Optional standard properties
347*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////////
348*b1cdbd2cSJim Jagielski             beans::Property(
349*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
350*b1cdbd2cSJim Jagielski                     "CreatableContentsInfo" ) ),
351*b1cdbd2cSJim Jagielski                 -1,
352*b1cdbd2cSJim Jagielski                 getCppuType( static_cast<
353*b1cdbd2cSJim Jagielski                     const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
354*b1cdbd2cSJim Jagielski                 beans::PropertyAttribute::BOUND
355*b1cdbd2cSJim Jagielski                     | beans::PropertyAttribute::READONLY
356*b1cdbd2cSJim Jagielski             )
357*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////////
358*b1cdbd2cSJim Jagielski             // New properties
359*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////////
360*b1cdbd2cSJim Jagielski         };
361*b1cdbd2cSJim Jagielski         return MAKEPROPSEQUENCE( aRootPropertyInfoTable );
362*b1cdbd2cSJim Jagielski     }
363*b1cdbd2cSJim Jagielski }
364*b1cdbd2cSJim Jagielski 
365*b1cdbd2cSJim Jagielski //=========================================================================
366*b1cdbd2cSJim Jagielski // virtual
getCommands(const uno::Reference<ucb::XCommandEnvironment> &)367*b1cdbd2cSJim Jagielski uno::Sequence< ucb::CommandInfo > Content::getCommands(
368*b1cdbd2cSJim Jagielski             const uno::Reference< ucb::XCommandEnvironment > & /*xEnv*/ )
369*b1cdbd2cSJim Jagielski {
370*b1cdbd2cSJim Jagielski     osl::Guard< osl::Mutex > aGuard( m_aMutex );
371*b1cdbd2cSJim Jagielski 
372*b1cdbd2cSJim Jagielski     if ( m_aProps.getType() == STREAM )
373*b1cdbd2cSJim Jagielski     {
374*b1cdbd2cSJim Jagielski #ifdef NO_STREAM_CREATION_WITHIN_DOCUMENT_ROOT
375*b1cdbd2cSJim Jagielski         Uri aUri( m_xIdentifier->getContentIdentifier() );
376*b1cdbd2cSJim Jagielski         Uri aParentUri( aUri.getParentUri() );
377*b1cdbd2cSJim Jagielski 
378*b1cdbd2cSJim Jagielski         if ( aParentUri.isDocument() )
379*b1cdbd2cSJim Jagielski         {
380*b1cdbd2cSJim Jagielski             //=================================================================
381*b1cdbd2cSJim Jagielski             //
382*b1cdbd2cSJim Jagielski             // Stream, that is a child of a document: Supported commands
383*b1cdbd2cSJim Jagielski             //
384*b1cdbd2cSJim Jagielski             //=================================================================
385*b1cdbd2cSJim Jagielski 
386*b1cdbd2cSJim Jagielski             static const ucb::CommandInfo aStreamCommandInfoTable1[] =
387*b1cdbd2cSJim Jagielski             {
388*b1cdbd2cSJim Jagielski                 ///////////////////////////////////////////////////////////
389*b1cdbd2cSJim Jagielski                 // Mandatory commands
390*b1cdbd2cSJim Jagielski                 ///////////////////////////////////////////////////////////
391*b1cdbd2cSJim Jagielski                 ucb::CommandInfo(
392*b1cdbd2cSJim Jagielski                     rtl::OUString(
393*b1cdbd2cSJim Jagielski                         RTL_CONSTASCII_USTRINGPARAM( "getCommandInfo" ) ),
394*b1cdbd2cSJim Jagielski                     -1,
395*b1cdbd2cSJim Jagielski                     getCppuVoidType()
396*b1cdbd2cSJim Jagielski                 ),
397*b1cdbd2cSJim Jagielski                 ucb::CommandInfo(
398*b1cdbd2cSJim Jagielski                     rtl::OUString(
399*b1cdbd2cSJim Jagielski                         RTL_CONSTASCII_USTRINGPARAM( "getPropertySetInfo" ) ),
400*b1cdbd2cSJim Jagielski                     -1,
401*b1cdbd2cSJim Jagielski                     getCppuVoidType()
402*b1cdbd2cSJim Jagielski                 ),
403*b1cdbd2cSJim Jagielski                 ucb::CommandInfo(
404*b1cdbd2cSJim Jagielski                     rtl::OUString(
405*b1cdbd2cSJim Jagielski                         RTL_CONSTASCII_USTRINGPARAM( "getPropertyValues" ) ),
406*b1cdbd2cSJim Jagielski                     -1,
407*b1cdbd2cSJim Jagielski                     getCppuType(
408*b1cdbd2cSJim Jagielski                         static_cast< uno::Sequence< beans::Property > * >( 0 ) )
409*b1cdbd2cSJim Jagielski                 ),
410*b1cdbd2cSJim Jagielski                 ucb::CommandInfo(
411*b1cdbd2cSJim Jagielski                     rtl::OUString(
412*b1cdbd2cSJim Jagielski                         RTL_CONSTASCII_USTRINGPARAM( "setPropertyValues" ) ),
413*b1cdbd2cSJim Jagielski                     -1,
414*b1cdbd2cSJim Jagielski                     getCppuType(
415*b1cdbd2cSJim Jagielski                         static_cast<
416*b1cdbd2cSJim Jagielski                             uno::Sequence< beans::PropertyValue > * >( 0 ) )
417*b1cdbd2cSJim Jagielski                 ),
418*b1cdbd2cSJim Jagielski                 ///////////////////////////////////////////////////////////
419*b1cdbd2cSJim Jagielski                 // Optional standard commands
420*b1cdbd2cSJim Jagielski                 ///////////////////////////////////////////////////////////
421*b1cdbd2cSJim Jagielski                 ucb::CommandInfo(
422*b1cdbd2cSJim Jagielski                     rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "delete" ) ),
423*b1cdbd2cSJim Jagielski                     -1,
424*b1cdbd2cSJim Jagielski                     getCppuBooleanType()
425*b1cdbd2cSJim Jagielski                 ),
426*b1cdbd2cSJim Jagielski                 ucb::CommandInfo(
427*b1cdbd2cSJim Jagielski                     rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ),
428*b1cdbd2cSJim Jagielski                     -1,
429*b1cdbd2cSJim Jagielski                     getCppuType(
430*b1cdbd2cSJim Jagielski                         static_cast< ucb::OpenCommandArgument2 * >( 0 ) )
431*b1cdbd2cSJim Jagielski                 )
432*b1cdbd2cSJim Jagielski                 ///////////////////////////////////////////////////////////
433*b1cdbd2cSJim Jagielski                 // New commands
434*b1cdbd2cSJim Jagielski                 ///////////////////////////////////////////////////////////
435*b1cdbd2cSJim Jagielski             };
436*b1cdbd2cSJim Jagielski             return MAKECMDSEQUENCE( aStreamCommandInfoTable1 );
437*b1cdbd2cSJim Jagielski         }
438*b1cdbd2cSJim Jagielski #endif
439*b1cdbd2cSJim Jagielski         //=================================================================
440*b1cdbd2cSJim Jagielski         //
441*b1cdbd2cSJim Jagielski         // Stream: Supported commands
442*b1cdbd2cSJim Jagielski         //
443*b1cdbd2cSJim Jagielski         //=================================================================
444*b1cdbd2cSJim Jagielski 
445*b1cdbd2cSJim Jagielski         static const ucb::CommandInfo aStreamCommandInfoTable[] =
446*b1cdbd2cSJim Jagielski         {
447*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
448*b1cdbd2cSJim Jagielski             // Mandatory commands
449*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
450*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
451*b1cdbd2cSJim Jagielski                 rtl::OUString(
452*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getCommandInfo" ) ),
453*b1cdbd2cSJim Jagielski                 -1,
454*b1cdbd2cSJim Jagielski                 getCppuVoidType()
455*b1cdbd2cSJim Jagielski             ),
456*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
457*b1cdbd2cSJim Jagielski                 rtl::OUString(
458*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getPropertySetInfo" ) ),
459*b1cdbd2cSJim Jagielski                 -1,
460*b1cdbd2cSJim Jagielski                 getCppuVoidType()
461*b1cdbd2cSJim Jagielski             ),
462*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
463*b1cdbd2cSJim Jagielski                 rtl::OUString(
464*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getPropertyValues" ) ),
465*b1cdbd2cSJim Jagielski                 -1,
466*b1cdbd2cSJim Jagielski                 getCppuType(
467*b1cdbd2cSJim Jagielski                     static_cast< uno::Sequence< beans::Property > * >( 0 ) )
468*b1cdbd2cSJim Jagielski             ),
469*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
470*b1cdbd2cSJim Jagielski                 rtl::OUString(
471*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "setPropertyValues" ) ),
472*b1cdbd2cSJim Jagielski                 -1,
473*b1cdbd2cSJim Jagielski                 getCppuType(
474*b1cdbd2cSJim Jagielski                     static_cast<
475*b1cdbd2cSJim Jagielski                         uno::Sequence< beans::PropertyValue > * >( 0 ) )
476*b1cdbd2cSJim Jagielski             ),
477*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
478*b1cdbd2cSJim Jagielski             // Optional standard commands
479*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
480*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
481*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "delete" ) ),
482*b1cdbd2cSJim Jagielski                 -1,
483*b1cdbd2cSJim Jagielski                 getCppuBooleanType()
484*b1cdbd2cSJim Jagielski             ),
485*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
486*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "insert" ) ),
487*b1cdbd2cSJim Jagielski                 -1,
488*b1cdbd2cSJim Jagielski                 getCppuVoidType()
489*b1cdbd2cSJim Jagielski             ),
490*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
491*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ),
492*b1cdbd2cSJim Jagielski                 -1,
493*b1cdbd2cSJim Jagielski                 getCppuType(
494*b1cdbd2cSJim Jagielski                     static_cast< ucb::OpenCommandArgument2 * >( 0 ) )
495*b1cdbd2cSJim Jagielski             )
496*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
497*b1cdbd2cSJim Jagielski             // New commands
498*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
499*b1cdbd2cSJim Jagielski         };
500*b1cdbd2cSJim Jagielski         return MAKECMDSEQUENCE( aStreamCommandInfoTable );
501*b1cdbd2cSJim Jagielski     }
502*b1cdbd2cSJim Jagielski     else if ( m_aProps.getType() == FOLDER )
503*b1cdbd2cSJim Jagielski     {
504*b1cdbd2cSJim Jagielski         //=================================================================
505*b1cdbd2cSJim Jagielski         //
506*b1cdbd2cSJim Jagielski         // Folder: Supported commands
507*b1cdbd2cSJim Jagielski         //
508*b1cdbd2cSJim Jagielski         //=================================================================
509*b1cdbd2cSJim Jagielski 
510*b1cdbd2cSJim Jagielski         static const ucb::CommandInfo aFolderCommandInfoTable[] =
511*b1cdbd2cSJim Jagielski         {
512*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
513*b1cdbd2cSJim Jagielski             // Mandatory commands
514*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
515*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
516*b1cdbd2cSJim Jagielski                 rtl::OUString(
517*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getCommandInfo" ) ),
518*b1cdbd2cSJim Jagielski                 -1,
519*b1cdbd2cSJim Jagielski                 getCppuVoidType()
520*b1cdbd2cSJim Jagielski             ),
521*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
522*b1cdbd2cSJim Jagielski                 rtl::OUString(
523*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getPropertySetInfo" ) ),
524*b1cdbd2cSJim Jagielski                 -1,
525*b1cdbd2cSJim Jagielski                 getCppuVoidType()
526*b1cdbd2cSJim Jagielski             ),
527*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
528*b1cdbd2cSJim Jagielski                 rtl::OUString(
529*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getPropertyValues" ) ),
530*b1cdbd2cSJim Jagielski                 -1,
531*b1cdbd2cSJim Jagielski                 getCppuType(
532*b1cdbd2cSJim Jagielski                     static_cast< uno::Sequence< beans::Property > * >( 0 ) )
533*b1cdbd2cSJim Jagielski             ),
534*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
535*b1cdbd2cSJim Jagielski                 rtl::OUString(
536*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "setPropertyValues" ) ),
537*b1cdbd2cSJim Jagielski                 -1,
538*b1cdbd2cSJim Jagielski                 getCppuType(
539*b1cdbd2cSJim Jagielski                     static_cast<
540*b1cdbd2cSJim Jagielski                         uno::Sequence< beans::PropertyValue > * >( 0 ) )
541*b1cdbd2cSJim Jagielski             ),
542*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
543*b1cdbd2cSJim Jagielski             // Optional standard commands
544*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
545*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
546*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "delete" ) ),
547*b1cdbd2cSJim Jagielski                 -1,
548*b1cdbd2cSJim Jagielski                 getCppuBooleanType()
549*b1cdbd2cSJim Jagielski             ),
550*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
551*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "insert" ) ),
552*b1cdbd2cSJim Jagielski                 -1,
553*b1cdbd2cSJim Jagielski                 getCppuVoidType()
554*b1cdbd2cSJim Jagielski             ),
555*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
556*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ),
557*b1cdbd2cSJim Jagielski                 -1,
558*b1cdbd2cSJim Jagielski                 getCppuType(
559*b1cdbd2cSJim Jagielski                     static_cast< ucb::OpenCommandArgument2 * >( 0 ) )
560*b1cdbd2cSJim Jagielski             ),
561*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
562*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
563*b1cdbd2cSJim Jagielski                 -1,
564*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< ucb::TransferInfo * >( 0 ) )
565*b1cdbd2cSJim Jagielski             ),
566*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
567*b1cdbd2cSJim Jagielski                 rtl::OUString(
568*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
569*b1cdbd2cSJim Jagielski                 -1,
570*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< ucb::ContentInfo * >( 0 ) )
571*b1cdbd2cSJim Jagielski             )
572*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
573*b1cdbd2cSJim Jagielski             // New commands
574*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
575*b1cdbd2cSJim Jagielski         };
576*b1cdbd2cSJim Jagielski         return MAKECMDSEQUENCE( aFolderCommandInfoTable );
577*b1cdbd2cSJim Jagielski     }
578*b1cdbd2cSJim Jagielski     else if ( m_aProps.getType() == DOCUMENT )
579*b1cdbd2cSJim Jagielski     {
580*b1cdbd2cSJim Jagielski         //=================================================================
581*b1cdbd2cSJim Jagielski         //
582*b1cdbd2cSJim Jagielski         // Document: Supported commands
583*b1cdbd2cSJim Jagielski         //
584*b1cdbd2cSJim Jagielski         //=================================================================
585*b1cdbd2cSJim Jagielski 
586*b1cdbd2cSJim Jagielski         static const ucb::CommandInfo aDocCommandInfoTable[] =
587*b1cdbd2cSJim Jagielski         {
588*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
589*b1cdbd2cSJim Jagielski             // Mandatory commands
590*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
591*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
592*b1cdbd2cSJim Jagielski                 rtl::OUString(
593*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getCommandInfo" ) ),
594*b1cdbd2cSJim Jagielski                 -1,
595*b1cdbd2cSJim Jagielski                 getCppuVoidType()
596*b1cdbd2cSJim Jagielski             ),
597*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
598*b1cdbd2cSJim Jagielski                 rtl::OUString(
599*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getPropertySetInfo" ) ),
600*b1cdbd2cSJim Jagielski                 -1,
601*b1cdbd2cSJim Jagielski                 getCppuVoidType()
602*b1cdbd2cSJim Jagielski             ),
603*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
604*b1cdbd2cSJim Jagielski                 rtl::OUString(
605*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getPropertyValues" ) ),
606*b1cdbd2cSJim Jagielski                 -1,
607*b1cdbd2cSJim Jagielski                 getCppuType(
608*b1cdbd2cSJim Jagielski                     static_cast< uno::Sequence< beans::Property > * >( 0 ) )
609*b1cdbd2cSJim Jagielski             ),
610*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
611*b1cdbd2cSJim Jagielski                 rtl::OUString(
612*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "setPropertyValues" ) ),
613*b1cdbd2cSJim Jagielski                 -1,
614*b1cdbd2cSJim Jagielski                 getCppuType(
615*b1cdbd2cSJim Jagielski                     static_cast<
616*b1cdbd2cSJim Jagielski                         uno::Sequence< beans::PropertyValue > * >( 0 ) )
617*b1cdbd2cSJim Jagielski             ),
618*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
619*b1cdbd2cSJim Jagielski             // Optional standard commands
620*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
621*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
622*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ),
623*b1cdbd2cSJim Jagielski                 -1,
624*b1cdbd2cSJim Jagielski                 getCppuType(
625*b1cdbd2cSJim Jagielski                     static_cast< ucb::OpenCommandArgument2 * >( 0 ) )
626*b1cdbd2cSJim Jagielski             ),
627*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
628*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
629*b1cdbd2cSJim Jagielski                 -1,
630*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< ucb::TransferInfo * >( 0 ) )
631*b1cdbd2cSJim Jagielski             ),
632*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
633*b1cdbd2cSJim Jagielski                 rtl::OUString(
634*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
635*b1cdbd2cSJim Jagielski                 -1,
636*b1cdbd2cSJim Jagielski                 getCppuType( static_cast< ucb::ContentInfo * >( 0 ) )
637*b1cdbd2cSJim Jagielski             )
638*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
639*b1cdbd2cSJim Jagielski             // New commands
640*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
641*b1cdbd2cSJim Jagielski         };
642*b1cdbd2cSJim Jagielski         return MAKECMDSEQUENCE( aDocCommandInfoTable );
643*b1cdbd2cSJim Jagielski     }
644*b1cdbd2cSJim Jagielski     else
645*b1cdbd2cSJim Jagielski     {
646*b1cdbd2cSJim Jagielski         //=================================================================
647*b1cdbd2cSJim Jagielski         //
648*b1cdbd2cSJim Jagielski         // Root: Supported commands
649*b1cdbd2cSJim Jagielski         //
650*b1cdbd2cSJim Jagielski         //=================================================================
651*b1cdbd2cSJim Jagielski 
652*b1cdbd2cSJim Jagielski         OSL_ENSURE( m_aProps.getType() == ROOT, "Wrong content type!" );
653*b1cdbd2cSJim Jagielski 
654*b1cdbd2cSJim Jagielski         static const ucb::CommandInfo aRootCommandInfoTable[] =
655*b1cdbd2cSJim Jagielski         {
656*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
657*b1cdbd2cSJim Jagielski             // Mandatory commands
658*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
659*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
660*b1cdbd2cSJim Jagielski                 rtl::OUString(
661*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getCommandInfo" ) ),
662*b1cdbd2cSJim Jagielski                 -1,
663*b1cdbd2cSJim Jagielski                 getCppuVoidType()
664*b1cdbd2cSJim Jagielski             ),
665*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
666*b1cdbd2cSJim Jagielski                 rtl::OUString(
667*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getPropertySetInfo" ) ),
668*b1cdbd2cSJim Jagielski                 -1,
669*b1cdbd2cSJim Jagielski                 getCppuVoidType()
670*b1cdbd2cSJim Jagielski             ),
671*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
672*b1cdbd2cSJim Jagielski                 rtl::OUString(
673*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "getPropertyValues" ) ),
674*b1cdbd2cSJim Jagielski                 -1,
675*b1cdbd2cSJim Jagielski                 getCppuType(
676*b1cdbd2cSJim Jagielski                     static_cast< uno::Sequence< beans::Property > * >( 0 ) )
677*b1cdbd2cSJim Jagielski             ),
678*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
679*b1cdbd2cSJim Jagielski                 rtl::OUString(
680*b1cdbd2cSJim Jagielski                     RTL_CONSTASCII_USTRINGPARAM( "setPropertyValues" ) ),
681*b1cdbd2cSJim Jagielski                 -1,
682*b1cdbd2cSJim Jagielski                 getCppuType(
683*b1cdbd2cSJim Jagielski                     static_cast<
684*b1cdbd2cSJim Jagielski                         uno::Sequence< beans::PropertyValue > * >( 0 ) )
685*b1cdbd2cSJim Jagielski             ),
686*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
687*b1cdbd2cSJim Jagielski             // Optional standard commands
688*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
689*b1cdbd2cSJim Jagielski             ucb::CommandInfo(
690*b1cdbd2cSJim Jagielski                 rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ),
691*b1cdbd2cSJim Jagielski                 -1,
692*b1cdbd2cSJim Jagielski                 getCppuType(
693*b1cdbd2cSJim Jagielski                     static_cast< ucb::OpenCommandArgument2 * >( 0 ) )
694*b1cdbd2cSJim Jagielski             )
695*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
696*b1cdbd2cSJim Jagielski             // New commands
697*b1cdbd2cSJim Jagielski             ///////////////////////////////////////////////////////////
698*b1cdbd2cSJim Jagielski         };
699*b1cdbd2cSJim Jagielski         return MAKECMDSEQUENCE( aRootCommandInfoTable );
700*b1cdbd2cSJim Jagielski     }
701*b1cdbd2cSJim Jagielski }
702