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