summaryrefslogtreecommitdiffstats
path: root/chart2/source/controller/main/ControllerCommandDispatch.hxx
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2007-05-22 17:07:07 +0000
committerVladimir Glazounov <vg@openoffice.org>2007-05-22 17:07:07 +0000
commit5fec775e74eacc10dee67818627d653fa6c8fc6b (patch)
treef0a3435c94546fa6691a12e50f873c98758058ab /chart2/source/controller/main/ControllerCommandDispatch.hxx
parentINTEGRATION: CWS chart2mst3 (1.1.2); FILE ADDED (diff)
downloadcore-5fec775e74eacc10dee67818627d653fa6c8fc6b.tar.gz
core-5fec775e74eacc10dee67818627d653fa6c8fc6b.zip
INTEGRATION: CWS chart2mst3 (1.1.2); FILE ADDED
2006/08/09 18:12:17 bm 1.1.2.4: #i63017# enable/disable the series forward/backward menu items (patch from pagalmes) 2006/03/15 13:57:09 bm 1.1.2.3: documentation of dispatch stuff. Also moved the command list of the controller to the controller itself 2006/01/20 16:44:57 bm 1.1.2.2: allow firing only one status event (needed on initial OLE activation) when the listener is added, status for AutoResize added 2005/11/25 17:41:28 bm 1.1.2.1: dispatch that cares about command enabling according to the (cached) model state
Diffstat (limited to 'chart2/source/controller/main/ControllerCommandDispatch.hxx')
-rw-r--r--chart2/source/controller/main/ControllerCommandDispatch.hxx152
1 files changed, 152 insertions, 0 deletions
diff --git a/chart2/source/controller/main/ControllerCommandDispatch.hxx b/chart2/source/controller/main/ControllerCommandDispatch.hxx
new file mode 100644
index 000000000000..32a39b8b0866
--- /dev/null
+++ b/chart2/source/controller/main/ControllerCommandDispatch.hxx
@@ -0,0 +1,152 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: ControllerCommandDispatch.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: vg $ $Date: 2007-05-22 18:07:07 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+#ifndef CHART2_CONTROLLERCOMMANDDISPATCH_HXX
+#define CHART2_CONTROLLERCOMMANDDISPATCH_HXX
+
+#include "CommandDispatch.hxx"
+
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XCONTROLLER_HPP_
+#include <com/sun/star/frame/XController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XSELECTIONSUPPLIER_HPP_
+#include <com/sun/star/view/XSelectionSupplier.hpp>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE1_HXX_
+#include <cppuhelper/implbase1.hxx>
+#endif
+
+#include <memory>
+
+namespace chart
+{
+
+namespace impl
+{
+struct ModelState;
+struct ControllerState;
+
+// #i63017# : need to implement the XSelectionChangeListener in order
+// to update the ControllerState when the selection changes.
+typedef ::cppu::ImplInheritanceHelper1<
+ CommandDispatch,
+ ::com::sun::star::view::XSelectionChangeListener >
+ ControllerCommandDispatch_Base;
+}
+
+/** This class is a CommandDispatch that is responsible for all commands that
+ the ChartController supports.
+
+ This class determines which commands are currently available (via the model
+ state) and if an available command is called forwards it to the
+ ChartController.
+ */
+class ControllerCommandDispatch : public impl::ControllerCommandDispatch_Base
+{
+public:
+ explicit ControllerCommandDispatch(
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::uno::XComponentContext > & xContext,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::frame::XController > & xController );
+ virtual ~ControllerCommandDispatch();
+
+ // late initialisation, especially for adding as listener
+ virtual void initialize();
+
+protected:
+ // ____ XDispatch ____
+ virtual void SAL_CALL dispatch(
+ const ::com::sun::star::util::URL& URL,
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& Arguments )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // ____ WeakComponentImplHelperBase ____
+ /// is called when this is disposed
+ virtual void SAL_CALL disposing();
+
+ // ____ XEventListener (base of XModifyListener) ____
+ virtual void SAL_CALL disposing(
+ const ::com::sun::star::lang::EventObject& Source )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual void fireStatusEvent(
+ const ::rtl::OUString & rURL,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > & xSingleListener );
+
+ // ____ XModifyListener ____
+ virtual void SAL_CALL modified(
+ const ::com::sun::star::lang::EventObject& aEvent )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // ____ XSelectionChangeListener ____
+ virtual void SAL_CALL selectionChanged(
+ const ::com::sun::star::lang::EventObject& aEvent )
+ throw (::com::sun::star::uno::RuntimeException);
+
+private:
+ /** Simplification for doing a string compare between a given URL
+ (rCompareURL) with a fixed string (rURL), and only in case of equality
+ call the fireStatusEvent method at the base class.
+
+ @param xSingleListener
+ Same behaviour that in base class CommandDispatch: If set, the event
+ is only sent to this listener rather than to all registered ones.
+ */
+ void conditionalFireStatusEventForURL(
+ const ::rtl::OUString & rCompareURL,
+ const ::rtl::OUString & rURL,
+ const ::com::sun::star::uno::Any & rState,
+ bool bEnabled,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > & xSingleListener );
+
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::frame::XController > m_xController;
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::view::XSelectionSupplier > m_xSelectionSupplier;
+ ::com::sun::star::uno::Reference<
+ ::com::sun::star::frame::XDispatch > m_xDispatch;
+
+ ::std::auto_ptr< impl::ModelState > m_apModelState;
+ ::std::auto_ptr< impl::ControllerState > m_apControllerState;
+};
+
+} // namespace chart
+
+// CHART2_CONTROLLERCOMMANDDISPATCH_HXX
+#endif