summaryrefslogtreecommitdiff
path: root/sd/source/ui/inc/framework/FrameworkHelper.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui/inc/framework/FrameworkHelper.hxx')
-rw-r--r--sd/source/ui/inc/framework/FrameworkHelper.hxx433
1 files changed, 0 insertions, 433 deletions
diff --git a/sd/source/ui/inc/framework/FrameworkHelper.hxx b/sd/source/ui/inc/framework/FrameworkHelper.hxx
deleted file mode 100644
index 3d90ce5dd..000000000
--- a/sd/source/ui/inc/framework/FrameworkHelper.hxx
+++ /dev/null
@@ -1,433 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * 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 SD_FRAMEWORK_FRAMEWORK_HELPER_HXX
-#define SD_FRAMEWORK_FRAMEWORK_HELPER_HXX
-
-#include "ViewShell.hxx"
-
-#include "tools/SdGlobalResourceContainer.hxx"
-
-#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
-#include <com/sun/star/drawing/framework/XView.hpp>
-#include <com/sun/star/lang/XEventListener.hpp>
-
-#include <boost/scoped_ptr.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/enable_shared_from_this.hpp>
-#include <boost/function.hpp>
-#include <map>
-
-namespace sd {
-class ViewShell;
-class ViewShellBase;
-}
-
-namespace rtl {
-class OUString;
-}
-
-namespace css = ::com::sun::star;
-
-namespace sd { namespace framework {
-
-/** The FrameworkHelper is a convenience class that simplifies the
- access to the drawing framework.
- It has three main tasks:
- 1. Provide frequently used strings of resource URLs and event names.
- 2. Provide shortcuts for accessing the sd framework.
- 3. Easy the migration to the drawing framwork.
-
- Note that a FrameworkHelper disposes itself when one of the resource
- controllers called by it throw a DisposedException.
-*/
-class FrameworkHelper
- : public ::boost::enable_shared_from_this<FrameworkHelper>,
- public SdGlobalResource
-{
-public:
- // URLs of frequently used panes.
- static const ::rtl::OUString msPaneURLPrefix;
- static const ::rtl::OUString msCenterPaneURL;
- static const ::rtl::OUString msFullScreenPaneURL;
- static const ::rtl::OUString msLeftImpressPaneURL;
- static const ::rtl::OUString msLeftDrawPaneURL;
- static const ::rtl::OUString msRightPaneURL;
-
- // URLs of frequently used views.
- static const ::rtl::OUString msViewURLPrefix;
- static const ::rtl::OUString msImpressViewURL;
- static const ::rtl::OUString msDrawViewURL;
- static const ::rtl::OUString msOutlineViewURL;
- static const ::rtl::OUString msNotesViewURL;
- static const ::rtl::OUString msHandoutViewURL;
- static const ::rtl::OUString msSlideSorterURL;
- static const ::rtl::OUString msPresentationViewURL;
- static const ::rtl::OUString msTaskPaneURL;
-
- // URLs of frequently used tool bars.
- static const ::rtl::OUString msToolBarURLPrefix;
- static const ::rtl::OUString msViewTabBarURL;
-
- // URLs of task panels.
- static const ::rtl::OUString msTaskPanelURLPrefix;
- static const ::rtl::OUString msMasterPagesTaskPanelURL;
- static const ::rtl::OUString msLayoutTaskPanelURL;
- static const ::rtl::OUString msTableDesignPanelURL;
- static const ::rtl::OUString msCustomAnimationTaskPanelURL;
- static const ::rtl::OUString msSlideTransitionTaskPanelURL;
-
- // Names of frequently used events.
- static const ::rtl::OUString msResourceActivationRequestEvent;
- static const ::rtl::OUString msResourceDeactivationRequestEvent;
- static const ::rtl::OUString msResourceActivationEvent;
- static const ::rtl::OUString msResourceDeactivationEvent;
- static const ::rtl::OUString msConfigurationUpdateStartEvent;
- static const ::rtl::OUString msConfigurationUpdateEndEvent;
-
- // Service names of the common controllers.
- static const ::rtl::OUString msModuleControllerService;
- static const ::rtl::OUString msConfigurationControllerService;
-
- /** Return the FrameworkHelper object that is associated with the given
- ViewShellBase. If such an object does not yet exist, a new one is
- created.
- */
- static ::boost::shared_ptr<FrameworkHelper> Instance (ViewShellBase& rBase);
-
- static ::boost::shared_ptr<FrameworkHelper> Instance (
- const css::uno::Reference<css::frame::XController>& rxController);
-
- /** Mark the FrameworkHelper object for the given ViewShellBase as
- disposed. A following ReleaseInstance() call will destroy the
- FrameworkHelper object.
-
- Do not call this method. It is an internally used method that can
- not be made private.
- */
- static void DisposeInstance (ViewShellBase& rBase);
-
- /** Destroy the FrameworkHelper object for the given ViewShellBase.
-
- Do not call this method. It is an internally used method that can
- not be made private.
- */
- static void ReleaseInstance (ViewShellBase& rBase);
-
- /** Return an identifier for the given view URL. This identifier can be
- used in a switch statement. See GetViewURL() for a mapping in the
- opposite direction.
- */
- static ViewShell::ShellType GetViewId (const rtl::OUString& rsViewURL);
-
- /** Return a view URL for the given identifier. See GetViewId() for a
- mapping in the opposite direction.
- */
- static ::rtl::OUString GetViewURL (ViewShell::ShellType eType);
-
- /** Return a ViewShell pointer for the given XView reference. This
- assumes that the given reference is implemented by the
- ViewShellWrapper class that supports the XTunnel interface.
- @return
- When the ViewShell pointer can not be inferred from the given
- reference then an empty pointer is returned.
- */
- static ::boost::shared_ptr<ViewShell> GetViewShell (
- const css::uno::Reference<css::drawing::framework::XView>& rxView);
-
- ~FrameworkHelper (void);
-
- typedef ::boost::function<bool(const css::drawing::framework::ConfigurationChangeEvent&)>
- ConfigurationChangeEventFilter;
- typedef ::boost::function<void(bool bEventSeen)> Callback;
- typedef ::boost::function<
- void(
- const css::uno::Reference<
- css::drawing::framework::XResourceId>&)
- > ResourceFunctor;
-
- /** Test whether the called FrameworkHelper object is valid.
- @return
- When the object has already been disposed then <FALSE/> is returned.
- */
- bool IsValid (void);
-
- /** Return a pointer to the view shell that is displayed in the
- specified pane. See GetView() for a variant that returns a
- reference to XView instead of a ViewShell pointer.
- @return
- An empty pointer is returned when for example the specified pane
- does not exist or is not visible or does not show a view or one
- of the involved objects does not support XUnoTunnel (where
- necessary).
- */
- ::boost::shared_ptr<ViewShell> GetViewShell (const ::rtl::OUString& rsPaneURL);
-
- /** Return a reference to the view that is displayed in the specified
- pane. See GetViewShell () for a variant that returns a ViewShell
- pointer instead of a reference to XView.
- @param rxPaneOrViewId
- When this ResourceId specifies a view then that view is
- returned. When it belongs to a pane then one view in that pane
- is returned.
- @return
- An empty reference is returned when for example the specified pane
- does not exist or is not visible or does not show a view or one
- of the involved objects does not support XTunnel (where
- necessary).
- */
- css::uno::Reference<css::drawing::framework::XView>
- GetView (
- const css::uno::Reference<
- css::drawing::framework::XResourceId>& rxPaneOrViewId);
-
- /** Request the specified view to be displayed in the specified pane.
- When the pane is not visible its creation is also requested. The
- update that creates the actual view object is done asynchronously.
- @param rsResourceURL
- The resource URL of the view to show.
- @param rsAnchorURL
- The URL of the pane in which to show the view.
- @return
- The resource id of the requested view is returned. With that
- the caller can, for example, call RunOnResourceActivation() to
- do some initialization after the requested view becomes active.
- */
- css::uno::Reference<css::drawing::framework::XResourceId> RequestView (
- const ::rtl::OUString& rsResourceURL,
- const ::rtl::OUString& rsAnchorURL);
-
- /** Request the activation of the specified task panel in the standard
- task pane.
- @param rsTaskPanelURL
- The panel that is to be activated.
- @param bEnsureTaskPaneIsVisible
- When this is <TRUE/> then the task pane is activated when not
- yet active.
- When this flag is <FALSE/> then the requested panel
- is activated only when the task pane is already active. When it
- is not active then this call is silently ignored.
- */
- void RequestTaskPanel (
- const ::rtl::OUString& rsTaskPanelURL,
- const bool bEnsureTaskPaneIsVisible = true);
-
- /** Process a slot call that requests a view shell change.
- */
- void HandleModeChangeSlot (
- sal_uLong nSlotId,
- SfxRequest& rRequest);
-
- /** Run the given callback when the specified event is notified by the
- ConfigurationManager. When there are no pending requests and
- therefore no events would be notified (in the foreseeable future)
- then the callback is called immediately.
- The callback is called with a flag that tells the callback whether
- the event it waits for has been sent.
- */
- void RunOnConfigurationEvent(
- const ::rtl::OUString& rsEventType,
- const Callback& rCallback);
-
- /** Run the given callback when the specified resource has been
- activated. When the resource is active already when this method is
- called then rCallback is called before this method returns.
- @param rxResourceId
- Wait for the activation of this resource before calling
- rCallback.
- @param rCallback
- The callback to be called when the resource is activated.
-
- */
- void RunOnResourceActivation(
- const css::uno::Reference<css::drawing::framework::XResourceId>& rxResourceId,
- const Callback& rCallback);
-
- /** Normally the requested changes of the configuration are executed
- asynchronously. However, there is at least one situation (searching
- with the Outliner) where the surrounding code does not cope with
- this. So, instead of calling Reschedule until the global event loop
- executes the configuration update, this method does (almost) the
- same without the reschedules.
-
- Do not use this method until there is absolutely no other way.
- */
- void RequestSynchronousUpdate (void);
-
- /** Block until the specified event is notified by the configuration
- controller. When the configuration controller is not processing any
- requests the method returns immediately.
- */
- void WaitForEvent (const ::rtl::OUString& rsEventName) const;
-
- /** This is a short cut for WaitForEvent(msConfigurationUpdateEndEvent).
- Call this method to execute the pending requests.
- */
- void WaitForUpdate (void) const;
-
- /** Explicit request for an update of the current configuration. Call
- this method when one of the resources managed by the sd framework
- has been activated or deactivated from the outside, i.e. not by the
- framework itself. An example for this is a click on the closer
- button of one of the side panes.
- */
- void UpdateConfiguration (void);
-
- /** Return a string representation of the given XResourceId object.
- */
- static ::rtl::OUString ResourceIdToString (
- const css::uno::Reference<
- css::drawing::framework::XResourceId>& rxResourceId);
-
- /** Create a new XResourceId object for the given resource URL.
- */
- static css::uno::Reference<
- css::drawing::framework::XResourceId>
- CreateResourceId (
- const ::rtl::OUString& rsResourceURL);
-
- /** Create a new XResourceId object for the given resource URL and a
- single anchor URL.
- */
- static css::uno::Reference<
- css::drawing::framework::XResourceId>
- CreateResourceId (
- const ::rtl::OUString& rsResourceURL,
- const ::rtl::OUString& rsAnchorURL);
-
- /** Create a new XResourceId object for the given resource URL and the
- two given anchor URLs.
- */
- static css::uno::Reference<
- css::drawing::framework::XResourceId>
- CreateResourceId (
- const ::rtl::OUString& rsResourceURL,
- const ::rtl::OUString& rsFirstAnchorURL,
- const ::rtl::OUString& rsSecondAnchorURL);
-
- /** Create a new XResourceId object for the given resource URL.
- */
- static css::uno::Reference<
- css::drawing::framework::XResourceId>
- CreateResourceId (
- const ::rtl::OUString& rsResourceURL,
- const css::uno::Reference<
- css::drawing::framework::XResourceId>& rxAnchor);
-
- css::uno::Reference<css::drawing::framework::XConfigurationController>
- GetConfigurationController (void) const;
-
-
-private:
- typedef ::std::map<
- ViewShellBase*,
- ::boost::shared_ptr<FrameworkHelper> > InstanceMap;
- /** The instance map holds (at least) one FrameworkHelper instance for
- every ViewShellBase object.
- */
- static InstanceMap maInstanceMap;
- class ViewURLMap;
- static ::boost::scoped_ptr<ViewURLMap> mpViewURLMap;
-
- ViewShellBase& mrBase;
- css::uno::Reference<css::drawing::framework::XConfigurationController>
- mxConfigurationController;
-
- class DisposeListener;
- friend class DisposeListener;
- css::uno::Reference<css::lang::XComponent>
- mxDisposeListener;
-
- FrameworkHelper (ViewShellBase& rBase);
- FrameworkHelper (const FrameworkHelper& rHelper); // Not implemented.
- FrameworkHelper& operator= (const FrameworkHelper& rHelper); // Not implemented.
-
- void Initialize (void);
-
- void Dispose (void);
-
- /** Run the given callback when an event of the specified type is
- received from the ConfigurationController or when the
- ConfigurationController has no pending change requests.
- @param rsEventType
- Run rCallback only on this event.
- @param rFilter
- This filter has to return <TRUE/> in order for rCallback to be
- called.
- @param rCallback
- The callback functor to be called.
- */
- void RunOnEvent(
- const ::rtl::OUString& rsEventType,
- const ConfigurationChangeEventFilter& rFilter,
- const Callback& rCallback) const;
-
- /** This disposing method is forwarded from the inner DisposeListener class.
- */
- void disposing (const css::lang::EventObject& rEventObject);
-};
-
-
-} } // end of namespace sd::framework
-
-
-
-namespace sd { namespace framework {
-
-namespace {
-
- class FrameworkHelperAllPassFilter
- {
- public:
- bool operator() (const css::drawing::framework::ConfigurationChangeEvent&) { return true; }
- };
-
-
- class FrameworkHelperResourceIdFilter
- {
- public:
- FrameworkHelperResourceIdFilter (
- const css::uno::Reference<css::drawing::framework::XResourceId>& rxResourceId);
- bool operator() (const css::drawing::framework::ConfigurationChangeEvent& rEvent)
- { return mxResourceId.is() && rEvent.ResourceId.is()
- && mxResourceId->compareTo(rEvent.ResourceId) == 0; }
- private:
- css::uno::Reference<css::drawing::framework::XResourceId> mxResourceId;
- };
-
-} // end of anonymous namespace
-
-
-
-
-} } // end of namespace sd::framework
-
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */