2010-10-14 08:27:31 +02:00
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2012-11-15 17:28:16 +00:00
/*
* 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 .
*/
2010-03-21 20:01:33 +01:00
2013-10-23 19:14:56 +02:00
# ifndef INCLUDED_SVTOOLS_POPUPMENUCONTROLLERBASE_HXX
# define INCLUDED_SVTOOLS_POPUPMENUCONTROLLERBASE_HXX
2010-03-21 20:01:33 +01:00
2013-11-09 15:40:46 -06:00
# include <svtools/svtdllapi.h>
2010-03-21 20:01:33 +01:00
# include <com/sun/star/lang/XServiceInfo.hpp>
# include <com/sun/star/lang/XTypeProvider.hpp>
# include <com/sun/star/lang/XInitialization.hpp>
# include <com/sun/star/lang/XMultiServiceFactory.hpp>
# include <com/sun/star/frame/XFrame.hpp>
# include <com/sun/star/frame/XDispatchProvider.hpp>
# include <com/sun/star/frame/XDispatch.hpp>
# include <com/sun/star/frame/XStatusListener.hpp>
# include <com/sun/star/frame/XPopupMenuController.hpp>
# include <com/sun/star/uri/XUriReferenceFactory.hpp>
# include <com/sun/star/uri/XUriReference.hpp>
2013-06-04 09:45:33 +02:00
# include <com/sun/star/uno/XComponentContext.hpp>
2010-03-21 20:01:33 +01:00
# include <com/sun/star/util/XURLTransformer.hpp>
2012-08-08 13:21:28 +02:00
2010-03-21 20:01:33 +01:00
# include <toolkit/awt/vclxmenu.hxx>
# include <cppuhelper/compbase7.hxx>
# include <comphelper/broadcasthelper.hxx>
# include <cppuhelper/weak.hxx>
# include <rtl/ustring.hxx>
namespace svt
{
struct PopupMenuControllerBaseDispatchInfo ;
2010-03-30 10:07:55 +02:00
typedef : : cppu : : WeakComponentImplHelper7 <
2010-03-21 20:01:33 +01:00
com : : sun : : star : : lang : : XServiceInfo ,
com : : sun : : star : : frame : : XPopupMenuController ,
com : : sun : : star : : lang : : XInitialization ,
com : : sun : : star : : frame : : XStatusListener ,
com : : sun : : star : : awt : : XMenuListener ,
com : : sun : : star : : frame : : XDispatchProvider ,
com : : sun : : star : : frame : : XDispatch > PopupMenuControllerBaseType ;
class SVT_DLLPUBLIC PopupMenuControllerBase : protected : : comphelper : : OBaseMutex , // Struct for right initalization of mutex member! Must be first of baseclasses.
public PopupMenuControllerBaseType
{
public :
2013-06-04 09:45:33 +02:00
PopupMenuControllerBase ( const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : uno : : XComponentContext > & xContext ) ;
2010-03-21 20:01:33 +01:00
virtual ~ PopupMenuControllerBase ( ) ;
// XServiceInfo
2014-03-26 16:37:00 +01:00
virtual OUString SAL_CALL getImplementationName ( ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE = 0 ;
virtual sal_Bool SAL_CALL supportsService ( const OUString & ServiceName ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
virtual : : com : : sun : : star : : uno : : Sequence < OUString > SAL_CALL getSupportedServiceNames ( ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE = 0 ;
2010-03-21 20:01:33 +01:00
// XPopupMenuController
2014-03-26 16:37:00 +01:00
virtual void SAL_CALL setPopupMenu ( const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : awt : : XPopupMenu > & PopupMenu ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
virtual void SAL_CALL updatePopupMenu ( ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
2010-03-21 20:01:33 +01:00
// XInitialization
2014-03-26 16:37:00 +01:00
virtual void SAL_CALL initialize ( const : : com : : sun : : star : : uno : : Sequence < : : com : : sun : : star : : uno : : Any > & aArguments ) throw ( : : com : : sun : : star : : uno : : Exception , : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
2010-03-21 20:01:33 +01:00
// XStatusListener
2014-03-26 16:37:00 +01:00
virtual void SAL_CALL statusChanged ( const : : com : : sun : : star : : frame : : FeatureStateEvent & Event ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE = 0 ;
2010-03-21 20:01:33 +01:00
// XMenuListener
2014-03-26 16:37:00 +01:00
virtual void SAL_CALL itemHighlighted ( const : : com : : sun : : star : : awt : : MenuEvent & rEvent ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
virtual void SAL_CALL itemSelected ( const : : com : : sun : : star : : awt : : MenuEvent & rEvent ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
virtual void SAL_CALL itemActivated ( const : : com : : sun : : star : : awt : : MenuEvent & rEvent ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
virtual void SAL_CALL itemDeactivated ( const : : com : : sun : : star : : awt : : MenuEvent & rEvent ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
2010-03-21 20:01:33 +01:00
// XDispatchProvider
2014-03-26 16:37:00 +01:00
virtual : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : frame : : XDispatch > SAL_CALL queryDispatch ( const : : com : : sun : : star : : util : : URL & aURL , const OUString & sTarget , sal_Int32 nFlags ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
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 > & lDescriptor ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
2010-03-21 20:01:33 +01:00
// XDispatch
2014-03-26 16:37:00 +01:00
virtual void SAL_CALL dispatch ( const : : com : : sun : : star : : util : : URL & aURL , const : : com : : sun : : star : : uno : : Sequence < : : com : : sun : : star : : beans : : PropertyValue > & seqProperties ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
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 , std : : exception ) SAL_OVERRIDE ;
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 , std : : exception ) SAL_OVERRIDE ;
2010-03-21 20:01:33 +01:00
// XEventListener
2014-03-26 16:37:00 +01:00
virtual void SAL_CALL disposing ( const com : : sun : : star : : lang : : EventObject & Source ) throw ( : : com : : sun : : star : : uno : : RuntimeException , std : : exception ) SAL_OVERRIDE ;
2010-03-21 20:01:33 +01:00
2013-04-07 12:06:47 +02:00
void dispatchCommand ( const OUString & sCommandURL , const : : com : : sun : : star : : uno : : Sequence < : : com : : sun : : star : : beans : : PropertyValue > & rArgs ) ;
2010-03-21 20:01:33 +01:00
protected :
void throwIfDisposed ( ) throw ( : : com : : sun : : star : : uno : : RuntimeException ) ;
/** helper method to cause statusChanged is called once for the given command url */
2013-04-07 12:06:47 +02:00
void SAL_CALL updateCommand ( const OUString & rCommandURL ) ;
2010-03-21 20:01:33 +01:00
/** this function is called upon disposing the component
*/
2014-03-26 16:37:00 +01:00
virtual void SAL_CALL disposing ( ) SAL_OVERRIDE ;
2010-03-21 20:01:33 +01:00
2015-01-20 12:38:10 +02:00
void resetPopupMenu ( com : : sun : : star : : uno : : Reference < com : : sun : : star : : awt : : XPopupMenu > & rPopupMenu ) ;
2010-03-21 20:01:33 +01:00
virtual void impl_setPopupMenu ( ) ;
virtual void impl_select ( const : : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : frame : : XDispatch > & _xDispatch , const : : com : : sun : : star : : util : : URL & aURL ) ;
2013-04-07 12:06:47 +02:00
OUString determineBaseURL ( const OUString & aURL ) ;
2010-03-21 20:01:33 +01:00
DECL_STATIC_LINK ( PopupMenuControllerBase , ExecuteHdl_Impl , PopupMenuControllerBaseDispatchInfo * ) ;
bool m_bInitialized ;
2013-04-07 12:06:47 +02:00
OUString m_aCommandURL ;
OUString m_aBaseURL ;
OUString m_aModuleName ;
2010-03-21 20:01:33 +01:00
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : frame : : XDispatch > m_xDispatch ;
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : frame : : XFrame > m_xFrame ;
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : util : : XURLTransformer > m_xURLTransformer ;
: : com : : sun : : star : : uno : : Reference < : : com : : sun : : star : : awt : : XPopupMenu > m_xPopupMenu ;
} ;
}
2013-10-23 19:14:56 +02:00
# endif // INCLUDED_SVTOOLS_POPUPMENUCONTROLLERBASE_HXX
2010-10-14 08:27:31 +02:00
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */