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 #ifndef SW_UNOTEXTRANGE_HXX 25 #define SW_UNOTEXTRANGE_HXX 26 27 #include <com/sun/star/lang/XUnoTunnel.hpp> 28 #include <com/sun/star/lang/XServiceInfo.hpp> 29 #include <com/sun/star/beans/XPropertySet.hpp> 30 #include <com/sun/star/beans/XPropertyState.hpp> 31 #include <com/sun/star/container/XIndexAccess.hpp> 32 #include <com/sun/star/container/XEnumerationAccess.hpp> 33 #include <com/sun/star/container/XContentEnumerationAccess.hpp> 34 #include <com/sun/star/text/XTextRange.hpp> 35 #include <com/sun/star/text/XRedline.hpp> 36 37 #include <cppuhelper/implbase3.hxx> 38 #include <cppuhelper/implbase8.hxx> 39 40 #include <pam.hxx> 41 #include <unobaseclass.hxx> 42 43 44 class SwDoc; 45 struct SwPosition; 46 class SwPaM; 47 class SwUnoCrsr; 48 class SwFrmFmt; 49 50 /* -----------------29.04.98 07:35------------------- 51 * 52 * --------------------------------------------------*/ 53 class SwUnoInternalPaM 54 : public SwPaM 55 { 56 57 private: 58 SwUnoInternalPaM(const SwUnoInternalPaM&); 59 60 public: 61 SwUnoInternalPaM(SwDoc& rDoc); 62 virtual ~SwUnoInternalPaM(); 63 64 SwUnoInternalPaM& operator=(const SwPaM& rPaM); 65 }; 66 67 68 namespace sw { 69 70 void DeepCopyPaM(SwPaM const & rSource, SwPaM & rTarget); 71 72 bool XTextRangeToSwPaM(SwUnoInternalPaM& rToFill, 73 const ::com::sun::star::uno::Reference< 74 ::com::sun::star::text::XTextRange > & xTextRange); 75 76 ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > 77 CreateParentXText(SwDoc & rDoc, const SwPosition& rPos); 78 79 bool GetDefaultTextContentValue(::com::sun::star::uno::Any& rAny, 80 const ::rtl::OUString& rPropertyName, sal_uInt16 nWID = 0); 81 82 } // namespace sw 83 84 85 typedef ::cppu::WeakImplHelper8 86 < ::com::sun::star::lang::XUnoTunnel 87 , ::com::sun::star::lang::XServiceInfo 88 , ::com::sun::star::beans::XPropertySet 89 , ::com::sun::star::beans::XPropertyState 90 , ::com::sun::star::container::XEnumerationAccess 91 , ::com::sun::star::container::XContentEnumerationAccess 92 , ::com::sun::star::text::XTextRange 93 , ::com::sun::star::text::XRedline 94 > SwXTextRange_Base; 95 96 class SW_DLLPUBLIC SwXTextRange 97 : public SwXTextRange_Base 98 { 99 100 private: 101 102 friend class SwXText; 103 104 class Impl; 105 ::sw::UnoImplPtr<Impl> m_pImpl; 106 107 enum RangePosition 108 { 109 RANGE_IN_TEXT, // "ordinary" ::com::sun::star::text::TextRange 110 RANGE_IN_CELL, // position created with a cell that has no uno object 111 RANGE_IS_TABLE, // anchor of a table 112 }; 113 114 void SetPositions(SwPaM const& rPam); 115 //TODO: new exception type for protected content 116 void DeleteAndInsert( 117 const ::rtl::OUString& rText, const bool bForceExpandHints) 118 throw (::com::sun::star::uno::RuntimeException); 119 void Invalidate(); 120 121 virtual ~SwXTextRange(); 122 123 public: 124 125 SwXTextRange(SwPaM& rPam, 126 const ::com::sun::star::uno::Reference< 127 ::com::sun::star::text::XText > & xParent, 128 const enum RangePosition eRange = RANGE_IN_TEXT); 129 // only for RANGE_IS_TABLE 130 SwXTextRange(SwFrmFmt& rTblFmt); 131 132 const SwDoc* GetDoc() const; 133 SwDoc* GetDoc(); 134 bool GetPositions(SwPaM & rToFill) const; 135 136 static ::com::sun::star::uno::Reference< 137 ::com::sun::star::text::XTextRange > CreateXTextRange( 138 SwDoc & rDoc, 139 const SwPosition& rPos, const SwPosition *const pMark); 140 141 static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId(); 142 143 // XUnoTunnel 144 virtual sal_Int64 SAL_CALL getSomething( 145 const ::com::sun::star::uno::Sequence< sal_Int8 >& rIdentifier) 146 throw (::com::sun::star::uno::RuntimeException); 147 148 // XServiceInfo 149 virtual ::rtl::OUString SAL_CALL getImplementationName() 150 throw (::com::sun::star::uno::RuntimeException); 151 virtual sal_Bool SAL_CALL supportsService( 152 const ::rtl::OUString& rServiceName) 153 throw (::com::sun::star::uno::RuntimeException); 154 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL 155 getSupportedServiceNames() 156 throw (::com::sun::star::uno::RuntimeException); 157 158 // XPropertySet 159 virtual ::com::sun::star::uno::Reference< 160 ::com::sun::star::beans::XPropertySetInfo > SAL_CALL 161 getPropertySetInfo() 162 throw (::com::sun::star::uno::RuntimeException); 163 virtual void SAL_CALL setPropertyValue( 164 const ::rtl::OUString& rPropertyName, 165 const ::com::sun::star::uno::Any& rValue) 166 throw (::com::sun::star::beans::UnknownPropertyException, 167 ::com::sun::star::beans::PropertyVetoException, 168 ::com::sun::star::lang::IllegalArgumentException, 169 ::com::sun::star::lang::WrappedTargetException, 170 ::com::sun::star::uno::RuntimeException); 171 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( 172 const ::rtl::OUString& rPropertyName) 173 throw (::com::sun::star::beans::UnknownPropertyException, 174 ::com::sun::star::lang::WrappedTargetException, 175 ::com::sun::star::uno::RuntimeException); 176 virtual void SAL_CALL addPropertyChangeListener( 177 const ::rtl::OUString& rPropertyName, 178 const ::com::sun::star::uno::Reference< 179 ::com::sun::star::beans::XPropertyChangeListener >& xListener) 180 throw (::com::sun::star::beans::UnknownPropertyException, 181 ::com::sun::star::lang::WrappedTargetException, 182 ::com::sun::star::uno::RuntimeException); 183 virtual void SAL_CALL removePropertyChangeListener( 184 const ::rtl::OUString& rPropertyName, 185 const ::com::sun::star::uno::Reference< 186 ::com::sun::star::beans::XPropertyChangeListener >& xListener) 187 throw (::com::sun::star::beans::UnknownPropertyException, 188 ::com::sun::star::lang::WrappedTargetException, 189 ::com::sun::star::uno::RuntimeException); 190 virtual void SAL_CALL addVetoableChangeListener( 191 const ::rtl::OUString& rPropertyName, 192 const ::com::sun::star::uno::Reference< 193 ::com::sun::star::beans::XVetoableChangeListener >& xListener) 194 throw (::com::sun::star::beans::UnknownPropertyException, 195 ::com::sun::star::lang::WrappedTargetException, 196 ::com::sun::star::uno::RuntimeException); 197 virtual void SAL_CALL removeVetoableChangeListener( 198 const ::rtl::OUString& rPropertyName, 199 const ::com::sun::star::uno::Reference< 200 ::com::sun::star::beans::XVetoableChangeListener >& xListener) 201 throw (::com::sun::star::beans::UnknownPropertyException, 202 ::com::sun::star::lang::WrappedTargetException, 203 ::com::sun::star::uno::RuntimeException); 204 205 // XPropertyState 206 virtual ::com::sun::star::beans::PropertyState SAL_CALL 207 getPropertyState(const ::rtl::OUString& rPropertyName) 208 throw (::com::sun::star::beans::UnknownPropertyException, 209 ::com::sun::star::uno::RuntimeException); 210 virtual ::com::sun::star::uno::Sequence< 211 ::com::sun::star::beans::PropertyState > SAL_CALL 212 getPropertyStates( 213 const ::com::sun::star::uno::Sequence< 214 ::rtl::OUString >& rPropertyNames) 215 throw (::com::sun::star::beans::UnknownPropertyException, 216 ::com::sun::star::uno::RuntimeException); 217 virtual void SAL_CALL setPropertyToDefault( 218 const ::rtl::OUString& rPropertyName) 219 throw (::com::sun::star::beans::UnknownPropertyException, 220 ::com::sun::star::uno::RuntimeException); 221 virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( 222 const ::rtl::OUString& rPropertyName) 223 throw (::com::sun::star::beans::UnknownPropertyException, 224 ::com::sun::star::lang::WrappedTargetException, 225 ::com::sun::star::uno::RuntimeException); 226 227 // XElementAccess 228 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 229 throw (::com::sun::star::uno::RuntimeException); 230 virtual sal_Bool SAL_CALL hasElements() 231 throw (::com::sun::star::uno::RuntimeException); 232 233 // XEnumerationAccess 234 virtual ::com::sun::star::uno::Reference< 235 ::com::sun::star::container::XEnumeration > SAL_CALL 236 createEnumeration() 237 throw (::com::sun::star::uno::RuntimeException); 238 239 // XContentEnumerationAccess 240 virtual ::com::sun::star::uno::Reference< 241 ::com::sun::star::container::XEnumeration > SAL_CALL 242 createContentEnumeration(const ::rtl::OUString& rServiceName) 243 throw (::com::sun::star::uno::RuntimeException); 244 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL 245 getAvailableServiceNames() 246 throw (::com::sun::star::uno::RuntimeException); 247 248 // XTextRange 249 virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > 250 SAL_CALL getText() 251 throw (::com::sun::star::uno::RuntimeException); 252 virtual ::com::sun::star::uno::Reference< 253 ::com::sun::star::text::XTextRange > SAL_CALL getStart() 254 throw (::com::sun::star::uno::RuntimeException); 255 virtual ::com::sun::star::uno::Reference< 256 ::com::sun::star::text::XTextRange > SAL_CALL getEnd() 257 throw (::com::sun::star::uno::RuntimeException); 258 virtual ::rtl::OUString SAL_CALL getString() 259 throw (::com::sun::star::uno::RuntimeException); 260 virtual void SAL_CALL setString(const ::rtl::OUString& rString) 261 throw (::com::sun::star::uno::RuntimeException); 262 263 // XRedline 264 virtual void SAL_CALL makeRedline( 265 const ::rtl::OUString& rRedlineType, 266 const ::com::sun::star::uno::Sequence< 267 ::com::sun::star::beans::PropertyValue >& RedlineProperties) 268 throw (::com::sun::star::lang::IllegalArgumentException, 269 ::com::sun::star::uno::RuntimeException); 270 271 }; 272 273 /* -----------------15.05.98 08:29------------------- 274 * 275 * --------------------------------------------------*/ 276 277 typedef ::cppu::WeakImplHelper3 278 < ::com::sun::star::lang::XUnoTunnel 279 , ::com::sun::star::lang::XServiceInfo 280 , ::com::sun::star::container::XIndexAccess 281 > SwXTextRanges_Base; 282 283 class SwXTextRanges 284 : public SwXTextRanges_Base 285 { 286 287 private: 288 289 class Impl; 290 ::sw::UnoImplPtr<Impl> m_pImpl; 291 292 virtual ~SwXTextRanges(); 293 294 public: 295 296 SwXTextRanges(SwPaM *const pCrsr); 297 298 const SwUnoCrsr* GetCursor() const; 299 300 static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId(); 301 302 // XUnoTunnel 303 virtual sal_Int64 SAL_CALL getSomething( 304 const ::com::sun::star::uno::Sequence< sal_Int8 >& rIdentifier) 305 throw (::com::sun::star::uno::RuntimeException); 306 307 // XServiceInfo 308 virtual ::rtl::OUString SAL_CALL getImplementationName() 309 throw (::com::sun::star::uno::RuntimeException); 310 virtual sal_Bool SAL_CALL supportsService( 311 const ::rtl::OUString& rServiceName) 312 throw (::com::sun::star::uno::RuntimeException); 313 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL 314 getSupportedServiceNames() 315 throw (::com::sun::star::uno::RuntimeException); 316 317 // XElementAccess 318 virtual ::com::sun::star::uno::Type SAL_CALL getElementType() 319 throw (::com::sun::star::uno::RuntimeException); 320 virtual sal_Bool SAL_CALL hasElements() 321 throw (::com::sun::star::uno::RuntimeException); 322 323 // XIndexAccess 324 virtual sal_Int32 SAL_CALL getCount() 325 throw (::com::sun::star::uno::RuntimeException); 326 virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) 327 throw (::com::sun::star::lang::IndexOutOfBoundsException, 328 ::com::sun::star::lang::WrappedTargetException, 329 ::com::sun::star::uno::RuntimeException); 330 331 }; 332 333 #endif // SW_UNOTEXTRANGE_HXX 334 335