Started refactoring the ImageElement. Improved feedback when starting application...
authorn.hoffmann <n.hoffmann@localhost>
Fri, 24 Sep 2010 20:08:48 +0000 (20:08 +0000)
committern.hoffmann <n.hoffmann@localhost>
Fri, 24 Sep 2010 20:08:48 +0000 (20:08 +0000)
17 files changed:
.gitattributes
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/BrowserElement.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmFormFactory.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/ImageElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/feature/FeatureDistributionDetailElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/supplemental/ImageFileElement.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/StateManager.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/TaxonNavigator.java
taxeditor-navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/search/SearchResultView.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/CdmDataSourceRepository.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/handler/CloseConnectionHandler.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/view/CdmDataSourceViewPart.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/datasource/view/CdmMetaDataAwareDataSourceContainer.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/IContextListener.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/user/view/UserManagerView.java

index 9b946ce7511a7ced5e771e95e52bd1219e7c4116..1b34193a5d0ad09161b7752049e0266e49b4542b 100644 (file)
@@ -434,6 +434,7 @@ taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/supplementalda
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractCdmEntityWizardPage.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractCdmFormElement.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/AbstractFormSection.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/BrowserElement.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmFormFactory.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmPropertyChangeEvent.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CheckboxElement.java -text
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/BrowserElement.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/BrowserElement.java
new file mode 100644 (file)
index 0000000..f63166d
--- /dev/null
@@ -0,0 +1,118 @@
+/**
+ * 
+ */
+package eu.etaxonomy.taxeditor.forms;
+
+import java.net.URI;
+
+import org.apache.log4j.Logger;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+
+/**
+ * @author n.hoffmann
+ *
+ */
+public class BrowserElement extends AbstractCdmFormElement implements ControlListener{
+
+       private static final Logger logger = Logger.getLogger(BrowserElement.class);
+       
+       private Browser browser;
+       
+       private String imageUriString;
+       
+       /**
+        * @param parent
+        * @param style
+        */
+       protected BrowserElement(CdmFormFactory formFactory, ICdmFormElement parentElement, URI imageUri, int style) {
+               super(formFactory, parentElement);
+               formFactory.createLabel(getLayoutComposite(), "");
+               
+               browser = new Browser(getLayoutComposite(), SWT.NONE);
+               
+               getLayoutComposite().setLayoutData(CdmFormFactory.FILL());
+               
+
+               layoutBrowser();
+               
+               showBrowser();
+               browser.addControlListener(this);
+               
+               this.setImageUri(imageUri);
+       }
+
+       /**
+        * 
+        */
+       private void layoutBrowser() {
+               TableWrapData layoutData = CdmFormFactory.FILL();
+               layoutData.heightHint = 1000;
+               
+               browser.setLayoutData(layoutData);
+       }
+
+       /**
+        * 
+        */
+       private void showBrowser() {
+               
+               String html = "";
+               html = "<HTML><HEAD><TITLE></TITLE></HEAD><BODY marginwidth=0 marginheight=0 leftmargin=0 topmargin=0>";
+               html += "<img width=\"" + calculateWidth() + "\" src=\"" + getImageUriString() + "\" />";
+               html += "</BODY></HTML>";
+               
+               browser.setText(html);
+       }
+       
+       /** 
+        * @return
+        */
+       public int calculateWidth() {   
+               Rectangle boundaries = browser.getBounds();
+               return boundaries.width;
+       }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.ControlListener#controlMoved(org.eclipse.swt.events.ControlEvent)
+        */
+       public void controlMoved(ControlEvent e) {
+               showBrowser();
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.ControlListener#controlResized(org.eclipse.swt.events.ControlEvent)
+        */
+       public void controlResized(ControlEvent e) {
+               showBrowser();
+       }
+
+       /**
+        * @param imageUri the imageUri to set
+        */
+       public void setImageUri(URI imageUri) {
+               setImageUriString(imageUri != null ? imageUri.toString() : "");
+       }
+       
+       public void setImageUriString(String imageUriString){
+               this.imageUriString = imageUriString;
+               showBrowser();
+       }
+
+       /**
+        * @return the imageUri
+        */
+       public String getImageUriString() {
+               return imageUriString;
+       }
+
+       public void setSelected(boolean selected) {
+               
+       }
+
+}
index c7c712c5dcd7b20628351607b559cae9b6de4468..0122fd416cefc15a81ad12462695557625b76d61 100644 (file)
@@ -104,6 +104,7 @@ import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
 import eu.etaxonomy.cdm.model.reference.ReferenceBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.forms.selection.AbstractSelectionElement;
 import eu.etaxonomy.taxeditor.forms.selection.AgentSelectionElement;
 import eu.etaxonomy.taxeditor.forms.selection.DerivedUnitBaseSelectionElement;
@@ -284,14 +285,18 @@ public class CdmFormFactory extends FormToolkit{
                return layout;
        }
        
+       public static final TableWrapData FILL(){
+               return FILL(1, 1);
+       }
+       
        /**
         * 
         * @return
         */
-       public static final TableWrapData FILL(){
+       public static final TableWrapData FILL(int horizontalSpan, int verticalSpan){
                TableWrapData layoutData = new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.FILL_GRAB);
-//             layoutData.grabHorizontal = true;
-//             layoutData.grabVertical = true;
+               layoutData.colspan = horizontalSpan;
+               layoutData.rowspan = verticalSpan;
                return layoutData;
        }
        
@@ -663,7 +668,14 @@ public class CdmFormFactory extends FormToolkit{
         * @param style
         * @return
         */
-       public ImageElement createImageElement(ICdmFormElement parentElement, URI imageUri, int style){
+       public BrowserElement createBrowserElement(ICdmFormElement parentElement, URI imageUri, int style){
+               BrowserElement element = new BrowserElement(this, parentElement, imageUri, style);
+               adapt(element);
+               parentElement.addElement(element);
+               return element;
+       }
+       
+       public ImageElement createImageElement(ICdmFormElement parentElement, URI imageUri, int style) {
                ImageElement element = new ImageElement(this, parentElement, imageUri, style);
                adapt(element);
                parentElement.addElement(element);
@@ -1265,7 +1277,11 @@ public class CdmFormFactory extends FormToolkit{
                        }
                }
                
-               Assert.isNotNull(element, "Could not generate composite for entity. Looks like the case is not handled already. Check implementation. Entity: " + entity);
+               if(element == null){
+                       String message = "Could not generate element for entity. Looks like the case is not handled already. Check implementation. Entity: " + entity;
+                       EditorUtil.errorDialog("No element for entity", message);
+                       logger.error(message);
+               }
                
                if(backgroundColor != null && !backgroundColor.isDisposed()){
                        element.setBackgroundColor(backgroundColor);
index 2b590158ab8a672e99267179dd41ae46aad3cacd..a86267361db3b77be3661dfbdbfcf721211c4081 100644 (file)
+// $Id$
 /**
- * 
- */
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy 
+* http://www.e-taxonomy.eu
+* 
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
 package eu.etaxonomy.taxeditor.forms;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
 
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpException;
+import org.apache.http.HttpResponse;
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.swt.events.ControlEvent;
 import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 
-import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.common.UriUtils;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 
 /**
  * @author n.hoffmann
- *
+ * @created Sep 24, 2010
+ * @version 1.0
  */
-public class ImageElement extends AbstractCdmFormElement implements ControlListener{
+public class ImageElement extends AbstractCdmFormElement implements PaintListener, ControlListener{
 
-       private Browser browser;
+       private static final Logger logger = Logger.getLogger(ImageElement.class);
        
-       private String imageUriString;
+       private URI imageUri;
+       private Image image;
+       private Rectangle imageMaxBounds;
        
+       private Composite container;
+
        /**
-        * @param parent
-        * @param style
+        * @param formFactory
+        * @param layoutComposite
         */
        protected ImageElement(CdmFormFactory formFactory, ICdmFormElement parentElement, URI imageUri, int style) {
                super(formFactory, parentElement);
-
-               this.setImageUri(imageUri);
                
-               formFactory.createLabel(getLayoutComposite(), "");
+               setImageUri(imageUri);
                
-               browser = new Browser(getLayoutComposite(), SWT.NONE);
+               container = new Composite(getLayoutComposite(), style);
+               container.setLayoutData(CdmFormFactory.FILL(2, 1));
                
-               TableWrapData layoutData = CdmFormFactory.FILL();
-               layoutData.heightHint = 200;
-               
-               browser.setLayoutData(layoutData);
-               
-               showImage();
-               browser.addControlListener(this);
-       }
-
-       /**
-        * 
-        */
-       private void showImage() {
-               Display.getDefault().asyncExec(new Runnable() {
-                       public void run() {
-                               String html = "";
-                               html = "<HTML><HEAD><TITLE></TITLE></HEAD><BODY marginwidth=0 marginheight=0 leftmargin=0 topmargin=0>";
-                               html += "<img width=\"" + calculateWidth() + "\" src=\"" + getImageUriString() + "\" />";
-                               html += "</BODY></HTML>";
-                               
-                               browser.setText(html);
-                       }
-               });
-       }
-       
-       /** 
-        * @return
-        */
-       public int calculateWidth() {   
-               Rectangle boundaries = browser.getBounds();
-               return boundaries.width;
+               container.addControlListener(this);
+               container.addPaintListener(this);
        }
        
-       /* (non-Javadoc)
-        * @see org.eclipse.swt.events.ControlListener#controlMoved(org.eclipse.swt.events.ControlEvent)
-        */
-       public void controlMoved(ControlEvent e) {
-               showImage();
-       }
 
        /* (non-Javadoc)
-        * @see org.eclipse.swt.events.ControlListener#controlResized(org.eclipse.swt.events.ControlEvent)
+        * @see eu.etaxonomy.taxeditor.forms.ISelectable#setSelected(boolean)
         */
-       public void controlResized(ControlEvent e) {
-               showImage();
+       @Override
+       public void setSelected(boolean selected) {
+               // TODO Auto-generated method stub
+
        }
 
        /**
         * @param imageUri the imageUri to set
         */
-       public void setImageUri(URI imageUri) {
-               setImageUriString(imageUri != null ? imageUri.toString() : "");
-       }
-       
-       public void setImageUriString(String imageUriString){
-               this.imageUriString = imageUriString;
-               showImage();
+       public void setImageUri(URI uri) {
+               this.imageUri = uri;
+               
+               logger.warn("Setting image uri" + imageUri);
+               
+               if(imageUri != null){
+                       
+                       final Display display = Display.getCurrent();
+                       Job job = new Job("Loading image: " + imageUri){
+                               @Override
+                               protected IStatus run(IProgressMonitor monitor) {
+                                       try {                                           
+                                               InputStream imageStream = UriUtils.getInputStream(imageUri);
+                                               
+                                               image = new Image(Display.getCurrent(), imageStream);
+                                               
+                                               display.asyncExec(new Runnable(){
+                                                       @Override
+                                                       public void run() {
+//                                                             EditorUtil.reflowDetailsViewer();
+                                                               getLayoutComposite().layout();
+                                                       }
+                                               });
+                                               return Status.OK_STATUS;
+                                       }catch (IOException e) {
+                                               logger.error("Error reading image", e);
+                                       } catch (HttpException e) {
+                                               // TODO Auto-generated catch block
+                                               e.printStackTrace();
+                                       } 
+                                       return Status.CANCEL_STATUS;
+                               }                                       
+                       };
+                       
+                       job.schedule();
+               }
        }
 
+       private void calculateImageBounds(){
+               Rectangle imageBounds = image.getBounds();
+               Rectangle containerBounds = container.getBounds();
+               
+               Integer imgWidth = imageBounds.width;
+               Integer imgHeight = imageBounds.height;
+               
+               Float ratio = imgHeight.floatValue()/imgWidth.floatValue();
+               Integer width = containerBounds.width;
+               Float height = width * ratio;
+               
+               imageMaxBounds = new Rectangle(containerBounds.x, containerBounds.y, width, height.intValue());
+       }
+       
        /**
         * @return the imageUri
         */
-       public String getImageUriString() {
-               return imageUriString;
+       public URI getImageUri() {
+               return imageUri;
        }
-       
-       public void addControlListener(ControlListener listener){
-               browser.addControlListener(listener);
-       }
-       
-       public void removeControlListener(ControlListener listener){
-               browser.removeControlListener(listener);
+
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.PaintListener#paintControl(org.eclipse.swt.events.PaintEvent)
+        */
+       @Override
+       public void paintControl(PaintEvent e) {
+               if(image != null){
+                       calculateImageBounds();
+                       Composite composite = (Composite) e.widget;
+                       TableWrapData layoutData = CdmFormFactory.FILL(2, 1);
+                       layoutData.heightHint = imageMaxBounds.height;
+                       composite.setLayoutData(layoutData);
+                       e.gc.drawImage(image, 0, 0, image.getBounds().width, image.getBounds().height, 0, 0, imageMaxBounds.width, imageMaxBounds.height);
+               }               
        }
 
-       public void setSelected(boolean selected) {
+
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.ControlListener#controlMoved(org.eclipse.swt.events.ControlEvent)
+        */
+       @Override
+       public void controlMoved(ControlEvent e) {
+               // TODO Auto-generated method stub
                
        }
 
+
+       /* (non-Javadoc)
+        * @see org.eclipse.swt.events.ControlListener#controlResized(org.eclipse.swt.events.ControlEvent)
+        */
+       @Override
+       public void controlResized(ControlEvent e) {
+//             EditorUtil.reflowDetailsViewer();
+       }
 }
index fb89cdbe35bbae31baf3b06334e114a1fd6e4ac2..40e2f7e55c7fc7c383d0817c91f212dca60ec9e3 100644 (file)
@@ -29,7 +29,7 @@ import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
-import eu.etaxonomy.taxeditor.forms.ImageElement;
+import eu.etaxonomy.taxeditor.forms.BrowserElement;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement;
@@ -45,7 +45,7 @@ public class FeatureDistributionDetailElement extends AbstractCdmDetailElement<F
        private static final Logger logger = Logger
        .getLogger(FeatureDistributionDetailElement.class);
 
-       private ImageElement image;
+       private BrowserElement image;
        
        /**
         * @param formFactory
@@ -64,7 +64,7 @@ public class FeatureDistributionDetailElement extends AbstractCdmDetailElement<F
        protected void createControls(ICdmFormElement formElement, FeatureNodeContainer entity,
                        int style) {
                
-               image = formFactory.createImageElement(formElement, null, style);
+               image = formFactory.createBrowserElement(formElement, null, style);
                image.setImageUriString(getMapUriString(getEntity()));
                formElement.getLayoutComposite().layout();
        }
index b8cb3b84a70f7411abf090d0fb6501e86d45d87c..264bd559e5f1790d58fb51806dbbd82efb73f878 100644 (file)
@@ -23,6 +23,7 @@ import eu.etaxonomy.cdm.model.media.ImageFile;
 import eu.etaxonomy.taxeditor.forms.AbstractFormSection;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
+import eu.etaxonomy.taxeditor.forms.BrowserElement;
 import eu.etaxonomy.taxeditor.forms.ImageElement;
 import eu.etaxonomy.taxeditor.forms.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.forms.KeyValueViewerElement;
@@ -40,8 +41,9 @@ public class ImageFileElement extends AbstractMediaRepresentationPartElement<Ima
                        .getLogger(ImageFileElement.class);
        private NumberWithLabelElement text_height;
        private NumberWithLabelElement text_width;
-       private ImageElement element_image;
+       private BrowserElement element_browser;
        private KeyValueViewerElement element_keyValue;
+       private ImageElement element_image;
        
        public ImageFileElement(CdmFormFactory cdmFormFactory,
                        AbstractFormSection section, ImageFile element,
@@ -57,6 +59,7 @@ public class ImageFileElement extends AbstractMediaRepresentationPartElement<Ima
                text_height.setEnabled(false);
                text_width = formFactory.createIntegerTextWithLabelElement(formElement, "Width", null, style);
                text_width.setEnabled(false);
+//             element_browser = formFactory.createBrowserElement(formElement, null, style);
                element_image = formFactory.createImageElement(formElement, null, style);
                
                element_keyValue = formFactory.createKeyValueViewerElement(formElement, "Key", "Value", null);
@@ -102,9 +105,9 @@ public class ImageFileElement extends AbstractMediaRepresentationPartElement<Ima
                                getEntity().setWidth(imageInfo.getWidth());
                                element_keyValue.setInput(imageInfo.getMetaData());
                                
+//                             element_browser.setImageUri(imageUri);
                                element_image.setImageUri(imageUri);
                                
-                               
                        } catch (IOException e) {
                                logger.error("IOError reading image metadata", e);
                                throw new RuntimeException("IOError reading image metadata");
@@ -114,7 +117,7 @@ public class ImageFileElement extends AbstractMediaRepresentationPartElement<Ima
                } catch (URISyntaxException e) {
                        logger.warn("Image Uri is not valid");
                } catch (Exception e) {
-                       logger.warn("Image could not be shown: " + e.getMessage());
+                       logger.warn("Image could not be shown: ", e);
 //                     new RuntimeException(e);
                }
        }
index c0c62089c1b6b0af0ae4b5b02f4645d632b5e523..39398fce0a307dc8879ed36b62eae08d79ba4d58 100644 (file)
@@ -3,13 +3,13 @@ package eu.etaxonomy.taxeditor.navigation;
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.lang.reflect.InvocationTargetException;
 import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IMemento;
@@ -54,8 +54,8 @@ public class StateManager implements IContextListener {
                        public void postShutdown(IWorkbench workbench) {}
 
                        public boolean preShutdown(IWorkbench workbench, boolean forced) {
-                               if(contextAboutToStop()){
-                                       contextStop();
+                               if(contextAboutToStop(null)){
+                                       contextStop(null);
                                }
                                // return true in any case, otherwise the application will not stop
                                return true;
@@ -67,14 +67,14 @@ public class StateManager implements IContextListener {
         * (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.model.IContextListener#onContextEvent(eu.etaxonomy.taxeditor.model.IContextListener.EventType)
         */
-       public boolean onContextEvent(EventType eventType) {
+       public boolean onContextEvent(EventType eventType, IProgressMonitor monitor) {
                switch(eventType){
                case START:
-                       return contextStart();
+                       return contextStart(monitor);
                case STOP:
-                       return contextStop();
+                       return contextStop(monitor);
                case ABOUT_TO_STOP:
-                       return contextAboutToStop();
+                       return contextAboutToStop(monitor);
                }
                return false;
        }
@@ -84,7 +84,7 @@ public class StateManager implements IContextListener {
         * 
         * @return true in any case
         */
-       private boolean contextStart() {
+       private boolean contextStart(IProgressMonitor monitor) {
                IMemento memento = null;
                try {
                        memento = MementoHelper.readMementoFromFile(getStateFileForCurrentDatabase());
@@ -94,9 +94,9 @@ public class StateManager implements IContextListener {
                
                
 
-               restoreNavigator(memento);
+               restoreNavigator(memento, monitor);
                
-               restoreEditors(memento); 
+               restoreEditors(memento, monitor); 
                
                
                return true;
@@ -108,44 +108,33 @@ public class StateManager implements IContextListener {
         * 
         * @param memento
         */
-       private void restoreEditors(final IMemento memento){
+       private void restoreEditors(final IMemento memento, IProgressMonitor monitor){
                if(memento == null){
                        return;
                }
                
-               IRunnableWithProgress runnable = new IRunnableWithProgress() {
-                       
-                       public void run(IProgressMonitor monitor) throws InvocationTargetException,
-                                       InterruptedException {
-                               IMemento editorMementos = memento.getChild(EDITORS);
-                               IMemento[] editorInputs = editorMementos.getChildren(EDITOR);
-                               
-                               monitor.beginTask("Restoring Editors", 1 + editorInputs.length * 2);
-                               monitor.worked(1);
-                               
-                               for(IMemento editorInput : editorInputs){
-                                       TaxonEditorInput input = (TaxonEditorInput) inputFactory.createElement(editorInput);
-                                       monitor.worked(1);
-                                       if(!monitor.isCanceled() && input != null){
-                                               try {
-                                                       EditorUtil.open(input);
-                                               } catch (PartInitException e) {
-                                                       logger.error("Error opening an editor window", e);
-                                               }
-                                       }
-                                       monitor.worked(1);
+               IProgressMonitor subProgressMonitor = NavigationUtil.getSubProgressMonitor(monitor, 1);
+               
+               IMemento editorMementos = memento.getChild(EDITORS);
+               IMemento[] editorInputs = editorMementos.getChildren(EDITOR);
+               
+               subProgressMonitor.beginTask("Restoring Editors", 1 + editorInputs.length * 2);
+               subProgressMonitor.subTask("");
+               subProgressMonitor.worked(1);
+               
+               for(IMemento editorInput : editorInputs){
+                       TaxonEditorInput input = (TaxonEditorInput) inputFactory.createElement(editorInput);
+                       subProgressMonitor.worked(1);
+                       if(!subProgressMonitor.isCanceled() && input != null){
+                               try {
+                                       EditorUtil.open(input);
+                               } catch (PartInitException e) {
+                                       logger.error("Error opening an editor window", e);
                                }
-                               monitor.done();
                        }
-               };
-               
-               try {
-                       NavigationUtil.run(false, true, runnable);
-               } catch (InvocationTargetException e) {
-                       logger.error("InvocationTargetException when trying to restore open editors", e);
-               } catch (InterruptedException e) {
-                       logger.error("InterruptedException when trying to restore open editors", e);
+                       subProgressMonitor.worked(1);
                }
+               subProgressMonitor.done();
        }
        
        /**
@@ -153,9 +142,9 @@ public class StateManager implements IContextListener {
         * 
         * @param memento
         */
-       private void restoreNavigator(IMemento memento){
+       private void restoreNavigator(IMemento memento, IProgressMonitor monitor){
                TaxonNavigator navigator = NavigationUtil.getNavigator(true);
-               navigator.restore(memento);
+               navigator.restore(memento, monitor);
        }
        
        /**
@@ -167,7 +156,7 @@ public class StateManager implements IContextListener {
         * 
         * @return
         */
-       private boolean contextAboutToStop() {
+       private boolean contextAboutToStop(IProgressMonitor monitor) {
                // we are creating the memento here; even if the context is not stopped
                if (CdmStore.getDataSource() != null) {
                        
@@ -194,7 +183,7 @@ public class StateManager implements IContextListener {
         * 
         * @return
         */
-       private boolean contextStop() {
+       private boolean contextStop(IProgressMonitor monitor) {
                saveNavigatorState(memento);
                
                // save the memento when the context really stops
index 739e5f48055b045d77611deaaeb5a7827f6bf4d3..786a8cc4ea6e9fc3c701ced844d711767f8db14b 100644 (file)
@@ -10,7 +10,6 @@
 \r
 package eu.etaxonomy.taxeditor.navigation.navigator;\r
 \r
-import java.lang.reflect.InvocationTargetException;\r
 import java.util.ArrayList;\r
 import java.util.HashSet;\r
 import java.util.List;\r
@@ -22,8 +21,6 @@ import org.eclipse.core.commands.Command;
 import org.eclipse.core.commands.common.NotDefinedException;\r
 import org.eclipse.core.runtime.IAdaptable;\r
 import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.jface.dialogs.ProgressMonitorDialog;\r
-import org.eclipse.jface.operation.IRunnableWithProgress;\r
 import org.eclipse.jface.viewers.DoubleClickEvent;\r
 import org.eclipse.jface.viewers.TreePath;\r
 import org.eclipse.swt.widgets.Composite;\r
@@ -107,66 +104,53 @@ public class TaxonNavigator extends CommonNavigator implements IPostOperationEna
         * \r
         * @param memento\r
         */\r
-       public void restore(final IMemento memento) {\r
-               \r
-               IRunnableWithProgress runnable = new IRunnableWithProgress() {\r
+       public void restore(IMemento memento, IProgressMonitor monitor) {\r
+               IProgressMonitor subProgressMonitor = NavigationUtil.getSubProgressMonitor(monitor, 1); \r
                        \r
-                       public void run(IProgressMonitor monitor) throws InvocationTargetException,\r
-                                       InterruptedException {\r
-                               monitor.setTaskName("Restoring Taxon Navigator");\r
-                               int mementoWork = 0;\r
-                               Set<TreePath> treePaths = new HashSet<TreePath>();\r
-                               IMemento[] treePathMementos = null;\r
-                               if (memento != null) {\r
-                                       \r
-                                       \r
-                                       IMemento treePathsMemento = memento.getChild(TREE_PATHS);\r
-                                       \r
-                                       if (treePathsMemento != null) {\r
-                                               treePathMementos = treePathsMemento.getChildren(TREE_PATH);\r
-                                               mementoWork = treePathMementos.length;\r
-                                       }\r
-                               }\r
-                               // begin the monitor with steps for all tree paths and steps for creating \r
-                               // conversation s.o., refreshing the tree and setting the paths \r
-                               monitor.beginTask("Restoring Taxon Navigator", 1 + mementoWork + 5);\r
-                               monitor.worked(1);\r
-                               \r
-                               conversation = CdmStore.createConversation();\r
-                               monitor.worked(1);\r
-                               conversation.registerForDataStoreChanges(TaxonNavigator.this);\r
-                               monitor.worked(1);\r
-                               TaxonNavigator.this.getCommonViewer().setInput(new Root(conversation));\r
-                               monitor.worked(1);\r
-                               TaxonNavigator.this.getCommonViewer().refresh();\r
-                               monitor.worked(1);\r
-                               \r
-                               \r
-                               \r
-                               if (treePathMementos != null && treePathMementos.length > 0) {\r
-                                       for (IMemento treePathMemento : treePathMementos) {\r
-                                               TreePath treePath = createTreePathFromString(treePathMemento.getID());\r
-                                               if (!monitor.isCanceled() && treePath != null) {\r
-                                                       treePaths.add(treePath);\r
-                                                       monitor.worked(1);\r
-                                               }\r
-                                       }\r
-                               }\r
-                               if (treePaths.size() > 0) {\r
-                                       TaxonNavigator.this.getCommonViewer().setExpandedTreePaths(treePaths.toArray(new TreePath[0]));\r
-                                       monitor.worked(1);\r
-                               }\r
-                               monitor.done();\r
+               int mementoWork = 0;\r
+               Set<TreePath> treePaths = new HashSet<TreePath>();\r
+               IMemento[] treePathMementos = null;\r
+               if (memento != null) {\r
+                       \r
+                       \r
+                       IMemento treePathsMemento = memento.getChild(TREE_PATHS);\r
+                       \r
+                       if (treePathsMemento != null) {\r
+                               treePathMementos = treePathsMemento.getChildren(TREE_PATH);\r
+                               mementoWork = treePathMementos.length;\r
                        }\r
-               };\r
+               }\r
+               // begin the monitor with steps for all tree paths and steps for creating \r
+               // conversation s.o., refreshing the tree and setting the paths \r
+               subProgressMonitor.beginTask("Restoring Taxon Navigator", 1 + mementoWork + 5);\r
+               subProgressMonitor.subTask("");\r
+               subProgressMonitor.worked(1);\r
+               \r
+               conversation = CdmStore.createConversation();\r
+               subProgressMonitor.worked(1);\r
+               conversation.registerForDataStoreChanges(TaxonNavigator.this);\r
+               subProgressMonitor.worked(1);\r
+               TaxonNavigator.this.getCommonViewer().setInput(new Root(conversation));\r
+               subProgressMonitor.worked(1);\r
+               TaxonNavigator.this.getCommonViewer().refresh();\r
+               subProgressMonitor.worked(1);\r
                \r
-               try {\r
-                       NavigationUtil.run(false, true, runnable);\r
-               } catch (InvocationTargetException e) {\r
-                       logger.error("InvocationTargetException when trying to restore navigator", e);\r
-               } catch (InterruptedException e) {\r
-                       logger.error("InterruptedException when trying to restore navigator", e);\r
+               \r
+               \r
+               if (treePathMementos != null && treePathMementos.length > 0) {\r
+                       for (IMemento treePathMemento : treePathMementos) {\r
+                               TreePath treePath = createTreePathFromString(treePathMemento.getID());\r
+                               if (!subProgressMonitor.isCanceled() && treePath != null) {\r
+                                       treePaths.add(treePath);\r
+                                       subProgressMonitor.worked(1);\r
+                               }\r
+                       }\r
+               }\r
+               if (treePaths.size() > 0) {\r
+                       TaxonNavigator.this.getCommonViewer().setExpandedTreePaths(treePaths.toArray(new TreePath[0]));\r
+                       subProgressMonitor.worked(1);\r
                }\r
+               subProgressMonitor.done();\r
        }\r
 \r
        /**\r
index eedb6670f080f2478726ba0a5faba8b30d8180d7..aaf36c73fb77bc0af75a1b6909599618036921cd 100644 (file)
@@ -275,7 +275,7 @@ public class SearchResultView extends ViewPart implements IConversationEnabled,
        }\r
 \r
        @Override\r
-       public boolean onContextEvent(EventType eventType) {\r
+       public boolean onContextEvent(EventType eventType, IProgressMonitor monitor) {\r
                if(eventType.equals(EventType.STOP)){\r
                        NavigationUtil.hideView(this);\r
                }\r
index c8f509ab11c86908644c117398cee791af271cfc..7f903b7ac6e3fc33db4c5013718d210d8b1ed619 100644 (file)
@@ -133,7 +133,7 @@ public class CdmDataSourceRepository{
         */\r
        public static boolean changeDataSource(final ICdmDataSource dataSource) {\r
                saveAsCurrentDatabaseToMemento(dataSource);\r
-               CdmStore.close();\r
+               CdmStore.close(null);\r
                \r
                CdmStore.initialize(dataSource);\r
                \r
index 9604947be9e09d005aa932bd43b78979085217b5..6f6574308d2462357c2a8b14759e415d0cee8fe1 100644 (file)
@@ -43,7 +43,7 @@ public class CloseConnectionHandler extends AbstractHandler {
                
                
                if(confirmed){
-                       CdmStore.close();
+                       CdmStore.close(null);
                }
                
                CdmDataSourceViewPart view = (CdmDataSourceViewPart) StoreUtil.getView(CdmDataSourceViewPart.ID, true);
index d16fc8655811925e8d87749167e1ec46dcd2f80a..8a6e9277e8992d10f23d59cb4e7f2efa74b38c95 100644 (file)
@@ -18,6 +18,9 @@ import java.util.List;
 
 import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jface.action.GroupMarker;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -32,11 +35,12 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.editors.text.EditorsUI;
 import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
 
 import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
@@ -51,17 +55,80 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  */
 public class CdmDataSourceViewPart extends ViewPart implements IContextListener{
        
+       private class DataSourceDecoratorJob extends Job{
+
+               private Display display;
+               private List<ICdmDataSource> dataSources;
+
+               /**
+                * @param name
+                */
+               public DataSourceDecoratorJob(Display display, List<ICdmDataSource> dataSources) {
+                       super("Loading datasources");
+                       this.display = display;
+                       this.dataSources = dataSources;
+               }
+
+               /* (non-Javadoc)
+                * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+                */
+               @Override
+               protected IStatus run(IProgressMonitor monitor) {
+                       try{
+                               monitor.beginTask("Retrieving Metadata for known datasources", dataSources.size());
+                       
+                               final List<CdmMetaDataAwareDataSourceContainer> processedDataSources = new ArrayList<CdmMetaDataAwareDataSourceContainer>();
+                               
+                               for(ICdmDataSource dataSource : dataSources){
+                                       processedDataSources.add(new CdmMetaDataAwareDataSourceContainer(dataSource));
+                                       monitor.worked(1);
+                               }
+                               
+                               Collections.sort(processedDataSources, new Comparator<CdmMetaDataAwareDataSourceContainer>() {
+
+                                       @Override
+                                       public int compare(
+                                                       CdmMetaDataAwareDataSourceContainer o1,
+                                                       CdmMetaDataAwareDataSourceContainer o2) {
+                                               String name1 = o1.getDataSource().getName();
+                                               String name2 = o2.getDataSource().getName();
+                                               return name1.compareTo(name2);
+                                       }
+                               });
+                               
+                               display.asyncExec(new Runnable(){
+
+                                       @Override
+                                       public void run() {
+                                               viewer.setInput(processedDataSources);
+                                       }
+                                       
+                               });
+                               
+                       }finally{
+                               monitor.done();
+                       }
+                       return Status.OK_STATUS;
+               }
+               
+       }
+       
        private static final Logger logger = Logger.getLogger(CdmDataSourceViewPart.class);
        
        public static String ID = "eu.etaxonomy.taxeditor.store.datasource.datasourceView";
        
-       private TableViewer tableViewer;
+       private TableViewer viewer;
+
+       private String partNameCache;
+
+       private IWorkbenchSiteProgressService service;
        
        public CdmDataSourceViewPart(){
        }
        
        @Override
        public void createPartControl(Composite parent) {
+               service = (IWorkbenchSiteProgressService) getSite().getAdapter(IWorkbenchSiteProgressService.class);
                CdmStore.addContextListener(this);
                
                // Create top composite
@@ -71,32 +138,32 @@ public class CdmDataSourceViewPart extends ViewPart implements IContextListener{
                fillLayout.type = SWT.VERTICAL; 
                parent.setLayout(fillLayout);
                
-               List<CdmMetaDataAwareDataSourceContainer> containers = getAllDataSourcesWithMetadata(CdmDataSourceRepository.getAll());
+//             List<CdmMetaDataAwareDataSourceContainer> containers = getAllDataSourcesWithMetadata(CdmDataSourceRepository.getAll());
                
-               tableViewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
+               viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
                                                                                                | SWT.V_SCROLL | SWT.FULL_SELECTION);
-               getSite().setSelectionProvider(tableViewer);
+               getSite().setSelectionProvider(viewer);
                
-               createColumns(tableViewer);
+               createColumns(viewer);
                
-               tableViewer.setContentProvider(new CdmDataSourceContentProvider());
-               tableViewer.setLabelProvider(new CdmDataSourceLabelProvider());
-               tableViewer.setComparator(new ViewerComparator());
+               viewer.setContentProvider(new CdmDataSourceContentProvider());
+               viewer.setLabelProvider(new CdmDataSourceLabelProvider());
+               viewer.setComparator(new ViewerComparator());
+               
+//             viewer.setInput(containers);
                
-               tableViewer.setInput(containers);
-
                
                // register context menu
                MenuManager menuMgr = new MenuManager();
                menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
-               getSite().registerContextMenu(menuMgr, tableViewer);
+               getSite().registerContextMenu(menuMgr, viewer);
 
-               Control control = tableViewer.getControl();
+               Control control = viewer.getControl();
                Menu menu = menuMgr.createContextMenu(control);
                control.setMenu(menu);  
                
                // connect on doubleclick
-               tableViewer.addDoubleClickListener(new IDoubleClickListener() {
+               viewer.addDoubleClickListener(new IDoubleClickListener() {
 
                        public void doubleClick(DoubleClickEvent event) {
                                if (event.getSelection() instanceof StructuredSelection) {
@@ -118,6 +185,7 @@ public class CdmDataSourceViewPart extends ViewPart implements IContextListener{
                        }
                });
                
+               refresh();
        }
 
        
@@ -139,8 +207,7 @@ public class CdmDataSourceViewPart extends ViewPart implements IContextListener{
        }
        
        public void refresh(){
-               tableViewer.setInput(getAllDataSourcesWithMetadata(CdmDataSourceRepository.getAll()));
-               tableViewer.refresh();  
+               service.schedule(new DataSourceDecoratorJob(Display.getCurrent(), CdmDataSourceRepository.getAll()));
        }
 
        @Override
@@ -151,11 +218,11 @@ public class CdmDataSourceViewPart extends ViewPart implements IContextListener{
 
        @Override
        public void setFocus() {
-               tableViewer.getControl().setFocus();
+               viewer.getControl().setFocus();
        }
 
-       public boolean onContextEvent(EventType eventType) {
-               tableViewer.refresh();  
+       public boolean onContextEvent(EventType eventType, IProgressMonitor monitor) {
+               viewer.refresh();       
                return true;
        }
        
@@ -205,4 +272,21 @@ public class CdmDataSourceViewPart extends ViewPart implements IContextListener{
                
                return processedDataSources;
        }
+       
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.part.WorkbenchPart#showBusy(boolean)
+        */
+       @Override
+       public void showBusy(boolean busy) {
+               super.showBusy(busy);
+               viewer.getTable().setEnabled(!busy);
+               if(busy){
+                       partNameCache = getPartName();
+                       setPartName("Loading datasources");
+               }else{
+                       if(partNameCache != null){
+                               setPartName(partNameCache);
+                       }
+               }
+       }
 }
index 360c71acfa5369c610061b42708834979c38b079..3b018b7b529f039f40ab22eced95960d195516af 100644 (file)
@@ -114,4 +114,12 @@ public class CdmMetaDataAwareDataSourceContainer {
        public boolean isRunning() {
                return running;
        }
+       
+       /* (non-Javadoc)
+        * @see java.lang.Object#toString()
+        */
+       @Override
+       public String toString() {
+               return dataSource.getName();
+       }
 }
index 01f17325db9072d08bf5744e14d5d05b2637cee4..aebc45ab737f91c346054e1ebc96b58a1e3a12f7 100644 (file)
@@ -42,6 +42,7 @@ import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
 import org.eclipse.ui.progress.IProgressService;
+import org.eclipse.ui.progress.IWorkbenchSiteProgressService;
 import org.eclipse.ui.themes.ITheme;
 import org.eclipse.ui.themes.IThemeManager;
 
@@ -74,7 +75,7 @@ public abstract class AbstractUtility {
        }
        
        public static IWorkbenchPart getActivePart(){
-               return getActivePage().getActivePart();
+               return getActivePage() != null ? getActivePage().getActivePart() : null;
        }
        
        public static ApplicationWindow getWorkbenchWindow(){
@@ -306,10 +307,10 @@ public abstract class AbstractUtility {
     /**
      * Creates a {@link SubProgressMonitor} if the given {@link IProgressMonitor} is not <code>null</code> and not a {@link NullProgressMonitor}.
         * @param progressMonitor The parent {@link IProgressMonitor} of the {@link SubProgressMonitor} to be created.
-     * @param steps The number of steps this subtask is subdivided into. Must be a positive number and must not be {@link IProgressMonitor#UNKNOWN}.
+     * @param ticks The number of steps this subtask is subdivided into. Must be a positive number and must not be {@link IProgressMonitor#UNKNOWN}.
      * @return The {@link IProgressMonitor}.
      */
-    public static IProgressMonitor getSubProgressMonitor(IProgressMonitor progressMonitor, int steps) {
+    public static IProgressMonitor getSubProgressMonitor(IProgressMonitor progressMonitor, int ticks) {
         if (progressMonitor == null) {
             return new NullProgressMonitor();
         }
@@ -317,7 +318,7 @@ public abstract class AbstractUtility {
             return progressMonitor;
         }
         
-        return new SubProgressMonitor(progressMonitor, steps, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
+        return new SubProgressMonitor(progressMonitor, ticks, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK);
     }
     
        /**
@@ -357,5 +358,9 @@ public abstract class AbstractUtility {
                IWorkbench workbench = PlatformUI.getWorkbench();
                return workbench.getProgressService();
        }
+       
+       public static IWorkbenchSiteProgressService getProgressService2(){
+               return (IWorkbenchSiteProgressService) getService(IWorkbenchSiteProgressService.class);
+       }
 
 }
index c8be32e1a564f681c6424f106e45f9bf8ff1984c..627b051efdff91c532af49650c5fa0721aae3e4d 100644 (file)
@@ -10,6 +10,8 @@
 
 package eu.etaxonomy.taxeditor.model;
 
+import org.eclipse.core.runtime.IProgressMonitor;
+
 
 /**
  * @author n.hoffmann
@@ -24,6 +26,6 @@ public interface IContextListener {
                ABOUT_TO_STOP
        }
        
-       public boolean onContextEvent(EventType eventType);
+       public boolean onContextEvent(EventType eventType, IProgressMonitor monitor);
        
 }
index cafd2be967b7f06190b6074a40a492db6443c492..75fcc27c0009d83fe36b82f7741190cf48dace89 100644 (file)
@@ -126,7 +126,7 @@ public class CdmStore{
                        
                        if(! monitor.isCanceled()){
                                instance = new CdmStore(datasource, dbSchemaValidation, applicationContextBean, new CdmProgressMonitorAdapter(monitor));
-                               notifyContextStart();
+                               notifyContextStart(monitor);
                                logger.info("Application context initialized.");                
                        }else{
                                // Show datasource view if not shown yet
@@ -150,7 +150,7 @@ public class CdmStore{
                        }
                        message += "'" + datasource.getName() + "'";
                        
-                       message = "Establishing connection to" + message + ". \nThis might take  while.";
+                       message = "Connecting to" + message + ".";
                        
                        return message;
                }
@@ -318,10 +318,10 @@ public class CdmStore{
        /**
         * Closes the current application context
         */
-       public static void close(){
-               notifyContextAboutToStop();
+       public static void close(IProgressMonitor monitor){
+               notifyContextAboutToStop(monitor);
                if(isActive() && StoreUtil.closeAll()){
-                       notifyContextStop();
+                       notifyContextStop(monitor);
                        instance.getApplicationController().close();
                        instance.isConnected = false;
                        cdmDatasource = null;
@@ -588,28 +588,28 @@ public class CdmStore{
                contextListeners.remove(listener);
        }
        
-       public static void notifyContextStart() {
+       public static void notifyContextStart(IProgressMonitor monitor) {
                logger.info("Notifying context listeners, that the context has started.");
                
                instance.authenticate();
                
                
                for(Object listener : contextListeners.getListeners()){
-                       ((IContextListener) listener).onContextEvent(EventType.START);
+                       ((IContextListener) listener).onContextEvent(EventType.START, monitor);
                }               
        }
        
-       public static void notifyContextAboutToStop(){
+       public static void notifyContextAboutToStop(IProgressMonitor monitor){
                for(Object listener : contextListeners.getListeners()){
-                       ((IContextListener) listener).onContextEvent(EventType.ABOUT_TO_STOP);
+                       ((IContextListener) listener).onContextEvent(EventType.ABOUT_TO_STOP, monitor);
                }       
        }
        
-       public static void notifyContextStop() {
+       public static void notifyContextStop(IProgressMonitor monitor) {
                logger.warn("Application event occured");
                
                for(Object listener : contextListeners.getListeners()){
-                       ((IContextListener) listener).onContextEvent(EventType.STOP);
+                       ((IContextListener) listener).onContextEvent(EventType.STOP, monitor);
                }               
        }
 
index c95c2cbe49df294ab0922209af0523e58d71c52f..31995a068928ba0a3f19eb5857c8314b0be74bc0 100644 (file)
@@ -13,6 +13,7 @@ package eu.etaxonomy.taxeditor.user.view;
 import java.util.List;
 
 import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.action.GroupMarker;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.ListViewer;
@@ -175,7 +176,8 @@ public class UserManagerView extends ViewPart implements IConversationEnabled, I
                super.dispose();
        }
 
-       public boolean onContextEvent(EventType eventType) {
+       public boolean onContextEvent(EventType eventType, IProgressMonitor monitor) {
+                               
                switch(eventType){
                case START:
                        tableViewer.setInput(getAllUser());