|
Lines 85-90
Link Here
|
| 85 |
*/ |
85 |
*/ |
| 86 |
private int expandToLevel = 0; |
86 |
private int expandToLevel = 0; |
| 87 |
|
87 |
|
|
|
88 |
private boolean preserveExpansion; |
| 89 |
|
| 88 |
/** |
90 |
/** |
| 89 |
* Safe runnable used to update an item. |
91 |
* Safe runnable used to update an item. |
| 90 |
*/ |
92 |
*/ |
|
Lines 104-109
Link Here
|
| 104 |
|
106 |
|
| 105 |
} |
107 |
} |
| 106 |
|
108 |
|
|
|
109 |
protected void preservingSelection(Runnable updateCode) { |
| 110 |
Object[] expandedElements = null; |
| 111 |
if (preserveExpansion) { |
| 112 |
expandedElements = getExpandedElements(); |
| 113 |
} |
| 114 |
super.preservingSelection(updateCode); |
| 115 |
if (preserveExpansion) { |
| 116 |
setExpandedElements(expandedElements); |
| 117 |
} |
| 118 |
} |
| 119 |
|
| 107 |
/** |
120 |
/** |
| 108 |
* Creates an abstract tree viewer. The viewer has no input, no content |
121 |
* Creates an abstract tree viewer. The viewer has no input, no content |
| 109 |
* provider, a default label provider, no sorter, no filters, and has |
122 |
* provider, a default label provider, no sorter, no filters, and has |
|
Lines 2436-2441
Link Here
|
| 2436 |
} |
2449 |
} |
| 2437 |
|
2450 |
|
| 2438 |
/** |
2451 |
/** |
|
|
2452 |
* Enable or disable the preserve expansion behavior of this viewer. The |
| 2453 |
* default is that the viewer does not guarantee preserving deep expansion state |
| 2454 |
* across update operations, for performance reasons. Note that this method |
| 2455 |
* has been introduced in 3.5 and that trying to enable expansion state |
| 2456 |
* preserving may not be possible for all subclasses of |
| 2457 |
* <code>AbstractTreeViewer</code>, or may cause program errors. This method |
| 2458 |
* is supported for {@link TreeViewer}, but no promises are made for other |
| 2459 |
* subclasses of AbstractTreeViewer, or subclasses of the listed viewer |
| 2460 |
* classes. |
| 2461 |
* |
| 2462 |
* @param preserve |
| 2463 |
* <code>true</code> if expansion state should be preserved, |
| 2464 |
* <code>false</code> otherwise |
| 2465 |
* @since 3.5 |
| 2466 |
*/ |
| 2467 |
public void setPreserveExpansion(boolean preserve) { |
| 2468 |
this.preserveExpansion = preserve; |
| 2469 |
} |
| 2470 |
|
| 2471 |
/** |
| 2472 |
* Returns whether (deep) expansion state should be preserved across |
| 2473 |
* update operations. To be used by subclasses that override |
| 2474 |
* {@link #preservingSelection(Runnable)}. |
| 2475 |
* |
| 2476 |
* @return <code>true</code> if expansion should be preserved, |
| 2477 |
* <code>false</code> otherwise |
| 2478 |
* @since 3.5 |
| 2479 |
*/ |
| 2480 |
protected boolean getPreserveExpansion() { |
| 2481 |
return preserveExpansion; |
| 2482 |
} |
| 2483 |
|
| 2484 |
/** |
| 2439 |
* Sets the selection to the given list of items. |
2485 |
* Sets the selection to the given list of items. |
| 2440 |
* |
2486 |
* |
| 2441 |
* @param items |
2487 |
* @param items |