ref #7095 Implement generic abstract combo class
authorPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 11 Apr 2018 05:48:12 +0000 (07:48 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Wed, 11 Apr 2018 05:48:19 +0000 (07:48 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/WorkingSetComposite.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/AbstractComboComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermUuidComboViewer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/taxon/TaxonNodeCombo.java

index 56301e2c99d16a4598be8e37364cb7e510b07157..c95a89b21f23251891d3a04aa45d4e3f0725be95 100644 (file)
@@ -127,10 +127,10 @@ public class WorkingSetComposite extends Composite {
     }
 
     public void setRankMin(Rank min) {
-        comboRankMin.setTerm(min);
+        comboRankMin.setElement(min);
     }
     public void setRankMax(Rank max) {
-        comboRankMax.setTerm(max);
+        comboRankMax.setElement(max);
     }
 
     public FeatureTreeEditorComposite getFeatureTreeEditorComposite() {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/AbstractComboComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/AbstractComboComposite.java
new file mode 100644 (file)
index 0000000..6454c16
--- /dev/null
@@ -0,0 +1,68 @@
+/**
+* Copyright (C) 2017 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.ui.combo;
+
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ *
+ * Abstract generic combo.
+ *
+ * @author pplitzner
+ * @since Apr 10, 2018
+ *
+ * @param <T> the type of the elements to show in the combo
+ */
+public abstract class AbstractComboComposite<T> extends Composite{
+
+    private ComboViewer viewer;
+
+    public AbstractComboComposite(Composite parent, int style){
+        super(parent, style);
+        setLayout(new FillLayout());
+        viewer = new ComboViewer(new CCombo(this, SWT.READ_ONLY | SWT.SINGLE));
+        viewer.setContentProvider(getContentProvider());
+        viewer.setLabelProvider(getLabelProvider());
+    }
+
+    public void setInput(Object input){
+        viewer.setInput(input);
+    }
+
+    public T getSelection(){
+        IStructuredSelection structuredSelection = viewer.getStructuredSelection();
+        if(structuredSelection!=null && !structuredSelection.isEmpty()){
+            return (T) structuredSelection.getFirstElement();
+        }
+        return null;
+    }
+
+    public void setElement(T element){
+        int index = viewer.getCCombo().indexOf(getElementLabel(element));
+        viewer.getCCombo().select(index);
+    }
+
+
+    public void addSelectionChangedListener(ISelectionChangedListener listener){
+        viewer.addSelectionChangedListener(listener);
+    }
+
+    public abstract String getElementLabel(T element);
+    public abstract IStructuredContentProvider getContentProvider();
+    public abstract ILabelProvider getLabelProvider();
+
+}
index 425ca61a7bd6d337b121fc18e44637386c022b81..e1e09d28d4cfbdb083969483afe49e4c9b4de38d 100644 (file)
@@ -9,8 +9,8 @@
 package eu.etaxonomy.taxeditor.ui.combo;
 
 import org.eclipse.jface.viewers.ComboViewer;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CCombo;
 import org.eclipse.swt.layout.FillLayout;
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.model.common.DefinedTermBase;
  * @since Nov 24, 2017
  *
  */
-public class TermUuidComboViewer extends Composite{
+public class TermUuidComboViewer extends AbstractComboComposite<DefinedTermBase>{
 
     private ComboViewer viewer;
 
@@ -35,25 +35,19 @@ public class TermUuidComboViewer extends Composite{
         viewer.setLabelProvider(new TermUuidLabelProvider());
     }
 
-    public void setInput(Object input){
-        viewer.setInput(input);
+    @Override
+    public String getElementLabel(DefinedTermBase element) {
+        return element.getLabel();
     }
 
-    public DefinedTermBase getSelection(){
-        IStructuredSelection structuredSelection = viewer.getStructuredSelection();
-        if(structuredSelection!=null && !structuredSelection.isEmpty()){
-            return (DefinedTermBase) structuredSelection.getFirstElement();
-        }
-        return null;
+    @Override
+    public IStructuredContentProvider getContentProvider() {
+        return new TermUuidContentProvider();
     }
 
-    public void setTerm(DefinedTermBase term){
-        int index = viewer.getCCombo().indexOf(term.getLabel());
-        viewer.getCCombo().select(index);
-    }
-
-    public void addSelectionChangedListener(ISelectionChangedListener listener){
-        viewer.addSelectionChangedListener(listener);
+    @Override
+    public ILabelProvider getLabelProvider() {
+        return new TermUuidLabelProvider();
     }
 
 }
index afb34038937c49be6268fb6a512853e5d18382d8..89d33520c079b2f9b972dbf89c17f4bb1148c40a 100644 (file)
@@ -9,14 +9,15 @@
 package eu.etaxonomy.taxeditor.ui.combo.taxon;
 
 import org.eclipse.jface.viewers.ComboViewer;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CCombo;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.ui.combo.AbstractComboComposite;
 
 /**
  *
@@ -24,7 +25,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
  * @since Apr 10, 2018
  *
  */
-public class TaxonNodeCombo extends Composite{
+public class TaxonNodeCombo extends AbstractComboComposite<TaxonNode>{
 
     private ComboViewer viewer;
 
@@ -36,25 +37,19 @@ public class TaxonNodeCombo extends Composite{
         viewer.setLabelProvider(new TaxonNodeComboLabelProvider());
     }
 
-    public void setInput(Object input){
-        viewer.setInput(input);
+    @Override
+    public String getElementLabel(TaxonNode element) {
+        return element.getTaxon().getTitleCache();
     }
 
-    public TaxonNode getSelection(){
-        IStructuredSelection structuredSelection = viewer.getStructuredSelection();
-        if(structuredSelection!=null && !structuredSelection.isEmpty()){
-            return (TaxonNode) structuredSelection.getFirstElement();
-        }
-        return null;
+    @Override
+    public IStructuredContentProvider getContentProvider() {
+        return new TaxonNodeComboContentProvider();
     }
 
-    public void setElement(TaxonNode element){
-        int index = viewer.getCCombo().indexOf(element.getTaxon().getTitleCache());
-        viewer.getCCombo().select(index);
-    }
-
-    public void addSelectionChangedListener(ISelectionChangedListener listener){
-        viewer.addSelectionChangedListener(listener);
+    @Override
+    public ILabelProvider getLabelProvider() {
+        return new TaxonNodeComboLabelProvider();
     }
 
 }