Lines 54-59
Link Here
|
54 |
import org.netbeans.api.editor.mimelookup.MimeLookup; |
54 |
import org.netbeans.api.editor.mimelookup.MimeLookup; |
55 |
import org.netbeans.modules.refactoring.api.impl.ProgressSupport; |
55 |
import org.netbeans.modules.refactoring.api.impl.ProgressSupport; |
56 |
import org.netbeans.modules.refactoring.api.impl.SPIAccessor; |
56 |
import org.netbeans.modules.refactoring.api.impl.SPIAccessor; |
|
|
57 |
import org.netbeans.modules.refactoring.spi.ProgressProvider; |
57 |
import org.netbeans.modules.refactoring.spi.RefactoringElementImplementation; |
58 |
import org.netbeans.modules.refactoring.spi.RefactoringElementImplementation; |
58 |
import org.netbeans.modules.refactoring.spi.RefactoringElementsBag; |
59 |
import org.netbeans.modules.refactoring.spi.RefactoringElementsBag; |
59 |
import org.netbeans.modules.refactoring.spi.Transaction; |
60 |
import org.netbeans.modules.refactoring.spi.Transaction; |
Lines 83-88
Link Here
|
83 |
private UndoManager undoManager = UndoManager.getDefault(); |
84 |
private UndoManager undoManager = UndoManager.getDefault(); |
84 |
boolean realcommit = true; |
85 |
boolean realcommit = true; |
85 |
private AtomicBoolean finished = new AtomicBoolean(false); |
86 |
private AtomicBoolean finished = new AtomicBoolean(false); |
|
|
87 |
private static final int COMMITSTEPS = 20; |
86 |
|
88 |
|
87 |
private RefactoringSession(String description) { |
89 |
private RefactoringSession(String description) { |
88 |
//internalList = new LinkedList(); |
90 |
//internalList = new LinkedList(); |
Lines 116-122
Link Here
|
116 |
long time = System.currentTimeMillis(); |
118 |
long time = System.currentTimeMillis(); |
117 |
|
119 |
|
118 |
Iterator it = internalList.iterator(); |
120 |
Iterator it = internalList.iterator(); |
119 |
fireProgressListenerStart(0, internalList.size()+1); |
121 |
ArrayList<Transaction> commits = SPIAccessor.DEFAULT.getCommits(bag); |
|
|
122 |
fireProgressListenerStart(0, internalList.size() + 1 + commits.size() * COMMITSTEPS); |
123 |
ProgressListener progressListener = new ProgressL(commits, internalList.size()); |
120 |
if (realcommit) { |
124 |
if (realcommit) { |
121 |
undoManager.transactionStarted(); |
125 |
undoManager.transactionStarted(); |
122 |
undoManager.setUndoDescription(description); |
126 |
undoManager.setUndoDescription(description); |
Lines 124-155
Link Here
|
124 |
try { |
128 |
try { |
125 |
try { |
129 |
try { |
126 |
while (it.hasNext()) { |
130 |
while (it.hasNext()) { |
127 |
fireProgressListenerStep(); |
|
|
128 |
RefactoringElementImplementation element = (RefactoringElementImplementation) it.next(); |
131 |
RefactoringElementImplementation element = (RefactoringElementImplementation) it.next(); |
129 |
if (element.isEnabled() && !((element.getStatus() == RefactoringElement.GUARDED) || (element.getStatus() == RefactoringElement.READ_ONLY))) { |
132 |
if (element.isEnabled() && !((element.getStatus() == RefactoringElement.GUARDED) || (element.getStatus() == RefactoringElement.READ_ONLY))) { |
130 |
element.performChange(); |
133 |
element.performChange(); |
131 |
} |
134 |
} |
|
|
135 |
fireProgressListenerStep(); |
132 |
} |
136 |
} |
133 |
} finally { |
137 |
} finally { |
134 |
for (Transaction commit:SPIAccessor.DEFAULT.getCommits(bag)) { |
138 |
for (Transaction commit : commits) { |
135 |
SPIAccessor.DEFAULT.check(commit, false); |
139 |
SPIAccessor.DEFAULT.check(commit, false); |
136 |
} |
140 |
} |
137 |
|
141 |
|
138 |
UndoableWrapper wrapper = MimeLookup.getLookup("").lookup(UndoableWrapper.class); |
142 |
UndoableWrapper wrapper = MimeLookup.getLookup("").lookup(UndoableWrapper.class); |
139 |
for (Transaction commit:SPIAccessor.DEFAULT.getCommits(bag)) { |
143 |
for (Transaction commit : commits) { |
140 |
if (wrapper !=null) |
144 |
if (wrapper != null) { |
141 |
setWrappers(commit, wrapper); |
145 |
setWrappers(commit, wrapper); |
142 |
|
146 |
} |
143 |
commit.commit(); |
147 |
|
144 |
if (wrapper !=null) |
148 |
if(commit instanceof ProgressProvider) { |
|
|
149 |
ProgressProvider progressProvider = (ProgressProvider) commit; |
150 |
progressProvider.addProgressListener(progressListener); |
151 |
} |
152 |
try { |
153 |
commit.commit(); |
154 |
} finally { |
155 |
if(commit instanceof ProgressProvider) { |
156 |
ProgressProvider progressProvider = (ProgressProvider) commit; |
157 |
progressProvider.removeProgressListener(progressListener); |
158 |
} |
159 |
} |
160 |
if (wrapper != null) { |
145 |
unsetWrappers(commit, wrapper); |
161 |
unsetWrappers(commit, wrapper); |
|
|
162 |
} |
146 |
} |
163 |
} |
147 |
if (wrapper !=null) |
164 |
if (wrapper != null) { |
148 |
wrapper.close(); |
165 |
wrapper.close(); |
149 |
for (Transaction commit : SPIAccessor.DEFAULT.getCommits(bag)) { |
166 |
} |
|
|
167 |
for (Transaction commit : commits) { |
150 |
SPIAccessor.DEFAULT.sum(commit); |
168 |
SPIAccessor.DEFAULT.sum(commit); |
151 |
} |
169 |
} |
152 |
|
|
|
153 |
} |
170 |
} |
154 |
if (saveAfterDone) { |
171 |
if (saveAfterDone) { |
155 |
LifecycleManager.getDefault().saveAll(); |
172 |
LifecycleManager.getDefault().saveAll(); |
Lines 184-189
Link Here
|
184 |
return null; |
201 |
return null; |
185 |
} |
202 |
} |
186 |
|
203 |
|
|
|
204 |
private class ProgressL implements ProgressListener { |
205 |
|
206 |
private float progressStep; |
207 |
private float current; |
208 |
private final ArrayList<Transaction> commits; |
209 |
private final int start; |
210 |
|
211 |
ProgressL(ArrayList<Transaction> commits, int start) { |
212 |
this.commits = commits; |
213 |
this.start = start; |
214 |
} |
215 |
|
216 |
@Override |
217 |
public void start(ProgressEvent event) { |
218 |
progressStep = (float) COMMITSTEPS / event.getCount(); |
219 |
current = start + commits.indexOf(event.getSource()) * COMMITSTEPS; |
220 |
fireProgressListenerStep((int) current); |
221 |
} |
222 |
|
223 |
@Override |
224 |
public void step(ProgressEvent event) { |
225 |
current = current + progressStep; |
226 |
fireProgressListenerStep((int) current); |
227 |
} |
228 |
|
229 |
@Override |
230 |
public void stop(ProgressEvent event) { |
231 |
// do not rely on plugins; |
232 |
} |
233 |
} |
234 |
|
187 |
/** |
235 |
/** |
188 |
* do undo of previous doRefactoring() |
236 |
* do undo of previous doRefactoring() |
189 |
* @param saveAfterDone save all if true |
237 |
* @param saveAfterDone save all if true |
Lines 296-301
Link Here
|
296 |
progressSupport.fireProgressListenerStep(this); |
344 |
progressSupport.fireProgressListenerStep(this); |
297 |
} |
345 |
} |
298 |
} |
346 |
} |
|
|
347 |
|
348 |
private void fireProgressListenerStep(int count) { |
349 |
if (progressSupport != null) { |
350 |
progressSupport.fireProgressListenerStep(this, count); |
351 |
} |
352 |
} |
299 |
|
353 |
|
300 |
private void fireProgressListenerStop() { |
354 |
private void fireProgressListenerStop() { |
301 |
if (progressSupport != null) { |
355 |
if (progressSupport != null) { |