Mercurial > projects > dwt-addons
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; |