- filtered vocabularies by term type (#4448)
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 27 Apr 2015 14:36:24 +0000 (14:36 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 27 Apr 2015 14:36:24 +0000 (14:36 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/VocabularyComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java

index 6ee853a8c18e2dbff10c544b493f00471fc9b82c..9520de1b44ba894c8770d6b85df47df3aed35f99 100644 (file)
@@ -21,6 +21,7 @@ import org.eclipse.swt.widgets.Listener;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+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;
@@ -46,7 +47,7 @@ import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
  * @version 1.0
  * @param <VOC>
  */
-public class VocabularyComboElement<VOC extends TermVocabulary<DefinedTermBase>>
+public class VocabularyComboElement<TERM extends DefinedTermBase<TERM>, VOC extends TermVocabulary<TERM>>
                extends AbstractCdmFormElement implements SelectionListener,
                DisposeListener, IEnableableFormElement, ISelectable {
 
@@ -64,19 +65,14 @@ public class VocabularyComboElement<VOC extends TermVocabulary<DefinedTermBase>>
 
        private Comparator<VOC> vocComparator;
 
-       private final Class<VOC> vocClass;
+    private final TermType termType;
 
        public VocabularyComboElement(CdmFormFactory formFactory,
-               ICdmFormElement parentElement, Class<VOC> termClass, String labelString, VOC selection,
+               ICdmFormElement parentElement, TermType termType, String labelString, VOC selection,
                int style) {
         super(formFactory, parentElement);
 
-        if(termClass!=null){
-            this.vocClass = termClass;
-        }
-        else{
-            this.vocClass =  (Class<VOC>) TermVocabulary.class;
-        }
+        this.termType = termType;
 
         if (labelString != null) {
             label = formFactory.createLabel(getLayoutComposite(), labelString);
@@ -89,9 +85,7 @@ public class VocabularyComboElement<VOC extends TermVocabulary<DefinedTermBase>>
         combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
         combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
 
-        if(this.vocClass!=null){
-            populateTerms(getVocabularies());
-        }
+        populateTerms(getVocabularies());
 
         combo.addSelectionListener(this);
         combo.addDisposeListener(this);
@@ -232,7 +226,8 @@ public class VocabularyComboElement<VOC extends TermVocabulary<DefinedTermBase>>
         * @return a {@link java.util.List} object.
         */
        protected List<VOC> getVocabularies(){
-               return CdmStore.getService(IVocabularyService.class).list(vocClass, null, null, null, null);
+           List<TermVocabulary<TERM>> list = CdmStore.getService(IVocabularyService.class).<TERM>findByTermType(termType);
+               return (List<VOC>) list;
        }
 
        /**
index 59fdab6503909d52546a1c80ccae2ee050d629ef..0ec1e7d2b8a032ea9264b094baac5a0e4b8fcef0 100644 (file)
@@ -102,6 +102,7 @@ import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement;
 import eu.etaxonomy.taxeditor.ui.element.MinMaxTextSection.UnitType;
 import eu.etaxonomy.taxeditor.ui.mvc.element.DateElement;
 import eu.etaxonomy.taxeditor.ui.openurl.IOpenUrlEnabled;
@@ -891,6 +892,14 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+       public <TERM extends DefinedTermBase<TERM>, VOC extends TermVocabulary<TERM>> VocabularyComboElement<TERM, VOC> createVocabularyComboElement(
+               TermType termType, String label, VOC selection, ICdmFormElement parentElement, int style) {
+           VocabularyComboElement<TERM, VOC> element = new VocabularyComboElement<TERM, VOC>(this, parentElement, termType, label, selection, style);
+           adapt(element);
+           parentElement.addElement(element);
+           return element;
+       }
+
     /**
      * <p>
      * createBrowserElement