1/**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements.  See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership.  The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License.  You may obtain a copy of the License at
10 *
11 *   http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied.  See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24#ifndef __com_sun_star_inspection_XObjectInspector_idl__
25#define __com_sun_star_inspection_XObjectInspector_idl__
26
27#ifndef __com_sun_star_frame_XController_idl__
28#include <com/sun/star/frame/XController.idl>
29#endif
30#ifndef __com_sun_star_frame_XDispatchProvider_idl__
31#include <com/sun/star/frame/XDispatchProvider.idl>
32#endif
33#ifndef __com_sun_star_util_VetoException_idl__
34#include <com/sun/star/util/VetoException.idl>
35#endif
36
37//=============================================================================
38module com {  module sun {  module star {  module inspection {
39
40published interface XObjectInspectorModel;
41published interface XObjectInspectorUI;
42
43//-----------------------------------------------------------------------------
44/** describes the main interface of an <type>ObjectInspector</type>.
45
46    @see ObjectInspector
47
48    @since OpenOffice 2.0.3
49*/
50published interface XObjectInspector
51{
52    /** allows to plug the inspector into an <type scope="com::sun::star::frame">XFrame</type>
53
54        <p>The <member scope="com::sun::star::frame">XController::setModel</member> method
55        accepts only <type>XObjectInspectorModel</type>s, and will return <FALSE/> if the
56        to-be-attached model is not <NULL/>, but does not support this interface.</p>
57
58        <p>If you do not want to support a full-blown <type scope="com::sun::star::frame">XModel</type>,
59        use the <member>InspectorModel</member> attribute instead.</p>
60
61        <p>The <member scope="com::sun::star::frame">XController::getViewData</member> and
62        <member scope="com::sun::star::frame">XController::restoreViewData</member> exchange
63        string values, which describes as much of the current view state as possible.</p>
64    */
65    interface com::sun::star::frame::XController;
66
67    /** allows to intercept functionality
68
69        <p>This interface is inherited from the <type scope="com::sun::star::frame">Controller</type>
70        service, currently, there is no functionality to intercept at an <type>XObjectInspector</type>.</p>
71    */
72    interface com::sun::star::frame::XDispatchProvider;
73
74    /** provides access to the current model of the inspector
75
76        <p>The model is mainly responsible for providing the property handlers. Additionally,
77        it can provide user interface names and help URLs for property categories.</p>
78
79        <p>Note that there are two ways of setting or retrieving the current model: You can either
80        use <member scope="com::sun::star::frame">XModel::setModel</member>, or, if you do not want
81        or need to implement the full-blown <type scope="com::sun::star::frame">XModel</type> interface,
82        you can use this property directly. Both approaches are semantically equivalent.</p>
83
84        <p>If a new model is set at the inspector, the complete UI will be rebuilt to reflect
85        the change, using the new property handlers provided by the new model.</p>
86    */
87    [attribute] XObjectInspectorModel InspectorModel;
88
89    /** provides access to the user interface of the object inspector.
90
91        <p>This interface can be used to access and manipulate various aspects of
92        the user interface. For instance, you can enable and disable certain
93        property controls (or parts thereof), or register observers for all property
94        controls.</p>
95
96        @since OpenOffice 2.2
97    */
98    [attribute, readonly] XObjectInspectorUI InspectorUI;
99
100    /** inspects a new collection of one or more objects.
101
102        <p>If the sequence is empty, the UI of the <type>ObjectInspector</type> will be
103        cleared.</p>
104
105        <p>If the sequence contains more than one object, the <type>XObjectInspector</type>
106        will create a complete set of property handlers (as indicated by
107        <member>XObjectInspectorModel::HandlerFactories</member>) for <em>every</em> of
108        the objects, and compose their output.</p>
109
110        @throws com::sun::star::util::VetoException
111            if the inspector cannot switch to another object set. This typically happens if
112            one of the active <type>XPropertyHandler</type>'s raised a non-modal user interface,
113            and vetoed suspension of this UI.
114
115        @see XPropertyHandler::isComposable
116        @see XPropertyHandler::onInteractivePropertySelection
117        @see XPropertyHandler::suspend
118    */
119    void inspect( [in] sequence< com::sun::star::uno::XInterface > Objects )
120        raises (com::sun::star::util::VetoException);
121};
122
123//=============================================================================
124
125}; }; }; };
126
127#endif
128
129
130