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;
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;
/**
*
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;
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">
--- /dev/null
+/**
+* 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();
+
+ }
+
+}
+++ /dev/null
-/**
-* 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)));
-//
-// }
-
-}
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;
/**
* @since 23.03.2018
*
*/
-public class AbcdImportProvider extends CdmPreferencePage implements IE4AdminPreferencePage{
+public class AbcdImportProviderAdminPreferencePage extends AbcdImportPreference implements IE4AdminPreferencePage{
private ListComponent biocaseProviderList;
//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;
}
--- /dev/null
+/**
+* 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;
+ }
+
+
+}
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;
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();
+
}
}
// configure the job
job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
job.setUser(true);
+ job.setName(label);
// schedule job
job.schedule();
};
// configure the job
+ job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
+
job.setUser(true);
// schedule job
job.schedule();
*/
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;
*/
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);
}
});
- 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);
}
});
- 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);
}
});
- 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);
}
});
//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);
}
});
- 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);
}
});
- 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);
}
});
- 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
}
});
- 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);
}
});
- 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);
}
});
- 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);
}
});
- 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);
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);
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;
}
if (e.getSource().equals(overrideCombo)) {
override = overrideCombo.getText().equals(LocalOrDefaultEnum.Local.getLabel())?true:false;
}
- PreferencesUtil.recursiveSetEnabled(composite, override);
+ // PreferencesUtil.recursiveSetEnabled(composite, override);
setApply(true);
}
@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
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);
}
}
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.List;
import java.util.UUID;
}
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$
}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;
}
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;
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;
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;
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;
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() {
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);
+
+
+ }
+
}
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;
* @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;
private boolean state = true;
private final boolean vocabularyIsEditable;
- private ConversationHolder conversation;
+
/**
* Constructs a new menu preference page.
@Override
public void init() {
setPreferenceStore(PreferencesUtil.getPreferenceStore());
- if(CdmStore.isActive()) {
- getConversationHolder().bind();
- }
+
}
/**
return false;
}
- getConversationHolder().commit(true);
-
if(tableViewer!=null){
List<T> preferredTerms = new ArrayList<T>();
for (Object element : tableViewer.getCheckedElements()){
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
- }
}
return false;
}
- getConversationHolder().commit(true);
-
if(tableViewer!=null){
List<UUID> preferredTermUuids = new ArrayList<UUID>();
if (tableViewer.getCheckedElements().length == tableViewer.getTable().getItemCount()){
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;
/**
* @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);
+ }
+
+
+
}
+++ /dev/null
-/**
-* 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;
- }
-
-}
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;
private Map<Object, List> cachedTermMap = new HashMap<>();
+
//new cache for features!!
//dinstinguish preferences for both
//load at start
* @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;
}
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;
}
}
- if(!PreferencesUtil.getBooleanValue(getPrefName(term))){
+ if(PreferencesUtil.getBooleanValue(getPrefName(term))){
filteredTerms.add(term);
}
}
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){
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
*
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){
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
-/**
- *
- */
-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
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;