summaryrefslogtreecommitdiff
path: root/offapi/com/sun/star/task/InteractionHandler.idl
diff options
context:
space:
mode:
Diffstat (limited to 'offapi/com/sun/star/task/InteractionHandler.idl')
-rw-r--r--offapi/com/sun/star/task/InteractionHandler.idl187
1 files changed, 187 insertions, 0 deletions
diff --git a/offapi/com/sun/star/task/InteractionHandler.idl b/offapi/com/sun/star/task/InteractionHandler.idl
new file mode 100644
index 000000000000..f772754d6d56
--- /dev/null
+++ b/offapi/com/sun/star/task/InteractionHandler.idl
@@ -0,0 +1,187 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef __com_sun_star_task_InteractionHandler_idl__
+#define __com_sun_star_task_InteractionHandler_idl__
+
+module com { module sun { module star {
+ module lang { published interface XInitialization; };
+ module task { published interface XInteractionHandler; };
+}; }; };
+
+module com { module sun { module star { module task {
+
+//============================================================================
+/** An interaction request handler that lets the user handle requests via GUI dialogs.
+
+ <p>The interaction handler service has a numerof of <a href="#built_in_handler">built-in handlers</a>, responsible
+ for a lot of well known interactions. Additionally, there's a configuration module which allows to
+ <a href="#configuring_handlers">configure additional handlers</a>, responsible for arbitrary requests.</a></p>
+
+ <a name="built_in_handler"></a>
+ <h3>Built-in Handlers</h3>
+ The following well-known requests can be dealt with by the built-in handlers:
+ <UL>
+ <LI><type scope="com::sun::star::ucb">AuthenticationRequest</type></LI>
+ <LI><type scope="com::sun::star::ucb">CertificateValidationRequest</type></LI>
+ <LI><type scope="com::sun::star::sync2">BadPartnershipException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">HandleCookiesRequest</type></LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveAugmentedIOException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveCHAOSException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveFileIOException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveIOException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveNetworkConnectException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveNetworkException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveNetworkGeneralException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveNetworkOffLineException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveNetworkReadException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveNetworkResolveNameException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveNetworkWriteException</type>*</LI>
+ <LI><type scope="com::sun::star::ucb">InteractiveWrongMediumException</type>*</LI>
+ <LI><type scope="com::sun::star::task">PasswordRequest</type></LI>
+ <LI><type scope="com::sun::star::java">WrongJavaVersionException</type>*</LI>
+ <LI><type scope="com::sun::star::task">DocumentMacroConfirmationRequest</type></LI>
+ </UL>
+ The requests marked with an asterisk are only handled if (a) their
+ continuations match certain restrictions (see below), and (b) the
+ necessary resource strings are available (this can be exploited by
+ applications that carry only a subset of all resource files with
+ them).</P>
+
+ <P>The continuation restrictions are as follows: Let <VAR>C</VAR> be the
+ subset of the provided continuations that are of type
+ <type scope="com::sun::star::task">XInteractionApprove</type>,
+ <type scope="com::sun::star::task">XInteractionDisapprove</type>,
+ <type scope="com::sun::star::task">XInteractionRetry</type>, or
+ <type scope="com::sun::star::task">XInteractionAbort</type> (or of a
+ derived type). All other continuations are ignored for these requests.
+ The request is only handled if the set <VAR>C</VAR> is any of the
+ following:
+ <UL>
+ <LI>Abort</LI>
+ <LI>Retry, Abort</LI>
+ <LI>Approve</LI>
+ <LI>Approve, Abort</LI>
+ <LI>Approve, Disapprove</LI>
+ <LI>Approve, Disapprove, Abort</LI>
+ </UL></P>
+
+ <P>An
+ <type scope="com::sun::star::ucb">InteractiveAugmentedIOException</type>
+ carries with it a sequence of arguments, which should be
+ <type scope="com::sun::star::beans">PropertyValue</type>s. The following
+ details which properties are interpreted by the interaction handler,
+ depending on the request's
+ <type scope="com::sun::star::ucb">IOErrorCode</type>:
+ <DL>
+ <DT><code>"Uri"</code></DT>
+ <DD>All error codes except
+ <const scope="com::sun::star::ucb">IOErrorCode::DIFFERENT_DEVICES</const>.
+ The URI of the involved resource (a <atom>string</atom>).</DD>
+
+ <DT><code>"ResourceName"</code></DT>
+ <DD>All error codes except
+ <const scope="com::sun::star::ucb">IOErrorCode::DIFFERENT_DEVICES</const>.
+ A name for the involved resource (a <atom>string</atom>) that might be
+ more meaningful to the user than the URI. For example, a
+ (platform-dependent) path notation for file system resources.</DD>
+
+ <DT><code>"ResourceType"</code></DT>
+ <DD><const scope="com::sun::star::ucb">IOErrorCode::DEVICE_NOT_READY</const>
+ and
+ <const scope="com::sun::star::ucb">IOErrorCode::NOT_EXISTING</const>
+ only. An identifier for the type of resource involved (a
+ <atom>string</atom>). Currently understood values are
+ <code>"volume"</code> (e.g., a file system volume) and
+ <code>"folder"</code> (i.e., a resource that contains other
+ resources).</DD>
+
+ <DT><code>"Removable"</code></DT>
+ <DD><const scope="com::sun::star::ucb">IOErrorCode::NOT_EXISTING</const>
+ only. A flag indicating whether the resource resides on a storage
+ medium that can be removed by the user (a <atom>boolean</atom>).</DD>
+
+ <DT><code>"Folder"</code></DT>
+ <DD><const scope="com::sun::star::ucb">IOErrorCode::CANT_CREATE</const>
+ only. The name of the foler in which a resource cannot be created (a
+ <atom>string</atom>).</DD>
+
+ <DT><code>"Volume"</code> and <code>"OtherVolume"</code></DT>
+ <DD><const scope="com::sun::star::ucb">IOErrorCode::DIFFERENT_DEVICES</const>
+ only. The names of the two volumes involved (two
+ <atom>string</atom>s).</DD>
+ </DL></P>
+
+ <a name="configuring_handlers"></a>
+ <h3>Configurating additional Handlers</h3>
+
+ <p>It is possible to configure additional interaction handlers, to which certain requests can be delegated. The
+ configuration node <code>/org.openoffice.Interaction/InteractionHandlers</code> is evaluated and respected
+ by the <code>InteractionHandler</code> implementation.</p>
+
+ <p>A custom interaction handler can declare itself responsible for an arbitrary number of UNO types, specified
+ by full-qualified type name. Also, for each type, it can specify whether it is responsible for only this particular
+ type, or all possibly existent derived types.</p>
+
+ <p>Whenever the <code>InteractionHandler</code> encounteres a request it cannot fulfill itself, it will examine
+ the configuration, to find a handler implementation for the request, and delegate it to the first matching
+ handler.</p>
+
+ <p>If multiple custom interaction handlers declare themself responsible for the same request type, it is not
+ defined which handler will actully be invoked. Thus, when deploying a custom interaction handler, ensure
+ that the types you specify are general enough to cover all requests you want to handle, but also specific
+ enough to not cover requests which other handlers might be interested in.</p>
+ */
+published service InteractionHandler
+{
+ //------------------------------------------------------------------------
+ /** Handle an interaction request.
+ */
+ interface com::sun::star::task::XInteractionHandler;
+
+ //------------------------------------------------------------------------
+ /** Initialize the interaction handler.
+
+ <P>The arguments must be a sequence of
+ <type scope="com::sun::star::beans">PropertyValue</type>s. The
+ currently supported properties are:
+ <UL>
+ <LI><code>"Parent"</code> of type
+ <type scope="com::sun::star::awt">XWindow</type> denotes the
+ parent window for any GUI dialogs the interaction handler pops up;
+ it is strongly recommended that this property is supplied;</LI>
+ <LI><code>"Context"</code> of type <atom>string</atom> is a
+ textual description of the current context (used, e.g., as a first
+ line of text in error boxes); this property is optional.</LI>
+ </UL></P>
+ */
+ interface com::sun::star::lang::XInitialization;
+};
+
+}; }; }; };
+
+#endif