import org.apache.log4j.Logger;\r
import org.eclipse.core.runtime.CoreException;\r
import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.OperationCanceledException;\r
import org.eclipse.jface.viewers.ILabelProvider;\r
import org.eclipse.swt.SWT;\r
import org.eclipse.swt.events.SelectionAdapter;\r
protected void fillContentProvider(AbstractContentProvider contentProvider,\r
ItemsFilter itemsFilter, IProgressMonitor progressMonitor)\r
throws CoreException {\r
- progressMonitor.beginTask("Looking for taxa", 1000); // Why no progres monitor?\r
- if(excludeTaxa == null){\r
- for(UuidAndTitleCache taxon : model){\r
- contentProvider.add(taxon, itemsFilter);\r
- }\r
- }else{\r
- for(UuidAndTitleCache taxon : model){\r
- if( ! excludeTaxa.contains(taxon.getUuid())){\r
+ \r
+ try {\r
+ progressMonitor.beginTask("Looking for taxa", model.size()); // Why no progres monitor?\r
+ if(excludeTaxa == null){\r
+ for(UuidAndTitleCache taxon : model){\r
contentProvider.add(taxon, itemsFilter);\r
+ \r
+ if (progressMonitor.isCanceled()) {\r
+ throw new OperationCanceledException();\r
+ }\r
+ progressMonitor.worked(1);\r
+ }\r
+ }else{\r
+ for(UuidAndTitleCache taxon : model){\r
+ if( ! excludeTaxa.contains(taxon.getUuid())){\r
+ contentProvider.add(taxon, itemsFilter);\r
+ }\r
+ \r
+ if (progressMonitor.isCanceled()) {\r
+ throw new OperationCanceledException();\r
+ }\r
+ progressMonitor.worked(1);\r
}\r
}\r
}\r
+ finally {\r
+ progressMonitor.done();\r
+ }\r
}\r
\r
/* (non-Javadoc)\r