ref #8385: adapt strucutre of db prefs to local prefs
authorKatja Luther <k.luther@bgbm.org>
Thu, 15 Aug 2019 08:17:38 +0000 (10:17 +0200)
committerKatja Luther <k.luther@bgbm.org>
Thu, 15 Aug 2019 08:17:38 +0000 (10:17 +0200)
19 files changed:
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/DynamicFeatureMenuE4.java
eu.etaxonomy.taxeditor.store/plugin.xml
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/AbcdImportAdminPreference.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/AbcdImportPreference.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/AbcdImportProviderAdminPreferencePage.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/AbcdImportProvider.java with 92% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/NameFeatureMenuAdminPreference.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/TermEditorInput.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/AbcdImportPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/GeneralTermPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/AbstractMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CommonNameLanguagePreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NameFeatureMenuPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/RankMenuPreferences.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmFormElement.java
eu.etaxonomy.taxeditor.workbench/src/main/java/eu/etaxonomy/taxeditor/workbench/WorkbenchUtility.java

index 25e4126869608d9bdd63c8c96cb4ab79d4105c14..1aea7f0ef24a54bc5a4233ec02ecd17702b20341 100644 (file)
@@ -23,7 +23,6 @@ import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
-import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
@@ -33,13 +32,11 @@ import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.TermNode;
 import eu.etaxonomy.cdm.model.term.TermTree;
-import eu.etaxonomy.cdm.model.term.VocabularyEnum;
 import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateDescriptionElementOperation;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
-import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  *
@@ -140,9 +137,8 @@ public class DynamicFeatureMenuE4 {
                    featureTree = TermEditorInput.getDefaultFeatureTree();
                }
                if (description instanceof TaxonNameDescription){
-                   List<Feature> terms = CdmStore.getTermManager().getPreferredTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()));
-                   terms.remove(Feature.PROTOLOGUE());
-                   featureTree = TermTree.NewInstance(terms);
+                   featureTree = TermEditorInput.getPreferredNameFeatureTree();
+
                }
 
                return featureTree;
index 38213b4c4c04c9d80385eb17c1fff35de8de65d8..8f4faee4c32d209526c1517cdadf8f308da7383f 100755 (executable)
          id="eu.etaxonomy.taxeditor.preference.DebugPreferences"
          name="%page.name.34">
    </page>
+   <page
+            category="eu.etaxonomy.taxeditor.preferences.general"
+            class="eu.etaxonomy.taxeditor.preference.AbcdImportPreference"
+            id="eu.etaxonomy.taxeditor.store.abcdImportPreference"
+            name="%page.name.40">
+   </page>
+   <page
+         category="eu.etaxonomy.taxeditor.store.abcdImportPreference"
+         class="eu.etaxonomy.taxeditor.preference.AbcdImportProvider"
+         id="eu.etaxonomy.taxeditor.store.abcdImportProvider"
+         name="%page.name.41">
+   </page>
    <page
          class="eu.etaxonomy.taxeditor.preference.TaxonomicEditorGeneralPreferences"
          id="eu.etaxonomy.taxeditor.preferences.general"
          name="%page.name.8">
    </page>
    <page
-         category="eu.etaxonomy.taxeditor.preferences.namePreferences"
+         category="eu.etaxonomy.taxeditor.preferences.typeDesignation"
          class="eu.etaxonomy.taxeditor.preference.menu.SpecimenTypeDesignationStatusMenuPreferences"
          id="eu.etaxonomy.taxeditor.preferences.specimenTypeDesignationStatus"
          name="%page.name.9">
    </page>
    <page
-         category="eu.etaxonomy.taxeditor.preferences.namePreferences"
+         category="eu.etaxonomy.taxeditor.preferences.typeDesignation"
          class="eu.etaxonomy.taxeditor.preference.menu.NameTypeDesignationStatusMenuPreferences"
          id="eu.etaxonomy.taxeditor.preferences.nameTypeDesignationStatus"
          name="%page.name.13">
          id="eu.etaxonomy.taxeditor.preferences.matching.teamOrPerson"
          name="%page.name.18">
    </page>
-   <page
+   <!--  <page
          category="eu.etaxonomy.taxeditor.preferences.description"
          class="eu.etaxonomy.taxeditor.preference.menu.StageMenuPreferences"
          id="eu.etaxonomy.taxeditor.preferences.stage"
          name="%page.name.19">
-   </page>
-   <page
+   </page>-->
+  <!--  <page
          category="eu.etaxonomy.taxeditor.preferences.description"
          class="eu.etaxonomy.taxeditor.preference.menu.PreservationMethodMenuPreferences"
          id="eu.etaxonomy.taxeditor.preferences.preservationMethod"
          name="%page.name.20">
-   </page>
+   </page> -->
    <page
          category="eu.etaxonomy.taxeditor.preferences.description"
          class="eu.etaxonomy.taxeditor.preference.DefaultFeatureTreePreferenecs"
          id="eu.etaxonomy.taxeditor.store.distribution"
          name="%page.name.100">
    </page>-->
+      <page
+            category="eu.etaxonomy.taxeditor.preferences.general"
+            class="eu.etaxonomy.taxeditor.preference.FactualDataPreference"
+            id="eu.etaxonomy.taxeditor.preferences.description"
+            name="%page.name.0">
+      </page>
+      <page
+            category="eu.etaxonomy.taxeditor.preferences.description"
+            class="eu.etaxonomy.taxeditor.preference.menu.FeatureMenuAdminPreferences"
+            id="eu.etaxonomy.taxeditor.preferences.feature"
+            name="%page.name.1">
+      </page>
+      <page
+            category="eu.etaxonomy.taxeditor.preferences.description"
+            class="eu.etaxonomy.taxeditor.preference.menu.NameFeatureMenuAdminPreferences"
+            id="eu.etaxonomy.taxeditor.preferences.nameFeature"
+            name="%page.name.59">
+      </page>
+      <page
+            category="eu.etaxonomy.taxeditor.preferences.description"
+            class="eu.etaxonomy.taxeditor.preference.menu.NamedAreaTypeMenuAdminPreferences"
+            id="eu.etaxonomy.taxeditor.preferences.namedAreaType"
+            name="%page.name.14">
+      </page>
+      <page
+            category="eu.etaxonomy.taxeditor.preferences.description"
+            class="eu.etaxonomy.taxeditor.preference.DefaultFeatureTreeAdminPreferenecs"
+            id="eu.etaxonomy.taxeditor.preferences.defaultFeatureTreePreferenecs"
+            name="%page.name.22">
+      </page>
     <page 
          category="eu.etaxonomy.taxeditor.preferences.general"
          class="eu.etaxonomy.taxeditor.preference.DistributionGeneralPreference"
          id="eu.etaxonomy.taxeditor.store.Distribution"
          name="%page.name.104">
    </page>
+   <page
+         category="eu.etaxonomy.taxeditor.preferences.general"
+         class="eu.etaxonomy.taxeditor.preference.SearchPreferences"
+         id="eu.etaxonomy.taxeditor.preference.searchPreferences"
+         name="%page.name.56">
+   </page>
+   <page
+         category="eu.etaxonomy.taxeditor.preference.searchPreferences"
+         class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.SearchDialogAdminPreferences"
+         id="eu.etaxonomy.taxeditor.preferences.searchDialog"
+         name="%page.name.48">
+   </page>
+   <page
+         category="eu.etaxonomy.taxeditor.preferences.general"
+         class="eu.etaxonomy.taxeditor.preference.NamePreferences"
+         id="eu.etaxonomy.taxeditor.preferences.namePreferences"
+         name="%page.name.51">
+   </page>
    <page 
          category="eu.etaxonomy.taxeditor.store.Distribution"
          class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.ChecklistEditorGeneralAdminPreference"
    </page>
    <page
          category="eu.etaxonomy.taxeditor.store.abcdImportPreference"
-         class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.AbcdImportProvider"
+         class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.AbcdImportProviderAdminPreferencePage"
          id="eu.etaxonomy.taxeditor.store.abcdImportProvider"
          name="%page.name.41">
    </page>
          name="%page.name.46">
    </page>
     <page
-        category="eu.etaxonomy.taxeditor.preferences.general"
+          category="eu.etaxonomy.taxeditor.preferences.namePreferences"
          class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.RankAdminPreference"
          id="eu.etaxonomy.taxeditor.preferences.adminRankPreference"
          name="%page.name.5">
    </page>
    <page
-        category="eu.etaxonomy.taxeditor.preferences.general"
+         category="eu.etaxonomy.taxeditor.preferences.namePreferences"
          class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.NomenclaturalStatusTypeAdminPreference"
          id="eu.etaxonomy.taxeditor.preferences.adminNomenclaturalStatusTypePreference"
          name="%page.name.6">
    </page>
    <page
-         category="eu.etaxonomy.taxeditor.preferences.general"
+         category="eu.etaxonomy.taxeditor.preferences.namePreferences"
          class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.NomenclaturalCodePreferences"
          id="eu.etaxonomy.taxeditor.store.page2"
          name="%page.name.43">
    </page>
    <page
          category="eu.etaxonomy.taxeditor.preferences.general"
-         class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.AbcdImportPreference"
+         class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.AbcdImportAdminPreference"
          id="eu.etaxonomy.taxeditor.store.abcdImportPreference"
          name="%page.name.40">
    </page>
    <page
-         category="eu.etaxonomy.taxeditor.preferences.general"
+         category="eu.etaxonomy.taxeditor.preferences.namePreferences"
          class="eu.etaxonomy.taxeditor.databaseAdmin.preferencePage.NameDetailsViewAdminConfiguration"
          id="eu.etaxonomy.taxeditor.store.scientificNameDetails"
          name="%page.name.61">
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/AbcdImportAdminPreference.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/AbcdImportAdminPreference.java
new file mode 100755 (executable)
index 0000000..06bc5a8
--- /dev/null
@@ -0,0 +1,324 @@
+/**
+* Copyright (C) 2018 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.databaseAdmin.preferencePage;
+
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+
+import eu.etaxonomy.cdm.api.application.ICdmRepository;
+import eu.etaxonomy.cdm.api.service.IPreferenceService;
+import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
+import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
+import eu.etaxonomy.taxeditor.preference.AbcdImportPreference;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @since 23.03.2018
+ *
+ */
+public class AbcdImportAdminPreference extends AbcdImportPreference implements IE4AdminPreferencePage, SelectionListener {
+
+//    @Override
+//    protected Control createContents(Composite parent) {
+//        final Composite composite = new Composite(parent, SWT.NULL);
+//
+//        GridLayout gridLayout = new GridLayout();
+//        composite.setLayout(gridLayout);
+//        configurator = Abcd206ImportConfigurator.NewInstance(null,null);
+//        ICdmRepository controller;
+//        controller = CdmStore.getCurrentApplicationConfiguration();
+//        PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AbcdImportConfig);
+//
+//        if (controller == null){
+//            return null;
+//        }
+//        preference = controller.getPreferenceService().find(key);
+//
+//        if (preference != null ){
+//            allowOverride = preference.isAllowOverride();
+//        }else{
+//            preference = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AbcdImportConfig, configurator.toString());
+//        }
+//
+//
+//        //configurator = PreferencesUtil.getAbcdImportConfigurationPreference();
+//        final CLabel description = new CLabel(composite, SWT.NULL);
+//        description.setText(Messages.AbcdImportPreference_description);
+//        checkBoxMediaSpecimen = new Button(composite, SWT.CHECK);
+//        checkBoxMediaSpecimen.setSelection(configurator.isAddMediaAsMediaSpecimen());
+//        checkBoxMediaSpecimen.setText(Messages.AbcdImportPreference_media_as_mediaSpecimen);
+//        checkBoxMediaSpecimen
+//                .setToolTipText(Messages.AbcdImportPreference_media_as_subUnit);
+//        checkBoxMediaSpecimen.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setAddMediaAsMediaSpecimen(!configurator.isAddMediaAsMediaSpecimen());
+//                setApply(true);
+//            }
+//        });
+//
+//        checkBoxIgnoreExisting = new Button(composite, SWT.CHECK);
+//        checkBoxIgnoreExisting.setSelection(configurator.isIgnoreImportOfExistingSpecimen());
+//        checkBoxIgnoreExisting.setText(Messages.AbcdImportPreference_not_import_existing_specimen);
+//        checkBoxIgnoreExisting
+//        .setToolTipText(Messages.AbcdImportPreference_not_import_existing_specimen_tooltip);
+//        checkBoxIgnoreExisting.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setIgnoreImportOfExistingSpecimen(!configurator.isIgnoreImportOfExistingSpecimen());
+//                setApply(true);
+//            }
+//        });
+//
+//        checkBoxIgnoreAuthorship = new Button(composite, SWT.CHECK);
+//        checkBoxIgnoreAuthorship.setSelection(configurator.isIgnoreAuthorship());
+//        checkBoxIgnoreAuthorship.setText(Messages.AbcdImportPreference_ignore_author);
+//        checkBoxIgnoreAuthorship
+//        .setToolTipText(Messages.AbcdImportPreference_ignore_author_tooltip);
+//        checkBoxIgnoreAuthorship.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setIgnoreAuthorship(!configurator.isIgnoreAuthorship());
+//                setApply(true);
+//            }
+//        });
+//
+//        checkBoxMapUnitIdToCatalogNumber = new Button(composite, SWT.RADIO);
+//        checkBoxMapUnitIdToCatalogNumber.setSelection(configurator.isMapUnitIdToCatalogNumber());
+//        checkBoxMapUnitIdToCatalogNumber.setText(Messages.AbcdImportPreference_map_unit_nr_catalog_number);
+//        checkBoxMapUnitIdToCatalogNumber
+//        .setToolTipText(Messages.AbcdImportPreference_map_unit_number_catalog_number_tooltip);
+//        checkBoxMapUnitIdToCatalogNumber.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setMapUnitIdToCatalogNumber(!configurator.isMapUnitIdToCatalogNumber());
+//                setApply(true);
+//            }
+//        });
+////TODO: only one of the mappings can be checked!
+//        checkBoxMapUnitIdToAccessionNumber = new Button(composite, SWT.RADIO);
+//        checkBoxMapUnitIdToAccessionNumber.setSelection(configurator.isMapUnitIdToAccessionNumber());
+//        checkBoxMapUnitIdToAccessionNumber.setText(Messages.AbcdImportPreference_map_unit_number_to_accession_number);
+//        checkBoxMapUnitIdToAccessionNumber
+//        .setToolTipText(Messages.AbcdImportPreference_map_unit_number_accession_number_tooltip);
+//        checkBoxMapUnitIdToAccessionNumber.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setMapUnitIdToAccessionNumber(!configurator.isMapUnitIdToAccessionNumber());
+//                setApply(true);
+//            }
+//        });
+//
+//        checkBoxMapUnitIdToBarcode = new Button(composite, SWT.RADIO);
+//        checkBoxMapUnitIdToBarcode.setSelection(configurator.isMapUnitIdToBarcode());
+//        checkBoxMapUnitIdToBarcode.setText(Messages.AbcdImportPreference_map_unit_number_barcode);
+//        checkBoxMapUnitIdToBarcode
+//        .setToolTipText(Messages.AbcdImportPreference_map_unit_number_barcode_tooltip);
+//        checkBoxMapUnitIdToBarcode.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setMapUnitIdToBarcode(!configurator.isMapUnitIdToBarcode());
+//                setApply(true);
+//            }
+//        });
+//
+//        checkBoxRemoveCountry = new Button(composite, SWT.CHECK);
+//        checkBoxRemoveCountry.setSelection(configurator.isRemoveCountryFromLocalityText());
+//        checkBoxRemoveCountry.setText(Messages.AbcdImportPreference_remove_country_from_locality);
+//        checkBoxRemoveCountry
+//        .setToolTipText(Messages.AbcdImportPreference_remove_country_from_locality_tooltip);
+//        checkBoxRemoveCountry.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setRemoveCountryFromLocalityText(!configurator.isRemoveCountryFromLocalityText());
+//                setApply(true);
+//            }
+//        });
+//
+//        checkBoxMoveToDefaultClassification = new Button(composite, SWT.CHECK);
+//        checkBoxMoveToDefaultClassification.setSelection(configurator.isMoveNewTaxaToDefaultClassification());
+//        checkBoxMoveToDefaultClassification.setText(Messages.AbcdImportPreference_create_new_classification_new_taxa);
+//        checkBoxMoveToDefaultClassification
+//        .setToolTipText(Messages.AbcdImportPreference_create_new_classification_new_taxa_tooltip);
+//        checkBoxMoveToDefaultClassification.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setMoveNewTaxaToDefaultClassification(!configurator.isMoveNewTaxaToDefaultClassification());
+//                setApply(true);
+//            }
+//        });
+//
+//        checkBoxImportSiblings = new Button(composite, SWT.CHECK);
+//        checkBoxImportSiblings.setSelection(configurator.isGetSiblings());
+//        checkBoxImportSiblings.setText(Messages.AbcdImportPreference_import_all_children_for_cultures_or_tissues);
+//        checkBoxImportSiblings
+//            .setToolTipText(Messages.AbcdImportPreference_import_all_children_for_cultures_or_tissues_tooltip);
+//        checkBoxImportSiblings.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setGetSiblings(!configurator.isGetSiblings());
+//                setApply(true);
+//            }
+//        });
+//
+//        checkBoxAddIndividualsAssociations = new Button(composite, SWT.CHECK);
+//        checkBoxAddIndividualsAssociations.setSelection(configurator.isAddIndividualsAssociationsSuchAsSpecimenAndObservations());
+//        checkBoxAddIndividualsAssociations.setText(Messages.AbcdImportPreference_create_Individual_Association);
+//        checkBoxAddIndividualsAssociations
+//            .setToolTipText(Messages.AbcdImportPreference_create_Individual_Association_tooltip);
+//        checkBoxAddIndividualsAssociations.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setAddIndividualsAssociationsSuchAsSpecimenAndObservations(!configurator.isAddIndividualsAssociationsSuchAsSpecimenAndObservations());
+//                setApply(true);
+//            }
+//        });
+//
+//        checkBoxReuseDescriptiveGroups = new Button(composite, SWT.CHECK);
+//        checkBoxReuseDescriptiveGroups.setSelection(configurator.isReuseExistingDescriptiveGroups());
+//        checkBoxReuseDescriptiveGroups.setText(Messages.AbcdImportPreference_reuse_descriptive_group);
+//        checkBoxReuseDescriptiveGroups
+//            .setToolTipText(Messages.AbcdImportPreference_reuse_descriptive_group_tooltip);
+//        checkBoxReuseDescriptiveGroups.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setReuseExistingDescriptiveGroups(!configurator.isReuseExistingDescriptiveGroups());
+//                setApply(true);
+//            }
+//        });
+//
+//        checkBoxReuseExistingTaxa = new Button(composite, SWT.CHECK);
+//        checkBoxReuseExistingTaxa.setSelection(configurator.isReuseExistingTaxaWhenPossible());
+//        checkBoxReuseExistingTaxa.setText(Messages.AbcdImportPreference_reuse_existing_taxa);
+//        checkBoxReuseExistingTaxa
+//            .setToolTipText(Messages.AbcdImportPreference_reuse_existing_taxa_tooltip);
+//        checkBoxReuseExistingTaxa.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                configurator.setReuseExistingTaxaWhenPossible(!configurator.isReuseExistingTaxaWhenPossible());
+//                setApply(true);
+//            }
+//        });
+//
+//        Label labelRef = new Label(composite, SWT.NONE);
+//        labelRef.setText("Biocase provider for associated DNA");
+//       // new Label(composite, SWT.NONE);
+//        textDNAProviderString = new Text(composite, SWT.NONE);
+//        textDNAProviderString.setEnabled(true);
+//        textDNAProviderString.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true, 1, 1));
+//        textDNAProviderString.setText(configurator.getDnaSoure().toString());
+//        GridData gridData = new GridData();
+//        gridData = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
+//        gridData.horizontalIndent = 5;
+////      classificationSelection.setLayoutData(gridData);
+//        Label nomenclaturalCodeLabel = new Label(composite, SWT.NONE);
+//        nomenclaturalCodeLabel.setText("Nomenclatural Code");
+//        nomenclaturalCodeSelectionCombo = new Combo(composite, SWT.BORDER| SWT.READ_ONLY);
+//        nomenclaturalCodeSelectionCombo.setLayoutData(gridData);
+//
+//        for(NomenclaturalCode code: NomenclaturalCode.values()){
+//            nomenclaturalCodeSelectionCombo.add(code.getKey());
+//        }
+//        int index = 0;
+//        if (configurator.getNomenclaturalCode() != null){
+//            for (String label : nomenclaturalCodeSelectionCombo.getItems()){
+//                if (label.equals(configurator.getNomenclaturalCode().getKey())){
+//                    nomenclaturalCodeSelectionCombo.select(index);
+//                }
+//                index++;
+//            }
+//        }
+//
+//        // TODO remember last selection
+//        nomenclaturalCodeSelectionCombo.addSelectionListener(this);
+//        if (preference != null){
+//            allowOverride = preference.isAllowOverride();
+//        }
+//        checkAllowOverride = new Button(composite, SWT.CHECK);
+//        checkAllowOverride.setSelection(allowOverride);
+//        checkAllowOverride.setText(Messages.AbcdImportPreference_allow_override);
+//        checkAllowOverride
+//            .setToolTipText(Messages.AbcdImportPreference_allow_override_tooltip);
+//        checkAllowOverride.addSelectionListener(new SelectionAdapter() {
+//            @Override
+//            public void widgetSelected(SelectionEvent e) {
+//                allowOverride = !allowOverride;
+//                setApply(true);
+//            }
+//        });
+//
+//        return composite;
+//    }
+
+    @Override
+    public void widgetSelected(SelectionEvent e) {
+        this.configurator.setNomenclaturalCode(NomenclaturalCode.getByKey(nomenclaturalCodeSelectionCombo.getText()));
+        setApply(true);
+    }
+
+    @Override
+    public boolean performOk() {
+        if (!isApply()){
+            return true;
+        }
+        ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
+        if (controller == null){
+            return false;
+        }
+        IPreferenceService service = controller.getPreferenceService();
+        if (configurator != null){
+            String configString = configurator.toString();
+            Abcd206ImportConfigurator defaultConfig = Abcd206ImportConfigurator.NewInstance(null,null);
+            if (configString.equals(defaultConfig.toString())){
+                configString = null;
+            }
+            CdmPreference pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AbcdImportConfig, configString);
+            pref.setAllowOverride(allowOverride);
+
+
+            service.set(pref);
+            PreferencesUtil.updateDBPreferences();
+
+        }
+        if (preference == null){
+            service.remove(CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AbcdImportConfig));
+        }
+        return true;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    protected void performDefaults() {
+        configurator = Abcd206ImportConfigurator.NewInstance(null,null);
+        preference = null;
+        super.performDefaults();
+    }
+
+    @Override
+    public void getValues() {
+        super.getValues();
+        isAdminPreference = true;
+        configurator = PreferencesUtil.getDBAbcdImportConfigurationPreference();
+
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/AbcdImportPreference.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/AbcdImportPreference.java
deleted file mode 100755 (executable)
index a1afb45..0000000
+++ /dev/null
@@ -1,412 +0,0 @@
-/**
-* Copyright (C) 2018 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.databaseAdmin.preferencePage;
-
-import java.net.URI;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CLabel;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-import eu.etaxonomy.cdm.api.application.ICdmRepository;
-import eu.etaxonomy.cdm.api.service.IPreferenceService;
-import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
-import eu.etaxonomy.cdm.model.metadata.CdmPreference;
-import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
-import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
-import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
-import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
-import eu.etaxonomy.taxeditor.l10n.Messages;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
-import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-
-/**
- * @author k.luther
- * @since 23.03.2018
- *
- */
-public class AbcdImportPreference extends CdmPreferencePage implements IE4AdminPreferencePage, SelectionListener {
-
-    private Abcd206ImportConfigurator configurator;
-
-    private Combo nomenclaturalCodeSelectionCombo;
-
-    private boolean allowOverride = true;
-    private CdmPreference preference = null;
-    Text textDNAProviderString;
-
-    @Override
-    protected Control createContents(Composite parent) {
-        final Composite composite = new Composite(parent, SWT.NULL);
-
-        GridLayout gridLayout = new GridLayout();
-        composite.setLayout(gridLayout);
-        configurator = Abcd206ImportConfigurator.NewInstance(null,null);
-        ICdmRepository controller;
-        controller = CdmStore.getCurrentApplicationConfiguration();
-        PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), PreferencePredicate.AbcdImportConfig);
-
-        if (controller == null){
-            return null;
-        }
-        preference = controller.getPreferenceService().find(key);
-
-        if (preference != null ){
-            allowOverride = preference.isAllowOverride();
-        }else{
-            preference = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AbcdImportConfig, configurator.toString());
-        }
-
-        if (preference != null){
-
-            String configString = preference.getValue();
-            if(configString!=null){
-                String[] configArray = configString.split(";"); //$NON-NLS-1$
-
-                for (String configItem: configArray){
-                    String[] keyValue = configItem.split(":"); //$NON-NLS-1$
-                    if(keyValue.length==2){
-                        String keyString = keyValue[0];
-                        String valueString = keyValue[1];
-                        if (keyString.equals("ignoreImportOfExistingSpecimen")){ //$NON-NLS-1$
-                            configurator.setIgnoreImportOfExistingSpecimen(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("addIndividualsAssociationsSuchAsSpecimenAndObservations")){ //$NON-NLS-1$
-                            configurator.setAddIndividualsAssociationsSuchAsSpecimenAndObservations(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("reuseExistingTaxaWhenPossible")){ //$NON-NLS-1$
-                            configurator.setReuseExistingTaxaWhenPossible(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("ignoreAuthorship")){ //$NON-NLS-1$
-                            configurator.setIgnoreAuthorship(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("addMediaAsMediaSpecimen")){ //$NON-NLS-1$
-                            configurator.setAddMediaAsMediaSpecimen(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("reuseExistingMetaData")){ //$NON-NLS-1$
-                            configurator.setReuseExistingMetaData(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("reuseExistingDescriptiveGroups")){ //$NON-NLS-1$
-                            configurator.setReuseExistingDescriptiveGroups(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("allowReuseOtherClassifications")){ //$NON-NLS-1$
-                            configurator.setAllowReuseOtherClassifications(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("deduplicateReferences")){ //$NON-NLS-1$
-                            configurator.setDeduplicateReferences(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("deduplicateClassifications")){ //$NON-NLS-1$
-                            configurator.setDeduplicateClassifications(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("moveNewTaxaToDefaultClassification")){ //$NON-NLS-1$
-                            configurator.setMoveNewTaxaToDefaultClassification(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("mapUnitIdToCatalogNumber")){ //$NON-NLS-1$
-                            configurator.setMapUnitIdToCatalogNumber(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("mapUnitIdToAccessionNumber")){ //$NON-NLS-1$
-                            configurator.setMapUnitIdToAccessionNumber(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("mapUnitIdToBarcode")){ //$NON-NLS-1$
-                            configurator.setMapUnitIdToBarcode(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("overwriteExistingSpecimens")){ //$NON-NLS-1$
-                            configurator.setOverwriteExistingSpecimens(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("nomenclaturalCode")){ //$NON-NLS-1$
-                            configurator.setNomenclaturalCode(NomenclaturalCode.fromString(valueString));
-                        }else if (keyString.equals("getSiblings")){ //$NON-NLS-1$
-                            configurator.setGetSiblings(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("removeCountryFromLocalityText")){ //$NON-NLS-1$
-                            configurator.setRemoveCountryFromLocalityText(Boolean.valueOf(valueString));
-                        }else if (keyString.equals("dnaSource")){ //$NON-NLS-1$
-                            configurator.setDnaSoure(URI.create(valueString));
-                        }
-
-                    }
-                }
-            }
-        }
-
-
-        //configurator = PreferencesUtil.getAbcdImportConfigurationPreference();
-        final CLabel description = new CLabel(composite, SWT.NULL);
-        description.setText(Messages.AbcdImportPreference_description);
-        Button checkBoxMediaSpecimen = new Button(composite, SWT.CHECK);
-        checkBoxMediaSpecimen.setSelection(configurator.isAddMediaAsMediaSpecimen());
-        checkBoxMediaSpecimen.setText(Messages.AbcdImportPreference_media_as_mediaSpecimen);
-        checkBoxMediaSpecimen
-                .setToolTipText(Messages.AbcdImportPreference_media_as_subUnit);
-        checkBoxMediaSpecimen.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setAddMediaAsMediaSpecimen(!configurator.isAddMediaAsMediaSpecimen());
-                setApply(true);
-            }
-        });
-
-        Button checkBoxIgnoreExisting = new Button(composite, SWT.CHECK);
-        checkBoxIgnoreExisting.setSelection(configurator.isIgnoreImportOfExistingSpecimen());
-        checkBoxIgnoreExisting.setText(Messages.AbcdImportPreference_not_import_existing_specimen);
-        checkBoxIgnoreExisting
-        .setToolTipText(Messages.AbcdImportPreference_not_import_existing_specimen_tooltip);
-        checkBoxIgnoreExisting.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setIgnoreImportOfExistingSpecimen(!configurator.isIgnoreImportOfExistingSpecimen());
-                setApply(true);
-            }
-        });
-
-        Button checkBoxIgnoreAuthorship = new Button(composite, SWT.CHECK);
-        checkBoxIgnoreAuthorship.setSelection(configurator.isIgnoreAuthorship());
-        checkBoxIgnoreAuthorship.setText(Messages.AbcdImportPreference_ignore_author);
-        checkBoxIgnoreAuthorship
-        .setToolTipText(Messages.AbcdImportPreference_ignore_author_tooltip);
-        checkBoxIgnoreAuthorship.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setIgnoreAuthorship(!configurator.isIgnoreAuthorship());
-                setApply(true);
-            }
-        });
-
-        Button checkBoxMapUnitIdToCatalogNumber = new Button(composite, SWT.CHECK);
-        checkBoxMapUnitIdToCatalogNumber.setSelection(configurator.isMapUnitIdToCatalogNumber());
-        checkBoxMapUnitIdToCatalogNumber.setText(Messages.AbcdImportPreference_map_unit_nr_catalog_number);
-        checkBoxMapUnitIdToCatalogNumber
-        .setToolTipText(Messages.AbcdImportPreference_map_unit_number_catalog_number_tooltip);
-        checkBoxMapUnitIdToCatalogNumber.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setMapUnitIdToCatalogNumber(!configurator.isMapUnitIdToCatalogNumber());
-                setApply(true);
-            }
-        });
-//TODO: only one of the mappings can be checked!
-        Button checkBoxMapUnitIdToAccessionNumber = new Button(composite, SWT.CHECK);
-        checkBoxMapUnitIdToAccessionNumber.setSelection(configurator.isMapUnitIdToAccessionNumber());
-        checkBoxMapUnitIdToAccessionNumber.setText(Messages.AbcdImportPreference_map_unit_number_to_accession_number);
-        checkBoxMapUnitIdToAccessionNumber
-        .setToolTipText(Messages.AbcdImportPreference_map_unit_number_accession_number_tooltip);
-        checkBoxMapUnitIdToAccessionNumber.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setMapUnitIdToAccessionNumber(!configurator.isMapUnitIdToAccessionNumber());
-                setApply(true);
-            }
-        });
-
-        Button checkBoxMapUnitIdToBarcode = new Button(composite, SWT.CHECK);
-        checkBoxMapUnitIdToBarcode.setSelection(configurator.isMapUnitIdToBarcode());
-        checkBoxMapUnitIdToBarcode.setText(Messages.AbcdImportPreference_map_unit_number_barcode);
-        checkBoxMapUnitIdToBarcode
-        .setToolTipText(Messages.AbcdImportPreference_map_unit_number_barcode_tooltip);
-        checkBoxMapUnitIdToBarcode.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setMapUnitIdToBarcode(!configurator.isMapUnitIdToBarcode());
-                setApply(true);
-            }
-        });
-
-        Button checkBoxRemoveCountry = new Button(composite, SWT.CHECK);
-        checkBoxRemoveCountry.setSelection(configurator.isRemoveCountryFromLocalityText());
-        checkBoxRemoveCountry.setText(Messages.AbcdImportPreference_remove_country_from_locality);
-        checkBoxRemoveCountry
-        .setToolTipText(Messages.AbcdImportPreference_remove_country_from_locality_tooltip);
-        checkBoxRemoveCountry.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setRemoveCountryFromLocalityText(!configurator.isRemoveCountryFromLocalityText());
-                setApply(true);
-            }
-        });
-
-        Button checkBoxMoveToDefaultClassification = new Button(composite, SWT.CHECK);
-        checkBoxMoveToDefaultClassification.setSelection(configurator.isMoveNewTaxaToDefaultClassification());
-        checkBoxMoveToDefaultClassification.setText(Messages.AbcdImportPreference_create_new_classification_new_taxa);
-        checkBoxMoveToDefaultClassification
-        .setToolTipText(Messages.AbcdImportPreference_create_new_classification_new_taxa_tooltip);
-        checkBoxMoveToDefaultClassification.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setMoveNewTaxaToDefaultClassification(!configurator.isMoveNewTaxaToDefaultClassification());
-                setApply(true);
-            }
-        });
-
-        Button checkBoxImportSiblings = new Button(composite, SWT.CHECK);
-        checkBoxImportSiblings.setSelection(configurator.isGetSiblings());
-        checkBoxImportSiblings.setText(Messages.AbcdImportPreference_import_all_children_for_cultures_or_tissues);
-        checkBoxImportSiblings
-            .setToolTipText(Messages.AbcdImportPreference_import_all_children_for_cultures_or_tissues_tooltip);
-        checkBoxImportSiblings.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setGetSiblings(!configurator.isGetSiblings());
-                setApply(true);
-            }
-        });
-
-        Button checkBoxAddIndividualsAssociations = new Button(composite, SWT.CHECK);
-        checkBoxAddIndividualsAssociations.setSelection(configurator.isAddIndividualsAssociationsSuchAsSpecimenAndObservations());
-        checkBoxAddIndividualsAssociations.setText(Messages.AbcdImportPreference_create_Individual_Association);
-        checkBoxAddIndividualsAssociations
-            .setToolTipText(Messages.AbcdImportPreference_create_Individual_Association_tooltip);
-        checkBoxAddIndividualsAssociations.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setAddIndividualsAssociationsSuchAsSpecimenAndObservations(!configurator.isAddIndividualsAssociationsSuchAsSpecimenAndObservations());
-                setApply(true);
-            }
-        });
-
-        Button checkBoxReuseDescriptiveGroups = new Button(composite, SWT.CHECK);
-        checkBoxReuseDescriptiveGroups.setSelection(configurator.isReuseExistingDescriptiveGroups());
-        checkBoxReuseDescriptiveGroups.setText(Messages.AbcdImportPreference_reuse_descriptive_group);
-        checkBoxReuseDescriptiveGroups
-            .setToolTipText(Messages.AbcdImportPreference_reuse_descriptive_group_tooltip);
-        checkBoxReuseDescriptiveGroups.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setReuseExistingDescriptiveGroups(!configurator.isReuseExistingDescriptiveGroups());
-                setApply(true);
-            }
-        });
-
-        Button checkBoxReuseExistingTaxa = new Button(composite, SWT.CHECK);
-        checkBoxReuseExistingTaxa.setSelection(configurator.isReuseExistingTaxaWhenPossible());
-        checkBoxReuseExistingTaxa.setText(Messages.AbcdImportPreference_reuse_existing_taxa);
-        checkBoxReuseExistingTaxa
-            .setToolTipText(Messages.AbcdImportPreference_reuse_existing_taxa_tooltip);
-        checkBoxReuseExistingTaxa.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                configurator.setReuseExistingTaxaWhenPossible(!configurator.isReuseExistingTaxaWhenPossible());
-                setApply(true);
-            }
-        });
-
-        Label labelRef = new Label(composite, SWT.NONE);
-        labelRef.setText("Biocase provider for associated DNA");
-        new Label(composite, SWT.NONE);
-        textDNAProviderString = new Text(composite, SWT.NONE);
-        textDNAProviderString.setEnabled(true);
-        textDNAProviderString.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true, 1, 1));
-        textDNAProviderString.setText(configurator.getDnaSoure().toString());
-        GridData gridData = new GridData();
-        gridData = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
-        gridData.horizontalIndent = 5;
-//      classificationSelection.setLayoutData(gridData);
-
-        nomenclaturalCodeSelectionCombo = new Combo(composite, SWT.BORDER| SWT.READ_ONLY);
-        nomenclaturalCodeSelectionCombo.setLayoutData(gridData);
-        for(NomenclaturalCode code: NomenclaturalCode.values()){
-            nomenclaturalCodeSelectionCombo.add(code.getKey());
-        }
-        int index = 0;
-        if (configurator.getNomenclaturalCode() != null){
-            for (String label : nomenclaturalCodeSelectionCombo.getItems()){
-                if (label.equals(configurator.getNomenclaturalCode().getKey())){
-                    nomenclaturalCodeSelectionCombo.select(index);
-
-                }
-                index++;
-            }
-        }
-
-        // TODO remember last selection
-        nomenclaturalCodeSelectionCombo.addSelectionListener(this);
-        if (preference != null){
-            allowOverride = preference.isAllowOverride();
-        }
-        Button checkAllowOverride = new Button(composite, SWT.CHECK);
-        checkAllowOverride.setSelection(allowOverride);
-        checkAllowOverride.setText(Messages.AbcdImportPreference_allow_override);
-        checkAllowOverride
-            .setToolTipText(Messages.AbcdImportPreference_allow_override_tooltip);
-        checkAllowOverride.addSelectionListener(new SelectionAdapter() {
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                allowOverride = !allowOverride;
-                setApply(true);
-            }
-        });
-
-        return composite;
-    }
-
-    @Override
-    public void widgetSelected(SelectionEvent e) {
-        this.configurator.setNomenclaturalCode(NomenclaturalCode.getByKey(nomenclaturalCodeSelectionCombo.getText()));
-        setApply(true);
-    }
-
-    @Override
-    public boolean performOk() {
-        if (preference == null){
-            return true;
-        }
-        if (configurator != null){
-            String configString = configurator.toString();
-            Abcd206ImportConfigurator defaultConfig = Abcd206ImportConfigurator.NewInstance(null,null);
-            if (configString.equals(defaultConfig.toString())){
-                configString = null;
-            }
-            CdmPreference pref = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AbcdImportConfig, configString);
-            pref.setAllowOverride(allowOverride);
-
-            ICdmRepository controller = CdmStore.getCurrentApplicationConfiguration();
-            if (controller == null){
-                return false;
-            }
-            IPreferenceService service = controller.getPreferenceService();
-            service.set(pref);
-            PreferencesUtil.updateDBPreferences();
-
-        }
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public void widgetDefaultSelected(SelectionEvent e) {
-        // TODO Auto-generated method stub
-
-    }
-
-    @Override
-    protected void performDefaults() {
-        configurator = Abcd206ImportConfigurator.NewInstance(null,null);
-        preference = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AbcdImportConfig, configurator.toString());
-        preference.setAllowOverride(true);
-        super.performDefaults();
-    }
-
-//    private void createAbcdImportConfig() {
-//        this.configurator.setAddIndividualsAssociationsSuchAsSpecimenAndObservations(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_ADD_INDIVIDUALS_ASSOCIATIONS_SUCH_AS_SPECIMEN_AND_OBSERVATIONS));
-//        this.configurator.setAddMediaAsMediaSpecimen(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_ADD_MEDIA_AS_MEDIASPECIMEN));
-//        this.configurator.setAllowReuseOtherClassifications(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_ALLOW_REUSE_OTHER_CLASSIFICATIONS));
-//        //this.abcdImportConfigurator.setClassificationUuid(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_CLASSIFICATION_UUID));
-//        this.configurator.setDeduplicateClassifications(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_DEDUPLICATE_CLASSIFICATIONS));
-//        this.configurator.setDeduplicateReferences(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_DEDUPLICATE_REFERENCES));
-//       // this.abcdImportConfigurator.setDefaultAuthor(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_DEFAULT_AUTHOR));
-//        this.configurator.setGetSiblings(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_DO_SIBLINGS));
-//        this.configurator.setIgnoreAuthorship(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_IGNORE_AUTHORSHIP));
-//        this.configurator.setIgnoreImportOfExistingSpecimen(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_IGNORE_IMPORT_OF_EXISTING_SPECIMEN));
-//        this.configurator.setMapUnitIdToAccessionNumber(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_MAP_UNIT_ID_TO_ACCESSION_NUMBER));
-//        this.configurator.setMapUnitIdToBarcode(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_MAP_UNIT_ID_TO_BARCODE));
-//        this.configurator.setMapUnitIdToCatalogNumber(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_MAP_UNIT_ID_TOCATALOG_NUMBER));
-//        this.configurator.setMoveNewTaxaToDefaultClassification(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_MOVE_NEW_TAXA_TO_DEFAULT_CLASSIFICATION));
-//        this.configurator.setReuseExistingDescriptiveGroups(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_REUSE_EXISTING_DESCRIPTIVE_GROUPS));
-//        this.configurator.setReuseExistingTaxaWhenPossible(doGetPreferenceStore().getBoolean(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_REUSE_EXISTING_TAXA_WHEN_POSSIBLE));
-//        this.configurator.setNomenclaturalCode(PreferencesUtil.getPreferredNomenclaturalCode(doGetPreferenceStore().getString(IPreferenceKeys.ABCD_IMPORT_CONFIGURATOR_NOMENCLATURAL_CODE)));
-//
-//    }
-
-}
@@ -19,8 +19,8 @@ import eu.etaxonomy.cdm.api.service.IPreferenceService;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.preference.AbcdImportPreference;
 import eu.etaxonomy.taxeditor.preference.ListComponent;
-import eu.etaxonomy.taxeditor.preference.menu.CdmPreferencePage;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -28,7 +28,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @since 23.03.2018
  *
  */
-public class AbcdImportProvider extends CdmPreferencePage implements IE4AdminPreferencePage{
+public class AbcdImportProviderAdminPreferencePage extends AbcdImportPreference implements IE4AdminPreferencePage{
 
     private ListComponent biocaseProviderList;
 
@@ -45,7 +45,7 @@ public class AbcdImportProvider extends CdmPreferencePage implements IE4AdminPre
         //gridLayout.makeColumnsEqualWidth = true;
 
         composite.setLayout(gridLayout);
-        biocaseProviderList = new ListComponent(composite, SWT.SCROLL_LINE, isAdminPreference);
+        biocaseProviderList = new ListComponent(composite, SWT.SCROLL_LINE, true);
         setApply(true);
         return composite;
     }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/NameFeatureMenuAdminPreference.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/NameFeatureMenuAdminPreference.java
new file mode 100755 (executable)
index 0000000..7ed673a
--- /dev/null
@@ -0,0 +1,66 @@
+/**
+* Copyright (C) 2019 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.databaseAdmin.preferencePage;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.lang.StringUtils;
+
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.model.metadata.CdmPreference;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.preference.LocalOrDefaultEnum;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.preference.menu.NameFeatureMenuPreference;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @since 13.08.2019
+ */
+public class NameFeatureMenuAdminPreference extends NameFeatureMenuPreference implements IE4AdminPreferencePage {
+
+    @Override
+    public boolean performOk() {
+        if (!isApply()){
+            return true;
+        }
+        Object[] checkedElements = treeComposite.getViewer().getCheckedElements();
+        List<UUID> listUIIDChecked = new ArrayList<>();
+        List<DefinedTermBase> preferredTerms = new ArrayList<>();
+        for (Object o : checkedElements) {
+            if(o instanceof TermDto){
+                TermDto termDto = (TermDto) o;
+                listUIIDChecked.add(termDto.getUuid());
+                preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
+            }
+        }
+        String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
+        if (StringUtils.isBlank(saveCheckedElements)){
+            saveCheckedElements = null;
+        }
+        CdmPreference savePref = CdmPreference.NewTaxEditorInstance(predicate, saveCheckedElements);
+        String text = this.useLocalOrAdmin.getText();
+        if (text.equals(LocalOrDefaultEnum.Database.getLabel()) ){
+            savePref.setAllowOverride(false);
+        }else if (text.equals(LocalOrDefaultEnum.AllowOverride.getLabel())){
+            savePref.setAllowOverride(true);
+        }
+
+        PreferencesUtil.setPreferenceToDB(savePref);
+        PreferencesUtil.updateDBPreferences();
+        PreferencesUtil.firePreferencesChanged(this.getClass());
+        return true;
+    }
+
+
+}
index cfbf0b70e0c16259fd24c1a6a6fd66876e754ad5..8a43b16d02a3545a79d7b908d35e928851c051ba 100644 (file)
@@ -22,6 +22,7 @@ import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.term.VocabularyEnum;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.TermStore;
 
@@ -115,9 +116,21 @@ public class TermEditorInput extends AbstractDefinedTermEditorInput<DefinedTerm>
 
     public static TermTree getDefaultNameFeatureTree() {
         if(defaultNameFeatureTree == null) {
+
             List<Feature> nameFeatures = CdmStore.getTermManager().getPreferredTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()), null);
+
             defaultNameFeatureTree = TermTree.NewInstance(nameFeatures);
         }
         return defaultNameFeatureTree;
+
+    }
+
+    /**
+     * @return
+     */
+    public static TermTree<?> getPreferredNameFeatureTree() {
+
+        return PreferencesUtil.getPreferredFeatureTreeForNameDescription();
+
     }
 }
index 868d3f34666a083cc6abb48f3277c0c4ceb5dd6e..6ac2be0150efec6a7285cfaf7bfbae332be9faf4 100644 (file)
@@ -287,6 +287,7 @@ public abstract class AbstractUtility {
             // configure the job
             job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
             job.setUser(true);
+            job.setName(label);
             // schedule job
             job.schedule();
 
@@ -654,6 +655,8 @@ public abstract class AbstractUtility {
             };
 
             // configure the job
+            job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
+
             job.setUser(true);
             // schedule job
             job.schedule();
index 789057942ac4ecf44ebd7051e533270f455de004..f3acfdc60c2993f41373e91e93d85679fc42ab8d 100755 (executable)
@@ -8,8 +8,6 @@
 */
 package eu.etaxonomy.taxeditor.preference;
 
-import java.net.URI;
-
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -42,52 +40,48 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  */
 public class AbcdImportPreference extends CdmPreferencePage implements IE4PreferencePage, SelectionListener {
 
-    private Abcd206ImportConfigurator configurator;
+    protected Abcd206ImportConfigurator configurator;
 
-    private Combo nomenclaturalCodeSelectionCombo;
+    protected Combo nomenclaturalCodeSelectionCombo;
 
-    private boolean allowOverride = true;
-    private boolean override = true;
-    private CdmPreference preference = null;
+    protected boolean allowOverride = true;
+    protected boolean override = true;
+    protected CdmPreference preference = null;
     Text textDNAProviderString;
     private Composite composite;
     Combo overrideCombo;
 
+    Button checkBoxMediaSpecimen;
+    Button checkBoxIgnoreExisting;
+    Button checkBoxIgnoreAuthorship;
+    Button checkBoxMapUnitIdToCatalogNumber;
+    Button checkBoxMapUnitIdToAccessionNumber;
+    Button checkBoxMapUnitIdToBarcode;
+    Button checkBoxRemoveCountry;
+    Button checkBoxMoveToDefaultClassification;
+    Button checkBoxImportSiblings;
+    Button checkBoxAddIndividualsAssociations;
+    Button checkBoxReuseDescriptiveGroups;
+    Button checkBoxReuseExistingTaxa;
+    Button checkAllowOverride;
+
     @Override
     protected Control createContents(Composite parent) {
-
-
-
-
         getValues();
 
-
-        //configurator = PreferencesUtil.getAbcdImportConfigurationPreference();
-        final CLabel description = new CLabel(parent, SWT.NULL);
-        description.setText(Messages.AbcdImportPreference_description);
-//        final CLabel overrideDescription = new CLabel(parent, SWT.NULL);
-//        overrideDescription.setText("");
-//        GridData textGrid = createTextGridData();
-//        textGrid.verticalSpan = 2;
-//        overrideDescription.setLayoutData(textGrid);
-
-        overrideCombo = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
-
-        overrideCombo.add(LocalOrDefaultEnum.Default.getLabel(), 0);
-        overrideCombo.add(LocalOrDefaultEnum.Local.getLabel(), 1);
-        overrideCombo.addSelectionListener(this);
-        if (override){
-            overrideCombo.select(1);
-        }else{
-            overrideCombo.select(0);
+        if (!isAdminPreference && !allowOverride){
+            Label label = new Label(parent, SWT.NONE);
+            label.setText("The CDM settings don't allow to set the abcd import preference locally. If you need to make local settings, please ask an administrator.");
+            this.noDefaultAndApplyButton();
+            return parent;
         }
-
-        composite = new Composite(parent, SWT.NULL);
-
+        final Composite composite = new Composite(parent, SWT.NULL);
         GridLayout gridLayout = new GridLayout();
         composite.setLayout(gridLayout);
-        Button checkBoxMediaSpecimen = new Button(composite, SWT.CHECK);
-        checkBoxMediaSpecimen.setSelection(configurator.isAddMediaAsMediaSpecimen());
+
+        final CLabel description = new CLabel(composite, SWT.NULL);
+        description.setText(Messages.AbcdImportPreference_description);
+        checkBoxMediaSpecimen = new Button(composite, SWT.CHECK);
         checkBoxMediaSpecimen.setText(Messages.AbcdImportPreference_media_as_mediaSpecimen);
         checkBoxMediaSpecimen
                 .setToolTipText(Messages.AbcdImportPreference_media_as_subUnit);
@@ -99,8 +93,8 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 
-        Button checkBoxIgnoreExisting = new Button(composite, SWT.CHECK);
-        checkBoxIgnoreExisting.setSelection(configurator.isIgnoreImportOfExistingSpecimen());
+        checkBoxIgnoreExisting = new Button(composite, SWT.CHECK);
+
         checkBoxIgnoreExisting.setText(Messages.AbcdImportPreference_not_import_existing_specimen);
         checkBoxIgnoreExisting
         .setToolTipText(Messages.AbcdImportPreference_not_import_existing_specimen_tooltip);
@@ -112,8 +106,8 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 
-        Button checkBoxIgnoreAuthorship = new Button(composite, SWT.CHECK);
-        checkBoxIgnoreAuthorship.setSelection(configurator.isIgnoreAuthorship());
+        checkBoxIgnoreAuthorship = new Button(composite, SWT.CHECK);
+
         checkBoxIgnoreAuthorship.setText(Messages.AbcdImportPreference_ignore_author);
         checkBoxIgnoreAuthorship
         .setToolTipText(Messages.AbcdImportPreference_ignore_author_tooltip);
@@ -125,8 +119,8 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 
-        Button checkBoxMapUnitIdToCatalogNumber = new Button(composite, SWT.CHECK);
-        checkBoxMapUnitIdToCatalogNumber.setSelection(configurator.isMapUnitIdToCatalogNumber());
+        checkBoxMapUnitIdToCatalogNumber = new Button(composite, SWT.RADIO);
+
         checkBoxMapUnitIdToCatalogNumber.setText(Messages.AbcdImportPreference_map_unit_nr_catalog_number);
         checkBoxMapUnitIdToCatalogNumber
         .setToolTipText(Messages.AbcdImportPreference_map_unit_number_catalog_number_tooltip);
@@ -138,8 +132,8 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 //TODO: only one of the mappings can be checked!
-        Button checkBoxMapUnitIdToAccessionNumber = new Button(composite, SWT.CHECK);
-        checkBoxMapUnitIdToAccessionNumber.setSelection(configurator.isMapUnitIdToAccessionNumber());
+        checkBoxMapUnitIdToAccessionNumber = new Button(composite, SWT.RADIO);
+
         checkBoxMapUnitIdToAccessionNumber.setText(Messages.AbcdImportPreference_map_unit_number_to_accession_number);
         checkBoxMapUnitIdToAccessionNumber
         .setToolTipText(Messages.AbcdImportPreference_map_unit_number_accession_number_tooltip);
@@ -151,8 +145,8 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 
-        Button checkBoxMapUnitIdToBarcode = new Button(composite, SWT.CHECK);
-        checkBoxMapUnitIdToBarcode.setSelection(configurator.isMapUnitIdToBarcode());
+        checkBoxMapUnitIdToBarcode = new Button(composite, SWT.RADIO);
+
         checkBoxMapUnitIdToBarcode.setText(Messages.AbcdImportPreference_map_unit_number_barcode);
         checkBoxMapUnitIdToBarcode
         .setToolTipText(Messages.AbcdImportPreference_map_unit_number_barcode_tooltip);
@@ -164,8 +158,8 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 
-        Button checkBoxRemoveCountry = new Button(composite, SWT.CHECK);
-        checkBoxRemoveCountry.setSelection(configurator.isRemoveCountryFromLocalityText());
+        checkBoxRemoveCountry = new Button(composite, SWT.CHECK);
+
         checkBoxRemoveCountry.setText(Messages.AbcdImportPreference_remove_country_from_locality);
         checkBoxRemoveCountry
         .setToolTipText(Messages.AbcdImportPreference_remove_country_from_locality_tooltip);
@@ -177,7 +171,7 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 
-        Button checkBoxMoveToDefaultClassification = new Button(composite, SWT.CHECK);
+        checkBoxMoveToDefaultClassification = new Button(composite, SWT.CHECK);
         checkBoxMoveToDefaultClassification.setSelection(configurator.isMoveNewTaxaToDefaultClassification());
         checkBoxMoveToDefaultClassification.setText(Messages.AbcdImportPreference_create_new_classification_new_taxa);
         checkBoxMoveToDefaultClassification
@@ -190,8 +184,8 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 
-        Button checkBoxImportSiblings = new Button(composite, SWT.CHECK);
-        checkBoxImportSiblings.setSelection(configurator.isGetSiblings());
+        checkBoxImportSiblings = new Button(composite, SWT.CHECK);
+
         checkBoxImportSiblings.setText(Messages.AbcdImportPreference_import_all_children_for_cultures_or_tissues);
         checkBoxImportSiblings
             .setToolTipText(Messages.AbcdImportPreference_import_all_children_for_cultures_or_tissues_tooltip);
@@ -203,8 +197,8 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 
-        Button checkBoxAddIndividualsAssociations = new Button(composite, SWT.CHECK);
-        checkBoxAddIndividualsAssociations.setSelection(configurator.isAddIndividualsAssociationsSuchAsSpecimenAndObservations());
+        checkBoxAddIndividualsAssociations = new Button(composite, SWT.CHECK);
+
         checkBoxAddIndividualsAssociations.setText(Messages.AbcdImportPreference_create_Individual_Association);
         checkBoxAddIndividualsAssociations
             .setToolTipText(Messages.AbcdImportPreference_create_Individual_Association_tooltip);
@@ -216,8 +210,8 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 
-        Button checkBoxReuseDescriptiveGroups = new Button(composite, SWT.CHECK);
-        checkBoxReuseDescriptiveGroups.setSelection(configurator.isReuseExistingDescriptiveGroups());
+        checkBoxReuseDescriptiveGroups = new Button(composite, SWT.CHECK);
+
         checkBoxReuseDescriptiveGroups.setText(Messages.AbcdImportPreference_reuse_descriptive_group);
         checkBoxReuseDescriptiveGroups
             .setToolTipText(Messages.AbcdImportPreference_reuse_descriptive_group_tooltip);
@@ -229,8 +223,8 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             }
         });
 
-        Button checkBoxReuseExistingTaxa = new Button(composite, SWT.CHECK);
-        checkBoxReuseExistingTaxa.setSelection(configurator.isReuseExistingTaxaWhenPossible());
+        checkBoxReuseExistingTaxa = new Button(composite, SWT.CHECK);
+
         checkBoxReuseExistingTaxa.setText(Messages.AbcdImportPreference_reuse_existing_taxa);
         checkBoxReuseExistingTaxa
             .setToolTipText(Messages.AbcdImportPreference_reuse_existing_taxa_tooltip);
@@ -244,31 +238,25 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
 
         Label labelRef = new Label(composite, SWT.NONE);
         labelRef.setText("Biocase provider for associated DNA");
-        new Label(composite, SWT.NONE);
+       // new Label(composite, SWT.NONE);
         textDNAProviderString = new Text(composite, SWT.NONE);
         textDNAProviderString.setEnabled(true);
         textDNAProviderString.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true, 1, 1));
-        textDNAProviderString.setText(configurator.getDnaSoure().toString());
+
         GridData gridData = new GridData();
         gridData = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
         gridData.horizontalIndent = 5;
 //      classificationSelection.setLayoutData(gridData);
-
+        Label nomenclaturalCodeLabel = new Label(composite, SWT.NONE);
+        nomenclaturalCodeLabel.setText("Nomenclatural Code");
         nomenclaturalCodeSelectionCombo = new Combo(composite, SWT.BORDER| SWT.READ_ONLY);
         nomenclaturalCodeSelectionCombo.setLayoutData(gridData);
+        nomenclaturalCodeSelectionCombo.add(" - ");
         for(NomenclaturalCode code: NomenclaturalCode.values()){
             nomenclaturalCodeSelectionCombo.add(code.getKey());
         }
-        int index = 0;
-        if (configurator.getNomenclaturalCode() != null){
-            for (String label : nomenclaturalCodeSelectionCombo.getItems()){
-                if (label.equals(configurator.getNomenclaturalCode().getKey())){
-                    nomenclaturalCodeSelectionCombo.select(index);
 
-                }
-                index++;
-            }
-        }
+
 
         // TODO remember last selection
         nomenclaturalCodeSelectionCombo.addSelectionListener(this);
@@ -276,10 +264,31 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
             allowOverride = preference.isAllowOverride();
         }
 
-        if (!override){
-            //composite.setEnabled(false);
-            PreferencesUtil.recursiveSetEnabled(composite, override);
+        checkAllowOverride = new Button(composite, SWT.CHECK);
+        if (isAdminPreference){
+            checkAllowOverride.setSelection(allowOverride);
+            checkAllowOverride.setText(Messages.AbcdImportPreference_allow_override);
+            checkAllowOverride
+                .setToolTipText(Messages.AbcdImportPreference_allow_override_tooltip);
+        }else{
+            checkAllowOverride.setSelection(override);
+            checkAllowOverride.setText(Messages.AbcdImportPreference_override);
+            checkAllowOverride
+                .setToolTipText(Messages.AbcdImportPreference_override_tooltip);
         }
+        checkAllowOverride.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                if (isAdminPreference){
+                    allowOverride = !allowOverride;
+                }else{
+                    override = !override;
+                }
+                setApply(true);
+            }
+
+        });
+        setSelections();
 
         return composite;
     }
@@ -292,7 +301,7 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
         if (e.getSource().equals(overrideCombo)) {
             override = overrideCombo.getText().equals(LocalOrDefaultEnum.Local.getLabel())?true:false;
         }
-        PreferencesUtil.recursiveSetEnabled(composite, override);
+       // PreferencesUtil.recursiveSetEnabled(composite, override);
         setApply(true);
 
     }
@@ -331,9 +340,9 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
     @Override
     protected void performDefaults() {
         configurator = Abcd206ImportConfigurator.NewInstance(null,null);
-        preference = CdmPreference.NewTaxEditorInstance(PreferencePredicate.AbcdImportConfig, configurator.toString());
-        preference.setAllowOverride(true);
-        super.performDefaults();
+        override = true;
+        setSelections();
+        setApply(true);
     }
 
     @Override
@@ -355,62 +364,37 @@ public class AbcdImportPreference extends CdmPreferencePage implements IE4Prefer
                 PreferencesUtil.prefOverrideKey(PreferencePredicate.AbcdImportConfig.getKey()), true) != null? PreferencesUtil.getBooleanValue(
                         PreferencesUtil.prefOverrideKey(PreferencePredicate.AbcdImportConfig.getKey()), true):false;
 
-        String configString;
-        if (!override){
-            configString = preference.getValue();
-        }else{
-            configString = PreferencesUtil.getStringValue(PreferencePredicate.AbcdImportConfig.getKey(), true);
-        }
-        if(configString!=null){
-            String[] configArray = configString.split(";"); //$NON-NLS-1$
-
-            for (String configItem: configArray){
-                String[] keyValue = configItem.split(":"); //$NON-NLS-1$
-                if(keyValue.length==2){
-                    String keyString = keyValue[0];
-                    String valueString = keyValue[1];
-                    if (keyString.equals("ignoreImportOfExistingSpecimen")){ //$NON-NLS-1$
-                        configurator.setIgnoreImportOfExistingSpecimen(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("addIndividualsAssociationsSuchAsSpecimenAndObservations")){ //$NON-NLS-1$
-                        configurator.setAddIndividualsAssociationsSuchAsSpecimenAndObservations(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("reuseExistingTaxaWhenPossible")){ //$NON-NLS-1$
-                        configurator.setReuseExistingTaxaWhenPossible(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("ignoreAuthorship")){ //$NON-NLS-1$
-                        configurator.setIgnoreAuthorship(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("addMediaAsMediaSpecimen")){ //$NON-NLS-1$
-                        configurator.setAddMediaAsMediaSpecimen(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("reuseExistingMetaData")){ //$NON-NLS-1$
-                        configurator.setReuseExistingMetaData(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("reuseExistingDescriptiveGroups")){ //$NON-NLS-1$
-                        configurator.setReuseExistingDescriptiveGroups(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("allowReuseOtherClassifications")){ //$NON-NLS-1$
-                        configurator.setAllowReuseOtherClassifications(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("deduplicateReferences")){ //$NON-NLS-1$
-                        configurator.setDeduplicateReferences(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("deduplicateClassifications")){ //$NON-NLS-1$
-                        configurator.setDeduplicateClassifications(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("moveNewTaxaToDefaultClassification")){ //$NON-NLS-1$
-                        configurator.setMoveNewTaxaToDefaultClassification(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("mapUnitIdToCatalogNumber")){ //$NON-NLS-1$
-                        configurator.setMapUnitIdToCatalogNumber(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("mapUnitIdToAccessionNumber")){ //$NON-NLS-1$
-                        configurator.setMapUnitIdToAccessionNumber(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("mapUnitIdToBarcode")){ //$NON-NLS-1$
-                        configurator.setMapUnitIdToBarcode(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("overwriteExistingSpecimens")){ //$NON-NLS-1$
-                        configurator.setOverwriteExistingSpecimens(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("nomenclaturalCode")){ //$NON-NLS-1$
-                        configurator.setNomenclaturalCode(NomenclaturalCode.fromString(valueString));
-                    }else if (keyString.equals("getSiblings")){ //$NON-NLS-1$
-                        configurator.setGetSiblings(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("removeCountryFromLocalityText")){ //$NON-NLS-1$
-                        configurator.setRemoveCountryFromLocalityText(Boolean.valueOf(valueString));
-                    }else if (keyString.equals("dnaSource")){ //$NON-NLS-1$
-                        configurator.setDnaSoure(URI.create(valueString));
-                    }
+       configurator = PreferencesUtil.getLocalAbcdImportConfigurator();
+    }
 
+    protected void setSelections(){
+        checkBoxMediaSpecimen.setSelection(configurator.isAddMediaAsMediaSpecimen());
+        checkBoxIgnoreExisting.setSelection(configurator.isIgnoreImportOfExistingSpecimen());
+        checkBoxIgnoreAuthorship.setSelection(configurator.isIgnoreAuthorship());
+        checkBoxMapUnitIdToCatalogNumber.setSelection(configurator.isMapUnitIdToCatalogNumber());
+        checkBoxMapUnitIdToAccessionNumber.setSelection(configurator.isMapUnitIdToAccessionNumber());
+        checkBoxMapUnitIdToBarcode.setSelection(configurator.isMapUnitIdToBarcode());
+        checkBoxRemoveCountry.setSelection(configurator.isRemoveCountryFromLocalityText());
+        checkBoxImportSiblings.setSelection(configurator.isGetSiblings());
+        checkBoxAddIndividualsAssociations.setSelection(configurator.isAddIndividualsAssociationsSuchAsSpecimenAndObservations());
+        checkBoxReuseDescriptiveGroups.setSelection(configurator.isReuseExistingDescriptiveGroups());
+        checkBoxReuseExistingTaxa.setSelection(configurator.isReuseExistingTaxaWhenPossible());
+        textDNAProviderString.setText(configurator.getDnaSoure().toString());
+        int index = 0;
+        if (configurator.getNomenclaturalCode() != null){
+            for (String label : nomenclaturalCodeSelectionCombo.getItems()){
+                if (label.equals(configurator.getNomenclaturalCode().getKey())){
+                    nomenclaturalCodeSelectionCombo.select(index);
                 }
+                index++;
             }
+        }else{
+            nomenclaturalCodeSelectionCombo.select(index);
+        }
+        if (isAdminPreference){
+            checkAllowOverride.setSelection(allowOverride);
+        }else{
+            checkAllowOverride.setSelection(override);
         }
     }
 
index e0c8273683a3068e3ed0c1af4367b7a651f82369..fe7ab3d80a82f04aa93ee6c691e45ba0ad0217e7 100755 (executable)
@@ -10,6 +10,7 @@ package eu.etaxonomy.taxeditor.preference;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
 import java.util.List;
 import java.util.UUID;
 
@@ -265,12 +266,17 @@ abstract public class GeneralTermPreference extends CdmPreferencePage implements
         }
         Object[] checkedElements = treeComposite.getViewer().getCheckedElements();
         List<UUID> listUIIDChecked = new ArrayList<>();
+        Collection<TermDto> preferredTermDtos = new ArrayList<>();
         List<DefinedTermBase> preferredTerms = new ArrayList<>();
         for (Object o : checkedElements) {
             if(o instanceof TermDto){
                 TermDto termDto = (TermDto) o;
                 listUIIDChecked.add(termDto.getUuid());
-                preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
+                preferredTermDtos.add(termDto);
+                if (vocabularies.size() > 1){
+                    preferredTerms.add(CdmStore.getService(ITermService.class).load(termDto.getUuid()));
+                }
+
             }
         }
         String saveCheckedElements = StringUtils.join(listUIIDChecked, ";"); //$NON-NLS-1$
@@ -282,8 +288,11 @@ abstract public class GeneralTermPreference extends CdmPreferencePage implements
         }else if (text.equals(LocalOrDefaultEnum.Local.getLabel())){
             PreferencesUtil.setBooleanValue(PreferencesUtil.createOverridePreferenceString(predicate.getKey()), true);
         }
-
-        CdmStore.getTermManager().setPreferredTerms(preferredTerms, TermStore.getTerms(type, null));
+        if (vocabularies.size() == 1){
+            CdmStore.getTermManager().setPreferredTermsByDto(preferredTermDtos, vocabularies.get(0));
+        }else{
+            CdmStore.getTermManager().setPreferredTerms(preferredTerms, TermStore.getTerms(type, null));
+        }
         PreferencesUtil.firePreferencesChanged(this.getClass());
         return true;
     }
index bb2b08ff4ed179ed6dadb1ea5ddc5c15e6943856..a5072d45d0419454ed5a0917985f435dfcdb34d2 100644 (file)
@@ -43,6 +43,7 @@ import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeConfigurator;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.ITermTreeService;
+import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.api.service.config.FindTaxaAndNamesConfiguratorImpl;
 import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator;
 import eu.etaxonomy.cdm.common.CdmUtils;
@@ -51,6 +52,7 @@ import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
 import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate;
@@ -62,6 +64,7 @@ import eu.etaxonomy.cdm.model.term.IDefinedTerm;
 import eu.etaxonomy.cdm.model.term.ISimpleTerm;
 import eu.etaxonomy.cdm.model.term.TermBase;
 import eu.etaxonomy.cdm.model.term.TermTree;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
 import eu.etaxonomy.cdm.strategy.match.DefaultMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.FieldMatcher;
 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
@@ -72,6 +75,7 @@ import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.model.NomenclaturalCodeHelper;
 import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSource;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.TermStore;
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 import eu.etaxonomy.taxeditor.ui.dialog.DefaultLanguageDialog;
 
@@ -92,6 +96,9 @@ public class PreferencesUtil implements IPreferenceKeys {
     public static final String P2_REPOSITORIES_DELIM = ",";
     public static final String P2_REPOSITORY_FIELDS_DELIM = ";";
     public static final String SUBJECT_DELIM = "/";
+
+    private static TermTree preferredNameFeatureTree;
+
     private final static Logger logger = Logger.getLogger(PreferencesUtil.class);
 
     public static IPreferenceStore getPreferenceStore() {
@@ -1735,6 +1742,39 @@ public class PreferencesUtil implements IPreferenceKeys {
         return getPreferenceStore().contains(prefKey(prefKey));
     }
 
+    /**
+     *
+     */
+    public static TermTree getPreferredFeatureTreeForNameDescription() {
+        if(preferredNameFeatureTree != null){
+            return preferredNameFeatureTree;
+        }
+        createPreferredFeatureTreeForNameDescription();
+        return preferredNameFeatureTree;
+
+    }
+
+    public static void createPreferredFeatureTreeForNameDescription() {
+
+        CdmPreferenceCache cache = CdmPreferenceCache.instance();
+        CdmPreference pref = cache.get(PreferencePredicate.NameFeatures.getKey());
+        List<Feature> terms;
+        boolean override = PreferencesUtil.getBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.NameFeatures.getKey()));
+        if (pref != null ){
+            List<UUID> uuids = PreferencesUtil.createUUIDListFromStringPref(pref.getValue());
+            terms = CdmStore.getTermManager().getTerms(uuids, Feature.class);
+        }else if (override){
+            terms = CdmStore.getTermManager().getPreferredTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()));
+        }else{
+            terms = new ArrayList();
+            terms.addAll(TermStore.getTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()), null));
+        }
+        terms.remove(Feature.PROTOLOGUE());
+        preferredNameFeatureTree = TermTree.NewInstance(terms);
+
+
+    }
+
 
 
 }
index de74143877c5f0d90d29673989332902a7711ab4..740c53bc17382a71a5a0503bda1dd392819fed4f 100644 (file)
@@ -32,11 +32,8 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.commands.ICommandService;
 import org.eclipse.ui.handlers.IHandlerService;
 
-import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.TermType;
-import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
@@ -49,7 +46,7 @@ import eu.etaxonomy.taxeditor.store.TermStore;
  * @created 12.06.2009
  * @version 1.0
  */
-public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends CdmPreferencePage implements IConversationEnabled{
+public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends CdmPreferencePage {
 
        private Button toggleButton;
        protected HashMap<DefinedTermBase<T>, Button> menuButtons;
@@ -61,7 +58,7 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
 
        private boolean state = true;
        private final boolean vocabularyIsEditable;
-       private ConversationHolder conversation;
+
 
        /**
         * Constructs a new menu preference page.
@@ -223,9 +220,7 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
        @Override
     public void init() {
            setPreferenceStore(PreferencesUtil.getPreferenceStore());
-           if(CdmStore.isActive()) {
-               getConversationHolder().bind();
-           }
+
        }
 
        /**
@@ -247,8 +242,6 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                        return false;
                }
 
-               getConversationHolder().commit(true);
-
                if(tableViewer!=null){
                    List<T> preferredTerms = new ArrayList<T>();
                    for (Object element : tableViewer.getCheckedElements()){
@@ -279,16 +272,5 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
 
        protected abstract TermType getTermType();
 
-       @Override
-       public ConversationHolder getConversationHolder() {
-               if(conversation == null){
-                       conversation = CdmStore.createConversation();
-               }
-               return conversation;
-       }
 
-       @Override
-       public void update(CdmDataChangeMap changeEvents) {
-               // implement where needed
-       }
 }
index c0e7ccb1ac8ae4b21fce3893b58a4dd72e24ea5c..6369dd0e94b85b1a27aacbf8491378550d465b69 100755 (executable)
@@ -118,8 +118,6 @@ public class CommonNameLanguagePreferences extends AbstractMenuPreferences<Langu
             return false;
         }
 
-        getConversationHolder().commit(true);
-
         if(tableViewer!=null){
             List<UUID> preferredTermUuids = new ArrayList<UUID>();
             if (tableViewer.getCheckedElements().length == tableViewer.getTable().getItemCount()){
index bb76a052bf81a05fbe8d486fb59af88b3b73b45e..9645d5bcea26f3c83fb7f938f0fcb06c380e349c 100755 (executable)
@@ -11,10 +11,13 @@ package eu.etaxonomy.taxeditor.preference.menu;
 import java.util.ArrayList;
 import java.util.List;
 
-import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.api.service.IVocabularyService;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.term.TermType;
-import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;
-import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
+import eu.etaxonomy.taxeditor.preference.GeneralTermPreference;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -22,30 +25,48 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @since 14.05.2019
  *
  */
-public class NameFeatureMenuPreference extends AbstractMenuPreferences<Feature> {
+public class NameFeatureMenuPreference extends GeneralTermPreference {
     /** Constant <code>PLUGIN_ID="eu.etaxonomy.taxeditor.preferences.feat"{trunked}</code> */
     public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.nameFeature"; //$NON-NLS-1$
 
     /**
-     * <p>Constructor for FeatureMenuPreferences.</p>
+     * <p>Constructor for NameFeatureMenuPreference.</p>
      */
     public NameFeatureMenuPreference() {
-        super("Name Feature Preferences", //$NON-NLS-1$
-                Messages.FeatureMenuPreferences_display,
-                false);
+        super();
+        setLocalPref(true);
+        setPredicate(PreferencePredicate.NameFeatures);
+        type = TermType.Feature;
     }
 
-    /** {@inheritDoc} */
     @Override
-    protected TermType getTermType() {
-        return TermType.Feature;
+    protected List<TermVocabularyDto> getVocabulariesFromPreference() {
+        // TODO Auto-generated method stub
+        return null;
     }
+
     @Override
-    protected List<Feature> getTerms(){
-        if(CdmStore.isActive() ){
-            List<Feature> termList = new ArrayList(TermEditorInput.getDefaultNameFeatureTree().getDistinctTerms());
-            return termList;
+    public boolean performOk(){
+        boolean result = super.performOk();
+        if (result){
+            PreferencesUtil.createPreferredFeatureTreeForNameDescription();
         }
-        return new ArrayList<>();
+        return true;
+
     }
+
+    @Override
+    protected void initialiseVocabularies() {
+
+        if (getVocabularies() != null) {
+            getVocabularies().clear();
+        }
+        List<TermVocabularyDto> vocs = new ArrayList<>();
+        vocs.add(CdmStore.getService(IVocabularyService.class).findVocabularyDtoByVocabularyUuid(VocabularyEnum.NameFeature.getUuid()));
+
+        setVocabularies(vocs);
+    }
+
+
+
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/RankMenuPreferences.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/RankMenuPreferences.java
deleted file mode 100644 (file)
index 904d3fa..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
-* Copyright (C) 2007 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.preference.menu;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-
-import eu.etaxonomy.cdm.model.term.TermType;
-import eu.etaxonomy.cdm.model.name.Rank;
-import eu.etaxonomy.taxeditor.l10n.Messages;
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
-
-/**
- * Allows the user to choose which <code>Rank</code>s to display in the
- * <code>PropertySheet</code> drop-down menu for <code>TaxonNameBase</code>.
- *
- * @author p.ciardelli
- * @author n.hoffmann
- * @created 17.09.2008
- * @version 1.0
- */
-public class RankMenuPreferences extends AbstractMenuPreferences<Rank> {
-
-       /** Constant <code>PLUGIN_ID="eu.etaxonomy.taxeditor.preferences.rank"{trunked}</code> */
-       public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.preferences.ranks"; //$NON-NLS-1$
-
-       /**
-        * <p>Constructor for RankMenuPreferences.</p>
-        */
-       public RankMenuPreferences() {
-               super("Rank Preferences", //$NON-NLS-1$
-                               Messages.RankMenuPreferences_display,
-                               false);
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       protected void createAdditionalContent(Composite container) {
-
-               final Button checkbox = new Button(container, SWT.CHECK);
-               checkbox.setText(Messages.RankMenuPreferences_sort);
-
-               checkbox.setSelection(PreferencesUtil.getSortRanksHierarchichally());
-
-               checkbox.addSelectionListener(new SelectionAdapter() {
-                       /* (non-Javadoc)
-                        * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
-                        */
-                       @Override
-                       public void widgetSelected(SelectionEvent e) {
-
-                               PreferencesUtil.setSortRanksHierarchichally(checkbox.getSelection());
-
-                       }
-               });
-
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       protected TermType getTermType() {
-               return TermType.Rank;
-       }
-
-}
index bc8a767f23b6515a88bfe1632d93a7339b9558e6..75ba476f2029d448192b8e856855513c4cea83f4 100644 (file)
@@ -21,6 +21,8 @@ import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.term.TermBase;
 import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.term.TermVocabulary;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
 import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -42,6 +44,7 @@ public class TermManager {
 
     private Map<Object, List> cachedTermMap = new HashMap<>();
 
+
     //new cache for features!!
     //dinstinguish preferences for both
     //load at start
@@ -69,10 +72,10 @@ public class TermManager {
         * @return
         */
        public <T extends DefinedTermBase> List<T> getPreferredTerms(TermVocabulary<T> termVocabulary){
-           List terms = cachedTermMap.get(termVocabulary);
+           List terms = cachedTermMap.get(termVocabulary.getUuid());
            if(terms==null){
                terms = getFilteredTerms(new ArrayList<T>(TermStore.getTerms(termVocabulary,null)));
-               cachedTermMap.put(termVocabulary, terms);
+               cachedTermMap.put(termVocabulary.getUuid(), terms);
            }
            return terms;
        }
@@ -87,10 +90,10 @@ public class TermManager {
        if (comp == null){
            comp = new DefaultTermComparator<T>();
        }
-       List terms = cachedTermMap.get(termVocabulary);
+       List terms = cachedTermMap.get(termVocabulary.getUuid());
        if(terms==null){
            terms = getFilteredTerms(new ArrayList<T>(TermStore.getTerms(termVocabulary,comp)));
-           cachedTermMap.put(termVocabulary, terms);
+           cachedTermMap.put(termVocabulary.getUuid(), terms);
        }
        terms.sort(comp);
        return terms;
@@ -130,7 +133,7 @@ public class TermManager {
                                }
                        }
 
-                       if(!PreferencesUtil.getBooleanValue(getPrefName(term))){
+                       if(PreferencesUtil.getBooleanValue(getPrefName(term))){
                                filteredTerms.add(term);
                        }
                }
@@ -141,7 +144,9 @@ public class TermManager {
     private <T extends TermBase> String getPrefName(T term) {
         return term.getTermType()!=null?term.getTermType().toString()+term.getUuid().toString():""+term.getUuid().toString();
     }
-
+    private String getPrefNameByDto(TermDto term) {
+        return term.getTermType()!=null?term.getTermType().toString()+term.getUuid().toString():""+term.getUuid().toString();
+    }
 
        private <T extends DefinedTermBase> TermVocabulary<T> getTermVocabulary(Collection<T> initialTerms){
 
@@ -153,6 +158,17 @@ public class TermManager {
            return null;
        }
 
+       private  TermVocabularyDto getTermVocabularyByDto(Collection<TermDto> initialTerms){
+
+        TermType result = null;
+        if(!initialTerms.isEmpty()){
+            TermDto entity = initialTerms.iterator().next();
+            return entity.getVocabularyDto();
+        }
+        return null;
+    }
+
+
        /**
         * Generic method to set term preferences
         *
@@ -168,20 +184,44 @@ public class TermManager {
                for(TermBase term : initialTerms){
                        if(! preferredTerms.contains(term)){
                                undesiredTermUuids.add(term.getUuid());
-                               PreferencesUtil.setBooleanValue(getPrefName(term), true);
+                               PreferencesUtil.setBooleanValue(getPrefName(term), false);
                        }else{
-                           PreferencesUtil.setBooleanValue(getPrefName(term), false);
+                           PreferencesUtil.setBooleanValue(getPrefName(term), true);
                        }
                }
-               //if (initialTerms.iterator().hasNext()){
-                   clearTermMapForTermVoc(voc);
-               //}
+               clearTermMapForTermVoc(voc.getUuid());
 
        }
 
+       /**
+     * Generic method to set term preferences
+     *
+     * @param preferredTerms a {@link java.util.List} object.
+     * @param initialTerms a {@link java.util.List} object.
+     * @param <T> a T object.
+     */
+    public void setPreferredTermsByDto(Collection<TermDto> preferredTerms, TermVocabularyDto vocDto){
+
+
+        Collection<UUID> undesiredTermUuids = new ArrayList<UUID>();
+
+        for(TermDto term : vocDto.getTerms()){
+            if(!preferredTerms.contains(term)){
+                undesiredTermUuids.add(term.getUuid());
+                PreferencesUtil.setBooleanValue(getPrefNameByDto(term), false);
+            }else{
+                PreferencesUtil.setBooleanValue(getPrefNameByDto(term), true);
+            }
+        }
+        //if (initialTerms.iterator().hasNext()){
+            clearTermMapForTermVoc(vocDto.getUuid());
+        //}
+
+    }
+
 
-       public <T extends DefinedTermBase> void clearTermMapForTermVoc(TermVocabulary<T> voc){
-           cachedTermMap.remove(voc);
+       public <T extends DefinedTermBase> void clearTermMapForTermVoc(UUID vocUuid){
+           cachedTermMap.remove(vocUuid);
        }
 
        public void clearTermMapForTermType(TermType termType){
index 1e1ef5589cadb5cfc6f2824ed592a29a54192059..5ef0f7ce9ea1f6482de7eb799955382ca7d4b7fc 100644 (file)
@@ -176,9 +176,16 @@ public class SelectionDialogFactory {
                    else{\r
                        //if (parentElement == null){\r
                            List<UUID> uuidList = PreferencesUtil.createUUIDListFromStringPref(PreferencePredicate.AvailableDistributionAreaVocabularies.getKey());\r
-                           UUID[] uuidArray = new UUID[uuidList.size()];\r
-                           uuidList.toArray(uuidArray);\r
+                           UUID[] uuidArray = null;\r
+                           if (uuidList != null){\r
+                               uuidArray = new UUID[uuidList.size()];\r
+                               uuidList.toArray(uuidArray);\r
+\r
+                           }\r
                            return (T)NamedAreaSelectionDialog.select(shell, (NamedArea) currentSelection, null, uuidArray);\r
+\r
+\r
+\r
                        //}\r
                        //return (T) NamedAreaSelectionDialog.select(shell, //conversation,\r
                        //        (NamedArea) currentSelection, parentElement.getClass().getCanonicalName());\r
index fbce4c31d87ba6a52be4e914dc0f1e9ebd536333..cbc98bc97030a52c959609d85373c053a983f51a 100644 (file)
-/**
- *
- */
-package eu.etaxonomy.taxeditor.ui.element;
-
-import java.util.ConcurrentModificationException;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.ui.forms.widgets.Section;
-
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
-import eu.etaxonomy.taxeditor.model.MessagingUtils;
-
-/**
- * @author n.hoffmann
- * @version $Id: $
- */
-public abstract class AbstractCdmFormElement implements ICdmFormElement {
-
-       protected CdmFormFactory formFactory;
-
-       private List<IPropertyChangeListener> propertyChangeListeners;
-
-       private Composite layoutComposite;
-
-       private final Set<Control> controls = new HashSet<Control>();
-
-       private final Set<ICdmFormElement> elements = new HashSet<ICdmFormElement>();
-       private ICdmFormElement parentElement;
-
-       private Color persistentBackgroundColor;
-
-
-       protected AbstractCdmFormElement(CdmFormFactory formFactory, Composite layoutComposite){
-               this.layoutComposite = layoutComposite;
-               this.formFactory = formFactory;
-       }
-
-       public AbstractCdmFormElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
-               this(formFactory, formElement.getLayoutComposite());
-               this.parentElement = formElement;
-//             addControl(layoutComposite);
-       }
-
-       @Override
-    public CdmFormFactory getFormFactory() {
-               return formFactory;
-       }
-
-       /**
-        * Delegates the focus to <code>this</code> elements main input control
-        */
-       public void setFocus(){
-               // Override in subclasses where needed
-       }
-
-       /**
-        * Returns all Controls that are managed by this element
-        *
-        * @return a {@link java.util.Set} object.
-        */
-       @Override
-    public Set<Control> getControls(){
-               return controls;
-       }
-
-       /**
-        * adds the control to the set of controls that are managed by this element
-        *
-        * @param child a {@link org.eclipse.swt.widgets.Control} object.
-        */
-       protected void addControl(Control child){
-               controls.add(child);
-       }
-
-       protected void removeControl(Control child){
-               controls.remove(child);
-       }
-
-       /**
-        * <p>Getter for the field <code>elements</code>.</p>
-        *
-        * @return a {@link java.util.Set} object.
-        */
-       @Override
-    public Set<ICdmFormElement> getElements(){
-               return elements;
-       }
-
-       /**
-        * <p>Getter for the field <code>parentElement</code>.</p>
-        *
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
-        */
-       @Override
-    public ICdmFormElement getParentElement(){
-               return parentElement;
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void addElement(ICdmFormElement element){
-               elements.add(element);
-       }
-
-       /**
-        * Remove all child {@link ICdmFormElement}s and child {@link Control}s
-        * of the given and the element itself.
-        * @param formElement The element to remove
-        */
-       public void removeElementsAndControls(ICdmFormElement formElement){
-           for(ICdmFormElement childElement : formElement.getElements()){
-               // recursion
-               childElement.removeElements();
-
-               // unregister selection arbitrator
-               if(childElement instanceof ISelectableElement){
-                   SelectionArbitrator selectionArbitrator = ((ISelectableElement) childElement).getSelectionArbitrator();
-                   if(selectionArbitrator != null){
-                       formFactory.destroySelectionArbitrator(selectionArbitrator);
-                   }
-               }
-
-               // unregister from property changes
-               formFactory.removePropertyChangeListener(childElement);
-
-               // dispose of the controls
-               removeControls(childElement);
-           }
-           removeControls(formElement);
-           this.elements.remove(formElement);
-       }
-
-       /**
-        * Removes all child {@link ICdmFormElement}s and child {@link Control}s
-        * and the element itself.
-        */
-       @Override
-    public void removeElements(){
-        for (Iterator<ICdmFormElement> iterator = getElements().iterator();iterator.hasNext();) {
-            ICdmFormElement childElement = iterator.next();
-                       // recursion
-                       childElement.removeElements();
-
-                       // unregister selection arbitrator
-                       if(childElement instanceof ISelectableElement){
-                               SelectionArbitrator selectionArbitrator = ((ISelectableElement) childElement).getSelectionArbitrator();
-                               if(selectionArbitrator != null){
-                                       formFactory.destroySelectionArbitrator(selectionArbitrator);
-                               }
-                       }
-
-                       // unregister from property changes
-                       formFactory.removePropertyChangeListener(childElement);
-
-                       // dispose of the controls
-                       removeControls(childElement);
-               }
-               if(this instanceof ISelectableElement){
-            SelectionArbitrator selectionArbitrator = ((ISelectableElement) this).getSelectionArbitrator();
-            if(selectionArbitrator != null){
-                formFactory.destroySelectionArbitrator(selectionArbitrator);
-            }
-        }
-               removeControls(this);
-               elements.clear();
-       }
-
-       private void removeControls(ICdmFormElement element){
-               if(element instanceof Section){
-                       ((Section) element).dispose();
-                       element = null;
-               }else{
-                       for(Control control : element.getControls()){
-                               // we added the layoutComposite of the parental element as the layout composite to this formElement
-                               // but we do not want to destroy it.
-                               if(control.equals(element.getLayoutComposite())){
-                                       continue;
-                               }else{
-                                       control.dispose();
-                                       control = null;
-                               }
-                       }
-               }
-       }
-
-       /**
-        * <p>Getter for the field <code>layoutComposite</code>.</p>
-        *
-        * @return a {@link org.eclipse.swt.widgets.Composite} object.
-        */
-       @Override
-    public Composite getLayoutComposite() {
-               return layoutComposite;
-       }
-
-       /**
-        * <p>Setter for the field <code>layoutComposite</code>.</p>
-        *
-        * @param layoutComposite a {@link org.eclipse.swt.widgets.Composite} object.
-        */
-       public void setLayoutComposite(Composite layoutComposite){
-               this.layoutComposite = layoutComposite;
-       }
-
-       /**
-        * <p>Getter for the field <code>propertyChangeListeners</code>.</p>
-        *
-        * @return a {@link java.util.Set} object.
-        */
-       @Override
-    public List<IPropertyChangeListener> getPropertyChangeListeners() {
-               return propertyChangeListeners;
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void setPropertyChangeListeners(List<IPropertyChangeListener> propertyChangeListeners){
-               this.propertyChangeListeners = propertyChangeListeners;
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public void firePropertyChangeEvent(CdmPropertyChangeEvent event) {
-           //TODO: replace propertyChangeListeners with formFactory.getPropertyChangeListeners() and remove member propertyChangeListeners from AbstractCdmFormElement
-               Assert.isNotNull(propertyChangeListeners, "Property change listeners are not present");
-
-               try{
-                       for(Object listener : propertyChangeListeners){
-                               ((IPropertyChangeListener)listener).propertyChange(event);
-                       }
-               }catch(ConcurrentModificationException e){
-                       // There are two cases that produce a CME.
-                       // Described here: http://dev.e-taxonomy.eu/trac/ticket/2363#comment:2
-                       // and here: http://dev.e-taxonomy.eu/trac/ticket/2438
-                       // Ignoring the CME because nothing bad is happening
-                       MessagingUtils.warn(getClass(), "ConcurrentModificationException. Can be ignored.");
-               }
-       }
-
-       /**
-        * Fires a {@link CdmPropertyChangeEvent} with the given object as source.
-        *
-        * @param object the object on which the property changed
-        */
-       public void firePropertyChangeEvent(Object object){
-               firePropertyChangeEvent(object, null);
-       }
-
-       /**
-        * Fires a {@link CdmPropertyChangeEvent} with the given object as source also containing the
-        * originating event
-        *
-        * @param object the object on which the property changed
-        * @param originatingEvent the originating event
-        */
-       public void firePropertyChangeEvent(Object object, PropertyChangeEvent originatingEvent){
-               firePropertyChangeEvent(new CdmPropertyChangeEvent(object, originatingEvent));
-       }
-
-
-       /**
-        * {@inheritDoc}
-        *
-        * This method gets called whenever the toolkit this composite was created with gets a property change notification.
-        *
-        * It is good advice to check whether the PropertyChangeEvent is destined for the implementing composite.
-        * Implementations should also check for null PropertyChangeEvents and return immediately in that case.
-        * @see eu.etaxonomy.taxeditor.ui.element.ICdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
-        */
-       @Override
-    public void propertyChange(PropertyChangeEvent event) {
-               // implement in subclasses
-       }
-
-       /** {@inheritDoc} */
-       @Override
-    public boolean containsFormElement(ICdmFormElement formElement){
-               if(formElement == this){
-                       return true;
-               }else{
-                       for(ICdmFormElement element : getElements()){
-                               boolean contains = element.containsFormElement(formElement);
-                               if(contains == true){
-                                       return true;
-                               }
-                       }
-                       return false;
-               }
-       }
-
-       @Override
-    public void refresh() {
-               // empty default implementation
-       }
-
-
-       /** {@inheritDoc} */
-       @Override
-       public void setBackground(Color color) {
-               for(ICdmFormElement element : getElements()){
-                       element.setBackground(color);
-               }
-       }
-
-       @Override
-       public void setPersistentBackground(Color color) {
-               persistentBackgroundColor = color;
-               setBackground(color);
-       }
-
-       @Override
-       public Color getPersistentBackground() {
-               return persistentBackgroundColor;
-       }
-
-       public Color getColor(String colorId){
-               return AbstractUtility.getColor(colorId);
-       }
-}
+/**\r
+ *\r
+ */\r
+package eu.etaxonomy.taxeditor.ui.element;\r
+\r
+import java.util.ConcurrentModificationException;\r
+import java.util.HashSet;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Set;\r
+\r
+import org.eclipse.core.runtime.Assert;\r
+import org.eclipse.jface.util.IPropertyChangeListener;\r
+import org.eclipse.jface.util.PropertyChangeEvent;\r
+import org.eclipse.swt.graphics.Color;\r
+import org.eclipse.swt.layout.GridData;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.ui.forms.widgets.Section;\r
+import org.eclipse.ui.forms.widgets.TableWrapData;\r
+\r
+import eu.etaxonomy.taxeditor.model.AbstractUtility;\r
+import eu.etaxonomy.taxeditor.model.MessagingUtils;\r
+\r
+/**\r
+ * @author n.hoffmann\r
+ * @version $Id: $\r
+ */\r
+public abstract class AbstractCdmFormElement implements ICdmFormElement {\r
+\r
+       protected CdmFormFactory formFactory;\r
+\r
+       private List<IPropertyChangeListener> propertyChangeListeners;\r
+\r
+       private Composite layoutComposite;\r
+\r
+       private final Set<Control> controls = new HashSet<Control>();\r
+\r
+       private final Set<ICdmFormElement> elements = new HashSet<ICdmFormElement>();\r
+       private ICdmFormElement parentElement;\r
+\r
+       private Color persistentBackgroundColor;\r
+\r
+\r
+       protected AbstractCdmFormElement(CdmFormFactory formFactory, Composite layoutComposite){\r
+               this.layoutComposite = layoutComposite;\r
+               this.formFactory = formFactory;\r
+       }\r
+\r
+       public AbstractCdmFormElement(CdmFormFactory formFactory, ICdmFormElement formElement) {\r
+               this(formFactory, formElement.getLayoutComposite());\r
+               this.parentElement = formElement;\r
+//             addControl(layoutComposite);\r
+       }\r
+\r
+       @Override\r
+    public CdmFormFactory getFormFactory() {\r
+               return formFactory;\r
+       }\r
+\r
+       /**\r
+        * Delegates the focus to <code>this</code> elements main input control\r
+        */\r
+       public void setFocus(){\r
+               // Override in subclasses where needed\r
+       }\r
+\r
+       /**\r
+        * Returns all Controls that are managed by this element\r
+        *\r
+        * @return a {@link java.util.Set} object.\r
+        */\r
+       @Override\r
+    public Set<Control> getControls(){\r
+               return controls;\r
+       }\r
+\r
+       /**\r
+        * adds the control to the set of controls that are managed by this element\r
+        *\r
+        * @param child a {@link org.eclipse.swt.widgets.Control} object.\r
+        */\r
+       protected void addControl(Control child){\r
+               controls.add(child);\r
+       }\r
+\r
+       protected void removeControl(Control child){\r
+               controls.remove(child);\r
+       }\r
+\r
+       /**\r
+        * <p>Getter for the field <code>elements</code>.</p>\r
+        *\r
+        * @return a {@link java.util.Set} object.\r
+        */\r
+       @Override\r
+    public Set<ICdmFormElement> getElements(){\r
+               return elements;\r
+       }\r
+\r
+       /**\r
+        * <p>Getter for the field <code>parentElement</code>.</p>\r
+        *\r
+        * @return a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.\r
+        */\r
+       @Override\r
+    public ICdmFormElement getParentElement(){\r
+               return parentElement;\r
+       }\r
+\r
+       /** {@inheritDoc} */\r
+       @Override\r
+    public void addElement(ICdmFormElement element){\r
+               elements.add(element);\r
+       }\r
+\r
+       /**\r
+        * Remove all child {@link ICdmFormElement}s and child {@link Control}s\r
+        * of the given and the element itself.\r
+        * @param formElement The element to remove\r
+        */\r
+       public void removeElementsAndControls(ICdmFormElement formElement){\r
+           for(ICdmFormElement childElement : formElement.getElements()){\r
+               // recursion\r
+               childElement.removeElements();\r
+\r
+               // unregister selection arbitrator\r
+               if(childElement instanceof ISelectableElement){\r
+                   SelectionArbitrator selectionArbitrator = ((ISelectableElement) childElement).getSelectionArbitrator();\r
+                   if(selectionArbitrator != null){\r
+                       formFactory.destroySelectionArbitrator(selectionArbitrator);\r
+                   }\r
+               }\r
+\r
+               // unregister from property changes\r
+               formFactory.removePropertyChangeListener(childElement);\r
+\r
+               // dispose of the controls\r
+               removeControls(childElement);\r
+           }\r
+           removeControls(formElement);\r
+           this.elements.remove(formElement);\r
+       }\r
+\r
+       /**\r
+        * Removes all child {@link ICdmFormElement}s and child {@link Control}s\r
+        * and the element itself.\r
+        */\r
+       @Override\r
+    public void removeElements(){\r
+        for (Iterator<ICdmFormElement> iterator = getElements().iterator();iterator.hasNext();) {\r
+            ICdmFormElement childElement = iterator.next();\r
+                       // recursion\r
+                       childElement.removeElements();\r
+\r
+                       // unregister selection arbitrator\r
+                       if(childElement instanceof ISelectableElement){\r
+                               SelectionArbitrator selectionArbitrator = ((ISelectableElement) childElement).getSelectionArbitrator();\r
+                               if(selectionArbitrator != null){\r
+                                       formFactory.destroySelectionArbitrator(selectionArbitrator);\r
+                               }\r
+                       }\r
+\r
+                       // unregister from property changes\r
+                       formFactory.removePropertyChangeListener(childElement);\r
+\r
+                       // dispose of the controls\r
+                       removeControls(childElement);\r
+               }\r
+               if(this instanceof ISelectableElement){\r
+            SelectionArbitrator selectionArbitrator = ((ISelectableElement) this).getSelectionArbitrator();\r
+            if(selectionArbitrator != null){\r
+                formFactory.destroySelectionArbitrator(selectionArbitrator);\r
+            }\r
+        }\r
+               removeControls(this);\r
+               elements.clear();\r
+       }\r
+\r
+       private void removeControls(ICdmFormElement element){\r
+               if(element instanceof Section){\r
+                       ((Section) element).dispose();\r
+                       element = null;\r
+               }else{\r
+                       for(Control control : element.getControls()){\r
+                               // we added the layoutComposite of the parental element as the layout composite to this formElement\r
+                               // but we do not want to destroy it.\r
+                               if(control.equals(element.getLayoutComposite())){\r
+                                       continue;\r
+                               }else{\r
+                                       control.dispose();\r
+                                       control = null;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+       /**\r
+        * <p>Getter for the field <code>layoutComposite</code>.</p>\r
+        *\r
+        * @return a {@link org.eclipse.swt.widgets.Composite} object.\r
+        */\r
+       @Override\r
+    public Composite getLayoutComposite() {\r
+               return layoutComposite;\r
+       }\r
+\r
+       /**\r
+        * <p>Setter for the field <code>layoutComposite</code>.</p>\r
+        *\r
+        * @param layoutComposite a {@link org.eclipse.swt.widgets.Composite} object.\r
+        */\r
+       public void setLayoutComposite(Composite layoutComposite){\r
+               this.layoutComposite = layoutComposite;\r
+       }\r
+\r
+       public void addIndent(int indent)\r
+       {  this.layoutComposite = formFactory.createComposite(layoutComposite);\r
+\r
+           if (this.layoutComposite.getParent().getLayoutData() instanceof TableWrapData){\r
+               TableWrapData tableWrap = (TableWrapData)this.layoutComposite.getParent().getLayoutData();\r
+               tableWrap.indent = indent;\r
+\r
+               this.layoutComposite.setLayoutData(tableWrap);\r
+           }\r
+           if (this.layoutComposite.getLayoutData() instanceof GridData){\r
+               GridData gridData = new GridData();\r
+               gridData.verticalIndent = indent;\r
+            this.layoutComposite.setLayoutData(gridData);\r
+\r
+        }\r
+       }\r
+       /**\r
+        * <p>Getter for the field <code>propertyChangeListeners</code>.</p>\r
+        *\r
+        * @return a {@link java.util.Set} object.\r
+        */\r
+       @Override\r
+    public List<IPropertyChangeListener> getPropertyChangeListeners() {\r
+               return propertyChangeListeners;\r
+       }\r
+\r
+       /** {@inheritDoc} */\r
+       @Override\r
+    public void setPropertyChangeListeners(List<IPropertyChangeListener> propertyChangeListeners){\r
+               this.propertyChangeListeners = propertyChangeListeners;\r
+       }\r
+\r
+       /** {@inheritDoc} */\r
+       @Override\r
+    public void firePropertyChangeEvent(CdmPropertyChangeEvent event) {\r
+           //TODO: replace propertyChangeListeners with formFactory.getPropertyChangeListeners() and remove member propertyChangeListeners from AbstractCdmFormElement\r
+               Assert.isNotNull(propertyChangeListeners, "Property change listeners are not present");\r
+\r
+               try{\r
+                       for(Object listener : propertyChangeListeners){\r
+                               ((IPropertyChangeListener)listener).propertyChange(event);\r
+                       }\r
+               }catch(ConcurrentModificationException e){\r
+                       // There are two cases that produce a CME.\r
+                       // Described here: http://dev.e-taxonomy.eu/trac/ticket/2363#comment:2\r
+                       // and here: http://dev.e-taxonomy.eu/trac/ticket/2438\r
+                       // Ignoring the CME because nothing bad is happening\r
+                       MessagingUtils.warn(getClass(), "ConcurrentModificationException. Can be ignored.");\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Fires a {@link CdmPropertyChangeEvent} with the given object as source.\r
+        *\r
+        * @param object the object on which the property changed\r
+        */\r
+       public void firePropertyChangeEvent(Object object){\r
+               firePropertyChangeEvent(object, null);\r
+       }\r
+\r
+       /**\r
+        * Fires a {@link CdmPropertyChangeEvent} with the given object as source also containing the\r
+        * originating event\r
+        *\r
+        * @param object the object on which the property changed\r
+        * @param originatingEvent the originating event\r
+        */\r
+       public void firePropertyChangeEvent(Object object, PropertyChangeEvent originatingEvent){\r
+               firePropertyChangeEvent(new CdmPropertyChangeEvent(object, originatingEvent));\r
+       }\r
+\r
+\r
+       /**\r
+        * {@inheritDoc}\r
+        *\r
+        * This method gets called whenever the toolkit this composite was created with gets a property change notification.\r
+        *\r
+        * It is good advice to check whether the PropertyChangeEvent is destined for the implementing composite.\r
+        * Implementations should also check for null PropertyChangeEvents and return immediately in that case.\r
+        * @see eu.etaxonomy.taxeditor.ui.element.ICdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)\r
+        */\r
+       @Override\r
+    public void propertyChange(PropertyChangeEvent event) {\r
+               // implement in subclasses\r
+       }\r
+\r
+       /** {@inheritDoc} */\r
+       @Override\r
+    public boolean containsFormElement(ICdmFormElement formElement){\r
+               if(formElement == this){\r
+                       return true;\r
+               }else{\r
+                       for(ICdmFormElement element : getElements()){\r
+                               boolean contains = element.containsFormElement(formElement);\r
+                               if(contains == true){\r
+                                       return true;\r
+                               }\r
+                       }\r
+                       return false;\r
+               }\r
+       }\r
+\r
+       @Override\r
+    public void refresh() {\r
+               // empty default implementation\r
+       }\r
+\r
+\r
+       /** {@inheritDoc} */\r
+       @Override\r
+       public void setBackground(Color color) {\r
+               for(ICdmFormElement element : getElements()){\r
+                   element.setBackground(color);\r
+               }\r
+       }\r
+\r
+       @Override\r
+       public void setPersistentBackground(Color color) {\r
+               persistentBackgroundColor = color;\r
+               setBackground(color);\r
+       }\r
+\r
+       @Override\r
+       public Color getPersistentBackground() {\r
+               return persistentBackgroundColor;\r
+       }\r
+\r
+       public Color getColor(String colorId){\r
+               return AbstractUtility.getColor(colorId);\r
+       }\r
+}\r
index 4599dec1d0ff0424471132386005304d3f7b140d..c0dd7275f2fc84c662086e84303c70500bc205f9 100644 (file)
@@ -77,7 +77,7 @@ public class WorkbenchUtility {
     public static MPart findSavablePart(ISelectionElementEditingPart part){
         MPart selectionProvidingPart = part.getSelectionProvidingPart();
         if(selectionProvidingPart!=null){
-            if(selectionProvidingPart.getObject() instanceof ISelectionElementEditingPart){
+            if(selectionProvidingPart.getObject() instanceof ISelectionElementEditingPart && !selectionProvidingPart.getObject().equals(part)){
                 return findSavablePart((ISelectionElementEditingPart) selectionProvidingPart.getObject());
             }
             return selectionProvidingPart;