fix #5841: set selection to newly created keynode
authorKatja Luther <k.luther@bgbm.org>
Wed, 23 Nov 2016 14:04:13 +0000 (15:04 +0100)
committerKatja Luther <k.luther@bgbm.org>
Wed, 23 Nov 2016 14:04:13 +0000 (15:04 +0100)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/handler/RemotingCreateChildPolytomousKeyNodeHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/RemotingCreatePolytomousKeyNodeOperation.java

index 2f2575378987ece8a1108cbe79a134f90e4efe27..780d8719074590bbd63a0ca1ca190988efe8d747 100644 (file)
@@ -16,6 +16,7 @@ import java.util.List;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 
+import eu.etaxonomy.cdm.hibernate.HHH_9751_Util;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 
 /**
@@ -74,6 +75,7 @@ public class PolytomousKeyListContentProvider implements
            }
                if (!node.getChildren().isEmpty()) {
                        result.addAll(node.getChildren());
+                       HHH_9751_Util.removeAllNull(result);
                        for (PolytomousKeyNode internalNode : node.getChildren()) {
                                getChildrenBreadthFirst(result, internalNode);
                        }
index 308f925ed485221dc1b61c95b7176470f8b62129..91680a0c85800ab8756e74ec461155494103dadd 100644 (file)
@@ -38,6 +38,7 @@ import org.eclipse.ui.part.EditorPart;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
@@ -261,7 +262,8 @@ public class PolytomousKeyListEditor extends EditorPart implements
 
                PolytomousKey key = ((PolytomousKeyEditorInput) getEditorInput())
                                .getKey();
-
+               key = HibernateProxyHelper.deproxy(key, PolytomousKey.class);
+               key.setRoot(HibernateProxyHelper.deproxy(key.getRoot(), PolytomousKeyNode.class));
                setPartName(key.getTitleCache());
 
                viewer.setInput(getEditorInput());
@@ -330,6 +332,7 @@ public class PolytomousKeyListEditor extends EditorPart implements
        public void changed(Object element) {
         if(element != null) {
             viewer.update(element, null);
+
         }
 
         if (element instanceof PolytomousKeyNode) {
@@ -339,7 +342,9 @@ public class PolytomousKeyListEditor extends EditorPart implements
                 viewer.update(child, null);
             }
         }
+
         viewer.refresh();
+        viewer.setSelection(new StructuredSelection(element));
        }
 
     /* (non-Javadoc)
index c63350eea36c3a4c860ad8f0a1f6b214af254094..4674f28c0b53308655c5fffb1e73a7643540ba3a 100644 (file)
@@ -25,6 +25,11 @@ import eu.etaxonomy.taxeditor.operation.RemotingCdmDefaultOperation;
 public class RemotingCreatePolytomousKeyNodeOperation extends RemotingCdmDefaultOperation {
 
     private final PolytomousKeyNode parentNode;
+    private PolytomousKeyNode childNode;
+
+    public PolytomousKeyNode getChildNode() {
+        return childNode;
+    }
 
     private final static String LABEL = "Create new polytomous key node";
 
@@ -40,7 +45,7 @@ public class RemotingCreatePolytomousKeyNodeOperation extends RemotingCdmDefault
      */
     @Override
     protected CdmBase doSimpleExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
-      PolytomousKeyNode childNode = PolytomousKeyNode.NewInstance();
+      childNode = PolytomousKeyNode.NewInstance();
       parentNode.addChild(childNode);
       return childNode;
     }