1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_chart2.hxx" 26 27 #include "FeatureCommandDispatchBase.hxx" 28 29 using namespace ::com::sun::star; 30 31 using ::com::sun::star::uno::Reference; 32 using ::com::sun::star::uno::Sequence; 33 34 namespace chart 35 { 36 37 FeatureCommandDispatchBase::FeatureCommandDispatchBase( const Reference< uno::XComponentContext >& rxContext ) 38 :CommandDispatch( rxContext ) 39 ,m_nFeatureId( 0 ) 40 { 41 } 42 43 FeatureCommandDispatchBase::~FeatureCommandDispatchBase() 44 { 45 } 46 47 void FeatureCommandDispatchBase::initialize() 48 { 49 CommandDispatch::initialize(); 50 fillSupportedFeatures(); 51 } 52 53 bool FeatureCommandDispatchBase::isFeatureSupported( const ::rtl::OUString& rCommandURL ) 54 { 55 SupportedFeatures::const_iterator aIter = m_aSupportedFeatures.find( rCommandURL ); 56 if ( aIter != m_aSupportedFeatures.end() ) 57 { 58 return true; 59 } 60 return false; 61 } 62 63 void FeatureCommandDispatchBase::fireStatusEvent( const ::rtl::OUString& rURL, 64 const Reference< frame::XStatusListener >& xSingleListener /* = 0 */ ) 65 { 66 if ( rURL.getLength() == 0 ) 67 { 68 SupportedFeatures::const_iterator aEnd( m_aSupportedFeatures.end() ); 69 for ( SupportedFeatures::const_iterator aIter( m_aSupportedFeatures.begin() ); aIter != aEnd; ++aIter ) 70 { 71 FeatureState aFeatureState( getState( aIter->first ) ); 72 fireStatusEventForURL( aIter->first, aFeatureState.aState, aFeatureState.bEnabled, xSingleListener ); 73 } 74 } 75 else 76 { 77 FeatureState aFeatureState( getState( rURL ) ); 78 fireStatusEventForURL( rURL, aFeatureState.aState, aFeatureState.bEnabled, xSingleListener ); 79 } 80 } 81 82 // XDispatch 83 void FeatureCommandDispatchBase::dispatch( const util::URL& URL, 84 const Sequence< beans::PropertyValue >& Arguments ) 85 throw (uno::RuntimeException) 86 { 87 ::rtl::OUString aCommand( URL.Complete ); 88 if ( getState( aCommand ).bEnabled ) 89 { 90 execute( aCommand, Arguments ); 91 } 92 } 93 94 void FeatureCommandDispatchBase::implDescribeSupportedFeature( const sal_Char* pAsciiCommandURL, 95 sal_uInt16 nId, sal_Int16 nGroup ) 96 { 97 ControllerFeature aFeature; 98 aFeature.Command = ::rtl::OUString::createFromAscii( pAsciiCommandURL ); 99 aFeature.nFeatureId = nId; 100 aFeature.GroupId = nGroup; 101 102 m_aSupportedFeatures[ aFeature.Command ] = aFeature; 103 } 104 105 void FeatureCommandDispatchBase::fillSupportedFeatures() 106 { 107 describeSupportedFeatures(); 108 } 109 110 } // namespace chart 111