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#ifndef __com_sun_star_frame_XDocumentTemplates_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_frame_XDocumentTemplates_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_frame_XStorable_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/frame/XStorable.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_ucb_XContent_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/ucb/XContent.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski//=============================================================================
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielskimodule com {  module sun {  module star {  module frame {
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski//=============================================================================
39*b1cdbd2cSJim Jagielski/** provides a high level api to organize document templates
40*b1cdbd2cSJim Jagielski
41*b1cdbd2cSJim Jagielski    <p>
42*b1cdbd2cSJim Jagielski    Template informations are saved as links to the original content
43*b1cdbd2cSJim Jagielski    and organized in groups. This data should be persistent and can be
44*b1cdbd2cSJim Jagielski    updated by calling special method <member>XDocumentTemplates::update()</member>.
45*b1cdbd2cSJim Jagielski    A real implementation of this interface can do that on top of
46*b1cdbd2cSJim Jagielski    an ucb content provider. Method <member>XDocumentTemplates::getContent()</member>
47*b1cdbd2cSJim Jagielski    force that.
48*b1cdbd2cSJim Jagielski    </p>
49*b1cdbd2cSJim Jagielski */
50*b1cdbd2cSJim Jagielskipublished interface XDocumentTemplates:  com::sun::star::uno::XInterface
51*b1cdbd2cSJim Jagielski{
52*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
53*b1cdbd2cSJim Jagielski    /** privides access to the root of internal used hierarchy
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielski        <p>
56*b1cdbd2cSJim Jagielski        This content can be used for accessing the groups directly.
57*b1cdbd2cSJim Jagielski        </p>
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski        @return
60*b1cdbd2cSJim Jagielski            the ucb content for template configuration
61*b1cdbd2cSJim Jagielski	 */
62*b1cdbd2cSJim Jagielski    com::sun::star::ucb::XContent getContent();
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
65*b1cdbd2cSJim Jagielski	/** creates the template with the given name in the given group using the
66*b1cdbd2cSJim Jagielski        data from the storable
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski        @param GroupName
69*b1cdbd2cSJim Jagielski            specifies the group
70*b1cdbd2cSJim Jagielski
71*b1cdbd2cSJim Jagielski        @param TemplateName
72*b1cdbd2cSJim Jagielski            specifies the template
73*b1cdbd2cSJim Jagielski
74*b1cdbd2cSJim Jagielski        @param Storable
75*b1cdbd2cSJim Jagielski            specifies the target
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski        @return
78*b1cdbd2cSJim Jagielski            <TRUE/> if operation was sucessfully
79*b1cdbd2cSJim Jagielski            <br>
80*b1cdbd2cSJim Jagielski            <FALSE/> otherwise
81*b1cdbd2cSJim Jagielski
82*b1cdbd2cSJim Jagielski        @see XDocumentTemplates::addTemplate()
83*b1cdbd2cSJim Jagielski	 */
84*b1cdbd2cSJim Jagielski    boolean storeTemplate(
85*b1cdbd2cSJim Jagielski        [in] string GroupName,
86*b1cdbd2cSJim Jagielski        [in] string TemplateName,
87*b1cdbd2cSJim Jagielski        [in] XStorable Storable);
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
90*b1cdbd2cSJim Jagielski	/** creates the template with the given name in the given group using the
91*b1cdbd2cSJim Jagielski        given URL
92*b1cdbd2cSJim Jagielski
93*b1cdbd2cSJim Jagielski        @param GroupName
94*b1cdbd2cSJim Jagielski            specifies the group
95*b1cdbd2cSJim Jagielski
96*b1cdbd2cSJim Jagielski        @param TemplateName
97*b1cdbd2cSJim Jagielski            specifies the template
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski        @param SourceURL
100*b1cdbd2cSJim Jagielski            specifies the position of template
101*b1cdbd2cSJim Jagielski
102*b1cdbd2cSJim Jagielski        @return
103*b1cdbd2cSJim Jagielski            <TRUE/> if operation was sucessfully
104*b1cdbd2cSJim Jagielski            <br>
105*b1cdbd2cSJim Jagielski            <FALSE/> otherwise
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski        @see XDocumentTemplates::storeTemplate()
108*b1cdbd2cSJim Jagielski	 */
109*b1cdbd2cSJim Jagielski    boolean addTemplate(
110*b1cdbd2cSJim Jagielski        [in] string GroupName,
111*b1cdbd2cSJim Jagielski        [in] string TemplateName,
112*b1cdbd2cSJim Jagielski        [in] string SourceURL);
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
115*b1cdbd2cSJim Jagielski    /** remove a template from specified group
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski        @param GroupName
118*b1cdbd2cSJim Jagielski            specifies the group which include the template
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski        @param TemplateName
121*b1cdbd2cSJim Jagielski            specifies the template for delete
122*b1cdbd2cSJim Jagielski
123*b1cdbd2cSJim Jagielski        @return
124*b1cdbd2cSJim Jagielski            <TRUE/> if operation was sucessfully
125*b1cdbd2cSJim Jagielski            <br>
126*b1cdbd2cSJim Jagielski            <FALSE/> otherwise
127*b1cdbd2cSJim Jagielski	 */
128*b1cdbd2cSJim Jagielski    boolean removeTemplate(
129*b1cdbd2cSJim Jagielski        [in] string GroupName,
130*b1cdbd2cSJim Jagielski        [in] string TemplateName);
131*b1cdbd2cSJim Jagielski
132*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
133*b1cdbd2cSJim Jagielski    /** rename a template inside specified group
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski        @param GroupName
136*b1cdbd2cSJim Jagielski            specifies the group which include the template
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski        @param TemplateName
139*b1cdbd2cSJim Jagielski            specifies the template for renaming
140*b1cdbd2cSJim Jagielski
141*b1cdbd2cSJim Jagielski        @return
142*b1cdbd2cSJim Jagielski            <TRUE/> if operation was sucessfully
143*b1cdbd2cSJim Jagielski            <br>
144*b1cdbd2cSJim Jagielski            <FALSE/> otherwise
145*b1cdbd2cSJim Jagielski	 */
146*b1cdbd2cSJim Jagielski    boolean renameTemplate(
147*b1cdbd2cSJim Jagielski        [in] string GroupName,
148*b1cdbd2cSJim Jagielski        [in] string OldTemplateName,
149*b1cdbd2cSJim Jagielski        [in] string NewTemplateName);
150*b1cdbd2cSJim Jagielski
151*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
152*b1cdbd2cSJim Jagielski    /** creates a new group
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim Jagielski		@param GroupName
155*b1cdbd2cSJim Jagielski            the name of the group to be created
156*b1cdbd2cSJim Jagielski
157*b1cdbd2cSJim Jagielski		@return
158*b1cdbd2cSJim Jagielski            <TRUE/> if operation was sucessfully
159*b1cdbd2cSJim Jagielski            <br>
160*b1cdbd2cSJim Jagielski            <FALSE/> otherwise
161*b1cdbd2cSJim Jagielski	*/
162*b1cdbd2cSJim Jagielski    boolean addGroup( [in] string GroupName );
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
165*b1cdbd2cSJim Jagielski    /** remove an existing group
166*b1cdbd2cSJim Jagielski
167*b1cdbd2cSJim Jagielski		@param GroupName
168*b1cdbd2cSJim Jagielski            the name of the group to be removed
169*b1cdbd2cSJim Jagielski
170*b1cdbd2cSJim Jagielski		@return
171*b1cdbd2cSJim Jagielski            <TRUE/> if operation was sucessfully
172*b1cdbd2cSJim Jagielski            <br>
173*b1cdbd2cSJim Jagielski            <FALSE/> otherwise
174*b1cdbd2cSJim Jagielski	 */
175*b1cdbd2cSJim Jagielski    boolean removeGroup( [in] string GroupName );
176*b1cdbd2cSJim Jagielski
177*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
178*b1cdbd2cSJim Jagielski    /** rename an existing group
179*b1cdbd2cSJim Jagielski
180*b1cdbd2cSJim Jagielski        @param OldGroupName
181*b1cdbd2cSJim Jagielski            the old name of the group
182*b1cdbd2cSJim Jagielski
183*b1cdbd2cSJim Jagielski        @param NewGroupName
184*b1cdbd2cSJim Jagielski            the new name of the group
185*b1cdbd2cSJim Jagielski
186*b1cdbd2cSJim Jagielski		@return
187*b1cdbd2cSJim Jagielski            <TRUE/> if operation was sucessfully
188*b1cdbd2cSJim Jagielski            <br>
189*b1cdbd2cSJim Jagielski            <FALSE/> otherwise
190*b1cdbd2cSJim Jagielski	 */
191*b1cdbd2cSJim Jagielski    boolean renameGroup(
192*b1cdbd2cSJim Jagielski        [in] string OldGroupName,
193*b1cdbd2cSJim Jagielski        [in] string NewGroupName);
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
196*b1cdbd2cSJim Jagielski    /** force an update for internal structures
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim Jagielski        <p>
199*b1cdbd2cSJim Jagielski        Because the templates are well known by links and not as direct content
200*b1cdbd2cSJim Jagielski        they can be outdated. An update force actualization of that to find
201*b1cdbd2cSJim Jagielski        wrong links.
202*b1cdbd2cSJim Jagielski        </p>
203*b1cdbd2cSJim Jagielski	 */
204*b1cdbd2cSJim Jagielski    [oneway] void update();
205*b1cdbd2cSJim Jagielski};
206*b1cdbd2cSJim Jagielski
207*b1cdbd2cSJim Jagielski//=============================================================================
208*b1cdbd2cSJim Jagielski
209*b1cdbd2cSJim Jagielski}; }; }; };
210*b1cdbd2cSJim Jagielski
211*b1cdbd2cSJim Jagielski#endif
212