| /************************************************************** |
| * |
| * 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_dbaccess.hxx" |
| #ifndef DBAUI_COLUMNPEER_HXX |
| #include "ColumnPeer.hxx" |
| #endif |
| #ifndef DBAUI_COLUMNCONTROLWINDOW_HXX |
| #include "ColumnControlWindow.hxx" |
| #endif |
| #ifndef _SV_SVAPP_HXX |
| #include <vcl/svapp.hxx> |
| #endif |
| #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC |
| #include "dbustrings.hrc" |
| #endif |
| #ifndef DBAUI_FIELDDESCRIPTIONS_HXX |
| #include "FieldDescriptions.hxx" |
| #endif |
| |
| //......................................................................... |
| namespace dbaui |
| { |
| //......................................................................... |
| using namespace ::com::sun::star::awt; |
| using namespace ::com::sun::star::uno; |
| using namespace ::com::sun::star::beans; |
| using namespace ::com::sun::star::lang; |
| using namespace ::com::sun::star::sdbc; |
| |
| OColumnPeer::OColumnPeer(Window* _pParent,const Reference<XMultiServiceFactory>& _rxFactory) |
| :m_xORB(_rxFactory) |
| ,m_pActFieldDescr(NULL) |
| { |
| osl_incrementInterlockedCount( &m_refCount ); |
| { |
| OColumnControlWindow* pFieldControl = new OColumnControlWindow(_pParent,m_xORB); |
| pFieldControl->SetComponentInterface(this); |
| pFieldControl->Show(); |
| } |
| osl_decrementInterlockedCount( &m_refCount ); |
| } |
| // ----------------------------------------------------------------------------- |
| void OColumnPeer::setEditWidth(sal_Int32 _nWidth) |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| |
| OColumnControlWindow* pFieldControl = static_cast<OColumnControlWindow*>( GetWindow() ); |
| if ( pFieldControl ) |
| { |
| pFieldControl->setEditWidth(_nWidth); |
| } |
| } |
| // ----------------------------------------------------------------------------- |
| void OColumnPeer::setColumn(const Reference< XPropertySet>& _xColumn) |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| |
| OColumnControlWindow* pFieldControl = static_cast<OColumnControlWindow*>( GetWindow() ); |
| if ( pFieldControl ) |
| { |
| if ( m_pActFieldDescr ) |
| { |
| delete m_pActFieldDescr; |
| m_pActFieldDescr = NULL; |
| } |
| if ( _xColumn.is() ) |
| { |
| sal_Int32 nType = 0; |
| sal_Int32 nScale = 0; |
| sal_Int32 nPrecision = 0; |
| sal_Bool bAutoIncrement = sal_False; |
| ::rtl::OUString sTypeName; |
| |
| try |
| { |
| // get the properties from the column |
| _xColumn->getPropertyValue(PROPERTY_TYPENAME) >>= sTypeName; |
| _xColumn->getPropertyValue(PROPERTY_TYPE) >>= nType; |
| _xColumn->getPropertyValue(PROPERTY_SCALE) >>= nScale; |
| _xColumn->getPropertyValue(PROPERTY_PRECISION) >>= nPrecision; |
| _xColumn->getPropertyValue(PROPERTY_ISAUTOINCREMENT) >>= bAutoIncrement; |
| } |
| catch(Exception) |
| { |
| } |
| |
| m_pActFieldDescr = new OFieldDescription(_xColumn,sal_True); |
| // search for type |
| ::rtl::OUString sCreateParam(RTL_CONSTASCII_USTRINGPARAM("x")); |
| sal_Bool bForce; |
| TOTypeInfoSP pTypeInfo = ::dbaui::getTypeInfoFromType(*pFieldControl->getTypeInfo(),nType,sTypeName,sCreateParam,nPrecision,nScale,bAutoIncrement,bForce); |
| if ( !pTypeInfo.get() ) |
| pTypeInfo = pFieldControl->getDefaultTyp(); |
| |
| m_pActFieldDescr->FillFromTypeInfo(pTypeInfo,sal_True,sal_False); |
| m_xColumn = _xColumn; |
| } |
| pFieldControl->DisplayData(m_pActFieldDescr); |
| } |
| } |
| // ----------------------------------------------------------------------------- |
| void OColumnPeer::setConnection(const Reference< XConnection>& _xCon) |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| OColumnControlWindow* pFieldControl = static_cast<OColumnControlWindow*>( GetWindow() ); |
| if ( pFieldControl ) |
| pFieldControl->setConnection(_xCon); |
| } |
| //------------------------------------------------------------------------------ |
| void OColumnPeer::setProperty( const ::rtl::OUString& _rPropertyName, const Any& Value) throw( RuntimeException ) |
| { |
| ::vos::OGuard aGuard( Application::GetSolarMutex() ); |
| |
| if ( 0 == _rPropertyName.compareToAscii( PROPERTY_COLUMN ) ) |
| { |
| Reference<XPropertySet> xProp(Value,UNO_QUERY); |
| setColumn(xProp); |
| } |
| else if ( 0 == _rPropertyName.compareToAscii( PROPERTY_ACTIVE_CONNECTION ) ) |
| { |
| Reference<XConnection> xCon(Value,UNO_QUERY); |
| setConnection(xCon); |
| } |
| else |
| VCLXWindow::setProperty(_rPropertyName,Value); |
| } |
| // ----------------------------------------------------------------------------- |
| Any OColumnPeer::getProperty( const ::rtl::OUString& _rPropertyName ) throw( RuntimeException ) |
| { |
| Any aProp; |
| OFieldDescControl* pFieldControl = static_cast<OFieldDescControl*>( GetWindow() ); |
| if ( pFieldControl && 0 == _rPropertyName.compareToAscii( PROPERTY_COLUMN ) ) |
| { |
| aProp <<= m_xColumn; |
| } |
| else if ( pFieldControl && 0 == _rPropertyName.compareToAscii( PROPERTY_ACTIVE_CONNECTION ) ) |
| { |
| aProp <<= pFieldControl->getConnection(); |
| } |
| else |
| aProp = VCLXWindow::getProperty(_rPropertyName); |
| return aProp; |
| } |
| //......................................................................... |
| } // namespace dbaui |
| //......................................................................... |