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 _SC_ACCESSIBLETEXT_HXX 25 #define _SC_ACCESSIBLETEXT_HXX 26 27 #include "textuno.hxx" 28 #include "global.hxx" 29 #include "viewdata.hxx" 30 #include <editeng/svxenum.hxx> 31 32 #include <memory> 33 34 class ScDocShell; 35 class ScViewForwarder; 36 class ScEditObjectViewForwarder; 37 class ScPreviewViewForwarder; 38 class ScEditViewForwarder; 39 class ScPreviewShell; 40 class EditTextObject; 41 class ScCsvViewForwarder; 42 class ScAccessibleCell; 43 44 45 // ============================================================================ 46 47 class ScAccessibleTextData : public SfxListener 48 { 49 public: 50 ScAccessibleTextData() {} 51 virtual ~ScAccessibleTextData() {} 52 53 virtual ScAccessibleTextData* Clone() const = 0; 54 55 virtual void Notify( SfxBroadcaster& /* rBC */, const SfxHint& /* rHint */ ) {} 56 57 virtual SvxTextForwarder* GetTextForwarder() = 0; 58 virtual SvxViewForwarder* GetViewForwarder() = 0; 59 virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool bCreate ) = 0; 60 virtual SfxBroadcaster& GetBroadcaster() const { return maBroadcaster; } 61 62 virtual void UpdateData() = 0; 63 virtual void SetDoUpdate(sal_Bool bValue) = 0; 64 virtual sal_Bool IsDirty() const = 0; 65 66 private: 67 mutable SfxBroadcaster maBroadcaster; 68 69 // prevent the using of this method of the base class 70 ScSharedCellEditSource* GetOriginalSource() { return NULL; } 71 }; 72 73 74 // ============================================================================ 75 76 class ScAccessibleCellBaseTextData : public ScAccessibleTextData, 77 public ScCellTextData 78 { 79 public: 80 ScAccessibleCellBaseTextData(ScDocShell* pDocShellP, 81 const ScAddress& rP) 82 : ScCellTextData(pDocShellP, rP) {} 83 virtual ~ScAccessibleCellBaseTextData() {} 84 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) { ScCellTextData::Notify(rBC, rHint); } 85 86 virtual void UpdateData() { ScCellTextData::UpdateData(); } 87 virtual void SetDoUpdate(sal_Bool bValue) { ScCellTextData::SetDoUpdate(bValue); } 88 virtual sal_Bool IsDirty() const { return ScCellTextData::IsDirty(); } 89 }; 90 91 92 // ============================================================================ 93 94 // ScAccessibleCellTextData: shared data between sub objects of a accessible cell text object 95 96 class ScAccessibleCellTextData : public ScAccessibleCellBaseTextData 97 { 98 public: 99 ScAccessibleCellTextData(ScTabViewShell* pViewShell, 100 const ScAddress& rP, ScSplitPos eSplitPos, ScAccessibleCell* pAccCell); 101 virtual ~ScAccessibleCellTextData(); 102 103 virtual ScAccessibleTextData* Clone() const; 104 105 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 106 107 virtual SvxTextForwarder* GetTextForwarder(); 108 virtual SvxViewForwarder* GetViewForwarder(); 109 virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool bCreate ); 110 111 DECL_LINK( NotifyHdl, EENotify* ); 112 protected: 113 virtual void GetCellText(const ScAddress& rCellPos, String& rText); 114 private: 115 ScViewForwarder* mpViewForwarder; 116 ScEditViewForwarder* mpEditViewForwarder; 117 ScTabViewShell* mpViewShell; 118 ScSplitPos meSplitPos; 119 sal_Bool mbViewEditEngine; 120 ScAccessibleCell* mpAccessibleCell; 121 122 // prevent the using of this method of the base class 123 ScSharedCellEditSource* GetOriginalSource() { return NULL; } 124 125 using ScAccessibleCellBaseTextData::GetDocShell; 126 ScDocShell* GetDocShell(ScTabViewShell* pViewShell); 127 }; 128 129 130 // ============================================================================ 131 132 class ScAccessibleEditObjectTextData : public ScAccessibleTextData 133 { 134 public: 135 ScAccessibleEditObjectTextData(EditView* pEditView, Window* pWin); 136 virtual ~ScAccessibleEditObjectTextData(); 137 138 virtual ScAccessibleTextData* Clone() const; 139 140 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 141 142 virtual SvxTextForwarder* GetTextForwarder(); 143 virtual SvxViewForwarder* GetViewForwarder(); 144 virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool bCreate ); 145 146 virtual void UpdateData() { } 147 virtual void SetDoUpdate(sal_Bool /* bValue */) { } 148 virtual sal_Bool IsDirty() const { return sal_False; } 149 150 DECL_LINK( NotifyHdl, EENotify* ); 151 protected: 152 ScEditObjectViewForwarder* mpViewForwarder; 153 ScEditViewForwarder* mpEditViewForwarder; 154 EditView* mpEditView; 155 EditEngine* mpEditEngine; 156 SvxEditEngineForwarder* mpForwarder; 157 Window* mpWindow; 158 }; 159 160 161 // ============================================================================ 162 163 class ScAccessibleEditLineTextData : public ScAccessibleEditObjectTextData 164 { 165 public: 166 ScAccessibleEditLineTextData(EditView* pEditView, Window* pWin); 167 virtual ~ScAccessibleEditLineTextData(); 168 169 virtual ScAccessibleTextData* Clone() const; 170 171 virtual SvxTextForwarder* GetTextForwarder(); 172 virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool bCreate ); 173 174 void Dispose(); 175 void TextChanged(); 176 void StartEdit(); 177 void EndEdit(); 178 private: 179 void ResetEditMode(); 180 181 sal_Bool mbEditEngineCreated; 182 }; 183 184 185 // ============================================================================ 186 187 class ScAccessiblePreviewCellTextData : public ScAccessibleCellBaseTextData 188 { 189 public: 190 ScAccessiblePreviewCellTextData(ScPreviewShell* pViewShell, 191 const ScAddress& rP); 192 virtual ~ScAccessiblePreviewCellTextData(); 193 194 virtual ScAccessibleTextData* Clone() const; 195 196 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 197 198 virtual SvxTextForwarder* GetTextForwarder(); 199 virtual SvxViewForwarder* GetViewForwarder(); 200 virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool /* bCreate */ ) { return NULL; } 201 202 //UNUSED2008-05 DECL_LINK( NotifyHdl, EENotify* ); 203 private: 204 ScPreviewViewForwarder* mpViewForwarder; 205 ScPreviewShell* mpViewShell; 206 207 // prevent the using of this method of the base class 208 ScSharedCellEditSource* GetOriginalSource() { return NULL; } 209 210 using ScAccessibleCellBaseTextData::GetDocShell; 211 ScDocShell* GetDocShell(ScPreviewShell* pViewShell); 212 }; 213 214 215 // ============================================================================ 216 217 class ScAccessiblePreviewHeaderCellTextData : public ScAccessibleCellBaseTextData 218 { 219 public: 220 ScAccessiblePreviewHeaderCellTextData(ScPreviewShell* pViewShell, 221 const String& rText, const ScAddress& rP, sal_Bool bColHeader, sal_Bool bRowHeader); 222 virtual ~ScAccessiblePreviewHeaderCellTextData(); 223 224 virtual ScAccessibleTextData* Clone() const; 225 226 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 227 228 virtual SvxTextForwarder* GetTextForwarder(); 229 virtual SvxViewForwarder* GetViewForwarder(); 230 virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool /* bCreate */ ) { return NULL; } 231 232 //UNUSED2008-05 DECL_LINK( NotifyHdl, EENotify* ); 233 private: 234 ScPreviewViewForwarder* mpViewForwarder; 235 ScPreviewShell* mpViewShell; 236 String maText; 237 sal_Bool mbColHeader; 238 sal_Bool mbRowHeader; 239 240 // prevent the using of this method of the base class 241 ScSharedCellEditSource* GetOriginalSource() { return NULL; } 242 243 using ScAccessibleCellBaseTextData::GetDocShell; 244 ScDocShell* GetDocShell(ScPreviewShell* pViewShell); 245 }; 246 247 248 // ============================================================================ 249 250 class ScAccessibleHeaderTextData : public ScAccessibleTextData 251 { 252 public: 253 ScAccessibleHeaderTextData(ScPreviewShell* pViewShell, 254 const EditTextObject* pEditObj, sal_Bool bHeader, SvxAdjust eAdjust); 255 virtual ~ScAccessibleHeaderTextData(); 256 257 virtual ScAccessibleTextData* Clone() const; 258 259 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 260 261 virtual SvxTextForwarder* GetTextForwarder(); 262 virtual SvxViewForwarder* GetViewForwarder(); 263 virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool /* bCreate */ ) { return NULL; } 264 265 virtual void UpdateData() { } 266 virtual void SetDoUpdate(sal_Bool /* bValue */) { } 267 virtual sal_Bool IsDirty() const { return sal_False; } 268 private: 269 ScPreviewViewForwarder* mpViewForwarder; 270 ScPreviewShell* mpViewShell; 271 ScEditEngineDefaulter* mpEditEngine; 272 SvxEditEngineForwarder* mpForwarder; 273 ScDocShell* mpDocSh; 274 const EditTextObject* mpEditObj; 275 sal_Bool mbHeader; 276 sal_Bool mbDataValid; 277 SvxAdjust meAdjust; 278 }; 279 280 281 // ============================================================================ 282 283 class ScAccessibleNoteTextData : public ScAccessibleTextData 284 { 285 public: 286 ScAccessibleNoteTextData(ScPreviewShell* pViewShell, 287 const String& sText, const ScAddress& aCellPos, sal_Bool bMarkNote); 288 virtual ~ScAccessibleNoteTextData(); 289 290 virtual ScAccessibleTextData* Clone() const; 291 292 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 293 294 virtual SvxTextForwarder* GetTextForwarder(); 295 virtual SvxViewForwarder* GetViewForwarder(); 296 virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool /* bCreate */ ) { return NULL; } 297 298 virtual void UpdateData() { } 299 virtual void SetDoUpdate(sal_Bool /* bValue */) { } 300 virtual sal_Bool IsDirty() const { return sal_False; } 301 private: 302 ScPreviewViewForwarder* mpViewForwarder; 303 ScPreviewShell* mpViewShell; 304 ScEditEngineDefaulter* mpEditEngine; 305 SvxEditEngineForwarder* mpForwarder; 306 ScDocShell* mpDocSh; 307 String msText; 308 ScAddress maCellPos; 309 sal_Bool mbMarkNote; 310 sal_Bool mbDataValid; 311 }; 312 313 314 // ============================================================================ 315 316 class ScAccessibleCsvTextData : public ScAccessibleTextData 317 { 318 private: 319 typedef ::std::auto_ptr< SvxTextForwarder > TextForwarderPtr; 320 typedef ::std::auto_ptr< ScCsvViewForwarder > ViewForwarderPtr; 321 322 Window* mpWindow; 323 EditEngine* mpEditEngine; 324 TextForwarderPtr mpTextForwarder; 325 ViewForwarderPtr mpViewForwarder; 326 String maCellText; 327 Rectangle maBoundBox; 328 Size maCellSize; 329 330 public: 331 explicit ScAccessibleCsvTextData( 332 Window* pWindow, 333 EditEngine* pEditEngine, 334 const String& rCellText, 335 const Rectangle& rBoundBox, 336 const Size& rCellSize ); 337 virtual ~ScAccessibleCsvTextData(); 338 339 virtual ScAccessibleTextData* Clone() const; 340 341 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 342 343 virtual SvxTextForwarder* GetTextForwarder(); 344 virtual SvxViewForwarder* GetViewForwarder(); 345 virtual SvxEditViewForwarder* GetEditViewForwarder( sal_Bool bCreate ); 346 347 virtual void UpdateData() {} 348 virtual void SetDoUpdate( sal_Bool /* bValue */ ) {} 349 virtual sal_Bool IsDirty() const { return sal_False; } 350 }; 351 352 353 // ============================================================================ 354 355 #endif 356