- fixed NPE (#4448)
authorPatric Plitzner <p.plitzner@bgbm.org>
Tue, 26 May 2015 09:30:38 +0000 (09:30 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Tue, 26 May 2015 09:30:38 +0000 (09:30 +0000)
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/element/CdmFormFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java

index 38f1fea81b332f054d072085ff5ca243c296bffd..14336ea794cc628fa30c21ba6b1b4caf1fbf268c 100644 (file)
@@ -69,26 +69,28 @@ public class TermComboElement<T extends DefinedTermBase>
 
        private List<T> customPreferredTerms;
 
+       private boolean addEmptyElement;
+
        public TermComboElement(CdmFormFactory formFactory,
-                       ICdmFormElement parentElement, TermType termType, String labelString, T selection,
+                       ICdmFormElement parentElement, TermType termType, String labelString, T selection, boolean addEmptyElement,
                        int style) {
-               this(formFactory, parentElement, null, termType, null, labelString, selection, style);
+               this(formFactory, parentElement, null, termType, null, labelString, selection, addEmptyElement, style);
        }
 
        public TermComboElement(CdmFormFactory formFactory,
-               ICdmFormElement parentElement, TermVocabulary<?> termVocabulary, String labelString, T selection,
+               ICdmFormElement parentElement, TermVocabulary<?> termVocabulary, String labelString, T selection, boolean addEmptyElement,
                int style) {
-           this(formFactory, parentElement, null, null, termVocabulary, labelString, selection, style);
+           this(formFactory, parentElement, null, null, termVocabulary, labelString, selection, addEmptyElement, style);
        }
 
     public TermComboElement(CdmFormFactory formFactory,
-            ICdmFormElement parentElement, Class<T> termClass, String labelString, T selection,
+            ICdmFormElement parentElement, Class<T> termClass, String labelString, T selection, boolean addEmptyElement,
             int style) {
-        this(formFactory, parentElement, termClass, null, null, labelString, selection, style);
+        this(formFactory, parentElement, termClass, null, null, labelString, selection, addEmptyElement, style);
     }
 
        private TermComboElement(CdmFormFactory formFactory,
-               ICdmFormElement parentElement, Class<T> termClass, TermType termType, TermVocabulary<?> termVocabulary, String labelString, T selection,
+               ICdmFormElement parentElement, Class<T> termClass, TermType termType, TermVocabulary<?> termVocabulary, String labelString, T selection, boolean addEmptyElement,
                int style) {
         super(formFactory, parentElement);
 
@@ -98,6 +100,7 @@ public class TermComboElement<T extends DefinedTermBase>
         else{
             this.termClass =  (Class<T>) DefinedTerm.class;
         }
+        this.addEmptyElement = addEmptyElement;
 
         if (labelString != null) {
             label = formFactory.createLabel(getLayoutComposite(), labelString);
@@ -192,9 +195,11 @@ public class TermComboElement<T extends DefinedTermBase>
                int i = 1;
                int index = 0;
 
-               // Add an empty element for when nothing was selected yet
-               combo.add(EMPTY_ELEMENT_LABEL);
-               terms.add(emptyElement);
+               if(addEmptyElement){
+                   // Add an empty element for when nothing was selected yet
+                   combo.add(EMPTY_ELEMENT_LABEL);
+                   terms.add(emptyElement);
+               }
 
                if (termComparator != null) {
                        Collections.sort(preferredTerms, termComparator);
index 4ee7621855b16adfed95c108413bb2c80ee35872..1eed12f3681de56ffb2efc588c061935483c5290 100644 (file)
@@ -773,105 +773,64 @@ public class CdmFormFactory extends FormToolkit {
         parentElement.addElement(element);
         return element;
     }
-
     /**
-     * <p>
-     * createTermComboElement
-     * </p>
-     *
      * @deprecated Use {@link #createDefinedTermComboElement(TermType, ICdmFormElement, String, DefinedTermBase, int)} instead
-     * @param termComboType
-     *            a
-     *            {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.TermComboType}
-     *            object.
-     * @param parentElement
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-     *            object.
-     * @param labelString
-     *            a {@link java.lang.String} object.
-     * @param selection
-     *            a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase}
-     *            object.
-     * @param style
-     *            a int.
-     * @return a {@link eu.etaxonomy.taxeditor.ui.combo.TermComboElement}
-     *         object.
      */
     @Deprecated
     public <T extends DefinedTermBase> TermComboElement<T> createTermComboElement(Class<T> termComboType,
             ICdmFormElement parentElement, String labelString, T selection, int style) {
         TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termComboType, labelString,
-                selection, style);
+                selection, true,  style);
         adapt(element);
         parentElement.addElement(element);
         return element;
     }
 
-       /**
-        * <p>
-        * createTermComboElement
-        * </p>
-        *
-        * @param termComboType
-        *            a
-        *            {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.TermComboType}
-        *            object.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param selection
-        *            a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase}
-        *            object.
-        * @param style
-        *            a int.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.combo.TermComboElement}
-        *         object.
-        */
+    public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
+            TermType termType,
+            ICdmFormElement parentElement,
+            String labelString,
+            T selection,
+            int style) {
+        TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termType, labelString, selection, true, style);
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
+    public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
                        TermType termType,
                        ICdmFormElement parentElement,
                        String labelString,
                        T selection,
+                       boolean addEmptyElement,
                        int style) {
-               TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termType, labelString, selection, style);
+               TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termType, labelString, selection, addEmptyElement, style);
                adapt(element);
                parentElement.addElement(element);
                return element;
        }
 
-       /**
-        * <p>
-        * createTermComboElement
-        * </p>
-        *
-        * @param termComboType
-        *            a
-        *            {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.TermComboType}
-        *            object.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param selection
-        *            a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase}
-        *            object.
-        * @param style
-        *            a int.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.combo.TermComboElement}
-        *         object.
-        */
+    public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
+            TermVocabulary<?> termVocabulary,
+            ICdmFormElement parentElement,
+            String labelString,
+            T selection,
+            int style) {
+        TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termVocabulary, labelString, selection, true, style);
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
        public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
                TermVocabulary<?> termVocabulary,
                ICdmFormElement parentElement,
                String labelString,
                T selection,
+               boolean addEmptyElement,
                int style) {
-           TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termVocabulary, labelString, selection, style);
+           TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termVocabulary, labelString, selection, addEmptyElement, style);
            adapt(element);
            parentElement.addElement(element);
            return element;
index e5cefa90a8dfeeacfabb1e971033020790f09d2d..8b3219d888f034502206e4d8120d2d0713ec1404 100644 (file)
@@ -83,13 +83,13 @@ public class ModifierElement extends AbstractEntityCollectionElement<DefinedTerm
        /** {@inheritDoc} */
        @Override
        public void createControls(ICdmFormElement element, int style) {
-               combo_modifier = formFactory.createDefinedTermComboElement(TermType.Modifier, element, "Modifier", getEntity(), style);
+               combo_modifier = formFactory.createDefinedTermComboElement(TermType.Modifier, element, "Modifier", getEntity(), false, style);
        }
 
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
-           if(eventSource==combo_modifier){
+           if(eventSource==combo_modifier && combo_modifier.getSelection()!=null){
                if(getParentElement() instanceof ModifierSection){
                    ModifierSection parentSection = (ModifierSection) getParentElement();
                    if((parentSection).getEntity() instanceof StateData){
index 3ee690b7e404b6938aa6be46d8c0f911fe5f54c4..5c5ea7248ebdeaab630510a11b4f38275d9c1dd0 100644 (file)
@@ -79,7 +79,7 @@ public class StateDataElement extends AbstractEntityCollectionElement<StateData>
        /** {@inheritDoc} */
        @Override
        public void createControls(ICdmFormElement element, int style) {
-               combo_state = formFactory.createDefinedTermComboElement(TermType.State, element, "State", null, style);
+               combo_state = formFactory.createDefinedTermComboElement(TermType.State, element, "State", null, false, style);
                section_modifiers = formFactory.createModifierSection(getConversationHolder(), element, ExpandableComposite.TWISTIE);
                section_modifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
                text_modifyingText = formFactory.createTextWithLabelElement(element, "Modifying Text", null, style);