1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*************************************************************************
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * Copyright 2000, 2010 Oracle and/or its affiliates.
8 * OpenOffice.org - a multi-platform office productivity suite
10 * This file is part of OpenOffice.org.
12 * OpenOffice.org is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License version 3
14 * only, as published by the Free Software Foundation.
16 * OpenOffice.org is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License version 3 for more details
20 * (a copy is included in the LICENSE file that accompanied this code).
22 * You should have received a copy of the GNU Lesser General Public License
23 * version 3 along with OpenOffice.org. If not, see
24 * <http://www.openoffice.org/license.html>
25 * for a copy of the LGPLv3 License.
27 ************************************************************************/
29 #include "fmtextcontrolfeature.hxx"
31 /** === begin UNO includes === **/
32 /** === end UNO includes === **/
34 //........................................................................
37 //........................................................................
39 using namespace ::com::sun::star::uno
;
40 using namespace ::com::sun::star::frame
;
41 using namespace ::com::sun::star::lang
;
42 using namespace ::com::sun::star::beans
;
43 using namespace ::com::sun::star::util
;
45 //====================================================================
46 //= FmTextControlFeature
47 //====================================================================
48 //--------------------------------------------------------------------
49 FmTextControlFeature::FmTextControlFeature( const Reference
< XDispatch
>& _rxDispatcher
, const URL
& _rFeatureURL
, SfxSlotId _nSlotId
, ISlotInvalidator
* _pInvalidator
)
50 :m_xDispatcher ( _rxDispatcher
)
51 ,m_aFeatureURL ( _rFeatureURL
)
52 ,m_nSlotId ( _nSlotId
)
53 ,m_pInvalidator ( _pInvalidator
)
54 ,m_bFeatureEnabled( false )
56 OSL_ENSURE( _rxDispatcher
.is(), "FmTextControlFeature::FmTextControlFeature: invalid dispatcher!" );
57 OSL_ENSURE( m_nSlotId
, "FmTextControlFeature::FmTextControlFeature: invalid slot id!" );
58 OSL_ENSURE( m_pInvalidator
, "FmTextControlFeature::FmTextControlFeature: invalid invalidator!" );
60 osl_incrementInterlockedCount( &m_refCount
);
63 m_xDispatcher
->addStatusListener( this, m_aFeatureURL
);
65 catch( const Exception
& )
67 OSL_FAIL( "FmTextControlFeature::FmTextControlFeature: caught an exception!" );
69 osl_decrementInterlockedCount( &m_refCount
);
72 //--------------------------------------------------------------------
73 FmTextControlFeature::~FmTextControlFeature( )
77 //--------------------------------------------------------------------
78 void FmTextControlFeature::dispatch() const SAL_THROW(())
80 dispatch( Sequence
< PropertyValue
>( ) );
83 //--------------------------------------------------------------------
84 void FmTextControlFeature::dispatch( const Sequence
< PropertyValue
>& _rArgs
) const SAL_THROW(())
88 if ( m_xDispatcher
.is() )
89 m_xDispatcher
->dispatch( m_aFeatureURL
, _rArgs
);
91 catch( const Exception
& )
93 OSL_FAIL( "FmTextControlFeature::dispatch: caught an exception!" );
97 //--------------------------------------------------------------------
98 void SAL_CALL
FmTextControlFeature::statusChanged( const FeatureStateEvent
& _rState
) throw (RuntimeException
)
100 m_aFeatureState
= _rState
.State
;
101 m_bFeatureEnabled
= _rState
.IsEnabled
;
103 if ( m_pInvalidator
)
104 m_pInvalidator
->Invalidate( m_nSlotId
);
107 //--------------------------------------------------------------------
108 void SAL_CALL
FmTextControlFeature::disposing( const EventObject
& /*Source*/ ) throw (RuntimeException
)
113 //--------------------------------------------------------------------
114 void FmTextControlFeature::dispose() SAL_THROW(())
118 m_xDispatcher
->removeStatusListener( this, m_aFeatureURL
);
119 m_xDispatcher
.clear();
121 catch( const Exception
& )
123 OSL_FAIL( "FmTextControlFeature::dispose: caught an exception!" );
127 //........................................................................
129 //........................................................................
131 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */