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
24*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_document_XDocumentEventBroadcaster_idl__
25*b1cdbd2cSJim Jagielski#define __com_sun_star_document_XDocumentEventBroadcaster_idl__
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_frame_XController2_idl__
28*b1cdbd2cSJim Jagielski#include <com/sun/star/frame/XController2.idl>
29*b1cdbd2cSJim Jagielski#endif
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_document_DocumentEvent_idl__
32*b1cdbd2cSJim Jagielski#include <com/sun/star/document/DocumentEvent.idl>
33*b1cdbd2cSJim Jagielski#endif
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
36*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/IllegalArgumentException.idl>
37*b1cdbd2cSJim Jagielski#endif
38*b1cdbd2cSJim Jagielski
39*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_NoSupportException_idl__
40*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/NoSupportException.idl>
41*b1cdbd2cSJim Jagielski#endif
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski//=============================================================================
44*b1cdbd2cSJim Jagielski
45*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module document {
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielskipublished interface XDocumentEventListener;
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski//=============================================================================
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski/** allows to be notified of events happening in an <type>OfficeDocument</type>, and to cause notification
52*b1cdbd2cSJim Jagielski    of such events.
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielski    <p>This interface is the successor of the XEventBroadcaster interface, which should not be used
55*b1cdbd2cSJim Jagielski    anymore.</p>
56*b1cdbd2cSJim Jagielski
57*b1cdbd2cSJim Jagielski    @see DocumentEvent
58*b1cdbd2cSJim Jagielski    @since OpenOffice 3.1
59*b1cdbd2cSJim Jagielski*/
60*b1cdbd2cSJim Jagielskipublished interface XDocumentEventBroadcaster
61*b1cdbd2cSJim Jagielski{
62*b1cdbd2cSJim Jagielski    /** registers a listener which is notified about document events
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielski        @param _Listener
65*b1cdbd2cSJim Jagielski            the listener to register. The behaviour of the method is undefined this listener
66*b1cdbd2cSJim Jagielski            is <NULL/>.
67*b1cdbd2cSJim Jagielski    */
68*b1cdbd2cSJim Jagielski    void    addDocumentEventListener( [in] XDocumentEventListener _Listener );
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski    /** revokes a listener which has previously been registered to be notified about document events.
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielski        @param _Listener
73*b1cdbd2cSJim Jagielski            the listener to revoke. The behaviour of the method is undefined this listener
74*b1cdbd2cSJim Jagielski            is <NULL/>.
75*b1cdbd2cSJim Jagielski    */
76*b1cdbd2cSJim Jagielski    void    removeDocumentEventListener( [in] XDocumentEventListener _Listener );
77*b1cdbd2cSJim Jagielski
78*b1cdbd2cSJim Jagielski    /** causes the broadcaster to notify all registered listeners of the given event
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielski        <p>The method will create a <type>DocumentEvent</type> instance with the given parameters,
81*b1cdbd2cSJim Jagielski        and fill in the <code>Source</code> member (denoting the broadcaster) as appropriate.</p>
82*b1cdbd2cSJim Jagielski
83*b1cdbd2cSJim Jagielski        <p>Whether the actual notification happens synchronously or asynchronously is up to the
84*b1cdbd2cSJim Jagielski        implementator of this method. However, implementations are encouraged to specify this, for the
85*b1cdbd2cSJim Jagielski        list of supported event types, in their service contract.</p>
86*b1cdbd2cSJim Jagielski
87*b1cdbd2cSJim Jagielski        <p>Implementations might also decide to limit the list of allowed events (means event names) at
88*b1cdbd2cSJim Jagielski        their own discretion. Again, in this case they're encouraged to document this in their service
89*b1cdbd2cSJim Jagielski        contract.</p>
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski        @param _EventName
92*b1cdbd2cSJim Jagielski            the name of the event to be notified.
93*b1cdbd2cSJim Jagielski        @param _ViewController
94*b1cdbd2cSJim Jagielski            the view/controller which the event applies to. May be <NULL/>
95*b1cdbd2cSJim Jagielski        @param _Supplement
96*b1cdbd2cSJim Jagielski            supplemental information related to the event.
97*b1cdbd2cSJim Jagielski
98*b1cdbd2cSJim Jagielski        @throws ::com::sun::star::lang::IllegalArgumentException
99*b1cdbd2cSJim Jagielski            if <arg>_EventName</arg> is empty, or if <arg>_EventName</arg> is not supported by the
100*b1cdbd2cSJim Jagielski            document implementation.
101*b1cdbd2cSJim Jagielski
102*b1cdbd2cSJim Jagielski        @throws ::com::sun::star::lang::NoSupportException
103*b1cdbd2cSJim Jagielski            if the broadcaster implementation does not supported broadcasting events induced externally.
104*b1cdbd2cSJim Jagielski            This is usually used for components which multiplex events from multiple sources, and thus would
105*b1cdbd2cSJim Jagielski            be unable to fill in the <code>Source</code> member of the <type>DocumentEvent</type> instance.
106*b1cdbd2cSJim Jagielski    */
107*b1cdbd2cSJim Jagielski    void    notifyDocumentEvent(
108*b1cdbd2cSJim Jagielski                [in] string _EventName,
109*b1cdbd2cSJim Jagielski                [in] ::com::sun::star::frame::XController2 _ViewController,
110*b1cdbd2cSJim Jagielski                [in] any _Supplement
111*b1cdbd2cSJim Jagielski            )
112*b1cdbd2cSJim Jagielski            raises ( ::com::sun::star::lang::IllegalArgumentException,
113*b1cdbd2cSJim Jagielski                     ::com::sun::star::lang::NoSupportException );
114*b1cdbd2cSJim Jagielski};
115*b1cdbd2cSJim Jagielski
116*b1cdbd2cSJim Jagielski//=============================================================================
117*b1cdbd2cSJim Jagielski
118*b1cdbd2cSJim Jagielski}; }; }; };
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski//=============================================================================
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski#endif
123