ref #10316: TermNodeDto should not contain termtreedto, only some
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / element / RepresentationElement.java
index d656dcc5f46c03d532f90e72cb18ccd898b2ac88..00397d71bae1a1fad4f968c82d981cbb592ef15d 100644 (file)
@@ -29,7 +29,7 @@ import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.model.term.TermBase;
 import eu.etaxonomy.cdm.model.term.TermType;
-import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
 import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -50,7 +50,7 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
 
         protected Representation selectedRepresentation;
         protected TermBase term;
-        protected TermDto termDto;
+        protected AbstractTermDto termDto;
 
                private Button removeRepresentation;
 
@@ -68,7 +68,7 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
             super(formFactory, formElement);
 
             formFactory.addPropertyChangeListener(this);
-
+            setSelectedRepresentation(representation);
             element_Label = this.formFactory.createTextWithLabelElement(formElement, "Label", null, style);
             element_abbrevLabel = this.formFactory.createTextWithLabelElement(formElement, "abbrev. Label", null, style);
             element_plural = this.formFactory.createTextWithLabelElement(formElement, "Plural", null, style);
@@ -77,30 +77,34 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
                 createRepresentationEditingElements(formElement, style);
             }
             setTerm(term, fill);
-            if(representation!=null){
-                setSelectedRepresentation(representation);
-            }
+            //if(representation!=null){
+            
+           //}
 
         }
 
         public RepresentationElement(CdmFormFactory formFactory,
-                ICdmFormElement formElement, Representation representation, TermDto term,
+                ICdmFormElement formElement, Representation representation, AbstractTermDto term,
                 Integer textHeight, int style, boolean fill) {
             super(formFactory, formElement);
 
             formFactory.addPropertyChangeListener(this);
-
+            if(representation!=null){
+                setSelectedRepresentation(representation);
+            }
             element_Label = this.formFactory.createTextWithLabelElement(formElement, "Label", null, style);
             element_abbrevLabel = this.formFactory.createTextWithLabelElement(formElement, "abbrev. Label", null, style);
             element_plural = this.formFactory.createTextWithLabelElement(formElement, "Plural", null, style);
             element_text = this.formFactory.createMultiLineTextWithLabel(formElement, "Description", textHeight, style);
             if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                 createRepresentationEditingElements(formElement, style);
+                
             }
             setTermDto(term, fill);
             if(representation!=null){
                 setSelectedRepresentation(representation);
             }
+            
 
         }
 
@@ -113,9 +117,12 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
                removeRepresentation.setToolTipText("Remove representation");
                removeRepresentation.addSelectionListener(new DeleteListener(this));
                addControl(removeRepresentation);
-
+               boolean addNullValue = false;
+               if (this.selectedRepresentation == null) {
+                   addNullValue = true;
+               }
             combo_language = formFactory.createDefinedTermComboElement(TermType.Language, formElement,
-                            "", null, false, style);
+                            "", null, addNullValue, style);
 
        }
 
@@ -147,22 +154,22 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
                term.addRepresentation(rep);
             }
 
-            if (selectedRepresentation != null) {
-               combo_language.setTerms(getLanguages());
-
-            } else{
-                setEnabledControls(false);
-                 if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
-                        removeRepresentation.setEnabled(false);
-                 }
-            }
+//            if (selectedRepresentation != null) {
+//               combo_language.setTerms(getLanguages());
+//
+//            } else{
+//              setEnabledControls(false);
+//                 if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
+//                      removeRepresentation.setEnabled(false);
+//                 }
+//            }
             if (update){
                updateControls();
             }
         }
 
         public void setTermDto(
-                TermDto term, boolean update) {
+                       AbstractTermDto term, boolean update) {
             this.termDto = term;
             if (term.getRepresentations().isEmpty()){
                 //if the term has no representation at all, create a default one.
@@ -170,15 +177,16 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
                 term.addRepresentation(rep);
             }
 
-            if (selectedRepresentation != null) {
+            if (selectedRepresentation != null && combo_language != null) {
                combo_language.setTerms(getLanguages());
 
-            } else{
-                 setEnabledControls(false);
-                 if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
-                     removeRepresentation.setEnabled(false);
-                 }
-            }
+            } 
+//            else if (!term.getRepresentations().isEmpty()){
+//                 setEnabledControls(false);
+//                 if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
+//                     removeRepresentation.setEnabled(false);
+//                 }
+//            }
             if (update){
                 updateControls();
             }
@@ -234,6 +242,9 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
         public TermBase getTerm() {
             return term;
         }
+        public AbstractTermDto getTermDto() {
+            return termDto;
+        }
 
         @Override
         public void propertyChange(PropertyChangeEvent event) {
@@ -278,7 +289,11 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
 
                     Language selectedLanguage = combo_language.getSelection();
                     if (selectedLanguage != null) {
-                        selectedRepresentation = getTerm().getRepresentation(selectedLanguage);
+                       if (getTerm() != null){
+                               selectedRepresentation = getTerm().getRepresentation(selectedLanguage);
+                       }else{
+                               selectedRepresentation = getTermDto().getRepresentation(selectedLanguage);
+                       }
                         if (selectedRepresentation == null){
                             selectedRepresentation = Representation.NewInstance("", "", "", selectedLanguage);
                         }
@@ -294,7 +309,8 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
                     setEnabledControls(false);
                     removeRepresentation.setEnabled(false);
                 }
-                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
+                //firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
+                firePropertyChangeEvent(event);
             }
         }
 
@@ -303,10 +319,11 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
         }
 
         public void setSelectedRepresentation(Representation selectedRepresentation) {
-            if (selectedRepresentation == null){
-                selectedRepresentation = Representation.NewInstance("", "", "", null);
-            }
+//            if (selectedRepresentation == null){
+//                selectedRepresentation = Representation.NewInstance("", "", "", null);
+//            }
             this.selectedRepresentation = selectedRepresentation;
+            
         }
 
         private class DeleteListener extends SelectionAdapter {
@@ -329,6 +346,13 @@ public class RepresentationElement extends AbstractCdmFormElement implements IEn
                        updateControls();
                }
        }
+
+        /**
+         * @param isEnabled
+         */
+        public void setLanguageComboEnabled(boolean isEnabled) {
+            this.combo_language.setEnabled(isEnabled);            
+        }
     }