xref: /aoo4110/main/offapi/com/sun/star/frame/XModel.idl (revision b1cdbd2c)
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_XModel_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_frame_XModel_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_XComponent_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/XComponent.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_PropertyValue_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/beans/PropertyValue.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_frame_XController_idl__
35*b1cdbd2cSJim Jagielski#include <com/sun/star/frame/XController.idl>
36*b1cdbd2cSJim Jagielski#endif
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_container_NoSuchElementException_idl__
39*b1cdbd2cSJim Jagielski#include <com/sun/star/container/NoSuchElementException.idl>
40*b1cdbd2cSJim Jagielski#endif
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_XInterface_idl__
43*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl>
44*b1cdbd2cSJim Jagielski#endif
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielski//=============================================================================
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski module com {  module sun {  module star {  module frame {
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski//=============================================================================
52*b1cdbd2cSJim Jagielski/** represents a component which is created from an URL and arguments.
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielski    <p>
55*b1cdbd2cSJim Jagielski    It is a representation of a resource in the sense that it was
56*b1cdbd2cSJim Jagielski    created/loaded from the resource. The arguments are passed to the loader
57*b1cdbd2cSJim Jagielski    to modify its behavior. An example for such an argument is "AsTemplate",
58*b1cdbd2cSJim Jagielski    which loads the resource as a template for a new document.
59*b1cdbd2cSJim Jagielski    (see <type scope="com::sun::star::document">MediaDescriptor</type> for further details)
60*b1cdbd2cSJim Jagielski    </p>
61*b1cdbd2cSJim Jagielski
62*b1cdbd2cSJim Jagielski    <p>
63*b1cdbd2cSJim Jagielski    Models can be controlled by controller components, which are usually
64*b1cdbd2cSJim Jagielski    views of the model.
65*b1cdbd2cSJim Jagielski    (see <type>Controller</type> for further details)
66*b1cdbd2cSJim Jagielski    </p>
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski    <p>
69*b1cdbd2cSJim Jagielski    If there is at least one controller, there is by definition a
70*b1cdbd2cSJim Jagielski    current controller. And if that controller supports the interface
71*b1cdbd2cSJim Jagielski    <type scope="com::sun::star::view">XSelectionSupplier</type>, it has a current selection too.
72*b1cdbd2cSJim Jagielski    </p>
73*b1cdbd2cSJim Jagielski
74*b1cdbd2cSJim Jagielski    @see com::sun::star::document::MediaDescriptor
75*b1cdbd2cSJim Jagielski    @see Controller
76*b1cdbd2cSJim Jagielski    @see com::sun::star::view::XSelectionSupplier
77*b1cdbd2cSJim Jagielski */
78*b1cdbd2cSJim Jagielskipublished interface XModel: com::sun::star::lang::XComponent
79*b1cdbd2cSJim Jagielski{
80*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
81*b1cdbd2cSJim Jagielski	/** informs a model about its resource description.
82*b1cdbd2cSJim Jagielski
83*b1cdbd2cSJim Jagielski        @param URL
84*b1cdbd2cSJim Jagielski            specifies the ressource
85*b1cdbd2cSJim Jagielski
86*b1cdbd2cSJim Jagielski        @param Arguments
87*b1cdbd2cSJim Jagielski            are optional arguments for that ressource
88*b1cdbd2cSJim Jagielski            (see <type scope="com::sun::star::document">MediaDescriptor</type>)
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim Jagielski        @return
91*b1cdbd2cSJim Jagielski            <TRUE/> for success
92*b1cdbd2cSJim Jagielski            <br>
93*b1cdbd2cSJim Jagielski            <FALSE/> otherwise
94*b1cdbd2cSJim Jagielski	 */
95*b1cdbd2cSJim Jagielski    boolean attachResource(
96*b1cdbd2cSJim Jagielski        [in] string URL,
97*b1cdbd2cSJim Jagielski        [in] sequence<com::sun::star::beans::PropertyValue> Arguments);
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
100*b1cdbd2cSJim Jagielski    /** provides information about the location of this model
101*b1cdbd2cSJim Jagielski
102*b1cdbd2cSJim Jagielski        @returns
103*b1cdbd2cSJim Jagielski            the URL of the resource which is represented by this model.
104*b1cdbd2cSJim Jagielski
105*b1cdbd2cSJim Jagielski        @see XStorable::getLocation()
106*b1cdbd2cSJim Jagielski	 */
107*b1cdbd2cSJim Jagielski	string getURL();
108*b1cdbd2cSJim Jagielski
109*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
110*b1cdbd2cSJim Jagielski    /** provides read acces on currently representation of the
111*b1cdbd2cSJim Jagielski        <type scope="com::sun::star::document">MediaDescriptor</type>
112*b1cdbd2cSJim Jagielski        of this model which describes the model and his state
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski        @returns
115*b1cdbd2cSJim Jagielski            the arguments with which the model was originally created or
116*b1cdbd2cSJim Jagielski            stored the last time.
117*b1cdbd2cSJim Jagielski	 */
118*b1cdbd2cSJim Jagielski    sequence< com::sun::star::beans::PropertyValue > getArgs();
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
121*b1cdbd2cSJim Jagielski	/** is called whenever a new controller is created for this model.
122*b1cdbd2cSJim Jagielski
123*b1cdbd2cSJim Jagielski        <p>
124*b1cdbd2cSJim Jagielski        The <type scope="com::sun::star::lang">XComponent</type> interface
125*b1cdbd2cSJim Jagielski        of the controller must be used to recognize when it is deleted.
126*b1cdbd2cSJim Jagielski        </p>
127*b1cdbd2cSJim Jagielski
128*b1cdbd2cSJim Jagielski        @param Controller
129*b1cdbd2cSJim Jagielski            a new controller for this model
130*b1cdbd2cSJim Jagielski
131*b1cdbd2cSJim Jagielski        @see XModel::disconnectController()
132*b1cdbd2cSJim Jagielski	 */
133*b1cdbd2cSJim Jagielski    [oneway] void connectController( [in] XController Controller );
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
136*b1cdbd2cSJim Jagielski    /** is called whenever an existing controller should be deregistered at this model.
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski        <p>
139*b1cdbd2cSJim Jagielski        The <type scope="com::sun::star::lang">XComponent</type> interface
140*b1cdbd2cSJim Jagielski        of the controller must be used to recognize when it is deleted.
141*b1cdbd2cSJim Jagielski        </p>
142*b1cdbd2cSJim Jagielski
143*b1cdbd2cSJim Jagielski        @param Controller
144*b1cdbd2cSJim Jagielski            the existing controller which should be deregistered
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski        @see XModel::connectController()
147*b1cdbd2cSJim Jagielski	 */
148*b1cdbd2cSJim Jagielski    [oneway] void disconnectController( [in] XController Controller );
149*b1cdbd2cSJim Jagielski
150*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
151*b1cdbd2cSJim Jagielski	/** suspends some notifications to the controllers which are used
152*b1cdbd2cSJim Jagielski		for display updates.
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim Jagielski        <p>
155*b1cdbd2cSJim Jagielski        The calls to <member>XModel::lockControllers()</member> and
156*b1cdbd2cSJim Jagielski        <member>XModel::unlockControllers()</member> may be
157*b1cdbd2cSJim Jagielski		nested and even overlapping, but they must be in pairs. While
158*b1cdbd2cSJim Jagielski		there is at least one lock remaining, some notifications
159*b1cdbd2cSJim Jagielski        for display updates are not broadcasted.
160*b1cdbd2cSJim Jagielski        </p>
161*b1cdbd2cSJim Jagielski     */
162*b1cdbd2cSJim Jagielski	[oneway] void lockControllers();
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
165*b1cdbd2cSJim Jagielski	/** resumes the notifications which were suspended by
166*b1cdbd2cSJim Jagielski        <member>XModel::lockControllers()</member>.
167*b1cdbd2cSJim Jagielski
168*b1cdbd2cSJim Jagielski        <p>
169*b1cdbd2cSJim Jagielski        The calls to <member>XModel::lockControllers()</member> and
170*b1cdbd2cSJim Jagielski        <member>XModel::unlockControllers()</member> may be
171*b1cdbd2cSJim Jagielski		nested and even overlapping, but they must be in pairs. While
172*b1cdbd2cSJim Jagielski		there is at least one lock remaining, some notifications for
173*b1cdbd2cSJim Jagielski		display updates are not broadcasted.
174*b1cdbd2cSJim Jagielski        </p>
175*b1cdbd2cSJim Jagielski	*/
176*b1cdbd2cSJim Jagielski	[oneway] void unlockControllers();
177*b1cdbd2cSJim Jagielski
178*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
179*b1cdbd2cSJim Jagielski	/** determines if there is at least one lock remaining.
180*b1cdbd2cSJim Jagielski
181*b1cdbd2cSJim Jagielski        <p>
182*b1cdbd2cSJim Jagielski        While there is at least one lock remaining, some notifications
183*b1cdbd2cSJim Jagielski        for display updates are not broadcasted to the controllers.
184*b1cdbd2cSJim Jagielski        </p>
185*b1cdbd2cSJim Jagielski
186*b1cdbd2cSJim Jagielski        @return
187*b1cdbd2cSJim Jagielski            <TRUE/> if any lock exist
188*b1cdbd2cSJim Jagielski            <br>
189*b1cdbd2cSJim Jagielski            <FALSE/> otherwise
190*b1cdbd2cSJim Jagielski	 */
191*b1cdbd2cSJim Jagielski	boolean hasControllersLocked();
192*b1cdbd2cSJim Jagielski
193*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
194*b1cdbd2cSJim Jagielski    /** provides access to the controller which currently controls this model
195*b1cdbd2cSJim Jagielski
196*b1cdbd2cSJim Jagielski        @returns
197*b1cdbd2cSJim Jagielski            If the controller which is active is a controller of this model,
198*b1cdbd2cSJim Jagielski            it will be returned. If not, the controller which was the last
199*b1cdbd2cSJim Jagielski            active of this model is returned. If no controller of this model
200*b1cdbd2cSJim Jagielski            ever was active, the controller first registered is returned. If no
201*b1cdbd2cSJim Jagielski            controller is registered for this model, <NULL/> is returned.
202*b1cdbd2cSJim Jagielski	 */
203*b1cdbd2cSJim Jagielski    XController getCurrentController();
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
206*b1cdbd2cSJim Jagielski	/** sets a registered controller as the current controller.
207*b1cdbd2cSJim Jagielski
208*b1cdbd2cSJim Jagielski        @param Controller
209*b1cdbd2cSJim Jagielski            reference to an already existing connected controller, which should be
210*b1cdbd2cSJim Jagielski            the new active one
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski        @throws com::sun::star::container::NoSuchElementException
213*b1cdbd2cSJim Jagielski            if <var>xController</var> isn't an already connected controller on this model
214*b1cdbd2cSJim Jagielski	 */
215*b1cdbd2cSJim Jagielski    void setCurrentController( [in] XController Controller )
216*b1cdbd2cSJim Jagielski			raises( com::sun::star::container::NoSuchElementException );
217*b1cdbd2cSJim Jagielski
218*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
219*b1cdbd2cSJim Jagielski    /** provides read access on current selection on controller
220*b1cdbd2cSJim Jagielski
221*b1cdbd2cSJim Jagielski        @returns
222*b1cdbd2cSJim Jagielski            the current selection in the current controller.
223*b1cdbd2cSJim Jagielski            If there is no current controller, it returns <NULL/>.
224*b1cdbd2cSJim Jagielski	 */
225*b1cdbd2cSJim Jagielski	com::sun::star::uno::XInterface getCurrentSelection();
226*b1cdbd2cSJim Jagielski};
227*b1cdbd2cSJim Jagielski
228*b1cdbd2cSJim Jagielski//=============================================================================
229*b1cdbd2cSJim Jagielski
230*b1cdbd2cSJim Jagielski}; }; }; };
231*b1cdbd2cSJim Jagielski
232*b1cdbd2cSJim Jagielski#endif
233