Lines 37-46
Link Here
|
37 |
/** a static map with (FileObject, Reference (Folder)) |
37 |
/** a static map with (FileObject, Reference (Folder)) |
38 |
*/ |
38 |
*/ |
39 |
private static final WeakHashMap map = new WeakHashMap (101); |
39 |
private static final WeakHashMap map = new WeakHashMap (101); |
|
|
40 |
/** A static of known folder orders. Though we hold the |
41 |
* FolderOrder with a soft reference which can be collected, even |
42 |
* if this happens we would like the new FolderOrder to have any |
43 |
* previously determined order attribute. Otherwise under obscure |
44 |
* circumstances (#15381) it is possible for the IDE to go into an |
45 |
* endless loop recalculating folder orders, since they keep |
46 |
* getting collected. |
47 |
*/ |
48 |
private static final Map knownOrders = Collections.synchronizedMap(new WeakHashMap(50)); // Map<FileObject, Object> |
40 |
|
49 |
|
41 |
|
50 |
|
42 |
/** map of primary files of objects to their index or null */ |
51 |
/** map of names of primary files of objects to their index or null */ |
43 |
private Map order; // Map<FileObject,Integer> |
52 |
private Map order; // Map<String,Integer> |
44 |
/** file to store data in */ |
53 |
/** file to store data in */ |
45 |
private FileObject folder; |
54 |
private FileObject folder; |
46 |
/** if true, partial orderings on disk should be ignored for files in the order */ |
55 |
/** if true, partial orderings on disk should be ignored for files in the order */ |
Lines 269-274
Link Here
|
269 |
doRead (o); |
278 |
doRead (o); |
270 |
|
279 |
|
271 |
previous = o; |
280 |
previous = o; |
|
|
281 |
if (previous != null) { |
282 |
knownOrders.put(folder, previous); |
283 |
} |
272 |
|
284 |
|
273 |
FolderList.changedFolderOrder (folder); |
285 |
FolderList.changedFolderOrder (folder); |
274 |
} |
286 |
} |
Lines 384-389
Link Here
|
384 |
FolderOrder order = ref == null ? null : (FolderOrder)ref.get (); |
396 |
FolderOrder order = ref == null ? null : (FolderOrder)ref.get (); |
385 |
if (order == null) { |
397 |
if (order == null) { |
386 |
order = new FolderOrder (folder); |
398 |
order = new FolderOrder (folder); |
|
|
399 |
order.previous = knownOrders.get(folder); |
400 |
order.doRead(order.previous); |
387 |
|
401 |
|
388 |
map.put (folder, new SoftReference (order)); |
402 |
map.put (folder, new SoftReference (order)); |
389 |
} |
403 |
} |