\r
package eu.etaxonomy.taxeditor.bulkeditor.referencingobjects;\r
\r
+import java.lang.reflect.InvocationTargetException;\r
import java.util.ArrayList;\r
import java.util.Collections;\r
import java.util.Comparator;\r
import java.util.List;\r
-import java.util.Set;\r
\r
import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.jface.operation.IRunnableWithProgress;\r
import org.eclipse.jface.viewers.ISelection;\r
import org.eclipse.jface.viewers.IStructuredSelection;\r
import org.eclipse.jface.viewers.TableViewer;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.swt.widgets.Table;\r
import org.eclipse.ui.IEditorPart;\r
+import org.eclipse.ui.IWorkbench;\r
+import org.eclipse.ui.PlatformUI;\r
import org.eclipse.ui.part.ViewPart;\r
+import org.eclipse.ui.progress.IProgressService;\r
\r
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineSelection;\r
import eu.etaxonomy.taxeditor.model.DescriptionHelper;\r
* \r
*/\r
public void updateReferencingObjects() {\r
- try {\r
- IEditorPart editor = getSite().getPage().getActiveEditor();\r
- ISelection selection = editor.getEditorSite().getSelectionProvider()\r
- .getSelection();\r
+ IEditorPart editor = getSite().getPage().getActiveEditor();\r
+ ISelection selection = editor.getEditorSite().getSelectionProvider()\r
+ .getSelection();\r
\r
- if ((selection != null) && selection instanceof LineSelection) {\r
- Object entity = ((IStructuredSelection) selection).getFirstElement();\r
- referencedObject = getReferencedObject(entity);\r
- if (referencedObject != null) {\r
- referencingObjects = new ArrayList<CdmBase>(CdmStore.getCommonService().getReferencingObjects(referencedObject));\r
- Collections.sort(referencingObjects, new ReferencingClassComparator());\r
- updateView();\r
- } \r
- }\r
+ if ((selection != null) && selection instanceof LineSelection) {\r
+ final Object entity = ((IStructuredSelection) selection).getFirstElement();\r
+ \r
+ IWorkbench wb = PlatformUI.getWorkbench();\r
+ IProgressService ps = wb.getProgressService();\r
+ try {\r
+ ps.busyCursorWhile(new IRunnableWithProgress() {\r
+ public void run(IProgressMonitor pm) {\r
+ doUpdateReferencingObjects(entity);\r
+ }\r
+ });\r
+ } catch (InvocationTargetException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ } catch (InterruptedException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ updateView();\r
+ }\r
+\r
+ private void doUpdateReferencingObjects(Object entity) {\r
+ CdmStore.NewTransactionalConversation().bind();\r
+ try {\r
+ referencedObject = getReferencedObject(entity);\r
+ if (referencedObject != null) {\r
+ referencingObjects = new ArrayList<CdmBase>(CdmStore.getCommonService().getReferencingObjects(referencedObject));\r
+ Collections.sort(referencingObjects, new ReferencingClassComparator());\r
+ }\r
} catch (Exception e) {\r
logger.error("Error retrieving referencing objects", e);\r
}\r
}\r
-\r
+ \r
class ReferencingClassComparator implements Comparator<CdmBase> {\r
\r
/* (non-Javadoc)\r