|
Lines 87-92
Link Here
|
| 87 |
import org.eclipse.swt.widgets.Label; |
87 |
import org.eclipse.swt.widgets.Label; |
| 88 |
import org.eclipse.swt.widgets.Menu; |
88 |
import org.eclipse.swt.widgets.Menu; |
| 89 |
import org.eclipse.swt.widgets.Shell; |
89 |
import org.eclipse.swt.widgets.Shell; |
|
|
90 |
import org.eclipse.swt.widgets.Table; |
| 90 |
import org.eclipse.swt.widgets.Text; |
91 |
import org.eclipse.swt.widgets.Text; |
| 91 |
import org.eclipse.swt.widgets.ToolBar; |
92 |
import org.eclipse.swt.widgets.ToolBar; |
| 92 |
import org.eclipse.swt.widgets.ToolItem; |
93 |
import org.eclipse.swt.widgets.ToolItem; |
|
Lines 808-815
Link Here
|
| 808 |
public void refresh() { |
809 |
public void refresh() { |
| 809 |
if (list != null && !list.getTable().isDisposed()) { |
810 |
if (list != null && !list.getTable().isDisposed()) { |
| 810 |
|
811 |
|
| 811 |
list.setItemCount(contentProvider.getElements(null).length); |
812 |
contentProvider.internalRefresh(); |
| 812 |
list.refresh(); |
|
|
| 813 |
|
813 |
|
| 814 |
if (list.getTable().getItemCount() > 0) { |
814 |
if (list.getTable().getItemCount() > 0) { |
| 815 |
list.getTable().setSelection(0); |
815 |
list.getTable().setSelection(0); |
|
Lines 2369-2374
Link Here
|
| 2369 |
* <code>items -> lastSortedItems -> lastFilteredItems</code> |
2369 |
* <code>items -> lastSortedItems -> lastFilteredItems</code> |
| 2370 |
*/ |
2370 |
*/ |
| 2371 |
private List lastSortedItems; |
2371 |
private List lastSortedItems; |
|
|
2372 |
|
| 2373 |
/** |
| 2374 |
* Next to result od lastfiltering. |
| 2375 |
* <p> |
| 2376 |
* Standard object flow: |
| 2377 |
* <code>items -> lastSortedItems -> lastFilteredItems -> nextToLastFilteredItems</code> |
| 2378 |
*/ |
| 2379 |
private List nextToLastFilteredItems; |
| 2372 |
|
2380 |
|
| 2373 |
/** |
2381 |
/** |
| 2374 |
* Used for <code>getFilteredItems()</code> method canceling (when the |
2382 |
* Used for <code>getFilteredItems()</code> method canceling (when the |
|
Lines 2401-2406
Link Here
|
| 2401 |
.synchronizedList(new ArrayList(2048)); |
2409 |
.synchronizedList(new ArrayList(2048)); |
| 2402 |
this.lastSortedItems = Collections.synchronizedList(new ArrayList( |
2410 |
this.lastSortedItems = Collections.synchronizedList(new ArrayList( |
| 2403 |
2048)); |
2411 |
2048)); |
|
|
2412 |
this.nextToLastFilteredItems = Collections.synchronizedList(new ArrayList( |
| 2413 |
2048)); |
| 2404 |
} |
2414 |
} |
| 2405 |
|
2415 |
|
| 2406 |
/** |
2416 |
/** |
|
Lines 2488-2493
Link Here
|
| 2488 |
public void refresh() { |
2498 |
public void refresh() { |
| 2489 |
scheduleRefresh(); |
2499 |
scheduleRefresh(); |
| 2490 |
} |
2500 |
} |
|
|
2501 |
|
| 2502 |
/** |
| 2503 |
* Refresh filtered items. |
| 2504 |
*/ |
| 2505 |
private void internalRefresh() { |
| 2506 |
|
| 2507 |
int lastFilteredItemsSize = lastFilteredItems.size(); |
| 2508 |
|
| 2509 |
if (lastFilteredItemsSize != items.size()) |
| 2510 |
reloadCache(false, null); |
| 2511 |
|
| 2512 |
Table table = list.getTable(); |
| 2513 |
|
| 2514 |
if (table.getItemCount() == 0 || lastFilteredItemsSize == 0 |
| 2515 |
|| lastCompletedFilter == null) { |
| 2516 |
list.refresh(true); |
| 2517 |
} else { |
| 2518 |
for (int index = 0; index < lastFilteredItems.size(); index++) { |
| 2519 |
Object element = lastFilteredItems.get(index); |
| 2520 |
if (element != null) { |
| 2521 |
if (nextToLastFilteredItems.contains(element) && nextToLastFilteredItems.size() >= lastFilteredItems.size()) { |
| 2522 |
for (int i = nextToLastFilteredItems.indexOf(element) - 1; i >= index; i--) { |
| 2523 |
Object elementToRemove = nextToLastFilteredItems.get(i); |
| 2524 |
list.remove(elementToRemove); |
| 2525 |
nextToLastFilteredItems.remove(i); |
| 2526 |
list.setItemCount(nextToLastFilteredItems.size()); |
| 2527 |
} |
| 2528 |
} else { |
| 2529 |
if (index >= table.getItemCount()) { |
| 2530 |
list.add(element); |
| 2531 |
} else { |
| 2532 |
list.replace(element, index); |
| 2533 |
} |
| 2534 |
} |
| 2535 |
} |
| 2536 |
} |
| 2537 |
} |
| 2538 |
|
| 2539 |
list.setItemCount(lastFilteredItems.size()); |
| 2540 |
table.update(); |
| 2541 |
|
| 2542 |
nextToLastFilteredItems.clear(); |
| 2543 |
nextToLastFilteredItems.addAll(lastFilteredItems); |
| 2544 |
} |
| 2491 |
|
2545 |
|
| 2492 |
/** |
2546 |
/** |
| 2493 |
* Sets progress message. |
2547 |
* Sets progress message. |