1*2c696243SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*2c696243SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*2c696243SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*2c696243SAndrew Rist  * distributed with this work for additional information
6*2c696243SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*2c696243SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*2c696243SAndrew Rist  * "License"); you may not use this file except in compliance
9*2c696243SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*2c696243SAndrew Rist  *
11*2c696243SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*2c696243SAndrew Rist  *
13*2c696243SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*2c696243SAndrew Rist  * software distributed under the License is distributed on an
15*2c696243SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2c696243SAndrew Rist  * KIND, either express or implied.  See the License for the
17*2c696243SAndrew Rist  * specific language governing permissions and limitations
18*2c696243SAndrew Rist  * under the License.
19*2c696243SAndrew Rist  *
20*2c696243SAndrew Rist  *************************************************************/
21*2c696243SAndrew Rist 
22*2c696243SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_scripting.hxx"
26cdf0e10cSrcweir #include "basmethnode.hxx"
27cdf0e10cSrcweir #include <com/sun/star/beans/PropertyAttribute.hpp>
28cdf0e10cSrcweir #include <com/sun/star/frame/XDesktop.hpp>
29cdf0e10cSrcweir #include <com/sun/star/frame/XDispatchHelper.hpp>
30cdf0e10cSrcweir #include <com/sun/star/frame/XDispatchProvider.hpp>
31cdf0e10cSrcweir #include <com/sun/star/lang/XMultiComponentFactory.hpp>
32cdf0e10cSrcweir #include <com/sun/star/script/browse/BrowseNodeTypes.hpp>
33cdf0e10cSrcweir #include <vos/mutex.hxx>
34cdf0e10cSrcweir #include <vcl/svapp.hxx>
35cdf0e10cSrcweir #include <basic/sbstar.hxx>
36cdf0e10cSrcweir #include <basic/sbmeth.hxx>
37cdf0e10cSrcweir #include <basic/sbmod.hxx>
38cdf0e10cSrcweir 
39cdf0e10cSrcweir #include <util/MiscUtils.hxx>
40cdf0e10cSrcweir 
41cdf0e10cSrcweir using namespace ::com::sun::star;
42cdf0e10cSrcweir using namespace ::com::sun::star::lang;
43cdf0e10cSrcweir using namespace ::com::sun::star::uno;
44cdf0e10cSrcweir using namespace ::com::sun::star::beans;
45cdf0e10cSrcweir using namespace ::comphelper;
46cdf0e10cSrcweir using namespace ::com::sun::star::script;
47cdf0e10cSrcweir using namespace ::sf_misc;
48cdf0e10cSrcweir 
49cdf0e10cSrcweir #define BASPROV_PROPERTY_ID_URI         1
50cdf0e10cSrcweir #define BASPROV_PROPERTY_ID_EDITABLE    2
51cdf0e10cSrcweir 
52cdf0e10cSrcweir #define BASPROV_PROPERTY_URI            ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "URI" ) )
53cdf0e10cSrcweir #define BASPROV_PROPERTY_EDITABLE       ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Editable" ) )
54cdf0e10cSrcweir 
55cdf0e10cSrcweir #define BASPROV_DEFAULT_ATTRIBS()       PropertyAttribute::BOUND | PropertyAttribute::TRANSIENT | PropertyAttribute::READONLY
56cdf0e10cSrcweir 
57cdf0e10cSrcweir 
58cdf0e10cSrcweir //.........................................................................
59cdf0e10cSrcweir namespace basprov
60cdf0e10cSrcweir {
61cdf0e10cSrcweir //.........................................................................
62cdf0e10cSrcweir 
63cdf0e10cSrcweir     // =============================================================================
64cdf0e10cSrcweir     // BasicMethodNodeImpl
65cdf0e10cSrcweir     // =============================================================================
66cdf0e10cSrcweir 
BasicMethodNodeImpl(const Reference<XComponentContext> & rxContext,const::rtl::OUString & sScriptingContext,SbMethod * pMethod,bool isAppScript)67cdf0e10cSrcweir     BasicMethodNodeImpl::BasicMethodNodeImpl( const Reference< XComponentContext >& rxContext,
68cdf0e10cSrcweir         const ::rtl::OUString& sScriptingContext, SbMethod* pMethod, bool isAppScript )
69cdf0e10cSrcweir         : ::scripting_helper::OBroadcastHelperHolder( m_aMutex )
70cdf0e10cSrcweir         ,OPropertyContainer( GetBroadcastHelper() )
71cdf0e10cSrcweir         ,m_xContext( rxContext )
72cdf0e10cSrcweir         ,m_sScriptingContext( sScriptingContext )
73cdf0e10cSrcweir         ,m_pMethod( pMethod )
74cdf0e10cSrcweir         ,m_bIsAppScript( isAppScript )
75cdf0e10cSrcweir         ,m_bEditable( sal_True )
76cdf0e10cSrcweir     {
77cdf0e10cSrcweir         if ( m_pMethod )
78cdf0e10cSrcweir         {
79cdf0e10cSrcweir             SbModule* pModule = m_pMethod->GetModule();
80cdf0e10cSrcweir             if ( pModule )
81cdf0e10cSrcweir             {
82cdf0e10cSrcweir                 StarBASIC* pBasic = static_cast< StarBASIC* >( pModule->GetParent() );
83cdf0e10cSrcweir                 if ( pBasic )
84cdf0e10cSrcweir                 {
85cdf0e10cSrcweir                     m_sURI = ::rtl::OUString::createFromAscii( "vnd.sun.star.script:" );
86cdf0e10cSrcweir                     m_sURI += pBasic->GetName();
87cdf0e10cSrcweir                     m_sURI += ::rtl::OUString::createFromAscii( "." );
88cdf0e10cSrcweir                     m_sURI += pModule->GetName();
89cdf0e10cSrcweir                     m_sURI += ::rtl::OUString::createFromAscii( "." );
90cdf0e10cSrcweir                     m_sURI += m_pMethod->GetName();
91cdf0e10cSrcweir                     m_sURI += ::rtl::OUString::createFromAscii( "?language=Basic&location=" );
92cdf0e10cSrcweir                     if ( m_bIsAppScript )
93cdf0e10cSrcweir                         m_sURI += ::rtl::OUString::createFromAscii( "application" );
94cdf0e10cSrcweir                     else
95cdf0e10cSrcweir                         m_sURI += ::rtl::OUString::createFromAscii( "document" );
96cdf0e10cSrcweir                 }
97cdf0e10cSrcweir             }
98cdf0e10cSrcweir         }
99cdf0e10cSrcweir 
100cdf0e10cSrcweir         registerProperty( BASPROV_PROPERTY_URI,      BASPROV_PROPERTY_ID_URI,      BASPROV_DEFAULT_ATTRIBS(), &m_sURI,      ::getCppuType( &m_sURI ) );
101cdf0e10cSrcweir         registerProperty( BASPROV_PROPERTY_EDITABLE, BASPROV_PROPERTY_ID_EDITABLE, BASPROV_DEFAULT_ATTRIBS(), &m_bEditable, ::getCppuType( &m_bEditable ) );
102cdf0e10cSrcweir     }
103cdf0e10cSrcweir 
104cdf0e10cSrcweir     // -----------------------------------------------------------------------------
105cdf0e10cSrcweir 
~BasicMethodNodeImpl()106cdf0e10cSrcweir     BasicMethodNodeImpl::~BasicMethodNodeImpl()
107cdf0e10cSrcweir     {
108cdf0e10cSrcweir     }
109cdf0e10cSrcweir 
110cdf0e10cSrcweir     // -----------------------------------------------------------------------------
111cdf0e10cSrcweir     // XInterface
112cdf0e10cSrcweir     // -----------------------------------------------------------------------------
113cdf0e10cSrcweir 
IMPLEMENT_FORWARD_XINTERFACE2(BasicMethodNodeImpl,BasicMethodNodeImpl_BASE,OPropertyContainer)114cdf0e10cSrcweir     IMPLEMENT_FORWARD_XINTERFACE2( BasicMethodNodeImpl, BasicMethodNodeImpl_BASE, OPropertyContainer )
115cdf0e10cSrcweir 
116cdf0e10cSrcweir     // -----------------------------------------------------------------------------
117cdf0e10cSrcweir     // XTypeProvider
118cdf0e10cSrcweir     // -----------------------------------------------------------------------------
119cdf0e10cSrcweir 
120cdf0e10cSrcweir     IMPLEMENT_FORWARD_XTYPEPROVIDER2( BasicMethodNodeImpl, BasicMethodNodeImpl_BASE, OPropertyContainer )
121cdf0e10cSrcweir 
122cdf0e10cSrcweir     // -----------------------------------------------------------------------------
123cdf0e10cSrcweir     // XBrowseNode
124cdf0e10cSrcweir     // -----------------------------------------------------------------------------
125cdf0e10cSrcweir 
126cdf0e10cSrcweir     ::rtl::OUString BasicMethodNodeImpl::getName(  ) throw (RuntimeException)
127cdf0e10cSrcweir     {
128cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex() );
129cdf0e10cSrcweir 
130cdf0e10cSrcweir         ::rtl::OUString sMethodName;
131cdf0e10cSrcweir         if ( m_pMethod )
132cdf0e10cSrcweir             sMethodName = m_pMethod->GetName();
133cdf0e10cSrcweir 
134cdf0e10cSrcweir         return sMethodName;
135cdf0e10cSrcweir     }
136cdf0e10cSrcweir 
137cdf0e10cSrcweir     // -----------------------------------------------------------------------------
138cdf0e10cSrcweir 
getChildNodes()139cdf0e10cSrcweir     Sequence< Reference< browse::XBrowseNode > > BasicMethodNodeImpl::getChildNodes(  ) throw (RuntimeException)
140cdf0e10cSrcweir     {
141cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex() );
142cdf0e10cSrcweir 
143cdf0e10cSrcweir         return Sequence< Reference< browse::XBrowseNode > >();
144cdf0e10cSrcweir     }
145cdf0e10cSrcweir 
146cdf0e10cSrcweir     // -----------------------------------------------------------------------------
147cdf0e10cSrcweir 
hasChildNodes()148cdf0e10cSrcweir     sal_Bool BasicMethodNodeImpl::hasChildNodes(  ) throw (RuntimeException)
149cdf0e10cSrcweir     {
150cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex() );
151cdf0e10cSrcweir 
152cdf0e10cSrcweir         return sal_False;
153cdf0e10cSrcweir     }
154cdf0e10cSrcweir 
155cdf0e10cSrcweir     // -----------------------------------------------------------------------------
156cdf0e10cSrcweir 
getType()157cdf0e10cSrcweir     sal_Int16 BasicMethodNodeImpl::getType(  ) throw (RuntimeException)
158cdf0e10cSrcweir     {
159cdf0e10cSrcweir         ::vos::OGuard aGuard( Application::GetSolarMutex() );
160cdf0e10cSrcweir 
161cdf0e10cSrcweir         return browse::BrowseNodeTypes::SCRIPT;
162cdf0e10cSrcweir     }
163cdf0e10cSrcweir 
164cdf0e10cSrcweir     // -----------------------------------------------------------------------------
165cdf0e10cSrcweir     // OPropertySetHelper
166cdf0e10cSrcweir     // -----------------------------------------------------------------------------
167cdf0e10cSrcweir 
getInfoHelper()168cdf0e10cSrcweir     ::cppu::IPropertyArrayHelper& BasicMethodNodeImpl::getInfoHelper(  )
169cdf0e10cSrcweir     {
170cdf0e10cSrcweir         return *getArrayHelper();
171cdf0e10cSrcweir     }
172cdf0e10cSrcweir 
173cdf0e10cSrcweir     // -----------------------------------------------------------------------------
174cdf0e10cSrcweir     // OPropertyArrayUsageHelper
175cdf0e10cSrcweir     // -----------------------------------------------------------------------------
176cdf0e10cSrcweir 
createArrayHelper() const177cdf0e10cSrcweir     ::cppu::IPropertyArrayHelper* BasicMethodNodeImpl::createArrayHelper(  ) const
178cdf0e10cSrcweir     {
179cdf0e10cSrcweir         Sequence< Property > aProps;
180cdf0e10cSrcweir         describeProperties( aProps );
181cdf0e10cSrcweir         return new ::cppu::OPropertyArrayHelper( aProps );
182cdf0e10cSrcweir     }
183cdf0e10cSrcweir 
184cdf0e10cSrcweir     // -----------------------------------------------------------------------------
185cdf0e10cSrcweir     // XPropertySet
186cdf0e10cSrcweir     // -----------------------------------------------------------------------------
187cdf0e10cSrcweir 
getPropertySetInfo()188cdf0e10cSrcweir     Reference< XPropertySetInfo > BasicMethodNodeImpl::getPropertySetInfo(  ) throw (RuntimeException)
189cdf0e10cSrcweir     {
190cdf0e10cSrcweir         Reference< XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
191cdf0e10cSrcweir         return xInfo;
192cdf0e10cSrcweir     }
193cdf0e10cSrcweir 
194cdf0e10cSrcweir     // -----------------------------------------------------------------------------
195cdf0e10cSrcweir     // XInvocation
196cdf0e10cSrcweir     // -----------------------------------------------------------------------------
197cdf0e10cSrcweir 
getIntrospection()198cdf0e10cSrcweir     Reference< XIntrospectionAccess > BasicMethodNodeImpl::getIntrospection(  ) throw (RuntimeException)
199cdf0e10cSrcweir     {
200cdf0e10cSrcweir         return Reference< XIntrospectionAccess >();
201cdf0e10cSrcweir     }
202cdf0e10cSrcweir 
203cdf0e10cSrcweir     // -----------------------------------------------------------------------------
204cdf0e10cSrcweir 
invoke(const::rtl::OUString & aFunctionName,const Sequence<Any> & aParams,Sequence<sal_Int16> & aOutParamIndex,Sequence<Any> & aOutParam)205cdf0e10cSrcweir     Any BasicMethodNodeImpl::invoke( const ::rtl::OUString& aFunctionName, const Sequence< Any >& aParams,
206cdf0e10cSrcweir         Sequence< sal_Int16 >& aOutParamIndex, Sequence< Any >& aOutParam )
207cdf0e10cSrcweir         throw (IllegalArgumentException, script::CannotConvertException,
208cdf0e10cSrcweir                reflection::InvocationTargetException, RuntimeException)
209cdf0e10cSrcweir     {
210cdf0e10cSrcweir 		(void)aParams;
211cdf0e10cSrcweir 		(void)aOutParamIndex;
212cdf0e10cSrcweir 		(void)aOutParam;
213cdf0e10cSrcweir 
214cdf0e10cSrcweir         if ( aFunctionName == BASPROV_PROPERTY_EDITABLE )
215cdf0e10cSrcweir         {
216cdf0e10cSrcweir             ::rtl::OUString sDocURL, sLibName, sModName;
217cdf0e10cSrcweir             sal_uInt16 nLine1 = 0, nLine2;
218cdf0e10cSrcweir 
219cdf0e10cSrcweir             if ( !m_bIsAppScript )
220cdf0e10cSrcweir             {
221cdf0e10cSrcweir                 Reference< frame::XModel > xModel = MiscUtils::tDocUrlToModel( m_sScriptingContext );
222cdf0e10cSrcweir 
223cdf0e10cSrcweir                 if ( xModel.is() )
224cdf0e10cSrcweir                 {
225cdf0e10cSrcweir                     sDocURL = xModel->getURL();
226cdf0e10cSrcweir                     if ( sDocURL.getLength() == 0 )
227cdf0e10cSrcweir                     {
228cdf0e10cSrcweir                         Sequence < PropertyValue > aProps = xModel->getArgs();
229cdf0e10cSrcweir                         sal_Int32 nProps = aProps.getLength();
230cdf0e10cSrcweir                         const PropertyValue* pProps = aProps.getConstArray();
231cdf0e10cSrcweir                         for ( sal_Int32 i = 0; i < nProps; ++i )
232cdf0e10cSrcweir                         {
233cdf0e10cSrcweir                             // TODO: according to MBA the property 'Title' may change in future
234cdf0e10cSrcweir                             if ( pProps[i].Name == ::rtl::OUString::createFromAscii( "Title" ) )
235cdf0e10cSrcweir                             {
236cdf0e10cSrcweir                                 pProps[i].Value >>= sDocURL;
237cdf0e10cSrcweir                                 break;
238cdf0e10cSrcweir                             }
239cdf0e10cSrcweir                         }
240cdf0e10cSrcweir                     }
241cdf0e10cSrcweir                 }
242cdf0e10cSrcweir             }
243cdf0e10cSrcweir 
244cdf0e10cSrcweir             if ( m_pMethod )
245cdf0e10cSrcweir             {
246cdf0e10cSrcweir                 m_pMethod->GetLineRange( nLine1, nLine2 );
247cdf0e10cSrcweir                 SbModule* pModule = m_pMethod->GetModule();
248cdf0e10cSrcweir                 if ( pModule )
249cdf0e10cSrcweir                 {
250cdf0e10cSrcweir                     sModName = pModule->GetName();
251cdf0e10cSrcweir                     StarBASIC* pBasic = static_cast< StarBASIC* >( pModule->GetParent() );
252cdf0e10cSrcweir                     if ( pBasic )
253cdf0e10cSrcweir                         sLibName = pBasic->GetName();
254cdf0e10cSrcweir                 }
255cdf0e10cSrcweir             }
256cdf0e10cSrcweir 
257cdf0e10cSrcweir             if ( m_xContext.is() )
258cdf0e10cSrcweir             {
259cdf0e10cSrcweir                 Reference< XMultiComponentFactory > xSMgr( m_xContext->getServiceManager() );
260cdf0e10cSrcweir 
261cdf0e10cSrcweir                 if ( xSMgr.is() )
262cdf0e10cSrcweir                 {
263cdf0e10cSrcweir                     Reference< frame::XDesktop > xDesktop( xSMgr->createInstanceWithContext(
264cdf0e10cSrcweir                         ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.Desktop" ) ), m_xContext ), UNO_QUERY );
265cdf0e10cSrcweir 
266cdf0e10cSrcweir                     if ( xDesktop.is() )
267cdf0e10cSrcweir                     {
268cdf0e10cSrcweir                         Reference < frame::XDispatchProvider > xProv( xDesktop->getCurrentFrame(), UNO_QUERY );
269cdf0e10cSrcweir 
270cdf0e10cSrcweir                         if ( xProv.is() )
271cdf0e10cSrcweir                         {
272cdf0e10cSrcweir                             Reference< frame::XDispatchHelper > xHelper( xSMgr->createInstanceWithContext(
273cdf0e10cSrcweir                                 ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.DispatchHelper" ) ), m_xContext ), UNO_QUERY );
274cdf0e10cSrcweir 
275cdf0e10cSrcweir                             if ( xHelper.is() )
276cdf0e10cSrcweir                             {
277cdf0e10cSrcweir                                 Sequence < PropertyValue > aArgs(7);
278cdf0e10cSrcweir                                 aArgs[0].Name = ::rtl::OUString::createFromAscii( "Document" );
279cdf0e10cSrcweir                                 aArgs[0].Value <<= sDocURL;
280cdf0e10cSrcweir                                 aArgs[1].Name = ::rtl::OUString::createFromAscii( "LibName" );
281cdf0e10cSrcweir                                 aArgs[1].Value <<= sLibName;
282cdf0e10cSrcweir                                 aArgs[2].Name = ::rtl::OUString::createFromAscii( "Name" );
283cdf0e10cSrcweir                                 aArgs[2].Value <<= sModName;
284cdf0e10cSrcweir                                 aArgs[3].Name = ::rtl::OUString::createFromAscii( "Type" );
285cdf0e10cSrcweir                                 aArgs[3].Value <<= ::rtl::OUString::createFromAscii( "Module" );
286cdf0e10cSrcweir                                 aArgs[4].Name = ::rtl::OUString::createFromAscii( "Line" );
287cdf0e10cSrcweir                                 aArgs[4].Value <<= static_cast< sal_uInt32 >( nLine1 );
288cdf0e10cSrcweir                                 xHelper->executeDispatch( xProv, ::rtl::OUString::createFromAscii( ".uno:BasicIDEAppear" ), ::rtl::OUString(), 0, aArgs );
289cdf0e10cSrcweir                             }
290cdf0e10cSrcweir                         }
291cdf0e10cSrcweir                     }
292cdf0e10cSrcweir                 }
293cdf0e10cSrcweir             }
294cdf0e10cSrcweir         }
295cdf0e10cSrcweir         else
296cdf0e10cSrcweir         {
297cdf0e10cSrcweir             throw IllegalArgumentException(
298cdf0e10cSrcweir                 ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "BasicMethodNodeImpl::invoke: function name not supported!" ) ),
299cdf0e10cSrcweir                 Reference< XInterface >(), 1 );
300cdf0e10cSrcweir         }
301cdf0e10cSrcweir 
302cdf0e10cSrcweir         return Any();
303cdf0e10cSrcweir     }
304cdf0e10cSrcweir 
305cdf0e10cSrcweir     // -----------------------------------------------------------------------------
306cdf0e10cSrcweir 
setValue(const::rtl::OUString & aPropertyName,const Any & aValue)307cdf0e10cSrcweir     void BasicMethodNodeImpl::setValue( const ::rtl::OUString& aPropertyName, const Any& aValue )
308cdf0e10cSrcweir         throw (UnknownPropertyException, script::CannotConvertException,
309cdf0e10cSrcweir                reflection::InvocationTargetException, RuntimeException)
310cdf0e10cSrcweir     {
311cdf0e10cSrcweir 		(void)aPropertyName;
312cdf0e10cSrcweir 		(void)aValue;
313cdf0e10cSrcweir 
314cdf0e10cSrcweir         throw UnknownPropertyException(
315cdf0e10cSrcweir             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "BasicMethodNodeImpl::setValue: property name is unknown!" ) ),
316cdf0e10cSrcweir             Reference< XInterface >() );
317cdf0e10cSrcweir     }
318cdf0e10cSrcweir 
319cdf0e10cSrcweir     // -----------------------------------------------------------------------------
320cdf0e10cSrcweir 
getValue(const::rtl::OUString & aPropertyName)321cdf0e10cSrcweir     Any BasicMethodNodeImpl::getValue( const ::rtl::OUString& aPropertyName ) throw (UnknownPropertyException, RuntimeException)
322cdf0e10cSrcweir     {
323cdf0e10cSrcweir 		(void)aPropertyName;
324cdf0e10cSrcweir 
325cdf0e10cSrcweir         throw UnknownPropertyException(
326cdf0e10cSrcweir             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "BasicMethodNodeImpl::getValue: property name is unknown!" ) ),
327cdf0e10cSrcweir             Reference< XInterface >() );
328cdf0e10cSrcweir     }
329cdf0e10cSrcweir 
330cdf0e10cSrcweir     // -----------------------------------------------------------------------------
331cdf0e10cSrcweir 
hasMethod(const::rtl::OUString & aName)332cdf0e10cSrcweir     sal_Bool BasicMethodNodeImpl::hasMethod( const ::rtl::OUString& aName ) throw (RuntimeException)
333cdf0e10cSrcweir     {
334cdf0e10cSrcweir         sal_Bool bReturn = sal_False;
335cdf0e10cSrcweir         if ( aName == BASPROV_PROPERTY_EDITABLE )
336cdf0e10cSrcweir             bReturn = sal_True;
337cdf0e10cSrcweir 
338cdf0e10cSrcweir         return bReturn;
339cdf0e10cSrcweir     }
340cdf0e10cSrcweir 
341cdf0e10cSrcweir     // -----------------------------------------------------------------------------
342cdf0e10cSrcweir 
hasProperty(const::rtl::OUString & aName)343cdf0e10cSrcweir     sal_Bool BasicMethodNodeImpl::hasProperty( const ::rtl::OUString& aName ) throw (RuntimeException)
344cdf0e10cSrcweir     {
345cdf0e10cSrcweir 		(void)aName;
346cdf0e10cSrcweir 
347cdf0e10cSrcweir         return sal_False;
348cdf0e10cSrcweir     }
349cdf0e10cSrcweir 
350cdf0e10cSrcweir     // -----------------------------------------------------------------------------
351cdf0e10cSrcweir 
352cdf0e10cSrcweir //.........................................................................
353cdf0e10cSrcweir }	// namespace basprov
354cdf0e10cSrcweir //.........................................................................
355