ref #5305 Refactored combo elements
authorPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 11 Aug 2016 12:35:41 +0000 (14:35 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Thu, 11 Aug 2016 12:35:41 +0000 (14:35 +0200)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/AbstractComboElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/VocabularyComboElement.java

diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/AbstractComboElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/AbstractComboElement.java
new file mode 100644 (file)
index 0000000..c4623cc
--- /dev/null
@@ -0,0 +1,130 @@
+// $Id$
+/**
+* Copyright (C) 2016 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.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+
+/**
+ * @author pplitzner
+ * @date Aug 11, 2016
+ *
+ */
+public abstract class AbstractComboElement<T> extends
+AbstractCdmFormElement implements SelectionListener,
+IEnableableFormElement, ISelectable,
+DisposeListener {
+
+    protected static final int DEFAULT_VISIBLE_ITEMS = 10;
+
+    protected T selection;
+
+    protected Label label;
+
+    protected final Combo combo;
+
+
+    public AbstractComboElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
+        super(formFactory, formElement);
+
+        label = formFactory.createLabel(getLayoutComposite(), "");
+        addControl(label);
+
+        // create combo
+        ComboViewer viewer = new ComboViewer(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY );
+        combo = viewer.getCombo();
+        addControl(combo);
+        TableWrapData fill_HORIZONTALLY = LayoutConstants.FILL_HORIZONTALLY();
+        combo.setLayoutData(fill_HORIZONTALLY);
+        fill_HORIZONTALLY.maxWidth = 50;
+        combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setBackground(Color color) {
+        if (label != null) {
+            label.setBackground(color);
+        }
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIrrelevant(boolean irrelevant) {
+        String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
+                : Resources.COLOR_COMPOSITE_BACKGROUND;
+
+        Color color = AbstractUtility.getColor(colorId);
+        combo.setBackground(color);
+    }
+
+    public void setVisibleItemCount(int count){
+        combo.setVisibleItemCount(count);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSelected(boolean selected) {
+        setBackground(selected ? SELECTED : getPersistentBackground());
+    }
+
+    public T getSelection() {
+        return selection;
+    }
+
+    public void addSelectionListener(SelectionListener listener) {
+        combo.addSelectionListener(listener);
+    }
+
+    public void removeSelectionListener(SelectionListener listener) {
+        combo.removeSelectionListener(listener);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void widgetDisposed(DisposeEvent e) {
+        PreferencesUtil.getPreferenceStore().removePropertyChangeListener(this);
+    }
+
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return combo.isEnabled();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setEnabled(boolean enabled) {
+        combo.setEnabled(enabled);
+    }
+
+    public abstract void setSelection(T selection);
+}
index 363629cc281822a8bd272174320d508b49d3b8ac..cf746ebe184699f7bc61c580ebb3f97d170ff5e3 100644 (file)
@@ -17,12 +17,7 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map.Entry;
 
-import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.model.common.IEnumTerm;
 import eu.etaxonomy.cdm.model.common.OriginalSourceType;
@@ -30,35 +25,24 @@ import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
-import eu.etaxonomy.taxeditor.preference.Resources;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
-import eu.etaxonomy.taxeditor.ui.element.ISelectable;
-import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
- * <p>
- * Abstract AbstractEnumComboElement class.
- * </p>
- *
  * @author n.hoffmann
  * @created Mar 16, 2010
  * @version 1.0
  */
 public class EnumComboElement<T extends IEnumTerm<T>> extends
-               AbstractCdmFormElement implements SelectionListener,
-               IEnableableFormElement, ISelectable {
+               AbstractComboElement<T>  {
 
        //TODO RL
        public void setVisible(boolean b){
                combo.setVisible(b);
        }
 
-       
+
        private static CdmEnumDataHolder[] cdmEnumDataHolders = {
                new CdmEnumDataHolder<NomenclaturalCode>(){
 
@@ -135,45 +119,15 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
 
        };
 
-       private static final int DEFAULT_VISIBLE_ITEMS = 10;
-
-       protected T selection;
-
        protected List<T> elementTypeList = new ArrayList<T>();
 
-       private final Label label;
-       protected Combo combo;
-
        private final Class<T> enumType;
 
-       /**
-        * <p>
-        * Constructor for AbstractEnumComboElement.
-        * </p>
-        *
-        * @param formFactory
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-        *            object.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param <T>
-        *            a T object.
-        */
        public EnumComboElement(CdmFormFactory formFactory,
                        ICdmFormElement parentElement, Class<T> enumType, int style) {
                super(formFactory, parentElement);
                this.enumType = enumType;
-               label = formFactory.createLabel(getLayoutComposite(), getDefaultLabelString());
-               addControl(label);
-
-               // create combo
-               combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY);
-               addControl(combo);
-               combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
-               setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
+               label.setText(getDefaultLabelString());
 
                populateTypes();
 
@@ -193,11 +147,6 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
                return "No Label";
        }
 
-       /**
-        * <p>
-        * populateTypes
-        * </p>
-        */
     private void populateTypes(){
         Collection<T> elementsForClass = getElementsForClass(enumType);
         // special hierarchical order for specimens
@@ -217,81 +166,11 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
         }
        }
 
-       /**
-        * <p>
-        * Setter for the field <code>selection</code>.
-        * </p>
-        *
-        * @param selection
-        *            the selection to set
-        */
-       public void setSelection(T selection) {
+       @Override
+    public void setSelection(T selection) {
                this.selection = selection;
                combo.select(elementTypeList.indexOf(selection));
        }
-
-       /**
-        * <p>
-        * addSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void addSelectionListener(SelectionListener listener) {
-               combo.addSelectionListener(listener);
-       }
-
-       /**
-        * <p>
-        * removeSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void removeSelectionListener(SelectionListener listener) {
-               combo.removeSelectionListener(listener);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void setSelected(boolean selected) {
-               setBackground(selected ? SELECTED : getPersistentBackground());
-       }
-
-       /**
-        * <p>
-        * Getter for the field <code>selection</code>.
-        * </p>
-        *
-        * @return the selection
-        */
-       public T getSelection() {
-               return selection;
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void setEnabled(boolean enabled) {
-               combo.setEnabled(enabled);
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled()
-        */
-       @Override
-       public boolean isEnabled() {
-           return combo.isEnabled();
-       }
-
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-        * .events.SelectionEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public void widgetSelected(SelectionEvent e) {
@@ -299,31 +178,6 @@ public class EnumComboElement<T extends IEnumTerm<T>> extends
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
        }
 
-       /** {@inheritDoc} */
-       @Override
-    public void setIrrelevant(boolean irrelevant) {
-               String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
-                               : Resources.COLOR_COMPOSITE_BACKGROUND;
-
-               Color color = StoreUtil.getColor(colorId);
-               combo.setBackground(color);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void setBackground(Color color) {
-               label.setBackground(color);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void widgetDefaultSelected(SelectionEvent e) {
-       }
-
-       public void setVisibleItemCount(int visibleItems){
-               combo.setVisibleItemCount(visibleItems);
-       }
-
        private Collection<T> getElementsForClass(Class<T> clazz){
                CdmEnumDataHolder<T> dataHolder = getCdmEnumDataHolderForClass(clazz);
                if (dataHolder != null) {
index e2da02ba34aa27074a8eec4011c0cf49dec0ef83..65ba7e0192e100e2418a08c65901f691239e740c 100644 (file)
@@ -10,17 +10,9 @@ import java.util.Comparator;
 import java.util.List;
 
 import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ComboViewer;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.forms.widgets.TableWrapData;
 
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.TermType;
@@ -28,42 +20,24 @@ import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
-import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.store.TermManager;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
-import eu.etaxonomy.taxeditor.ui.element.ISelectable;
-import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
- * <p>
- * Abstract AbstractTermComboElement class.
- * </p>
- *
  * @author n.hoffmann
  * @created Nov 5, 2009
  * @version 1.0
  * @param <T>
  */
 public class TermComboElement<T extends DefinedTermBase>
-               extends AbstractCdmFormElement implements SelectionListener,
-               DisposeListener, IEnableableFormElement, ISelectable {
-
-       private static final int DEFAULT_VISIBLE_ITEMS = 10;
-
-       private T selection;
+               extends AbstractComboElement<T> {
 
        private T emptyElement;
        private static String EMPTY_ELEMENT_LABEL = "";
 
-       protected Label label;
-       private final Combo combo;
-
        private ArrayList<T> terms;
 
        private Comparator<T> termComparator;
@@ -105,20 +79,9 @@ public class TermComboElement<T extends DefinedTermBase>
         this.addEmptyElement = addEmptyElement;
 
         if (labelString != null) {
-            label = formFactory.createLabel(getLayoutComposite(), labelString);
-            addControl(label);
+            label.setText(labelString);
         }
 
-        // create combo
-        ComboViewer viewer = new ComboViewer(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY );
-        combo = viewer.getCombo();
-        addControl(combo);
-        TableWrapData fill_HORIZONTALLY = LayoutConstants.FILL_HORIZONTALLY();
-        combo.setLayoutData(fill_HORIZONTALLY);
-        fill_HORIZONTALLY.maxWidth = 50;
-        combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
-
-
         if(termType!=null){
             //TODO try to remove generic T and avoid classes to be used
             populateTerms((List<T>) getTermManager().getPreferredTerms(termType));
@@ -139,17 +102,6 @@ public class TermComboElement<T extends DefinedTermBase>
         }
        }
 
-       /**
-        * <p>
-        * Getter for the field <code>selection</code>.
-        * </p>
-        *
-        * @return a T object.
-        */
-       public T getSelection() {
-               return selection;
-       }
-
        /**
         * <p>Sets the selection of the combo to the given T object.</p>
         * <p>Passing <code>null</code> to this method will set the selection to
@@ -158,7 +110,8 @@ public class TermComboElement<T extends DefinedTermBase>
         * @param selection
         *            a T object or <code>null</code> to clear the selection
         */
-       public void setSelection(T selection) {
+       @Override
+    public void setSelection(T selection) {
                this.selection = selection;
 
                Listener[] listeners = combo.getListeners(SWT.Selection);
@@ -243,31 +196,6 @@ public class TermComboElement<T extends DefinedTermBase>
                combo.select(index);
        }
 
-       /*
-        * (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
-        */
-       /** {@inheritDoc} */
-       @Override
-    public void setEnabled(boolean enabled) {
-               combo.setEnabled(enabled);
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled()
-        */
-       @Override
-       public boolean isEnabled() {
-           return combo.isEnabled();
-       }
-
-       /**
-        * <p>
-        * preferredTerms
-        * </p>
-        *
-        * @return a {@link java.util.List} object.
-        */
        protected List<T> getPreferredTerms(){
            List<T> preferredTerms = new ArrayList<T>();
                if (customPreferredTerms != null){
@@ -326,37 +254,6 @@ public class TermComboElement<T extends DefinedTermBase>
                populateTerms(preferredTerms);
        }
 
-       /**
-        * <p>
-        * addSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void addSelectionListener(SelectionListener listener) {
-               combo.addSelectionListener(listener);
-       }
-
-       /**
-        * <p>
-        * removeSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void removeSelectionListener(SelectionListener listener) {
-               combo.removeSelectionListener(listener);
-       }
-
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-        * .events.SelectionEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public void widgetSelected(SelectionEvent e) {
@@ -364,12 +261,6 @@ public class TermComboElement<T extends DefinedTermBase>
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
        }
 
-       /*
-        * (non-Javadoc)
-        *
-        * @see java.beans.PropertyChangeListener#propertyChange(java.beans.
-        * PropertyChangeEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public void propertyChange(PropertyChangeEvent event) {
@@ -381,65 +272,14 @@ public class TermComboElement<T extends DefinedTermBase>
                }
        }
 
-       /** {@inheritDoc} */
-       @Override
-    public void setSelected(boolean selected) {
-               setBackground(selected ? SELECTED : getPersistentBackground());
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void widgetDisposed(DisposeEvent e) {
-               PreferencesUtil.getPreferenceStore().removePropertyChangeListener(this);
-       }
-
-       // not used
-       /** {@inheritDoc} */
-       @Override
-    public void widgetDefaultSelected(SelectionEvent e) {
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void setIrrelevant(boolean irrelevant) {
-               String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
-                               : Resources.COLOR_COMPOSITE_BACKGROUND;
-
-               Color color = StoreUtil.getColor(colorId);
-               combo.setBackground(color);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void setBackground(Color color) {
-               if (label != null) {
-            label.setBackground(color);
-        }
-       }
-
-       /**
-        *
-        */
        protected TermManager getTermManager() {
                return CdmStore.getTermManager();
        }
 
-       /**
-        *
-        * @return
-        */
        public int getVisibleItemCount(){
                return combo.getVisibleItemCount();
        }
 
-       /**
-        *
-        * @param count
-        */
-       public void setVisibleItemCount(int count){
-               combo.setVisibleItemCount(count);
-       }
-
        /**
         * <p>A {@link List} of term objects may be passed to this combo box. In this case, the default behaviour
         * of displaying the preferred terms for the T type will be overridden and the combo will only display the
index bc920ea69b6501b01c33444eb8b5e4d1ea8e4401..7ffafdee96f9deea7d0b0dd52c61d301b83716ca 100644 (file)
@@ -10,13 +10,7 @@ import java.util.List;
 
 import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
@@ -25,42 +19,24 @@ import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
-import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.store.TermManager;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
-import eu.etaxonomy.taxeditor.ui.element.ISelectable;
-import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
- * <p>
- * Abstract AbstractTermComboElement class.
- * </p>
- *
  * @author n.hoffmann
  * @created Nov 5, 2009
  * @version 1.0
  * @param <VOC>
  */
 public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC extends TermVocabulary<TERM>>
-               extends AbstractCdmFormElement implements SelectionListener,
-               DisposeListener, IEnableableFormElement, ISelectable {
-
-       private static final int DEFAULT_VISIBLE_ITEMS = 10;
-
-       private VOC selection;
+               extends AbstractComboElement<VOC> {
 
        private VOC emptyElement;
        private static String EMPTY_ELEMENT_LABEL = "";
 
-       protected Label label;
-       private final Combo combo;
-
        private ArrayList<VOC> terms;
 
        private Comparator<VOC> vocComparator;
@@ -74,17 +50,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
 
         this.termType = termType;
 
-        if (labelString != null) {
-            label = formFactory.createLabel(getLayoutComposite(), labelString);
-            addControl(label);
-        }
-
-        // create combo
-        combo = new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY );//FIXME: removed this parameter seems break windows version: | style
-        addControl(combo);
-        combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
-        combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
-
         populateTerms(getVocabularies());
 
         combo.addSelectionListener(this);
@@ -96,17 +61,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
         }
        }
 
-       /**
-        * <p>
-        * Getter for the field <code>selection</code>.
-        * </p>
-        *
-        * @return a T object.
-        */
-       public VOC getSelection() {
-               return selection;
-       }
-
        /**
         * <p>Sets the selection of the combo to the given T object.</p>
         * <p>Passing <code>null</code> to this method will set the selection to
@@ -115,7 +69,8 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
         * @param selection
         *            a T object or <code>null</code> to clear the selection
         */
-       public void setSelection(VOC selection) {
+       @Override
+    public void setSelection(VOC selection) {
                this.selection = selection;
 
                this.selection = selection;
@@ -200,31 +155,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
                combo.select(index);
        }
 
-       /*
-        * (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
-        */
-       /** {@inheritDoc} */
-       @Override
-    public void setEnabled(boolean enabled) {
-               combo.setEnabled(enabled);
-       }
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled()
-        */
-       @Override
-       public boolean isEnabled() {
-           return combo.isEnabled();
-       }
-
-       /**
-        * <p>
-        * preferredTerms
-        * </p>
-        *
-        * @return a {@link java.util.List} object.
-        */
        protected List<VOC> getVocabularies(){
            List<TermVocabulary<TERM>> list = CdmStore.getService(IVocabularyService.class).<TERM>findByTermType(termType);
                return (List<VOC>) list;
@@ -246,11 +176,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
                }
        }
 
-       /**
-        *
-        *
-        * @param term
-        */
        private void createTermNotInPreferredTerms(VOC term) {
                List<VOC> preferredTerms = getVocabularies();
 
@@ -259,37 +184,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
                populateTerms(preferredTerms);
        }
 
-       /**
-        * <p>
-        * addSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void addSelectionListener(SelectionListener listener) {
-               combo.addSelectionListener(listener);
-       }
-
-       /**
-        * <p>
-        * removeSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void removeSelectionListener(SelectionListener listener) {
-               combo.removeSelectionListener(listener);
-       }
-
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-        * .events.SelectionEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public void widgetSelected(SelectionEvent e) {
@@ -297,12 +191,6 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
        }
 
-       /*
-        * (non-Javadoc)
-        *
-        * @see java.beans.PropertyChangeListener#propertyChange(java.beans.
-        * PropertyChangeEvent)
-        */
        /** {@inheritDoc} */
        @Override
     public void propertyChange(PropertyChangeEvent event) {
@@ -314,65 +202,14 @@ public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC exte
                }
        }
 
-       /** {@inheritDoc} */
-       @Override
-    public void setSelected(boolean selected) {
-               setBackground(selected ? SELECTED : getPersistentBackground());
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void widgetDisposed(DisposeEvent e) {
-               PreferencesUtil.getPreferenceStore().removePropertyChangeListener(this);
-       }
-
-       // not used
-       /** {@inheritDoc} */
-       @Override
-    public void widgetDefaultSelected(SelectionEvent e) {
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void setIrrelevant(boolean irrelevant) {
-               String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT
-                               : Resources.COLOR_COMPOSITE_BACKGROUND;
-
-               Color color = StoreUtil.getColor(colorId);
-               combo.setBackground(color);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void setBackground(Color color) {
-               if (label != null) {
-            label.setBackground(color);
-        }
-       }
-
-       /**
-        *
-        */
        protected TermManager getTermManager() {
                return CdmStore.getTermManager();
        }
 
-       /**
-        *
-        * @return
-        */
        public int getVisibleItemCount(){
                return combo.getVisibleItemCount();
        }
 
-       /**
-        *
-        * @param count
-        */
-       public void setVisibleItemCount(int count){
-               combo.setVisibleItemCount(count);
-       }
-
     public void removeEmptyElement(){
         terms.remove(emptyElement);
         combo.remove(EMPTY_ELEMENT_LABEL);