fixing #3101 (refresh tree navigator after switching user)
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / TaxonNavigator.java
index 5483e7ab77bb56622e624ca600b0a4dfd5fd1f18..7b9adddc422827062b0f7975877e64f1a6911674 100644 (file)
@@ -13,6 +13,8 @@ package eu.etaxonomy.taxeditor.navigation.navigator;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Observable;
+import java.util.Observer;
 import java.util.Set;
 import java.util.UUID;
 
@@ -39,6 +41,7 @@ import eu.etaxonomy.taxeditor.model.IDataChangeBehavior;
 import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.LoginManager;
 
 /**
  * Taxonomic tree implementation using Common Navigator Framework.
@@ -49,7 +52,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @version 1.0
  */
 public class TaxonNavigator extends CommonNavigator implements
-               IPostOperationEnabled, IConversationEnabled {
+               IPostOperationEnabled, IConversationEnabled, Observer {
 
        /**
         * Constant
@@ -109,13 +112,16 @@ public class TaxonNavigator extends CommonNavigator implements
                        conversation = CdmStore.createConversation();
                        conversation.registerForDataStoreChanges(TaxonNavigator.this);
                }
+               CdmStore.getLoginManager().addObserver(this);
        }
 
        /**
         * Refresh this navigators viewer
         */
        public void refresh() {
-               getConversationHolder().bind();
+               if(getConversationHolder() != null){
+                       getConversationHolder().bind();                 
+               }
                getCommonViewer().refresh();
        }
 
@@ -434,4 +440,16 @@ public class TaxonNavigator extends CommonNavigator implements
                        }
                }
        }
+
+
+       /* (non-Javadoc)
+        * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
+        */
+       @Override
+       public void update(Observable o, Object arg) {
+               if(o instanceof LoginManager){
+                       refresh();
+               }
+               
+       }
 }