blob: 599c0012b7d166c73579b52ac35f0c69322cc404 [file] [log] [blame]
/**************************************************************
*
* 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
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef __com_sun_star_frame_XRecordableDispatch_idl__
#define __com_sun_star_frame_XRecordableDispatch_idl__
#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif
#ifndef __com_sun_star_frame_XDispatchRecorder_idl__
#include <com/sun/star/frame/XDispatchRecorder.idl>
#endif
#ifndef __com_sun_star_util_URL_idl__
#include <com/sun/star/util/URL.idl>
#endif
//=============================================================================
module com { module sun { module star { module frame {
//=============================================================================
/** extends an existing <type>XDispatch</type> implementation with functionality
for dispatch recording
<p>
This interface can be implemented as an additional one beside an existing
<type>XDispatch</type> one to provide record functionality of dispatches.
Because it's an additional interface the status events are available there
and not at this interface.
</p>
<p>
But normaly this interface mustn't be used directly.
If a dispatch object is well known and recording was enabled
on a <type>XDispatchRecorderSupplier</type> it's possible to use method
<member>XDispatchRecorderSupplier::dispatchAndRecord()</member> of it
to make dispatch and recording automaticly. The interface XRecordableDispatch
is used transparently there.
</p>
@example
<listing>
<i>XDispatch</i> xDispatcher = xFrame.queryDispatch(aURL,"",0);
<i>XRecordableDispatch</i> xRecordable = (<i>XRecordableDispatch</i>)UnoRuntime.queryInterface(
&nbsp;&nbsp;XRecordableDispatch.class,
&nbsp;&nbsp;xDispatcher);
xDispatcher.addStatusListener(this,aURL);
<b>if</b> (xRecordable!=<b>null</b>)
&nbsp;&nbsp;xRecordable.dispatchAndRecord(aURL,lArguments,xRecorder);
else
&nbsp;&nbsp;xDispatcher.dispatch(aURL,lArguments);
...
xDispatcher.removeStatusListener(this,aURL);
</listing>
@see XDispatchRecorderSupplier
@see XDispatch
@since OpenOffice 1.1.2
*/
published interface XRecordableDispatch: com::sun::star::uno::XInterface
{
//-------------------------------------------------------------------------
/** dispatch and record it
@param URL
full parsed URL wich describe the feature which should be dispatched (executed)
@param Arguments
optional arguments for this request
(see <type scope="com::sun::star::document">MediaDescriptor</type> for details)
@param Recorder
object which can be used to record the request
(available on <member>XDispatchRecorderSupplier::getDispatchRecorder()</member>)
*/
[oneway] void dispatchAndRecord(
[in] com::sun::star::util::URL URL,
[in] sequence<com::sun::star::beans::PropertyValue> Arguments,
[in] XDispatchRecorder Recorder);
};
//=============================================================================
}; }; }; };
#endif