ref #7086 Add default selection listener to feature tree composite
authorPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 30 Nov 2017 13:03:47 +0000 (14:03 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 30 Nov 2017 13:03:47 +0000 (14:03 +0100)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditorComposite.java

index be610a1651dc25c4746befbba35e1b40160745b4..ceeab227d2ce4673e07c6094859eec63fbc29ca1 100644 (file)
@@ -16,12 +16,15 @@ import org.eclipse.swt.dnd.DragSourceListener;
 import org.eclipse.swt.dnd.DropTargetListener;
 import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.swt.widgets.Tree;
 
@@ -32,6 +35,7 @@ import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
 import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.FeatureTreeSelectionDialog;
 
 /**
  * @author pplitzner
@@ -94,9 +98,26 @@ public class FeatureTreeEditorComposite extends Composite{
             viewer.addDropSupport(ops, transfers, dropTargetListener);
         }
 
-        viewer.addSelectionChangedListener(viewerSelectionChangedListener);
+        if(viewerSelectionChangedListener!=null){
+            viewer.addSelectionChangedListener(viewerSelectionChangedListener);
+        }
 
-        btnOpenFeatureTree.addSelectionListener(openFeatureTreeSelectionListener);
+        //add specific selection listener
+        if(openFeatureTreeSelectionListener!=null){
+            btnOpenFeatureTree.addSelectionListener(openFeatureTreeSelectionListener);
+        }
+        //add default selection listener
+        btnOpenFeatureTree.addSelectionListener(new SelectionAdapter(){
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                FeatureTree tree = FeatureTreeSelectionDialog.select(getDisplay().getActiveShell(),
+                        null);
+                if(tree!=null){
+                    setSelectedTree(tree, null);
+                    getText_title().setEnabled(false);
+                }
+            }
+        });
     }
 
     public void setSelectedTree(FeatureTree featureTree, ModifyListener modifyListener) {
@@ -104,9 +125,14 @@ public class FeatureTreeEditorComposite extends Composite{
 
         getViewer().setInput(featureTree);
 
-        getText_title().removeModifyListener(modifyListener);
+        Listener[] listeners = getText_title().getListeners(SWT.Modify);
+        for (Listener listener : listeners) {
+            getText_title().removeListener(SWT.Modify, listener);
+        }
         getText_title().setText(featureTree.getTitleCache());
-        getText_title().addModifyListener(modifyListener);
+        for (Listener listener : listeners) {
+            getText_title().addListener(SWT.Modify, listener);
+        }
         getText_title().setEnabled(true);
         text_title.setEnabled(true);
     }