1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #include "errorbroadcaster.hxx" 29 #include "FormComponent.hxx" 30 #include "formcontrolfont.hxx" 31 #include "InterfaceContainer.hxx" 32 33 /** === begin UNO includes === **/ 34 #include <com/sun/star/form/XGridColumnFactory.hpp> 35 #include <com/sun/star/form/XLoadable.hpp> 36 #include <com/sun/star/sdb/XRowSetSupplier.hpp> 37 #include <com/sun/star/sdb/XRowSetChangeBroadcaster.hpp> 38 #include <com/sun/star/view/XSelectionSupplier.hpp> 39 /** === end UNO includes === **/ 40 41 #include <comphelper/proparrhlp.hxx> 42 #include <cppuhelper/implbase7.hxx> 43 #include <tools/link.hxx> 44 45 //......................................................................... 46 namespace frm 47 { 48 //......................................................................... 49 50 class OGridColumn; 51 52 //================================================================== 53 // ColumnDescription 54 //================================================================== 55 56 struct ColumnDescription : public ElementDescription 57 { 58 public: 59 OGridColumn* pColumn; // not owned by this instance! only to prevent duplicate XUnoTunnel usage 60 }; 61 62 //================================================================== 63 // OGridControlModel 64 //================================================================== 65 typedef ::cppu::ImplHelper7 < ::com::sun::star::awt::XControlModel 66 , ::com::sun::star::form::XGridColumnFactory 67 , ::com::sun::star::form::XReset 68 , ::com::sun::star::view::XSelectionSupplier 69 , ::com::sun::star::sdb::XSQLErrorListener 70 , ::com::sun::star::sdb::XRowSetSupplier 71 , ::com::sun::star::sdb::XRowSetChangeBroadcaster 72 > OGridControlModel_BASE; 73 74 class OGridControlModel :public OControlModel 75 ,public OInterfaceContainer 76 ,public OErrorBroadcaster 77 ,public FontControlModel 78 ,public OGridControlModel_BASE 79 { 80 ::cppu::OInterfaceContainerHelper m_aSelectListeners, 81 m_aResetListeners, 82 m_aRowSetChangeListeners; 83 84 // [properties] 85 ::com::sun::star::uno::Any m_aRowHeight; // Zeilenhoehe 86 ::com::sun::star::uno::Any m_aTabStop; 87 ::com::sun::star::uno::Any m_aBackgroundColor; 88 ::com::sun::star::uno::Any m_aCursorColor; // transient 89 ::com::sun::star::uno::Any m_aBorderColor; 90 ::rtl::OUString m_aDefaultControl; 91 ::rtl::OUString m_sHelpText; 92 // [properties] 93 94 ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xSelection; 95 96 // [properties] 97 ::rtl::OUString m_sHelpURL; // URL 98 sal_Int16 m_nBorder; 99 sal_Int16 m_nWritingMode; 100 sal_Int16 m_nContextWritingMode; 101 sal_Bool m_bEnableVisible : 1; 102 sal_Bool m_bEnable : 1; 103 sal_Bool m_bNavigation : 1; 104 sal_Bool m_bRecordMarker : 1; 105 sal_Bool m_bPrintable : 1; 106 sal_Bool m_bAlwaysShowCursor : 1; // transient 107 sal_Bool m_bDisplaySynchron : 1; // transient 108 // [properties] 109 110 protected: 111 void _reset(); 112 113 public: 114 DECLARE_DEFAULT_LEAF_XTOR( OGridControlModel ); 115 116 // UNO Anbindung 117 DECLARE_UNO3_AGG_DEFAULTS(OGridControlModel, OControlModel); 118 virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw (::com::sun::star::uno::RuntimeException); 119 120 // XChild 121 virtual void SAL_CALL setParent(const InterfaceRef& Parent) throw(::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 122 123 // XServiceInfo 124 IMPLEMENTATION_NAME(OGridControlModel); 125 virtual StringSequence SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); 126 127 // XTypeProvider 128 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); 129 130 // OComponentHelper 131 virtual void SAL_CALL disposing(); 132 133 // XEventListener 134 virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& _rSource) throw(::com::sun::star::uno::RuntimeException); 135 136 // XReset 137 virtual void SAL_CALL reset() throw ( ::com::sun::star::uno::RuntimeException); 138 virtual void SAL_CALL addResetListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XResetListener>& _rxListener) throw ( ::com::sun::star::uno::RuntimeException); 139 virtual void SAL_CALL removeResetListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XResetListener>& _rxListener) throw ( ::com::sun::star::uno::RuntimeException); 140 141 // XSelectionSupplier 142 virtual sal_Bool SAL_CALL select(const ::com::sun::star::uno::Any& aElement) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 143 virtual ::com::sun::star::uno::Any SAL_CALL getSelection() throw(::com::sun::star::uno::RuntimeException); 144 virtual void SAL_CALL addSelectionChangeListener(const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener) throw(::com::sun::star::uno::RuntimeException); 145 virtual void SAL_CALL removeSelectionChangeListener(const ::com::sun::star::uno::Reference< ::com::sun::star::view::XSelectionChangeListener >& xListener) throw(::com::sun::star::uno::RuntimeException); 146 147 // XGridColumnFactory 148 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); 149 virtual StringSequence SAL_CALL getColumnTypes() throw ( ::com::sun::star::uno::RuntimeException); 150 151 // XPersistObject 152 virtual ::rtl::OUString SAL_CALL getServiceName() throw ( ::com::sun::star::uno::RuntimeException); 153 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); 154 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); 155 156 // XPropertySet 157 virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const; 158 virtual sal_Bool SAL_CALL convertFastPropertyValue(::com::sun::star::uno::Any& rConvertedValue, ::com::sun::star::uno::Any& rOldValue, 159 sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) 160 throw(::com::sun::star::lang::IllegalArgumentException); 161 virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue) throw ( ::com::sun::star::uno::Exception); 162 163 // XPropertyState 164 virtual ::com::sun::star::uno::Any getPropertyDefaultByHandle( sal_Int32 nHandle ) const; 165 166 // XSQLErrorListener 167 virtual void SAL_CALL errorOccured( const ::com::sun::star::sdb::SQLErrorEvent& _rEvent ) throw (::com::sun::star::uno::RuntimeException); 168 169 // XRowSetSupplier 170 virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet > SAL_CALL getRowSet( ) throw (::com::sun::star::uno::RuntimeException); 171 virtual void SAL_CALL setRowSet( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xDataSource ) throw (::com::sun::star::uno::RuntimeException); 172 173 // XRowSetChangeBroadcaster 174 virtual void SAL_CALL addRowSetChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetChangeListener >& i_Listener ) throw (::com::sun::star::uno::RuntimeException); 175 virtual void SAL_CALL removeRowSetChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetChangeListener >& i_Listener ) throw (::com::sun::star::uno::RuntimeException); 176 177 // OControlModel's property handling 178 virtual void describeFixedProperties( 179 ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rProps 180 ) const; 181 182 // prevent method hiding 183 using OControlModel::disposing; 184 using OControlModel::getFastPropertyValue; 185 186 protected: 187 DECLARE_XCLONEABLE(); 188 189 protected: 190 virtual void approveNewElement( 191 const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject, 192 ElementDescription* _pElement 193 ); 194 195 ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> createColumn(sal_Int32 nTypeId) const; 196 197 OGridColumn* getColumnImplementation(const InterfaceRef& _rxIFace) const; 198 199 virtual ElementDescription* createElementMetaData( ); 200 201 protected: 202 virtual void implRemoved(const InterfaceRef& _rxObject); 203 virtual void implInserted( const ElementDescription* _pElement ); 204 virtual void impl_replacedElement( 205 const ::com::sun::star::container::ContainerEvent& _rEvent, 206 ::osl::ClearableMutexGuard& _rInstanceLock 207 ); 208 209 void gotColumn(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxColumn); 210 void lostColumn(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxColumn); 211 212 void cloneColumns( const OGridControlModel* _pOriginalContainer ); 213 }; 214 215 //......................................................................... 216 } // namespace frm 217 //......................................................................... 218 219 220