|
Lines 15-20
Link Here
|
| 15 |
import java.util.HashMap; |
15 |
import java.util.HashMap; |
| 16 |
import java.util.HashSet; |
16 |
import java.util.HashSet; |
| 17 |
import java.util.Iterator; |
17 |
import java.util.Iterator; |
|
|
18 |
import java.util.LinkedList; |
| 19 |
import java.util.List; |
| 18 |
import java.util.Map; |
20 |
import java.util.Map; |
| 19 |
import java.util.Set; |
21 |
import java.util.Set; |
| 20 |
import java.util.TreeSet; |
22 |
import java.util.TreeSet; |
|
Lines 133-139
Link Here
|
| 133 |
NavigatorContentDescriptor[] finalDescriptors = new NavigatorContentDescriptor[allDescriptors |
135 |
NavigatorContentDescriptor[] finalDescriptors = new NavigatorContentDescriptor[allDescriptors |
| 134 |
.size()]; |
136 |
.size()]; |
| 135 |
finalDescriptors = (NavigatorContentDescriptor[]) allDescriptors.values().toArray(finalDescriptors); |
137 |
finalDescriptors = (NavigatorContentDescriptor[]) allDescriptors.values().toArray(finalDescriptors); |
| 136 |
Arrays.sort(finalDescriptors, ExtensionPriorityComparator.INSTANCE); |
138 |
Arrays.sort(finalDescriptors, ExtensionSequenceNumberComparator.INSTANCE); |
| 137 |
return finalDescriptors; |
139 |
return finalDescriptors; |
| 138 |
} |
140 |
} |
| 139 |
|
141 |
|
|
Lines 145-151
Link Here
|
| 145 |
NavigatorContentDescriptor[] finalDescriptors = new NavigatorContentDescriptor[saveablesProviderDescriptors |
147 |
NavigatorContentDescriptor[] finalDescriptors = new NavigatorContentDescriptor[saveablesProviderDescriptors |
| 146 |
.size()]; |
148 |
.size()]; |
| 147 |
saveablesProviderDescriptors.toArray(finalDescriptors); |
149 |
saveablesProviderDescriptors.toArray(finalDescriptors); |
| 148 |
Arrays.sort(finalDescriptors, ExtensionPriorityComparator.INSTANCE); |
150 |
Arrays.sort(finalDescriptors, ExtensionSequenceNumberComparator.INSTANCE); |
| 149 |
return finalDescriptors; |
151 |
return finalDescriptors; |
| 150 |
} |
152 |
} |
| 151 |
|
153 |
|
|
Lines 195-201
Link Here
|
| 195 |
EvaluationCache cache = getEvaluationCache( |
197 |
EvaluationCache cache = getEvaluationCache( |
| 196 |
cachedEvaluations, aVisibilityAssistant); |
198 |
cachedEvaluations, aVisibilityAssistant); |
| 197 |
|
199 |
|
| 198 |
Set descriptors = new TreeSet(ExtensionPriorityComparator.INSTANCE); |
200 |
Set descriptors = new TreeSet(ExtensionSequenceNumberComparator.INSTANCE); |
| 199 |
NavigatorContentDescriptor[] cachedDescriptors = null; |
201 |
NavigatorContentDescriptor[] cachedDescriptors = null; |
| 200 |
if ((cachedDescriptors = cache.getDescriptors(anElement)) != null) { |
202 |
if ((cachedDescriptors = cache.getDescriptors(anElement)) != null) { |
| 201 |
descriptors.addAll(Arrays.asList(cachedDescriptors)); |
203 |
descriptors.addAll(Arrays.asList(cachedDescriptors)); |
|
Lines 256-262
Link Here
|
| 256 |
|
258 |
|
| 257 |
boolean isOverridden; |
259 |
boolean isOverridden; |
| 258 |
|
260 |
|
| 259 |
Set overridingDescriptors = new TreeSet(ExtensionPriorityComparator.INSTANCE); |
261 |
Set overridingDescriptors = new TreeSet(ExtensionSequenceNumberComparator.INSTANCE); |
| 260 |
isOverridden = addDescriptorsConsideringOverrides(anElement, descriptor.getOverriddingExtensions(), |
262 |
isOverridden = addDescriptorsConsideringOverrides(anElement, descriptor.getOverriddingExtensions(), |
| 261 |
aVisibilityAssistant, overridingDescriptors, possibleChild); |
263 |
aVisibilityAssistant, overridingDescriptors, possibleChild); |
| 262 |
|
264 |
|
|
Lines 426-431
Link Here
|
| 426 |
} |
428 |
} |
| 427 |
} |
429 |
} |
| 428 |
} |
430 |
} |
|
|
431 |
|
| 432 |
private int findId(List list, String id) { |
| 433 |
for (int i = 0, len = list.size(); i < len; i++) { |
| 434 |
NavigatorContentDescriptor desc = (NavigatorContentDescriptor) list.get(i); |
| 435 |
if (desc.getId().equals(id)) |
| 436 |
return i; |
| 437 |
} |
| 438 |
throw new RuntimeException("Can't find id: " + id); //$NON-NLS-1$ |
| 439 |
} |
| 440 |
|
| 441 |
private void computeSequenceNumbers() { |
| 442 |
NavigatorContentDescriptor[] descs = getAllContentDescriptors(); |
| 443 |
|
| 444 |
LinkedList list = new LinkedList(); |
| 445 |
for (int i = 0; i < descs.length; i++) { |
| 446 |
list.add(descs[i]); |
| 447 |
} |
| 448 |
|
| 449 |
boolean changed = true; |
| 450 |
while (changed) { |
| 451 |
changed = false; |
| 452 |
for (int i = 0, len = list.size(); i < len; i++) { |
| 453 |
NavigatorContentDescriptor desc = (NavigatorContentDescriptor) list.get(i); |
| 454 |
if (desc.getAppearsBeforeId() != null) { |
| 455 |
int beforeInd = findId(list, desc.getAppearsBeforeId()); |
| 456 |
if (beforeInd < i) { |
| 457 |
list.add(beforeInd, desc); |
| 458 |
list.remove(i + 1); |
| 459 |
changed = true; |
| 460 |
} |
| 461 |
} |
| 462 |
} |
| 463 |
} |
| 464 |
|
| 465 |
for (int i = 0, len = list.size(); i < len; i++) { |
| 466 |
NavigatorContentDescriptor desc = (NavigatorContentDescriptor) list.get(i); |
| 467 |
desc.setSequenceNumber(i); |
| 468 |
if (Policy.DEBUG_EXTENSION_SETUP) { |
| 469 |
System.out.println("Descriptors by sequence: " + desc); //$NON-NLS-1$ |
| 470 |
} |
| 471 |
} |
| 472 |
} |
| 429 |
|
473 |
|
| 430 |
private ImageRegistry getImageRegistry() { |
474 |
private ImageRegistry getImageRegistry() { |
| 431 |
if (imageRegistry == null) { |
475 |
if (imageRegistry == null) { |
|
Lines 444-449
Link Here
|
| 444 |
*/ |
488 |
*/ |
| 445 |
public void readRegistry() { |
489 |
public void readRegistry() { |
| 446 |
super.readRegistry(); |
490 |
super.readRegistry(); |
|
|
491 |
computeSequenceNumbers(); |
| 447 |
computeOverrides(); |
492 |
computeOverrides(); |
| 448 |
} |
493 |
} |
| 449 |
|
494 |
|