summaryrefslogtreecommitdiffstats
path: root/offapi/com/sun/star/drawing/framework
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 05:54:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 05:54:39 +0000
commit267c6f2ac71f92999e969232431ba04678e7437e (patch)
tree358c9467650e1d0a1d7227a21dac2e3d08b622b2 /offapi/com/sun/star/drawing/framework
parentInitial commit. (diff)
downloadlibreoffice-267c6f2ac71f92999e969232431ba04678e7437e.tar.xz
libreoffice-267c6f2ac71f92999e969232431ba04678e7437e.zip
Adding upstream version 4:24.2.0.upstream/4%24.2.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'offapi/com/sun/star/drawing/framework')
-rw-r--r--offapi/com/sun/star/drawing/framework/AnchorBindingMode.idl36
-rw-r--r--offapi/com/sun/star/drawing/framework/BasicPaneFactory.idl44
-rw-r--r--offapi/com/sun/star/drawing/framework/BasicToolBarFactory.idl47
-rw-r--r--offapi/com/sun/star/drawing/framework/BasicViewFactory.idl49
-rw-r--r--offapi/com/sun/star/drawing/framework/BorderType.idl35
-rw-r--r--offapi/com/sun/star/drawing/framework/ConfigurationChangeEvent.idl71
-rw-r--r--offapi/com/sun/star/drawing/framework/ResourceActivationMode.idl42
-rw-r--r--offapi/com/sun/star/drawing/framework/ResourceId.idl55
-rw-r--r--offapi/com/sun/star/drawing/framework/TabBarButton.idl53
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfiguration.idl117
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfigurationChangeListener.idl39
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfigurationChangeRequest.idl50
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfigurationController.idl244
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfigurationControllerBroadcaster.idl73
-rw-r--r--offapi/com/sun/star/drawing/framework/XConfigurationControllerRequestQueue.idl60
-rw-r--r--offapi/com/sun/star/drawing/framework/XControllerManager.idl48
-rw-r--r--offapi/com/sun/star/drawing/framework/XModuleController.idl38
-rw-r--r--offapi/com/sun/star/drawing/framework/XPane.idl50
-rw-r--r--offapi/com/sun/star/drawing/framework/XPane2.idl61
-rw-r--r--offapi/com/sun/star/drawing/framework/XPaneBorderPainter.idl142
-rw-r--r--offapi/com/sun/star/drawing/framework/XRelocatableResource.idl41
-rw-r--r--offapi/com/sun/star/drawing/framework/XResource.idl48
-rw-r--r--offapi/com/sun/star/drawing/framework/XResourceFactory.idl71
-rw-r--r--offapi/com/sun/star/drawing/framework/XResourceFactoryManager.idl83
-rw-r--r--offapi/com/sun/star/drawing/framework/XResourceId.idl136
-rw-r--r--offapi/com/sun/star/drawing/framework/XTabBar.idl85
-rw-r--r--offapi/com/sun/star/drawing/framework/XToolBar.idl33
-rw-r--r--offapi/com/sun/star/drawing/framework/XView.idl38
28 files changed, 1889 insertions, 0 deletions
diff --git a/offapi/com/sun/star/drawing/framework/AnchorBindingMode.idl b/offapi/com/sun/star/drawing/framework/AnchorBindingMode.idl
new file mode 100644
index 0000000000..84a7b8c524
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/AnchorBindingMode.idl
@@ -0,0 +1,36 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** This enum specifies how a resource is bound to an anchor. This can be
+ direct or indirect.
+ <p>Example: Let r:a1:a2 denote a resource r which is bound to
+ anchor a1:a2 which itself is a resource a1 bound to anchor a2.
+ Then r:a1:a2 is bound directly to a1:a2 and indirectly to a2.</p>
+*/
+enum AnchorBindingMode
+{
+ DIRECT,
+ INDIRECT
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/BasicPaneFactory.idl b/offapi/com/sun/star/drawing/framework/BasicPaneFactory.idl
new file mode 100644
index 0000000000..2defacca10
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/BasicPaneFactory.idl
@@ -0,0 +1,44 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** The BasicPaneFactory is a resource factory that provides the
+ panes used by the Draw and Impress applications.
+ <p>This factory provides the center, left, and right pane. For the left
+ pane there are two URLS, <code>private:resource/floater/LeftImpressPane</code>
+ and <code>private:resource/floater/LeftDrawPane</code>, one for Impress,
+ the other for Draw. The center pane and the right pane have the URLs
+ <code>private:resource/floater/CenterPane</code> and
+ <code>private:resource/floater/RightPane</code> respectively.</p>
+ <p>This factory is typically created indirectly by registering it in the
+ configuration and have the XModuleController create it on
+ demand.</p>
+*/
+service BasicPaneFactory : XResourceFactory
+{
+ /** Give the controller to new instances so that they have access to the
+ drawing framework controllers.
+ */
+ create ([in] ::com::sun::star::frame::XController xController);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/BasicToolBarFactory.idl b/offapi/com/sun/star/drawing/framework/BasicToolBarFactory.idl
new file mode 100644
index 0000000000..d2dcea1501
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/BasicToolBarFactory.idl
@@ -0,0 +1,47 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** The BasicToolBarFactory is a resource factory that provides
+ (some of) the tool bars used by the Draw and Impress applications.
+
+ <p>The factory recognizes the following URLs:<ul>
+ <li><code>private:resource/toolbar/ViewTabBar</code> for the tab bar
+ that allows the switching between views.</li>
+ </ul>
+ This short list marks the implementation of this service clearly as
+ being in transition.
+ </p>
+
+ <p>This factory is typically created indirectly by registering it in the
+ configuration and have the XModuleController create it on
+ demand.</p>
+*/
+service BasicToolBarFactory : XResourceFactory
+{
+ /** Give the controller to new instances so that they have access to the
+ drawing framework controllers.
+ */
+ create ([in] ::com::sun::star::frame::XController xController);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/BasicViewFactory.idl b/offapi/com/sun/star/drawing/framework/BasicViewFactory.idl
new file mode 100644
index 0000000000..816959985d
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/BasicViewFactory.idl
@@ -0,0 +1,49 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** The BasicViewFactory is a view factory that provides the
+ panes used by the Draw and Impress applications.
+
+ <p>The factory recognizes the following URLs:<ul>
+ <li><code>private:resource/view/ImpressView</code> for the regular edit
+ view of the Impress application.</li>
+ <li><code>private:resource/view/GraphicView</code> for the regular edit
+ view of the Draw application.</li>
+ <li><code>private:resource/view/OutlineView</code> for the outline view.</li>
+ <li><code>private:resource/view/NotesView</code> for the notes view.</li>
+ <li><code>private:resource/view/HandoutView</code> for the handout view.</li>
+ <li><code>private:resource/view/SlideSorter</code> for the slide sorter
+ regardless of which pane it is used in.</li>
+ <li><code>private:resource/view/PresentationView</code> for the slide show.</li>
+ <li><code>private:resource/view/TaskPane</code> for the task pane.</li>
+ </ul></p>
+*/
+service BasicViewFactory : XResourceFactory
+{
+ /** Give the controller to new instances so that they have access to the
+ drawing framework controllers.
+ */
+ create ([in] ::com::sun::star::frame::XController xController);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/BorderType.idl b/offapi/com/sun/star/drawing/framework/BorderType.idl
new file mode 100644
index 0000000000..dff66b0cde
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/BorderType.idl
@@ -0,0 +1,35 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+
+module com { module sun { module star { module drawing { module framework {
+
+/** See XPaneBorderPainter and its addBorder() and removeBorder() methods
+ for an explanation of the border type and its values.
+*/
+enum BorderType
+{
+ INNER_BORDER,
+ OUTER_BORDER,
+ TOTAL_BORDER
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/ConfigurationChangeEvent.idl b/offapi/com/sun/star/drawing/framework/ConfigurationChangeEvent.idl
new file mode 100644
index 0000000000..fd7218bce7
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/ConfigurationChangeEvent.idl
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module uno { interface XInterface; }; }; }; };
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XConfiguration;
+interface XResourceId;
+
+/** Objects of this class are used for notifying changes of the
+ configuration.
+
+ <p>They are broadcasted by the configuration controller
+ which maintains the configuration. The set of types of configuration
+ changes is not fixed and is not maintained or documented in one
+ place.</p>
+
+ <p>The set of used members and the exact meaning of their values is not the
+ same for all types. Therefore, the descriptions of the members are just
+ general guidelines. See XConfigurationController for a
+ list of event types used by the basic drawing framework.</p>
+*/
+struct ConfigurationChangeEvent
+ : ::com::sun::star::lang::EventObject
+{
+ /** The type of configuration change is a free-form string. This is the
+ only member that is always set. The values of the other members
+ depend on the configuration change type and may or may not be set.
+ */
+ string Type;
+
+ /** The current configuration, depending on the event type, either
+ before or after the change. May be an empty reference.
+ */
+ XConfiguration Configuration;
+
+ /** The resource id that is part of the configuration change.
+ */
+ XResourceId ResourceId;
+
+ /** The resource object that corresponds to the ResourceId. May
+ be an empty reference.
+ */
+ com::sun::star::uno::XInterface ResourceObject;
+
+ /** Each listener is called with exactly the #UserData
+ that was given when the listener was registered.
+ */
+ any UserData;
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/ResourceActivationMode.idl b/offapi/com/sun/star/drawing/framework/ResourceActivationMode.idl
new file mode 100644
index 0000000000..4e2dc38198
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/ResourceActivationMode.idl
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** The ResourceActivationMode specifies, for example for the
+ com::sun::star::drawing::framework::XConfigurationController::requestResourceActivation(),
+ whether a requested resource is to replace an existing resource of the
+ same class or is to be activated additionally.
+*/
+enum ResourceActivationMode
+{
+ /** A resource is requested in addition to already existing ones. This
+ is used for example for panes.
+ */
+ ADD,
+
+ /** A resource is requested to replace an already existing one of the
+ same class. This is used for example for views.
+ */
+ REPLACE
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/ResourceId.idl b/offapi/com/sun/star/drawing/framework/ResourceId.idl
new file mode 100644
index 0000000000..5caf0e6a6e
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/ResourceId.idl
@@ -0,0 +1,55 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** The ResourceId service provides several constructors for
+ resource ids.
+ <p>They mainly differ in how the anchor is specified.</p>
+*/
+service ResourceId
+ : XResourceId
+{
+ /** Create an empty resource id. It does not specify a specific
+ resource but describes the absence of one.
+ */
+ createEmpty ();
+
+ /** Create a resource id that has no anchor.
+ <p>This constructor can be used to create resource ids for panes.</p>
+ */
+ create ([in] string sResourceURL);
+
+ /** Create a resource id for an anchor that is given as
+ XResourceId object. This is the most general of the
+ constructor variants.
+ */
+ createWithAnchor ([in] string sResourceURL, [in] XResourceId xAnchor);
+
+ /** Create a resource id for a resource that is bound to an anchor that
+ can be specified by a single URL.
+ <p>This constructor can be used to create resources ids for views
+ where the anchor is a pane.</p>
+ */
+ createWithAnchorURL ([in] string sResourceURL, [in] string sAnchorURL);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/TabBarButton.idl b/offapi/com/sun/star/drawing/framework/TabBarButton.idl
new file mode 100644
index 0000000000..2122074852
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/TabBarButton.idl
@@ -0,0 +1,53 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XResourceId;
+
+/** Descriptor of a tab bar button. Tab bar buttons are typically used to
+ offer the user the choice between different views to be displayed in
+ one pane.
+ <p>For identification only the #ResourceId is used, so for
+ some methods of the XTabBar interface only the
+ #ResourceId member is evaluated.</p>
+*/
+struct TabBarButton
+{
+ /** This label is displayed on the UI as button text.
+ <p>The label is expected to be localized.</p>
+ */
+ string ButtonLabel;
+
+ /** The localized help text that may be displayed in a tool tip.
+ */
+ string HelpText;
+
+ /** XResourceId object of the resource that is requested to be
+ displayed when the tab bar button is activated.
+ <p>For some methods of the XTabBar interface only this
+ member is evaluated. That is because only this member is used to
+ identify a tab bar button.</p>
+ */
+ XResourceId ResourceId;
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XConfiguration.idl b/offapi/com/sun/star/drawing/framework/XConfiguration.idl
new file mode 100644
index 0000000000..3aa4b5e70a
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XConfiguration.idl
@@ -0,0 +1,117 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XResourceId;
+
+/** A configuration describes the resources of an application like panes,
+ views, and tool bars and their relationships that are currently active
+ or are requested to be activated. Resources are specified by ResourceId
+ structures rather than references so that not only the current
+ configuration but also a requested configuration can be represented.
+
+ <p>Direct manipulation of a configuration object is not advised with the
+ exception of the ConfigurationController and objects that
+ implement the XConfigurationChangeRequest interface.</p>
+
+ @see XConfigurationController
+*/
+interface XConfiguration
+ : ::com::sun::star::util::XCloneable
+{
+ /** Returns the list of resources that are bound directly and/or
+ indirectly to the given anchor. A URL filter can reduce the set of
+ returned resource ids.
+ @param xAnchorId
+ This anchor typically is either a pane or an empty
+ XResourceId object. An
+ empty reference is treated like an XResourceId object.
+ @param sTargetURLPrefix
+ When a non-empty string is given then resource ids are returned
+ only when their resource URL matches this prefix, i.e. when it
+ begins with this prefix or is equal to it. Characters with
+ special meaning to URLs are not interpreted. In the typical
+ usage the prefix specifies the type of a resource. A typical
+ value is "private:resource/floater/", which is the prefix for
+ pane URLs. In a recursive search, only resource ids at the top
+ level are matched against this prefix.
+ <p>Use an empty string to prevent filtering out resource ids.</p>
+ @param eSearchMode
+ This flag defines whether to return only resources that are
+ directly bound to the given anchor or a recursive search is to
+ be made. Note that for the recursive search and an empty anchor
+ all resource ids are returned that belong to the configuration.
+ @return
+ The set of returned resource ids may be empty when there are no
+ resource ids that match all conditions. The resources in the
+ sequence are ordered with respect to the
+ XResourceId::compareTo() method.
+ */
+ sequence<XResourceId> getResources (
+ [in] XResourceId xAnchorId,
+ [in] string sTargetURLPrefix,
+ [in] AnchorBindingMode eSearchMode);
+
+ /** <p>Returns whether the specified resource is part of the
+ configuration.</p>
+ This is independent of whether the resource does really exist and is
+ active, i.e. has a visible representation in the GUI.
+ @param xResourceId
+ The id of a resource. May be empty (empty reference or empty
+ XResourceId object) in which case `FALSE` is
+ returned.
+ @return
+ Returns `TRUE` when the resource is part of the configuration
+ and `FALSE` when it is not.
+ */
+ boolean hasResource ([in] XResourceId xResourceId);
+
+ /** Add a resource to the configuration.
+ <p>This method should be used only by objects that implement the
+ XConfigurationRequest interface or by the configuration
+ controller.</p>
+ @param xResourceId
+ The resource to add to the configuration. When the specified
+ resource is already part of the configuration then this call is
+ silently ignored.
+ @throws IllegalArgumentException
+ When an empty resource id is given then an
+ IllegalArgumentException is thrown.
+ */
+ void addResource ([in] XResourceId xResourceId);
+
+ /** Remove a resource from the configuration.
+ <p>This method should be used only by objects that implement the
+ XConfigurationRequest interface or by the configuration
+ controller.</p>
+ @param xResourceId
+ The resource to remove from the configuration. When the
+ specified resource is not part of the configuration then this
+ call is silently ignored.
+ @throws IllegalArgumentException
+ When an empty resource id is given then an
+ IllegalArgumentException is thrown.
+ */
+ void removeResource ([in] XResourceId xResourceId);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XConfigurationChangeListener.idl b/offapi/com/sun/star/drawing/framework/XConfigurationChangeListener.idl
new file mode 100644
index 0000000000..ce8ffefb4f
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XConfigurationChangeListener.idl
@@ -0,0 +1,39 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** A listener for configuration changes is called when it has been
+ registered at the configuration controller and a configuration change
+ occurs.
+*/
+interface XConfigurationChangeListener
+ : ::com::sun::star::lang::XEventListener
+{
+ /** The exact time of when a listener is called (before the change takes
+ place, during the change, or when the change has been made) depends
+ on the change event. The order in which listeners are called is the
+ order in which they are registered (First registered, first called.)
+ */
+ void notifyConfigurationChange ([in] ConfigurationChangeEvent aEvent);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XConfigurationChangeRequest.idl b/offapi/com/sun/star/drawing/framework/XConfigurationChangeRequest.idl
new file mode 100644
index 0000000000..bbdebce3c8
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XConfigurationChangeRequest.idl
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XConfiguration;
+
+/** A single explicit request for a configuration change.
+
+ <p>The requested change is committed to a configuration only when the
+ execute() method is called. Configuration change
+ requests are executed asynchronously. This is done to avoid reentrance
+ problems with objects that are registered as
+ XConfigurationChangeListener and at the same time make
+ configuration change requests. When the requests were executed
+ synchronously then the listeners would be notified of the changes while
+ their request call has not yet returned.</p>
+
+ <p>This interface is typically used internally by the
+ XConfigurationController</p> @see XConfigurationController
+*/
+interface XConfigurationChangeRequest
+{
+ /** Commit the configuration change request represented by the called
+ object to the given configuration.
+ @param xConfiguration
+ This is the configuration to commit the requested change to.
+ */
+ void execute ([in] XConfiguration xConfiguration);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XConfigurationController.idl b/offapi/com/sun/star/drawing/framework/XConfigurationController.idl
new file mode 100644
index 0000000000..b9b2b38f2b
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XConfigurationController.idl
@@ -0,0 +1,244 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XConfigurationChangeListener;
+interface XConfigurationChangeRequest;
+interface XResourceId;
+interface XResource;
+
+/** The configuration controller is responsible for the management of the
+ set of active resources.
+
+ <p>There are two configurations of resources:<ul>
+ <li>The current configuration contains the set of currently active
+ resources.</li>
+ <li>The requested configuration describes what the current configuration
+ should be. The requested configuration is changed usually by calling
+ requestResourceActivation() and
+ requestResourceDeactivation().</li>
+ </ul></p>
+
+ <p>When the two configurations differ then the current configuration is
+ updated eventually to reflect the requested configuration. An update
+ takes place when the following three conditions are fulfilled.
+ <ol>
+ <li>when the last pending request for configuration changes has been
+ processed,</li>
+ <li>when the update() method is called.</li>
+ <li>when the configuration manager it is unlocked after formerly being
+ locked.</li>
+ </ol></p>
+
+ <p>Requests for configuration changes are handled in a two step process:
+ <ol>
+ <li>First the requested configuration is updated iteratively: Every
+ request that is being made by calling
+ requestResourceActivation() or
+ requestResourceDeactivation() results in one or more
+ function objects, that each implement the
+ XConfigurationChangeRequest interface. These are inserted
+ into a queue. The request objects in the queue are processed
+ asynchronously one at a time in the order in which they are inserted.
+ Only when one request object is processed a change to the requested
+ configuration is made. These changes are broadcasted to registered
+ XConfigurationChangeListener objects. Listeners may
+ decide to make requests that then are added to the queue. For example
+ when the view in the center pane is replaced by another view, some
+ listeners may want to turn some side panes on or off, or show other
+ views in the side panes.</p>
+ <p>This process goes on until the queue of request objects becomes
+ empty. Until this point only the requested configuration has been
+ modified. No resources have been activated or deactivated.</p></li>
+
+ <li><p>The second update step activates or deactivates resources so that
+ the current configuration (the one that comprises the actually active
+ resources) reflects the requested configuration.</p>
+ <p>The order in which resources are activated or deactivated depends on
+ the dependency between the resources. For example a view depends on the
+ pane it is displayed in. Resources that other resources depend on are
+ activated first and deactivated last. The order is undefined for
+ unrelated resources.</p>
+ <p>Note that the second update step may not be able to activate (or even to
+ deactivate) all the requested resources. Either because they are
+ temporarily or permanently unavailable. For example, during the
+ start-up of a new Impress application the side panes are displayed
+ with a visible delay because they are not provided sooner by the
+ underlying framework. Such unavailable resources are not forgotten but
+ remain in the requested configuration. Every time the configuration
+ controller updates its current configuration these resources are
+ requested once more.</li></ol></p>
+
+ <p>The configuration controller sends the following events:
+ <ul>
+ <li>ResourceActivationRequested is sent when the
+ activation of a resource has been requested and the resource is not yet
+ active in the requested configuration. The event is sent when the
+ configuration change request is executed, not when the
+ requestResourceActivation() call is made.</p>
+ <p>The ConfigurationChangeEvent::ResourceId member is set to the requested
+ resource. The ResourceObject member is not
+ set.</p></li>
+ <li>ResourceDeactivationRequested is sent when the
+ deactivation of a resource has been requested and the resource is active
+ in the requested configuration. The event is sent when the
+ configuration change request is executed that is created when for
+ example requestResourceDeactivation() is called.</p>
+ <p>The ResourceId member is set to the requested
+ resource. The ResourceObject member is not
+ set.</p></li>
+ <li>ConfigurationUpdateStart is sent before the update of
+ the current configuration starts.</p>
+ <p>The requested configuration is available in the
+ ConfigurationChangeEvent::Configuration member. The
+ ResourceId and ResourceObject members
+ are not set.</p></li>
+ <li>ConfigurationUpdateEnd is sent after the update of
+ the current configuration ends.</p>
+ <p>The requested configuration is
+ available in the ConfigurationChangeEvent::Configuration member.
+ The ResourceId and ResourceObject members are not set.</p></li>
+ <li>ResourceActivation is sent when a resource is
+ activated, i.e. when a new object of a resource is created (or taken
+ from a cache).</p>
+ <p>The ResourceId and ResourceObject
+ members are set to the XResourceId and object reference of
+ the activated resource.</p></li>
+ <li>ResourceDeactivation is sent when a resource is
+ deactivated, i.e. when an object that previously was part of the
+ configuration is removed from the configuration.</p>
+ <p>The ResourceId and ResourceObject
+ members are set to XResourceId and object reference of the
+ deactivated resource.</p></li>
+ </ul></p>
+*/
+interface XConfigurationController
+{
+ interface XConfigurationControllerRequestQueue;
+ interface XConfigurationControllerBroadcaster;
+ interface XResourceFactoryManager;
+
+ /** Request the activation of a resource.
+ <p>The request is processed asynchronously. Notifications about
+ configuration changes are sent after this call returns.</p>
+ @param xResourceId
+ The resource whose activation is requested.
+ @param eMode
+ <p>When eMode is REPLACE then, before adding the
+ resource activation to the request queue, similar resources
+ linked to the same anchor are removed. This makes it easier to
+ switch between resources whose activation is mutually exclusive.
+ For example, there can only be one view per pane, so before
+ activating a new view the old one has to be deactivated.</p>
+ <p>When eMode is ADD then the resource is requested
+ without further changes.</p>
+ */
+ void requestResourceActivation (
+ [in] XResourceId xResourceId,
+ [in] ResourceActivationMode eMode);
+
+ /** Request the deactivation of a resource.
+ <p>The request is processed asynchronously. Notifications about
+ configuration changes are sent after this call returns.</p>
+ <p>Requesting the deactivation
+ of a resource that is not active is not an error.</p>
+ @param xResourceId
+ The resource whose deactivation is requested.
+ */
+ void requestResourceDeactivation (
+ [in] XResourceId xResourceId);
+
+
+ /** Return the active resource specified by the given resource id.
+ @param xResourceId
+ A valid resource id. This should, but does not have to be, the
+ resource id of an active resource.
+ @return
+ When the given resource id specifies an active resource then
+ that resource is returned. Otherwise an empty reference is
+ returned.
+ */
+ XResource getResource (
+ [in] XResourceId xResourceId);
+
+ /** Lock the processing of configuration change requests.
+ <p>This is only necessary when more than one change request is being
+ made in a row. It prevents an update being made (with all the visible UI
+ changes) before all change requests are being made.</p>
+ <p>Recursive lock() calls are recognized: the
+ configuration controller is locked while lock() was
+ called more often than unlock().</p>
+ */
+ void lock ();
+
+ /** Unlock the processing of configuration change requests.
+ <p>When unlock() is called as many times as
+ lock() and the queue of configuration change
+ requests is not empty the configuration controller continues the
+ processing of the change requests. An update of the current
+ configuration will eventually being made.</p>
+ */
+ void unlock ();
+
+ /** Explicitly request an update of the current configuration.
+ <p>Call it when a resource is activated or deactivated
+ without the control and knowledge of the drawing framework. Calling
+ this method (from outside the drawing framework) should hardly every
+ be necessary.</p>
+ */
+ void update ();
+
+ /** Return a copy of the requested configuration.
+ <p>Modifications to the returned configuration have no effect on the
+ drawing framework.</p>
+ */
+ XConfiguration getRequestedConfiguration ();
+
+ /** Return a copy of the current configuration.
+ <p>Modifications to the returned configuration have no effect on the
+ drawing framework.</p>
+ */
+ XConfiguration getCurrentConfiguration ();
+
+ /** Replace the requested configuration with the given configuration and
+ schedule an update of the current configuration.
+ <p>Together with the getCurrentConfiguration() and
+ getRequestedConfiguration() methods this
+ allows the saving and restoring of configurations. However, the
+ given configuration can have other origins then these methods.</p>
+ <p>The given configuration is transformed into a list of change
+ requests so that the resulting requested configuration equals the
+ given configuration. This has the advantage that not only the
+ resource activations and deactivations but all configuration
+ changes are properly broadcasted.</p>
+ <p>Note that because of the configuration change notifications
+ listeners can make more configuration change requests, so that the
+ resulting requested configuration can be different from the given
+ configuration.</p>
+ @param xConfiguration
+ This typically is a configuration that was obtained with an
+ earlier getRequestedConfiguration() call.
+ */
+ void restoreConfiguration ([in] XConfiguration xConfiguration);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XConfigurationControllerBroadcaster.idl b/offapi/com/sun/star/drawing/framework/XConfigurationControllerBroadcaster.idl
new file mode 100644
index 0000000000..c3b3e373db
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XConfigurationControllerBroadcaster.idl
@@ -0,0 +1,73 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XConfigurationChangeListener;
+
+/** Manage the set of registered event listeners and the event notification for a configuration
+ controller.
+ <p>The listeners are called in the order in which they are registered.</p>
+*/
+interface XConfigurationControllerBroadcaster
+{
+ /** Add a new listener for configuration changes.
+ <p>The listener is notified only for the specified type of
+ configuration changes. When the listener is interested in more than
+ one event type this method has to be called multiple times.
+ Alternatively it can register as universal listener that will be
+ called for all event types. However, this option is provided
+ primarily to support debugging and monitoring.</p>
+ @param xListener
+ The new listener.
+ @param sEventType
+ The event type that the listener is interested in. The set of
+ event types is not fixed and there can be no exhaustive
+ list. The empty string is a special value in that the listener
+ will be called for all types of event.
+ @param aUserData
+ Arbitrary data that is passed to the listener when it is called
+ for the specified event type. When one listener is registered
+ for more than one event type then different user data objects
+ may be given as well. Supplying unique integer values allows
+ the listener to use a switch statement to distinguish between
+ the different event types.
+ */
+ void addConfigurationChangeListener (
+ [in] XConfigurationChangeListener xListener,
+ [in] string sEventType,
+ [in] any aUserData);
+
+ /** Remove a listener for configuration changes.
+ @param xListener
+ The listener that is to be removed.
+ */
+ void removeConfigurationChangeListener (
+ [in] XConfigurationChangeListener xListener);
+
+ /** With this method other objects can send events to all the registered
+ listeners.
+ */
+ void notifyEvent (
+ [in] ConfigurationChangeEvent aEvent);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XConfigurationControllerRequestQueue.idl b/offapi/com/sun/star/drawing/framework/XConfigurationControllerRequestQueue.idl
new file mode 100644
index 0000000000..adb77ea5fc
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XConfigurationControllerRequestQueue.idl
@@ -0,0 +1,60 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XConfigurationChangeRequest;
+
+/** The request queue of the configuration controller handles requests for
+ changes to the current configuration.
+
+ <p>This interface allows callers to add requests to the back of the
+ queue and to determine whether the queue is empty. Using this interface
+ should normally not be necessary for anyone else than the
+ XConfigurationController. It may be removed in the future.</p>
+*/
+interface XConfigurationControllerRequestQueue
+{
+ /** Return whether there are pending requests for configuration changes.
+ @return
+ Returns `TRUE` when there is at least one request object in the
+ queue that has not yet been processed. It returns `FALSE` when
+ the queue is empty.
+ */
+ boolean hasPendingRequests ();
+
+ /** Add a request for a configuration change to the request queue.
+ <p>This method should not be called from outside the drawing
+ framework. Other sub controllers of the drawing framework are typical
+ callers. They can add change requests that can not be made with the
+ requestResourceActivation() and
+ requestResourceDeactivation() methods.</p>
+ @param xRequest
+ The configuration change represented by this request object must only
+ be committed to the configuration when the
+ com::sun::star::drawing::framework::XConfigurationChangeRequest::execute()
+ method of the xRequest object is called.
+ */
+ void postChangeRequest (
+ [in] XConfigurationChangeRequest xRequest);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XControllerManager.idl b/offapi/com/sun/star/drawing/framework/XControllerManager.idl
new file mode 100644
index 0000000000..0d6543846f
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XControllerManager.idl
@@ -0,0 +1,48 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XConfigurationController;
+interface XModuleController;
+
+/** The XControllerManager gives access to the controllers of the drawing
+ framework.
+ <p>The XControllerManager interface is typically
+ implemented by the same object that implements
+ com::sun::star::frame::XController.</p>
+*/
+interface XControllerManager
+{
+ /** Return the XConfigurationController object.
+ @return
+ The returned reference is never empty.
+ */
+ XConfigurationController getConfigurationController ();
+
+ /** Return the XModuleController object.
+ @return
+ The returned reference is never empty.
+ */
+ XModuleController getModuleController ();
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XModuleController.idl b/offapi/com/sun/star/drawing/framework/XModuleController.idl
new file mode 100644
index 0000000000..8d9d9b3a9d
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XModuleController.idl
@@ -0,0 +1,38 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XView;
+
+/** The module controller is responsible for loading a module (ad-don,
+ plugin, whatever the name) when it is first used.
+ <p>For this there is a list in the sd::framework::ModuleController class.</p>
+*/
+interface XModuleController
+{
+ /** When the specified resource is requested for the first time then
+ create a new instance of the associated factory service.
+ */
+ void requestResource ([in] string sResourceTypeURL);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XPane.idl b/offapi/com/sun/star/drawing/framework/XPane.idl
new file mode 100644
index 0000000000..1f81532571
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XPane.idl
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** A pane is an abstraction of a window and is one of the resources managed
+ by the drawing framework.
+ <p>Apart from the area that displays a view a pane may contain other
+ parts like title, menu, closer button.</p>
+ <p>The URL prefix of panes is <code>private:resource/floater</code></p>
+*/
+interface XPane
+{
+ interface XResource;
+
+ /** Return the com::sun::star::awt::XWindow of the
+ pane that is used to display a view.
+ */
+ ::com::sun::star::awt::XWindow getWindow ();
+
+ /** Return the com::sun::star::awt::XCanvas of the pane. The
+ com::sun::star::rendering::XCanvas object is expected to
+ be associated with the com::sun::star::awt::XWindow object returned by
+ getWindow().
+ @return
+ When the com::sun::star::rendering::XCanvas
+ interface is not supported then an empty reference is returned.
+ */
+ ::com::sun::star::rendering::XCanvas getCanvas ();
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XPane2.idl b/offapi/com/sun/star/drawing/framework/XPane2.idl
new file mode 100644
index 0000000000..d24b7e9f0a
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XPane2.idl
@@ -0,0 +1,61 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** An extension of the XPane interface that adds support for
+ a) showing and hiding the windows that internally belong to the pane and
+ b) setting the accessibility object.
+ This is typically an optional interface.
+*/
+interface XPane2
+{
+ /** Return whether all windows that are used to implement the pane are
+ visible.
+ @return `TRUE` when all windows of the pane are visible.
+ */
+ boolean isVisible ();
+
+ /** Hide or show the pane. If there is more than one window used to
+ implement the pane then it is left to the implementation if one,
+ some, or all windows are hidden or shown as long as the pane becomes
+ hidden or visible.
+ @param bIsVisible
+ When `TRUE` then show the pane. Hide it otherwise.
+ */
+ void setVisible ([in] boolean bIsVisible);
+
+ /** Set the accessibility object for the pane. When there is more than
+ one window used to implement the pane then the given accessibility
+ object is usually set at the topmost window. However, the details
+ are implementation dependent.
+ @param xAccessible
+ May be an empty reference.
+ */
+ void setAccessible ([in] ::com::sun::star::accessibility::XAccessible xAccessible);
+
+ /** Return the accessibility object that is currently associated with
+ the windows that implement the pane.
+ */
+ ::com::sun::star::accessibility::XAccessible getAccessible ();
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XPaneBorderPainter.idl b/offapi/com/sun/star/drawing/framework/XPaneBorderPainter.idl
new file mode 100644
index 0000000000..19f9cd7633
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XPaneBorderPainter.idl
@@ -0,0 +1,142 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** Paint the border around a rectangular region, typically a pane.
+
+ <p>Calling objects have to be able to derive inner bounding boxes of the
+ border from the outer ones and inner ones from outer ones. This
+ conversion and the painting of the border involves three rectangles.
+ The inner and outer bounding box of the border. This is a logical
+ bounding box which the paint methods may paint over. The center box is
+ the third rectangle. This is the actual border between outer and inner
+ background color or bitmap and it is used for placing the bitmaps that are used
+ paint the border. The inner sides and corners are places relative to
+ this center box, i.e. when not further offsets are given then the upper
+ left corner bitmap is painted with its lower right at the upper left of
+ the center box.</p>
+*/
+interface XPaneBorderPainter
+{
+ /** Enlarge the given rectangle by the size of the specified part of the
+ border. This method can be used to convert an inner bounding box
+ into the center box or the outer bounding box.
+ @param sPaneBorderStyleName
+ The pane style defines the sizes of the border.
+ @param aRectangle
+ This rectangle will be converted into a larger one. This should
+ be the center box or the inner bounding box of the border.
+ @param eBorderType
+ The part of the border to add to the given rectangle.
+ Use INNER_BORDER to convert an inner bounding box into the
+ center box or TOTAL_BORDER to convert it into the outer bounding
+ box. OUTER_BORDER can be used to convert the center box into
+ the outer bounding box.
+ */
+ ::com::sun::star::awt::Rectangle addBorder (
+ [in] string sPaneBorderStyleName,
+ [in] ::com::sun::star::awt::Rectangle aRectangle,
+ [in] BorderType eBorderType);
+
+ /** Shrink the given rectangle by the size of the specified part of the
+ border. This method can be used to convert an outer bounding box
+ into the center box or the inner bounding box.
+ @param sPaneBorderStyleName
+ The pane style defines the sizes of the border.
+ @param aRectangle
+ This rectangle will be converted into a smaller one that lies
+ inside it. It should be the center box or the outer bounding
+ box of the border.
+ @param eBorderType
+ The part of the border to remove from the given rectangle.
+ Use OUTER_BORDER to convert an outer bounding box into the
+ center box or TOTAL_BORDER to convert it into the inner bounding
+ box. INNER_BORDER can be used to convert the center box into
+ the inner bounding box.
+ */
+ ::com::sun::star::awt::Rectangle removeBorder (
+ [in] string sPaneBorderStyleName,
+ [in] ::com::sun::star::awt::Rectangle aRectangle,
+ [in] BorderType eBorderType);
+
+ /** Paint the border around a pane.
+ @param sPaneBorderStyleName
+ The pane style to use for painting the border.
+ @param xCanvas
+ The canvas onto which the border is painted.
+ @param aOuterBorderRectangle
+ The outer bounding box of the border. Use addBorder to convert
+ the bounding box of a pane (the inner bounding box of the
+ border) into this outer bounding box of the border.
+ @param aRepaintArea
+ The area in which the border has to be repainted. The clip
+ rectangle.
+ @param sTitle
+ The pane title. Supply an empty string for panes without
+ title. It is the responsibility of the caller to supply a title
+ only for pane border styles that support a title.
+ */
+ void paintBorder (
+ [in] string sPaneBorderStyleName,
+ [in] ::com::sun::star::rendering::XCanvas xCanvas,
+ [in] ::com::sun::star::awt::Rectangle aOuterBorderRectangle,
+ [in] ::com::sun::star::awt::Rectangle aRepaintArea,
+ [in] string sTitle);
+
+ /** Paint the border around a pane where the border includes a call out
+ that is anchored at the given point. Most arguments have the same
+ meaning as in the paintBorder().
+
+ @see paintBorder
+
+ @param sPaneBorderStyleName
+ See description in #paintBorder.
+ @param xCanvas
+ See description in #paintBorder.
+ @param aOuterBorderRectangle
+ See description in #paintBorder.
+ @param aRepaintArea
+ See description in #paintBorder.
+ @param sTitle
+ See description in #paintBorder.
+ @param aCalloutAnchor
+ The anchor point of the call out. It is usually located outside
+ the border.
+ */
+ void paintBorderWithCallout (
+ [in] string sPaneBorderStyleName,
+ [in] ::com::sun::star::rendering::XCanvas xCanvas,
+ [in] ::com::sun::star::awt::Rectangle aOuterBorderRectangle,
+ [in] ::com::sun::star::awt::Rectangle aRepaintArea,
+ [in] string sTitle,
+ [in] ::com::sun::star::awt::Point aCalloutAnchor);
+
+ /** Return the offset of a call out anchor with respect to the outer
+ border. This value is used when the call out is realized by a fixed
+ bitmap in order to determine the size and/or location of the outer
+ border for a given call out.
+ */
+ ::com::sun::star::awt::Point getCalloutOffset (
+ [in] string sPaneBorderStyleName);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XRelocatableResource.idl b/offapi/com/sun/star/drawing/framework/XRelocatableResource.idl
new file mode 100644
index 0000000000..aac34c7c70
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XRelocatableResource.idl
@@ -0,0 +1,41 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XResource;
+
+/** An optional interface that is implemented by resources that are
+ relocatable to different anchors.
+*/
+interface XRelocatableResource
+{
+ /** Replace the current anchor of the called resource with the given
+ one.
+ @param xNewAnchor
+ The new anchor.
+ @return
+ Returns `TRUE` when the relocation was successful.
+ */
+ boolean relocateToAnchor ([in] XResource xNewAnchor);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XResource.idl b/offapi/com/sun/star/drawing/framework/XResource.idl
new file mode 100644
index 0000000000..72fa0beb91
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XResource.idl
@@ -0,0 +1,48 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XResourceId;
+
+/** Base interface that provides functionality shared by all resource types
+ of the drawing framework.
+*/
+interface XResource
+{
+ /** Return an XResourceId object for the called resource.
+ The returned id unambiguously identifies the resource.
+ */
+ XResourceId getResourceId ();
+
+ /** Some resources must not be leafs, i.e. have to be anchor to at least
+ one other resource. Most panes are examples for this. Views on the
+ other hand are in most cases no anchors. So the typical pane will
+ return `TRUE` and the typical view will return `FALSE`.
+
+ The return value is used to determine whether a resource has to be
+ deactivated when it has no children, either because none is
+ requested or because none can be created.
+ */
+ boolean isAnchorOnly ();
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XResourceFactory.idl b/offapi/com/sun/star/drawing/framework/XResourceFactory.idl
new file mode 100644
index 0000000000..2ed4d8ee74
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XResourceFactory.idl
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XResource;
+interface XResourceId;
+
+/** Factory and possibly cache for creating and releasing resources.
+ <p>A resource factory is created and used by the
+ XConfigurationController object.</p>
+ <p>A factory may want to implement a cache to reuse previously released
+ resources.</p>
+*/
+interface XResourceFactory
+{
+ /** Create a resource for the given XResourceId object.
+ @param xResourceId
+ The resource URL of this id specifies the type of resource to
+ create. The anchor can be used to obtain the associated object
+ from the configuration controller. For example, when a view is
+ created, then the new object can be initialized with the pane
+ that is its anchor.
+ <p>Valid values are those for which the factory has previously been
+ registered at the XConfigurationController</p>.
+ @return
+ Returns a resource object that has been just created or was
+ taken from a cache. When the requested resource can not be
+ created then an empty reference is returned. A later call may
+ be successful. This, for example, can be the case with SFX
+ based side panes. They are not available right after the
+ creation of a new application frame.
+ @throws InvalidArgumentException
+ when the given URL is not supported by the factory.
+ */
+ XResource createResource (
+ [in] XResourceId xResourceId)
+ raises ( ::com::sun::star::lang::IllegalArgumentException,
+ ::com::sun::star::lang::WrappedTargetException
+ );
+
+ /** Call this method to tell a factory that the given resource is no
+ longer in use. The factory can decide whether to destroy the
+ resource or to keep it in a cache in order to reuse it later.
+ @param xResource
+ The given resource has to be one created by the same factory.
+ @throws InvalidArgumentException
+ when the given pane was not created by the same factory.
+ */
+ void releaseResource ([in] XResource xResource);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XResourceFactoryManager.idl b/offapi/com/sun/star/drawing/framework/XResourceFactoryManager.idl
new file mode 100644
index 0000000000..86dfe2b039
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XResourceFactoryManager.idl
@@ -0,0 +1,83 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+interface XResourceId;
+interface XResourceFactory;
+
+/** The XResourceFactoryManager is part of the configuration controller and
+ manages the set of registered resource factories.
+
+ @see XConfigurationController
+ @see XResourceFactory
+*/
+interface XResourceFactoryManager
+{
+ /** Register a new resource factory for the given URL.
+ <p>When one factory is responsible for more than one type of resource
+ then this method has to be called for each type. If this method is
+ called multiple times for the same URL then a previously registered
+ factory is removed for the URL.</p>
+ @param sResourceURL
+ The URL of the resource that the factory can create.
+ @param xResourceFactory
+ The resource factory object.
+ */
+ void addResourceFactory (
+ [in] string sResourceURL,
+ [in] XResourceFactory xResourceFactory);
+
+ /** Remove a resource factory for one type of resource. When the
+ factory has been registered for other URLs as well then it remains
+ registered for them. Use the
+ removeResourceFactoryForReference() to remove a
+ factory completely.
+ @param sResourceURL
+ The URL for which to remove the resource factory.
+ */
+ void removeResourceFactoryForURL (
+ [in] string sResourceURL);
+
+ /** Remove a resource factory for all resource types it has been registered for. Use
+ removeResourceFactoryForURL() to remove a factory
+ just for one resource type and to leave it registered for others.
+ @param xResourceFactory
+ The resource factory object to remove.
+ */
+ void removeResourceFactoryForReference (
+ [in] XResourceFactory xResourceFactory);
+
+ /** Return the resource factory that was previously registered for the
+ given resource type. This method is typically called by one of the
+ resource controllers.
+ @param sResourceURL
+ The URL of the resource type for which to return the resource
+ factory.
+ @return
+ When no resource factory was registered for the given resource
+ type then an empty reference is returned.
+ */
+ XResourceFactory getResourceFactory (
+ [in] string sResourceURL);
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XResourceId.idl b/offapi/com/sun/star/drawing/framework/XResourceId.idl
new file mode 100644
index 0000000000..f868a6f372
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XResourceId.idl
@@ -0,0 +1,136 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** A resource id uses a set of URLs to unambiguously specify a resource of
+ the drawing framework.
+ <p>Resources of the drawing framework are panes, views, tool bars, and
+ command groups. One URL describes the type of the actual resource. A
+ sequence of URLs (typically one, sometimes two) specifies its anchor,
+ the resource it is bound to. The anchor typically is a pane (for
+ views), or it is empty (for panes).</p>
+ <p>The resource URL may be empty. In this case the anchor is empty,
+ too. Such an empty resource id does not describe a resource but rather
+ the absence of one. Instead of an empty XResourceId object
+ an empty reference can be used in many places.</p>
+ <p>The resource URL may have arguments that are passed to the factory
+ method on its creation. Arguments are only available through the
+ getFullResourceURL(). The getResourceURL() method strips them away.</p>
+*/
+interface XResourceId
+{
+ /** Return the URL of the resource. Arguments supplied on creation are
+ stripped away. Use getFullResourceURL() to access them.
+ */
+ string getResourceURL ();
+
+ /** Return a URL object of the resource URL that may contain arguments.
+ */
+ com::sun::star::util::URL getFullResourceURL ();
+
+ /** Return whether there is a non-empty anchor URL. When this method
+ returns `FALSE` then getAnchorURLs() will return an empty list.
+ */
+ boolean hasAnchor ();
+
+ /** Return a new XResourceId that represents the anchor resource.
+ */
+ XResourceId getAnchor ();
+
+ /** Return the, possibly empty, list of anchor URLs. The URLs are
+ ordered so that the one in position 0 is the direct anchor of the
+ resource, while the one in position i+1 is the direct anchor of the
+ one in position i.
+ */
+ sequence<string> getAnchorURLs ();
+
+ /** Return the type prefix of the resource URL. This includes all up to
+ and including the second slash.
+ */
+ string getResourceTypePrefix ();
+
+ /** Compare the called XResourceId object with the given
+ one.
+ <p>The two resource ids A and B are compared so that if A<B (return
+ value is -1) then either A and B are unrelated or A is a direct or
+ indirect anchor of B.</p>
+ <p>The algorithm for this comparison is quite simple. It uses a
+ double lexicographic ordering. On the lower level individual URLs
+ are compared via the lexicographic order defined on strings. On the
+ higher level two resource ids are compared via a lexicographic order
+ defined on the URLS. So when there are two resource ids A1.A2
+ (A1 being the anchor of A2) and B1.B2 then A1.A2<B1.B2 when A1<B1 or
+ A1==B1 and A2<B2. Resource ids may have different lengths: A1 <
+ B1.B2 when A1<B1 or A1==B1 (anchors first then resources linked to them.</p>
+ @param xId
+ The resource id to which the called resource id is compared.
+ @return
+ Returns 0 when the called resource id is
+ equivalent to the given resource id. Returns <code>-1</code> or
+ <code>+1</code> when the two compared resource ids differ.
+ */
+ short compareTo (
+ [in] XResourceId xId);
+
+ /** Return whether the anchor of the called resource id object
+ represents the same resource as the given object.
+ <p>Note that not only the anchor of the given object is taken into
+ account. The whole object, including the resource URL, is
+ interpreted as anchor resource.</p>
+ @param xAnchorId
+ The resource id of the anchor.
+ @param eMode
+ This mode specifies how the called resource has to be bound to
+ the given anchor in order to have this function return `TRUE`.
+ <p>If eMode is DIRECT then the anchor of the called resource id
+ has to be identical to the given anchor. If eMode is
+ INDIRECT then the given anchor has to be a part
+ of the anchor of the called resource.
+ */
+ boolean isBoundTo (
+ [in] XResourceId xAnchorId,
+ [in] AnchorBindingMode eMode);
+
+ /** Return whether the anchor of the called resource id object
+ represents the same resource as the given anchor URL. This is a
+ convenience variant of the isBoundTo() function
+ that can also be seen as an optimization for the case that the
+ anchor consists of exactly one URL.
+ @param AnchorURL
+ The resource URL of the anchor.
+ @param eMode
+ This mode specifies how the called resource has to be bound to
+ the given anchor in order to have this function return. See the
+ description of isBoundTo() for more
+ information.
+ */
+ boolean isBoundToURL (
+ [in] string AnchorURL,
+ [in] AnchorBindingMode eMode);
+
+ /** Return a copy of the called resource id. The caller becomes the
+ owner of the new object.
+ */
+ XResourceId clone ();
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XTabBar.idl b/offapi/com/sun/star/drawing/framework/XTabBar.idl
new file mode 100644
index 0000000000..3a943f02da
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XTabBar.idl
@@ -0,0 +1,85 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** UI control for the selection of views in a pane.
+ <p>Every tab of a tab bar has, besides its localized title and help
+ text, the URL of a view. A possible alternative would be to use a
+ command URL instead of the view URL.</p>
+ <p>In the current Impress implementation a tab bar is only used for the
+ center pane to switch between views in the center pane. Tab bars can
+ make sense for other panes as well, i.e. for showing either the slide
+ sorter or the outline view in the left pane.</p>
+ <p>Tab bar buttons are identified by their resource id. Note that
+ because the resource anchors are all the same (the tab bar), it is the
+ resource URL that really identifies a button. There can not be two
+ buttons with the same resource id.</p>
+ </p>
+ <p>A better place for this interface (in an extended version) would be
+ <code>com::sun::star::awt</code></p>
+ @see TabBarButton
+*/
+interface XTabBar
+{
+ /** Add a tab bar button to the right of another one.
+ @param aButton
+ The new tab bar button that is to be inserted. If a button with
+ the same resource id is already present than that is removed before the
+ new button is inserted.
+ @param aAnchor
+ The new button is inserted to the right of this button. When
+ its ResourceId is empty then the new button is inserted at the left
+ most position.
+ */
+ void addTabBarButtonAfter ([in] TabBarButton aButton, [in] TabBarButton aAnchor);
+
+ /** Add a tab bar button at the right most position.
+ @param aButton
+ The new tab bar button that is to be inserted.
+ */
+ void appendTabBarButton ([in] TabBarButton aButton);
+
+ /** Remove a tab bar button.
+ @param aButton
+ The tab bar button to remove. When there is no button with the
+ specified resource id then this call is silently ignored.
+ */
+ void removeTabBarButton ([in] TabBarButton aButton);
+
+ /** Test whether the specified button exists in the tab bar.
+ @param aButton
+ The tab bar button whose existence is tested.
+ @return
+ Returns `TRUE` when the button exists.
+ */
+ boolean hasTabBarButton ([in] TabBarButton aButton);
+
+ /** Return a sequence of all the tab bar buttons.
+ <p>Their order reflects the visible order in the tab bar.</p>
+ <p>This method can be used when
+ addTabBarButtonAfter() does not provide enough
+ control as to where to insert a new button.</p>
+ */
+ sequence<TabBarButton> getTabBarButtons ();
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XToolBar.idl b/offapi/com/sun/star/drawing/framework/XToolBar.idl
new file mode 100644
index 0000000000..8ab4b4ad90
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XToolBar.idl
@@ -0,0 +1,33 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** Abstraction of tool bars used by the drawing framework.
+ @see XToolBarController
+ @see XToolBarFactory
+*/
+interface XToolBar
+ : ::com::sun::star::drawing::framework::XResource
+{
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/com/sun/star/drawing/framework/XView.idl b/offapi/com/sun/star/drawing/framework/XView.idl
new file mode 100644
index 0000000000..49f3b814d4
--- /dev/null
+++ b/offapi/com/sun/star/drawing/framework/XView.idl
@@ -0,0 +1,38 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * This file incorporates work covered by the following license notice:
+ *
+ * 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 .
+ */
+
+module com { module sun { module star { module drawing { module framework {
+
+/** A view in the drawing framework is any object that paints into a pane.
+ <p>Typical examples are the Impress views that show a graphical
+ representation of a document. But the task pane, which is primarily a
+ container of dialogs, is a view as well.</p>
+ <p>Luckily the drawing framework does not need to know much about what a
+ view is. It just needs to identify view objects and a typesafe way to
+ reference them.</p>
+ <p>The URL prefix of views is <code>private:resource/view</code></p>
+*/
+interface XView
+{
+ interface XResource;
+};
+
+}; }; }; }; }; // ::com::sun::star::drawing::framework
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */