diff options
author | Vladimir Glazounov <vg@openoffice.org> | 2007-05-22 17:07:07 +0000 |
---|---|---|
committer | Vladimir Glazounov <vg@openoffice.org> | 2007-05-22 17:07:07 +0000 |
commit | 5fec775e74eacc10dee67818627d653fa6c8fc6b (patch) | |
tree | f0a3435c94546fa6691a12e50f873c98758058ab /chart2/source/controller/main/ControllerCommandDispatch.hxx | |
parent | INTEGRATION: CWS chart2mst3 (1.1.2); FILE ADDED (diff) | |
download | core-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.hxx | 152 |
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 |