| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_forms.hxx" |
| |
| #include "FormsCollection.hxx" |
| #include "services.hxx" |
| #include <comphelper/sequence.hxx> |
| #include <tools/debug.hxx> |
| #include <com/sun/star/form/XForm.hpp> |
| #include <rtl/logfile.hxx> |
| |
| //......................................................................... |
| namespace frm |
| { |
| //......................................................................... |
| using namespace ::com::sun::star::lang; |
| using namespace ::com::sun::star::uno; |
| using namespace ::com::sun::star::form; |
| using namespace ::com::sun::star::container; |
| using namespace ::com::sun::star::util; |
| |
| //------------------------------------------------------------------ |
| DBG_NAME(OFormsCollection) |
| //------------------------------------------------------------------ |
| InterfaceRef SAL_CALL OFormsCollection_CreateInstance(const Reference<XMultiServiceFactory>& _rxFactory) |
| { |
| return *(new OFormsCollection(_rxFactory)); |
| } |
| |
| //------------------------------------------------------------------------------ |
| ::rtl::OUString SAL_CALL OFormsCollection::getServiceName() throw(RuntimeException) |
| { |
| return FRM_SUN_FORMS_COLLECTION; |
| } |
| |
| //------------------------------------------------------------------------------ |
| Sequence< sal_Int8 > SAL_CALL OFormsCollection::getImplementationId( ) throw(RuntimeException) |
| { |
| return OImplementationIds::getImplementationId(getTypes()); |
| } |
| |
| //------------------------------------------------------------------------------ |
| Sequence<Type> SAL_CALL OFormsCollection::getTypes() throw(RuntimeException) |
| { |
| return concatSequences(OInterfaceContainer::getTypes(), FormsCollectionComponentBase::getTypes(), OFormsCollection_BASE::getTypes()); |
| } |
| |
| //------------------------------------------------------------------ |
| OFormsCollection::OFormsCollection(const Reference<XMultiServiceFactory>& _rxFactory) |
| :FormsCollectionComponentBase( m_aMutex ) |
| ,OInterfaceContainer( _rxFactory, m_aMutex, XForm::static_type() ) |
| ,OFormsCollection_BASE() |
| { |
| DBG_CTOR(OFormsCollection, NULL); |
| } |
| |
| //------------------------------------------------------------------------------ |
| OFormsCollection::OFormsCollection( const OFormsCollection& _cloneSource ) |
| :FormsCollectionComponentBase( m_aMutex ) |
| ,OInterfaceContainer( m_aMutex, _cloneSource ) |
| ,OFormsCollection_BASE() |
| { |
| DBG_CTOR( OFormsCollection, NULL ); |
| } |
| |
| //------------------------------------------------------------------------------ |
| OFormsCollection::~OFormsCollection() |
| { |
| DBG_DTOR(OFormsCollection, NULL); |
| if (!FormsCollectionComponentBase::rBHelper.bDisposed) |
| { |
| acquire(); |
| dispose(); |
| } |
| } |
| |
| //------------------------------------------------------------------------------ |
| Any SAL_CALL OFormsCollection::queryAggregation(const Type& _rType) throw(RuntimeException) |
| { |
| Any aReturn = OFormsCollection_BASE::queryInterface(_rType); |
| if (!aReturn.hasValue()) |
| { |
| aReturn = OInterfaceContainer::queryInterface(_rType); |
| |
| if (!aReturn.hasValue()) |
| aReturn = FormsCollectionComponentBase::queryAggregation(_rType); |
| } |
| |
| return aReturn; |
| } |
| |
| //------------------------------------------------------------------------------ |
| ::rtl::OUString SAL_CALL OFormsCollection::getImplementationName() throw(RuntimeException) |
| { |
| return ::rtl::OUString::createFromAscii("com.sun.star.comp.forms.OFormsCollection"); |
| } |
| |
| //------------------------------------------------------------------------------ |
| sal_Bool SAL_CALL OFormsCollection::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException) |
| { |
| Sequence<rtl::OUString> aSupported = getSupportedServiceNames(); |
| const rtl::OUString* pSupported = aSupported.getConstArray(); |
| for (sal_Int32 i=0; i<aSupported.getLength(); ++i, ++pSupported) |
| if (pSupported->equals(_rServiceName)) |
| return sal_True; |
| return sal_False; |
| } |
| |
| //------------------------------------------------------------------------------ |
| StringSequence SAL_CALL OFormsCollection::getSupportedServiceNames() throw(RuntimeException) |
| { |
| StringSequence aReturn(2); |
| |
| aReturn.getArray()[0] = FRM_SUN_FORMS_COLLECTION; |
| aReturn.getArray()[1] = ::rtl::OUString::createFromAscii("com.sun.star.form.FormComponents"); |
| |
| return aReturn; |
| } |
| |
| // XCloneable |
| //------------------------------------------------------------------------------ |
| Reference< XCloneable > SAL_CALL OFormsCollection::createClone( ) throw (RuntimeException) |
| { |
| OFormsCollection* pClone = new OFormsCollection( *this ); |
| osl_incrementInterlockedCount( &pClone->m_refCount ); |
| pClone->clonedFrom( *this ); |
| osl_decrementInterlockedCount( &pClone->m_refCount ); |
| return pClone; |
| } |
| |
| // OComponentHelper |
| //------------------------------------------------------------------------------ |
| void OFormsCollection::disposing() |
| { |
| { |
| RTL_LOGFILE_CONTEXT( aLogger, "forms::OFormsCollection::disposing" ); |
| OInterfaceContainer::disposing(); |
| } |
| FormsCollectionComponentBase::disposing(); |
| m_xParent = NULL; |
| } |
| |
| //XChild |
| //------------------------------------------------------------------------------ |
| void OFormsCollection::setParent(const InterfaceRef& Parent) throw( NoSupportException, RuntimeException ) |
| { |
| ::osl::MutexGuard aGuard( m_aMutex ); |
| m_xParent = Parent; |
| } |
| |
| //------------------------------------------------------------------------------ |
| InterfaceRef OFormsCollection::getParent() throw( RuntimeException ) |
| { |
| return m_xParent; |
| } |
| |
| //......................................................................... |
| } // namespace frm |
| //......................................................................... |
| |