xref: /AOO41X/main/forms/source/component/FormsCollection.cxx (revision 24acc54625a85f778a4f966495e8f4cd9d7b247c)
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_forms.hxx"
26 
27 #include "FormsCollection.hxx"
28 #include "services.hxx"
29 #include <comphelper/sequence.hxx>
30 #include <tools/debug.hxx>
31 #include <com/sun/star/form/XForm.hpp>
32 #include <rtl/logfile.hxx>
33 
34 //.........................................................................
35 namespace frm
36 {
37 //.........................................................................
38 using namespace ::com::sun::star::lang;
39 using namespace ::com::sun::star::uno;
40 using namespace ::com::sun::star::form;
41 using namespace ::com::sun::star::container;
42 using namespace ::com::sun::star::util;
43 
44 //------------------------------------------------------------------
DBG_NAME(OFormsCollection)45 DBG_NAME(OFormsCollection)
46 //------------------------------------------------------------------
47 InterfaceRef SAL_CALL OFormsCollection_CreateInstance(const Reference<XMultiServiceFactory>& _rxFactory)
48 {
49     return *(new OFormsCollection(_rxFactory));
50 }
51 
52 //------------------------------------------------------------------------------
getServiceName()53 ::rtl::OUString SAL_CALL OFormsCollection::getServiceName() throw(RuntimeException)
54 {
55     return FRM_SUN_FORMS_COLLECTION;
56 }
57 
58 //------------------------------------------------------------------------------
getImplementationId()59 Sequence< sal_Int8 > SAL_CALL OFormsCollection::getImplementationId(  ) throw(RuntimeException)
60 {
61     return OImplementationIds::getImplementationId(getTypes());
62 }
63 
64 //------------------------------------------------------------------------------
getTypes()65 Sequence<Type> SAL_CALL OFormsCollection::getTypes() throw(RuntimeException)
66 {
67     return concatSequences(OInterfaceContainer::getTypes(), FormsCollectionComponentBase::getTypes(), OFormsCollection_BASE::getTypes());
68 }
69 
70 //------------------------------------------------------------------
OFormsCollection(const Reference<XMultiServiceFactory> & _rxFactory)71 OFormsCollection::OFormsCollection(const Reference<XMultiServiceFactory>& _rxFactory)
72     :FormsCollectionComponentBase( m_aMutex )
73     ,OInterfaceContainer( _rxFactory, m_aMutex, XForm::static_type() )
74     ,OFormsCollection_BASE()
75 {
76     DBG_CTOR(OFormsCollection, NULL);
77 }
78 
79 //------------------------------------------------------------------------------
OFormsCollection(const OFormsCollection & _cloneSource)80 OFormsCollection::OFormsCollection( const OFormsCollection& _cloneSource )
81     :FormsCollectionComponentBase( m_aMutex )
82     ,OInterfaceContainer( m_aMutex, _cloneSource )
83     ,OFormsCollection_BASE()
84 {
85     DBG_CTOR( OFormsCollection, NULL );
86 }
87 
88 //------------------------------------------------------------------------------
~OFormsCollection()89 OFormsCollection::~OFormsCollection()
90 {
91     DBG_DTOR(OFormsCollection, NULL);
92     if (!FormsCollectionComponentBase::rBHelper.bDisposed)
93     {
94         acquire();
95         dispose();
96     }
97 }
98 
99 //------------------------------------------------------------------------------
queryAggregation(const Type & _rType)100 Any SAL_CALL OFormsCollection::queryAggregation(const Type& _rType) throw(RuntimeException)
101 {
102     Any aReturn = OFormsCollection_BASE::queryInterface(_rType);
103     if (!aReturn.hasValue())
104     {
105         aReturn = OInterfaceContainer::queryInterface(_rType);
106 
107         if (!aReturn.hasValue())
108             aReturn = FormsCollectionComponentBase::queryAggregation(_rType);
109     }
110 
111     return aReturn;
112 }
113 
114 //------------------------------------------------------------------------------
getImplementationName()115 ::rtl::OUString SAL_CALL OFormsCollection::getImplementationName() throw(RuntimeException)
116 {
117     return ::rtl::OUString::createFromAscii("com.sun.star.comp.forms.OFormsCollection");
118 }
119 
120 //------------------------------------------------------------------------------
supportsService(const::rtl::OUString & _rServiceName)121 sal_Bool SAL_CALL OFormsCollection::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException)
122 {
123     Sequence<rtl::OUString> aSupported = getSupportedServiceNames();
124     const rtl::OUString* pSupported = aSupported.getConstArray();
125     for (sal_Int32 i=0; i<aSupported.getLength(); ++i, ++pSupported)
126         if (pSupported->equals(_rServiceName))
127             return sal_True;
128     return sal_False;
129 }
130 
131 //------------------------------------------------------------------------------
getSupportedServiceNames()132 StringSequence SAL_CALL OFormsCollection::getSupportedServiceNames() throw(RuntimeException)
133 {
134     StringSequence aReturn(2);
135 
136     aReturn.getArray()[0] = FRM_SUN_FORMS_COLLECTION;
137     aReturn.getArray()[1] = ::rtl::OUString::createFromAscii("com.sun.star.form.FormComponents");
138 
139     return aReturn;
140 }
141 
142 // XCloneable
143 //------------------------------------------------------------------------------
createClone()144 Reference< XCloneable > SAL_CALL OFormsCollection::createClone(  ) throw (RuntimeException)
145 {
146     OFormsCollection* pClone = new OFormsCollection( *this );
147     osl_incrementInterlockedCount( &pClone->m_refCount );
148     pClone->clonedFrom( *this );
149     osl_decrementInterlockedCount( &pClone->m_refCount );
150     return pClone;
151 }
152 
153 // OComponentHelper
154 //------------------------------------------------------------------------------
disposing()155 void OFormsCollection::disposing()
156 {
157     {
158         RTL_LOGFILE_CONTEXT( aLogger, "forms::OFormsCollection::disposing" );
159         OInterfaceContainer::disposing();
160     }
161     FormsCollectionComponentBase::disposing();
162     m_xParent = NULL;
163 }
164 
165 //XChild
166 //------------------------------------------------------------------------------
setParent(const InterfaceRef & Parent)167 void OFormsCollection::setParent(const InterfaceRef& Parent) throw( NoSupportException, RuntimeException )
168 {
169     ::osl::MutexGuard aGuard( m_aMutex );
170     m_xParent = Parent;
171 }
172 
173 //------------------------------------------------------------------------------
getParent()174 InterfaceRef  OFormsCollection::getParent() throw( RuntimeException )
175 {
176     return m_xParent;
177 }
178 
179 //.........................................................................
180 }   // namespace frm
181 //.........................................................................
182 
183