1*efeef26fSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*efeef26fSAndrew Rist * distributed with this work for additional information 6*efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*efeef26fSAndrew Rist * "License"); you may not use this file except in compliance 9*efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*efeef26fSAndrew Rist * software distributed under the License is distributed on an 15*efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*efeef26fSAndrew Rist * KIND, either express or implied. See the License for the 17*efeef26fSAndrew Rist * specific language governing permissions and limitations 18*efeef26fSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*efeef26fSAndrew Rist *************************************************************/ 21*efeef26fSAndrew Rist 22*efeef26fSAndrew Rist 23cdf0e10cSrcweir #include "vbavariable.hxx" 24cdf0e10cSrcweir #include <vbahelper/vbahelper.hxx> 25cdf0e10cSrcweir #include <tools/diagnose_ex.h> 26cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp> 27cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp> 28cdf0e10cSrcweir 29cdf0e10cSrcweir using namespace ::ooo::vba; 30cdf0e10cSrcweir using namespace ::com::sun::star; 31cdf0e10cSrcweir 32cdf0e10cSrcweir SwVbaVariable::SwVbaVariable( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, 33cdf0e10cSrcweir const uno::Reference< beans::XPropertyAccess >& rUserDefined, const rtl::OUString& rName ) throw ( uno::RuntimeException ) : 34cdf0e10cSrcweir SwVbaVariable_BASE( rParent, rContext ), mxUserDefined( rUserDefined ), maName( rName ) 35cdf0e10cSrcweir { 36cdf0e10cSrcweir } 37cdf0e10cSrcweir 38cdf0e10cSrcweir SwVbaVariable::~SwVbaVariable() 39cdf0e10cSrcweir { 40cdf0e10cSrcweir } 41cdf0e10cSrcweir 42cdf0e10cSrcweir rtl::OUString SAL_CALL 43cdf0e10cSrcweir SwVbaVariable::getName() throw ( css::uno::RuntimeException ) 44cdf0e10cSrcweir { 45cdf0e10cSrcweir return maName; 46cdf0e10cSrcweir } 47cdf0e10cSrcweir 48cdf0e10cSrcweir void SAL_CALL 49cdf0e10cSrcweir SwVbaVariable::setName( const rtl::OUString& ) throw ( css::uno::RuntimeException ) 50cdf0e10cSrcweir { 51cdf0e10cSrcweir throw uno::RuntimeException( rtl::OUString( 52cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(" Fail to set name")), uno::Reference< uno::XInterface >() ); 53cdf0e10cSrcweir } 54cdf0e10cSrcweir 55cdf0e10cSrcweir uno::Any SAL_CALL 56cdf0e10cSrcweir SwVbaVariable::getValue() throw ( css::uno::RuntimeException ) 57cdf0e10cSrcweir { 58cdf0e10cSrcweir uno::Reference< beans::XPropertySet > xProp( mxUserDefined, uno::UNO_QUERY_THROW ); 59cdf0e10cSrcweir return xProp->getPropertyValue( maName ); 60cdf0e10cSrcweir } 61cdf0e10cSrcweir 62cdf0e10cSrcweir void SAL_CALL 63cdf0e10cSrcweir SwVbaVariable::setValue( const uno::Any& rValue ) throw ( css::uno::RuntimeException ) 64cdf0e10cSrcweir { 65cdf0e10cSrcweir // FIXME: fail to set the value if the new type of vaue is differenct from the original one. 66cdf0e10cSrcweir uno::Reference< beans::XPropertySet > xProp( mxUserDefined, uno::UNO_QUERY_THROW ); 67cdf0e10cSrcweir xProp->setPropertyValue( maName, rValue ); 68cdf0e10cSrcweir } 69cdf0e10cSrcweir 70cdf0e10cSrcweir sal_Int32 SAL_CALL 71cdf0e10cSrcweir SwVbaVariable::getIndex() throw ( css::uno::RuntimeException ) 72cdf0e10cSrcweir { 73cdf0e10cSrcweir const uno::Sequence< beans::PropertyValue > props = mxUserDefined->getPropertyValues(); 74cdf0e10cSrcweir for (sal_Int32 i = 0; i < props.getLength(); ++i) 75cdf0e10cSrcweir { 76cdf0e10cSrcweir if( maName.equals( props[i].Name ) ) 77cdf0e10cSrcweir return i+1; 78cdf0e10cSrcweir } 79cdf0e10cSrcweir 80cdf0e10cSrcweir return 0; 81cdf0e10cSrcweir } 82cdf0e10cSrcweir 83cdf0e10cSrcweir rtl::OUString& 84cdf0e10cSrcweir SwVbaVariable::getServiceImplName() 85cdf0e10cSrcweir { 86cdf0e10cSrcweir static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaVariable") ); 87cdf0e10cSrcweir return sImplName; 88cdf0e10cSrcweir } 89cdf0e10cSrcweir 90cdf0e10cSrcweir uno::Sequence< rtl::OUString > 91cdf0e10cSrcweir SwVbaVariable::getServiceNames() 92cdf0e10cSrcweir { 93cdf0e10cSrcweir static uno::Sequence< rtl::OUString > aServiceNames; 94cdf0e10cSrcweir if ( aServiceNames.getLength() == 0 ) 95cdf0e10cSrcweir { 96cdf0e10cSrcweir aServiceNames.realloc( 1 ); 97cdf0e10cSrcweir aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Variable" ) ); 98cdf0e10cSrcweir } 99cdf0e10cSrcweir return aServiceNames; 100cdf0e10cSrcweir } 101cdf0e10cSrcweir 102