diff options
Diffstat (limited to 'offapi/com/sun/star/frame/XModel.idl')
-rw-r--r-- | offapi/com/sun/star/frame/XModel.idl | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/offapi/com/sun/star/frame/XModel.idl b/offapi/com/sun/star/frame/XModel.idl new file mode 100644 index 000000000..17bd7337f --- /dev/null +++ b/offapi/com/sun/star/frame/XModel.idl @@ -0,0 +1,202 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ +#ifndef __com_sun_star_frame_XModel_idl__ +#define __com_sun_star_frame_XModel_idl__ + +#include <com/sun/star/lang/XComponent.idl> +#include <com/sun/star/beans/PropertyValue.idl> +#include <com/sun/star/frame/XController.idl> +#include <com/sun/star/container/NoSuchElementException.idl> +#include <com/sun/star/uno/XInterface.idl> + + + + module com { module sun { module star { module frame { + +/** represents a component which is created from a URL and arguments. + + <p> + It is a representation of a resource in the sense that it was + created/loaded from the resource. The arguments are passed to the loader + to modify its behavior. An example for such an argument is "AsTemplate", + which loads the resource as a template for a new document. + (see com::sun::star::document::MediaDescriptor for further details) + </p> + + <p> + Models can be controlled by controller components, which are usually + views of the model. + (see Controller for further details) + </p> + + <p> + If there is at least one controller, there is by definition a + current controller. And if that controller supports the interface + com::sun::star::view::XSelectionSupplier, it has a current selection too. + </p> + + @see com::sun::star::document::MediaDescriptor + @see Controller + @see com::sun::star::view::XSelectionSupplier + */ +published interface XModel: com::sun::star::lang::XComponent +{ + /** informs a model about its resource description. + + @param URL + specifies the resource + + @param Arguments + are optional arguments for that resource + (see com::sun::star::document::MediaDescriptor) + + @return + `TRUE` for success + <br> + `FALSE` otherwise + */ + boolean attachResource( + [in] string URL, + [in] sequence<com::sun::star::beans::PropertyValue> Arguments); + + /** provides information about the location of this model + + @returns + the URL of the resource which is represented by this model. + + @see XStorable::getLocation() + */ + string getURL(); + + /** provides read access on currently representation of the + com::sun::star::document::MediaDescriptor + of this model which describes the model and its state + + @returns + the arguments with which the model was originally created or + stored the last time. + */ + sequence< com::sun::star::beans::PropertyValue > getArgs(); + + /** is called whenever a new controller is created for this model. + + <p> + The com::sun::star::lang::XComponent interface + of the controller must be used to recognize when it is deleted. + </p> + + @param Controller + a new controller for this model + + @see XModel::disconnectController() + */ + void connectController( [in] XController Controller ); + + /** is called whenever an existing controller should be deregistered at this model. + + <p> + The com::sun::star::lang::XComponent interface + of the controller must be used to recognize when it is deleted. + </p> + + @param Controller + the existing controller which should be deregistered + + @see XModel::connectController() + */ + void disconnectController( [in] XController Controller ); + + /** suspends some notifications to the controllers which are used + for display updates. + + <p> + The calls to XModel::lockControllers() and + XModel::unlockControllers() may be + nested and even overlapping, but they must be in pairs. While + there is at least one lock remaining, some notifications + for display updates are not broadcasted. + </p> + */ + void lockControllers(); + + /** resumes the notifications which were suspended by + XModel::lockControllers(). + + <p> + The calls to XModel::lockControllers() and + XModel::unlockControllers() may be + nested and even overlapping, but they must be in pairs. While + there is at least one lock remaining, some notifications for + display updates are not broadcasted. + </p> + */ + void unlockControllers(); + + /** determines if there is at least one lock remaining. + + <p> + While there is at least one lock remaining, some notifications + for display updates are not broadcasted to the controllers. + </p> + + @return + `TRUE` if any lock exist + <br> + `FALSE` otherwise + */ + boolean hasControllersLocked(); + + /** provides access to the controller which currently controls this model + + @returns + If the controller which is active is a controller of this model, + it will be returned. If not, the controller which was the last + active of this model is returned. If no controller of this model + ever was active, the controller first registered is returned. If no + controller is registered for this model, `NULL` is returned. + */ + XController getCurrentController(); + + /** sets a registered controller as the current controller. + + @param Controller + reference to an already existing connected controller, which should be + the new active one + + @throws com::sun::star::container::NoSuchElementException + if <var>xController</var> isn't an already connected controller on this model + */ + void setCurrentController( [in] XController Controller ) + raises( com::sun::star::container::NoSuchElementException ); + + /** provides read access on current selection on controller + + @returns + the current selection in the current controller. + If there is no current controller, it returns `NULL`. + */ + com::sun::star::uno::XInterface getCurrentSelection(); +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |