| /************************************************************** | |
| * | |
| * 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 "componenttools.hxx" | |
| /** === begin UNO includes === **/ | |
| #include <com/sun/star/container/XChild.hpp> | |
| /** === end UNO includes === **/ | |
| #include <algorithm> | |
| #include <iterator> | |
| //........................................................................ | |
| namespace frm | |
| { | |
| //........................................................................ | |
| /** === begin UNO using === **/ | |
| using ::com::sun::star::frame::XModel; | |
| using ::com::sun::star::uno::XInterface; | |
| using ::com::sun::star::uno::Reference; | |
| using ::com::sun::star::uno::UNO_QUERY; | |
| using ::com::sun::star::container::XChild; | |
| /** === end UNO using === **/ | |
| //==================================================================== | |
| //= TypeBag | |
| //==================================================================== | |
| //-------------------------------------------------------------------- | |
| TypeBag::TypeBag( const TypeSequence& _rTypes1 ) | |
| { | |
| addTypes( _rTypes1 ); | |
| } | |
| //-------------------------------------------------------------------- | |
| TypeBag::TypeBag( const TypeSequence& _rTypes1, const TypeSequence& _rTypes2 ) | |
| { | |
| addTypes( _rTypes1 ); | |
| addTypes( _rTypes2 ); | |
| } | |
| //-------------------------------------------------------------------- | |
| TypeBag::TypeBag( const TypeSequence& _rTypes1, const TypeSequence& _rTypes2, const TypeSequence& _rTypes3 ) | |
| { | |
| addTypes( _rTypes1 ); | |
| addTypes( _rTypes2 ); | |
| addTypes( _rTypes3 ); | |
| } | |
| //-------------------------------------------------------------------- | |
| void TypeBag::addTypes( const TypeSequence& _rTypes ) | |
| { | |
| ::std::copy( | |
| _rTypes.getConstArray(), | |
| _rTypes.getConstArray() + _rTypes.getLength(), | |
| ::std::insert_iterator< TypeSet >( m_aTypes, m_aTypes.begin() ) | |
| ); | |
| } | |
| //-------------------------------------------------------------------- | |
| void TypeBag::addType( const Type& i_rType ) | |
| { | |
| m_aTypes.insert( i_rType ); | |
| } | |
| //-------------------------------------------------------------------- | |
| void TypeBag::removeType( const TypeBag::Type& i_rType ) | |
| { | |
| m_aTypes.erase( i_rType ); | |
| } | |
| //-------------------------------------------------------------------- | |
| TypeBag::TypeSequence TypeBag::getTypes() const | |
| { | |
| TypeSequence aTypes( m_aTypes.size() ); | |
| ::std::copy( m_aTypes.begin(), m_aTypes.end(), aTypes.getArray() ); | |
| return aTypes; | |
| } | |
| //==================================================================== | |
| Reference< XModel > getXModel( const Reference< XInterface >& _rxComponent ) | |
| { | |
| Reference< XInterface > xParent = _rxComponent; | |
| Reference< XModel > xModel( xParent, UNO_QUERY );; | |
| while ( xParent.is() && !xModel.is() ) | |
| { | |
| Reference< XChild > xChild( xParent, UNO_QUERY ); | |
| xParent.set( xChild.is() ? xChild->getParent() : Reference< XInterface >(), UNO_QUERY ); | |
| xModel.set( xParent, UNO_QUERY ); | |
| } | |
| return xModel; | |
| } | |
| //........................................................................ | |
| } // namespace frm | |
| //........................................................................ | |