#823
authorem.lee <em.lee@localhost>
Wed, 27 Jan 2010 08:49:42 +0000 (08:49 +0000)
committerem.lee <em.lee@localhost>
Wed, 27 Jan 2010 08:49:42 +0000 (08:49 +0000)
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/FilteredTaxonNodeSelectionDialog.java

index b58a537d4b2d0637f42d0fece3ca05d2adf9cb7c..d0cb23de18bd26dfbe29f2f27f035b9204f2dc98 100644 (file)
@@ -9,6 +9,7 @@ import java.util.UUID;
 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
@@ -84,18 +85,34 @@ public class FilteredTaxonNodeSelectionDialog extends AbstractFilteredCdmResourc
        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