comparison dwtx/text/edits/CopySourceEdit.d @ 159:7926b636c282

...
author Frank Benoit <benoit@tionex.de>
date Wed, 27 Aug 2008 01:57:58 +0200
parents f70d9508c95c
children
comparison
equal deleted inserted replaced
158:25f1f92fa3df 159:7926b636c282
10 * Port to the D programming language: 10 * Port to the D programming language:
11 * Frank Benoit <benoit@tionex.de> 11 * Frank Benoit <benoit@tionex.de>
12 *******************************************************************************/ 12 *******************************************************************************/
13 module dwtx.text.edits.CopySourceEdit; 13 module dwtx.text.edits.CopySourceEdit;
14 14
15 import dwtx.text.edits.MultiTextEdit; // packageimport
16 import dwtx.text.edits.MoveSourceEdit; // packageimport 15 import dwtx.text.edits.MoveSourceEdit; // packageimport
17 import dwtx.text.edits.CopyingRangeMarker; // packageimport
18 import dwtx.text.edits.ReplaceEdit; // packageimport
19 import dwtx.text.edits.EditDocument; // packageimport
20 import dwtx.text.edits.UndoCollector; // packageimport
21 import dwtx.text.edits.DeleteEdit; // packageimport
22 import dwtx.text.edits.MoveTargetEdit; // packageimport 16 import dwtx.text.edits.MoveTargetEdit; // packageimport
23 import dwtx.text.edits.CopyTargetEdit; // packageimport 17 import dwtx.text.edits.CopyTargetEdit; // packageimport
24 import dwtx.text.edits.TextEditCopier; // packageimport 18 import dwtx.text.edits.TextEditCopier; // packageimport
25 import dwtx.text.edits.ISourceModifier; // packageimport 19 import dwtx.text.edits.ISourceModifier; // packageimport
26 import dwtx.text.edits.TextEditMessages; // packageimport
27 import dwtx.text.edits.TextEditProcessor; // packageimport 20 import dwtx.text.edits.TextEditProcessor; // packageimport
28 import dwtx.text.edits.MalformedTreeException; // packageimport
29 import dwtx.text.edits.TreeIterationInfo; // packageimport
30 import dwtx.text.edits.TextEditVisitor; // packageimport 21 import dwtx.text.edits.TextEditVisitor; // packageimport
31 import dwtx.text.edits.TextEditGroup; // packageimport
32 import dwtx.text.edits.TextEdit; // packageimport 22 import dwtx.text.edits.TextEdit; // packageimport
33 import dwtx.text.edits.RangeMarker; // packageimport 23 import dwtx.text.edits.RangeMarker; // packageimport
34 import dwtx.text.edits.UndoEdit; // packageimport
35 import dwtx.text.edits.InsertEdit; // packageimport 24 import dwtx.text.edits.InsertEdit; // packageimport
36 25 import dwtx.text.edits.DeleteEdit; // packageimport
26 import dwtx.text.edits.MalformedTreeException; // packageimport
27 import dwtx.text.edits.TextEditMessages; // packageimport
28 import dwtx.text.edits.MultiTextEdit; // packageimport
29 import dwtx.text.edits.EditDocument; // packageimport
30 import dwtx.text.edits.ReplaceEdit; // packageimport
37 31
38 import dwt.dwthelper.utils; 32 import dwt.dwthelper.utils;
39
40 import dwtx.dwtxhelper.Collection; 33 import dwtx.dwtxhelper.Collection;
41
42 34
43 import dwtx.core.runtime.Assert; 35 import dwtx.core.runtime.Assert;
44 import dwtx.jface.text.BadLocationException; 36 import dwtx.jface.text.BadLocationException;
45 import dwtx.jface.text.IDocument; 37 import dwtx.jface.text.IDocument;
46 38
69 private String fSourceContent; 61 private String fSourceContent;
70 private TextEdit fSourceRoot; 62 private TextEdit fSourceRoot;
71 63
72 private static class PartialCopier : TextEditVisitor { 64 private static class PartialCopier : TextEditVisitor {
73 TextEdit fResult; 65 TextEdit fResult;
74 List fParents= new ArrayList(); 66 List fParents;
75 TextEdit fCurrentParent; 67 TextEdit fCurrentParent;
76 68 public this(){
69 fParents= new ArrayList();
70 }
77 public static TextEdit perform(TextEdit source) { 71 public static TextEdit perform(TextEdit source) {
78 PartialCopier copier= new PartialCopier(); 72 PartialCopier copier= new PartialCopier();
79 source.accept(copier); 73 source.accept(copier);
80 return copier.fResult; 74 return copier.fResult;
81 } 75 }
90 } 84 }
91 public void postVisit(TextEdit edit) { 85 public void postVisit(TextEdit edit) {
92 fCurrentParent= cast(TextEdit)fParents.remove(fParents.size() - 1); 86 fCurrentParent= cast(TextEdit)fParents.remove(fParents.size() - 1);
93 } 87 }
94 public bool visitNode(TextEdit edit) { 88 public bool visitNode(TextEdit edit) {
95 manageCopy(edit.doCopy()); 89 manageCopy(edit.doCopy_package());
96 return true; 90 return true;
97 } 91 }
98 public bool visit(CopySourceEdit edit) { 92 public bool visit(CopySourceEdit edit) {
99 manageCopy(new RangeMarker(edit.getOffset(), edit.getLength())); 93 manageCopy(new RangeMarker(edit.getOffset(), edit.getLength()));
100 return true; 94 return true;
244 if (fSourceContent is null) { 238 if (fSourceContent is null) {
245 if (sourceEdits.size() <= result) { 239 if (sourceEdits.size() <= result) {
246 List list= new ArrayList(); 240 List list= new ArrayList();
247 list.add(this); 241 list.add(this);
248 for (int i= sourceEdits.size(); i < result; i++) 242 for (int i= sourceEdits.size(); i < result; i++)
249 sourceEdits.add(null); 243 sourceEdits.add(cast(Object)null);
250 sourceEdits.add(list); 244 sourceEdits.add(cast(Object)list);
251 } else { 245 } else {
252 List list= cast(List)sourceEdits.get(result); 246 List list= cast(List)sourceEdits.get(result);
253 if (list is null) { 247 if (list is null) {
254 list= new ArrayList(); 248 list= new ArrayList();
255 sourceEdits.add(result, list); 249 sourceEdits.add(result, cast(Object)list);
256 } 250 }
257 list.add(this); 251 list.add(this);
258 } 252 }
259 } 253 }
260 return result; 254 return result;