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_XDispatch_idl__
24*b1cdbd2cSJim Jagielski#define __com_sun_star_frame_XDispatch_idl__
25*b1cdbd2cSJim Jagielski
26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_XInterface_idl__
27*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl>
28*b1cdbd2cSJim Jagielski#endif
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_util_URL_idl__
31*b1cdbd2cSJim Jagielski#include <com/sun/star/util/URL.idl>
32*b1cdbd2cSJim Jagielski#endif
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_PropertyValue_idl__
35*b1cdbd2cSJim Jagielski#include <com/sun/star/beans/PropertyValue.idl>
36*b1cdbd2cSJim Jagielski#endif
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_frame_XStatusListener_idl__
39*b1cdbd2cSJim Jagielski#include <com/sun/star/frame/XStatusListener.idl>
40*b1cdbd2cSJim Jagielski#endif
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski//=============================================================================
44*b1cdbd2cSJim Jagielski
45*b1cdbd2cSJim Jagielskimodule com {  module sun {  module star {  module frame {
46*b1cdbd2cSJim Jagielski
47*b1cdbd2cSJim Jagielski//=============================================================================
48*b1cdbd2cSJim Jagielski/** serves state information of objects which can be connected to
49*b1cdbd2cSJim Jagielski        controls (e.g. toolbox controls).
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielski    <p>
52*b1cdbd2cSJim Jagielski    Each state change is to be broadcasted to all registered
53*b1cdbd2cSJim Jagielski	status listeners. The first notification should be performed
54*b1cdbd2cSJim Jagielski    synchronously from <member>XDispatch::addStatusListener()</member>;
55*b1cdbd2cSJim Jagielski        if not, controls may flicker. State listener must be aware of this
56*b1cdbd2cSJim Jagielski    synchronous notification.
57*b1cdbd2cSJim Jagielski    </p>
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski    <p>
60*b1cdbd2cSJim Jagielski    The state consists of enabled/disabled and a short descriptive text
61*b1cdbd2cSJim Jagielski	of the function (e.g. "undo insert character"). It is to be broadcasted
62*b1cdbd2cSJim Jagielski        whenever this state changes or the control should re-get the value
63*b1cdbd2cSJim Jagielski	for the URL it is connected to. Additionally, a context-switch-event
64*b1cdbd2cSJim Jagielski	is to be broadcasted whenever the object may be out of scope,
65*b1cdbd2cSJim Jagielski    to force the state listener to requery the <type>XDispatch</type>.
66*b1cdbd2cSJim Jagielski    </p>
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski    @see Frame
69*b1cdbd2cSJim Jagielski    @see FeatureStateEvent
70*b1cdbd2cSJim Jagielski */
71*b1cdbd2cSJim Jagielskipublished interface XDispatch: com::sun::star::uno::XInterface
72*b1cdbd2cSJim Jagielski{
73*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
74*b1cdbd2cSJim Jagielski	/** dispatches (executes) an URL asynchronously.
75*b1cdbd2cSJim Jagielski
76*b1cdbd2cSJim Jagielski        <p>
77*b1cdbd2cSJim Jagielski        It is only allowed to dispatch URLs for which this <type>XDispatch</type>
78*b1cdbd2cSJim Jagielski        was explicitely queried. Additional arguments ("'#..." or "?...") are allowed.
79*b1cdbd2cSJim Jagielski        </p>
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski        @param URL
82*b1cdbd2cSJim Jagielski            fully parsed URL describing the feature which should be dispatched (=executed)
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielski        @param Arguments
85*b1cdbd2cSJim Jagielski            optional arguments for this request.
86*b1cdbd2cSJim Jagielski            They depend on the real implementation of the dipsatch object.
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielski        @example
89*b1cdbd2cSJim Jagielski            <listing>
90*b1cdbd2cSJim Jagielski            <i><font COLOR="#949494">// some code for a click-handler (Java)</font></i>
91*b1cdbd2cSJim Jagielski            void <strong>myOnClick</strong>(<em>String</em> sURL,<em>String</em> sTargetFrame,<em>com.sun.star.beans.PropertyValue[]</em> lArguments)
92*b1cdbd2cSJim Jagielski            {
93*b1cdbd2cSJim Jagielski            &nbsp;&nbsp;com.sun.star.util.URL[] aURL = new com.sun.star.util.URL[1];
94*b1cdbd2cSJim Jagielski            &nbsp;&nbsp;aURL[0] = new com.sun.star.util.URL();
95*b1cdbd2cSJim Jagielski            &nbsp;&nbsp;aURL[0].Complete = sURL;
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski            &nbsp;&nbsp;com.sun.star.util.XURLTransformer xParser = (com.sun.star.util.XURLTransformer)UnoRuntime.queryInterface(
98*b1cdbd2cSJim Jagielski            &nbsp;&nbsp;&nbsp;&nbsp;com.sun.star.util.XURLTransformer.class,
99*b1cdbd2cSJim Jagielski            &nbsp;&nbsp;&nbsp;&nbsp;mxServiceManager.createInstance("com.sun.star.util.URLTransformer"));
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski            &nbsp;&nbsp;xParser.parseStrict(aURL);
102*b1cdbd2cSJim Jagielski
103*b1cdbd2cSJim Jagielski            &nbsp;&nbsp;com.sun.star.frame.XDispatch xDispatcher = mxFrame.queryDispatch(aURL[0], sTargetFrame, com.sun.star.frame.FrameSearchFlag.GLOBAL);
104*b1cdbd2cSJim Jagielski
105*b1cdbd2cSJim Jagielski            &nbsp;&nbsp;if(xDispatcher!=null)
106*b1cdbd2cSJim Jagielski            &nbsp;&nbsp;&nbsp;&nbsp;xDispatcher.dispatch(aURL[0], lArguments);
107*b1cdbd2cSJim Jagielski            }
108*b1cdbd2cSJim Jagielski            </listing>
109*b1cdbd2cSJim Jagielski	 */
110*b1cdbd2cSJim Jagielski    [oneway] void dispatch(
111*b1cdbd2cSJim Jagielski        [in] com::sun::star::util::URL URL,
112*b1cdbd2cSJim Jagielski        [in] sequence<com::sun::star::beans::PropertyValue> Arguments);
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
115*b1cdbd2cSJim Jagielski        /** registers a listener of a control for a specific URL
116*b1cdbd2cSJim Jagielski		at this object to receive status events.
117*b1cdbd2cSJim Jagielski
118*b1cdbd2cSJim Jagielski        <p>
119*b1cdbd2cSJim Jagielski        It is only allowed to register URLs for which this <type>XDispatch</type>
120*b1cdbd2cSJim Jagielski        was explicitely queried. Additional arguments ("#..." or "?...") will be ignored.
121*b1cdbd2cSJim Jagielski        </p>
122*b1cdbd2cSJim Jagielski        Note: Notifications can't be guaranteed! This will be a part of interface <type>XNotifyingDispatch</type>.
123*b1cdbd2cSJim Jagielski
124*b1cdbd2cSJim Jagielski        @param Control
125*b1cdbd2cSJim Jagielski            listener that wishes to be informed
126*b1cdbd2cSJim Jagielski
127*b1cdbd2cSJim Jagielski        @param URL
128*b1cdbd2cSJim Jagielski            the URL (without additional arguments) the listener wishes to be registered for.
129*b1cdbd2cSJim Jagielski            A listener can be registered for more than one URL at the same time.
130*b1cdbd2cSJim Jagielski
131*b1cdbd2cSJim Jagielski        @see XStatusListener
132*b1cdbd2cSJim Jagielski        @see XDispatch::removeStatusListener()
133*b1cdbd2cSJim Jagielski	 */
134*b1cdbd2cSJim Jagielski    [oneway] void addStatusListener(
135*b1cdbd2cSJim Jagielski        [in] XStatusListener Control,
136*b1cdbd2cSJim Jagielski        [in] com::sun::star::util::URL URL);
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski	//-------------------------------------------------------------------------
139*b1cdbd2cSJim Jagielski        /** unregisters a listener from a control.
140*b1cdbd2cSJim Jagielski
141*b1cdbd2cSJim Jagielski        @param Control
142*b1cdbd2cSJim Jagielski            listener that wishes to be unregistered
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski        @param URL
145*b1cdbd2cSJim Jagielski            URL the listener was registered for.
146*b1cdbd2cSJim Jagielski            Additional arguments ("#..." or "?...") will be ignored.
147*b1cdbd2cSJim Jagielski
148*b1cdbd2cSJim Jagielski        @see XStatusListener
149*b1cdbd2cSJim Jagielski        @see XDispatch::addStatusListener()
150*b1cdbd2cSJim Jagielski	 */
151*b1cdbd2cSJim Jagielski    [oneway] void removeStatusListener(
152*b1cdbd2cSJim Jagielski        [in] XStatusListener Control,
153*b1cdbd2cSJim Jagielski        [in] com::sun::star::util::URL URL);
154*b1cdbd2cSJim Jagielski};
155*b1cdbd2cSJim Jagielski
156*b1cdbd2cSJim Jagielski//=============================================================================
157*b1cdbd2cSJim Jagielski
158*b1cdbd2cSJim Jagielski}; }; }; };
159*b1cdbd2cSJim Jagielski
160*b1cdbd2cSJim Jagielski#endif
161