comparison dwtx/jface/text/projection/ProjectionDocument.d @ 134:51e6e63f930e

Regex fix for casts
author Frank Benoit <benoit@tionex.de>
date Sun, 24 Aug 2008 01:46:20 +0200
parents 7d818bd32d63
children 6dcb0baaa031
comparison
equal deleted inserted replaced
133:7d818bd32d63 134:51e6e63f930e
127 public this(IDocument masterDocument) { 127 public this(IDocument masterDocument) {
128 super(); 128 super();
129 129
130 fMasterDocument= masterDocument; 130 fMasterDocument= masterDocument;
131 if (fMasterDocument instanceof IDocumentExtension) 131 if (fMasterDocument instanceof IDocumentExtension)
132 fMasterDocumentExtension= (IDocumentExtension) fMasterDocument; 132 fMasterDocumentExtension= cast(IDocumentExtension) fMasterDocument;
133 133
134 fSegmentsCategory= SEGMENTS_CATEGORY; 134 fSegmentsCategory= SEGMENTS_CATEGORY;
135 fFragmentsCategory= FRAGMENTS_CATEGORY_PREFIX + hashCode(); 135 fFragmentsCategory= FRAGMENTS_CATEGORY_PREFIX + hashCode();
136 fMasterDocument.addPositionCategory(fFragmentsCategory); 136 fMasterDocument.addPositionCategory(fFragmentsCategory);
137 fFragmentsUpdater= new FragmentUpdater(fFragmentsCategory); 137 fFragmentsUpdater= new FragmentUpdater(fFragmentsCategory);
247 addPositionUpdater(fSegmentUpdater); 247 addPositionUpdater(fSegmentUpdater);
248 248
249 int offset= 0; 249 int offset= 0;
250 Position[] fragments= getFragments(); 250 Position[] fragments= getFragments();
251 for (int i= 0; i < fragments.length; i++) { 251 for (int i= 0; i < fragments.length; i++) {
252 Fragment fragment= (Fragment) fragments[i]; 252 Fragment fragment= cast(Fragment) fragments[i];
253 Segment segment= new Segment(offset, fragment.getLength()); 253 Segment segment= new Segment(offset, fragment.getLength());
254 segment.fragment= fragment; 254 segment.fragment= fragment;
255 addPosition(fSegmentsCategory, segment); 255 addPosition(fSegmentsCategory, segment);
256 offset += fragment.length; 256 offset += fragment.length;
257 } 257 }
275 private Segment createSegmentFor(Fragment fragment, int index) throws BadLocationException, BadPositionCategoryException { 275 private Segment createSegmentFor(Fragment fragment, int index) throws BadLocationException, BadPositionCategoryException {
276 276
277 int offset= 0; 277 int offset= 0;
278 if (index > 0) { 278 if (index > 0) {
279 Position[] segments= getSegments(); 279 Position[] segments= getSegments();
280 Segment segment= (Segment) segments[index - 1]; 280 Segment segment= cast(Segment) segments[index - 1];
281 offset= segment.getOffset() + segment.getLength(); 281 offset= segment.getOffset() + segment.getLength();
282 } 282 }
283 283
284 Segment segment= new Segment(offset, 0); 284 Segment segment= new Segment(offset, 0);
285 segment.fragment= fragment; 285 segment.fragment= fragment;
309 309
310 Fragment left= null; 310 Fragment left= null;
311 Fragment right= null; 311 Fragment right= null;
312 312
313 if (index < fragments.length) { 313 if (index < fragments.length) {
314 Fragment fragment= (Fragment) fragments[index]; 314 Fragment fragment= cast(Fragment) fragments[index];
315 if (offsetInMaster is fragment.offset) 315 if (offsetInMaster is fragment.offset)
316 if (fragment.length is 0) // the fragment does not overlap - it is a zero-length fragment at the same offset 316 if (fragment.length is 0) // the fragment does not overlap - it is a zero-length fragment at the same offset
317 left= fragment; 317 left= fragment;
318 else 318 else
319 throw new IllegalArgumentException("overlaps with existing fragment"); //$NON-NLS-1$ 319 throw new IllegalArgumentException("overlaps with existing fragment"); //$NON-NLS-1$
320 if (offsetInMaster + lengthInMaster is fragment.offset) 320 if (offsetInMaster + lengthInMaster is fragment.offset)
321 right= fragment; 321 right= fragment;
322 } 322 }
323 323
324 if (0 < index && index <= fragments.length) { 324 if (0 < index && index <= fragments.length) {
325 Fragment fragment= (Fragment) fragments[index - 1]; 325 Fragment fragment= cast(Fragment) fragments[index - 1];
326 if (fragment.includes(offsetInMaster)) 326 if (fragment.includes(offsetInMaster))
327 throw new IllegalArgumentException("overlaps with existing fragment"); //$NON-NLS-1$ 327 throw new IllegalArgumentException("overlaps with existing fragment"); //$NON-NLS-1$
328 if (fragment.getOffset() + fragment.getLength() is offsetInMaster) 328 if (fragment.getOffset() + fragment.getLength() is offsetInMaster)
329 left= fragment; 329 left= fragment;
330 } 330 }
331 331
332 int offsetInSlave= 0; 332 int offsetInSlave= 0;
333 if (index > 0) { 333 if (index > 0) {
334 Fragment fragment= (Fragment) fragments[index - 1]; 334 Fragment fragment= cast(Fragment) fragments[index - 1];
335 Segment segment= fragment.segment; 335 Segment segment= fragment.segment;
336 offsetInSlave= segment.getOffset() + segment.getLength(); 336 offsetInSlave= segment.getOffset() + segment.getLength();
337 } 337 }
338 338
339 ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, offsetInSlave, 0, fMasterDocument.get(offsetInMaster, lengthInMaster), offsetInMaster, lengthInMaster, masterDocumentEvent); 339 ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, offsetInSlave, 0, fMasterDocument.get(offsetInMaster, lengthInMaster), offsetInMaster, lengthInMaster, masterDocumentEvent);
383 * @return the fragment representing the given master document range 383 * @return the fragment representing the given master document range
384 */ 384 */
385 private Fragment findFragment(int offsetInMaster, int lengthInMaster) { 385 private Fragment findFragment(int offsetInMaster, int lengthInMaster) {
386 Position[] fragments= getFragments(); 386 Position[] fragments= getFragments();
387 for (int i= 0; i < fragments.length; i++) { 387 for (int i= 0; i < fragments.length; i++) {
388 Fragment f= (Fragment) fragments[i]; 388 Fragment f= cast(Fragment) fragments[i];
389 if (f.getOffset() <= offsetInMaster && offsetInMaster + lengthInMaster <= f.getOffset() + f.getLength()) 389 if (f.getOffset() <= offsetInMaster && offsetInMaster + lengthInMaster <= f.getOffset() + f.getLength())
390 return f; 390 return f;
391 } 391 }
392 return null; 392 return null;
393 } 393 }
806 fMapping.projectionChanged(); 806 fMapping.projectionChanged();
807 } 807 }
808 808
809 private int computeAnchor(DocumentEvent event) { 809 private int computeAnchor(DocumentEvent event) {
810 if (event instanceof ProjectionDocumentEvent) { 810 if (event instanceof ProjectionDocumentEvent) {
811 ProjectionDocumentEvent slave= (ProjectionDocumentEvent) event; 811 ProjectionDocumentEvent slave= cast(ProjectionDocumentEvent) event;
812 Object changeType= slave.getChangeType(); 812 Object changeType= slave.getChangeType();
813 if (ProjectionDocumentEvent.CONTENT_CHANGE is changeType) { 813 if (ProjectionDocumentEvent.CONTENT_CHANGE is changeType) {
814 DocumentEvent master= slave.getMasterEvent(); 814 DocumentEvent master= slave.getMasterEvent();
815 if (master !is null) 815 if (master !is null)
816 return master.getOffset(); 816 return master.getOffset();
823 823
824 private bool ensureWellFormedSegmentation(int anchorOffset) { 824 private bool ensureWellFormedSegmentation(int anchorOffset) {
825 bool changed= false; 825 bool changed= false;
826 Position[] segments= getSegments(); 826 Position[] segments= getSegments();
827 for (int i= 0; i < segments.length; i++) { 827 for (int i= 0; i < segments.length; i++) {
828 Segment segment= (Segment) segments[i]; 828 Segment segment= cast(Segment) segments[i];
829 if (segment.isDeleted() || segment.getLength() is 0) { 829 if (segment.isDeleted() || segment.getLength() is 0) {
830 try { 830 try {
831 removePosition(fSegmentsCategory, segment); 831 removePosition(fSegmentsCategory, segment);
832 fMasterDocument.removePosition(fFragmentsCategory, segment.fragment); 832 fMasterDocument.removePosition(fFragmentsCategory, segment.fragment);
833 changed= true; 833 changed= true;
834 } catch (BadPositionCategoryException e) { 834 } catch (BadPositionCategoryException e) {
835 internalError(); 835 internalError();
836 } 836 }
837 } else if (i < segments.length - 1) { 837 } else if (i < segments.length - 1) {
838 Segment next= (Segment) segments[i + 1]; 838 Segment next= cast(Segment) segments[i + 1];
839 if (next.isDeleted() || next.getLength() is 0) 839 if (next.isDeleted() || next.getLength() is 0)
840 continue; 840 continue;
841 Fragment fragment= segment.fragment; 841 Fragment fragment= segment.fragment;
842 if (fragment.getOffset() + fragment.getLength() is next.fragment.getOffset()) { 842 if (fragment.getOffset() + fragment.getLength() is next.fragment.getOffset()) {
843 // join fragments and their corresponding segments 843 // join fragments and their corresponding segments
897 ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, 0, fMapping.getImageLength(), fMasterDocument.get(offsetInMaster, lengthInMaster), offsetInMaster, lengthInMaster); 897 ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, 0, fMapping.getImageLength(), fMasterDocument.get(offsetInMaster, lengthInMaster), offsetInMaster, lengthInMaster);
898 super.fireDocumentAboutToBeChanged(event); 898 super.fireDocumentAboutToBeChanged(event);
899 899
900 Position[] fragments= getFragments(); 900 Position[] fragments= getFragments();
901 for (int i= 0; i < fragments.length; i++) { 901 for (int i= 0; i < fragments.length; i++) {
902 Fragment fragment= (Fragment) fragments[i]; 902 Fragment fragment= cast(Fragment) fragments[i];
903 fMasterDocument.removePosition(fFragmentsCategory, fragment); 903 fMasterDocument.removePosition(fFragmentsCategory, fragment);
904 removePosition(fSegmentsCategory, fragment.segment); 904 removePosition(fSegmentsCategory, fragment.segment);
905 } 905 }
906 906
907 Fragment fragment= new Fragment(offsetInMaster, lengthInMaster); 907 Fragment fragment= new Fragment(offsetInMaster, lengthInMaster);