15d39f272SZheng Fan /**************************************************************
25d39f272SZheng Fan  *
35d39f272SZheng Fan  * Licensed to the Apache Software Foundation (ASF) under one
45d39f272SZheng Fan  * or more contributor license agreements.  See the NOTICE file
55d39f272SZheng Fan  * distributed with this work for additional information
65d39f272SZheng Fan  * regarding copyright ownership.  The ASF licenses this file
75d39f272SZheng Fan  * to you under the Apache License, Version 2.0 (the
85d39f272SZheng Fan  * "License"); you may not use this file except in compliance
95d39f272SZheng Fan  * with the License.  You may obtain a copy of the License at
105d39f272SZheng Fan  *
115d39f272SZheng Fan  *   http://www.apache.org/licenses/LICENSE-2.0
125d39f272SZheng Fan  *
135d39f272SZheng Fan  * Unless required by applicable law or agreed to in writing,
145d39f272SZheng Fan  * software distributed under the License is distributed on an
155d39f272SZheng Fan  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
165d39f272SZheng Fan  * KIND, either express or implied.  See the License for the
175d39f272SZheng Fan  * specific language governing permissions and limitations
185d39f272SZheng Fan  * under the License.
195d39f272SZheng Fan  *
205d39f272SZheng Fan  *************************************************************/
215d39f272SZheng Fan 
225d39f272SZheng Fan #ifndef _SVX_SIDEBAR_SELECTION_CHANGE_HANDLER_HXX_
235d39f272SZheng Fan #define _SVX_SIDEBAR_SELECTION_CHANGE_HANDLER_HXX_
245d39f272SZheng Fan 
255d39f272SZheng Fan #include "svx/svxdllapi.h"
265d39f272SZheng Fan #include <sfx2/sidebar/EnumContext.hxx>
275d39f272SZheng Fan #include <com/sun/star/frame/XController.hpp>
285d39f272SZheng Fan #include <com/sun/star/view/XSelectionSupplier.hpp>
295d39f272SZheng Fan #include <com/sun/star/view/XSelectionChangeListener.hpp>
305d39f272SZheng Fan 
315d39f272SZheng Fan #include <cppuhelper/compbase1.hxx>
325d39f272SZheng Fan #include <cppuhelper/basemutex.hxx>
335d39f272SZheng Fan 
345d39f272SZheng Fan #include <boost/noncopyable.hpp>
355d39f272SZheng Fan #include <boost/function.hpp>
365d39f272SZheng Fan 
375d39f272SZheng Fan namespace css = ::com::sun::star;
385d39f272SZheng Fan namespace cssu = ::com::sun::star::uno;
395d39f272SZheng Fan 
405d39f272SZheng Fan 
415d39f272SZheng Fan class SdrMarkView;
425d39f272SZheng Fan 
435d39f272SZheng Fan 
445d39f272SZheng Fan namespace svx { namespace sidebar {
455d39f272SZheng Fan 
465d39f272SZheng Fan namespace {
475d39f272SZheng Fan     typedef ::cppu::WeakComponentImplHelper1 <
485d39f272SZheng Fan         css::view::XSelectionChangeListener
495d39f272SZheng Fan         > SelectionChangeHandlerInterfaceBase;
505d39f272SZheng Fan }
515d39f272SZheng Fan 
525d39f272SZheng Fan 
535d39f272SZheng Fan class SVX_DLLPUBLIC SelectionChangeHandler
545d39f272SZheng Fan     : private ::boost::noncopyable,
555d39f272SZheng Fan       private ::cppu::BaseMutex,
565d39f272SZheng Fan       public SelectionChangeHandlerInterfaceBase
575d39f272SZheng Fan {
585d39f272SZheng Fan public:
595d39f272SZheng Fan     SelectionChangeHandler (
60*2a3f8a0eSAndre Fischer         const boost::function<rtl::OUString(void)>& rSelectionChangeCallback,
615d39f272SZheng Fan         const cssu::Reference<css::frame::XController>& rxController,
625d39f272SZheng Fan         const sfx2::sidebar::EnumContext::Context eDefaultContext);
635d39f272SZheng Fan     virtual ~SelectionChangeHandler (void);
645d39f272SZheng Fan 
655d39f272SZheng Fan     virtual void SAL_CALL selectionChanged (const css::lang::EventObject& rEvent)
665d39f272SZheng Fan         throw (cssu::RuntimeException);
675d39f272SZheng Fan 
685d39f272SZheng Fan     virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
695d39f272SZheng Fan         throw (cssu::RuntimeException);
705d39f272SZheng Fan 
715d39f272SZheng Fan     virtual void SAL_CALL disposing (void)
725d39f272SZheng Fan         throw (cssu::RuntimeException);
735d39f272SZheng Fan 
745d39f272SZheng Fan     void Connect (void);
755d39f272SZheng Fan     void Disconnect (void);
765d39f272SZheng Fan 
775d39f272SZheng Fan private:
78*2a3f8a0eSAndre Fischer     const boost::function<rtl::OUString(void)> maSelectionChangeCallback;
795d39f272SZheng Fan     cssu::Reference<css::frame::XController> mxController;
805d39f272SZheng Fan     const sfx2::sidebar::EnumContext::Context meDefaultContext;
815d39f272SZheng Fan     bool mbIsConnected;
825d39f272SZheng Fan };
835d39f272SZheng Fan 
845d39f272SZheng Fan 
855d39f272SZheng Fan } } // end of namespace svx::sidebar
865d39f272SZheng Fan 
875d39f272SZheng Fan 
885d39f272SZheng Fan #endif
895d39f272SZheng Fan 
90