Mercurial > projects > dwt2
annotate org.eclipse.text/src/org/eclipse/jface/text/RewriteSessionEditProcessor.d @ 15:c4b1a29263fc
Successful build of org.eclipse.text
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 15 Mar 2009 19:51:07 +0100 |
parents | 5feec68b4556 |
children |
rev | line source |
---|---|
12
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1 /******************************************************************************* |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 * Copyright (c) 2006 IBM Corporation and others. |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 * |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 * Contributors: |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 * IBM Corporation - initial API and implementation |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
10 * Port to the D programming language: |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 * Frank Benoit <benoit@tionex.de> |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 *******************************************************************************/ |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 module org.eclipse.jface.text.RewriteSessionEditProcessor; |
14
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
14 import org.eclipse.jface.text.IRepairableDocument; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
15 import org.eclipse.jface.text.AbstractDocument; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
16 import org.eclipse.jface.text.IDocumentPartitionerExtension3; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
17 import org.eclipse.jface.text.ConfigurableLineTracker; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
18 import org.eclipse.jface.text.IRegion; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
19 import org.eclipse.jface.text.TypedRegion; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
20 import org.eclipse.jface.text.IDocumentExtension2; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
21 import org.eclipse.jface.text.TypedPosition; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
22 import org.eclipse.jface.text.SlaveDocumentEvent; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
23 import org.eclipse.jface.text.IDocumentExtension3; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
24 import org.eclipse.jface.text.IDocumentListener; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
25 import org.eclipse.jface.text.ISynchronizable; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
26 import org.eclipse.jface.text.DocumentEvent; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
27 import org.eclipse.jface.text.Position; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
28 import org.eclipse.jface.text.IRepairableDocumentExtension; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
29 import org.eclipse.jface.text.DocumentRewriteSessionType; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
30 import org.eclipse.jface.text.Region; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
31 import org.eclipse.jface.text.IDocumentExtension4; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
32 import org.eclipse.jface.text.BadLocationException; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
33 import org.eclipse.jface.text.TextMessages; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
34 import org.eclipse.jface.text.IDocumentPartitioningListenerExtension2; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
35 import org.eclipse.jface.text.IDocumentInformationMappingExtension; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
36 import org.eclipse.jface.text.IDocumentPartitioningListenerExtension; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
37 import org.eclipse.jface.text.ITextStore; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
38 import org.eclipse.jface.text.IDocumentPartitionerExtension; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
39 import org.eclipse.jface.text.DocumentRewriteSession; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
40 import org.eclipse.jface.text.IPositionUpdater; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
41 import org.eclipse.jface.text.ISlaveDocumentManagerExtension; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
42 import org.eclipse.jface.text.ILineTracker; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
43 import org.eclipse.jface.text.ListLineTracker; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
44 import org.eclipse.jface.text.IDocumentInformationMapping; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
45 import org.eclipse.jface.text.IDocumentRewriteSessionListener; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
46 import org.eclipse.jface.text.AbstractLineTracker; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
47 import org.eclipse.jface.text.DefaultLineTracker; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
48 import org.eclipse.jface.text.BadPositionCategoryException; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
49 import org.eclipse.jface.text.BadPartitioningException; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
50 import org.eclipse.jface.text.SequentialRewriteTextStore; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
51 import org.eclipse.jface.text.IDocumentInformationMappingExtension2; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
52 import org.eclipse.jface.text.DocumentPartitioningChangedEvent; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
53 import org.eclipse.jface.text.FindReplaceDocumentAdapter; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
54 import org.eclipse.jface.text.TextUtilities; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
55 import org.eclipse.jface.text.ISlaveDocumentManager; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
56 import org.eclipse.jface.text.IDocument; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
57 import org.eclipse.jface.text.ILineTrackerExtension; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
58 import org.eclipse.jface.text.IDocumentPartitioner; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
59 import org.eclipse.jface.text.GapTextStore; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
60 import org.eclipse.jface.text.Document; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
61 import org.eclipse.jface.text.IDocumentExtension; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
62 import org.eclipse.jface.text.IDocumentPartitioningListener; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
63 import org.eclipse.jface.text.CopyOnWriteTextStore; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
64 import org.eclipse.jface.text.DefaultPositionUpdater; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
65 import org.eclipse.jface.text.Line; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
66 import org.eclipse.jface.text.DocumentRewriteSessionEvent; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
67 import org.eclipse.jface.text.IDocumentPartitionerExtension2; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
68 import org.eclipse.jface.text.ITypedRegion; |
5feec68b4556
First run of automatic package imports
Frank Benoit <benoit@tionex.de>
parents:
12
diff
changeset
|
69 import org.eclipse.jface.text.TreeLineTracker; |
12
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 import java.lang.all; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 import org.eclipse.text.edits.CopyTargetEdit; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 import org.eclipse.text.edits.DeleteEdit; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 import org.eclipse.text.edits.InsertEdit; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 import org.eclipse.text.edits.MalformedTreeException; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
79 import org.eclipse.text.edits.MoveTargetEdit; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
80 import org.eclipse.text.edits.ReplaceEdit; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
81 import org.eclipse.text.edits.TextEdit; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
82 import org.eclipse.text.edits.TextEditProcessor; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
83 import org.eclipse.text.edits.TextEditVisitor; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 import org.eclipse.text.edits.UndoEdit; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
86 /** |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
87 * A text edit processor that brackets the application of edits into a document rewrite session. |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
88 * |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
89 * @since 3.3 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
90 */ |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
91 public final class RewriteSessionEditProcessor : TextEditProcessor { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 /** The threshold for <em>large</em> text edits. */ |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
93 private static const int THRESHOLD= 1000; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 /** |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 * Text edit visitor that estimates the compound size of an edit tree in characters. |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 */ |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 private static final class SizeVisitor : TextEditVisitor { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 int fSize= 0; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 public bool visit(CopyTargetEdit edit) { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 fSize += edit.getLength(); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 return super.visit(edit); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 } |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 public bool visit(DeleteEdit edit) { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 fSize += edit.getLength(); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 return super.visit(edit); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 } |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 public bool visit(InsertEdit edit) { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 fSize += edit.getText().length(); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 return super.visit(edit); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 } |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 public bool visit(MoveTargetEdit edit) { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 fSize += edit.getLength(); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 return super.visit(edit); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 } |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
121 public bool visit(ReplaceEdit edit) { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 fSize += Math.max(edit.getLength(), edit.getText().length()); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 return super.visit(edit); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 } |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 } |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 /** |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 * Constructs a new edit processor for the given document. |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 * |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 * @param document the document to manipulate |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 * @param root the root of the text edit tree describing the modifications. By passing a text |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 * edit a a text edit processor the ownership of the edit is transfered to the text edit |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 * processors. Clients must not modify the edit (e.g adding new children) any longer. |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
134 * @param style {@link TextEdit#NONE}, {@link TextEdit#CREATE_UNDO} or |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 * {@link TextEdit#UPDATE_REGIONS}) |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
136 */ |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 public this(IDocument document, TextEdit root, int style) { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 super(document, root, style); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 } |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
140 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
141 /* |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 * @see org.eclipse.text.edits.TextEditProcessor#performEdits() |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 */ |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 public UndoEdit performEdits() { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 IDocument document= getDocument(); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 if (!( cast(IDocumentExtension4)document )) |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
147 return super.performEdits(); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
148 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
149 IDocumentExtension4 extension= cast(IDocumentExtension4) document; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
150 bool isLargeEdit= isLargeEdit(getRoot()); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
151 DocumentRewriteSessionType type= isLargeEdit ? DocumentRewriteSessionType.UNRESTRICTED : DocumentRewriteSessionType.UNRESTRICTED_SMALL; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
152 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
153 DocumentRewriteSession session= extension.startRewriteSession(type); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
154 try { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
155 return super.performEdits(); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
156 } finally { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
157 extension.stopRewriteSession(session); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
158 } |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
159 } |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
160 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
161 /** |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
162 * Returns <code>true</code> if the passed edit is considered <em>large</em>, |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
163 * <code>false</code> otherwise. |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
164 * |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
165 * @param edit the edit to check |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
166 * @return <code>true</code> if <code>edit</code> is considered <em>large</em>, |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
167 * <code>false</code> otherwise |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
168 * @since 3.3 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
169 */ |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
170 public static bool isLargeEdit(TextEdit edit) { |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
171 SizeVisitor sizeVisitor= new SizeVisitor(); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 edit.accept(sizeVisitor); |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
173 return sizeVisitor.fSize > THRESHOLD; |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
174 } |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
175 |
bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
176 } |