summaryrefslogtreecommitdiff
path: root/sfx2/source/appl/helpinterceptor.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sfx2/source/appl/helpinterceptor.hxx')
-rw-r--r--sfx2/source/appl/helpinterceptor.hxx173
1 files changed, 173 insertions, 0 deletions
diff --git a/sfx2/source/appl/helpinterceptor.hxx b/sfx2/source/appl/helpinterceptor.hxx
new file mode 100644
index 000000000000..3476f0d305b5
--- /dev/null
+++ b/sfx2/source/appl/helpinterceptor.hxx
@@ -0,0 +1,173 @@
+/*************************************************************************
+ *
+ * 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 INCLUDED_SFX_HELPINTERCEPTOR_HXX
+#define INCLUDED_SFX_HELPINTERCEPTOR_HXX
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase3.hxx>
+#endif
+#include <com/sun/star/frame/XDispatchProviderInterceptor.hpp>
+#include <com/sun/star/frame/XInterceptorInfo.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XDispatchProviderInterception.hpp>
+#include <com/sun/star/frame/XFrame.hpp>
+#include <cppuhelper/implbase1.hxx>
+#include <com/sun/star/frame/XStatusListener.hpp>
+#include <tools/string.hxx>
+#include <tools/list.hxx>
+#include <tools/link.hxx>
+
+struct HelpHistoryEntry_Impl
+{
+ String aURL;
+ com::sun::star::uno::Any aViewData;
+
+ HelpHistoryEntry_Impl( const String& rURL, const com::sun::star::uno::Any& rViewData ) :
+ aURL( rURL ), aViewData(rViewData) {}
+};
+
+DECLARE_LIST(HelpHistoryList_Impl,HelpHistoryEntry_Impl*)
+
+class SfxHelpWindow_Impl;
+class HelpInterceptor_Impl : public ::cppu::WeakImplHelper3<
+
+ ::com::sun::star::frame::XDispatchProviderInterceptor,
+ ::com::sun::star::frame::XInterceptorInfo,
+ ::com::sun::star::frame::XDispatch >
+
+{
+private:
+friend class HelpDispatch_Impl;
+friend class SfxHelpWindow_Impl;
+
+ // the component which's dispatches we're intercepting
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterception > m_xIntercepted;
+
+ // chaining
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > m_xSlaveDispatcher;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > m_xMasterDispatcher;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > m_xListener;
+
+ HelpHistoryList_Impl* m_pHistory;
+ SfxHelpWindow_Impl* m_pWindow;
+ ULONG m_nCurPos;
+ String m_aCurrentURL;
+ com::sun::star::uno::Any m_aViewData;
+
+ void addURL( const String& rURL );
+
+public:
+ HelpInterceptor_Impl();
+ ~HelpInterceptor_Impl();
+
+ void setInterception( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > xFrame );
+ void SetStartURL( const String& rURL );
+ String GetCurrentURL() const { return m_aCurrentURL; }
+
+
+
+ const com::sun::star::uno::Any& GetViewData()const {return m_aViewData;}
+
+ sal_Bool HasHistoryPred() const; // is there a predecessor for the current in the history
+ sal_Bool HasHistorySucc() const; // is there a successor for the current in the history
+
+ // XDispatchProvider
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > SAL_CALL
+ queryDispatch( const ::com::sun::star::util::URL& aURL, const ::rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > > SAL_CALL
+ queryDispatches( const ::com::sun::star::uno::Sequence< ::com::sun::star::frame::DispatchDescriptor >& aDescripts ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XDispatchProviderInterceptor
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > SAL_CALL
+ getSlaveDispatchProvider( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSlaveDispatchProvider( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >& xNewSlave ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > SAL_CALL
+ getMasterDispatchProvider( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setMasterDispatchProvider( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >& xNewMaster ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XInterceptorInfo
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getInterceptedURLs( ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XDispatch
+ virtual void SAL_CALL dispatch( const ::com::sun::star::util::URL& aURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArgs ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addStatusListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener >& xControl, const ::com::sun::star::util::URL& aURL ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeStatusListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener >& xControl, const ::com::sun::star::util::URL& aURL ) throw(::com::sun::star::uno::RuntimeException);
+
+ // extras
+ void InitWaiter( SfxHelpWindow_Impl* pWindow )
+ { m_pWindow = pWindow; }
+ SfxHelpWindow_Impl* GetHelpWindow() const { return m_pWindow; }
+};
+
+// HelpListener_Impl -----------------------------------------------------
+
+class HelpListener_Impl : public ::cppu::WeakImplHelper1< ::com::sun::star::frame::XStatusListener >
+{
+private:
+ HelpInterceptor_Impl* pInterceptor;
+ Link aChangeLink;
+ String aFactory;
+
+public:
+ HelpListener_Impl( HelpInterceptor_Impl* pInter );
+
+ virtual void SAL_CALL statusChanged( const ::com::sun::star::frame::FeatureStateEvent& Event )
+ throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& obj )
+ throw( ::com::sun::star::uno::RuntimeException );
+
+ void SetChangeHdl( const Link& rLink ) { aChangeLink = rLink; }
+ String GetFactory() const { return aFactory; }
+};
+// HelpStatusListener_Impl -----------------------------------------------------
+
+class HelpStatusListener_Impl : public
+::cppu::WeakImplHelper1< ::com::sun::star::frame::XStatusListener >
+{
+private:
+ ::com::sun::star::uno::Reference < ::com::sun::star::frame::XDispatch > xDispatch;
+ ::com::sun::star::frame::FeatureStateEvent aStateEvent;
+
+public:
+ HelpStatusListener_Impl(
+ ::com::sun::star::uno::Reference < ::com::sun::star::frame::XDispatch > xDispatch,
+ com::sun::star::util::URL& rURL);
+ ~HelpStatusListener_Impl();
+
+ virtual void SAL_CALL statusChanged( const ::com::sun::star::frame::FeatureStateEvent& Event )
+ throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& obj )
+ throw( ::com::sun::star::uno::RuntimeException );
+ const ::com::sun::star::frame::FeatureStateEvent&
+ GetStateEvent() const {return aStateEvent;}
+};
+
+
+#endif // #ifndef INCLUDED_SFX_HELPINTERCEPTOR_HXX
+