1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #include "errorbroadcaster.hxx" 25*b1cdbd2cSJim Jagielski #include "FormComponent.hxx" 26*b1cdbd2cSJim Jagielski #include "formcontrolfont.hxx" 27*b1cdbd2cSJim Jagielski #include "InterfaceContainer.hxx" 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski /** === begin UNO includes === **/ 30*b1cdbd2cSJim Jagielski #include <com/sun/star/form/XGridColumnFactory.hpp> 31*b1cdbd2cSJim Jagielski #include <com/sun/star/form/XLoadable.hpp> 32*b1cdbd2cSJim Jagielski #include <com/sun/star/sdb/XRowSetSupplier.hpp> 33*b1cdbd2cSJim Jagielski #include <com/sun/star/sdb/XRowSetChangeBroadcaster.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/view/XSelectionSupplier.hpp> 35*b1cdbd2cSJim Jagielski /** === end UNO includes === **/ 36*b1cdbd2cSJim Jagielski 37*b1cdbd2cSJim Jagielski #include <comphelper/proparrhlp.hxx> 38*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase7.hxx> 39*b1cdbd2cSJim Jagielski #include <tools/link.hxx> 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski //......................................................................... 42*b1cdbd2cSJim Jagielski namespace frm 43*b1cdbd2cSJim Jagielski { 44*b1cdbd2cSJim Jagielski //......................................................................... 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski class OGridColumn; 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski //================================================================== 49*b1cdbd2cSJim Jagielski // ColumnDescription 50*b1cdbd2cSJim Jagielski //================================================================== 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski struct ColumnDescription : public ElementDescription 53*b1cdbd2cSJim Jagielski { 54*b1cdbd2cSJim Jagielski public: 55*b1cdbd2cSJim Jagielski OGridColumn* pColumn; // not owned by this instance! only to prevent duplicate XUnoTunnel usage 56*b1cdbd2cSJim Jagielski }; 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski //================================================================== 59*b1cdbd2cSJim Jagielski // OGridControlModel 60*b1cdbd2cSJim Jagielski //================================================================== 61*b1cdbd2cSJim Jagielski typedef ::cppu::ImplHelper7 < ::com::sun::star::awt::XControlModel 62*b1cdbd2cSJim Jagielski , ::com::sun::star::form::XGridColumnFactory 63*b1cdbd2cSJim Jagielski , ::com::sun::star::form::XReset 64*b1cdbd2cSJim Jagielski , ::com::sun::star::view::XSelectionSupplier 65*b1cdbd2cSJim Jagielski , ::com::sun::star::sdb::XSQLErrorListener 66*b1cdbd2cSJim Jagielski , ::com::sun::star::sdb::XRowSetSupplier 67*b1cdbd2cSJim Jagielski , ::com::sun::star::sdb::XRowSetChangeBroadcaster 68*b1cdbd2cSJim Jagielski > OGridControlModel_BASE; 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski class OGridControlModel :public OControlModel 71*b1cdbd2cSJim Jagielski ,public OInterfaceContainer 72*b1cdbd2cSJim Jagielski ,public OErrorBroadcaster 73*b1cdbd2cSJim Jagielski ,public FontControlModel 74*b1cdbd2cSJim Jagielski ,public OGridControlModel_BASE 75*b1cdbd2cSJim Jagielski { 76*b1cdbd2cSJim Jagielski ::cppu::OInterfaceContainerHelper m_aSelectListeners, 77*b1cdbd2cSJim Jagielski m_aResetListeners, 78*b1cdbd2cSJim Jagielski m_aRowSetChangeListeners; 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski // [properties] 81*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Any m_aRowHeight; // Zeilenhoehe 82*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Any m_aTabStop; 83*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Any m_aBackgroundColor; 84*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Any m_aCursorColor; // transient 85*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Any m_aBorderColor; 86*b1cdbd2cSJim Jagielski ::rtl::OUString m_aDefaultControl; 87*b1cdbd2cSJim Jagielski ::rtl::OUString m_sHelpText; 88*b1cdbd2cSJim Jagielski // [properties] 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xSelection; 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski // [properties] 93*b1cdbd2cSJim Jagielski ::rtl::OUString m_sHelpURL; // URL 94*b1cdbd2cSJim Jagielski sal_Int16 m_nBorder; 95*b1cdbd2cSJim Jagielski sal_Int16 m_nWritingMode; 96*b1cdbd2cSJim Jagielski sal_Int16 m_nContextWritingMode; 97*b1cdbd2cSJim Jagielski sal_Bool m_bEnableVisible : 1; 98*b1cdbd2cSJim Jagielski sal_Bool m_bEnable : 1; 99*b1cdbd2cSJim Jagielski sal_Bool m_bNavigation : 1; 100*b1cdbd2cSJim Jagielski sal_Bool m_bRecordMarker : 1; 101*b1cdbd2cSJim Jagielski sal_Bool m_bPrintable : 1; 102*b1cdbd2cSJim Jagielski sal_Bool m_bAlwaysShowCursor : 1; // transient 103*b1cdbd2cSJim Jagielski sal_Bool m_bDisplaySynchron : 1; // transient 104*b1cdbd2cSJim Jagielski // [properties] 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski protected: 107*b1cdbd2cSJim Jagielski void _reset(); 108*b1cdbd2cSJim Jagielski 109*b1cdbd2cSJim Jagielski public: 110*b1cdbd2cSJim Jagielski DECLARE_DEFAULT_LEAF_XTOR( OGridControlModel ); 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski // UNO Anbindung 113*b1cdbd2cSJim Jagielski DECLARE_UNO3_AGG_DEFAULTS(OGridControlModel, OControlModel); 114*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw (::com::sun::star::uno::RuntimeException); 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski // XChild 117*b1cdbd2cSJim Jagielski virtual void SAL_CALL setParent(const InterfaceRef& Parent) throw(::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski // XServiceInfo 120*b1cdbd2cSJim Jagielski IMPLEMENTATION_NAME(OGridControlModel); 121*b1cdbd2cSJim Jagielski virtual StringSequence SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski // XTypeProvider 124*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski // OComponentHelper 127*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing(); 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski // XEventListener 130*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& _rSource) throw(::com::sun::star::uno::RuntimeException); 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski // XReset 133*b1cdbd2cSJim Jagielski virtual void SAL_CALL reset() throw ( ::com::sun::star::uno::RuntimeException); 134*b1cdbd2cSJim Jagielski virtual void SAL_CALL addResetListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XResetListener>& _rxListener) throw ( ::com::sun::star::uno::RuntimeException); 135*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeResetListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XResetListener>& _rxListener) throw ( ::com::sun::star::uno::RuntimeException); 136*b1cdbd2cSJim Jagielski 137*b1cdbd2cSJim Jagielski // XSelectionSupplier 138*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL select(const ::com::sun::star::uno::Any& aElement) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 139*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Any SAL_CALL getSelection() throw(::com::sun::star::uno::RuntimeException); 140*b1cdbd2cSJim Jagielski virtual void SAL_CALL addSelectionChangeListener(const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener) throw(::com::sun::star::uno::RuntimeException); 141*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeSelectionChangeListener(const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener) throw(::com::sun::star::uno::RuntimeException); 142*b1cdbd2cSJim Jagielski 143*b1cdbd2cSJim Jagielski // XGridColumnFactory 144*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> SAL_CALL createColumn(const ::rtl::OUString& ColumnType) throw ( :: com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 145*b1cdbd2cSJim Jagielski virtual StringSequence SAL_CALL getColumnTypes() throw ( ::com::sun::star::uno::RuntimeException); 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski // XPersistObject 148*b1cdbd2cSJim Jagielski virtual ::rtl::OUString SAL_CALL getServiceName() throw ( ::com::sun::star::uno::RuntimeException); 149*b1cdbd2cSJim Jagielski virtual void SAL_CALL write(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream>& _rxOutStream) throw ( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); 150*b1cdbd2cSJim Jagielski virtual void SAL_CALL read(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectInputStream>& _rxInStream) throw ( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException); 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski // XPropertySet 153*b1cdbd2cSJim Jagielski virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const; 154*b1cdbd2cSJim Jagielski virtual sal_Bool SAL_CALL convertFastPropertyValue(::com::sun::star::uno::Any& rConvertedValue, ::com::sun::star::uno::Any& rOldValue, 155*b1cdbd2cSJim Jagielski sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) 156*b1cdbd2cSJim Jagielski throw(::com::sun::star::lang::IllegalArgumentException); 157*b1cdbd2cSJim Jagielski virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue) throw ( ::com::sun::star::uno::Exception); 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski // XPropertyState 160*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Any getPropertyDefaultByHandle( sal_Int32 nHandle ) const; 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski // XSQLErrorListener 163*b1cdbd2cSJim Jagielski virtual void SAL_CALL errorOccured( const ::com::sun::star::sdb::SQLErrorEvent& _rEvent ) throw (::com::sun::star::uno::RuntimeException); 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski // XRowSetSupplier 166*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet > SAL_CALL getRowSet( ) throw (::com::sun::star::uno::RuntimeException); 167*b1cdbd2cSJim Jagielski virtual void SAL_CALL setRowSet( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xDataSource ) throw (::com::sun::star::uno::RuntimeException); 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski // XRowSetChangeBroadcaster 170*b1cdbd2cSJim Jagielski virtual void SAL_CALL addRowSetChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetChangeListener >& i_Listener ) throw (::com::sun::star::uno::RuntimeException); 171*b1cdbd2cSJim Jagielski virtual void SAL_CALL removeRowSetChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetChangeListener >& i_Listener ) throw (::com::sun::star::uno::RuntimeException); 172*b1cdbd2cSJim Jagielski 173*b1cdbd2cSJim Jagielski // OControlModel's property handling 174*b1cdbd2cSJim Jagielski virtual void describeFixedProperties( 175*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rProps 176*b1cdbd2cSJim Jagielski ) const; 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski // prevent method hiding 179*b1cdbd2cSJim Jagielski using OControlModel::disposing; 180*b1cdbd2cSJim Jagielski using OControlModel::getFastPropertyValue; 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski protected: 183*b1cdbd2cSJim Jagielski DECLARE_XCLONEABLE(); 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski protected: 186*b1cdbd2cSJim Jagielski virtual void approveNewElement( 187*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject, 188*b1cdbd2cSJim Jagielski ElementDescription* _pElement 189*b1cdbd2cSJim Jagielski ); 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> createColumn(sal_Int32 nTypeId) const; 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski OGridColumn* getColumnImplementation(const InterfaceRef& _rxIFace) const; 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim Jagielski virtual ElementDescription* createElementMetaData( ); 196*b1cdbd2cSJim Jagielski 197*b1cdbd2cSJim Jagielski protected: 198*b1cdbd2cSJim Jagielski virtual void implRemoved(const InterfaceRef& _rxObject); 199*b1cdbd2cSJim Jagielski virtual void implInserted( const ElementDescription* _pElement ); 200*b1cdbd2cSJim Jagielski virtual void impl_replacedElement( 201*b1cdbd2cSJim Jagielski const ::com::sun::star::container::ContainerEvent& _rEvent, 202*b1cdbd2cSJim Jagielski ::osl::ClearableMutexGuard& _rInstanceLock 203*b1cdbd2cSJim Jagielski ); 204*b1cdbd2cSJim Jagielski 205*b1cdbd2cSJim Jagielski void gotColumn(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxColumn); 206*b1cdbd2cSJim Jagielski void lostColumn(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxColumn); 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski void cloneColumns( const OGridControlModel* _pOriginalContainer ); 209*b1cdbd2cSJim Jagielski }; 210*b1cdbd2cSJim Jagielski 211*b1cdbd2cSJim Jagielski //......................................................................... 212*b1cdbd2cSJim Jagielski } // namespace frm 213*b1cdbd2cSJim Jagielski //......................................................................... 214*b1cdbd2cSJim Jagielski 215*b1cdbd2cSJim Jagielski 216