changes to fix the checklist editor
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / view / checklist / edit / DistributionEditingSupport.java
index 4f0f7f5f2e7f1bc20f15ab4c5308c8db0cbc63bb..80153af575b95f64737d0c8d8aa4021e29e4229b 100644 (file)
@@ -26,7 +26,7 @@ import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistEditor;
-import eu.etaxonomy.taxeditor.editor.view.checklist.ChecklistLabelProvider;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 public final class DistributionEditingSupport extends EditingSupport {
@@ -71,7 +71,7 @@ public final class DistributionEditingSupport extends EditingSupport {
             Taxon taxon = (Taxon) element;
             Distribution distributionForColumn = getDistributionForColumn(taxon);
             if (distributionForColumn != null) {
-                distributionForColumn.getStatus().getTitleCache();
+                return distributionForColumn.getStatus().getTitleCache();
             }
             // return PresenceAbsenceTerms
         }
@@ -91,9 +91,9 @@ public final class DistributionEditingSupport extends EditingSupport {
                 createDistributionForColumn(taxon, occurenceStatus);
             }
             // viewer.update(distribution, null);
-            viewer.update(element, null);
-            viewer.refresh();
-            editor.setDirty(true);
+//            viewer.update(element, null);
+//            viewer.refresh();
+//            editor.setDirty(true);
             editor.changed(element);
             viewer.refresh();
         }
@@ -115,8 +115,16 @@ public final class DistributionEditingSupport extends EditingSupport {
             for (DescriptionElementBase deb : td.getElements()) {
                 if (deb instanceof Distribution) {
                     Distribution distribution = (Distribution) deb;
-                    if (column.getText().equalsIgnoreCase(distribution.getArea().getTitleCache())) {
-                        return distribution;
+                    if (distribution.getArea() != null){
+                        if (PreferencesUtil.isShowIdInVocabularyInChecklistEditor()){
+                            if (column.getText().equalsIgnoreCase(distribution.getArea().getIdInVocabulary())) {
+                                return distribution;
+                            }
+                        }else{
+                            if (column.getText().equalsIgnoreCase(distribution.getArea().getTitleCache())) {
+                                return distribution;
+                            }
+                        }
                     }
                 }
             }
@@ -127,18 +135,22 @@ public final class DistributionEditingSupport extends EditingSupport {
     private void createDistributionForColumn(Taxon taxon, PresenceAbsenceTerm occurenceStatus) {
         TableColumn column = viewer.getTable().getColumn(columnIndex);
 
-        ChecklistLabelProvider labelProvider = new ChecklistLabelProvider();
-        List<DefinedTermBase<?>> namedAreas = labelProvider.getNamedAreas();
-        SortedSet<DefinedTermBase<?>> terms = (SortedSet<DefinedTermBase<?>>) labelProvider.getTermsOrderedByLabels(
-                namedAreas, CdmStore.getDefaultLanguage());
+        SortedSet<DefinedTermBase> namedAreas = this.editor.getLabelProvider().getNamedAreas();
 
-        if (terms != null) {
-            for (DefinedTermBase term : terms) {
-                if (column.getText().equalsIgnoreCase(term.getTitleCache())) {
+
+        if (namedAreas != null) {
+            for (DefinedTermBase term : namedAreas) {
+                boolean sameArea = true;
+                if (!PreferencesUtil.isShowIdInVocabularyInChecklistEditor()){
+                    sameArea = column.getText().equalsIgnoreCase(term.getTitleCache());
+                } else{
+                    sameArea = column.getText().equalsIgnoreCase(term.getIdInVocabulary());
+                }
+                if (sameArea) {
                     NamedArea area = (NamedArea) term;
                     Distribution distribution = Distribution.NewInstance(area, occurenceStatus);
                     Set<TaxonDescription> descriptions = taxon.getDescriptions();
-                    if (descriptions != null) {
+                    if (!descriptions.isEmpty()) {
                         for (TaxonDescription desc : descriptions) {
                             // add to first taxon description
                             desc.addElement(distribution);
@@ -147,6 +159,7 @@ public final class DistributionEditingSupport extends EditingSupport {
                     } else {// there are no TaxonDescription yet.
                         TaxonDescription td = TaxonDescription.NewInstance(taxon);
                         td.addElement(distribution);
+                        break;
                     }
                 }
             }