Merge branch 'release/5.6.0' 5.6.0
authorjenkins <jenkins-int@bgbm.org>
Mon, 15 Apr 2019 14:25:58 +0000 (16:25 +0200)
committerjenkins <jenkins-int@bgbm.org>
Mon, 15 Apr 2019 14:25:58 +0000 (16:25 +0200)
398 files changed:
eu.etaxonomy.taxeditor.application/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.application/fragment.e4xmi
eu.etaxonomy.taxeditor.application/pom.xml
eu.etaxonomy.taxeditor.bulkeditor/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.bulkeditor/pom.xml
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorE4.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/BulkEditorE4Composite.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/e4/CellSelectionListener.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/AbstractBulkEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/input/GroupEditorInput.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/e4/ReferencingObjectsViewE4.java
eu.etaxonomy.taxeditor.cdmlib/.classpath.template
eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.cdmlib/build.properties
eu.etaxonomy.taxeditor.cdmlib/lib/mysql-connector-java-5.1.38.jar [deleted file]
eu.etaxonomy.taxeditor.cdmlib/lib/mysql-connector-java-8.0.15.jar [new file with mode: 0644]
eu.etaxonomy.taxeditor.cdmlib/pom.xml
eu.etaxonomy.taxeditor.cdmlib/resources/cdm.map.ser [deleted file]
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/cache/CdmServiceCacher.java
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/lazyloading/CdmLazyLoader.java
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/source/CdmServerInfo.java
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/service/TermServiceRequestExecutor.java
eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml [deleted file]
eu.etaxonomy.taxeditor.editor/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.editor/pom.xml
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/EditorUtil.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/AreasSelectionDialog.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/DescriptiveDataSetComposite.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/DescriptiveDataSetEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/character/CharacterDragListener.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/character/CharacterDropAdapter.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/character/CharacterEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CategoricalChartTooltip.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CharacterMatrix.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CharacterMatrixPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/QuantitativeChartTooltip.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/SpecimenColumnPropertyAccessor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/categorical/CategoricalComboBoxDataProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/categorical/CategoricalDataCellEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/quantitative/QuantitativeDataDialogEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/e4/TaxonEditorInputE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/l10n/Messages.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/l10n/messages.properties
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/l10n/messages_de.properties
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/e4/TaxonNameEditorE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/e4/container/AbstractGroupedContainerE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeConceptRelationshipTypeOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/DistributionEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/FilterStatusDisplayConverter.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/StatusComboBoxDataProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/StatusDataDisplayConverter.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/checklist/e4/StatusDisplayConverter.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateDragListener.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDropAdapter.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/NameDescriptionFilter.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/FactualDataPartE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/CreateDescriptionHandlerE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/CreateDescriptionWithSourceHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/DeleteHandlerE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/DynamicFeatureMenuE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/MoveDescriptionElementsHandlerE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/MoveDescriptionToOtherTaxonHandlerE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateTaxonNameDescriptionOperation.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonDescriptionOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonNameDescriptionOperation.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/MoveDescriptionElementsOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/MoveDescriptionToOtherTaxonOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/handler/DeleteMediaHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/DeleteMediaOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesLabelProvider.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/SwapSynonymAndAcceptedOperationTest.java
eu.etaxonomy.taxeditor.feature.platform/feature.xml
eu.etaxonomy.taxeditor.feature.platform/pom.xml
eu.etaxonomy.taxeditor.feature/feature.xml
eu.etaxonomy.taxeditor.feature/pom.xml
eu.etaxonomy.taxeditor.help/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.help/pom.xml
eu.etaxonomy.taxeditor.molecular.lib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.molecular.lib/pom.xml
eu.etaxonomy.taxeditor.molecular/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.molecular/pom.xml
eu.etaxonomy.taxeditor.navigation/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.navigation/pom.xml
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/l10n/Messages.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/l10n/messages.properties
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/l10n/messages_de.properties
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/TreeNodeDragListenerE4.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/handler/NewTaxonNodeHandlerE4.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/handler/SetPublishFlagForSubtreeHandlerE4.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/handler/SetSecReferenceForSubtreeHandlerE4.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/SetPublishForSubtreeOperation.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/SetSecundumForSubtreeOperation.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/UpdateSubtreeOperation.java
eu.etaxonomy.taxeditor.printpublisher/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.printpublisher/pom.xml
eu.etaxonomy.taxeditor.store/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle.properties
eu.etaxonomy.taxeditor.store/OSGI-INF/l10n/bundle_de.properties
eu.etaxonomy.taxeditor.store/fragment.e4xmi
eu.etaxonomy.taxeditor.store/plugin.xml
eu.etaxonomy.taxeditor.store/pom.xml
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/CacheUpdaterWizardPage.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/Test.java with 54% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairTitleCacheUpdatePage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairUpdateCachesWizard.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairUpdateSortIndicesWizard.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairWizard.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/SortIndexUpdaterWizardPage.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairSortIndexPage.java with 66% similarity, mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/ITaxonEditor.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermSorter.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/RootElementsOnlyTreeContentProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermBasePropertyTester.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermDtoContentProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermTransfer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/DefinedTermDragListenerE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/DefinedTermDropAdapterE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/DefinedTermEditorE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/DefinedTermMenuE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/handler/MoveDefinedTermHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/handler/OpenDefinedTermEditorHandlerE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/AbstractDefinedTermEditorInput.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/input/TermEditorInput.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/CreateTermVocabularyOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/MoveDefinedTermOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/event/WorkbenchEventConstants.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableFeaturesWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableFeaturesWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/CharacterTransfer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureNodeTransfer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreeContentProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreeLabelProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/FeatureTreePropertyTester.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermChooseWizard.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermChooseWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureNodeDragListener.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeDropAdapter.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditor.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditorComposite.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/AddChildFeatureHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/AddFeatureHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/CopyFeatureHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/CreateFeatureTreeHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/FeatureTreeExportOntologyHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/FeatureTreeExportWordHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/PasteFeatureHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/RemoveFeatureHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/handler/RemoveFeatureTreeHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/operation/AddFeatureOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/operation/AddOntologyTermOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/operation/CreateFeatureTreeOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/operation/MoveFeatureOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/operation/RemoveFeatureOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/operation/RemoveFeatureTreeOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/OpenDatabaseRepairWizardHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/OpenUpdateSortIndicesHandler.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/ImportManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/e4/in/ImportFromFileAndChooseVocIdWizardPageE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ImportFromFileAndChooseVocIdWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/Messages.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/messages.properties
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/l10n/messages_de.properties
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ColorResources.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DefaultTermComparator.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/DescriptionHelper.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/FeatureNodeContainer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/FeatureNodeContainerTree.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/MultiLanguageText.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/TaxonRelationshipTypeInverseContainer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewFeatureVocabularyWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTaxonNodeWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/VocabularyWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmPreferenceCache.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/ChecklistEditorGeneralPreference.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/DefaultFeatureTreePreferenecs.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/EditorPreferencePredicate.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/NameDetailsViewConfiguration.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/Resources.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/AbstractMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CdmPreferencePage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CommonNameLanguagePreferences.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/DefinedTermBaseContentProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/DefinedTermBaseLabelProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/ExtensionTypeMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/FeatureMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/LanguageMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/MarkerTypeMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/MeasurementUnitMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NameRelationshipTypeMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NameTypeDesignationStatusMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NamedAreaTypeMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/NomenclaturalStatusTypeMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/PresenceAbsenceMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/PreservationMethodMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/RankMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/SpecimenTypeDesignationStatusMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/StageMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/TaxonRelationshipTypeMenuPreferences.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractAdminTermSelectionWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AbstractTermSelectionWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableAreaVocabulariesPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionStatusAdminWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionStatusPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/AvailableDistributionStatusWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/NamedAreaWrapper.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/wizard/VocabularyTermWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStore.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/CdmStoreConnector.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/StoreUtil.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermStore.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/UsageTermCollection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/UseObjectStore.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/InverseTermWrapper.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/NameRelationshipTypeCombo.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermUuidComboViewer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermUuidContentProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermUuidLabelProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/VocabularyComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/termvocabulary/TermVocabularyComboLabelProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/termvocabulary/TermVocabularyComboViewer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/CloneClassificationDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/RemotingLoginDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AbstractFilteredCdmEnumSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AbstractFilteredIdentifierSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AgentSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/CommonNameNamedAreaSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/ExtReferenceSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/FeatureSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/FeatureTreeSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/FilterDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/GroupSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NamedAreaSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalAuthorSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalAuthorTeamSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/NomenclaturalPersonAuthorSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/OriginalSourceTypeSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/ReferenceSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SelectionDialogFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/SpecimenOrObservationTypeSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TeamOrPersonBaseSelectionDialog.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TermVocabularySelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/UserSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CdmFormFactory.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CheckboxElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MultilanguageTextElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/PointElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/RepresentationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TranslatableRepresentationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermCombo.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermComboController.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeAgentRelationCollectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/common/ExternalLinksSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementSourceSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionSourceSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ModifierSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/NaturalLanguageDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/ScopeSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/SourceComparator.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StatisticalMeasurementValueElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/AbstractDetailedDescriptionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/CategoricalDataDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/CommonNameDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/DistributionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/IndividualsAssociationDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/QuantitativeDataDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/detail/TaxonInteractionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/CharacterDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureNodeDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureNodeDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureTreeDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureTreeDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/InapplicableIfCollectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/InapplicableIfEntityCollectionSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/OnlyApplicableIfCollectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/OnlyApplicableIfEntityCollectionSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/MemberDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/ScopeRestrictionSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AbstractTypeDesignationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameTypeDesignationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NomenclaturalStatusElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/SpecimenTypeDesignationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/TypeDesignationSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/operation/DeleteTypeDesignationOperation.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/type/CloneTypeWizard.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/type/CloneTypeWizardComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/type/CloneTypeWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AbstractSpecimenOrObservationDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationEventDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SourceCollectionDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/association/DerivedUnitTypeDesignationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/derivedUnit/PreservedSpecimenDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/derivedUnit/PreservedSpecimenSourceCollectionDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationCloningDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/AmplificationGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/DnaQualityDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/PrimerGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/SequenceGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/dna/TissueSampleGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractOriginalSourceElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractReferencedEntityElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractSourcedEntityBaseElement.java [new file with mode: 0755]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AnnotationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/ExtensionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/IdentifiableSourceElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/MarkerElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/RightsElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/SourceSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/identifier/IdentifierElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/GroupsByUserDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/userecords/UseRecordDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/AbstractTermBaseDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/DefinedTermDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/DefinedTermDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/FeatureDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/MeasurementUnitCollectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/NamedAreaDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/PresenceAbsenceTermDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/RecommendedModifierVocabulariesCollectionSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/RecommendedModifierVocabulariesElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StateVocabularyCollectionSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/StatisticalMeasureCollectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermTranslationWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/TermVocabularyDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TermTranslationWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/translation/TranslationWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/util/ProgressMonitorClientManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/dataimport/e4/SaveImportedSpecimenActionE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/AbstractCdmEditorPartE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/details/DetailsPartE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/details/DetailsViewerE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/e4/supplementaldata/SupplementalDataViewerE4.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/derivative/DerivateLabelProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/CheckBoxSearchResultComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/Facet.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/FilterComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchResult.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceFilter.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearch.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearchController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearchResult.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearchResultComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermFilter.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermFilter.java with 94% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearch.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchResult.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchResultComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermSearch.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermSearchComposite.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermSearchController.java [deleted file]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/GfBioTerminologyImportComposite.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/GfBioTerminologyImportPresenter.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/wrapper/OntologyTermWrapper.java
eu.etaxonomy.taxeditor.store/src/test/java/eu/etaxonomy/taxeditor/store/NameProtectTitleCacheTest.java
eu.etaxonomy.taxeditor.store/src/test/java/eu/etaxonomy/taxeditor/store/utility/AbstractUtilityTest.java
eu.etaxonomy.taxeditor.test/.settings/org.eclipse.jdt.core.prefs [deleted file]
eu.etaxonomy.taxeditor.test/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.test/pom.xml
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/BaseRemotingTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/CdmServerTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/httpinvoker/RemotingSessionAwareTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/operation/TaxonNameEditorTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/service/ProgressMonitorServiceTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/service/ServiceInterceptorTest.java
eu.etaxonomy.taxeditor.test/src/test/java/eu/etaxonomy/taxeditor/session/CdmEntitySessionAwareTest.java
eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.h2.db
eu.etaxonomy.taxeditor.webapp/.settings/org.eclipse.jdt.core.prefs [deleted file]
eu.etaxonomy.taxeditor.webapp/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.webapp/build.properties
eu.etaxonomy.taxeditor.webapp/pom.xml
eu.etaxonomy.taxeditor.workbench/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.workbench/fragment.e4xmi
eu.etaxonomy.taxeditor.workbench/pom.xml
eu.etaxonomy.taxeditor/eu.etaxonomy.taxeditor.product
eu.etaxonomy.taxeditor/pom.xml
pom.xml
setup-project.sh

index 7471f087cda25cb978ee85c0382fbea62bae9b4f..56232781dde6c5a1c54c620b7f951bb932150c4e 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Application
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.application;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Bundle-Activator: eu.etaxonomy.taxeditor.TaxonomicEditorPlugin
 Bundle-Vendor: EDIT
 Bundle-Localization: OSGI-INF/l10n/plugin
index e07ac708bfc618a04cfa789d12046a635db5f783..581cfb2b459a428a71f4fe96bef2ccdbcbba83f1 100644 (file)
         <children xsi:type="menu:HandledMenuItem" xmi:id="_35iN8B7PEeeC-JvycL9ysA" elementId="org.eclipse.ui.main.menu.window.preferences" label="%command.label.12" command="_l9kXoB7PEeeC-JvycL9ysA"/>
       </children>
       <children xsi:type="menu:Menu" xmi:id="_KDFiMB6tEeePLJ5to5QrXQ" elementId="org.eclipse.ui.main.menu.admin" label="%menu.label.4">
+        <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_QAx6wD8_EemTy7SLZkowuQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
         <children xsi:type="menu:HandledMenuItem" xmi:id="_RsV7EB-IEeeIA_2gwq7JKg" elementId="org.eclipse.ui.main.menu.admin.dbpreferences" label="%command.label.23" command="_JXXNIB-IEeeIA_2gwq7JKg">
           <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_ckfJUB-IEeeIA_2gwq7JKg" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
         </children>
-        <children xsi:type="menu:HandledMenuItem" xmi:id="_VgPDcB-IEeeIA_2gwq7JKg" elementId="org.eclipse.ui.main.menu.admin.dbrepair" label="%command.label.24" command="_LuEl0B-IEeeIA_2gwq7JKg">
-          <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_06_ZIB-TEeeIA_2gwq7JKg" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
-        </children>
         <children xsi:type="menu:HandledMenuItem" xmi:id="_E80JgCaQEeeO2YpaECSmsg" elementId="org.eclipse.ui.main.menu.admin.import_preferences" label="Import Preferences"/>
+        <children xsi:type="menu:Menu" xmi:id="_ah5VoD8qEempU5gGjh-zOg" elementId="eu.etaxonomy.taxeditor.application.menu.RepairFunctionality" label="%command.label.24">
+          <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_0iYE4D8-EemTy7SLZkowuQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
+        </children>
       </children>
       <children xsi:type="menu:Menu" xmi:id="_MG8QUB6tEeePLJ5to5QrXQ" elementId="org.eclipse.ui.main.menu.help" label="%menu.label.2">
         <children xsi:type="menu:HandledMenuItem" xmi:id="_6vgg4B6gEeePLJ5to5QrXQ" elementId="id.commandlabel16" label="%command.label.16" command="_ye6jsB6gEeePLJ5to5QrXQ"/>
@@ -54,7 +55,6 @@
   <fragments xsi:type="fragment:StringModelFragment" xmi:id="_vvQmIB4JEeehWtOSgLepjA" featurename="handlers" parentElementId="xpath:/">
     <elements xsi:type="commands:Handler" xmi:id="_haDmcB6eEeePLJ5to5QrXQ" elementId="eu.etaxonomy.taxeditor.OpenExternalAboutPlatformHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.application/eu.etaxonomy.taxeditor.OpenExternalAboutPlatformHandler" command="_V9LTcB6eEeePLJ5to5QrXQ"/>
     <elements xsi:type="commands:Handler" xmi:id="_3wxe4B6gEeePLJ5to5QrXQ" elementId="eu.etaxonomy.taxeditor.OpenExternalParserHelpHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.application/eu.etaxonomy.taxeditor.OpenExternalParserHelpHandler" command="_ye6jsB6gEeePLJ5to5QrXQ"/>
-    <elements xsi:type="commands:Handler" xmi:id="_cwy_oB-LEeeIA_2gwq7JKg" elementId="eu.etaxonomy.taxeditor.handler.OpenDatabaseRepairWizardHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.handler.OpenDatabaseRepairWizardHandler" command="_LuEl0B-IEeeIA_2gwq7JKg"/>
     <elements xsi:type="commands:Handler" xmi:id="_pZ84gB-LEeeIA_2gwq7JKg" elementId="eu.etaxonomy.taxeditor.handler.OpenDatabasePreferencesWizardHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.handler.OpenDatabasePreferencesWizardHandler" command="_JXXNIB-IEeeIA_2gwq7JKg"/>
     <elements xsi:type="commands:Handler" xmi:id="_fAnCkCaQEeeO2YpaECSmsg" elementId="eu.etaxonomy.taxeditor.handler.OpenImportPreferenceHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/target.classes.eu.etaxonomy.taxeditor.handler.OpenImportPreferenceHandler" command="_q1JAkCaQEeeO2YpaECSmsg"/>
   </fragments>
@@ -77,7 +77,6 @@
     <elements xsi:type="commands:Command" xmi:id="_l9kXoB7PEeeC-JvycL9ysA" elementId="org.eclipse.ui.window.preferences" commandName="%command.label.12"/>
     <elements xsi:type="commands:Command" xmi:id="_hooiQB7QEeeC-JvycL9ysA" elementId="org.eclipse.ui.newWizard" commandName="%command.label.21"/>
     <elements xsi:type="commands:Command" xmi:id="_JXXNIB-IEeeIA_2gwq7JKg" elementId="eu.etaxonomy.taxeditor.application.DatabaseSettings" commandName="%command.label.23"/>
-    <elements xsi:type="commands:Command" xmi:id="_LuEl0B-IEeeIA_2gwq7JKg" elementId="eu.etaxonomy.taxeditor.application.DatabaseRepairFunctionality" commandName="%command.label.24"/>
     <elements xsi:type="commands:Command" xmi:id="_q1JAkCaQEeeO2YpaECSmsg" elementId="eu.etaxonomy.taxeditor.application.ImportSettings" commandName="%command.label.25"/>
   </fragments>
   <fragments xsi:type="fragment:StringModelFragment" xmi:id="_nOhPoB9zEeeIA_2gwq7JKg" featurename="trimContributions" parentElementId="xpath:/">
index 4e9e913cae0df27c81cce98dce2413c0863a6453..a7d0614d12992a70bfad0109a2a472874a889d80 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>5.5.1</version>
+    <version>5.6.0</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
index 7c8dcfbb22ad58b78a11cbcdd52065613eb73bf8..7132c2f9760a88a3eaf6704da2f9d4fd0f5af3d8 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Bulkeditor Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.bulkeditor;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Bundle-Activator: eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin
 Bundle-Vendor: EDIT
 Export-Package: eu.etaxonomy.taxeditor.annotatedlineeditor,
index 3522c61caec9be0a80506c68dbd5b4b3536a8b70..0f980c0a46545f647d28db9e45e35883f4bbe60d 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>5.5.1</version>
+               <version>5.6.0</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 14c1b4a7d751a673118ab0674f4635ccc8cdae9a..82499de1e52226d6adc412f5ad179912d9056f3d 100644 (file)
@@ -11,6 +11,7 @@ package eu.etaxonomy.taxeditor.bulkeditor.e4;
 
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.util.List;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
@@ -35,6 +36,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
@@ -46,6 +49,8 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorQuery;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
+import eu.etaxonomy.taxeditor.bulkeditor.input.GroupEditorInput;
+import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
@@ -54,6 +59,7 @@ import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
 import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
 
@@ -252,6 +258,11 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable
                     getEditorInput().addSaveCandidate(changedTaxon);
                     input.replaceInModel(changedTaxon);
                 }
+            }else if(element instanceof Group){
+                 Group oldGroup = ((GroupEditorInput)input).getEntityFromModel((Group)element);
+                 ((GroupEditorInput)input).getSaveUserCandidates().addAll(oldGroup.getMembers());
+                 getEditorInput().addSaveCandidate((Group)element);
+                 input.replaceInModel((CdmBase) element);
             }else{
                 getEditorInput().addSaveCandidate((CdmBase)element);
                 input.replaceInModel((CdmBase) element);
@@ -302,4 +313,38 @@ public class BulkEditorE4 implements IPartContentHasDetails, IConversationEnable
         return null;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void update() {
+        input.performSearch(lastQuery, getSelection());
+    }
+
+    @Override
+    public void addOperation(AbstractPostOperation operation) {
+        // operations not yet used for bulk editor
+    }
+
+    @Inject
+    @Optional
+    private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_NAME_EDITOR) List<CdmBase> cdmBases) {
+        if (getEditorInput() instanceof TaxonEditorInput){
+            for (CdmBase cdmBase: cdmBases){
+                if (getEditorInput().getModel().contains(cdmBase)){
+                    input.performSearch(lastQuery, getSelection());
+                    break;
+                }
+            }
+        }
+    }
+
+    @Inject
+    @Optional
+    private void updatefromDelete(@UIEventTopic(WorkbenchEventConstants.REMOVE_USER) User user) {
+        if (input instanceof GroupEditorInput){
+            ((GroupEditorInput)input).getSaveUserCandidates().add(user);
+        }
+    }
+
 }
index c7de66f80dc9f62c1c846cff54a37ced973eddca..21df58400a1d57871d4186b14d769796e0fa5db4 100644 (file)
@@ -387,7 +387,9 @@ public class BulkEditorE4Composite extends Composite {
         List<Object> selectedObjects = new ArrayList<>();
         for (Range range : selectedRowPositions) {
             for(int i=range.start;i<range.end;i++){
-                selectedObjects.add(bodyDataProvider.getRowObject(i));
+                if (i>=0){
+                    selectedObjects.add(bodyDataProvider.getRowObject(i));
+                }
             }
         }
         return new StructuredSelection(selectedObjects);
@@ -398,6 +400,7 @@ public class BulkEditorE4Composite extends Composite {
         for (Object object : objects) {
 
             if(object instanceof CdmBase &&  bulkEditor.getEditorInput().getModel().contains(object)){
+                object = bulkEditor.getEditorInput().getModel().get(bulkEditor.getEditorInput().getModel().indexOf(object));
                 bodyLayer.getSelectionLayer().selectRow(0, bodyDataProvider.indexOfRowObject((CdmBase) object), false, false);
             }
         }
index 55dc81496aa96307c3ec41d9a9b192c92221901e..cdb1f7a93341341822b9fc922a8ad52980bef491 100644 (file)
@@ -56,8 +56,10 @@ final class CellSelectionListener extends E4SelectionListener<CdmBase> {
             RowSelectionEvent rowSelectionEvent = (RowSelectionEvent) event;
             int[] fullySelectedRowPositions = rowSelectionEvent.getSelectionLayer().getFullySelectedRowPositions();
             if(fullySelectedRowPositions.length==1){
-                Object rowObject = bulkEditor.getBodyDataProvider().getRowObject(fullySelectedRowPositions[0]);
-                bulkEditor.getSelService().setSelection(new StructuredSelection(rowObject));
+                if (fullySelectedRowPositions[0]>=0){
+                    Object rowObject = bulkEditor.getBodyDataProvider().getRowObject(fullySelectedRowPositions[0]);
+                    bulkEditor.getSelService().setSelection(new StructuredSelection(rowObject));
+                }
                 return;
             }
         }
index 03917cc57c93e600f34705cfdb402cf226c8ea4d..6499a1ae112132794e743ad5298c5b3b9345ec1b 100644 (file)
@@ -32,6 +32,7 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.persistence.dto.MergeResult;
 import eu.etaxonomy.cdm.strategy.merge.IMergable;
 import eu.etaxonomy.cdm.strategy.merge.MergeException;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
@@ -357,7 +358,13 @@ public abstract class AbstractBulkEditorInput<T extends CdmBase> extends CdmEnti
             }
            }
            if (!saveCandidates.isEmpty()){
-               CdmStore.getService(saveCandidates.iterator().next()).merge(new ArrayList<>(saveCandidates), true);
+               List<MergeResult<T>> results = CdmStore.getService(saveCandidates.iterator().next()).merge(new ArrayList<>(saveCandidates), true);
+               for (MergeResult<T> result: results){
+                   if (result.getMergedEntity() != null){
+                       T entitiy = result.getMergedEntity();
+                   }
+
+               }
         }
            if(resetMerge){
                //merge entities
index ab53b8584fc875bfbc9e3f798f7d1edef3ba47bc..b7100b6fbe1aa0f3bdf801323b4a36cb34619439 100644 (file)
@@ -12,15 +12,19 @@ package eu.etaxonomy.taxeditor.bulkeditor.input;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.IGroupService;
+import eu.etaxonomy.cdm.api.service.IUserService;
 import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.persistence.query.OrderHint;
 import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
@@ -38,6 +42,8 @@ public class GroupEditorInput extends AbstractBulkEditorInput<Group> {
        public static final String ID = "bulkeditor.input.group";
 
        private static GroupEditorInput instance;
+       private Set<User> saveUserCandidates = new HashSet<>();
+
 
        public static GroupEditorInput getInstance() {
                if(instance == null){
@@ -107,4 +113,26 @@ public class GroupEditorInput extends AbstractBulkEditorInput<Group> {
         return new GroupNameComparator();
     }
 
+       @Override
+    public void saveModel(boolean resetMerge){
+        super.saveModel(resetMerge);
+        if (!saveUserCandidates.isEmpty()){
+            CdmStore.getService(IUserService.class).merge(new ArrayList<>(saveUserCandidates), true);
+        }
+        saveUserCandidates.clear();
+    }
+
+       public Group getEntityFromModel(Group group){
+           return this.getModel().get(this.getModel().indexOf(group));
+       }
+
+    public Set<User> getSaveUserCandidates() {
+        return saveUserCandidates;
+    }
+
+    public void setSaveUserCandidates(Set<User> saveUserCandidates) {
+        this.saveUserCandidates = saveUserCandidates;
+    }
+
+
 }
index c96b3f4ef3154cf3671d87b7cf1ba26af8be57bf..fa03a9f7b5dbdec1dd15871d60f2f8707d85fdf1 100644 (file)
@@ -62,7 +62,7 @@ import eu.etaxonomy.cdm.api.service.molecular.ISequenceService;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.EventBase;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
index a85ad619bb1bfbec3c2fde0888691fbec759129f..c88ba58902faa7d87acaa710c30bc035a92cb33f 100644 (file)
@@ -1,233 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-       <classpathentry exported="true" kind="lib" path="lib/docx4j-6.0.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-math3-3.6.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/org.swtchart_0.10.0.v20160212.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/redmine-java-api-3.1.0.jar"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
        <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
        <classpathentry kind="src" path="src/main/resources"/>
        <classpathentry kind="src" path="src/main/java"/>
-       <classpathentry exported="true" kind="lib" path="lib/activation-1.1.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/apache-log4j-extras-1.2.17.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/aspectjrt-1.8.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/aspectjweaver-1.8.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-xml-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-5.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-5.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-io-5.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-5.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-5.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-5.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-5.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-cache-5.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-services-5.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cdmlib-test-5.5.0-SNAPSHOT.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/com.springsource.org.aopalliance-1.0.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/com.springsource.org.apache.commons.logging-1.1.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.9.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-codec-1.10.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-csv-1.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-dbcp-1.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-io-2.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-lang-2.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-lang3-3.3.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-logging-1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/commons-pool-1.5.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/dbunit-2.4.9.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/dom4j-1.6.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/dozer-5.3.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/dtd-parser-1.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/ehcache-core-2.6.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/ezmorph-1.0.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/google-api-translate-java-0.92.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/h2-1.4.190.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/h2mig_pagestore_addon.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hamcrest-core-1.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-c3p0-5.0.7.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-cglib-repack-2.1_3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-commons-annotations-5.0.1.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-core-5.0.7.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-ehcache-5.0.7.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-entitymanager-5.0.7.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-envers-5.0.7.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-jpa-2.1-api-1.0.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-4.2.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-analyzers-4.2.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-engine-5.5.2.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-search-orm-5.5.2.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-validator-5.2.2.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hibernate-validator-cdi-5.2.2.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/hsqldb-2.3.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/httpclient-4.5.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/httpclient-cache-4.2.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/httpcore-4.4.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/httpmime-4.5.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/icu4j-2.6.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/identificationKeyAPI-1.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/itextpdf-5.5.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jackson-annotations-2.6.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jackson-core-2.6.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jboss-logging-3.3.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jdom-1.1.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jdom2-2.0.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/joda-time-2.9.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.17.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lsid-client-1.1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/sanselan-0.97-incubator.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-aop-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-aspects-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-beans-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-context-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-context-support-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-core-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-expression-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-jdbc-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-modules-cache-0.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-orm-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-oxm-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-plugin-core-1.2.0.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-plugin-metadata-1.2.0.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-security-config-4.0.3.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-security-core-4.0.3.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-security-web-4.0.3.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-test-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-tx-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-web-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-webmvc-4.2.4.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-core-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-schema-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-spi-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-spring-web-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-swagger-common-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/springfox-swagger2-2.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/standard-1.1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/tools.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/txw2-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/usertype.jodatime-2.0.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/usertype.spi-2.0.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/validation-api-1.1.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/wsdl4j-1.6.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xalan-2.7.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xercesImpl-2.11.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xml-apis-1.0.b2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xml-apis-ext-1.3.04.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xml-resolver-1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xmlbeans-2.6.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xmlgraphics-commons-1.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xmlpull-1.1.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xmlunit-1.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xom-1.2.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xpp3_min-1.1.4c.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xpp3-1.1.4c.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xsom-20140925.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/xstream-1.4.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/yjp-controller-api-redist-9.0.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-security-oauth2-2.0.11.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/opencsv-2.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jdbc4-2.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/junit-4.12.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jackson-databind-2.6.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jackson-core-asl-1.8.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jackson-mapper-asl-1.8.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jakarta-regexp-1.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jandex-2.0.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/javassist-3.20.0-GA.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/javax.el-2.2.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/javax.el-api-2.2.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/javax.servlet-api-3.1.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb-api-2.2.12.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb-core-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb-jxc-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb-runtime-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb-xjc-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxb1-impl-2.2-EA.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jboss-transaction-api_1.1_spec-1.0.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jcl-over-slf4j-1.7.6.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jena-arq-2.13.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jena-core-2.13.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jena-iri-1.1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jena-tdb-1.1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/json-20090211.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/json-lib-2.4-jdk15.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jsonld-java-0.5.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jsr250-api-1.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jta-1.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/jtds-1.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/junit-benchmarks-0.7.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-dom-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-anim-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-awt-util-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-bridge-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-css-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-ext-1.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-extension-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-gvt-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-js-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-parser-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-script-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-svg-dom-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-svggen-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-transcoder-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/batik-util-1.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/c3p0-0.9.5.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.7.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.7.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/slf4j-nop-1.7.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/antlr-2.7.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/aopalliance-1.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/avro-1.6.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cglib-3.2.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/cglib-nodep-3.2.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/classmate-1.3.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/codemodel-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/concurrent-1.3.4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/easymock-2.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/easymockclassextension-2.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/FastInfoset-1.2.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/fop-1.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/guava-19.0.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/libthrift-0.9.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lsid-server-1.1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/mapstruct-1.0.0.Final.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/mchange-commons-java-0.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.1.38.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/objenesis-1.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/odfdom-0.8.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/odfdom-java-0.8.7.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/ognl-2.6.9.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/paranamer-2.3.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/poi-3.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-3.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-schemas-3.13.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/postgresql-9.4-1206-jdbc4.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/relaxngDatatype-20020414.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/rngom-2.2.11.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/Saxon-HE-9.7.0-2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/servlet-api-2.5.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/snappy-java-1.0.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/solr-analysis-extras-3.6.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/solr-core-3.6.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/solr-solrj-3.6.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-core-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-database-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-dbmaintainer-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-dbunit-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-easymock-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-inject-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-mock-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-orm-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/unitils-spring-3.4.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-core-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/istack-commons-runtime-2.21.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/istack-commons-tools-2.21.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-queryparser-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-analyzers-3.6.2.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-analyzers-common-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-sandbox-5.4.1.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/lucene-suggest-5.4.1.jar"/>
        <classpathentry kind="output" path="target/classes"/>
 </classpath>
index 2440258d309761a02ae29218a3f0ca300e433c15..18d1a2f17e94a5ebaa8f89ab17481d6fac7d4c3e 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: CDM Library Dependencies Plugin
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.cdmlib;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Eclipse-BundleShape: dir
 Export-Package: com.google.api,
  com.google.api.detect,
@@ -107,7 +107,6 @@ Export-Package: com.google.api,
  eu.etaxonomy.cdm.model,
  eu.etaxonomy.cdm.model.agent,
  eu.etaxonomy.cdm.model.common,
- eu.etaxonomy.cdm.model.common.init,
  eu.etaxonomy.cdm.model.description,
  eu.etaxonomy.cdm.model.location,
  eu.etaxonomy.cdm.model.media,
@@ -117,6 +116,8 @@ Export-Package: com.google.api,
  eu.etaxonomy.cdm.model.occurrence,
  eu.etaxonomy.cdm.model.reference,
  eu.etaxonomy.cdm.model.taxon,
+ eu.etaxonomy.cdm.model.term,
+  eu.etaxonomy.cdm.model.term.init,
  eu.etaxonomy.cdm.model.validation,
  eu.etaxonomy.cdm.model.view,
  eu.etaxonomy.cdm.model.view.context,
@@ -133,12 +134,14 @@ Export-Package: com.google.api,
  eu.etaxonomy.cdm.persistence.dao.hibernate.occurrence,
  eu.etaxonomy.cdm.persistence.dao.hibernate.reference,
  eu.etaxonomy.cdm.persistence.dao.hibernate.taxon,
+ eu.etaxonomy.cdm.persistence.dao.hibernate.term,
  eu.etaxonomy.cdm.persistence.dao.hibernate.view,
  eu.etaxonomy.cdm.persistence.dao.media,
  eu.etaxonomy.cdm.persistence.dao.name,
  eu.etaxonomy.cdm.persistence.dao.occurrence,
  eu.etaxonomy.cdm.persistence.dao.reference,
  eu.etaxonomy.cdm.persistence.dao.taxon,
+ eu.etaxonomy.cdm.persistence.dao.term,
  eu.etaxonomy.cdm.persistence.dao.validation,
  eu.etaxonomy.cdm.persistence.dto,
  eu.etaxonomy.cdm.persistence.fetch,
@@ -430,6 +433,7 @@ Export-Package: com.google.api,
  org.hibernate.engine.spi,
  org.hibernate.engine.transaction.spi,
  org.hibernate.envers.query.criteria,
+ org.hibernate.envers.tools,
  org.hibernate.internal,
  org.hibernate.internal.util,
  org.hibernate.internal.util.collections,
@@ -656,16 +660,16 @@ Bundle-ClassPath: .,
  lib/aspectjrt-1.8.8.jar,
  lib/aspectjweaver-1.8.8.jar,
  lib/batik-xml-1.7.jar,
- lib/cdmlib-commons-5.5.1.jar,
- lib/cdmlib-ext-5.5.1.jar,
- lib/cdmlib-io-5.5.1.jar,
- lib/cdmlib-model-5.5.1.jar,
- lib/cdmlib-persistence-5.5.1.jar,
- lib/cdmlib-print-5.5.1.jar,
- lib/cdmlib-remote-5.5.1.jar,
- lib/cdmlib-cache-5.5.1.jar,
- lib/cdmlib-services-5.5.1.jar,
- lib/cdmlib-test-5.5.1.jar,
+ lib/cdmlib-commons-5.6.0.jar,
+ lib/cdmlib-ext-5.6.0.jar,
+ lib/cdmlib-io-5.6.0.jar,
+ lib/cdmlib-model-5.6.0.jar,
+ lib/cdmlib-persistence-5.6.0.jar,
+ lib/cdmlib-print-5.6.0.jar,
+ lib/cdmlib-remote-5.6.0.jar,
+ lib/cdmlib-cache-5.6.0.jar,
+ lib/cdmlib-services-5.6.0.jar,
+ lib/cdmlib-test-5.6.0.jar,
  lib/com.springsource.org.aopalliance-1.0.0.jar,
  lib/com.springsource.org.apache.commons.logging-1.1.1.jar,
  lib/commons-beanutils-1.9.2.jar,
@@ -837,7 +841,6 @@ Bundle-ClassPath: .,
  lib/lsid-server-1.1.2.jar,
  lib/mapstruct-1.0.0.Final.jar,
  lib/mchange-commons-java-0.2.11.jar,
- lib/mysql-connector-java-5.1.38.jar,
  lib/objenesis-1.2.jar,
  lib/odfdom-0.8.jar,
  lib/odfdom-java-0.8.7.jar,
@@ -875,5 +878,6 @@ Bundle-ClassPath: .,
  lib/redmine-java-api-3.1.0.jar,
  lib/org.swtchart_0.10.0.v20160212.jar,
  lib/commons-math3-3.6.1.jar,
- lib/docx4j-6.0.1.jar
+ lib/docx4j-6.0.1.jar,
+ lib/mysql-connector-java-8.0.15.jar
 Import-Package: eu.etaxonomy.cdm.api.application
index e3ecc99f13d735fcc2c35f9d5745fa6ded28a731..40d481da33575c2fe83a217b8812f0d7784efbcc 100644 (file)
@@ -1,20 +1,19 @@
 bin.includes = META-INF/,\
                .,\
-               resources/cdm.map.ser,\
                lib/activation-1.1.1.jar,\
                lib/apache-log4j-extras-1.2.17.jar,\
                lib/aspectjrt-1.8.8.jar,\
                lib/aspectjweaver-1.8.8.jar,\
                lib/batik-xml-1.7.jar,\
-               lib/cdmlib-commons-5.5.1.jar,\
-               lib/cdmlib-ext-5.5.1.jar,\
-               lib/cdmlib-io-5.5.1.jar,\
-               lib/cdmlib-model-5.5.1.jar,\
-               lib/cdmlib-persistence-5.5.1.jar,\
-               lib/cdmlib-print-5.5.1.jar,\
-               lib/cdmlib-remote-5.5.1.jar,\
-               lib/cdmlib-services-5.5.1.jar,\
-               lib/cdmlib-test-5.5.1.jar,\
+               lib/cdmlib-commons-5.6.0.jar,\
+               lib/cdmlib-ext-5.6.0.jar,\
+               lib/cdmlib-io-5.6.0.jar,\
+               lib/cdmlib-model-5.6.0.jar,\
+               lib/cdmlib-persistence-5.6.0.jar,\
+               lib/cdmlib-print-5.6.0.jar,\
+               lib/cdmlib-remote-5.6.0.jar,\
+               lib/cdmlib-services-5.6.0.jar,\
+               lib/cdmlib-test-5.6.0.jar,\
                lib/com.springsource.org.aopalliance-1.0.0.jar,\
                lib/com.springsource.org.apache.commons.logging-1.1.1.jar,\
                lib/commons-beanutils-1.9.2.jar,\
@@ -186,7 +185,6 @@ bin.includes = META-INF/,\
                lib/lsid-server-1.1.2.jar,\
                lib/mapstruct-1.0.0.Final.jar,\
                lib/mchange-commons-java-0.2.11.jar,\
-               lib/mysql-connector-java-5.1.38.jar,\
                lib/objenesis-1.2.jar,\
                lib/odfdom-0.8.jar,\
                lib/odfdom-java-0.8.7.jar,\
@@ -221,11 +219,12 @@ bin.includes = META-INF/,\
                lib/lucene-analyzers-common-5.4.1.jar,\
                lib/lucene-sandbox-5.4.1.jar,\
                lib/lucene-suggest-5.4.1.jar,\
-               lib/cdmlib-cache-5.5.1.jar,\
+               lib/cdmlib-cache-5.6.0.jar,\
                lib/redmine-java-api-3.1.0.jar,\
                lib/org.swtchart_0.10.0.v20160212.jar,\
                lib/commons-math3-3.6.1.jar,\
-               lib/docx4j-6.0.1.jar
+               lib/docx4j-6.0.1.jar,\
+               lib/mysql-connector-java-8.0.15.jar
 
 jars.compile.order = .
 output.. = bin/
diff --git a/eu.etaxonomy.taxeditor.cdmlib/lib/mysql-connector-java-5.1.38.jar b/eu.etaxonomy.taxeditor.cdmlib/lib/mysql-connector-java-5.1.38.jar
deleted file mode 100644 (file)
index be09493..0000000
Binary files a/eu.etaxonomy.taxeditor.cdmlib/lib/mysql-connector-java-5.1.38.jar and /dev/null differ
diff --git a/eu.etaxonomy.taxeditor.cdmlib/lib/mysql-connector-java-8.0.15.jar b/eu.etaxonomy.taxeditor.cdmlib/lib/mysql-connector-java-8.0.15.jar
new file mode 100644 (file)
index 0000000..fa0979f
Binary files /dev/null and b/eu.etaxonomy.taxeditor.cdmlib/lib/mysql-connector-java-8.0.15.jar differ
index e269389fa1238edada10a0e971b75a4377396227..b7135d4bed1aa8926f6a9ead8bff1fa6e428b12d 100644 (file)
@@ -4,7 +4,7 @@
   <parent>\r
     <groupId>eu.etaxonomy</groupId>\r
     <artifactId>taxeditor-parent</artifactId>\r
-    <version>5.5.1</version>\r
+    <version>5.6.0</version>\r
   </parent>\r
   <modelVersion>4.0.0</modelVersion>\r
   <artifactId>eu.etaxonomy.taxeditor.cdmlib</artifactId>\r
diff --git a/eu.etaxonomy.taxeditor.cdmlib/resources/cdm.map.ser b/eu.etaxonomy.taxeditor.cdmlib/resources/cdm.map.ser
deleted file mode 100644 (file)
index 8c0b216..0000000
Binary files a/eu.etaxonomy.taxeditor.cdmlib/resources/cdm.map.ser and /dev/null differ
index 45402dab7628047f56ee9b4e9d53c2c2ad418883..da3e92b27d41afb87b2d8559bea6ef18e150d994 100644 (file)
@@ -10,10 +10,10 @@ import eu.etaxonomy.cdm.api.config.EhCacheConfiguration;
 import eu.etaxonomy.cdm.cache.CacheLoader;
 import eu.etaxonomy.cdm.cache.CdmEntityCacheKey;
 import eu.etaxonomy.cdm.cache.CdmTransientEntityCacher;
-import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.config.ConfigFileUtil;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermBase;
 import eu.etaxonomy.taxeditor.service.TermServiceRequestExecutor;
 import eu.etaxonomy.taxeditor.session.CdmEntitySession;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
@@ -59,7 +59,13 @@ public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionMana
         EhCacheConfiguration cacheConfig = new EhCacheConfiguration();
 
         DiskStoreConfiguration diskStoreConfiguration = new DiskStoreConfiguration();
-        File ehcacheFolder = CdmUtils.getCdmHomeSubDir("taxeditor-ehcache");
+        File ehcacheFolder;
+        try {
+            ehcacheFolder = ConfigFileUtil.getCdmHomeSubDir("taxeditor-ehcache");
+        } catch (Exception e){
+            ehcacheFolder = ConfigFileUtil.getCdmHomeSubDirFallback("taxeditor-ehcache");
+        }
+
         // FIXME use subfolder per taxeditor version to allow running multiple installations in parallel
         // String taxEditorVersion = ..;
         // File ehcacheFolder = new File(ehcacheFolder, taxEditorVersion);
index db64c568cc1ca7b2e7289ccecfbad00cd8b5c91e..42d0ab5427d4a7baf25ab8f45c9a8fcb787a5c0e 100644 (file)
@@ -46,8 +46,8 @@ public class CdmLazyLoader {
        private ICommonService commonService;
 
        public CdmLazyLoader() {
-               //classesToIgnore.add("eu.etaxonomy.cdm.model.common.TermVocabulary");
-               //classesToIgnore.add("eu.etaxonomy.cdm.model.common.OrderedTermVocabulary");
+               //classesToIgnore.add("eu.etaxonomy.cdm.model.term.TermVocabulary");
+               //classesToIgnore.add("eu.etaxonomy.cdm.model.term.OrderedTermVocabulary");
 
        }
 
index ddc205a91a24b470fc923e5d6fa8ce0684f383a8..765a37248fa7dbdc22b87c91359e488237a1ee36 100644 (file)
@@ -35,14 +35,12 @@ import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
 
-import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
-import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.config.CdmSourceException;
+import eu.etaxonomy.cdm.config.ConfigFileUtil;
 import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
 import eu.etaxonomy.cdm.database.ICdmDataSource;
 import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
@@ -148,12 +146,7 @@ public class CdmServerInfo {
     }
 
     public void updateInfo() throws CDMServerException {
-        String url ;
-        if (this.isLocalhost()){
-            url = "http://localhost:58080/cdmserver/" + "info.jsp";
-        }else{
-            url = "http://" + server + ":" + String.valueOf(port) + "/" + prefix + "info.jsp";
-        }
+        String url = "http://" + server + ":" + String.valueOf(port) + "/" + prefix + "info.jsp";
         String responseBody = getResponse(url);
         if(responseBody != null) {
             try {
@@ -168,12 +161,7 @@ public class CdmServerInfo {
 
     public void addInstancesViaHttp() throws CDMServerException {
         updateInfo();
-        String url;
-        if (this.isLocalhost()){
-            url = "http://localhost:58080" + "instances.jsp";
-        }else{
-            url = "http://" + server + ":" + String.valueOf(port) + "/" + prefix + "instances.jsp";
-        }
+        String url = "http://" + server + ":" + String.valueOf(port) + "/" + prefix + "instances.jsp";
         String responseBody = getResponse(url);
         if(responseBody != null) {
             try {
@@ -386,7 +374,13 @@ public class CdmServerInfo {
 
 
     public static List<CdmServerInfo> getCdmServers() {
-        List<CdmServerInfoConfig> configList = loadFromConfigFile(new File(CdmUtils.PER_USER_CDM_FOLDER, CDM_REMOTE_SERVERS_CONFIG_FILE));
+        List<CdmServerInfoConfig> configList;
+        File file = new File(ConfigFileUtil.perUserCdmFolder(), CDM_REMOTE_SERVERS_CONFIG_FILE);
+        if (file.exists()){
+            configList = loadFromConfigFile(file);
+        }else{
+            configList = loadFromConfigFile(new File(ConfigFileUtil.perUserCdmFolderFallback(), CDM_REMOTE_SERVERS_CONFIG_FILE));
+        }
         List<CdmServerInfo> serverInfoList = new ArrayList<CdmServerInfo>(configList.size());
         for(CdmServerInfoConfig config : configList) {
             serverInfoList.add(new CdmServerInfo(config));
index c0e96180f16ffc6280b0ed286ec32f9399bc56ce..714d17d242971fe31cca793326ca2f98b86e0790 100644 (file)
@@ -11,8 +11,8 @@ import org.springframework.remoting.support.RemoteInvocation;
 import org.springframework.remoting.support.RemoteInvocationResult;
 
 import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
 
 
 public class TermServiceRequestExecutor extends CdmServiceRequestExecutor {
diff --git a/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml b/eu.etaxonomy.taxeditor.cdmlib/src/main/resources/eu/etaxonomy/cdm/mappings/hibernate.cfg.xml
deleted file mode 100644 (file)
index 4b5b150..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
-
-<hibernate-configuration>
-    <session-factory>
-
-      <property name="connection.release_mode">after_transaction</property>
-
-      <property name="hibernate.implicit_naming_strategy">org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl</property>
-      <!-- NOTE: if integrated in spring this is handled there (see persistence.xml) -->
-      <!-- Connection Pooling -->
-<!--       <property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property> -->
-<!--       <property name="hibernate.connection.provider_class">org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl</property> -->
-         <property name="hibernate.connection.provider_class">eu.etaxonomy.taxeditor.remoting.cache.CdmModelCacherConnectionProvider</property>
-          
-           <!--
-          Configuring the C3P0ConnectionProvider
-          ========================================
-          see http://www.mchange.com/projects/c3p0/index.html#hibernate-specific
-          and also org.springframework.orm.hibernate3.AbstractSessionFactoryBean.setDataSource(DataSource dataSource)
-
-          IMPORTANT:
-          Because of the constraint (1) the org.hibernate.connection.C3P0ConnectionProvider are not be used
-          for the Cdm Library because it requires the dataSource bean in some cases.
-
-          (1)
-          Do NOT specify the dataSource in the sessionFactory for example in the
-          org.springframework.orm.hibernate3.LocalSessionFactoryBean
-          !!!==> If *dataSource* is set, this will override corresponding settings in Hibernate properties.!!!
-                         If this is set, the Hibernate settings should not define a connection provider to
-                     avoid meaningless double configuration.
-          (2)
-          Hibernate uses the hibernate.c3p0.max_size property to determine if c3p0
-          is beeing used.  Therefore the max_size property MUST be set. - maybe not need in hibernate 3.4 +
-
-          (3) If you are using Hibernate's C3P0ConnectionProvider you must set the following properties
-          in your hibernate configuration, using hibernate-specific configuration keys.
-          All other properties must be defined as usual in a c3p0.properties file.
-          This is confusing, and will hopefully be simplified some time in the future, but for now...
-          
-          DOCUMENTATION UPDATE (2015-05-22):
-          Hibernate's C3P0ConnectionProvider renames 7 c3p0 configuration properties, which, 
-          if set in your hibernate configuration, will override any configuration you may have set 
-          in a c3p0.properties file.
-          TODO: are points (2) and (3) still valid? I don't think so! (AK)
-
-            hibernate.c3p0.acquire_increment
-                       hibernate.c3p0.idle_test_period
-                       hibernate.c3p0.timeout
-                       hibernate.c3p0.max_size
-                       hibernate.c3p0.max_statements
-                       hibernate.c3p0.min_size
-                       hibernate.c3p0.validate
-      -->
-      <mapping package="eu.etaxonomy.cdm.model.common"/>
-      <!-- Annotation Package -->
-      <mapping class="eu.etaxonomy.cdm.model.agent.Address"/>
-      <mapping class="eu.etaxonomy.cdm.model.agent.AgentBase"/>
-      <mapping class="eu.etaxonomy.cdm.model.agent.Contact"/>
-      <mapping class="eu.etaxonomy.cdm.model.agent.Institution"/>
-      <mapping class="eu.etaxonomy.cdm.model.agent.InstitutionalMembership"/>
-      <mapping class="eu.etaxonomy.cdm.model.agent.Person"/>
-      <mapping class="eu.etaxonomy.cdm.model.agent.Team"/>
-      <mapping class="eu.etaxonomy.cdm.model.agent.TeamOrPersonBase"/>
-      <!-- Common Package -->
-      <mapping class="eu.etaxonomy.cdm.model.common.Annotation"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.AnnotationType"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.Credit"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.DefinedTerm"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.DefinedTermBase"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.Extension"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.ExtensionType"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.IdentifiableSource"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.Identifier"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.IntextReference"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.Group"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.Language"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.LanguageString"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.LSID"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.LSIDAuthority"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.Marker"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.MarkerType"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.OrderedTerm"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.OrderedTermBase"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.OrderedTermVocabulary"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.OriginalSourceBase"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.RelationshipTermBase"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.Representation"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.TermVocabulary"/>
-      <mapping class="eu.etaxonomy.cdm.model.common.User"/>
-      <!-- Description Package -->
-      <mapping class="eu.etaxonomy.cdm.model.description.CategoricalData"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.CommonTaxonName"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.DescriptionBase"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.DescriptionElementBase"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.DescriptionElementSource"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.Distribution"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.Feature"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.Character"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.FeatureNode"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.FeatureTree"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.KeyStatement"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.MediaKey"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.IndividualsAssociation"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.MeasurementUnit"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.MultiAccessKey"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.PolytomousKey"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.PolytomousKeyNode"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.QuantitativeData"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.SpecimenDescription"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.State"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.StateData"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.StatisticalMeasure"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.TaxonDescription"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.TaxonInteraction"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.TaxonNameDescription"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.TextData"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.TextFormat"/>
-      <mapping class="eu.etaxonomy.cdm.model.description.DescriptiveDataSet"/>
-      <!-- Location Package -->
-      <mapping class="eu.etaxonomy.cdm.model.location.NamedArea"/>
-      <mapping class="eu.etaxonomy.cdm.model.location.NamedAreaLevel"/>
-      <mapping class="eu.etaxonomy.cdm.model.location.NamedAreaType"/>
-      <mapping class="eu.etaxonomy.cdm.model.location.ReferenceSystem"/>
-      <mapping class="eu.etaxonomy.cdm.model.location.Point"/>
-      <mapping class="eu.etaxonomy.cdm.model.location.Country"/>
-      <!-- Media Package -->
-      <mapping class="eu.etaxonomy.cdm.model.media.AudioFile"/>
-      <mapping class="eu.etaxonomy.cdm.model.media.ImageFile"/>
-      <mapping class="eu.etaxonomy.cdm.model.media.Media"/>
-      <mapping class="eu.etaxonomy.cdm.model.media.MediaRepresentation"/>
-      <mapping class="eu.etaxonomy.cdm.model.media.MediaRepresentationPart"/>
-      <mapping class="eu.etaxonomy.cdm.model.media.MovieFile"/>
-      <mapping class="eu.etaxonomy.cdm.model.media.Rights"/>
-      <mapping class="eu.etaxonomy.cdm.model.media.RightsType"/>
-      <!-- Meta Data Package -->
-      <mapping class="eu.etaxonomy.cdm.model.metadata.CdmMetaData"/>
-      <mapping class="eu.etaxonomy.cdm.model.metadata.CdmPreference"/>
-      <!-- Molecular Package -->
-      <mapping class="eu.etaxonomy.cdm.model.molecular.PhylogeneticTree"/>
-      <mapping class="eu.etaxonomy.cdm.model.molecular.DnaQuality"/>
-      <mapping class="eu.etaxonomy.cdm.model.molecular.DnaSample"/>
-      <mapping class="eu.etaxonomy.cdm.model.molecular.Amplification"/>
-      <mapping class="eu.etaxonomy.cdm.model.molecular.AmplificationResult"/>
-      <mapping class="eu.etaxonomy.cdm.model.molecular.Primer"/>
-      <mapping class="eu.etaxonomy.cdm.model.molecular.Sequence"/>
-      <mapping class="eu.etaxonomy.cdm.model.molecular.SequenceString"/>
-      <mapping class="eu.etaxonomy.cdm.model.molecular.SingleRead"/>
-      <mapping class="eu.etaxonomy.cdm.model.molecular.SingleReadAlignment"/>
-      <mapping class="eu.etaxonomy.cdm.model.molecular.Cloning"/>
-      <!-- Name Package -->
-      <mapping class="eu.etaxonomy.cdm.model.name.HomotypicalGroup"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.HybridRelationship"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.HybridRelationshipType"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.NameRelationship"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.NameRelationshipType"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.NameTypeDesignation"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.NomenclaturalCode"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.NomenclaturalStatus"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.NomenclaturalStatusType"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.Rank"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.Registration"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.TaxonName"/>
-      <mapping class="eu.etaxonomy.cdm.model.name.TypeDesignationBase"/>
-      
-      <!-- Occurrence Package -->
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.Collection"/>
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.DerivationEvent"/>
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.DerivationEventType"/>
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.DerivedUnit"/>
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.MaterialOrMethodEvent"/>
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.MediaSpecimen"/>
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.DeterminationEvent"/>
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.FieldUnit"/>
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.GatheringEvent"/>
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.PreservationMethod"/>
-      <mapping class="eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase"/>
-      <!-- Reference Package -->
-      <mapping class="eu.etaxonomy.cdm.model.reference.Reference"/>
-
-      <!-- Taxon Package -->
-      <mapping class="eu.etaxonomy.cdm.model.taxon.Synonym"/>
-      <mapping class="eu.etaxonomy.cdm.model.taxon.SynonymType"/>
-      <mapping class="eu.etaxonomy.cdm.model.taxon.Taxon"/>
-      <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonBase"/>
-      <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonNode"/>
-      <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation"/>
-      <mapping class="eu.etaxonomy.cdm.model.taxon.Classification"/>
-      <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonRelationship"/>
-      <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType"/>
-      
-      <!-- Validation Package -->
-      <mapping class="eu.etaxonomy.cdm.model.validation.EntityValidation"/>
-      <mapping class="eu.etaxonomy.cdm.model.validation.EntityConstraintViolation"/>
-      
-      <!-- View Package -->
-      <mapping class="eu.etaxonomy.cdm.model.view.AuditEvent"/>
-      
-      <!-- for filling caches -->
-      <!-- since hibernate 4 listeners are not handled via hibernate.cfg.xml anymore -->
-      <!--  http://stackoverflow.com/questions/8616146/eventlisteners-using-hibernate-4-0-with-spring-3-1-0-release
-            https://community.jboss.org/wiki/HibernateCoreMigrationGuide40 -->
-
-    </session-factory>
-</hibernate-configuration>
\ No newline at end of file
index d7099c7af78e7904713804d442066b5ac0f90586..ce9c2ea77cc16d99559437fb2859d3f02e9ed494 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Editor Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.editor;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Bundle-Activator: eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: OSGI-INF/l10n/plugin
index 2e3988a9f5903c15846cf2cb9aec177a998cdd44..68190497bd9caf2cda576e2ace3750e3cb4639d4 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
        <groupId>eu.etaxonomy</groupId>
        <artifactId>taxeditor-parent</artifactId>
-    <version>5.5.1</version>
+    <version>5.6.0</version>
   </parent>
   
   <modelVersion>4.0.0</modelVersion>
index 93a7446158f19a6794bd99b075b7960b72567a2d..63228443bde124056407a3c0ee53cf601e5e0690 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.taxeditor.editor;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.UUID;
 
 import org.eclipse.core.commands.ExecutionEvent;
@@ -37,6 +38,8 @@ import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4;
+import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.editor.descriptiveDataSet.DescriptiveDataSetEditor;
 import eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix.CharacterMatrixPart;
 import eu.etaxonomy.taxeditor.editor.e4.TaxonEditorInputE4;
@@ -51,6 +54,7 @@ import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
 
 /**
  * Utility for the editor package
@@ -211,8 +215,9 @@ public class EditorUtil extends AbstractUtility {
         editor.setFocus();
     }
 
-    public static MPart checkForChanges(UUID taxonUUID, EPartService partService ){
+    public static Collection<MPart> checkForChanges(UUID taxonUUID, EPartService partService ){
         Collection<MPart> parts = partService.getParts();
+        Collection<MPart> dirtyParts = new HashSet();
         //check if part is already opened
         boolean isDirty = false;
         for (MPart part : parts) {
@@ -220,13 +225,39 @@ public class EditorUtil extends AbstractUtility {
                     && ((TaxonNameEditorE4) part.getObject()).getTaxon()!=null
                     && ((TaxonNameEditorE4) part.getObject()).getTaxon().getUuid().equals(taxonUUID)){
                 if (part.isDirty()){
-                    return part;
+                    dirtyParts.add(part);
                 }
 
                 break;
+            }else if (taxonUUID == null){
+                if (part.isDirty()){
+                    dirtyParts.add(part);
+                }
             }
         }
-        return null;
+        return dirtyParts;
+    }
+
+    public static Collection<IE4SavablePart> checkForTaxonChanges(UUID taxonUUID, EPartService partService ){
+        Collection<MPart> parts = partService.getParts();
+        Collection<IE4SavablePart> dirtyParts = new HashSet<>();
+        //check if part is already opened
+        for (MPart part : parts) {
+            if(part.getObject() instanceof TaxonNameEditorE4
+                    && ((TaxonNameEditorE4) part.getObject()).getTaxon()!=null
+                    && ((TaxonNameEditorE4) part.getObject()).getTaxon().getUuid().equals(taxonUUID)){
+                if (part.isDirty()){
+                    dirtyParts.add((IE4SavablePart) part);
+                }
+
+                break;
+            }else if (taxonUUID == null){
+                if (part.isDirty() && (part.getObject() instanceof TaxonNameEditorE4 || (part.getObject() instanceof BulkEditorE4 && ((BulkEditorE4)part.getObject()).getEditorInput() instanceof TaxonEditorInput))){
+                    dirtyParts.add((IE4SavablePart) part);
+                }
+            }
+        }
+        return dirtyParts;
     }
 
        /**
@@ -413,4 +444,5 @@ public class EditorUtil extends AbstractUtility {
 
         }
     }
+
 }
index 7db5431bfa0a463bbff8f6234358b73f810359b8..1cfd2361cfb994fa4fd68c9a0b86da73878090d2 100644 (file)
@@ -23,7 +23,7 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
index f10451d504045530944ad8983d2ea1968b385396..fcb0a3195646ea5cdd664f7c20fc9469faf42f1d 100644 (file)
@@ -22,8 +22,9 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.swt.widgets.Tree;
 
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.description.Character;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.remote.l10n.TermRepresentation_L10n;
@@ -43,7 +44,7 @@ public class DescriptiveDataSetComposite extends Composite {
     private Text txtDescriptiveDataSet;
     private TermUuidComboViewer comboRankMin;
     private TermUuidComboViewer comboRankMax;
-    private FeatureTreeEditorComposite featureTreeEditorComposite;
+    private FeatureTreeEditorComposite<Character> featureTreeEditorComposite;
     private TreeViewer taxonNodeTree;
     private List<TermDto> areas = new ArrayList<>();
     private Text textAreaText;
@@ -134,7 +135,7 @@ public class DescriptiveDataSetComposite extends Composite {
         btnChooseArea = new Button(composite, SWT.NONE);
         btnChooseArea.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON));
 
-        featureTreeEditorComposite = new FeatureTreeEditorComposite(this, SWT.NONE);
+        featureTreeEditorComposite = new FeatureTreeEditorComposite<Character>(this, SWT.NONE);
         featureTreeEditorComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
     }
 
@@ -160,14 +161,14 @@ public class DescriptiveDataSetComposite extends Composite {
         comboRankMax.setElement(max);
     }
 
-    public FeatureTreeEditorComposite getFeatureTreeEditorComposite() {
+    public FeatureTreeEditorComposite<Character> getFeatureTreeEditorComposite() {
         return featureTreeEditorComposite;
     }
 
-    public FeatureTree getCharacters(){
+    public FeatureTree<Character> getCharacters(){
         return featureTreeEditorComposite.getFeatureTree();
     }
-    public void setCharacters(FeatureTree characters) {
+    public void setCharacters(FeatureTree<Character> characters) {
         featureTreeEditorComposite.setSelectedTree(characters);
     }
 
index 40cb2d2558d6d9b17fb1827451cd9642a9985535..66011b2e0c1cde432b69c16afb60c0486a23be8d 100644 (file)
@@ -57,13 +57,15 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.description.Character;
 import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
@@ -134,7 +136,7 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
         composite.getRankMin().addSelectionChangedListener(event->dirty.setDirty(true));
         composite.getRankMin().setText("Select min rank...");
         composite.getRankMax().addSelectionChangedListener(event->dirty.setDirty(true));
-        composite.getRankMin().setText("Select max rank...");
+        composite.getRankMax().setText("Select max rank...");
         composite.getBtnRemoveRankMin().addSelectionListener(new SelectionAdapter() {
             @Override
             public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
@@ -165,7 +167,13 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
             }
         });
 
-        composite.getFeatureTreeEditorComposite().init("Character Tree", null, null, e->selectionService.setSelection(e.getSelection()), this, null);
+        composite.getFeatureTreeEditorComposite().init("Character Tree",
+                TermType.Character,
+                null,
+                null,
+                e->selectionService.setSelection(e.getSelection()),
+                this,
+                null);
 
         //add drag'n'drop support
         Transfer[] transfers = new Transfer[] {LocalSelectionTransfer.getTransfer()};
@@ -281,7 +289,7 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
                 }
             }
         }
-        FeatureTree characters = composite.getCharacters();
+        FeatureTree<Character> characters = composite.getCharacters();
         if(characters!=null){
             //save characters because they can be modified in this editor
             characters.getDistinctFeatures().forEach(character->CdmStore.getService(ITermService.class).merge(character,true));
index 6cc2392460dbc2d996e269f7f7c035a13619d959..874b8eff6b61350c23ec60bed2f22cc000313794 100644 (file)
@@ -22,7 +22,7 @@ import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.widgets.Display;
 
 import eu.etaxonomy.cdm.model.description.Character;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.featuretree.CharacterTransfer;
 import eu.etaxonomy.taxeditor.featuretree.e4.FeatureNodeDragListener;
 
@@ -35,7 +35,7 @@ public class CharacterDragListener extends FeatureNodeDragListener {
 
     private TreeViewer structureViewer;
     private TreeViewer propertyViewer;
-    Collection<Character> characters;
+    private Collection<Character> characters;
     private Image image;
     private GC gc;
 
index 750305e7081bdda08f6aa7faf0d3a232513c4070..9e733912d9f3918b914d9c8715e21cefb5102e70 100644 (file)
@@ -15,8 +15,8 @@ import org.eclipse.swt.dnd.TransferData;
 
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
 import eu.etaxonomy.cdm.model.description.Character;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.featuretree.CharacterTransfer;
 import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeDropAdapter;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -64,8 +64,7 @@ public class CharacterDropAdapter extends FeatureTreeDropAdapter {
                         //drop on feature tree
                         target = ((FeatureTree)getViewer().getInput()).getRoot();
                     }
-                       characterEditor.getVocabulary().addTerm(character);
-                    CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(target, character);
+                    CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(target.getUuid(), character, characterEditor.getVocabulary().getUuid());
                    }
                }
                getViewer().refresh();
index e2428f9ec846ae2e674497f54924ce10f874b3c5..0c549f6bec50e3ffbd98cc3eb0fbbdaab80b9757 100644 (file)
@@ -58,13 +58,14 @@ import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;
 import eu.etaxonomy.cdm.model.description.Character;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.AppModelId;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
@@ -95,9 +96,9 @@ import eu.etaxonomy.taxeditor.workbench.part.IE4ViewerPart;
 public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled, ISelectionChangedListener,
         ModifyListener, IE4ViewerPart, IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
 
-    private FeatureTreeEditorComposite characterTreeEditorComposite;
-    private FeatureTreeEditorComposite propertiesTreeEditorComposite;
-    private FeatureTreeEditorComposite structuresTreeEditorComposite;
+    private FeatureTreeEditorComposite<Character> characterTreeEditorComposite;
+    private FeatureTreeEditorComposite<DefinedTermBase> propertiesTreeEditorComposite;
+    private FeatureTreeEditorComposite<DefinedTermBase> structuresTreeEditorComposite;
     private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
 
     @Inject
@@ -157,7 +158,7 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
                 if(vocabulary!=null){
                     vocabulariesToBeFiltered.add(vocabulary);
                 }
-                vocabulary = TermVocabularySelectionDialog.select("Select vocabulary for characters", btnChooseVoc.getShell(), vocabulariesToBeFiltered, TermType.Feature);
+                vocabulary = TermVocabularySelectionDialog.select("Select vocabulary for characters", btnChooseVoc.getShell(), vocabulariesToBeFiltered, TermType.Character);
                 if(vocabulary!=null){
                     txtVocabulary.setText(vocabulary.getLabel());
                 }
@@ -178,7 +179,7 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
 
         structuresTreeEditorComposite = addFeatureTreeEditor(composite);
 
-        initFeatureTreeComposite(structuresTreeEditorComposite,
+        initFeatureTreeComposite(TermType.Structure, structuresTreeEditorComposite,
                 new FeatureNodeDragListener(structuresTreeEditorComposite.getViewer()), null, null, null, null);
 
         structuresTreeEditorComposite.getLabel_title().setText(Messages.CharacterEditor_STRUCTURES);
@@ -191,8 +192,7 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
         composite_1.setLayout(gl_composite_1);
 
         propertiesTreeEditorComposite = addFeatureTreeEditor(composite_1);
-        initFeatureTreeComposite(propertiesTreeEditorComposite,
-
+        initFeatureTreeComposite(TermType.Property, propertiesTreeEditorComposite,
                 new CharacterDragListener(structuresTreeEditorComposite.getViewer(), propertiesTreeEditorComposite.getViewer()),
                 null,
                 new Transfer[] {CharacterTransfer.getInstance()},
@@ -226,18 +226,17 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
                     return;
                 }
                 Collection<Character> characters = createCharacters((TreeSelection)structureTreeSelection, (TreeSelection)propertyTreeSelection);
+                FeatureNode<Character> parent = ((FeatureTree<Character>) characterTreeEditorComposite.getViewer().getInput()).getRoot();
                 for (Character character : characters) {
                     //add new Character to feature tree
-                    FeatureNode parent = ((FeatureTree) characterTreeEditorComposite.getViewer().getInput()).getRoot();
-                    vocabulary.addTerm(character);
-                    CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(parent, character);
+                    CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(parent.getUuid(), character, vocabulary.getUuid());
                 }
                 characterTreeEditorComposite.getViewer().refresh();
             }
         });
 
         characterTreeEditorComposite = addFeatureTreeEditor(composite_3);
-        initFeatureTreeComposite(characterTreeEditorComposite, new FeatureNodeDragListener(characterTreeEditorComposite.getViewer()),
+        initFeatureTreeComposite(TermType.Character, characterTreeEditorComposite, new FeatureNodeDragListener(characterTreeEditorComposite.getViewer()),
                 new CharacterDropAdapter(this, characterTreeEditorComposite.getViewer(), sync),
 
                 new Transfer[] {FeatureNodeTransfer.getInstance(), CharacterTransfer.getInstance()},
@@ -252,13 +251,14 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
 
     }
 
-    private FeatureTreeEditorComposite addFeatureTreeEditor(Composite composite_3) {
-        FeatureTreeEditorComposite featureTreeEditorComposite = new FeatureTreeEditorComposite(composite_3, SWT.NONE);
+    private <T extends DefinedTermBase> FeatureTreeEditorComposite<T> addFeatureTreeEditor(Composite composite_3) {
+        FeatureTreeEditorComposite<T> featureTreeEditorComposite = new FeatureTreeEditorComposite<>(composite_3, SWT.NONE);
         featureTreeEditorComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
         return featureTreeEditorComposite;
     }
 
     private void initFeatureTreeComposite(
+            TermType termType,
             FeatureTreeEditorComposite featureTreeEditorComposite,
             FeatureNodeDragListener featureNodeDragListener,
             FeatureTreeDropAdapter featureNodeDropAdapter,
@@ -271,7 +271,7 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
                 featureNodeDropAdapter,
                 transfers,
                 viewerSelectionChangedListener,
-                new FeatureTreeChooserListener(featureTreeEditorComposite),
+                new FeatureTreeChooserListener(featureTreeEditorComposite, termType),
                 modifyListener);
     }
 
@@ -291,16 +291,16 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
     public static Collection<Character> createCharacters(TreeSelection structureTreeSelection, TreeSelection propertyTreeSelection){
         Set<Character> characters = new HashSet<>();
         //get selected structures and properties
-        Iterator<FeatureNode> structureIterator = structureTreeSelection.iterator();
+        Iterator<FeatureNode<DefinedTermBase>> structureIterator = structureTreeSelection.iterator();
 
         //create all combinations of structures and properties
         while(structureIterator.hasNext()){
-            FeatureNode structureNode = structureIterator.next();
-            Iterator<FeatureNode> propertiesIterator = propertyTreeSelection.iterator();
+            FeatureNode<DefinedTermBase> structureNode = structureIterator.next();
+            Iterator<FeatureNode<DefinedTermBase>> propertiesIterator = propertyTreeSelection.iterator();
             while(propertiesIterator.hasNext()){
-                FeatureNode propertyNode = propertiesIterator.next();
-                Representation structureRepresentation = structureNode.getFeature().getRepresentation(PreferencesUtil.getGlobalLanguage());
-                Representation propertyRepresentation = propertyNode.getFeature().getRepresentation(PreferencesUtil.getGlobalLanguage());
+                FeatureNode<DefinedTermBase> propertyNode = propertiesIterator.next();
+                Representation structureRepresentation = structureNode.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
+                Representation propertyRepresentation = propertyNode.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
                 String label = null;
                 String abbrevLabel = null;
                 if(structureRepresentation.getLabel()!=null && propertyRepresentation.getLabel()!=null){
@@ -327,7 +327,7 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
         // commit the conversation and start a new transaction immediately
         conversation.commit(true);
 
-        FeatureTree featureTree = characterTreeEditorComposite.getFeatureTree();
+        FeatureTree<Character> featureTree = characterTreeEditorComposite.getFeatureTree();
         if(featureTree!=null){
             //save characters because they can be modified in this editor
             featureTree.getDistinctFeatures().forEach(character->CdmStore.getService(ITermService.class).merge(character,true));
@@ -381,8 +381,8 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
     }
 
     @Override
-    public List<FeatureTree> getRootEntities() {
-        List<FeatureTree> root = new ArrayList<>();
+    public List<FeatureTree<Character>> getRootEntities() {
+        List<FeatureTree<Character>> root = new ArrayList<>();
         root.add(characterTreeEditorComposite.getFeatureTree());
         return root;
     }
@@ -422,7 +422,7 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
         return (IStructuredSelection) characterTreeEditorComposite.getViewer().getSelection();
     }
 
-    public FeatureTree getCharacterTree(){
+    public FeatureTree<Character> getCharacterTree(){
         return characterTreeEditorComposite.getFeatureTree();
     }
 
@@ -434,17 +434,18 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
     }
 
     private class FeatureTreeChooserListener extends SelectionAdapter{
-        FeatureTreeEditorComposite featureTreeEditorComposite;
+        private FeatureTreeEditorComposite<?> featureTreeEditorComposite;
+        private TermType termType;
 
-        public FeatureTreeChooserListener(FeatureTreeEditorComposite featureTreeEditorComposite) {
+        public FeatureTreeChooserListener(FeatureTreeEditorComposite<?> featureTreeEditorComposite, TermType termType) {
             super();
             this.featureTreeEditorComposite = featureTreeEditorComposite;
+            this.termType = termType;
         }
 
         @Override
         public void widgetSelected(SelectionEvent e) {
-            FeatureTree tree = FeatureTreeSelectionDialog.select(featureTreeEditorComposite.getDisplay().getActiveShell(), //conversation,
-                    null);
+            FeatureTree tree = FeatureTreeSelectionDialog.select(featureTreeEditorComposite.getDisplay().getActiveShell(), null, termType);
             if(tree!=null){
                 featureTreeEditorComposite.setSelectedTree(tree);
             }
@@ -463,6 +464,7 @@ public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled,
     @Override
     public void changed(Object element) {
         setDirty();
+        characterTreeEditorComposite.getViewer().refresh();
     }
 
     @Override
index a1f3d57a8fa1b870882277b9dfc67c79364b1c3f..04434a3f29c3ed1f4665ca8dc371e1bc8fb5c5dd 100644 (file)
@@ -58,7 +58,7 @@ public class CategoricalChartTooltip extends ToolTip {
 
         int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
         int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
-        Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+        Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
         CategoricalDataHistogram histogram = matrix.getFeatureToHistogramMap().get(feature);
 
         Composite tooltip;
@@ -82,7 +82,7 @@ public class CategoricalChartTooltip extends ToolTip {
         //get histogram for column
         int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
         int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
-        Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+        Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
         CategoricalDataHistogram histogram = matrix.getFeatureToHistogramMap().get(feature);
 
         // set chart title
@@ -129,7 +129,7 @@ public class CategoricalChartTooltip extends ToolTip {
         int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
         int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
         int rowPos = matrix.getNatTable().getRowPositionByY(event.y);
-        Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+        Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
 
         if(matrix.isShowTooltips()
                 && rowPos==1
index 87cb7f034728dad0eea69b8dcac83b72a5c68e7f..774f66b4614dee6ed7ad3594982dc54bb9b462ea 100644 (file)
@@ -102,10 +102,10 @@ import eu.etaxonomy.cdm.model.description.Character;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.cdm.model.description.MeasurementUnit;
 import eu.etaxonomy.cdm.model.description.State;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.persistence.dto.SpecimenNodeWrapper;
 import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
@@ -150,7 +150,7 @@ public class CharacterMatrix extends Composite {
 
     private NatTable natTable;
 
-    private Map<Integer, Feature> indexToFeatureMap = new HashMap<>();
+    private Map<Integer, Character> indexToCharacterMap = new HashMap<>();
 
     private Map<Feature, List<State>> categoricalFeatureToStateMap = new HashMap<>();
 
@@ -168,7 +168,7 @@ public class CharacterMatrix extends Composite {
 
     private FreezeLayer freezeLayer;
 
-    private List<Feature> features;
+    private List<Character> characters;
 
     private CharacterMatrixPart part;
 
@@ -269,32 +269,29 @@ public class CharacterMatrix extends Composite {
         natTable.doCommand(new ClientAreaResizeCommand(natTable));
     }
 
-    private List<Feature> initFeatureList(FeatureNode node){
-        List<Feature> features = new ArrayList<>();
+    private List<Character> initCharacterList(FeatureNode<Character> node){
+        List<Character> characters = new ArrayList<>();
         node.getChildNodes().forEach(childNode->
                 {
-                    Feature feature = childNode.getFeature();
-                    if(feature.isInstanceOf(Character.class)){
-                        features.add(childNode.getFeature());
-                    }
-                    features.addAll(initFeatureList(childNode));
+                    characters.add(childNode.getTerm());
+                    characters.addAll(initCharacterList(childNode));
                 });
-        return features;
+        return characters;
     }
 
     public void initDescriptiveDataSet(DescriptiveDataSet descriptiveDataSet){
         this.descriptiveDataSet = descriptiveDataSet;
         //get features/columns stored in descriptive data set
-        FeatureTree tree = descriptiveDataSet.getDescriptiveSystem();
-        features = initFeatureList(tree.getRoot());
+        FeatureTree<Character> tree = descriptiveDataSet.getDescriptiveSystem();
+        characters = initCharacterList(tree.getRoot());
 
         //init state data for categorical features
-        features.forEach(feature->
+        characters.forEach(character->
         {
-            if(feature.isSupportsCategoricalData()){
+            if(character.isSupportsCategoricalData()){
                 List<State> supportedStates = new ArrayList<>();
-                feature.getSupportedCategoricalEnumerations().forEach(voc->supportedStates.addAll(voc.getTerms()));
-                categoricalFeatureToStateMap.put(feature, supportedStates);
+                character.getSupportedCategoricalEnumerations().forEach(voc->supportedStates.addAll(voc.getTerms()));
+                categoricalFeatureToStateMap.put(character, supportedStates);
             }
         });
         descriptions = new BasicEventList<>();
@@ -365,9 +362,9 @@ public class CharacterMatrix extends Composite {
         propertyToLabelMap.put(COLLECTOR_COLUMN, Messages.CharacterMatrix_COLLECTOR_NO);
         propertyToLabelMap.put(IDENTIFIER_COLUMN, Messages.CharacterMatrix_IDENTIFIER);
         propertyToLabelMap.put(COUNTRY_COLUMN, Messages.CharacterMatrix_COUNTRY);
-        for(int i=0;i<features.size();i++){
-            Feature feature = features.get(i);
-            initLabels(i, feature);
+        for(int i=0;i<characters.size();i++){
+            Character character = characters.get(i);
+            initLabels(i, character);
         }
 
         // layer for event handling of GlazedLists and PropertyChanges
@@ -388,11 +385,11 @@ public class CharacterMatrix extends Composite {
         //regoster labels with summary prefix for summary layer
         ColumnOverrideLabelAccumulator summaryColumnLabelAccumulator =new ColumnOverrideLabelAccumulator(bodyDataLayer);
         summaryRowLayer.setConfigLabelAccumulator(summaryColumnLabelAccumulator);
-        for(int i=0;i<features.size();i++){
-            Feature feature = features.get(i);
+        for(int i=0;i<characters.size();i++){
+            Character character = characters.get(i);
             summaryColumnLabelAccumulator.registerColumnOverrides(
                     i+LEADING_COLUMN_COUNT,
-                    SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
+                    SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(character));
         }
         // because the horizontal dependency is the ViewportLayer
         // we need to set the composite dependency to false
@@ -558,24 +555,24 @@ public class CharacterMatrix extends Composite {
         }
     }
 
-    private void initLabels(int index, Feature feature) {
-        indexToFeatureMap.put(index+LEADING_COLUMN_COUNT, feature);
+    private void initLabels(int index, Character character) {
+        indexToCharacterMap.put(index+LEADING_COLUMN_COUNT, character);
 
-        String featureLabel = feature.getLabel();
-        String property = featureLabel;
+        String label = character.getLabel();
+        String property = character.getUuid().toString();
         //show unit for quantitative data
-        if(feature.isSupportsQuantitativeData()){
-            Set<MeasurementUnit> recommendedMeasurementUnits = feature.getRecommendedMeasurementUnits();
+        if(character.isSupportsQuantitativeData()){
+            Set<MeasurementUnit> recommendedMeasurementUnits = character.getRecommendedMeasurementUnits();
             if(recommendedMeasurementUnits.size()>1){
                 MessagingUtils.warningDialog(Messages.CharacterMatrix_INIT_PROBLEM, CharacterMatrix.class,
-                        String.format(Messages.CharacterMatrix_INIT_PROBLEM_MESSAGE, feature.getLabel()));
+                        String.format(Messages.CharacterMatrix_INIT_PROBLEM_MESSAGE, character.getLabel()));
             }
             if(recommendedMeasurementUnits.size()==1){
                 MeasurementUnit unit = recommendedMeasurementUnits.iterator().next();
-                featureLabel += " ["+unit.getIdInVocabulary()+"]"; //$NON-NLS-1$ //$NON-NLS-2$
+                label += " ["+unit.getIdInVocabulary()+"]"; //$NON-NLS-1$ //$NON-NLS-2$
             }
         }
-        propertyToLabelMap.put(property, featureLabel);
+        propertyToLabelMap.put(property, label);
     }
 
     public void loadDescriptions(DescriptiveDataSet descriptiveDataSet) {
@@ -656,8 +653,8 @@ public class CharacterMatrix extends Composite {
         return categoricalFeatureToStateMap.get(feature);
     }
 
-    public Map<Integer, Feature> getIndexToFeatureMap() {
-        return indexToFeatureMap;
+    public Map<Integer, Character> getIndexToCharacterMap() {
+        return indexToCharacterMap;
     }
 
     public LinkedMap<String, String> getPropertyToLabelMap() {
@@ -718,8 +715,8 @@ public class CharacterMatrix extends Composite {
         return new File(WorkbenchUtility.getBaseLocation(), CHARACTER_MATRIX_STATE_PROPERTIES);
     }
 
-    public List<Feature> getFeatures() {
-        return features;
+    public List<Character> getFeatures() {
+        return characters;
     }
 
     public Map<Feature, CategoricalDataHistogram> getFeatureToHistogramMap() {
index 446c8982779ad411d83b2c5ff6215068a29a3cef..d809f91bb65927dbc7293fd36ddf954ea1df77f3 100644 (file)
@@ -42,6 +42,7 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService;
 import eu.etaxonomy.cdm.api.service.dto.RowWrapperDTO;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
@@ -130,7 +131,9 @@ ICdmEntitySessionEnabled, IPartContentHasSupplementalData, IPartContentHasDetail
     public void init(UUID descriptiveDataSetUuid, boolean treeView) {
         this.descriptiveDataSet = CdmStore.getService(IDescriptiveDataSetService.class).load(descriptiveDataSetUuid, WS_PROPERTY_PATH);
         if(descriptiveDataSet!=null){
-            if(descriptiveDataSet.getDescriptiveSystem()==null){
+            if(descriptiveDataSet.getDescriptiveSystem()==null
+                    || descriptiveDataSet.getDescriptiveSystem().getTermType()==null
+                    || !descriptiveDataSet.getDescriptiveSystem().getTermType().equals(TermType.Character)){
                 MessagingUtils.informationDialog(Messages.CharacterMatrixPart_COULD_NOT_OPEN, Messages.CharacterMatrixPart_COULD_NOT_OPEN_MESSAGE);
                 return;
             }
index 14a1acccc2089660ad226b6275a0a96a3173c71a..1a930b521b2fa28bc746e39160af6e5b07d483f5 100644 (file)
@@ -58,7 +58,7 @@ public class QuantitativeChartTooltip extends DefaultToolTip {
 
         int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
         int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
-        Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+        Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
         QuantitativeDataStatistics dataStatistics = matrix.getFeatureToQuantDataStatisticsMap().get(feature);
 
         Composite tooltip;
@@ -83,7 +83,7 @@ public class QuantitativeChartTooltip extends DefaultToolTip {
         //get statistics for column
         int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
         int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
-        Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+        Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
         QuantitativeDataStatistics quantitativeDataStatistics = matrix.getFeatureToQuantDataStatisticsMap().get(feature);
         List<DescriptiveStatistics> statistics = quantitativeDataStatistics.getStatistics();
 
@@ -136,7 +136,7 @@ public class QuantitativeChartTooltip extends DefaultToolTip {
         int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
         int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
         int rowPos = matrix.getNatTable().getRowPositionByY(event.y);
-        Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+        Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
 
         if(matrix.isShowTooltips()
                 && rowPos==1
index fbd34673ad8acf4755cf05b996f419de1c40f862..3fda17c536d8ceacc891190bdb63a671c5dd69b6 100644 (file)
@@ -52,14 +52,14 @@ public class SpecimenColumnPropertyAccessor implements IColumnPropertyAccessor<O
             default:
                 break;
             }
-            Feature feature = matrix.getIndexToFeatureMap().get(columnIndex);
+            Feature feature = matrix.getIndexToCharacterMap().get(columnIndex);
             return rowWrapper.getDataValueForFeature(feature);
         } else if(rowObject instanceof TaxonRowWrapperDTO){
             TaxonRowWrapperDTO taxonWrapper = (TaxonRowWrapperDTO)rowObject;
             if(columnIndex==0){
                 return taxonWrapper.getDescription();
             }
-            Feature feature = matrix.getIndexToFeatureMap().get(columnIndex);
+            Feature feature = matrix.getIndexToCharacterMap().get(columnIndex);
             return taxonWrapper.getDataValueForFeature(feature);
 
         }
@@ -73,7 +73,7 @@ public class SpecimenColumnPropertyAccessor implements IColumnPropertyAccessor<O
     public void setDataValue(Object rowObject, int columnIndex, Object newValue) {
         if(rowObject instanceof RowWrapperDTO){
             RowWrapperDTO rowWrapper = (RowWrapperDTO)rowObject;
-            Feature feature = matrix.getIndexToFeatureMap().get(columnIndex);
+            Feature feature = matrix.getIndexToCharacterMap().get(columnIndex);
             rowWrapper.setDataValueForFeature(feature, newValue);
         }
     }
index 645158c1f4efebb102eb4426c955de5d2f3492fb..4985a9a0fff6412069e061b7532777570f411d94 100644 (file)
@@ -34,7 +34,7 @@ public class CategoricalComboBoxDataProvider implements IComboBoxDataProvider {
 
     @Override
     public List<?> getValues(int columnIndex, int rowIndex) {
-        Feature feature = matrix.getIndexToFeatureMap().get(columnIndex);
+        Feature feature = matrix.getIndexToCharacterMap().get(columnIndex);
         List<State> supportedStatesForCategoricalFeature = matrix.getSupportedStatesForCategoricalFeature(feature);
         maxVisibleItems = Math.max(3, Math.min(supportedStatesForCategoricalFeature.size()-1, 10));
         return supportedStatesForCategoricalFeature;
index d9492203e7382974f6fc7746707af2be0a03b868..f29abe64d74fefcc7ceaeb20a6a73fbad0d064e6 100644 (file)
@@ -41,7 +41,7 @@ public class CategoricalDataCellEditor extends ComboBoxCellEditor{
         if(canonicalValue==null){
             Object rowWrapper = matrix.getBodyDataProvider().getRowObject(this.getRowIndex());
             if(rowWrapper instanceof RowWrapperDTO){
-                Feature feature = matrix.getIndexToFeatureMap().get(getColumnIndex());
+                Feature feature = matrix.getIndexToCharacterMap().get(getColumnIndex());
                 ((RowWrapperDTO) rowWrapper).addCategoricalData(feature);
             }
         }
index 215b4be1da6f505d79d7431f487457c9fa63f818..b65e98463f92498690deaf690375be25374e5f17 100644 (file)
@@ -89,7 +89,7 @@ public class QuantitativeDataDialogEditor extends AbstractDialogCellEditor {
             ICellEditHandler editHandler, ILayerCell cell, IConfigRegistry configRegistry) {
         this.initialInput = null;
         Object rowObject = matrix.getBodyDataProvider().getRowObject(cell.getRowIndex());
-        Feature feature = matrix.getIndexToFeatureMap().get(cell.getColumnIndex());
+        Feature feature = matrix.getIndexToCharacterMap().get(cell.getColumnIndex());
         QuantitativeData quantitativeData = null;
         if(rowObject instanceof RowWrapperDTO){
             if(cell.getDataValue() instanceof QuantitativeData){
index cd992804dd6c831be29060ea89deec28c7b81a60..81f6435ee4f6c8609d41916ac5d00c36893ab525 100644 (file)
@@ -20,7 +20,14 @@ import java.util.Map.Entry;
 import java.util.Set;
 import java.util.UUID;
 
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
@@ -44,14 +51,15 @@ import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput;
 import eu.etaxonomy.taxeditor.editor.ChooseFromMultipleAcceptedTaxaDialog;
 import eu.etaxonomy.taxeditor.editor.ChooseFromMultipleTaxonNodesDialog;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.DataChangeBridge;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
-import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 
 
 /**
@@ -74,7 +82,7 @@ public class TaxonEditorInputE4  extends CdmEntitySessionInput implements IConve
     private List<TaxonName> toSaveNewNames = new ArrayList<>();
 
 
-    private Set<AbstractPostTaxonOperation> operations = new HashSet<>();
+    private Set<AbstractPostOperation> operations = new HashSet<>();
 
     private TaxonEditorInputDataChangeBehaviourE4 dataChangeBehavior;
 
@@ -334,15 +342,7 @@ public class TaxonEditorInputE4  extends CdmEntitySessionInput implements IConve
         return initiallySelectedTaxonBase;
     }
 
-    public Set<AbstractPostTaxonOperation> getOperations() {
-        return operations;
-    }
-
-    public void setOperations(Set<AbstractPostTaxonOperation> operations) {
-        this.operations = operations;
-    }
-
-    public void addOperation(AbstractPostTaxonOperation operation) {
+    public void addOperation(AbstractPostOperation operation) {
         this.operations.add(operation);
     }
 
@@ -369,10 +369,33 @@ public class TaxonEditorInputE4  extends CdmEntitySessionInput implements IConve
         }
         toDeletes.clear();
         for(AbstractPostOperation entry:operations){
-            EditorUtil.executeOperation(entry,sync);
+            IStatus status = Status.CANCEL_STATUS;
+            final IAdaptable uiInfoAdapter = WorkspaceUndoUtil
+                    .getUIInfoAdapter(AbstractUtility.getShell());
+            String operationlabel = entry.getLabel();
+            try {
+                entry.addContext(IOperationHistory.GLOBAL_UNDO_CONTEXT);
+                status = entry.execute(new NullProgressMonitor(), uiInfoAdapter);
+            } catch (ExecutionException e) {
+
+                MessagingUtils.operationDialog(AbstractUtility.class, e, TaxeditorStorePlugin.PLUGIN_ID, operationlabel, null);
+
+            }
+
+            String statusString = status.equals(Status.OK_STATUS) ? "completed"
+                    : "cancelled";
+
+            IPostOperationEnabled postOperationEnabled = entry
+                    .getPostOperationEnabled();
+            if (postOperationEnabled != null) {
+                postOperationEnabled.onComplete();
+            }
+
+
+            //AbstractUtility.executeOperation(entry,sync);
         }
-        operations.clear();
 
+        operations.clear();
         for (Synonym syn: toSaveNewSynonyms){
             for (HybridRelationship rel : syn.getName().getHybridChildRelations()){
 //                if (!rel.getParentName().isPersited()) {
@@ -404,6 +427,7 @@ public class TaxonEditorInputE4  extends CdmEntitySessionInput implements IConve
 
         CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true);
 
+
     }
 
     /**
index c16f861e8c6095dc9bfc97aa918ee8b4122a61cf..e7cd2d8a69aeb786b0b61b5c94592f2bef51c803 100644 (file)
@@ -162,6 +162,7 @@ public class Messages extends NLS {
     public static String DescriptionElementDropAdapter_NOT_SUPPORTED;
     public static String DescriptionElementDropAdapter_NOT_SUPPORTED_EMPTY_ELEMENT;
     public static String DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT;
+    public static String DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT_IN_DESCRIPTION;
     public static String DescriptiveViewPart_COLLAPSE_ALL;
        public static String DescriptiveViewPart_EXPAND_ALL;
        public static String DescriptiveViewPart_FACTUAL_DATA;
@@ -308,6 +309,8 @@ public class Messages extends NLS {
     public static String ChecklistEditor_REMOVE_DEFAULT_SOURCE_TOOLTIP;
     public static String ChecklistEditor_SEARCH_TOOLTIP;
     public static String DistributionEditor_defaultSource;
+    public static String FactualDataView_Lable;
+    public static String NameFactsDataView_Lable;
     static {
         // initialize resource bundle
         NLS.initializeMessages(BUNDLE_NAME, Messages.class);
index a93264e00d0c5dbe7f66d6e26de07d961ee127f1..e81e3348bbaea5736a51b23eafcd89e252ff035f 100644 (file)
@@ -47,6 +47,7 @@ DescriptionElementDropAdapter_MOVE_DESC=Move Descriptions
 DescriptionElementDropAdapter_NOT_SUPPORTED=Operation not supported yet
 DescriptionElementDropAdapter_NOT_SUPPORTED_EMPTY_ELEMENT=We are unable to drag and drop empty descriptions
 DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT=We are currently unable to drag and drop a newly created element. Please save the editor to make this work.
+DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT_IN_DESCRIPTION=Drag and Drop into descriptions containing unsaved factual data is not possible.\nPlease save to continue.
 DescriptiveViewPart_COLLAPSE_ALL=Collapse All
 DescriptiveViewPart_EXPAND_ALL=Expand All
 DescriptiveViewPart_FACTUAL_DATA=Factual Data
@@ -220,7 +221,7 @@ CharacterMatrixBottomToolbar_ERROR_ROW_CREATION_MESSAGE=Could not create rows fo
 CharacterMatrixBottomToolbar_ERROR_ROW_CREATION_TITLE=Errors during row creation
 CharacterMatrixBottomToolbar_YES=Yes
 CharacterMatrixPart_COULD_NOT_OPEN=Editor could not be opened
-CharacterMatrixPart_COULD_NOT_OPEN_MESSAGE=The descriptive data set has no feature tree selected.
+CharacterMatrixPart_COULD_NOT_OPEN_MESSAGE=The descriptive data set has no character tree selected or the tree contains elements that are not characters.
 CharacterMatrixPart_LOADING_MATRIX=Loading matrix...
 SwapSynonymAndAcceptedOperation_NOT_IMPLEMENTED=Not yet implemented
 SwapSynonymAndAcceptedOperation_SWAP_SYN_ACC_TAXON=Swap Synonym And Accepted Taxon Operation
@@ -286,4 +287,6 @@ ChecklistEditor_DEFAULT_SOURCE_TOOLTIP=Choose a source which is added to every n
 ChecklistEditor_REMOVE_DEFAULT_SOURCE_TOOLTIP=After removing the default source, newly created distribution will not get a default source.
 ChecklistEditor_SEARCH_TOOLTIP=Textfilter for Taxa
 DistributionEditor_defaultSource=Default Source: 
-ChecklistEditor_REMOVE_DEFAULT_SOURCE=Remove Source
\ No newline at end of file
+ChecklistEditor_REMOVE_DEFAULT_SOURCE=Remove Source
+FactualDataView_Lable=Factual Data
+NameFactsDataView_Lable=Name Facts
\ No newline at end of file
index aacd82c5c416c3bf3f81256c4b3e4b446fdf73e4..6839ce6dfa69f0ef2b493adcbca588943289a924 100644 (file)
@@ -47,6 +47,7 @@ DescriptionElementDropAdapter_MOVE_DESC=Verschiebe Beschreibungen
 DescriptionElementDropAdapter_NOT_SUPPORTED=Vorgang noch nicht unterstützt
 DescriptionElementDropAdapter_NOT_SUPPORTED_EMPTY_ELEMENT=Drag and Drop für leeren Beschreibungen noch nicht unterstützt
 DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT=Drag and Drop für neu erstellte Elemente noch nicht unterstützt. Bitte Editor speichern, um den Vorgang auszuführen.
+DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT_IN_DESCRIPTION=Drag and Drop in Beschreibungen, die nicht gespeicherte Fakten enthalten, wird noch nicht unterstützt. \nBitte speichern, um den Vorgang auszuführen.
 DescriptiveViewPart_COLLAPSE_ALL=Alles einklappen
 DescriptiveViewPart_EXPAND_ALL=Alles ausklappen
 DescriptiveViewPart_FACTUAL_DATA=Faktendaten
@@ -220,7 +221,7 @@ CharacterMatrixBottomToolbar_ERROR_ROW_CREATION_MESSAGE=Konnte keine Zeilen f
 CharacterMatrixBottomToolbar_ERROR_ROW_CREATION_TITLE=Fehler bei der Erstellung der Zeilen
 CharacterMatrixBottomToolbar_YES=Ja
 CharacterMatrixPart_COULD_NOT_OPEN=Editor konnte nicht geöffnet werden
-CharacterMatrixPart_COULD_NOT_OPEN_MESSAGE=Das Dataset hat keinen Merkmalsbaum ausgewählt.
+CharacterMatrixPart_COULD_NOT_OPEN_MESSAGE=Das Dataset hat keinen Character-Baum ausgewählt oder enthält Elemente, die keine Character sind.
 CharacterMatrixPart_LOADING_MATRIX=Lade Matrix...
 SwapSynonymAndAcceptedOperation_NOT_IMPLEMENTED=Noch nicht implementiert
 SwapSynonymAndAcceptedOperation_SWAP_SYN_ACC_TAXON=Tausche Synonym und akzeptiertes Taxon
@@ -286,4 +287,6 @@ ChecklistEditor_DEFAULT_SOURCE_TOOLTIP=W
 ChecklistEditor_REMOVE_DEFAULT_SOURCE_TOOLTIP=Wenn die Quelle entfernt wurde, wird den neu angelegten Verbreitungen nicht mehr automatisch eine Quelle zugefügt.
 ChecklistEditor_SEARCH_TOOLTIP=Textfilter auf Taxa
 DistributionEditor_defaultSource= Standard Quelle: 
-ChecklistEditor_REMOVE_DEFAULT_SOURCE=Quelle entfernen
\ No newline at end of file
+ChecklistEditor_REMOVE_DEFAULT_SOURCE=Quelle entfernen
+FactualDataView_Lable=Faktendaten
+NameFactsDataView_Lable=Namensfaktendaten
\ No newline at end of file
index 06210fe9aa9ed42611fd684eb3b70bf9588a52fc..f033480a6d62961b525152d65acb91803e04b8f7 100644 (file)
@@ -31,9 +31,12 @@ import org.eclipse.e4.ui.di.Focus;
 import org.eclipse.e4.ui.di.Persist;
 import org.eclipse.e4.ui.di.UIEventTopic;
 import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.ui.MDirtyable;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.services.EMenuService;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelection;
@@ -58,6 +61,7 @@ import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
@@ -69,6 +73,7 @@ import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.ISecuredEditor;
 import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
 import eu.etaxonomy.taxeditor.editor.e4.TaxonEditorInputE4;
+import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.editor.name.e4.container.AbstractGroupE4;
 import eu.etaxonomy.taxeditor.editor.name.e4.container.AbstractGroupedContainerE4;
@@ -90,6 +95,7 @@ import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.model.TaxeditorPartService;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.security.RequiredPermissions;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -139,6 +145,9 @@ public class TaxonNameEditorE4 implements IConversationEnabled, IDirtyMarkable,
     @Inject
     private MDirtyable dirty;
 
+    @Inject
+    private MApplication application;
+
     private MPart thisPart;
 
     private TaxonEditorInputE4 input;
@@ -233,6 +242,11 @@ public class TaxonNameEditorE4 implements IConversationEnabled, IDirtyMarkable,
         return HibernateProxyHelper.deproxy(taxon);
     }
 
+    @Override
+    public void addOperation(AbstractPostOperation operation) {
+        input.addOperation(operation);
+    }
+
     public void setDirty() {
         managedForm.dirtyStateChanged();
     }
@@ -745,6 +759,24 @@ public class TaxonNameEditorE4 implements IConversationEnabled, IDirtyMarkable,
         }
     }
 
+    @Inject
+    @Optional
+    private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_NAME_EDITOR) List<CdmBase> cdmBases) {
+
+        for (CdmBase cdmBase: cdmBases){
+            if (cdmBase instanceof Taxon || cdmBase instanceof TaxonName){
+                if ((EventUtility.getTaxonEditor() != null && EventUtility.getTaxonEditor().equals(this))
+                        || (this.taxon != null && (this.taxon.equals(cdmBase)
+                                || (this.taxon.getName() != null && this.taxon.getName().equals(cdmBase))))) {
+                    EPartService partService = TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EPartService.class);
+                    EModelService modelService = TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EModelService.class);
+                    EditorUtil.openTaxonBaseE4(this.getTaxon().getUuid(), modelService, partService, application);
+
+                }
+            }
+        }
+    }
+
     @Inject
     @Optional
     private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_NAME_EDITOR) UUID cdmbaseUuid) {
@@ -778,4 +810,15 @@ public class TaxonNameEditorE4 implements IConversationEnabled, IDirtyMarkable,
 
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void update() {
+        EPartService partService = TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EPartService.class);
+        EModelService modelService = TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EModelService.class);
+        EditorUtil.openTaxonBaseE4(this.getTaxon().getUuid(), modelService, partService, application);
+
+    }
+
 }
index 8732982bc5060ad2ed4c9875710e94633d6f1afa..a15613310a329c773a92719be7e74a95360cb3a5 100755 (executable)
@@ -683,7 +683,6 @@ abstract public class AbstractGroupedContainerE4<T extends TaxonBase> implements
                getNameViewer().getTextWidget().setFont(defaultFont);
 
                getNameViewer().getDocument().set(getEmptyTextPrompt());
-               placeCursor();
        }
 
        protected void setFocusListener(FocusListener focusListener) {
index 33001e26ff5072cb055eca330679ba49d0a40d82..285b5b093182c61df844930ddda426e4b49c38b1 100644 (file)
@@ -21,6 +21,8 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
@@ -87,7 +89,7 @@ public class ChangeConceptRelationshipTypeOperation extends AbstractPostTaxonOpe
        //      relatedTaxon.addTaxonRelation(element, newRelationshipType, null, null);
                this.taxonRelationship.setType(newRelationshipType);
                monitor.worked(40);
-
+               EventUtility.postEvent(WorkbenchEventConstants.REFRESH_DETAILS, true);
                return postExecute(relatedTaxon);
        }
 
index c0ec68e1b6b36d5fa04fab36fd6ac74578368f63..935c1bafd132cd62c4907e25b422a53edfcb6212 100755 (executable)
@@ -75,15 +75,15 @@ import ca.odell.glazedlists.EventList;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.api.service.dto.TaxonDescriptionDTO;
 import eu.etaxonomy.cdm.api.service.dto.TaxonDistributionDTO;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.OrderedTermBase;
-import eu.etaxonomy.cdm.model.common.OrderedTermComparator;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermIdInVocabularyComparator;
-import eu.etaxonomy.cdm.model.common.TermLanguageComparator;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.OrderedTermBase;
+import eu.etaxonomy.cdm.model.term.OrderedTermComparator;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermIdInVocabularyComparator;
+import eu.etaxonomy.cdm.model.term.TermLanguageComparator;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
index c723252b77a68f6096b6529da6013f8fd5875cc7..c1200824efd2b3f97afa6aa346ef3a457a810f04 100755 (executable)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.editor.view.checklist.e4;
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.nebula.widgets.nattable.data.convert.DisplayConverter;
 
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
index a697c0389822a139dc158da78993410d7191021e..b3cf7ce3df350d56906becf45fd5e3e9ad9bb562 100755 (executable)
@@ -17,9 +17,9 @@ import java.util.UUID;
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.nebula.widgets.nattable.edit.editor.IComboBoxDataProvider;
 
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.OrderedTermComparator;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.OrderedTermComparator;
+import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
index 300de35f0c6c93c293a06842a7faa628bae1d2bc..76917e00874d07b9f39763a1bda139457f2578e8 100755 (executable)
@@ -14,7 +14,7 @@ import java.util.Iterator;
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.nebula.widgets.nattable.data.convert.DisplayConverter;
 
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.metadata.TermDisplayEnum;
index 3671d2f12f11f999c9f94696823480fedf044fdd..000a147dd61e2533cec5cccfea22dc48e51a433c 100755 (executable)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.editor.view.checklist.e4;
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.nebula.widgets.nattable.data.convert.DisplayConverter;
 
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.metadata.TermDisplayEnum;
index d736027ab4b9a9f096a5c3db4325aee344efd278..6170b87e9a0de126b474bf9ff55ee72bc1ddedda 100644 (file)
@@ -40,6 +40,12 @@ public class DerivateDragListener extends DragSourceAdapter{
         }
     }
 
+    @Override
+    public void dragFinished(DragSourceEvent event) {
+        super.dragFinished(event);
+        LocalSelectionTransfer.getTransfer().setSelection(null);
+    }
+
     @Override
     public void dragStart(DragSourceEvent event) {
         if(derivateView.isDirty()){
index 6dc346fbb3c27cd34ec1923e54b3968f411b8014..20f5f876f5e5c7c6326721ca074024198b1f3005 100644 (file)
@@ -19,7 +19,9 @@ import org.eclipse.swt.dnd.TransferData;
 
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
@@ -52,7 +54,7 @@ public class DescriptionElementDropAdapter extends EditViewerDropAdapter {
         */
        @Override
        public boolean performDrop(Object data) {
-               TaxonDescription target = (TaxonDescription) getCurrentTarget();
+               DescriptionBase target = (DescriptionBase) getCurrentTarget();
                Object[] droppedElements = (Object[]) data;
 
                Collection<DescriptionElementBase> descriptionElements = new ArrayList<DescriptionElementBase>();
@@ -74,12 +76,36 @@ public class DescriptionElementDropAdapter extends EditViewerDropAdapter {
                                        if (descriptionElement.getInDescription().equals(target)) {
                                                return false;
                                        }
+                                       for (Object element : target.getElements()){
+                                           if (element instanceof DescriptionElementBase){
+                                              if( !((DescriptionElementBase)element).isPersited()){
+                                                  MessagingUtils.warningDialog(OPERATION_NOT_SUPPORTED_YET, this, Messages.DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT_IN_DESCRIPTION);
+                                           return false;
+                                              }
+
+                                           }
+                                       }
+                                       for (Object element : descriptionElement.getInDescription().getElements()){
+                        if (element instanceof DescriptionElementBase){
+                           if( !((DescriptionElementBase)element).isPersited()){
+                               MessagingUtils.warningDialog(OPERATION_NOT_SUPPORTED_YET, this, Messages.DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT_IN_DESCRIPTION);
+                                return false;
+                           }
+
+                        }
+                    }
                                        description = descriptionElement.getInDescription();
                                        description.removeElement(descriptionElement);
                                        target.addElement(descriptionElement);
 
-                                       if (description.getElements().isEmpty()){
-                                           ((TaxonDescription)description).getTaxon().removeDescription((TaxonDescription)description, false);
+                                       if (description.getElements().isEmpty() ){
+                                           if (description instanceof TaxonDescription){
+                                               ((TaxonDescription)description).getTaxon().removeDescription((TaxonDescription)description, false);
+                                           }else if (description instanceof TaxonNameDescription){
+                                               ((TaxonNameDescription)description).getTaxonName().removeDescription((TaxonNameDescription)description);
+                                           } else if (description instanceof SpecimenDescription){
+                            ((SpecimenDescription)description).getDescribedSpecimenOrObservation().removeDescription(description);
+                        }
                                        }
                                        descriptionElements.add(descriptionElement);
                                }
@@ -114,7 +140,7 @@ public class DescriptionElementDropAdapter extends EditViewerDropAdapter {
                        TransferData transferData) {
                boolean transferDataIsSupported = DescriptionElementTransfer.getInstance().isSupportedType(
                                transferData);
-               return target instanceof TaxonDescription && transferDataIsSupported;
+               return target instanceof DescriptionBase && transferDataIsSupported;
        }
 
 }
index 40a45f5754a7be3d65046eea69809b7f64c3a2c8..aaa06a6f45995d757c28e121d598af469108ef95 100644 (file)
@@ -17,7 +17,7 @@ import org.eclipse.jface.viewers.Viewer;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.model.description.IDescribable;
 import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/NameDescriptionFilter.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/NameDescriptionFilter.java
new file mode 100755 (executable)
index 0000000..fc3a145
--- /dev/null
@@ -0,0 +1,57 @@
+/**
+* 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.editor.view.descriptive;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
+
+/**
+ * @author k.luther
+ * @since 09.04.2019
+ *
+ */
+public class NameDescriptionFilter extends ViewerFilter {
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean select(Viewer viewer, Object parentElement, Object element) {
+        if (element instanceof FeatureNodeContainer ){
+            FeatureNodeContainer desc = (FeatureNodeContainer)element;
+            if(!desc.getFeature().equals(Feature.PROTOLOGUE())){
+                return true;
+            }
+        }
+        if (element instanceof DescriptionBase){
+            for (Object desc:((DescriptionBase) element).getElements()){
+                if (desc instanceof DescriptionElementBase){
+                    if (!((DescriptionElementBase)desc).getFeature().equals(Feature.PROTOLOGUE())){
+                        return true;
+                    }
+                }
+            }
+            if (((DescriptionBase) element).getElements().isEmpty()){
+                return true;
+            }
+        }
+        if (element instanceof DescriptionElementBase){
+            if (!((DescriptionElementBase)element).getFeature().equals(Feature.PROTOLOGUE())){
+                return true;
+            }
+        }
+        return false;
+    }
+
+}
index 9072f7f5851b1e20d2db375b78e3abbd49cba96f..808248a3dc8f4c780be736461b2128bf00981e3e 100644 (file)
@@ -13,7 +13,6 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
@@ -36,15 +35,12 @@ import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Tree;
 
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.IDescribable;
-import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
@@ -55,6 +51,7 @@ import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptionElementTransfer
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveContentProvider;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveLabelProvider;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewerSorter;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.NameDescriptionFilter;
 import eu.etaxonomy.taxeditor.editor.view.media.e4.MediaViewPartE4;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
@@ -100,6 +97,7 @@ public class FactualDataPartE4 extends AbstractCdmEditorPartE4
         treeViewer.setContentProvider(provider);
         treeViewer.setLabelProvider(new DescriptiveLabelProvider());
         treeViewer.setSorter(new DescriptiveViewerSorter());
+        treeViewer.setFilters(new NameDescriptionFilter());
         treeViewer.setAutoExpandLevel(2);
         Transfer[] transfers = new Transfer[] { DescriptionElementTransfer.getInstance() };
         treeViewer.addDragSupport(dndOperations, transfers, new DescriptionElementDragListener(
@@ -113,6 +111,7 @@ public class FactualDataPartE4 extends AbstractCdmEditorPartE4
         viewer.addSelectionChangedListener(selectionChangedListener);
         DescriptionElementDropAdapter dropListener = new DescriptionElementDropAdapter(viewer);
         ContextInjectionFactory.inject(dropListener, context);
+
         treeViewer.addDropSupport(dndOperations, transfers,
                 dropListener);
         //create context menu
@@ -128,19 +127,17 @@ public class FactualDataPartE4 extends AbstractCdmEditorPartE4
 
         Object partObject = createPartObject(activePart);
 
-        if (partObject instanceof DetailsPartE4 || partObject instanceof SupplementalDataPartE4
+
+
+        if ((partObject instanceof DetailsPartE4 && !(selection instanceof TaxonName))|| partObject instanceof SupplementalDataPartE4
                 || partObject instanceof MediaViewPartE4 || partObject instanceof ConceptViewPartE4) {
             // do not show empty page as these views are also used to edit the
             // description selected in this view
             return;
         }
-//        if(partObject instanceof ChecklistEditorE4){
-//            IWorkbenchPage page = PlatformUI.getWorkbench()
-//                    .getActiveWorkbenchWindow().getActivePage();
-//            page.hideView(page.findView("eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4"));
-//        }
 
-        if(partObject instanceof IPartContentHasFactualData){
+
+        if(partObject instanceof IPartContentHasFactualData ){
             if (!viewer.getControl().isDisposed()){
                 viewer.getControl().setEnabled(true);
             }
@@ -163,9 +160,13 @@ public class FactualDataPartE4 extends AbstractCdmEditorPartE4
             }
             if(firstElement instanceof IDescribable<?>
                 && partObject instanceof IPartContentHasFactualData
-                    && !(firstElement instanceof SpecimenOrObservationBase && partObject instanceof BulkEditorE4)
-                    && !(firstElement instanceof TaxonName && partObject instanceof BulkEditorE4)){
-
+                    && !(firstElement instanceof SpecimenOrObservationBase && partObject instanceof BulkEditorE4)){
+                   // && !(firstElement instanceof TaxonName && partObject instanceof BulkEditorE4)){
+                if (firstElement instanceof TaxonName){
+                    thisPart.setLabel(Messages.NameFactsDataView_Lable);
+                }else{
+                    thisPart.setLabel(Messages.FactualDataView_Lable);
+                }
                 featureNodeContainerCache.clear();
                 showViewer(structuredSelection, activePart, viewer);
                 return;
@@ -211,18 +212,6 @@ public class FactualDataPartE4 extends AbstractCdmEditorPartE4
     @Optional
     private void updateView(@UIEventTopic(WorkbenchEventConstants.SAVE_TAXON)boolean refresh){
         if(refresh){
-            List<? extends CdmBase> rootEntities = getRootEntities();
-            for (CdmBase cdmBase : rootEntities) {
-                if (cdmBase != null){
-                    if(cdmBase.isInstanceOf(Taxon.class)){
-                        Taxon taxon = HibernateProxyHelper.deproxy(cdmBase, Taxon.class);
-                        Set<TaxonDescription> descriptions = taxon.getDescriptions();
-                        for (TaxonDescription taxonDescription : descriptions) {
-                            taxonDescription.setTitleCache(null, false);
-                        }
-                    }
-                }
-            }
             viewer.refresh();
         }
     }
index d1a0aa30b7db28c01e277200a23f72222eddd03c..6618f018fd7bf9f3fa5d8c3d5f524833cf9a649f 100644 (file)
@@ -17,11 +17,13 @@ import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.jface.viewers.TreeNode;
 
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonNameDescriptionOperation;
 //import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateNamedescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateSpecimenDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonDescriptionOperation;
@@ -58,16 +60,20 @@ public class CreateDescriptionHandlerE4 {
                 AbstractUtility.executeOperation(operation, sync);
             }
         }
-//        if(viewerInput instanceof TaxonName){
-//            operation = new CreateNamedescriptionOperation(menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(), (TaxonName) viewerInput, factualDataPart);
-//            if(operation!=null){
-//                AbstractUtility.executeOperation(operation, sync);
-//            }
-//        }
+        if(viewerInput instanceof TaxonName){
+            operation = createTaxonNameOperation(menuItem.getLocalizedLabel(), (TaxonName) viewerInput, factualDataPart);
+            if(operation!=null){
+                AbstractUtility.executeOperation(operation, sync);
+            }
+        }
        }
 
     protected CreateTaxonDescriptionOperation createTaxonOperation(String eventLabel, Taxon taxon, IPostOperationEnabled postOperationEnabled) {
         return new CreateTaxonDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxon, null, postOperationEnabled);
     }
 
+    protected CreateTaxonNameDescriptionOperation createTaxonNameOperation(String eventLabel, TaxonName taxonName, IPostOperationEnabled postOperationEnabled) {
+        return new CreateTaxonNameDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxonName, null, postOperationEnabled);
+    }
+
 }
index 9c6edd8234a21f8b11570631cc8a9bf3098fa093..a1b2c85372628b24f3ffb2e77d6f05c55c59701b 100644 (file)
@@ -18,10 +18,12 @@ import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonNameDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonDescriptionOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.ReferenceSelectionDialog;
@@ -51,4 +53,14 @@ public class CreateDescriptionWithSourceHandler extends CreateDescriptionHandler
         IdentifiableSource source = IdentifiableSource.NewInstance(OriginalSourceType.Unknown, null, null, reference, null);
         return new CreateTaxonDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxon, source, postOperationEnabled);
     }
+
+    @Override
+    protected CreateTaxonNameDescriptionOperation createTaxonNameOperation(String eventLabel, TaxonName taxonName, IPostOperationEnabled postOperationEnabled) {
+        Reference reference = ReferenceSelectionDialog.select(shell, null);
+        if(reference==null){
+            return null;
+        }
+        IdentifiableSource source = IdentifiableSource.NewInstance(OriginalSourceType.Unknown, null, null, reference, null);
+        return new CreateTaxonNameDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxonName, source, postOperationEnabled);
+    }
 }
index 7543cd6dfd55541dceea70207b41afc90b8b5835..2078de4c003743bc48fd323014da0e18491d351a 100644 (file)
@@ -26,31 +26,25 @@ import org.eclipse.e4.ui.model.application.ui.menu.MMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TreePath;
-import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.swt.widgets.Shell;
 
-import eu.etaxonomy.cdm.api.service.config.MediaDeletionConfigurator;
-import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
-import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteDescriptionElementOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteSpecimenDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonDescriptionOperation;
-import eu.etaxonomy.taxeditor.editor.view.media.operation.DeleteMediaOperation;
-import eu.etaxonomy.taxeditor.editor.view.media.operation.RemoveImageFromDescriptionElementOperation;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonNameDescriptionOperation;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
-import eu.etaxonomy.taxeditor.ui.dialog.configurator.deleteConfigurator.DeleteConfiguratorDialog;
 
 /**
  *
@@ -78,67 +72,62 @@ public class DeleteHandlerE4 {
 
         IUndoContext undoContext = EditorUtil.getUndoContext();
 
-        List<AbstractPostOperation<?>> operations = new ArrayList<AbstractPostOperation<?>>();
+        List<AbstractPostOperation> operations = new ArrayList();
 
         for(Iterator iter = selection.iterator();iter.hasNext();){
             Object object = iter.next();
 
             // TaxonDescription
-            if(object instanceof TaxonDescription){
-                operations.add(new DeleteTaxonDescriptionOperation(label, undoContext, (TaxonDescription) object, factualDataPart, cdmEntitySessionEnabled));
+            if(object instanceof TaxonDescription ){
+                DeleteTaxonDescriptionOperation operation = new DeleteTaxonDescriptionOperation(label, undoContext, (TaxonDescription) object, factualDataPart, cdmEntitySessionEnabled);
+
+                operations.add(operation);
+                ((TaxonDescription) object).getTaxon().removeDescription((TaxonDescription) object);
+                operation.getPostOperationEnabled().postOperation(object);
+            }
+            if(object instanceof TaxonNameDescription ){
+                DeleteTaxonNameDescriptionOperation operation = new DeleteTaxonNameDescriptionOperation(label, undoContext, (TaxonNameDescription) object, factualDataPart, cdmEntitySessionEnabled);
+                operations.add(operation);
+                ((TaxonNameDescription) object).getTaxonName().removeDescription((TaxonNameDescription) object);
+                operation.getPostOperationEnabled().postOperation(object);
             }
             else if(object instanceof SpecimenDescription){
-                operations.add(new DeleteSpecimenDescriptionOperation(label, undoContext, (SpecimenDescription) object, factualDataPart, cdmEntitySessionEnabled)) ;
+                DeleteSpecimenDescriptionOperation operation = new DeleteSpecimenDescriptionOperation(label, undoContext, (SpecimenDescription) object, factualDataPart, cdmEntitySessionEnabled);
+                operations.add(operation) ;
+                ((SpecimenDescription) object).getDescribedSpecimenOrObservation().removeDescription((SpecimenDescription) object);
+
             }
             // DescriptionElementBase
             else if(object instanceof DescriptionElementBase){
-                operations.add(new DeleteDescriptionElementOperation(label, undoContext, (DescriptionElementBase) object, factualDataPart, cdmEntitySessionEnabled));
+                DeleteDescriptionElementOperation operation = new DeleteDescriptionElementOperation(label, undoContext, (DescriptionElementBase) object, factualDataPart, cdmEntitySessionEnabled);
+                AbstractUtility.executeOperation(operation, sync);
             }
             else if(object instanceof FeatureNodeContainer){
                 List<DescriptionElementBase> descriptions = ((FeatureNodeContainer) object).getDescriptionElementsForEntireBranch();
 
                 for(DescriptionElementBase description : descriptions){
-                    operations.add(new DeleteDescriptionElementOperation(label, undoContext, description, factualDataPart, cdmEntitySessionEnabled));
-                }
-            }
-            // Media
-            else if(object instanceof Media){
-
-                TreeSelection treeSelection = (TreeSelection) factualDataPart.getViewer().getSelection();
-
-                TreePath[] path = treeSelection.getPathsFor(object);
-
-                DescriptionBase<?> imageGallery = (DescriptionBase<?>) path[0].getFirstSegment();
+                    DeleteDescriptionElementOperation operation = new DeleteDescriptionElementOperation(label, undoContext, description, factualDataPart, cdmEntitySessionEnabled);
 
-                MediaDeletionConfigurator config = new MediaDeletionConfigurator();
-                config.setDeleteFromDescription(true);
-                config.setOnlyRemoveFromGallery(false);
-
-                if (imageGallery instanceof SpecimenDescription){
-                    config.setDeleteFrom(((SpecimenDescription)imageGallery).getDescribedSpecimenOrObservation());
-                } else if (imageGallery instanceof TaxonDescription){
-                    config.setDeleteFrom(((TaxonDescription)imageGallery).getTaxon());
-                }else if (imageGallery instanceof TaxonNameDescription){
-                    config.setDeleteFrom(((TaxonNameDescription)imageGallery).getTaxonName());
-                }
-                if (!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, shell, Messages.DeleteHandler_CONFIRM_DELETION,  Messages.DeleteHandler_CONFIRM_DELETION_MESSAGE)){
-                    return;
-                }
-                if (config.isOnlyRemoveFromGallery() || ((Media)object).getId() == 0){
-                    operations.add(new RemoveImageFromDescriptionElementOperation(label, undoContext,  (Media) object, imageGallery, factualDataPart));
-                }else{
-                    operations.add(new DeleteMediaOperation(label, undoContext, imageGallery, (Media) object, config, factualDataPart));
+                    AbstractUtility.executeOperation(operation, sync);
                 }
             }
+
             else{
                 MessagingUtils.error(getClass(), Messages.DeleteHandler_INVALID_SELECTION, null);
             }
         }
 
         // execute all cumulated operations
-        for(AbstractPostOperation<?> operation : operations){
-               AbstractUtility.executeOperation(operation, sync);
+        for(AbstractPostOperation operation : operations){
+            if (factualDataPart.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4){
+                ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).getEditorInput().addOperation(operation);
+                ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).setDirty();
+                ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).redraw();
+            }
+
+           // AbstractUtility.executeOperation(operation, sync);
         }
+
        }
 
 
index 5692f311fa183ad71a60b612325bd5a674187378..d3a892db8406fd9936260e0892cee7763e7b23d5 100644 (file)
@@ -23,13 +23,18 @@ import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
+import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+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;
@@ -56,21 +61,21 @@ public class DynamicFeatureMenuE4 {
         Object selectedElement = selection.getFirstElement();
 
         if (selectedElement instanceof DescriptionBase<?>) {
-            FeatureTree featureTree = getFeatureTree((DescriptionBase<?>) selectedElement);
+            FeatureTree<?> featureTree = getFeatureTree((DescriptionBase<?>) selectedElement);
 
-            for (FeatureNode childNode : featureTree.getRootChildren()) {
-                createMenuItem(menu, childNode.getFeature(), globalLanguage);
+            for (FeatureNode<?> childNode : featureTree.getRootChildren()) {
+                createMenuItem(menu, childNode.getTerm(), globalLanguage);
             }
         } else if (selectedElement instanceof FeatureNodeContainer) {
-            FeatureNode featureNode = ((FeatureNodeContainer) selectedElement)
+            FeatureNode<?> featureNode = ((FeatureNodeContainer) selectedElement)
                     .getFeatureNode();
 
             // add the feature to the menu
-            createMenuItem(menu, featureNode.getFeature(), globalLanguage);
+            createMenuItem(menu, featureNode.getTerm(), globalLanguage);
 
             // add possible children to the menu
-            for (FeatureNode childNode : featureNode.getChildNodes()) {
-                createMenuItem(menu, childNode.getFeature(), globalLanguage);
+            for (FeatureNode<?> childNode : featureNode.getChildNodes()) {
+                createMenuItem(menu, childNode.getTerm(), globalLanguage);
             }
         } else if (selectedElement instanceof DescriptionElementBase) {
             Feature feature = ((DescriptionElementBase) selectedElement)
@@ -79,8 +84,8 @@ public class DynamicFeatureMenuE4 {
         }
     }
 
-    private void createMenuItem(MMenu menu, final Feature feature, Language globalLanguage) {
-        final Feature deproxiedFeature = HibernateProxyHelper.deproxy(feature, Feature.class);
+    private void createMenuItem(MMenu menu, final DefinedTermBase feature, Language globalLanguage) {
+        final DefinedTermBase deproxiedFeature = HibernateProxyHelper.deproxy(feature, DefinedTermBase.class);
 
         String label = deproxiedFeature.getLabel(globalLanguage);
         if (label == null){
@@ -118,8 +123,8 @@ public class DynamicFeatureMenuE4 {
         * @param description
         * @return
         */
-       private FeatureTree getFeatureTree(DescriptionBase description) {
-               FeatureTree featureTree = null;
+       private FeatureTree<?> getFeatureTree(DescriptionBase description) {
+               FeatureTree<?> featureTree = null;
 
                // TODO change this to the feature tree associated with this taxon
                // description
@@ -132,8 +137,12 @@ public class DynamicFeatureMenuE4 {
                }
 
                if (featureTree == null) {
-                       featureTree = FeatureTree.NewInstance(CdmStore.getTermManager()
-                                       .getPreferredTerms(Feature.class));
+                       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 = FeatureTree.NewInstance(terms);
                }
 
                return featureTree;
index b9ea1f4f6c4781131ab470e5abdaba1c73f1295f..385e6ccb93b0c5b2750c4eb53cd6cdbf22920649 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -18,6 +19,7 @@ import java.util.UUID;
 
 import javax.inject.Named;
 
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.e4.core.di.annotations.CanExecute;
 import org.eclipse.e4.core.di.annotations.Execute;
 import org.eclipse.e4.core.di.annotations.Optional;
@@ -40,6 +42,7 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
@@ -48,13 +51,13 @@ import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionElementsOperation;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
 import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
 
 
 /**
@@ -142,10 +145,14 @@ public class MoveDescriptionElementsHandlerE4 implements IPostOperationEnabled{
 
             }
         }
+        UUID classificationUuid = null;
+        if (classification != null){
+            classificationUuid = classification.getUuid();
+        }
         TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(shell,
                 Messages.MoveDescriptionElementsHandler_CHOOSE_ACC_TAXON,
                 excludeTaxa,
-                null, classification.getUuid()
+                null, classificationUuid
                 );
         if (newAcceptedTaxonNode != null){
             Taxon targetTaxon = newAcceptedTaxonNode.getTaxon();
@@ -156,31 +163,33 @@ public class MoveDescriptionElementsHandlerE4 implements IPostOperationEnabled{
             }
             newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
 
-            MPart targetEditor = EditorUtil.checkForChanges(targetTaxon.getUuid(), partService);
+            Collection<IE4SavablePart> targetEditors = EditorUtil.checkForTaxonChanges(targetTaxon.getUuid(), partService);
 
-            if ((targetEditor != null && targetEditor.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")) || this.editor.isDirty()){
-                boolean proceed = MessageDialog.openQuestion(null,
-                        Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE);
-                if (proceed) {
-                    if (targetEditor != null){
-                        e4WrappedPart = WorkbenchUtility.getE4WrappedPart(targetEditor);
-                        ((TaxonNameEditorE4)e4WrappedPart).save(AbstractUtility.getMonitor());
-                    }
-                    if (editor.isDirty()){
-                        editor.save(AbstractUtility.getMonitor());
-                    }
-                } else {
+            if (!targetEditors.isEmpty() || this.editor.isDirty()){
+                if(MessageDialog.openQuestion(null,Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE)){
+                    this.editor.save(new NullProgressMonitor());
+                    targetEditors.forEach(editor->editor.save(new NullProgressMonitor()));
+                    return;
+                }
+                else{
                     return;
                 }
             }
 
             String moveMessage = String.format(Messages.MoveDescriptionElementsHandler_ELEMENTS_MOVED, editor.getTaxon());
 
-            AbstractPostOperation operation = new MoveDescriptionElementsOperation(
+            AbstractPostTaxonOperation operation = new MoveDescriptionElementsOperation(
                     menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(),
                     targetTaxon.getUuid(), moveMessage, elements, false, this, null);
+            editor.getEditorInput().addOperation(operation);
+            for (DescriptionElementBase element: elements)
+            {
+                element.getInDescription().removeElement(element);
+            }
+            editor.redraw();
+            editor.setDirty();
 
-            AbstractUtility.executeOperation(operation, sync);
+            //AbstractUtility.executeOperation(operation, sync);
         }
     }
 
@@ -226,9 +235,10 @@ public class MoveDescriptionElementsHandlerE4 implements IPostOperationEnabled{
         if(e4WrappedPart instanceof TaxonNameEditorE4){
             ISelection selection = factualDataPart.getViewer().getSelection();
             if(selection instanceof IStructuredSelection){
+                boolean selectionProviding = factualDataPart.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4;
                 Object firstElement = ((IStructuredSelection) selection).getFirstElement();
-                canExecute = firstElement instanceof FeatureNodeContainer
-                        || firstElement instanceof DescriptionElementBase;
+                canExecute = (firstElement instanceof FeatureNodeContainer && !(((FeatureNodeContainer)firstElement).getContainerTree().getDescription() instanceof TaxonNameDescription))
+                        || (firstElement instanceof DescriptionElementBase && !(((DescriptionElementBase)firstElement).getInDescription() instanceof TaxonNameDescription)) ;
                 menuItem.setVisible(canExecute);
             }
         }
index 3bca4e67d549ab001c26ba1d24e7e224cc4c93c6..d498025c1ac49d01c4a34f87188bba715c1a84bb 100644 (file)
@@ -4,6 +4,7 @@
 package eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -11,6 +12,7 @@ import java.util.UUID;
 
 import javax.inject.Named;
 
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.e4.core.di.annotations.CanExecute;
 import org.eclipse.e4.core.di.annotations.Execute;
 import org.eclipse.e4.core.di.annotations.Optional;
@@ -30,6 +32,7 @@ import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
@@ -37,12 +40,12 @@ import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionToOtherTaxonOperation;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
 import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
 
 /**
  *
@@ -120,19 +123,14 @@ public class MoveDescriptionToOtherTaxonHandlerE4 implements IPostOperationEnabl
         newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
         newAcceptedTaxonUuid = newAcceptedTaxonNode.getTaxon().getUuid();
 
-        MPart targetEditor = EditorUtil.checkForChanges(newAcceptedTaxonUuid, partService);
-        if ((targetEditor != null && targetEditor.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")) || this.editor.isDirty()){
-            boolean proceed = MessageDialog.openQuestion(null,
-                    Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE);
-            if (proceed) {
-                if (targetEditor != null){
-                    e4WrappedPart = WorkbenchUtility.getE4WrappedPart(targetEditor);
-                    ((TaxonNameEditorE4)e4WrappedPart).save(AbstractUtility.getMonitor());
-                }
-                if (editor.isDirty()){
-                    editor.save(AbstractUtility.getMonitor());
-                }
-            } else {
+        Collection<IE4SavablePart> targetEditors = EditorUtil.checkForTaxonChanges(newAcceptedTaxonUuid, partService);
+
+        if (!targetEditors.isEmpty() || this.editor.isDirty()){
+            if(MessageDialog.openQuestion(null,Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE)) {
+                this.editor.save(new NullProgressMonitor());
+                targetEditors.forEach(editor->editor.save(new NullProgressMonitor()));
+            }
+            else{
                 return;
             }
         }
@@ -145,7 +143,11 @@ public class MoveDescriptionToOtherTaxonHandlerE4 implements IPostOperationEnabl
                     this,
                     editor,
                     editor.getEditorInput());
-            AbstractUtility.executeOperation(operation, sync);
+            editor.getEditorInput().addOperation(operation);
+            editor.setDirty();
+            editor.getTaxon().removeDescription(taxonDescription);
+            editor.redraw();
+           // AbstractUtility.executeOperation(operation, sync);
         }
 
 
@@ -159,20 +161,8 @@ public class MoveDescriptionToOtherTaxonHandlerE4 implements IPostOperationEnabl
             @Override
             public void run() {
                 //FIXME E4 migrate
-//                AbstractUtility.close(editor);
-//
                 try {
-//                    MultiPageTaxonEditor possibleOpenEditor = (MultiPageTaxonEditor) EditorUtil.findEditorByTaxonNodeUuid(newAcceptedTaxonNodeUuid);
-//                    if(possibleOpenEditor != null){
-//                        AbstractUtility.close(possibleOpenEditor);
-//                    }
-//                    EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, oldAcceptedTaxonNodeUuid);
-//                    EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, newAcceptedTaxonNodeUuid);
                     EditorUtil.openTaxonNodeE4(newAcceptedTaxonNodeUuid, modelService, partService, application);
-                    EditorUtil.openTaxonNodeE4(oldAcceptedTaxonNodeUuid, modelService, partService, application);
-//                } catch (PartInitException e) {
-//                    MessagingUtils.error(this.getClass(), e);
-//                    throw new RuntimeException(e);
                 } catch (Exception e) {
                     MessagingUtils.warningDialog(Messages.MoveDescriptionToOtherTaxonHandler_CREATE_FAILED, this, e.getMessage());
                 }
@@ -201,7 +191,7 @@ public class MoveDescriptionToOtherTaxonHandlerE4 implements IPostOperationEnabl
             if(selection instanceof IStructuredSelection){
                 Object firstElement = ((IStructuredSelection) selection).getFirstElement();
                 canExecute = ((IStructuredSelection) selection).size()==1
-                        && firstElement instanceof DescriptionBase;
+                        && firstElement instanceof DescriptionBase && !(firstElement instanceof TaxonNameDescription);
                 menuItem.setVisible(canExecute);
             }
         }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateTaxonNameDescriptionOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateTaxonNameDescriptionOperation.java
new file mode 100755 (executable)
index 0000000..fad274a
--- /dev/null
@@ -0,0 +1,45 @@
+/**
+* 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.editor.view.descriptive.operation;
+
+import org.eclipse.core.commands.operations.IUndoContext;
+
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.taxeditor.operation.AbstractDescriptionPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+
+/**
+ * @author k.luther
+ * @since 25 Jan 2019
+ *
+ */
+public class CreateTaxonNameDescriptionOperation extends AbstractDescriptionPostOperation<TaxonName, TaxonNameDescription> {
+
+    public CreateTaxonNameDescriptionOperation(String label, IUndoContext undoContext, TaxonName describable, IPostOperationEnabled postOperationEnabled) {
+        super(label, undoContext, describable, null, postOperationEnabled);
+    }
+
+    public CreateTaxonNameDescriptionOperation(String label, IUndoContext undoContext, TaxonName describable,
+            IdentifiableSource source, IPostOperationEnabled postOperationEnabled) {
+        super(label, undoContext, describable, source, postOperationEnabled, false);
+    }
+
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected void initDescription() {
+        description = TaxonNameDescription.NewInstance(element);
+
+    }
+
+}
index 5424f9015873729c46a6b38d079c92e8fd0890cd..76e00cf0579189bf095c5bf7df075f34e4bff7b0 100644 (file)
@@ -61,8 +61,9 @@ public class DeleteTaxonDescriptionOperation extends AbstractPostTaxonOperation
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-
-               monitor.worked(20);
+           if (monitor != null){
+               monitor.worked(20);
+           }
                if (description != null && description.isPersited()){
 //                 element.removeDescription(description);
                    CdmStore.getService(IDescriptionService.class).deleteDescription(description.getUuid());
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonNameDescriptionOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonNameDescriptionOperation.java
new file mode 100755 (executable)
index 0000000..035f741
--- /dev/null
@@ -0,0 +1,84 @@
+/**
+* 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.editor.view.descriptive.operation;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+
+import eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @since 4 Mar 2019
+ *
+ */
+public class DeleteTaxonNameDescriptionOperation extends AbstractPostOperation<TaxonName> {
+    private final TaxonNameDescription description;
+    /**
+     * @param label
+     * @param undoContext
+     * @param element
+     * @param postOperationEnabled
+     * @param cdmEntitySessionEnabled
+     */
+    public DeleteTaxonNameDescriptionOperation(String label, IUndoContext undoContext, TaxonNameDescription description,
+            IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
+        super(label, undoContext, description.getTaxonName(), postOperationEnabled, cdmEntitySessionEnabled);
+        this.description = description;
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+
+        monitor.worked(20);
+        if (description != null && description.isPersited()){
+//          element.removeDescription(description);
+            CdmStore.getService(IDescriptionService.class).deleteDescription(description.getUuid());
+            element.removeDescription(description);
+            return postExecute(element);
+        }else if (description != null && !description.isPersited()){
+            element.removeDescription(description);
+            return Status.OK_STATUS;
+        }
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+        return execute(monitor, info);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+        element.addDescription(description);
+
+        return postExecute(null);
+    }
+
+}
index d850892d25e1861d66ad90015b71fd9e25c3f317..0113d75f028e90fbd72a72ce36eeee033f6c046e 100644 (file)
@@ -99,10 +99,15 @@ public class MoveDescriptionElementsOperation extends AbstractPostTaxonOperation
                } else {
                    UUID targetDescriptionUuid = targetDescription.getUuid();
                    UUID sourceDescriptionUuid = sourceDescription.getUuid();
-                   result = service.moveDescriptionElementsToDescription(descriptionElementsUuid, targetDescriptionUuid, isCopy);
+                   if (!targetDescription.isPersited()){
+                       result = service.moveDescriptionElementsToDescription(descriptionElementsUuid, targetDescription, isCopy);
+                   }else{
+                       result = service.moveDescriptionElementsToDescription(descriptionElementsUuid, targetDescriptionUuid, isCopy);
+                   }
+
 
                }
-               return postExecute(targetDescription);
+               return postExecute(null);
        }
 
        /* (non-Javadoc)
index 805b9afd885c8a6730338b5349ee7c77ab58f105..52247f578ab0c847072db30ff2249aeb59e36a6a 100644 (file)
@@ -9,7 +9,6 @@
 
 package eu.etaxonomy.taxeditor.editor.view.descriptive.operation;
 
-import org.apache.commons.lang.StringUtils;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.core.runtime.IAdaptable;
@@ -18,12 +17,8 @@ import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
-import eu.etaxonomy.cdm.model.common.Annotation;
-import eu.etaxonomy.cdm.model.common.AnnotationType;
-import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
@@ -72,23 +67,14 @@ public class MoveDescriptionToOtherTaxonOperation extends
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-
-               monitor.worked(20);
+           if (monitor != null){
+               monitor.worked(20);
+           }
                bind();
-
-               String moveMessage = String.format(Messages.MoveDescriptionToOtherTaxonOperation_MOVED_FROM, description.getTaxon());
-               if(description.isProtectedTitleCache()){
-                       String separator = ""; //$NON-NLS-1$
-                       if(!StringUtils.isBlank(description.getTitleCache())){
-                               separator = " - "; //$NON-NLS-1$
-                       }
-                       description.setTitleCache(description.getTitleCache() + separator + moveMessage, true);
-               }
-               Annotation annotation = Annotation.NewInstance(moveMessage, Language.getDefaultLanguage());
-               annotation.setAnnotationType(AnnotationType.TECHNICAL());
-               description.addAnnotation(annotation);
                CdmStore.getService(IDescriptionService.class).moveTaxonDescription(description.getUuid(), newAcceptedTaxonNode.getTaxon().getUuid());
-               monitor.worked(40);
+               if (monitor != null){
+            monitor.worked(40);
+        }
 
                return postExecute(description);
        }
index c88cb79f628a1ac9aba54edee97aa6e76cc2b5c2..de120ac13d19b6214ab4b0fa67911e470331b0a9 100644 (file)
@@ -4,6 +4,7 @@
 package eu.etaxonomy.taxeditor.editor.view.media.handler;
 
 import java.util.Iterator;
+import java.util.Set;
 
 import javax.inject.Named;
 
@@ -23,12 +24,14 @@ import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.config.MediaDeletionConfigurator;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteSpecimenDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.media.e4.MediaViewPartE4;
@@ -86,16 +89,49 @@ public class DeleteMediaHandler  {
             }
             if(object instanceof Media){
                 AbstractPostOperation<?> operation = new DeleteMediaOperation(menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(), description, (Media) object, config, mediaView);
-                AbstractUtility.executeOperation(operation, sync);
+                if (mediaView.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4){
+                    if (!config.isOnlyRemoveFromGallery()){
+                        ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).getEditorInput().addOperation(operation);
+                    }
+                    Media media = (Media)object;
+                    if (description.isImageGallery()){
+                        Set<DescriptionElementBase> elements = description.getElements();
+                        if (elements.size() == 1){
+                              DescriptionElementBase element = elements.iterator().next();
+                              element.removeMedia(media);
+                              if (element.getMedia().isEmpty()){
+                                  description.removeElement(element);
+                              }
+                        }
+                    }
+
+                  ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).setDirty();
+                  ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).redraw();
+                }else{
+                    AbstractUtility.executeOperation(operation, sync);
+                }
             }
             if(object instanceof DescriptionBase && ((DescriptionBase) object).isImageGallery()){
                 if(object instanceof TaxonDescription){
                     DeleteTaxonDescriptionOperation deleteTaxonDescriptionOperation = new DeleteTaxonDescriptionOperation(menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(), (TaxonDescription)object, mediaView, null);
-                    AbstractUtility.executeOperation(deleteTaxonDescriptionOperation, sync);
+                    if (mediaView.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4){
+                        ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).getEditorInput().addOperation(deleteTaxonDescriptionOperation);
+                        ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).setDirty();
+                        ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).redraw();
+
+                     }else{
+                         AbstractUtility.executeOperation(deleteTaxonDescriptionOperation, sync);
+                     }
                 }
                 else if(object instanceof SpecimenDescription){
                     DeleteSpecimenDescriptionOperation deleteTaxonDescriptionOperation = new DeleteSpecimenDescriptionOperation(menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(), (SpecimenDescription)object, mediaView, null);
-                    AbstractUtility.executeOperation(deleteTaxonDescriptionOperation, sync);
+                    if (mediaView.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4){
+                        ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).getEditorInput().addOperation(deleteTaxonDescriptionOperation);
+                        ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).setDirty();
+                        ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).redraw();
+                     }else{
+                         AbstractUtility.executeOperation(deleteTaxonDescriptionOperation, sync);
+                     }
                 }
             }
         }
index 03697f7d6a0d58519ca40cc6650fbd659fe587f5..741ddbe4587c74e0236e9fdd752d98829b932d88 100644 (file)
@@ -71,8 +71,9 @@ public class DeleteMediaOperation extends AbstractPostTaxonOperation {
                        throws ExecutionException {
 
           // ImagesUtility.removeMediaFromGallery(description, media);
-
-               monitor.worked(20);
+           if (monitor != null) {
+            monitor.worked(20);
+        }
                if (!config.isOnlyRemoveFromGallery() && media.getId() != 0){
                        DeleteResult result = CdmStore.getService(IMediaService.class).delete(media.getUuid(), config);
                        String errorMessage = "The media ";
@@ -86,19 +87,20 @@ public class DeleteMediaOperation extends AbstractPostTaxonOperation {
                                errorMessage += "could not be deleted from database. ";
                                //MessagingUtils.errorDialog("test", getClass(), "message", TaxeditorBulkeditorPlugin.PLUGIN_ID, result.getExceptions().iterator().next(),true);
                                DeleteResultMessagingUtils.messageDialogWithDetails(result,errorMessage, TaxeditorBulkeditorPlugin.PLUGIN_ID);
-                               if (config.isDeleteFromDescription()){
-                                       ImagesUtility.removeMediaFromGallery(description, media);
-                               }
+//                             if (config.isDeleteFromDescription()){
+//                                     ImagesUtility.removeMediaFromGallery(description, media);
+//                             }
                        }else{
-                               ImagesUtility.removeMediaFromGallery(description, media);
+//                             ImagesUtility.removeMediaFromGallery(description, media);
                        }
                } else{
-                       ImagesUtility.removeMediaFromGallery(description, media);
+//                     ImagesUtility.removeMediaFromGallery(description, media);
+               }
+               if (monitor != null){
+                   monitor.worked(40);
                }
 
-               monitor.worked(40);
-
-               return postExecute(null);
+               return postExecute(media);
        }
 
        /* (non-Javadoc)
index d0d1ccb85dbd89f1340312ba6794301cdd5220f5..5993e20a96442e03d6ddadaffd14695d9d784106 100644 (file)
@@ -15,7 +15,7 @@ import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;\r
 import org.eclipse.jface.viewers.StyledString;\r
 \r
-import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
+import eu.etaxonomy.cdm.model.term.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
 import eu.etaxonomy.cdm.model.description.CategoricalData;\r
index f448a8ee681989d2f3ad4f148965deabe1c8188b..0ea158cf27b06f444ac5cc8049a886e12f3138bc 100644 (file)
@@ -15,7 +15,7 @@ import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
+import eu.etaxonomy.cdm.model.term.DefaultTermInitializer;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
index 9838fa3a5f19f99c3f30683c08b92169c38e79bb..8bb16236a8388d031e40fa86f0e344ef6f344339 100644 (file)
@@ -2,7 +2,7 @@
 <feature
       id="eu.etaxonomy.taxeditor.feature.platform"
       label="Taxeditor Dependencies"
-      version="5.5.1"
+      version="5.6.0"
       os="linux,macosx,win32"
       ws="cocoa,gtk,win32"
       arch="x86,x86_64">
index daae0b3a892c9267057bccdbb68a7b522775a274..1f04a4ffc41b4a24f2e6d3896202a67132881ce2 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>5.5.1</version>
+               <version>5.6.0</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>eu.etaxonomy.taxeditor.feature.platform</artifactId>
index d111ef9c57216b06209be1f23fd63f1158c92a74..76ab3286062439fc29ec3e081e1fc5865c79e872 100644 (file)
@@ -2,7 +2,7 @@
 <feature
       id="eu.etaxonomy.taxeditor.feature"
       label="Taxonomic Editor"
-      version="5.5.1"
+      version="5.6.0"
       provider-name="EDIT"
       plugin="eu.etaxonomy.taxeditor.application"
       os="linux,macosx,win32"
index 8231b708c59218e242b8bd627f82c7df8750e7a1..18cce2df2f42ce4005b66b43a12ccf28b20e595f 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>5.5.1</version>
+    <version>5.6.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>eu.etaxonomy.taxeditor.feature</artifactId>
index c34dceda4070df1618392834a8e5622041147631..44a6a26ea8518d583eaff6ad2862b56316f4a5cf 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Help
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.help; singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Bundle-Activator: eu.etaxonomy.taxeditor.help.Activator
 Bundle-Vendor: EDIT
 Require-Bundle: org.eclipse.ui,
index 626f8d1ec9548a31e1f00e7c4225fc4a3582cb7d..c9eff240b7828330e5e07573b80424500a9abd64 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>5.5.1</version>
+               <version>5.6.0</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 931647cefeb03939b0471dfdf0d8af5ad6934dfd..ed9ffee6a0970a179831f2ce39200673eaa5854c 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: eu.etaxonomy.taxeditor.molecular.lib
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.molecular.lib;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Bundle-ClassPath: .,
  lib/owlapi-xmlutils-4.1.4.jar,
  lib/commons-collections4-4.1.jar,
index d49458ba0a10601eb0739d65263fe609fe5ff59f..60f4c9cc7b21b071e8c6b03a23b5b281cc1fd397 100644 (file)
@@ -7,7 +7,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>5.5.1</version>
+    <version>5.6.0</version>
   </parent>
   
   <name>Molecular Library Dependencies Bundle</name>
index 8d477a9384301eb5ad0dbe182f4fd22e375cba9b..bb9348393abf3c573acf8250c56edca2cac24c8c 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Molecular Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.molecular;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Bundle-Activator: eu.etaxonomy.taxeditor.molecular.TaxeditorMolecularPlugin
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
index 257da5d411765faf5e8304fbb3e70da527811148..53623451ff0edb1920f225813bf0350a6b19fd79 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>5.5.1</version>
+    <version>5.6.0</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
index 6faf174f918356bcd735a9df9976812b78a0685e..43f3b431ec7521ca00c8b50f7693a1cf9cdd4d98 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Navigation Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.navigation;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Bundle-Activator: eu.etaxonomy.taxeditor.navigation.internal.TaxeditorNavigationPlugin
 Bundle-Vendor: EDIT
 Export-Package: eu.etaxonomy.cdm,
@@ -30,7 +30,8 @@ Require-Bundle: org.eclipse.ui,
  org.eclipse.e4.core.di.annotations,
  org.eclipse.e4.core.contexts;bundle-version="1.5.1",
  org.eclipse.e4.core.commands,
- org.eclipse.e4.core.di
+ org.eclipse.e4.core.di,
+ eu.etaxonomy.taxeditor.bulkeditor
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Import-Package: javax.inject;version="1.0.0",
  org.eclipse.core.resources,
index 48966056f3dd1eba417f286e678e3370f82554d1..a83c910fe94dfe116163eff2d37c1da234cd83d2 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <groupId>eu.etaxonomy</groupId>
                <artifactId>taxeditor-parent</artifactId>
-               <version>5.5.1</version>
+               <version>5.6.0</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index 27660d242b96b5b69d3841d69e45bc4ba1a347fc..31dffaff959f977b1ea758bbb2d3071c230ca33b 100644 (file)
@@ -182,7 +182,11 @@ public class Messages extends NLS {
     public static String TaxonNavigatorLabels_SET_PUBLISH_FOR_CHILDREN;
        public static String TaxonNavigatorLabels_ACCEPTED_TAXA_NEED_TO_BE_FROM_SAME_CLASSIFICATION;
     public static String TaxonNavigatorLabels_SET_UNPLACED;
+    public static String NO;
+    public static String YES;
 
+    public static String SetPublishFlagForSubtreeHandlerE4_UnsavedChanges;
+    public static String SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion;
     static {
         // initialize resource bundle
         NLS.initializeMessages(BUNDLE_NAME, Messages.class);
index d4caf08bf0884cb086b37726c1bbb0bb3bd468ce..26869bab2ae963df1573f2ba5f0105fb227b1fc5 100644 (file)
@@ -158,3 +158,7 @@ TreeNodeDropAdapter_UNSAVED_PARENT_MESSAGE=There are unsaved changes in the pare
 SetPublishForSubtreeOperation_CHANGE_PUBLISH_OP=Change publish flag for all children
 TaxonNavigatorLabels_SET_PUBLISH_FOR_CHILDREN=Change publish flag for all children
 TaxonNavigatorLabels_SET_UNPLACED=Set unplaced flag for taxonnode(s)
+NO=No
+YES=Yes
+SetPublishFlagForSubtreeHandlerE4_UnsavedChanges=There are unsaved changes
+SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion=There are changes, do you want to save them? \nIf you do not save, the changes may be overwritten.
index be48d70623a7a83283c07e518998d88c476b8d62..d387669d430f67db8398e6bb5e1dcc0082b6f496 100644 (file)
@@ -159,3 +159,9 @@ TreeNodeDropAdapter_UNSAVED_PARENT_MESSAGE=Es gibt 
 SetPublishForSubtreeOperation_CHANGE_PUBLISH_OP=Publish Flag für alle Kinder Ã¤ndern
 TaxonNavigatorLabels_SET_PUBLISH_FOR_CHILDREN=Ändere Publish Flag für alle Kinder
 TaxonNavigatorLabels_SET_UNPLACED=Setze unplaced Flag für den/die Taxonknoten
+
+NO=Nein
+YES=Ja
+
+SetPublishFlagForSubtreeHandlerE4_UnsavedChanges=Es gibt ungespeicherte Ã„nderungen
+SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion=Es gibt Ã„nderungen, wollen Sie diese speichern? \nWenn Sie nicht speichern, könnten diese Ã„nderungen verloren gehen.
index da1014b8c9590cee57ee718af61420ed074632db..7921193602bb40979e6e4fd904ab87645ed54fa2 100644 (file)
@@ -41,4 +41,10 @@ public class TreeNodeDragListenerE4 extends DragSourceAdapter {
         ISelection selection = viewer.getSelection();
         LocalSelectionTransfer.getTransfer().setSelection(selection);
     }
+
+    @Override
+    public void dragFinished(DragSourceEvent event) {
+        super.dragFinished(event);
+        LocalSelectionTransfer.getTransfer().setSelection(null);
+    }
 }
index c3a27ff4b231be1ca6f977d3d177cfd5d1fde8d7..780af1a5106bf917635beb1f9b0cbb71eab8eccb 100644 (file)
@@ -56,7 +56,7 @@ public class NewTaxonNodeHandlerE4 {
                });
                int status = dialog.open();
 
-               if(status == IStatus.OK && wizard.openInEditor()){
+               if(status == IStatus.OK && wizard.openInEditor() && wizard.isSuccess()){
                    EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, true);
                        if(wizard.openEmpty()){
                 EditorUtil.openEmptyE4(wizard.getParentTreeNode().getUuid());
index edcb60a69dd8bcb0c74c360cb202cd78b7315131..d9d0a53a5d5af64a2f43221dc57734d823562ea6 100755 (executable)
@@ -9,15 +9,20 @@
 */
 package eu.etaxonomy.taxeditor.navigation.navigator.e4.handler;
 
+import java.util.Collection;
+import java.util.Iterator;
+
 import javax.inject.Named;
 
 import org.eclipse.core.commands.operations.AbstractOperation;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.e4.core.di.annotations.CanExecute;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.jface.window.Window;
@@ -27,10 +32,13 @@ import org.eclipse.swt.widgets.Shell;
 import eu.etaxonomy.cdm.api.service.config.PublishForSubtreeConfigurator;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
 import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;
 import eu.etaxonomy.taxeditor.navigation.navigator.operation.SetPublishForSubtreeOperation;
 import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4;
 import eu.etaxonomy.taxeditor.ui.dialog.configurator.SetPublishForSubtreeWizard;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
 
 /**
  * @author k.luther
@@ -45,13 +53,15 @@ public class SetPublishFlagForSubtreeHandlerE4 extends RemotingCdmHandlerE4 {
     public SetPublishFlagForSubtreeHandlerE4() {
         //FIXME add missing l10n property
 //        super(TaxonNavigatorLabels.CHANGE_PUBLISH_FOR_SUBTREE);
-        super("");
+        super(""); //$NON-NLS-1$
     }
 
 
     private TaxonNodeDto taxonNode;
     private PublishForSubtreeConfigurator configurator;
-
+    private static final String NO = Messages.NO;
+    private static final String CANCEL = Messages.RemotingMoveTaxonNodeHandler_CANCEL;
+    private static final String YES = Messages.YES;
 
     @Override
     public IStatus allowOperations(IStructuredSelection selection, Shell shell, MPart activePart,
@@ -77,6 +87,32 @@ public class SetPublishFlagForSubtreeHandlerE4 extends RemotingCdmHandlerE4 {
                     "unknown", //$NON-NLS-1$
                     TaxonNavigatorLabels.SELECTED_OBJECT_NOT_TREE_NODE_MESSAGE);
         }
+        Collection<IE4SavablePart> dirtyParts = EditorUtil.checkForTaxonChanges(null, partService);
+
+        if (dirtyParts != null && !dirtyParts.isEmpty()){
+            String[] buttonLables = {YES, NO,CANCEL};
+            MessageDialog dialog = new MessageDialog(null,  Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChanges, null, Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion, MessageDialog.QUESTION_WITH_CANCEL, buttonLables, 0);
+            dialog.open();
+            int returnCode = dialog.getReturnCode();
+            boolean proceed = false;
+            if (returnCode == 0){
+                proceed = true;
+            }else if (returnCode == 2){
+                return Status.CANCEL_STATUS;
+            }
+
+            Iterator<IE4SavablePart> partIterator = dirtyParts.iterator();
+            while( partIterator.hasNext() ){
+                IE4SavablePart part = partIterator.next();
+                if (proceed) {
+                    if (part != null){
+                        part.save(new NullProgressMonitor());
+                    }
+                }
+            }
+        }
+
+
         configurator = new PublishForSubtreeConfigurator(taxonNode.getUuid());
         SetPublishForSubtreeWizard wizard = new SetPublishForSubtreeWizard(configurator);
 
index ad60d001bfa03119633f161185990087d75eebb8..2163cf878505f968bf63c4c6fffff40776b8da70 100755 (executable)
@@ -8,15 +8,20 @@
  */
 package eu.etaxonomy.taxeditor.navigation.navigator.e4.handler;
 
+import java.util.Collection;
+import java.util.Iterator;
+
 import javax.inject.Named;
 
 import org.eclipse.core.commands.operations.AbstractOperation;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.e4.core.di.annotations.CanExecute;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.jface.window.Window;
@@ -26,10 +31,13 @@ import org.eclipse.swt.widgets.Shell;
 import eu.etaxonomy.cdm.api.service.config.SecundumForSubtreeConfigurator;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
 import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;
 import eu.etaxonomy.taxeditor.navigation.navigator.operation.SetSecundumForSubtreeOperation;
 import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4;
 import eu.etaxonomy.taxeditor.ui.dialog.configurator.SetSecundumForSubtreeConfigurationWizard;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
 
 /**
  * @author k.luther
@@ -74,6 +82,30 @@ public class SetSecReferenceForSubtreeHandlerE4 extends RemotingCdmHandlerE4 {
                     "unknown", //$NON-NLS-1$
                     TaxonNavigatorLabels.SELECTED_OBJECT_NOT_TREE_NODE_MESSAGE);
         }
+        Collection<IE4SavablePart> dirtyParts = EditorUtil.checkForTaxonChanges(null, partService);
+
+        if (dirtyParts != null && !dirtyParts.isEmpty()){
+            String[] buttonLables = {Messages.YES, Messages.NO,Messages.TreeNodeDropAdapter_CANCEL};
+            MessageDialog dialog = new MessageDialog(null,  Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChanges, null, Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion, MessageDialog.QUESTION_WITH_CANCEL, buttonLables, 0);
+            dialog.open();
+            int returnCode = dialog.getReturnCode();
+            boolean proceed = false;
+            if (returnCode == 0){
+                proceed = true;
+            }else if (returnCode == 2){
+                return Status.CANCEL_STATUS;
+            }
+
+            Iterator<IE4SavablePart> partIterator = dirtyParts.iterator();
+            while( partIterator.hasNext() ){
+                IE4SavablePart part = partIterator.next();
+                if (proceed) {
+                    if (part != null){
+                        part.save(new NullProgressMonitor());
+                    }
+                }
+            }
+        }
 
         configurator = new SecundumForSubtreeConfigurator(taxonNode.getUuid());
         SetSecundumForSubtreeConfigurationWizard wizard = new SetSecundumForSubtreeConfigurationWizard(configurator);
index ac205d6b1cc912e45c2161ce64a2aa86c016d5f1..66e88271c13dd4019e5e6b41df50acf4b760f162 100755 (executable)
@@ -12,26 +12,20 @@ package eu.etaxonomy.taxeditor.navigation.navigator.operation;
 import java.util.UUID;
 
 import org.apache.log4j.Logger;
-import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.workbench.modeling.EModelService;
 import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.swt.widgets.Display;
 
-import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.api.service.config.PublishForSubtreeConfigurator;
 import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
 import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
-import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * @author k.luther
@@ -80,43 +74,43 @@ public class SetPublishForSubtreeOperation extends UpdateSubtreeOperation implem
     }
 
 
-    private Job createJob(IProgressMonitor monitor){
-        Assert.isNotNull(config, "Configuration may not be null");
-
-        final Display display = Display.getDefault();
-        taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
-        Job job = new Job(Messages.SetPublishFlagForSubtreeOperation_SET_SEC_TASK) {
-
-
-            @Override
-            protected IStatus run(IProgressMonitor monitor) {
-                if (config instanceof PublishForSubtreeConfigurator){
-                       updateResult =  taxonNodeService.setPublishForSubtree(config.getSubtreeUuid(), ((PublishForSubtreeConfigurator)config).isPublish(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isIncludeSharedTaxa(), null);
-                }else {
-                       return Status.CANCEL_STATUS;
-                }
-                updateNameEditors();
-                return Status.OK_STATUS;
-
-            }
-        };
-        return job;
-    }
+//    private Job createJob(IProgressMonitor monitor){
+//        Assert.isNotNull(config, "Configuration may not be null");
+//
+//        final Display display = Display.getDefault();
+//        taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
+//        Job job = new Job(Messages.SetPublishFlagForSubtreeOperation_SET_SEC_TASK) {
+//
+//
+//            @Override
+//            protected IStatus run(IProgressMonitor monitor) {
+//                if (config instanceof PublishForSubtreeConfigurator){
+//                     updateResult =  taxonNodeService.setPublishForSubtree(config.getSubtreeUuid(), ((PublishForSubtreeConfigurator)config).isPublish(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isIncludeSharedTaxa(), null);
+//                }else {
+//                     return Status.CANCEL_STATUS;
+//                }
+//                updateNameEditors();
+//                return Status.OK_STATUS;
+//
+//            }
+//        };
+//        return job;
+//    }
 
     public void runMoniteredOperation() {
-        ITaxonNodeService nodeService;
+
         final UUID uuid = longRunningTaskService.monitLongRunningTask(config);
         Display.getDefault().asyncExec(new Runnable() {
             @Override
             public void run() {
-                AbstractUtility.executeMoniteredOperation("Set Publish Flag for Subtree: ",
+                EditorUtil.executeMoniteredOperation("Set Publish Flag for Subtree: ",
                         uuid,
                         1000,
                         false,
                         SetPublishForSubtreeOperation.this,
                         null,
                         true);
-            updateNameEditors();
+            //updateNameEditors();
             }
 
         });
index 057278db59e70db37e4faeb3c4d5d179b6d56acd..4055c2251b6b6a922035c7121efe06a261ab99d6 100755 (executable)
@@ -13,12 +13,8 @@ import java.util.UUID;
 import javax.inject.Inject;
 
 import org.apache.log4j.Logger;
-import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.e4.ui.di.UISynchronize;
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
@@ -30,7 +26,7 @@ import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.api.service.config.SecundumForSubtreeConfigurator;
 import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
 import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
 
@@ -60,6 +56,8 @@ public class SetSecundumForSubtreeOperation extends UpdateSubtreeOperation imple
      */
     @Override
     protected UpdateResult doUpdateExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
+        EditorUtil.checkForChanges(null, partService);
+
 //        runMoniteredOperation();
         runMoniteredOperation();
 //        updateNameEditors();
@@ -76,26 +74,26 @@ public class SetSecundumForSubtreeOperation extends UpdateSubtreeOperation imple
     }
 
 
-    private Job createJob(IProgressMonitor monitor){
-        Assert.isNotNull(config, "Configuration may not be null");
-
-        final Display display = Display.getDefault();
-
-        Job job = new Job(Messages.SetSecundumForSubtreeOperation_SET_SEC_TASK) {
-            @Override
-            protected IStatus run(IProgressMonitor monitor) {
-               if (config instanceof SecundumForSubtreeConfigurator){
-                                       updateResult = taxonNodeService.setSecundumForSubtree((SecundumForSubtreeConfigurator)config);
-                               }else{
-                                       return Status.CANCEL_STATUS;
-                               }
-
-                               return Status.OK_STATUS;
-
-            }
-        };
-        return job;
-    }
+//    private Job createJob(IProgressMonitor monitor){
+//        Assert.isNotNull(config, "Configuration may not be null");
+//
+//        final Display display = Display.getDefault();
+//
+//        Job job = new Job(Messages.SetSecundumForSubtreeOperation_SET_SEC_TASK) {
+//            @Override
+//            protected IStatus run(IProgressMonitor monitor) {
+//             if (config instanceof SecundumForSubtreeConfigurator){
+//                                     updateResult = taxonNodeService.setSecundumForSubtree((SecundumForSubtreeConfigurator)config);
+//                             }else{
+//                                     return Status.CANCEL_STATUS;
+//                             }
+//
+//                             return Status.OK_STATUS;
+//
+//            }
+//        };
+//        return job;
+//    }
 
 
     public void runMoniteredOperation() {
@@ -104,14 +102,14 @@ public class SetSecundumForSubtreeOperation extends UpdateSubtreeOperation imple
         Display.getDefault().asyncExec(new Runnable() {
             @Override
             public void run() {
-                AbstractUtility.executeMoniteredOperation("Set Secundum Reference for Subtree: ",
+                EditorUtil.executeMoniteredOperation("Set Secundum Reference for Subtree: ",
                         uuid,
                         1000,
                         false,
                         SetSecundumForSubtreeOperation.this,
                         null,
                         true);
-                updateNameEditors();
+
             }
         });
 
index 8d431f1a0b3fdc6c4d383ec863c0354bfcbea12a..33fa609486a3036510b1d6b014bc8a1dcb12633a 100644 (file)
@@ -1,14 +1,11 @@
 package eu.etaxonomy.taxeditor.navigation.navigator.operation;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.UUID;
 
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.workbench.modeling.EModelService;
 import org.eclipse.e4.ui.workbench.modeling.EPartService;
-import org.eclipse.swt.widgets.Display;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
@@ -16,13 +13,7 @@ import eu.etaxonomy.cdm.api.longrunningService.ILongRunningTasksService;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.api.service.config.ForSubtreeConfiguratorBase;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
 import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -55,50 +46,5 @@ public abstract class UpdateSubtreeOperation extends RemotingCdmUpdateOperation
                longRunningTaskService = CdmApplicationState.getLongRunningTasksService();
                subtreeNode = CdmStore.getService(ITaxonNodeService.class).load(config.getSubtreeUuid());
            }
-         public void updateNameEditors(){
-             List<TaxonNode> nodesToUpdate = new ArrayList();
-             for (CdmBase object: updateResult.getUpdatedObjects()){
-              Taxon taxon = null;
-              TaxonNode node = null;
-              if (object instanceof Taxon){
-                  taxon = HibernateProxyHelper.deproxy(object, Taxon.class);
-                  node = taxon.getTaxonNode(subtreeNode.getClassification());
-
-              }else if (object instanceof Synonym){
-                  Synonym syn = HibernateProxyHelper.deproxy(object, Synonym.class);
-                  taxon = syn.getAcceptedTaxon();
-                  node = taxon.getTaxonNode(subtreeNode.getClassification());
-              }
-              nodesToUpdate.add(node);
-             }
-
-             Display.getDefault().asyncExec(new Runnable() {
-                   @Override
-                public void run() {
-
-                       for (MPart part : partService.getParts()){
-                                       Object object = part.getObject();
-                                       boolean setFocus = false;
-                                       if (part == activePart){
-                                           setFocus = true;
-                                       }
-                                       if (object instanceof TaxonNameEditorE4){
-                                           if (object != null){
-                                               EditorUtil.openTaxonBaseE4(((TaxonNameEditorE4)object).getTaxon().getUuid(), modelService, partService, application);
-                                           }
-//                                             Set<TaxonNode> nodes = ((TaxonNameEditorE4)object).getTaxon().getTaxonNodes();
-//                                             for (TaxonNode node: nodes){
-//                                                 if (nodesToUpdate.contains(node)){
-////                                                           EditorUtil.closeObsoleteEditor(node, partService);
-//                                                     EditorUtil.openTaxonNodeE4(node.getUuid(), modelService, partService, application);
-//                                                 }
-//
-//                                             }
-                                       }
-                       }
-                   }
-             });
-
-         }
 
 }
index a04693581a6f819c463cbf97c33bf5fc60b5bad5..809c02d1d69dea91c7b6aaa25963be563c142c92 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Printpublisher Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.printpublisher;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Require-Bundle: org.eclipse.osgi,
  org.eclipse.ui,
  eu.etaxonomy.taxeditor.cdmlib,
index 0d8b8868a78424626cbb779f86bed73636204776..4be53d1ce0eb4a64aee996884cb9c1c89528038e 100644 (file)
@@ -3,7 +3,7 @@
        <parent>
                <artifactId>taxeditor-parent</artifactId>
                <groupId>eu.etaxonomy</groupId>
-               <version>5.5.1</version>
+               <version>5.6.0</version>
        </parent>
 
        <modelVersion>4.0.0</modelVersion>
index fc38255a40abfc066bf05769ad46359f3e702e3e..32cc042631e9c70e9f74f891a1e44cc9ae1a04c7 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: DataStore Bundle
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.store;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Bundle-Activator: eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin
 Bundle-Vendor: EDIT
 Bundle-Localization: OSGI-INF/l10n/bundle
index c29f28f9a2c049ca2c9e9525b4c304bf80cff44a..e985358e6b77fec5c042f2f4b1866ac4ba7ba891 100644 (file)
@@ -22,7 +22,7 @@ page.name.18 = Team or Person Matching Strategy
 page.name.19 = Stage\r
 page.name.20 = Preservation Method\r
 page.name.22 = Default Feature Trees\r
-page.name.23 = Representation\r
+page.name.23 = Multi-Language Support\r
 page.name.24 = Mobot Open Url\r
 page.name.25 = Type Designations\r
 page.name.36 = Details View\r
@@ -251,4 +251,5 @@ page.name.53 = UI
 page.name.54 = External Services\r
 page.name.55 = Supplemental Data\r
 page.name.56 = Search\r
-page.name.57 = Taxon Search
\ No newline at end of file
+page.name.57 = Taxon Search\r
+page.name.58 = Common Names
\ No newline at end of file
index 18fc6093c1580a9ae746f13083f75c28c86b556c..ecc3ea6d84f14b6f314d2be9c7d28c9b5a898ed4 100644 (file)
@@ -22,7 +22,7 @@ page.name.18 = Team oder Personen Matching-Strategie
 page.name.19 = Stadium
 page.name.20 = Konservierungsmethoden
 page.name.22 = Standard Merkmalsbaum
-page.name.23 = Repr\u00e4sentation
+page.name.23 = Mehrsprachigkeit
 page.name.24 = Mobot Open Url
 page.name.25 = Typus
 page.name.36 = Details View
@@ -245,4 +245,5 @@ page.name.53 = UI
 page.name.54 = Externe Services
 page.name.55 = Zusatzdaten
 page.name.56 = Suche
-page.name.57 = Taxonsuche
\ No newline at end of file
+page.name.57 = Taxonsuche
+page.name.58 = Trivialnamen
\ No newline at end of file
index 907b66c8d63fb8696b9f047b7cfe02d937216eb4..1f4a5516d54ad867f7bc346c6a4801de684a6025 100644 (file)
       <handlers xmi:id="_b8sJAIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.DeleteTermBaseHandlerE4" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.DeleteTermBaseHandlerE4" command="_Z_XgsIdQEeecZ4F2Y9Z0Og"/>
       <handlers xmi:id="_B7cTkIfSEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4.newDefinedTerm" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4" command="_GTbAcIfSEeecZ4F2Y9Z0Og"/>
       <handlers xmi:id="_NqtXEIfSEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4.newKindOfTerm" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4" command="_LMwG4IfSEeecZ4F2Y9Z0Og"/>
+      <handlers xmi:id="_yPjL8EAVEembfJNLZI9wiA" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.MoveDefinedTermHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.MoveDefinedTermHandler" command="_d6YpoEAVEembfJNLZI9wiA"/>
       <menus xsi:type="menu:PopupMenu" xmi:id="_CoJioIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.popupmenu.termeditor">
         <children xsi:type="menu:Menu" xmi:id="_DR1Y0IdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.menu.menulabel0" label="%menu.label.0">
           <children xsi:type="menu:HandledMenuItem" xmi:id="_N22PsIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.commandlabel12" label="%command.label.12" command="_5mFFMIdPEeecZ4F2Y9Z0Og"/>
           <children xsi:type="menu:HandledMenuItem" xmi:id="_QOD-sIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.commandlabel13" label="%command.label.13" command="_GTbAcIfSEeecZ4F2Y9Z0Og"/>
-          <children xsi:type="menu:HandledMenuItem" xmi:id="_R4pRMIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.kindofterm" label="%handledmenuitem.label.7" command="_LMwG4IfSEeecZ4F2Y9Z0Og">
+          <children xsi:type="menu:HandledMenuItem" xmi:id="_R4pRMIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.kindofterm" toBeRendered="false" visible="false" label="%handledmenuitem.label.7" command="_LMwG4IfSEeecZ4F2Y9Z0Og">
             <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_2G0O8IfREeecZ4F2Y9Z0Og" coreExpressionId="isShowExperimentalFeatures"/>
           </children>
         </children>
         <children xsi:type="menu:HandledMenuItem" xmi:id="_W94ssIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.commandlabel14" label="%command.label.14" command="_Z_XgsIdQEeecZ4F2Y9Z0Og"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_aHm7kEAVEembfJNLZI9wiA" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.moveto" label="Move term" command="_d6YpoEAVEembfJNLZI9wiA"/>
       </menus>
     </elements>
     <elements xsi:type="basic:PartDescriptor" xmi:id="_HBpj0KkNEeejedk4mZQIGw" elementId="eu.etaxonomy.taxeditor.view.dataimport.e4.SpecimenImportViewE4" label="%view.name.7" allowMultiple="true" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.view.dataimport.e4.SpecimenImportViewE4">
@@ -82,6 +84,8 @@
     </elements>
     <elements xsi:type="basic:PartDescriptor" xmi:id="_aT37QM3UEeeznb_sS6rfAQ" elementId="eu.etaxonomy.taxeditor.store.partdescriptor.SearchDialog" label="%view.name.9" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.ui.dialog.selection.SearchDialog"/>
     <elements xsi:type="basic:PartDescriptor" xmi:id="_XV6gkEbOEeiER_VRS0L7wA" elementId="eu.etaxonomy.taxeditor.view.webimport.termimport.GfBioTerminologyImportPart" label="%partdescriptor.label.1" tooltip="%partdescriptor.tooltip.1" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.view.webimport.termimport.GfBioTerminologyImportPart"/>
+    <elements xsi:type="basic:PartDescriptor" xmi:id="_namYwB7xEemDKJyLc5CJfQ" elementId="eu.etaxonomy.taxeditor.store.partdescriptor.termsearch" label="Term Search" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.view.search.facet.term.TermSearch"/>
+    <elements xsi:type="basic:PartDescriptor" xmi:id="_mbegMDNMEemOn_75IU-Tvg" elementId="eu.etaxonomy.taxeditor.store.partdescriptor.occurencesearch" label="Occurrence Search" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.view.search.facet.occurrence.OccurrenceSearch"/>
   </fragments>
   <fragments xsi:type="fragment:StringModelFragment" xmi:id="_3rW8wCXaEeex9MwMOgUeWw" featurename="children" parentElementId="eu.etaxonomy.taxeditor.menu.showView" positionInList="after:eu.etaxonomy.taxeditor.workbench.menuseparator.afterConcept">
     <elements xsi:type="menu:HandledMenuItem" xmi:id="_TlufMCaGEeeTEd_pKXBflg" elementId="eu.etaxonomy.taxeditor.store.showViewMenu.supplemental" label="%command.label.1" iconURI="platform:/plugin/eu.etaxonomy.taxeditor.store/icons/applications-office.png" tooltip="%command.label.1" command="_bnVKsCZxEeeQLpuomSmVoQ">
     <elements xsi:type="commands:Command" xmi:id="_xDk5kNjyEeidDMMI9xTsbQ" elementId="eu.etaxonomy.taxeditor.store.command.featureTree.pasteFeature" commandName="%command.commandname.12"/>
     <elements xsi:type="commands:Command" xmi:id="_Za5DYO5vEeizn7bmbAeBkw" elementId="eu.etaxonomy.taxeditor.store.open.OpenDistributionStatusWizardHandler" commandName="%command.commandname.13"/>
     <elements xsi:type="commands:Command" xmi:id="_xyZ4oPhmEei8uPv-H2wqnw" elementId="eu.etaxonomy.taxeditor.store.command.featureTree.exportTreeOntology" commandName="%command.commandname.14"/>
+    <elements xsi:type="commands:Command" xmi:id="_qYxw8D85EemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.store.command.OpenDatabaseRepairWizard" commandName="Open Cache Updater"/>
+    <elements xsi:type="commands:Command" xmi:id="_VUQY0D86EemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.store.command.openSortIndexUpdaterWizard" commandName="Open Sort Index Updater"/>
+    <elements xsi:type="commands:Command" xmi:id="_d6YpoEAVEembfJNLZI9wiA" elementId="eu.etaxonomy.taxeditor.editor.definedTerms.moveTerm" commandName="Move Term"/>
   </fragments>
   <fragments xsi:type="fragment:StringModelFragment" xmi:id="_swGH0GhvEee3K4uKJljEYg" featurename="handlers" parentElementId="xpath:/">
     <elements xsi:type="commands:Handler" xmi:id="_rVEdIGcjEee0qLTtA2ZpVQ" elementId="eu.etaxonomy.taxeditor.featuretree.e4.handler.RemoveFeatureHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.featuretree.e4.handler.RemoveFeatureHandler" command="_fNBtQGcjEee0qLTtA2ZpVQ"/>
     <elements xsi:type="commands:Handler" xmi:id="_i-FlkNjyEeidDMMI9xTsbQ" elementId="eu.etaxonomy.taxeditor.featuretree.e4.handler.CopyFeatureHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.featuretree.e4.handler.CopyFeatureHandler" command="_cMyQ4NjyEeidDMMI9xTsbQ"/>
     <elements xsi:type="commands:Handler" xmi:id="_tzQ_YNjyEeidDMMI9xTsbQ" elementId="eu.etaxonomy.taxeditor.featuretree.e4.handler.PasteFeatureHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.featuretree.e4.handler.PasteFeatureHandler" command="_xDk5kNjyEeidDMMI9xTsbQ"/>
     <elements xsi:type="commands:Handler" xmi:id="_xWlngO5vEeizn7bmbAeBkw" elementId="eu.etaxonomy.taxeditor.handler.e4.OpenDistributionStausWizardHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.handler.e4.OpenDistributionStatusWizardHandler" command="_Za5DYO5vEeizn7bmbAeBkw"/>
+    <elements xsi:type="commands:Handler" xmi:id="_i4yZAD8zEemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.store.handler.0" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.handler.OpenDatabaseRepairWizardHandler" command="_qYxw8D85EemTy7SLZkowuQ"/>
+    <elements xsi:type="commands:Handler" xmi:id="_PugRQD86EemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.store.handler.1" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.handler.OpenUpdateSortIndicesHandler" command="_VUQY0D86EemTy7SLZkowuQ"/>
   </fragments>
   <fragments xsi:type="fragment:StringModelFragment" xmi:id="_qT4hgIfTEeecZ4F2Y9Z0Og" featurename="children" parentElementId="eu.etaxonomy.taxeditor.workbench.menu.window" positionInList="before:eu.etaxonomy.taxeditor.application.windowMenu.last">
     <elements xsi:type="menu:Menu" xmi:id="_LT3P8IfcEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.menu.termeditor" label="%menu.label.1">
-      <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_gVhOIEb1EeiER_VRS0L7wA" coreExpressionId="isCdmStoreConnected"/>
       <children xsi:type="menu:DynamicMenuContribution" xmi:id="_HIptYIfUEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.dynamicmenucontribution.0" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermMenuE4"/>
       <children xsi:type="menu:MenuSeparator" xmi:id="_yRINcIfqEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.menuseparator.3"/>
       <children xsi:type="menu:HandledMenuItem" xmi:id="_rwfDkIftEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.termEditorMenu.featureTreeEditor" label="%handledmenuitem.label.8" tooltip="%handledmenuitem.tooltip.1" command="_bnVKsCZxEeeQLpuomSmVoQ">
         <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_h15bwEb1EeiER_VRS0L7wA" coreExpressionId="isCdmStoreConnectedAndShowExperimental"/>
         <parameters xmi:id="_eU0zcUbOEeiER_VRS0L7wA" elementId="eu.etaxonomy.taxeditor.store.showView.parameter.gfbioTermImport" name="eu.etaxonomy.taxeditor.workbench.commandparameter.partName" value="eu.etaxonomy.taxeditor.view.webimport.termimport.GfBioTerminologyImportPart"/>
       </children>
+      <children xsi:type="menu:HandledMenuItem" xmi:id="_fbZtkB7xEemDKJyLc5CJfQ" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.termsearch" label="Term Search" command="_bnVKsCZxEeeQLpuomSmVoQ">
+        <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_fDkegDNMEemOn_75IU-Tvg" coreExpressionId="isShowExperimentalFeatures"/>
+        <parameters xmi:id="_jnbCEB7xEemDKJyLc5CJfQ" elementId="eu.etaxonomy.taxeditor.store.showView.parameter.termsearch" name="eu.etaxonomy.taxeditor.workbench.commandparameter.partName" value="eu.etaxonomy.taxeditor.store.partdescriptor.termsearch"/>
+      </children>
+      <children xsi:type="menu:HandledMenuItem" xmi:id="_ab1eYDNMEemOn_75IU-Tvg" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.occurrencesearch" label="Occurrence Search" command="_bnVKsCZxEeeQLpuomSmVoQ">
+        <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_eiOE8DNMEemOn_75IU-Tvg" coreExpressionId="isShowExperimentalFeatures"/>
+        <parameters xmi:id="_ab1eYTNMEemOn_75IU-Tvg" elementId="eu.etaxonomy.taxeditor.store.showView.parameter.occurrencesearch" name="eu.etaxonomy.taxeditor.workbench.commandparameter.partName" value="eu.etaxonomy.taxeditor.store.partdescriptor.occurencesearch"/>
+      </children>
     </elements>
   </fragments>
   <fragments xsi:type="fragment:StringModelFragment" xmi:id="_pVVyEJFJEeeDJpjGQES7gw" featurename="addons" parentElementId="xpath:/">
   <fragments xsi:type="fragment:StringModelFragment" xmi:id="_lnmLABWNEeiazYUJirF0Pw" featurename="children" parentElementId="eu.etaxonomy.taxeditor.workbench.menu.help" positionInList="after:eu.etaxonomy.taxeditor.workbench.menuseparator.beforeHelp">
     <elements xsi:type="menu:HandledMenuItem" xmi:id="_uHiLwBWNEeiazYUJirF0Pw" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.handledmenuitemlabel6" label="%handledmenuitem.label.11" command="_jSJrsBWPEeiazYUJirF0Pw"/>
   </fragments>
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_S2CIED8oEempU5gGjh-zOg" featurename="children" parentElementId="eu.etaxonomy.taxeditor.workbench.menu.databaseRepair">
+    <elements xsi:type="menu:HandledMenuItem" xmi:id="_67xR4D8oEempU5gGjh-zOg" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.UpdateCaches" label="Update Caches" command="_qYxw8D85EemTy7SLZkowuQ">
+      <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_HcAdUD8_EemTy7SLZkowuQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
+    </elements>
+    <elements xsi:type="menu:HandledMenuItem" xmi:id="_CSXsAD8pEempU5gGjh-zOg" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.UpdateSortindices" label="Update Sortindices" command="_VUQY0D86EemTy7SLZkowuQ">
+      <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_JRRV0D8_EemTy7SLZkowuQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
+    </elements>
+  </fragments>
 </fragment:ModelFragments>
index 72992d78a41c24dc6abeb6e91132f2aea34e22a8..804f941986438a9c2f07926763e6b4656aa9b26f 100755 (executable)
          id="eu.etaxonomy.taxeditor.preference.taxonSearchPreferences"
          name="%page.name.57">
    </page>
+    <page
+          category="eu.etaxonomy.taxeditor.preference.defaultlanguagepditorpreferencePage"
+          class="eu.etaxonomy.taxeditor.preference.menu.CommonNameLanguagePreferences"
+          id="eu.etaxonomy.taxeditor.preferences.commonnamelanguages"
+          name="%page.name.58">
+    </page>
    
    
 </extension>
index 61dc19aa6e40023eb5994a05118edc09125c6882..bb22a790f1bcece14b8bd6f1185ccf3aa44243db 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
        <groupId>eu.etaxonomy</groupId>
        <artifactId>taxeditor-parent</artifactId>
-       <version>5.5.1</version>
+       <version>5.6.0</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
similarity index 54%
rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/Test.java
rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/CacheUpdaterWizardPage.java
index a3a519f0dc0df7f37586c33e16e704a711fa5f26..b4cb00749f102806b60a6a0312e1117e62991c0c 100644 (file)
@@ -12,15 +12,11 @@ import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
 
-import eu.etaxonomy.cdm.io.operation.config.CacheUpdaterConfigurator;
-import eu.etaxonomy.cdm.io.operation.config.SortIndexUpdaterConfigurator;
+import eu.etaxonomy.cdm.api.service.config.CacheUpdaterConfigurator;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
@@ -33,20 +29,21 @@ import eu.etaxonomy.taxeditor.l10n.Messages;
  * @date 14.12.2016
  *
  */
-public class Test extends WizardPage {
+public class CacheUpdaterWizardPage extends WizardPage {
 
     CacheUpdaterConfigurator config;
-    SortIndexUpdaterConfigurator sortIndexConfig;
+
     boolean updateAgentBase = false;
     boolean updateReference = false;
     boolean updateTaxonBase = false;
     boolean updateName = false;
     boolean updateSpecimen = false;
 
-    public Test(String pageName, CacheUpdaterConfigurator configTitleCache, SortIndexUpdaterConfigurator sortIndexConfig) {
+    public CacheUpdaterWizardPage(String pageName, CacheUpdaterConfigurator configTitleCache) {
         super(pageName);
+        this.setDescription(Messages.DatabaseRepairPage_description);
         config = configTitleCache;
-        this.sortIndexConfig = sortIndexConfig;
+
     }
 
     /**
@@ -56,65 +53,11 @@ public class Test extends WizardPage {
     public void createControl(Composite parent) {
 
 
-            Composite container = new Composite(parent, SWT.NULL);
-            setControl(container);
-            container.setLayout(new FillLayout(SWT.HORIZONTAL));
-
-            TabFolder tabFolder = new TabFolder(container, SWT.NONE);
-
-            TabItem tbtmSortIndex = new TabItem(tabFolder, SWT.NONE);
-            tbtmSortIndex.setText("Sort Index");
+            Composite composite = new Composite(parent, SWT.NONE);
 
-            Composite composite = new Composite(tabFolder, SWT.NONE);
-            tbtmSortIndex.setControl(composite);
             composite.setLayout(new GridLayout(1, true));
-
-
-            Button checkBoxTaxonNode = new Button(composite, SWT.CHECK);
-            checkBoxTaxonNode.setSelection(sortIndexConfig.isDoTaxonNode());
-            checkBoxTaxonNode.setText(Messages.DatabaseRepairPage_updateTaxonNodes);
-            checkBoxTaxonNode
-                    .setToolTipText(Messages.DatabaseRepairPage_toolTip_taxonNode);
-            checkBoxTaxonNode.addSelectionListener(new SelectionAdapter() {
-                @Override
-                public void widgetSelected(SelectionEvent e) {
-                    sortIndexConfig.setDoTaxonNode(!sortIndexConfig.isDoTaxonNode());
-                }
-            });
-
-            Button checkBoxPolytomousKeyNode = new Button(composite, SWT.CHECK);
-            checkBoxPolytomousKeyNode.setSelection(sortIndexConfig.isDoPolytomousKeyNode());
-            checkBoxPolytomousKeyNode.setText(Messages.DatabaseRepairPage_PolytomousKeyNode);
-            checkBoxPolytomousKeyNode
-            .setToolTipText(Messages.DatabaseRepairPage_toolTip_polytomousKeyNode);
-            checkBoxPolytomousKeyNode.addSelectionListener(new SelectionAdapter() {
-                @Override
-                public void widgetSelected(SelectionEvent e) {
-                    sortIndexConfig.setDoPolytomousKeyNode(!sortIndexConfig.isDoPolytomousKeyNode());
-                }
-            });
-
-            Button checkBoxFeatureNode = new Button(composite, SWT.CHECK);
-            checkBoxFeatureNode.setSelection(sortIndexConfig.isDoFeatureNode());
-            checkBoxFeatureNode.setText(Messages.DatabaseRepairPage_featureNodes);
-            checkBoxFeatureNode
-            .setToolTipText(Messages.DatabaseRepairPage_toolTipFeatureNodes);
-            checkBoxFeatureNode.addSelectionListener(new SelectionAdapter() {
-                @Override
-                public void widgetSelected(SelectionEvent e) {
-                    sortIndexConfig.setDoFeatureNode(!sortIndexConfig.isDoFeatureNode());
-                }
-            });
-
-
-            TabItem tbtmNewItem = new TabItem(tabFolder, SWT.NONE);
-            tbtmNewItem.setText("Update Caches");
-
-            Composite composite_1 = new Composite(tabFolder, SWT.NONE);
-            tbtmNewItem.setControl(composite_1);
-            composite_1.setLayout(new GridLayout(1, false));
-
-            Button checkBoxTeamOrPerson = new Button(composite_1, SWT.CHECK);
+            setControl(composite);
+            Button checkBoxTeamOrPerson = new Button(composite, SWT.CHECK);
             checkBoxTeamOrPerson.setSelection(config.getClassList().contains(TeamOrPersonBase.class));
             checkBoxTeamOrPerson.setText(Messages.DatabaseRepairPage_TeamOrPerson);
             checkBoxTeamOrPerson
@@ -128,7 +71,7 @@ public class Test extends WizardPage {
                 }
             });
 
-            Button checkBoxReference = new Button(composite_1, SWT.CHECK);
+            Button checkBoxReference = new Button(composite, SWT.CHECK);
             checkBoxReference.setSelection(config.getClassList().contains(Reference.class));
             checkBoxReference.setText(Messages.DatabaseRepairPage_Reference);
             checkBoxReference
@@ -141,7 +84,7 @@ public class Test extends WizardPage {
                 }
             });
 
-            Button checkBoxTaxonName = new Button(composite_1, SWT.CHECK);
+            Button checkBoxTaxonName = new Button(composite, SWT.CHECK);
             checkBoxTaxonName.setSelection(config.getClassList().contains(TaxonName.class));
             checkBoxTaxonName.setText(Messages.DatabaseRepairPage_updateTaxonName);
             checkBoxTaxonName
@@ -155,7 +98,7 @@ public class Test extends WizardPage {
                 }
             });
 
-            Button checkBoxTaxonBase = new Button(composite_1, SWT.CHECK);
+            Button checkBoxTaxonBase = new Button(composite, SWT.CHECK);
             checkBoxTaxonBase.setSelection(config.getClassList().contains(TaxonBase.class));
             checkBoxTaxonBase.setText(Messages.DatabaseRepairPage_TaxonBase);
             checkBoxTaxonBase
@@ -170,7 +113,7 @@ public class Test extends WizardPage {
             });
 
 
-            Button checkBoxSpecimen = new Button(composite_1, SWT.CHECK);
+            Button checkBoxSpecimen = new Button(composite, SWT.CHECK);
             checkBoxSpecimen.setSelection(config.getClassList().contains(SpecimenOrObservationBase.class));
             checkBoxSpecimen.setText(Messages.DatabaseRepairPage_Specimen);
             checkBoxSpecimen
@@ -184,6 +127,6 @@ public class Test extends WizardPage {
                 }
             });
 
-            tabFolder.pack();
+
     }
 }
index ad1e5f959607d2c5453b6b4c8d0660e91911c0e5..e95c3dfd468ca03caf230359baf923c1f6180c42 100644 (file)
@@ -18,7 +18,7 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.cdm.io.operation.config.CacheUpdaterConfigurator;
+import eu.etaxonomy.cdm.api.service.config.CacheUpdaterConfigurator;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairUpdateCachesWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairUpdateCachesWizard.java
new file mode 100755 (executable)
index 0000000..f2bbbdf
--- /dev/null
@@ -0,0 +1,106 @@
+/**
+* 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.wizard;
+
+import java.util.UUID;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Display;
+
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.longrunningService.ILongRunningTasksService;
+import eu.etaxonomy.cdm.api.service.config.CacheUpdaterConfigurator;
+import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
+
+/**
+ * @author k.luther
+ * @since 05.03.2019
+ *
+ */
+public class DatabaseRepairUpdateCachesWizard extends Wizard implements IPostMoniteredOperationEnabled {
+
+    CacheUpdaterConfigurator cacheUpdaterConfig;
+    ILongRunningTasksService longRunningTaskService;
+    CacheUpdaterWizardPage page;
+
+
+    public DatabaseRepairUpdateCachesWizard() {
+        setWindowTitle("Update Caches");
+        cacheUpdaterConfig = CacheUpdaterConfigurator.NewInstance();
+        longRunningTaskService = CdmApplicationState.getLongRunningTasksService();
+        page = new CacheUpdaterWizardPage("Update Caches", cacheUpdaterConfig);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void postOperation(IRemotingProgressMonitor monitor) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void addPages() {
+        addPage(page);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean performFinish() {
+        if (page.updateAgentBase){
+            cacheUpdaterConfig.getClassList().add(TeamOrPersonBase.class);
+        }
+        if (page.updateReference){
+            cacheUpdaterConfig.getClassList().add(Reference.class);
+        }
+        if (page.updateName){
+            cacheUpdaterConfig.getClassList().add(TaxonName.class);
+        }
+        if (page.updateTaxonBase){
+            cacheUpdaterConfig.getClassList().add(TaxonBase.class);
+        }
+        if (page.updateSpecimen){
+            cacheUpdaterConfig.getClassList().add(SpecimenOrObservationBase.class);
+        }
+        if (!cacheUpdaterConfig.getClassList().isEmpty()){
+
+
+             final UUID uuid = longRunningTaskService.monitLongRunningTask(cacheUpdaterConfig);
+             Display.getDefault().asyncExec(new Runnable() {
+                 @Override
+                 public void run() {
+                     AbstractUtility.executeMoniteredOperation("Update Caches",
+                             uuid,
+                             1000,
+                             false,
+                             DatabaseRepairUpdateCachesWizard.this,
+                             null,
+                             true);
+
+                 }
+
+             });
+        }
+
+
+
+    return true;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairUpdateSortIndicesWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairUpdateSortIndicesWizard.java
new file mode 100644 (file)
index 0000000..9b6079f
--- /dev/null
@@ -0,0 +1,99 @@
+/**
+* Copyright (C) 2016 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.wizard;
+
+import java.util.UUID;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Display;
+
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.longrunningService.ILongRunningTasksService;
+import eu.etaxonomy.cdm.api.service.config.SortIndexUpdaterConfigurator;
+import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
+import eu.etaxonomy.cdm.config.ICdmSource;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @date 06.12.2016
+ *
+ */
+public class DatabaseRepairUpdateSortIndicesWizard extends Wizard implements IPostMoniteredOperationEnabled{
+   // private final DatabaseRepairSortIndexPage repairSortIndexPage;
+    private final SortIndexUpdaterWizardPage page;
+    SortIndexUpdaterConfigurator config;
+
+    ILongRunningTasksService longRunningTaskService;
+
+
+    public DatabaseRepairUpdateSortIndicesWizard() {
+        setWindowTitle("Update Sort Indices");
+        config = SortIndexUpdaterConfigurator.NewInstance();
+        page = new SortIndexUpdaterWizardPage("Sort index update", config);
+        longRunningTaskService = CdmApplicationState.getLongRunningTasksService();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean performFinish() {
+
+            if (config == null){
+                ICdmSource source= CdmStore.getActiveCdmSource();
+                config = SortIndexUpdaterConfigurator.NewInstance();
+                config.setDoFeatureNode(false);
+                config.setDoPolytomousKeyNode(false);
+
+
+             }
+            if (config.isDoFeatureNode() || config.isDoPolytomousKeyNode() || config.isDoTaxonNode()){
+
+                final UUID uuid = longRunningTaskService.monitLongRunningTask(config);
+                Display.getDefault().asyncExec(new Runnable() {
+                    @Override
+                    public void run() {
+                        AbstractUtility.executeMoniteredOperation("Update SortIndices: ",
+                                uuid,
+                                1000,
+                                false,
+                                DatabaseRepairUpdateSortIndicesWizard.this,
+                                null,
+                                true);
+
+                    }
+
+                });
+
+
+            }
+
+
+        return true;
+    }
+
+    @Override
+    public void addPages() {
+        addPage(page);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void postOperation(IRemotingProgressMonitor monitor) {
+        // TODO Auto-generated method stub
+
+    }
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/wizard/DatabaseRepairWizard.java
deleted file mode 100644 (file)
index b087e03..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
-* Copyright (C) 2016 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.wizard;
-
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.wizard.Wizard;
-
-import eu.etaxonomy.cdm.config.ICdmSource;
-import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
-import eu.etaxonomy.cdm.io.operation.config.CacheUpdaterConfigurator;
-import eu.etaxonomy.cdm.io.operation.config.SortIndexUpdaterConfigurator;
-import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.name.TaxonName;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-
-/**
- * @author k.luther
- * @date 06.12.2016
- *
- */
-public class DatabaseRepairWizard extends Wizard {
-   // private final DatabaseRepairSortIndexPage repairSortIndexPage;
-    private final Test test;
-    SortIndexUpdaterConfigurator config;
-    CacheUpdaterConfigurator cacheUpdaterConfig;
-
-
-
-    public DatabaseRepairWizard() {
-        setWindowTitle("Repair Wizard");
-        config = SortIndexUpdaterConfigurator.NewInstance(null);
-       // repairSortIndexPage = new DatabaseRepairSortIndexPage("SortIndex Repair",config);
-        cacheUpdaterConfig = CacheUpdaterConfigurator.NewInstance(null);
-        test = new Test("Test", cacheUpdaterConfig, config);
-
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public boolean performFinish() {
-
-            if (config == null){
-                ICdmSource source= CdmStore.getActiveCdmSource();
-                config = SortIndexUpdaterConfigurator.NewInstance(null);
-                config.setDoFeatureNode(false);
-                config.setDoPolytomousKeyNode(false);
-
-
-             }
-            if (config.isDoFeatureNode() || config.isDoPolytomousKeyNode() || config.isDoTaxonNode()){
-               config.setCheck(CHECK.IMPORT_WITHOUT_CHECK);
-                Job updateJob = CdmStore.getImportManager().createIOServiceJob(config);
-                CdmStore.getImportManager().run(updateJob);
-            }
-            if (test.updateAgentBase){
-               cacheUpdaterConfig.getClassList().add(TeamOrPersonBase.class);
-            }
-            if (test.updateReference){
-               cacheUpdaterConfig.getClassList().add(Reference.class);
-            }
-            if (test.updateName){
-               cacheUpdaterConfig.getClassList().add(TaxonName.class);
-            }
-            if (test.updateTaxonBase){
-               cacheUpdaterConfig.getClassList().add(TaxonBase.class);
-            }
-            if (test.updateSpecimen){
-               cacheUpdaterConfig.getClassList().add(SpecimenOrObservationBase.class);
-            }
-            if (!cacheUpdaterConfig.getClassList().isEmpty()){
-               cacheUpdaterConfig.setCheck(CHECK.IMPORT_WITHOUT_CHECK);
-                Job updateJob2 = CdmStore.getImportManager().createIOServiceJob(cacheUpdaterConfig);
-                CdmStore.getImportManager().run(updateJob2);
-            }
-
-
-
-        return true;
-    }
-
-    @Override
-    public void addPages() {
-       //addPage(repairSortIndexPage);
-        addPage(test);
-    }
-
-
-}
@@ -1,5 +1,5 @@
 /**
-* Copyright (C) 2016 EDIT
+* Copyright (C) 2019 EDIT
 * European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
 *
@@ -16,85 +16,69 @@ import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.cdm.io.operation.config.SortIndexUpdaterConfigurator;
+import eu.etaxonomy.cdm.api.service.config.SortIndexUpdaterConfigurator;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
 /**
  * @author k.luther
- * @date 06.12.2016
+ * @since 05.03.2019
  *
  */
-public class DatabaseRepairSortIndexPage extends WizardPage {
+public class SortIndexUpdaterWizardPage extends WizardPage {
 
-    SortIndexUpdaterConfigurator config = null;
-    /**
-     * @param pageName
-     */
-    protected DatabaseRepairSortIndexPage(String pageName, SortIndexUpdaterConfigurator config){
+    SortIndexUpdaterConfigurator sortIndexConfig;
+
+    public SortIndexUpdaterWizardPage(String pageName, SortIndexUpdaterConfigurator sortIndexConfig) {
         super(pageName);
-        this.config = config;
-        setMessage(Messages.DatabaseRepairPage_chooseParameter);
+        this.setDescription(Messages.DatabaseRepairPage_description_sortIndex);
+        this.sortIndexConfig = sortIndexConfig;
     }
 
-
-
-
-
-
-
-
     /**
      * {@inheritDoc}
      */
     @Override
     public void createControl(Composite parent) {
-        final Composite composite = new Composite(parent, SWT.NULL);
-
-        GridLayout gridLayout = new GridLayout();
-        composite.setLayout(gridLayout);
+        Composite composite = new Composite(parent, SWT.NONE);
 
+        composite.setLayout(new GridLayout(1, true));
+        setControl(composite);
         Button checkBoxTaxonNode = new Button(composite, SWT.CHECK);
-        checkBoxTaxonNode.setSelection(config.isDoTaxonNode());
+        checkBoxTaxonNode.setSelection(sortIndexConfig.isDoTaxonNode());
         checkBoxTaxonNode.setText(Messages.DatabaseRepairPage_updateTaxonNodes);
         checkBoxTaxonNode
                 .setToolTipText(Messages.DatabaseRepairPage_toolTip_taxonNode);
         checkBoxTaxonNode.addSelectionListener(new SelectionAdapter() {
             @Override
             public void widgetSelected(SelectionEvent e) {
-                config.setDoTaxonNode(!config.isDoTaxonNode());
+                sortIndexConfig.setDoTaxonNode(!sortIndexConfig.isDoTaxonNode());
             }
         });
 
         Button checkBoxPolytomousKeyNode = new Button(composite, SWT.CHECK);
-        checkBoxPolytomousKeyNode.setSelection(config.isDoPolytomousKeyNode());
+        checkBoxPolytomousKeyNode.setSelection(sortIndexConfig.isDoPolytomousKeyNode());
         checkBoxPolytomousKeyNode.setText(Messages.DatabaseRepairPage_PolytomousKeyNode);
         checkBoxPolytomousKeyNode
         .setToolTipText(Messages.DatabaseRepairPage_toolTip_polytomousKeyNode);
         checkBoxPolytomousKeyNode.addSelectionListener(new SelectionAdapter() {
             @Override
             public void widgetSelected(SelectionEvent e) {
-                config.setDoPolytomousKeyNode(!config.isDoPolytomousKeyNode());
+                sortIndexConfig.setDoPolytomousKeyNode(!sortIndexConfig.isDoPolytomousKeyNode());
             }
         });
 
         Button checkBoxFeatureNode = new Button(composite, SWT.CHECK);
-        checkBoxFeatureNode.setSelection(config.isDoFeatureNode());
+        checkBoxFeatureNode.setSelection(sortIndexConfig.isDoFeatureNode());
         checkBoxFeatureNode.setText(Messages.DatabaseRepairPage_featureNodes);
         checkBoxFeatureNode
         .setToolTipText(Messages.DatabaseRepairPage_toolTipFeatureNodes);
         checkBoxFeatureNode.addSelectionListener(new SelectionAdapter() {
             @Override
             public void widgetSelected(SelectionEvent e) {
-                config.setDoFeatureNode(!config.isDoFeatureNode());
+                sortIndexConfig.setDoFeatureNode(!sortIndexConfig.isDoFeatureNode());
             }
         });
 
-
-
-        setControl(composite);
-
     }
 
-
-
 }
index dd8fa722ec138ea7c446ea5d48f3723277abcdbd..fe8103657e63710353cd22621a89081629b93368 100755 (executable)
@@ -1,13 +1,18 @@
 package eu.etaxonomy.taxeditor.editor;
 
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 
 
 public interface ITaxonEditor {
        /**
-        * 
+        *
         * @return the @Taxon of the editor
-        * 
+        *
         */
        public abstract Taxon getTaxon();
+
+       public abstract void update();
+
+    public void addOperation(AbstractPostOperation operation);
 }
index 5bb99477c1a6117ff3ff20f0bf1f3564ae72933e..9ef94e69c2fe617c562a4041df2dc4641a674993 100644 (file)
@@ -12,7 +12,7 @@ package eu.etaxonomy.taxeditor.editor.definedterm;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerComparator;
 
-import eu.etaxonomy.cdm.model.common.OrderedTermBase;
+import eu.etaxonomy.cdm.model.term.OrderedTermBase;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.cdm.remote.l10n.TermRepresentation_L10n;
index bb593c6c895f431a4e3da7f3087ab06326c31b9d..81bb1183499db8bd649ad10477ea13dbaa56a0ca 100755 (executable)
@@ -12,7 +12,7 @@ import java.util.Collection;
 
 import org.eclipse.jface.viewers.ITreeContentProvider;
 
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 
 /**
  *
index e9a2675d056fe46912d263d62a6d52b2f4ebf929..4db8bbb866474bbc7d5cfc5b869c3833db2f76db 100644 (file)
@@ -13,11 +13,11 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 \r
 import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.Marker;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
-import eu.etaxonomy.cdm.model.common.TermBase;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.TermBase;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 import eu.etaxonomy.cdm.persistence.dto.TermDto;\r
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
index ab2966c7307e9277c45d0cc873fd932f9c0f0043..e4f86da1431ead494f9a9bad7523d4a831bf765c 100644 (file)
@@ -65,7 +65,7 @@ public class TermDtoContentProvider extends TreeNodeContentProvider {
                        return vocabularyDto;
                    }
                    //parent is the vocabulary
-                   return new TermVocabularyDto(termDto.getVocabularyUuid(), null);
+                   return new TermVocabularyDto(termDto.getVocabularyUuid(), null, termDto.getTermType());
                }
                return null;
 
index d1afa13505b58910335cdd6f5f71d217585f88d5..1b08411f6d1fe883423b61c0c100924901ef9cdd 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.editor.definedterm;
 import java.util.UUID;\r
 \r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
 import eu.etaxonomy.taxeditor.model.CdmObjectTransfer;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
index 4439ac982d3b45e705999c2317f9358f0fd231a1..3581665a74841fd331847f07b1a99c0e0495e77b 100644 (file)
@@ -45,6 +45,12 @@ public class DefinedTermDragListenerE4 extends DragSourceAdapter {
                event.doit = true;
        }
 
+       @Override
+       public void dragFinished(DragSourceEvent event) {
+           super.dragFinished(event);
+           LocalSelectionTransfer.getTransfer().setSelection(null);
+       }
+
        @Override
        public void dragSetData(DragSourceEvent event) {
            IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
index cafc3f80cd8e9582f4e6340891b9af75d7372c05..fb77f256089cd34845f22fe1f737e40b40bc4a28 100644 (file)
@@ -39,6 +39,10 @@ import eu.etaxonomy.taxeditor.ui.EditViewerDropAdapter;
  */
 public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
 
+
+    public static final String TERM_TYPE_ERROR_TITLE = Messages.DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE;
+    public static final String TERM_TYPE_ERROR_MESSAGE = Messages.DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE;
+
     public static final String MOVE_FAILED = Messages.DefinedTermDropAdapterE4_MOVE_FAILED;
 
     private static final String MOVE_FAILED_MESSAGE = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE;
@@ -56,7 +60,7 @@ public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
 
        @Override
        public boolean performDrop(Object data) {
-           if(StoreUtil.promptCheckIsDirty(editor)){
+           if(StoreUtil.promptCheckIsDirty(editor) || data == null){
                return false;
            }
                AbstractTermDto target = (AbstractTermDto) getCurrentTarget();//can be vocab
@@ -80,9 +84,14 @@ public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
                         MOVE_FAILED_MESSAGE);
                 return false;
             }
-            // check if target is a child of the dropped term
             if(target instanceof TermDto){
                 TermDto parentTerm = (TermDto)target;
+                //check term type compatibility
+                if(droppedObject instanceof TermDto && !((TermDto) droppedObject).getTermType().equals(parentTerm.getTermType())){
+                    MessagingUtils.warningDialog(TERM_TYPE_ERROR_TITLE, this, TERM_TYPE_ERROR_MESSAGE);
+                    return false;
+                }
+
                 TermDto partOfDto = parentTerm.getPartOfDto();
                 while(partOfDto!=null){
                     if(partOfDto.equals(droppedObject)){
@@ -90,7 +99,6 @@ public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
                                 MOVE_FAILED_MESSAGE);
                         return false;
                     }
-                    partOfDto = partOfDto.getPartOfDto();
                 }
                 TermDto kindOfDto = parentTerm.getKindOfDto();
                 while(kindOfDto!=null){
@@ -99,7 +107,14 @@ public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
                                 MOVE_FAILED_MESSAGE);
                         return false;
                     }
-                    kindOfDto = kindOfDto.getKindOfDto();
+                }
+            }
+            else if(target instanceof TermVocabularyDto){
+                TermVocabularyDto vocDto = (TermVocabularyDto)target;
+                //check term type compatibility
+                if(droppedObject instanceof TermDto && !((TermDto) droppedObject).getTermType().equals(vocDto.getTermType())){
+                    MessagingUtils.warningDialog(TERM_TYPE_ERROR_TITLE, this, TERM_TYPE_ERROR_MESSAGE);
+                    return false;
                 }
             }
         }
@@ -110,7 +125,7 @@ public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
                        editor,
                        currentLocation);
                AbstractUtility.executeOperation(operation, sync);
-               // select the newly moved objects
+               // select the moved objects
                editor.getViewer().setSelection(new StructuredSelection(sourceTerms));
 
                return true;
index 1d332491029909e1c75415fb094a9053934839e0..62116852ed4d7ba0592f4dab9584848bac470a5e 100644 (file)
@@ -41,9 +41,9 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
@@ -155,7 +155,6 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IE4SavablePart, IContex
        public void init(TermEditorInput input){
            this.input = input;
 
-        input.initialiseVocabularies();
         viewer.setInput(input.getVocabularies());
         thisPart.setLabel(input.getName());
        }
@@ -216,7 +215,7 @@ IPartContentHasDetails, IPartContentHasSupplementalData, IE4SavablePart, IContex
            }
            else if(element instanceof TermVocabulary){
                TermVocabulary vocabulary = (TermVocabulary)element;
-               TermVocabularyDto vocabularyDto = new TermVocabularyDto(vocabulary.getUuid(), vocabulary.getRepresentations());
+               TermVocabularyDto vocabularyDto = new TermVocabularyDto(vocabulary.getUuid(), vocabulary.getRepresentations(), vocabulary.getTermType());
                viewer.update(vocabularyDto, null);
                changedTerms.add(vocabulary);
            }
index 1859e7cddb404b65df3b42f69d03465cb6e225b9..ffff2e297e93a31f27a5ad4e7d7ac06ef9f22b6f 100644 (file)
@@ -24,7 +24,7 @@ import org.eclipse.e4.ui.model.application.ui.menu.MMenu;
 import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
 import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -49,7 +49,7 @@ public class DefinedTermMenuE4 {
         if(CdmStore.isActive()){
 
             //add Feature and NamedArea to top level
-            addChildTermsToMenuManager(items, TermType.Feature);
+            addChildTermsToMenuManager(items, TermType.Feature, true);
             addChildTermsToMenuManager(items, TermType.NamedArea);
 
             MMenu otherMenu = MMenuFactory.INSTANCE.createMenu();
@@ -57,7 +57,6 @@ public class DefinedTermMenuE4 {
             items.add(otherMenu);
 
             items.add(MMenuFactory.INSTANCE.createMenuSeparator());
-//            createFeatureTreeMenuItem(menu);
 
             List<TermType> ttList = new ArrayList<TermType>(EnumSet.allOf(TermType.class));
             Collections.sort(ttList,new SortByTermTypeMessage());
@@ -77,12 +76,16 @@ public class DefinedTermMenuE4 {
        }
 
     private void addChildTermsToMenuManager(List<MMenuElement> items, TermType termType) {
+        addChildTermsToMenuManager(items, termType, false);
+    }
+
+    private void addChildTermsToMenuManager(List<MMenuElement> items, TermType termType, boolean skipChildren) {
 
         //FIXME : need a better way to find out if a term type can be editable (ticket 3853)
         if(termType.getEmptyDefinedTermBase() != null) {
             Set<TermType> children = termType.getGeneralizationOf();
             // term type has no children, so create menu item
-            if(children.isEmpty()) {
+            if(skipChildren || children.isEmpty()) {
                 items.add(createMenuItem(termType));
             }
             else{
@@ -117,55 +120,6 @@ public class DefinedTermMenuE4 {
         return menuItem;
        }
 
-       private void createFeatureTreeMenuItem() {
-
-//            String commandId = "eu.etaxonomy.taxeditor.workbench.commandparameter.partName";
-//
-//            MDirectMenuItem directMenuItem = MMenuFactory.INSTANCE.createDirectMenuItem();
-//            directMenuItem.
-//             MHandledMenuItem menuItem = MMenuFactory.INSTANCE.createHandledMenuItem();
-//             menuItem.setLabel(Messages.DefinedTermMenu_FEATURE_TREE);
-//             MCommand mCommand = MCommandsFactory.INSTANCE.createCommand();
-//             mCommand.setElementId(commandId);
-//             mCommand.getParameters().add(MCommandsFactory.INSTANCE.createCommandParameter().);
-//
-//             MCommandParameter commandParameter = MCommandsFactory.INSTANCE.createCommandParameter();
-//             commandParameter.setName("eu.etaxonomy.taxeditor.workbench.commandparameter.partName");
-//             commandParameter.set
-//
-//             //set params
-//             menuItem.getTransientData().put(commandId+"termTypeUuid", termType.getUuid());
-//
-//             menuItem.setCommand(mCommand);
-//             menu.getChildren().add(menuItem);
-//
-//
-//             Map<String, String> params = new HashMap<String, String>();
-//             params.put("eu.etaxonomy.taxeditor.workbench.commandparameter.partName", //$NON-NLS-1$
-//                             "eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor"); //$NON-NLS-1$
-//
-//        CommandContributionItemParameter p = new CommandContributionItemParameter(
-//                PlatformUI.getWorkbench(),
-//                "eu.etaxonomy.taxeditor.featuretree.commandContributionItemParameter", //$NON-NLS-1$
-//                "eu.etaxonomy.taxeditor.command.openPart", //$NON-NLS-1$
-//                params,
-//                null,
-//                null,
-//                null,
-//                Messages.DefinedTermMenu_FEATURE_TREE,
-//                "", //$NON-NLS-1$
-//                "", //$NON-NLS-1$
-//                SWT.PUSH,
-//                "", //$NON-NLS-1$
-//                true);
-//
-//
-//
-//        CommandContributionItem item = new CommandContributionItem(p);
-//        return item;
-
-       }
-
        private MHandledMenuItem createDefaultMenuItem(TermType termType) {
 
         MHandledMenuItem menuItem = MMenuFactory.INSTANCE.createHandledMenuItem();
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/handler/MoveDefinedTermHandler.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/handler/MoveDefinedTermHandler.java
new file mode 100644 (file)
index 0000000..a19a35d
--- /dev/null
@@ -0,0 +1,104 @@
+/**
+ * Copyright (C) 2009 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.editor.definedterm.e4.handler;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import javax.inject.Named;
+
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.model.location.Country;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
+import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation;
+import eu.etaxonomy.taxeditor.featuretree.TermChooseWizard;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
+/**
+ *
+ * @author pplitzner
+ * @date 06.03.2019
+ *
+ */
+public class MoveDefinedTermHandler {
+
+    @Execute
+    public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart,
+            @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+            @Named(IServiceConstants.ACTIVE_SHELL) Shell shell,
+            MHandledMenuItem menuItem,
+            UISynchronize sync) {
+        DefinedTermEditorE4 termEditor = (DefinedTermEditorE4) activePart.getObject();
+        if(StoreUtil.promptCheckIsDirty(termEditor)){
+            return;
+        }
+
+        TermDto selectedTerm = (TermDto) selection.getFirstElement();
+
+        TermChooseWizard wizard = new TermChooseWizard(selectedTerm.getTermType());
+        WizardDialog dialog = new WizardDialog(shell, wizard);
+
+        List<TermDto> selectedTerms = new ArrayList<>();
+        if (dialog.open() == IStatus.OK) {
+            selectedTerms = wizard.getSelectedTerms();
+        }
+
+        if(selectedTerms.size()!=1){
+            MessagingUtils.warningDialog("Move not possible", this, "You have to select one single target term");
+            return;
+        }
+
+        TermDto target = selectedTerms.get(0);
+        String label = menuItem.getLocalizedLabel();
+        IUndoContext undoContext = StoreUtil.getUndoContext();
+        Set<TermDto> movedTerms = Collections.singleton(selectedTerm);
+        AbstractPostOperation operation =
+                new MoveDefinedTermOperation(label,
+                        undoContext,
+                        target,
+                        movedTerms,
+                        termEditor);
+        AbstractUtility.executeOperation(operation, sync);
+
+    }
+
+    @CanExecute
+    public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+            MHandledMenuItem menuItem){
+        boolean canExecute = false;
+        Object firstElement = selection.getFirstElement();
+        canExecute = PreferencesUtil.getBooleanValue(IPreferenceKeys.SHOW_EXPERIMENTAL_FEATURES)
+                && selection.size()==1
+                && firstElement instanceof TermDto
+                // TODO temporary fix for #7933
+                && !((TermDto) firstElement).getVocabularyUuid().equals(Country.uuidCountryVocabulary);
+        menuItem.setVisible(canExecute);
+        return canExecute;
+    }
+
+}
index 465c47cd50bda3dbc71ad562f98e862c1e99220f..b2f698bde2a8c1da926b83989deb044da1131f16 100644 (file)
@@ -21,7 +21,7 @@ import org.eclipse.e4.ui.workbench.modeling.EModelService;
 import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
 import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;
 import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
index 7c4dec8ca971b99d93fb094c2b8568d17480231a..5719511193797bef00baaf62b24e23a56d703268 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.taxeditor.editor.definedterm.input;
 \r
 import java.util.List;\r
 \r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
 import eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput;\r
 \r
 /**\r
index 12787d46825f47df378870c01707225100b236c8..d0d626dbd77b016037509813b09c230e11801b8b 100644 (file)
@@ -15,11 +15,11 @@ import java.util.List;
 import java.util.Set;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.TermStore;
index 88fadb0da762b08f5553ae5620d80ebbbf0087d5..5d41a115c7265f0908dd753d73f6462a96bae76a 100644 (file)
@@ -15,11 +15,11 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;\r
 \r
 import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
-import eu.etaxonomy.cdm.model.common.OrderedTermBase;\r
-import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
-import eu.etaxonomy.cdm.model.common.TermType;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.OrderedTermBase;\r
+import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.TermType;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;\r
 import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;\r
@@ -71,7 +71,7 @@ public class CreateTermVocabularyOperation extends AbstractPostTaxonOperation {
                //FIXME: implement creation of term vocabularies\r
 //             definedEditorInput.getVocabularies().add(termVocabulary);\r
 \r
-               return postExecute(new TermVocabularyDto(termVocabulary.getUuid(), termVocabulary.getRepresentations()));\r
+               return postExecute(new TermVocabularyDto(termVocabulary.getUuid(), termVocabulary.getRepresentations(), termVocabulary.getTermType()));\r
        }\r
 \r
        @Override\r
index eb579cae5ff317aaa74f4b6b7ffadb960b8a3b48..ee40c976b1ff16776d0058bc897c3063314d843b 100644 (file)
@@ -37,6 +37,13 @@ public class MoveDefinedTermOperation extends AbstractPostTaxonOperation {
        private final AbstractTermDto targetTermOrVocabulary;// the target VOCABULARY or DefinedTerm we are moving these to\r
        private final int currentLocation;\r
 \r
+       public MoveDefinedTermOperation(String label,\r
+               IUndoContext undoContext,\r
+               AbstractTermDto target,\r
+               Collection<TermDto> sourceTerms,\r
+               IPostOperationEnabled postOperationEnabled) {\r
+           this(label, undoContext, target, sourceTerms, postOperationEnabled, ViewerDropAdapter.LOCATION_ON);\r
+       }\r
        public MoveDefinedTermOperation(String label,\r
                IUndoContext undoContext,\r
                AbstractTermDto target,\r
index 87ab0683d7a03bb3fd00ed853af861481f4652fd..6daec08604923280d2cfb9c51fa25af92507a11c 100644 (file)
@@ -39,4 +39,6 @@ public interface WorkbenchEventConstants {
 
     public static final String REFRESH_DETAILS = "REFRESH/DETAILS/DISTRIBUTION";
 
+    public static final String REMOVE_USER = "UPDATE/GROUP/REMOVEUSER";
+
 }
index bcb659649ab8b74395c498e5af31b7c3a846fbb1..64736e58869ede921eaec35d43a20773837bb605 100644 (file)
@@ -13,7 +13,8 @@ import java.util.Set;
 
 import org.eclipse.jface.wizard.Wizard;
 
-import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
 
 /**
  * <p>AvailableFeaturesWizard class.</p>
@@ -26,15 +27,18 @@ public class AvailableFeaturesWizard extends Wizard {
 
        private AvailableFeaturesWizardPage page;
 
-       private Set<Feature> additionalFeatures;
+       private Set<DefinedTermBase> additionalFeatures;
 
-       public AvailableFeaturesWizard(){
+    private TermType termType;
+
+       public AvailableFeaturesWizard(TermType termType){
+           this.termType = termType;
        }
 
        /** {@inheritDoc} */
        @Override
        public void addPages() {
-               page = new AvailableFeaturesWizardPage();
+               page = new AvailableFeaturesWizardPage(termType);
                addPage(page);
        }
 
@@ -45,7 +49,7 @@ public class AvailableFeaturesWizard extends Wizard {
                return additionalFeatures.size() > 0;
        }
 
-       public Set<Feature> getAdditionalFeatures() {
+       public Set<DefinedTermBase> getAdditionalFeatures() {
                return additionalFeatures;
        }
 }
index 674a0f8674d52524fc937f431c22843b273af98f..bdd7df8b798f9f0f048ad743b91a60e760c0a006 100644 (file)
@@ -22,9 +22,8 @@ import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
@@ -41,18 +40,20 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class AvailableFeaturesWizardPage extends WizardPage {
 
     private CheckBoxTreeComposite treeComposite;
+    private TermType termType;
 
-       protected AvailableFeaturesWizardPage() {
-               super("AvailableFeaturesWizardPage");
-               setTitle("Available Features");
-               setDescription("Please select features you want to add to the tree.");
+       protected AvailableFeaturesWizardPage(TermType termType) {
+               super("Available Terms Wizard Page");
+               this.termType = termType;
+               setTitle("Available Terms");
+               setDescription("Please select terms you want to add to the tree.");
        }
 
        /** {@inheritDoc} */
        @Override
        public void createControl(Composite parent) {
         treeComposite = new CheckBoxTreeComposite(parent, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
-        List<TermVocabularyDto> vocabularyDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(TermType.Feature);
+        List<TermVocabularyDto> vocabularyDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(termType);
         treeComposite.getViewer().setComparator(new DefinedTermSorter());
         treeComposite.getViewer().setInput(vocabularyDtos);
         GridLayoutFactory.fillDefaults().applyTo(treeComposite);
@@ -60,20 +61,20 @@ public class AvailableFeaturesWizardPage extends WizardPage {
                setControl(treeComposite);
        }
 
-       public Set<Feature> getSelectedFeatures() {
+       public Set<DefinedTermBase> getSelectedFeatures() {
 
         List<Object> checkedElements = Arrays.asList(treeComposite.getViewer().getCheckedElements());
         checkedElements = checkedElements.stream().filter(element->element instanceof TermDto).collect(Collectors.toList());
 
-               Set<Feature> features = new HashSet<Feature>();
+               Set<DefinedTermBase> terms = new HashSet<>();
 
                for(Object element : checkedElements){
                    if(element instanceof TermDto){
-                       DefinedTermBase feature = CdmStore.getService(ITermService.class).load(((TermDto) element).getUuid());
-                       features.add((Feature) feature);
+                       DefinedTermBase term = CdmStore.getService(ITermService.class).load(((TermDto) element).getUuid());
+                       terms.add(term);
                    }
                }
-               return features;
+               return terms;
        }
 
 }
index c57b43b3f9e67676739a19e83292185a524e8ac8..d8ac8d12985ed9180a7cbb22d4530538917f3853 100644 (file)
@@ -23,9 +23,9 @@ import org.eclipse.swt.dnd.ByteArrayTransfer;
 import org.eclipse.swt.dnd.TransferData;
 
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.model.description.Character;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -102,8 +102,8 @@ public class CharacterTransfer extends ByteArrayTransfer {
                         IFeatureNodeService featureNodeService = CdmStore.getService(IFeatureNodeService.class);
                         FeatureNode structure = featureNodeService.load(UUID.fromString(split[0]));
                         FeatureNode property = featureNodeService.load(UUID.fromString(split[1]));
-                        Representation structureRepresentation = structure.getFeature().getRepresentation(PreferencesUtil.getGlobalLanguage());
-                        Representation propertyRepresentation = property.getFeature().getRepresentation(PreferencesUtil.getGlobalLanguage());
+                        Representation structureRepresentation = structure.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
+                        Representation propertyRepresentation = property.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
                         String label = null;
                         String abbrevLabel = null;
                         if(structureRepresentation.getLabel()!=null && propertyRepresentation.getLabel()!=null){
index fd73c9af5800242c5302472abb5bcd7ce19c78ea..5d8a0f0856180032d115345af13de333577446fc 100644 (file)
@@ -12,7 +12,7 @@ package eu.etaxonomy.taxeditor.featuretree;
 import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.model.CdmObjectTransfer;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
index 64690fc347d526025a64bbef6ddfbf7632d59e7b..2b78666f0ec76417fefb6b3629dccec3eb06ceae 100644 (file)
@@ -14,8 +14,8 @@ import java.util.List;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 
 /**
  * <p>FeatureTreeContentProvider class.</p>
index a50d72818b1c384bc84e51f3b6fd4ad9bf2b4ef5..d97bb2e737388d14c5f9e67376e855cde30cee6e 100644 (file)
@@ -13,11 +13,11 @@ import java.util.ArrayList;
 
 import org.eclipse.jface.viewers.LabelProvider;
 
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 
 /**
@@ -34,13 +34,13 @@ public class FeatureTreeLabelProvider extends LabelProvider {
                if(element instanceof FeatureTree){
                        return ((FeatureTree) element).getTitleCache();
                }else if(element instanceof FeatureNode){
-                   Feature feature = ((FeatureNode) element).getFeature();
-                   if(feature!=null){
-                       Representation rep = feature.getRepresentation(PreferencesUtil.getGlobalLanguage());
+                   DefinedTermBase term = ((FeatureNode) element).getTerm();
+                   if(term!=null){
+                       Representation rep = term.getRepresentation(PreferencesUtil.getGlobalLanguage());
                        if (rep == null){
-                           rep = feature.getPreferredRepresentation(new ArrayList<Language>());
+                           rep = term.getPreferredRepresentation(new ArrayList<Language>());
                        }
-                       return rep != null? rep.getLabel() : feature.getTitleCache();
+                       return rep != null? rep.getLabel() : term.getTitleCache();
                    }
 
                }
index 40b8fa2098d278638d2536bca0b88a08201f1b93..b1dbdd68cf943f6ae2b60cbbc75acbb4d8418913 100644 (file)
@@ -6,7 +6,7 @@ package eu.etaxonomy.taxeditor.featuretree;
 import org.eclipse.core.expressions.PropertyTester;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 
 /**
  * Property tester used by the feature tree menu.
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermChooseWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermChooseWizard.java
new file mode 100644 (file)
index 0000000..c3c8e9c
--- /dev/null
@@ -0,0 +1,53 @@
+/**
+* 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.featuretree;
+
+import java.util.List;
+
+import org.eclipse.jface.wizard.Wizard;
+
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+
+/**
+ *
+ * @author pplitzner
+ * @since Feb 14, 2019
+ *
+ */
+public class TermChooseWizard extends Wizard {
+
+       private TermChooseWizardPage page;
+
+       private List<TermDto> selectedTerms;
+
+    private TermType termType;
+
+       public TermChooseWizard(TermType termType){
+           this.termType = termType;
+       }
+
+    public List<TermDto> getSelectedTerms() {
+        return selectedTerms;
+    }
+
+       @Override
+       public void addPages() {
+               page = new TermChooseWizardPage(termType);
+               addPage(page);
+       }
+
+       @Override
+       public boolean performFinish() {
+               selectedTerms = page.getSelectedTerms();
+               return selectedTerms.size() > 0;
+       }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermChooseWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermChooseWizardPage.java
new file mode 100644 (file)
index 0000000..2ae6984
--- /dev/null
@@ -0,0 +1,55 @@
+/**
+* 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.featuretree;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
+import eu.etaxonomy.taxeditor.view.search.facet.term.TermSearchController;
+
+/**
+ *
+ * @author pplitzner
+ * @since Feb 14, 2019
+ *
+ */
+public class TermChooseWizardPage extends WizardPage {
+
+    private TermSearchController controller;
+    private TermType termType;
+
+       protected TermChooseWizardPage(TermType termType) {
+               super("Term Choose Wizard");
+               setTitle("Term Choose Wizard");
+               setDescription("Please search and select the terms you want to add to the tree.");
+               this.termType = termType;
+       }
+
+       @Override
+       public void createControl(Composite parent) {
+        SearchComposite searchComposite = new SearchComposite(parent, SWT.NONE);
+        controller = new TermSearchController(searchComposite, termType);
+               setControl(searchComposite);
+       }
+
+       public List<TermDto> getSelectedTerms() {
+           List<TermDto> termDtos = new ArrayList<>();
+           controller.getSelectedSearchResults().forEach(result->termDtos.add(result.getContent()));
+           return termDtos;
+       }
+
+}
index 341878736e3a7b229d82bb83233b33c42f9936c7..6987524df7ed01912e290e50fe883547aae3c9a5 100644 (file)
@@ -13,7 +13,7 @@ import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.swt.dnd.DragSourceAdapter;
 import org.eclipse.swt.dnd.DragSourceEvent;
 
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
 
 public class FeatureNodeDragListener extends DragSourceAdapter {
index a3d7e788d7f8afcc9027cb3bdb53fa12e5bd8fe9..3c4257ce821f316ec3c6a399e47909cd8ff976eb 100644 (file)
@@ -20,13 +20,13 @@ import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerDropAdapter;
 import org.eclipse.swt.dnd.TransferData;
 
-import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.IHasTermType;
+import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
 import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermDropAdapterE4;
@@ -37,7 +37,6 @@ import eu.etaxonomy.taxeditor.featuretree.e4.operation.MoveFeatureOperation;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.TermVocabularySelectionDialog;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
@@ -109,6 +108,23 @@ public class FeatureTreeDropAdapter extends ViewerDropAdapter {
                        }
                }
                for (Object droppedObject : droppedObjects) {
+                   //check term type compatibility
+                   TermType targetType = target.getTermType();
+                   TermType droppedType = null;
+                   if(droppedObject instanceof IHasTermType){
+                       droppedType = ((IHasTermType)droppedObject).getTermType();
+                       if(droppedType!=null && !droppedType.equals(targetType)){
+                           MessagingUtils.warningDialog(DefinedTermDropAdapterE4.TERM_TYPE_ERROR_TITLE, this, DefinedTermDropAdapterE4.TERM_TYPE_ERROR_MESSAGE);
+                           continue;
+                       }
+                   }
+                   else if(droppedObject instanceof TermDto){
+                       droppedType = ((TermDto)droppedObject).getTermType();
+                       if(droppedType!=null && !droppedType.equals(targetType) && !droppedType.isKindOf(targetType)){
+                    MessagingUtils.warningDialog(DefinedTermDropAdapterE4.TERM_TYPE_ERROR_TITLE, this, DefinedTermDropAdapterE4.TERM_TYPE_ERROR_MESSAGE);
+                    continue;
+                }
+                   }
                    if(droppedObject instanceof FeatureNode){
                        FeatureNode droppedNode = (FeatureNode) droppedObject;
                        int currentPosition = target.getIndex(droppedNode);
@@ -121,22 +137,21 @@ public class FeatureTreeDropAdapter extends ViewerDropAdapter {
                    else if(droppedObject instanceof Feature){
                        Feature droppedFeature = (Feature) droppedObject;
                        AddFeatureOperation operation = new AddFeatureOperation(
-                               (Feature) CdmStore.getService(ITermService.class).load(droppedFeature.getUuid()),
+                               droppedFeature.getUuid(),
                                target, position, editor, editor);
                        AbstractUtility.executeOperation(operation, sync);
                    }
                    else if(droppedObject instanceof TermDto){
-                           TermDto termDto = (TermDto) droppedObject;
-                           DefinedTermBase term = CdmStore.getService(ITermService.class).load(termDto.getUuid());
-                           if(term.isInstanceOf(Feature.class)){
-                               AddFeatureOperation operation = new AddFeatureOperation(
-                                       (Feature)term,
-                                       target, position, editor, editor);
-                               AbstractUtility.executeOperation(operation, sync);
-                           }
-                           else{
-                               MessagingUtils.warningDialog(DefinedTermDropAdapterE4.MOVE_FAILED, this, Messages.FeatureTreeDropAdapter_ONLY_MOVE_FEATURES);
-                           }
+                       TermDto termDto = (TermDto) droppedObject;
+                       // check if target feature tree has the same type as the dropped term
+                       if(!termDto.getTermType().equals(targetType)){
+                           MessagingUtils.warningDialog(DefinedTermDropAdapterE4.TERM_TYPE_ERROR_TITLE, this, DefinedTermDropAdapterE4.TERM_TYPE_ERROR_MESSAGE);
+                           continue;
+                       }
+                       AddFeatureOperation operation = new AddFeatureOperation(
+                               termDto.getUuid(),
+                               target, position, editor, editor);
+                       AbstractUtility.executeOperation(operation, sync);
                    }
                    else if(droppedObject instanceof OntologyTermWrapper){
                        OntologyTermWrapper wrapper = (OntologyTermWrapper)droppedObject;
index 9ddd9abb02a4b43e118a1fe0727183f37e6eb5af..fef243c6baef4729bbc5419a1298ac0eeecdd3b4 100644 (file)
@@ -47,8 +47,8 @@ import org.eclipse.ui.IMemento;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
 import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
@@ -157,7 +157,7 @@ public class FeatureTreeEditor implements IFeatureTreeEditor, ISelectionChangedL
         if(parentNode!=null){
             FeatureNode copiedNode = (FeatureNode) ((IStructuredSelection)clipBoardSelection).getFirstElement();
 
-            AddFeatureOperation operation = new AddFeatureOperation(copiedNode.getFeature(), parentNode, this, this);
+            AddFeatureOperation operation = new AddFeatureOperation(copiedNode.getTerm().getUuid(), parentNode, this, this);
             AbstractUtility.executeOperation(operation, sync);
         }
 
index 16d17c669fe2922d9d67c4ad2aaedb4c8fee1dd2..c89e67f89a84736c786440b40dc7d6389dfbe253 100644 (file)
@@ -28,7 +28,9 @@ import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.swt.widgets.Tree;
 
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
 import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
 import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
@@ -43,9 +45,9 @@ import eu.etaxonomy.taxeditor.ui.dialog.selection.FeatureTreeSelectionDialog;
  * @since Jun 19, 2017
  *
  */
-public class FeatureTreeEditorComposite extends Composite{
+public class FeatureTreeEditorComposite <T extends DefinedTermBase> extends Composite{
 
-    private FeatureTree featureTree;
+    private FeatureTree<T> featureTree;
 
     private Label label_title;
     private Text text_title;
@@ -89,7 +91,25 @@ public class FeatureTreeEditorComposite extends Composite{
             ISelectionChangedListener viewerSelectionChangedListener,
             IDirtyMarkable dirtyMarkable,
             ModifyListener textModifyListener) {
+        init(label,
+                null,
+                dragSourceListener,
+                dropTargetListener,
+                null,
+                viewerSelectionChangedListener,
+                null,
+                dirtyMarkable,
+                textModifyListener);
+    }
+
+    public void init(String label, TermType termType,
+            DragSourceListener dragSourceListener,
+            DropTargetListener dropTargetListener,
+            ISelectionChangedListener viewerSelectionChangedListener,
+            IDirtyMarkable dirtyMarkable,
+            ModifyListener textModifyListener) {
         this.init(label,
+                termType,
                 dragSourceListener,
                 dropTargetListener,
                 null,
@@ -104,7 +124,9 @@ public class FeatureTreeEditorComposite extends Composite{
             ISelectionChangedListener viewerSelectionChangedListener,
             SelectionListener openFeatureTreeSelectionListener,
             ModifyListener textModifyListener) {
-        init(null, dragSourceListener,
+        init(null,
+                null,
+                dragSourceListener,
                 dropTargetListener,
                 transfers,
                 viewerSelectionChangedListener,
@@ -112,7 +134,9 @@ public class FeatureTreeEditorComposite extends Composite{
                 null,
                 textModifyListener);
     }
-    private void init(String label, DragSourceListener dragSourceListener,
+    private void init(String label,
+            TermType termType,
+            DragSourceListener dragSourceListener,
             DropTargetListener dropTargetListener,
             Transfer[] transfers,
             ISelectionChangedListener viewerSelectionChangedListener,
@@ -157,8 +181,8 @@ public class FeatureTreeEditorComposite extends Composite{
             btnOpenFeatureTree.addSelectionListener(new SelectionAdapter(){
                 @Override
                 public void widgetSelected(SelectionEvent e) {
-                    FeatureTree tree = FeatureTreeSelectionDialog.select(getDisplay().getActiveShell(),
-                            null);
+                    FeatureTree<T> tree = FeatureTreeSelectionDialog.select(getDisplay().getActiveShell(),
+                            null, termType);
                     if(tree!=null){
                         setSelectedTree(tree);
                         if(dirtyMarkable!=null){
@@ -170,7 +194,7 @@ public class FeatureTreeEditorComposite extends Composite{
         }
     }
 
-    public void setSelectedTree(FeatureTree featureTree) {
+    public void setSelectedTree(FeatureTree<T> featureTree) {
         this.featureTree = featureTree;
 
         viewer.setInput(featureTree);
@@ -185,7 +209,7 @@ public class FeatureTreeEditorComposite extends Composite{
         }
     }
 
-    public FeatureTree getFeatureTree() {
+    public FeatureTree<T> getFeatureTree() {
         return featureTree;
     }
 
index b9a2b3f1dfdbb79c2afc0ff472784f533bb8c816..3a36b5e20239ff98e5eb61e23b44a5287f800e1e 100644 (file)
@@ -24,8 +24,8 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.widgets.Shell;
 
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.featuretree.AvailableFeaturesWizard;
 import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
 import eu.etaxonomy.taxeditor.featuretree.e4.operation.AddFeatureOperation;
@@ -48,16 +48,26 @@ public class AddChildFeatureHandler {
         if (StoreUtil.promptCheckIsDirty(editor)) {
             return;
         }
+        FeatureNode parent = (FeatureNode)selection.getFirstElement();
 
-        AvailableFeaturesWizard wizard = new AvailableFeaturesWizard();
+//        TermChooseWizard wizard = new TermChooseWizard(parent.getTermType());
+//        WizardDialog dialog = new WizardDialog(shell, wizard);
+//
+//        if (dialog.open() == IStatus.OK) {
+//            List<TermDto> selectedTerms = wizard.getSelectedTerms();
+//            for (TermDto termDto: selectedTerms) {
+//                AddFeatureOperation operation = new AddFeatureOperation(termDto.getUuid(), parent, editor, editor);
+//                AbstractUtility.executeOperation(operation, sync);
+//            }
+//        }
+
+        AvailableFeaturesWizard wizard = new AvailableFeaturesWizard(parent.getTermType());
         WizardDialog dialog = new WizardDialog(shell, wizard);
 
-        Object next = selection.getFirstElement();
-        if (dialog.open() == IStatus.OK && next instanceof FeatureNode) {
-            FeatureNode parent = (FeatureNode)next;
-            Collection<Feature> additionalFeatures = wizard.getAdditionalFeatures();
-            for (Feature feature : additionalFeatures) {
-                AddFeatureOperation operation = new AddFeatureOperation(feature, parent, editor, editor);
+        if (dialog.open() == IStatus.OK) {
+            Collection<DefinedTermBase> additionalTerms = wizard.getAdditionalFeatures();
+            for (DefinedTermBase term : additionalTerms) {
+                AddFeatureOperation operation = new AddFeatureOperation(term.getUuid(), parent, editor, editor);
                 AbstractUtility.executeOperation(operation, sync);
             }
         }
index e8352192163e98aaee3474b69abbc21e824dc499..0a7a1b54a8790ff50102e2d598df4573235ee7a9 100644 (file)
@@ -24,8 +24,8 @@ import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.widgets.Shell;
 
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.featuretree.AvailableFeaturesWizard;
 import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
 import eu.etaxonomy.taxeditor.featuretree.e4.operation.AddFeatureOperation;
@@ -44,20 +44,29 @@ public class AddFeatureHandler {
             @Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
             @Named(IServiceConstants.ACTIVE_PART)MPart thisPart, UISynchronize sync) {
         IFeatureTreeEditor editor = ((IFeatureTreeEditor) thisPart.getObject());
-
         if (StoreUtil.promptCheckIsDirty(editor)) {
             return;
         }
+        FeatureTree tree = (FeatureTree) selection.getFirstElement();
+//
+//        TermChooseWizard wizard = new TermChooseWizard(tree.getTermType());
+//        WizardDialog dialog = new WizardDialog(shell, wizard);
+//
+//        if (dialog.open() == IStatus.OK) {
+//            List<TermDto> selectedTerms = wizard.getSelectedTerms();
+//            for (TermDto termDto: selectedTerms) {
+//                AddFeatureOperation operation = new AddFeatureOperation(termDto.getUuid(), tree.getRoot(), editor, editor);
+//                AbstractUtility.executeOperation(operation, sync);
+//            }
+//        }
 
-
-        AvailableFeaturesWizard wizard = new AvailableFeaturesWizard();
+        AvailableFeaturesWizard wizard = new AvailableFeaturesWizard(tree.getTermType());
         WizardDialog dialog = new WizardDialog(shell, wizard);
 
         if (dialog.open() == IStatus.OK) {
-            FeatureTree tree = (FeatureTree) selection.getFirstElement();
-            Collection<Feature> additionalFeatures = wizard.getAdditionalFeatures();
-            for (Feature feature : additionalFeatures) {
-                AddFeatureOperation operation = new AddFeatureOperation(feature, tree.getRoot(), editor, editor);
+            Collection<DefinedTermBase> additionalTerms = wizard.getAdditionalFeatures();
+            for (DefinedTermBase term : additionalTerms) {
+                AddFeatureOperation operation = new AddFeatureOperation(term.getUuid(), tree.getRoot(), editor, editor);
                 AbstractUtility.executeOperation(operation, sync);
             }
         }
index c3e04773c5aac286ccb0fd0ebb7efc50bd1b3e28..1a607cb3cf19d57f4a72a42ae1b006ced5165595 100644 (file)
@@ -11,7 +11,7 @@ import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
 
 public class CopyFeatureHandler {
index a520a32d80937043e9f48d1f4e0c17d86c056690..310d22d5bb583a4966fbdd4ff628c281c1ee5106 100644 (file)
@@ -17,7 +17,7 @@ import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
 
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
 import eu.etaxonomy.taxeditor.featuretree.e4.operation.CreateFeatureTreeOperation;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
index 6b21ebee5dc7b93d909dff7ae1a441fdc78c92d4..774e2f6b74c21a5d359e2359b9d801dbe534e767 100644 (file)
@@ -25,7 +25,7 @@ import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.progress.IProgressConstants;
 
 import eu.etaxonomy.cdm.io.descriptive.owl.out.OwlExportConfigurator;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
index ddcf2bead1f11ae381f6b398f3cb4f7745a71117..872f64f20dbc36ac4a9b517c1b55472cce316b17 100644 (file)
@@ -25,7 +25,7 @@ import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.progress.IProgressConstants;
 
 import eu.etaxonomy.cdm.io.descriptive.word.out.WordExportConfigurator;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
index 0c89cb52b4c0666e0e109ec698a44cca08241232..0044cf1a9ff7927c9735d8813b98b3306213483d 100644 (file)
@@ -13,7 +13,7 @@ import org.eclipse.jface.util.LocalSelectionTransfer;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
 
 public class PasteFeatureHandler {
index 612483587a4d400f335db72d062193db45336251..5d5a5c316077e734760e2fcc0085ba495c935c65 100644 (file)
@@ -19,7 +19,7 @@ import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
 import eu.etaxonomy.taxeditor.featuretree.e4.operation.RemoveFeatureOperation;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
index 2dc2d132b3b194dc46772809844d52fc99601b37..b99616fa5771b34555e42d473ac22f39891434cd 100644 (file)
@@ -19,7 +19,7 @@ import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.jface.viewers.IStructuredSelection;
 
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
 import eu.etaxonomy.taxeditor.featuretree.e4.operation.RemoveFeatureTreeOperation;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
index c9aec277197d767acc959a05bdfd8f4f88bda329..3f1b3d407adc50dfe7374c4c225d81b1a7b75604 100644 (file)
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.taxeditor.featuretree.e4.operation;
 
+import java.util.UUID;
+
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -16,7 +18,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
@@ -32,21 +34,23 @@ public class AddFeatureOperation extends AbstractPostOperation<Feature> {
 
     private FeatureNode node;
     private int position;
+    private UUID featureUuid;
 
-    public AddFeatureOperation(Feature element, FeatureNode node,
+    public AddFeatureOperation(UUID featureUuid, FeatureNode node,
             IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
-        this(element, node, 0, postOperationEnabled, cdmEntitySessionEnabled);
+        this(featureUuid, node, 0, postOperationEnabled, cdmEntitySessionEnabled);
     }
-    public AddFeatureOperation(Feature element, FeatureNode node, int position,
+    public AddFeatureOperation(UUID featureUuid, FeatureNode node, int position,
             IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
-        super("Add Feature", StoreUtil.getUndoContext(), element, postOperationEnabled, cdmEntitySessionEnabled);
+        super("Add Feature", StoreUtil.getUndoContext(), null, postOperationEnabled, cdmEntitySessionEnabled);
         this.node = node;
+        this.featureUuid = featureUuid;
         this.position = position;
     }
 
     @Override
     public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
-        UpdateResult updateResult = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(node.getUuid(), element.getUuid(), position);
+        UpdateResult updateResult = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(node.getUuid(), featureUuid, position);
         return postExecute(updateResult.getCdmEntity());
     }
 
index 9c1cbd3075797739a13c8111a57addca0a9f066e..64dd5929f75ee9816f9cf99757a56cc7cccc4b71 100644 (file)
@@ -17,9 +17,9 @@ import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
@@ -50,8 +50,7 @@ public class AddOntologyTermOperation extends AbstractPostOperation<FeatureNode>
     public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
         Feature feature = Feature.NewInstance(wrapper.getDescription(), wrapper.getLabel(), null);
         feature.setUri(URI.create(wrapper.getUri()));
-        vocabulary.addTerm(feature);
-        CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(target, feature);
+        CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(target.getUuid(), feature, vocabulary.getUuid());
 
         UpdateResult updateResult = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(target.getUuid(), element.getUuid());
         return postExecute(updateResult.getCdmEntity());
index 477b6d7ae84057a230294635f0d6c88733223a10..5a9d9cf7eb12e9847af6a256966fd43650089dfb 100644 (file)
@@ -14,7 +14,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
index 756d5a645af04874294fccaf5f13821254c9c772..fc744128db573de2a9e57f1fdce3af69c5f35bbe 100644 (file)
@@ -17,7 +17,7 @@ import org.eclipse.swt.dnd.DND;
 
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
@@ -57,7 +57,7 @@ public class MoveFeatureOperation extends AbstractPostOperation<FeatureNode> {
         }
         //copy operation
         else if(currentOperation==DND.DROP_COPY){
-            updateResult = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(target.getUuid(), droppedNode.getFeature().getUuid());
+            updateResult = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(target.getUuid(), droppedNode.getTerm().getUuid());
         }
         if(updateResult!=null){
             return postExecute(updateResult.getCdmEntity());
index 07c568d577fb07f580be193fcf3604c30e57253b..e465c01196bef330fd33b6f48903b1b629b75cf1 100644 (file)
@@ -16,7 +16,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.api.service.DeleteResult;
 import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
 import eu.etaxonomy.cdm.api.service.config.FeatureNodeDeletionConfigurator;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
index b43b40482069d9fb4e9d64be1cfb9e961cbc5f11..286d8e577462c5f0378fa44d668909ae434bf57a 100644 (file)
@@ -14,7 +14,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
index a1deba1d378c9acb5f270cf8958cc40d2c7fc141..a73b51d2e49684bb5664e70fca512dfc4fbadbe0 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.handler;
 import org.eclipse.e4.core.di.annotations.Execute;
 import org.eclipse.jface.wizard.WizardDialog;
 
-import eu.etaxonomy.taxeditor.databaseAdmin.wizard.DatabaseRepairWizard;
+import eu.etaxonomy.taxeditor.databaseAdmin.wizard.DatabaseRepairUpdateCachesWizard;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 
 
@@ -28,7 +28,7 @@ public class OpenDatabaseRepairWizardHandler{
      */
     @Execute
     public Object execute(){
-        DatabaseRepairWizard databaseRepairWizard = new DatabaseRepairWizard();
+        DatabaseRepairUpdateCachesWizard databaseRepairWizard = new DatabaseRepairUpdateCachesWizard();
         WizardDialog dialog = new WizardDialog(AbstractUtility.getShell(),
                 databaseRepairWizard);
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/OpenUpdateSortIndicesHandler.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/OpenUpdateSortIndicesHandler.java
new file mode 100755 (executable)
index 0000000..e1a18c5
--- /dev/null
@@ -0,0 +1,36 @@
+/**
+* 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.handler;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.jface.wizard.WizardDialog;
+
+import eu.etaxonomy.taxeditor.databaseAdmin.wizard.DatabaseRepairUpdateSortIndicesWizard;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+
+/**
+ * @author k.luther
+ * @since 05.03.2019
+ *
+ */
+public class OpenUpdateSortIndicesHandler {
+
+    @Execute
+    public Object execute(){
+        DatabaseRepairUpdateSortIndicesWizard databaseRepairWizard = new DatabaseRepairUpdateSortIndicesWizard();
+        WizardDialog dialog = new WizardDialog(AbstractUtility.getShell(),
+                databaseRepairWizard);
+
+        dialog.open();
+
+        return null;
+    }
+
+
+}
index 55f8f14de400629f43492330321fa2d642215f90..5f8f0cd89086c85ca7dd1f646b604670e1694d50 100644 (file)
@@ -38,8 +38,6 @@ import eu.etaxonomy.cdm.io.distribution.excelupdate.ExcelDistributionUpdateConfi
 import eu.etaxonomy.cdm.io.dwca.in.DwcaImportConfigurator;
 import eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator;
 import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
-import eu.etaxonomy.cdm.io.operation.config.CacheUpdaterConfigurator;
-import eu.etaxonomy.cdm.io.operation.config.SortIndexUpdaterConfigurator;
 import eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator;
 import eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator;
 import eu.etaxonomy.cdm.io.service.IIOService;
@@ -523,13 +521,7 @@ public class ImportManager extends AbstractIOManager<IImportConfigurator> implem
                 monitor.beginTask("Updating data", IProgressMonitor.UNKNOWN);
                 IIOService ioService = CdmApplicationState.getIOService();
                 ImportResult importResult = null;
-                if (configurator instanceof SortIndexUpdaterConfigurator){
-                    SortIndexUpdaterConfigurator config = (SortIndexUpdaterConfigurator)configurator;
-                    importResult =ioService.updateSortIndex(config);
-                } else if (configurator instanceof CacheUpdaterConfigurator){
-                    CacheUpdaterConfigurator config = (CacheUpdaterConfigurator) configurator;
-                    importResult = ioService.updateCaches(config);
-                } else if (configurator instanceof ExcelDistributionUpdateConfigurator){
+                if (configurator instanceof ExcelDistributionUpdateConfigurator){
                     ExcelDistributionUpdateConfigurator config = (ExcelDistributionUpdateConfigurator) configurator;
                     importResult =ioService.updateDistributionData(config);
                 }
index c59ef260bb6b78b4ef7230e909999e37d946884d..ec26adae1ab9a032fe0be441903c879980c9f48b 100644 (file)
@@ -23,9 +23,9 @@ import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
index 3c048ce700c626127b93fadfab93358d65e498f7..f0c2ce4d13c3ea30da1dc9e83a52a727459b6da0 100644 (file)
@@ -21,9 +21,9 @@ import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
index 329fcc56ed7ed4d2b08117b8e1bd942c127fc659..103ba12d48161aa5633e94933a26cb2ad5e9ccba 100644 (file)
@@ -28,7 +28,7 @@ public class Messages extends NLS {
 
 
     public static String LanguageMenuPreferences_configure;
-
+    public static String CommonNameLanguageMenuPreferences_configure;
 
     public static String LanguageMenuPreferences_warning;
 
@@ -61,6 +61,8 @@ public class Messages extends NLS {
     public static String DatabaseRepairPage_toolTip_specimen;
     public static String DatabaseRepairPage_TeamOrPerson;
     public static String DatabaseRepairPage_toolTip_teamOrPerson;
+    public static String DatabaseRepairPage_description;
+    public static String DatabaseRepairPage_description_sortIndex;
 
     public static String LoginDialog_CANCEL_MESSAGE;
     public static String LoginDialog_LOGIN;
@@ -149,6 +151,12 @@ public class Messages extends NLS {
     public static String DefaultFeatureTreePreferenecs_1;
 
 
+    public static String DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE;
+
+
+    public static String DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE;
+
+
     public static String DefinedTermEditorE4_SAVE_MESSAGE;
     public static String DefinedTermEditorE4_SAVE_TITLE;
     public static String DefinedTermMenu_FEATURE_TREE;
@@ -236,6 +244,7 @@ public class Messages extends NLS {
        public static String RemotingLoginDialog_JOB_SERVER_LAUNCH;
        public static String RemotingLoginDialog_STARTING_MGD_SERVER;
        public static String RemotingLoginDialog_TASK_LAUNCHING_SERVER;
+       public static String RemotingLoginDialog_MISSING_PERMISSION;
 
 
     public static String SearchManager_LARGE_RESULT_EXPECTED;
@@ -515,6 +524,13 @@ public class Messages extends NLS {
     public static String SearchDialogPreferences_3;
     public static String SearchDialogPreferences_4;
     public static String TypeDesignationPreferences_typeDesignationsToAllNames;
+    public static String TypeDesignationSection_ADD_TYPE;
+    public static String TypeDesignationSection_CREATE_DUPLICATE;
+    public static String TypeDesignationSection_DUPLICATE_FAILED;
+    public static String TypeDesignationSection_NO_TYPES_YET;
+    public static String TypeDesignationSection_TYPE_DESIGNATIONS;
+
+
     public static String TaxonNodeWizardPage_edit;
 
 
@@ -533,6 +549,12 @@ public class Messages extends NLS {
     public static String NamedAreaTypeMenuPreferences;
 
 
+    public static String NameTypeDesignationElement_4;
+
+
+    public static String NameTypeDesignationElement_5;
+
+
     public static String NameTypeDesignationStatusMenuPreferences_configure;
     public static String GeneralPreference_open_common_name_area_selection;
 
index 922d315b8e9dc226309ecd3d2fa139e739bd8e1f..d5c5430b44a587f8a4e2d0ed884a7a5e6166ed10 100644 (file)
@@ -15,6 +15,7 @@ LanguageEditorPreferencePage_PleaseRestart=Please Restart
 LanguageEditorPreferencePage_RestartRequired=After changing the default language, a restart is required,\nin order for the new settings to take effect.
 LanguageMenuPreferences_configure=Choose available languages
 LanguageMenuPreferences_warning=\ - Warning: no description - not shown in menus
+CommonNameLanguageMenuPreferences_configure=Choose available languages for common names
 LanguageRepresentationPreferencePage_global=Choose the global language that will be used throughout the editor to get representations in
 LanguageRepresentationPreferencePage_enable=Enable Multiple Language Editing Capability
 ListComponent_ADD_PROVIDER=Add Provider
@@ -44,8 +45,10 @@ DatabaseRepairPage_Specimen=Specimen
 DatabaseRepairPage_toolTip_specimen=Caches of all Derived Units und Field Units are recalculated.
 DatabaseRepairPage_TeamOrPerson=Persons and Teams
 DatabaseRepairPage_toolTip_teamOrPerson=Caches of all Persons and Teams are recalculated.
-
+DatabaseRepairPage_description=Update caches of selected types
+DatabaseRepairPage_description_sortIndex=Update sort indices of selected trees
 UIPreferences_expand=Expand sections when data are available in Details View. This might make the Editor slow.
+
 UpdateHandler_CHECK_UPDATE_JOB=Check Update Job
 UpdateHandler_INSTALL_JOB=Install Update Job
 UpdateHandler_NO_UPDATE_MESSAGE=No updates for the current installation have been found.
@@ -140,6 +143,7 @@ RemotingLoginDialog_GENERATING_CONFIG_FILE=Generating datasources config file fo
 RemotingLoginDialog_JOB_SERVER_LAUNCH=Managed CDM Server Launch
 RemotingLoginDialog_STARTING_MGD_SERVER=Starting Managed CDM Server. This may take a while.
 RemotingLoginDialog_TASK_LAUNCHING_SERVER=Launching Managed CDM Server
+RemotingLoginDialog_MISSING_PERMISSION=Your credentials are valid but you are not permitted to use the TaxEditor with the selected data source
 
 EditPasswordElement_PLEASE_CREATE_OR_SAVE_USER=Please create or save user '%s' before changing password
 EditPasswordElement_USERNAME_DOES_NOT_EXIST=Username does not exist
@@ -166,6 +170,8 @@ DefinedTermDropAdapterE4_MOVE_DESCRIPTIONS=Move Terms
 DefinedTermDropAdapterE4_MOVE_FAILED=Move failed
 DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE=Cannot move term onto itself or its children
 DefinedTermDropAdapterE4_MOVE_FAILED_SAVE_MESSAGE=Moving the term failed. Try saving before.
+DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE=The term type of the dropped term does not match the target term type.
+DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE=Term types do not match
 
 DebugPreferences_0=Show up widget is disposed error messages
 DebugPreferences_1=Disable services api timestamp check
@@ -428,6 +434,8 @@ NameDetailsViewConfiguration_description=Configure the simple name details view.
 NameDetailsViewConfiguration_description_not_available=The configuration of the name details view is not possible in local preferences. \nIf you want to change the configuration, please contact an administrator.
 NameRelationshipTypeMenuPreferences_relationshipTypes=Configure name relationship types
 NameRelationshipWizardPage_description=Choose namerelationship type and related name
+NameTypeDesignationElement_4=Citation will be removed
+NameTypeDesignationElement_5=When changing the type from lectotype to a non lectotype the lectotype reference will be removed.\nDo you want to continue?
 NameTypeDesignationStatusMenuPreferences_configure=Configure name type designation status
 NavigatorOrderEnum_1=Alphabetical Order
 NavigatorOrderEnum_3=Natural Order
@@ -460,6 +468,11 @@ MediaPreferences_preview=Show Preview in Media View (Tree View)
 ToggleableText_ToolTip_closed=Cache is created automatically from atomized data, cache protected against manual entries
 ToggleableText_ToolTip_open=Cache can be edited manually, editing the atomized data has no effect on the cache (not recommended)
 TypeDesignationPreferences_typeDesignationsToAllNames=Add type designations to all names in a homotypical group
+TypeDesignationSection_ADD_TYPE=Add a type designation
+TypeDesignationSection_CREATE_DUPLICATE=Create type duplicate
+TypeDesignationSection_DUPLICATE_FAILED=Duplicating type failed
+TypeDesignationSection_NO_TYPES_YET=No type designations yet.
+TypeDesignationSection_TYPE_DESIGNATIONS=Type Designations
 
 FeatureTreeDropAdapter_CHOOSE_VOC=Choose vocabulary for import
 FeatureTreeDropAdapter_IMPORT_NOT_POSSIBLE=Import not possible
@@ -474,4 +487,4 @@ TermOrder_idInVoc=ID in Vocabulary
 TermOrder_Title=Title
 TermOrder_natural=Natural
 
-ChecklistEditorGeneralPreference_Configure_area_order=Order of Areas
\ No newline at end of file
+ChecklistEditorGeneralPreference_Configure_area_order=Order of Areas
index 0c6cdfc0446e26c2f6656fe333b0e23cb2f7129b..92f4f30ff4579a8e1211dde7d923ae2e335ee3cd 100644 (file)
@@ -15,6 +15,7 @@ LanguageEditorPreferencePage_PleaseRestart=Bitte neu starten
 LanguageEditorPreferencePage_RestartRequired=Nach dem Wechsel der Standardsprache ist ein Neustart erforderlich.
 LanguageMenuPreferences_configure=Auswahl der zur Verf\u00FCgung stehenden Sprachen
 LanguageMenuPreferences_warning=\ - Warnung: keine Beschreibung - wird nicht in den Menüs angezeigt
+CommonNameLanguageMenuPreferences_configure=Auswahl der für Trivialnamen zur Verf\u00FCgung stehenden Sprachen
 LanguageRepresentationPreferencePage_global=Wählen Sie die Sprache, für die im gesamten Editor die Repräsentationen ausgewählt werden soll (sofern vorhanden).
 LanguageRepresentationPreferencePage_enable=Aktiviere mehrsprachige Editierbarkeit
 ListComponent_ADD_PROVIDER=Provider hinzufügen
@@ -27,7 +28,6 @@ OrderPreferences_Restore=Stelle den letzten Navigator Status wieder her
 OrderPreferences_Sorting=Sortierung
 OrderPreferencePage_NewNavigatorWindowRequired=Änderungen werden erst nach dem erneuten Ã–ffnen des Navigators sichtbar.
 OrderPreferencePage_PleaseReopenNavigator=Um die Ã„nderungen zu sehen, müssen Sie den Navigator schließen und neu Ã¶ffnen.
-
 DatabaseRepairPage_chooseParameter=Bitte wählen Sie, für welche Bäume der SortIndex neu berechnet werden soll.
 DatabaseRepairPage_updateTaxonNodes=Taxonomischer Baum
 DatabaseRepairPage_toolTip_taxonNode=Die Sortier Indizes des Taxonomischen Baums werden aktualisiert.
@@ -45,6 +45,8 @@ DatabaseRepairPage_Specimen=Specimen
 DatabaseRepairPage_toolTip_specimen=Die Caches aller Derived Units und Field Units werden aktualisiert.
 DatabaseRepairPage_TeamOrPerson=Personen und Teams
 DatabaseRepairPage_toolTip_teamOrPerson=Die Caches aller Personen und Teams werden aktualisiert.
+DatabaseRepairPage_description=Die Caches aller ausgewählten Datentypen werden aktualisiert
+DatabaseRepairPage_description_sortIndex=Die Sortier Indizes aller ausgewählten Bäume werden aktualisiert.
 
 UIPreferences_expand=Klappe Abschnitte im Details View auf, wenn Daten vorhanden sind
 UpdateHandler_CHECK_UPDATE_JOB=Check Update Job
@@ -141,6 +143,7 @@ RemotingLoginDialog_GENERATING_CONFIG_FILE=Generiere Config-Datei f
 RemotingLoginDialog_JOB_SERVER_LAUNCH=Starte internen CDM-Server
 RemotingLoginDialog_STARTING_MGD_SERVER=Starte internen CDM-Server. Dies kann eine Weile dauern.
 RemotingLoginDialog_TASK_LAUNCHING_SERVER=Starte internen CDM-Server
+RemotingLoginDialog_MISSING_PERMISSION="Die Anmeldedaten sind korrekt, aber Sie haben nicht die Rechte auf der ausgewählten Instanz mit dem Editor zu arbeiten"
 
 EditPasswordElement_PLEASE_CREATE_OR_SAVE_USER=Bitte erstellen oder speichern sie den Nutzer '%s', bevor Sie das Kennwort Ã¤ndern
 EditPasswordElement_USERNAME_DOES_NOT_EXIST=Nutzername existiert nicht
@@ -167,6 +170,8 @@ DefinedTermDropAdapterE4_MOVE_DESCRIPTIONS=Terme verschieben
 DefinedTermDropAdapterE4_MOVE_FAILED=Verschieben fehlgeschlagen
 DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE=Terme können nicht auf sich selbst oder ihre Kindterme verschoben werden
 DefinedTermDropAdapterE4_MOVE_FAILED_SAVE_MESSAGE=Das Verschieben des Terms ist fehlgeschlagen. Versuchen Sie vorher zu speichern.
+DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE=Der Termtyp des verschobenen Terms stimmt nicht mit dem des Ziels Ã¼berein.
+DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE=Termtypen stimmen nicht Ã¼berein
 
 DebugPreferences_0=\"Widget is disposed\" Fehler Meldungen anzeigen
 DebugPreferences_1=Deaktiviere die Ãœberprüfung des API Timestamp
@@ -429,6 +434,8 @@ NameDetailsViewConfiguration_description=Konfiguration eines vereinfachten Namen
 NameDetailsViewConfiguration_description_not_available=Die Konfiguration des Details Views kann nur Ã¼ber die Admin Präferenzen geändert werden, da kein lokales Ãœberschreiben erlaubt ist. \nWenn Sie dennoch Ã„nderungen vornehmen möchten, wenden Sie sich an einen Administrator.
 NameRelationshipTypeMenuPreferences_relationshipTypes=Auswahl der zur Verf\u00FCgung stehenden Namensrelationstypen
 NameRelationshipWizardPage_description=Auswahl des Relationstyps und des in Beziehung stehenden Namens 
+NameTypeDesignationElement_4=Referenz wird entfernt
+NameTypeDesignationElement_5=Beim Ã„ndern des Typs von Lectotype zu einem anderen Typ wird die Lectotyp-Referenze entfernt.\nWollen Sie fortfahren?
 NameTypeDesignationStatusMenuPreferences_configure=Auswahl der zur Verf\u00FCgung stehenden Nametypedesignation Status
 NavigatorOrderEnum_1=alphabetisch
 NavigatorOrderEnum_3=natürlich
@@ -444,8 +451,8 @@ SpecimenOrObservationPreferences_0=Die serverseitigen Einstellungen erlauben kei
 SpecimenOrObservationPreferences_1=Editieren der Einstellungen zur Darstellung von Specimen und Beobachtungen.
 SpecimenTypeDesignationStatusMenuPreferences_configure=Auswahl der zur Verf\u00FCgung stehenden Specimentypedesignation Status
 StageMenuPreferences_choose=Auswahl der zur Verf\u00FCgung stehenden Stadien
-DatabasePreferncesPage_Show_IOMenu=Import/Export Menü Einträge anzeigen
-DatabasePreferncesPage_Show_Specimen=Specimenbezogene Views und Menüeinträge anzeigen
+DatabasePreferncesPage_Show_IOMenu=Import/Export Men\u00FC Einträge anzeigen
+DatabasePreferncesPage_Show_Specimen=Specimenbezogene Views und Men\u00FCeinträge anzeigen
 DatabasePreferncesPage_Show_MediaView=Media View anzeigen
 DatabasePreferncesPage_Show_ChecklistPerspective=Checklist Perspektive als Default Perspektive anzeigen
 DatabasePreferncesPage_Show_TaxonNodeWizard=Wizard zum Editieren der Taxon Knoten anzeigen
@@ -461,6 +468,11 @@ MediaPreferences_preview=Vorschau anzeigen
 ToggleableText_ToolTip_closed=Der Cache wird automatisch aus den atomisierten Daten erstellt und ist gegen manuelle Eingabe geschützt
 ToggleableText_ToolTip_open=Der Cache kann manuell bearbeitet werden, Ã„nderungen an den atomisierten Daten haben keinen Einfluß auf den Cache (nicht empfohlen)
 TypeDesignationPreferences_typeDesignationsToAllNames=Füge allen Namen einer Homotypischen Gruppe, Type Designations zu
+TypeDesignationSection_ADD_TYPE=Typbestimmung hinzufügen
+TypeDesignationSection_CREATE_DUPLICATE=Typusdublette erzeugen
+TypeDesignationSection_DUPLICATE_FAILED=Dubletten-Erzeugung fehlgeschlagen
+TypeDesignationSection_NO_TYPES_YET=Noch keine Typbestimmungen vorhanden.
+TypeDesignationSection_TYPE_DESIGNATIONS=Typbestimmungen
 
 FeatureTreeDropAdapter_CHOOSE_VOC=Vokabular für den Import wählen
 FeatureTreeDropAdapter_IMPORT_NOT_POSSIBLE=Import nicht möglich
index 85c65e7c81230e4ad37d331d6a342be54edc156e..868d3f34666a083cc6abb48f3277c0c4ceb5dd6e 100644 (file)
@@ -61,12 +61,18 @@ import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.service.IProgressMonitorService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.io.common.ExportDataWrapper;
 import eu.etaxonomy.cdm.io.common.ExportResult;
 import eu.etaxonomy.cdm.io.common.ExportResultType;
 import eu.etaxonomy.cdm.io.common.ExportType;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
 import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IFeedbackGenerator;
 import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
@@ -635,7 +641,7 @@ public abstract class AbstractUtility {
                     // collect reports
 //                         for(String report : remotingMonitor.getResult()) {
                     createResult(label, showResult, remotingMonitor);
-
+                    updateNameEditors(remotingMonitor);
                     return Status.OK_STATUS;
                 }
 
@@ -665,14 +671,19 @@ public abstract class AbstractUtility {
         }
 
 
-    private static void createResult(final String label, final boolean showResult,
+    public static void createResult(String label, boolean showResult,
             IRemotingProgressMonitor remotingMonitor) {
         final StringBuilder reportSb = new StringBuilder();
         if (remotingMonitor.getResult() instanceof ExportResult) {
             reportSb.append(((ExportResult)remotingMonitor.getResult()).createReport());
         }else if (remotingMonitor.getResult() instanceof UpdateResult){
             if (((UpdateResult)remotingMonitor.getResult()).isOk()){
-                reportSb.append("Update successful. \n"+"Updated Objects: " + ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects().size());
+                int count = ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects().size();
+                if (count == 0){
+                    count = ((UpdateResult)remotingMonitor.getResult()).getUpdatedCdmIds().size();
+                }
+
+                reportSb.append("Update successful. \n"+"Updated Objects: " +count);
             }
             if (!((UpdateResult)remotingMonitor.getResult()).getExceptions().isEmpty()){
                 reportSb.append(((UpdateResult)remotingMonitor.getResult()).getExceptions().toString());
@@ -784,4 +795,23 @@ public abstract class AbstractUtility {
             }
         }
     }
+    public static void updateNameEditors(IRemotingProgressMonitor remotingMonitor){
+        List<Taxon> taxaToUpdate = new ArrayList();
+        for (CdmBase object: ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects()){
+            Taxon taxon = null;
+            TaxonNode node = null;
+            if (object instanceof Taxon){
+                taxon = HibernateProxyHelper.deproxy(object, Taxon.class);
+
+
+            }else if (object instanceof Synonym){
+                Synonym syn = HibernateProxyHelper.deproxy(object, Synonym.class);
+                taxon = syn.getAcceptedTaxon();
+            }
+            taxaToUpdate.add(taxon);
+        }
+        EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, taxaToUpdate);
+    }
+
+
 }
index 4dba145ff7a3b65997625cf5c0ad677d3095c13e..1452f238707183e6b199550db3074e9ac5ddb55d 100644 (file)
@@ -47,6 +47,7 @@ public class ColorResources {
        }
 
        protected void initializeColorRegistry(ColorRegistry registry) {
+           registerColor(registry, Resources.COLOR_SWT_BG_DEFAULT, 214, 214, 214);
            registerColor(registry, Resources.COLOR_MATRIX_SUMMARY_BG, 255, 255, 153);
            registerColor(registry, Resources.COLOR_BULK_EDITOR_CANDIDATE, 243, 240, 165);
            registerColor(registry, Resources.COLOR_BULK_EDITOR_TARGET, 135, 255, 135);
index 9abcbb67d8c649259f56e52d9856625842f12f67..9be427d3e3cda2361fc88234b559acb3e712dba9 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.taxeditor.model;
 
 import java.util.Comparator;
 
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
index b54b5d8a4717fd65673a33a37caa5708c68ba1b7..5ca969487d7792762172d402ed73e761cc0287be 100644 (file)
@@ -32,10 +32,10 @@ import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.LanguageStringBase;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
 import eu.etaxonomy.cdm.model.common.RelationshipBase;
 import eu.etaxonomy.cdm.model.common.RelationshipTermBase;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.description.CategoricalData;
@@ -281,7 +281,7 @@ public class DescriptionHelper {
                }
                return resultString;
        }
-       
+
        private static String getCache(GatheringEvent gatheringEvent){
                String ALTITUDE_PREFIX = "alt. ";
                final String METER = "m";
@@ -292,11 +292,11 @@ public class DescriptionHelper {
                AgentBase<?> collector = CdmBase.deproxy(gatheringEvent.getCollector());
                String collectorStr = collector == null? null : collector.getTitleCache();
                result = CdmUtils.concat(", ", result, collectorStr);
-               
+
                //gathering period
                TimePeriod gatheringPeriod = gatheringEvent.getTimeperiod();
                result = CdmUtils.concat(", ", result, (gatheringPeriod == null? null : gatheringPeriod.toString()));
-               
+
                //country
                String strCountry = null;
                NamedArea country = gatheringEvent.getCountry();
@@ -530,13 +530,13 @@ public class DescriptionHelper {
         */
        public static String getFeatureNodeContainerText(FeatureNodeContainer element) {
                String result = null;
-               if(element.getFeatureNode() != null && element.getFeatureNode().getFeature() != null){
-                       result = element.getFeatureNode().getFeature().getLabel(CdmStore.getDefaultLanguage());
+               if(element.getFeatureNode() != null && element.getFeatureNode().getTerm() != null){
+                       result = element.getFeatureNode().getTerm().getLabel(CdmStore.getDefaultLanguage());
                } else{
                        return "No label set";
                }
                if (result == null){
-                       result = element.getFeatureNode().getFeature().getLabel();
+                       result = element.getFeatureNode().getTerm().getLabel();
                }
                return result;
        }
@@ -760,11 +760,11 @@ public class DescriptionHelper {
                        return element.toString();
                }
        }
-       
+
        private static boolean isNotBlank(String str){
                return StringUtils.isNotBlank(str);
        }
-       
+
        private static boolean isBlank(String str){
                return StringUtils.isBlank(str);
        }
index a38ddd7fb0d85370c9edaffa8d8a9550d7b962fc..6a5316169bf69b911df49d55f84a375fcf721727 100644 (file)
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 
 /**
@@ -41,7 +41,7 @@ public class FeatureNodeContainer{
 
 
 
-       private FeatureNode featureNode;
+       private FeatureNode<Feature> featureNode;
        private List<FeatureNodeContainer> children = new ArrayList<FeatureNodeContainer>();
        private List<DescriptionElementBase> descriptionElements = new ArrayList<DescriptionElementBase>();
 
@@ -64,11 +64,11 @@ public class FeatureNodeContainer{
         * @param description
         * @return
         */
-       protected void findLeaves(FeatureNode featureNode) {
+       protected void findLeaves(FeatureNode<Feature> featureNode) {
                if(featureNode.isLeaf()){
                        buildLeaf(featureNode);
                }else{
-                       for(FeatureNode childNode : featureNode.getChildNodes()){
+                       for(FeatureNode<Feature> childNode : featureNode.getChildNodes()){
                                findLeaves(childNode);
                        }
                }
@@ -80,12 +80,12 @@ public class FeatureNodeContainer{
         * @param description
         * @return
         */
-       private void buildLeaf(FeatureNode featureNode){
-               if(featureNode.getFeature() == null){
+       private void buildLeaf(FeatureNode<Feature> featureNode){
+               if(featureNode.getTerm() == null){
                        throw new IllegalArgumentException("The given feature node does not have a feature.");
                }
 
-               Feature feature = (Feature) HibernateProxyHelper.deproxy(featureNode.getFeature());
+               Feature feature = HibernateProxyHelper.deproxy(featureNode.getTerm());
 
                // get feature node container for the given feature
                FeatureNodeContainer container = containerTree.getFeatureNodeContainer(feature);
@@ -140,7 +140,7 @@ public class FeatureNodeContainer{
         */
        private void buildBranch(){
                if(getParent() == null){
-                       FeatureNode parentFeatureNode = getFeatureNode().getParent();
+                       FeatureNode<Feature> parentFeatureNode = getFeatureNode().getParent();
 
                        if(parentFeatureNode.isRoot()){
                                containerTree.getRoot().addChild(this);
@@ -275,18 +275,18 @@ public class FeatureNodeContainer{
        /**
         * <p>Setter for the field <code>featureNode</code>.</p>
         *
-        * @param featureNode a {@link eu.etaxonomy.cdm.model.description.FeatureNode} object.
+        * @param featureNode a {@link eu.etaxonomy.cdm.model.term.FeatureNode} object.
         */
-       public void setFeatureNode(FeatureNode featureNode) {
+       public void setFeatureNode(FeatureNode<Feature> featureNode) {
                this.featureNode = featureNode;
        }
 
        /**
         * <p>Getter for the field <code>featureNode</code>.</p>
         *
-        * @return a {@link eu.etaxonomy.cdm.model.description.FeatureNode} object.
+        * @return a {@link eu.etaxonomy.cdm.model.term.FeatureNode} object.
         */
-       public FeatureNode getFeatureNode() {
+       public FeatureNode<Feature> getFeatureNode() {
                return featureNode;
        }
 
@@ -297,7 +297,7 @@ public class FeatureNodeContainer{
         */
        public Feature getFeature(){
                if(featureNode != null){
-                       return featureNode.getFeature();
+                       return featureNode.getTerm();
                }
                return null;
        }
index c337da240874145b48b0f44445a47ff28d4c69de..5c4adf19e3fdc66dc55ee6af8f356281f73b0770 100644 (file)
@@ -20,8 +20,8 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 
 /**
index 6683d570bf833d6e94fb1c28af4df75521509015..15743e3a6576bdbe9b4a2a2586b08ca15d0943bf 100644 (file)
@@ -61,6 +61,7 @@ public class ImageResources {
        public static final String TRASH_ICON = "trash_icon";
        /** Constant <code>BROWSE_ICON="browse_icon"</code> */
        public static final String BROWSE_ICON = "browse_icon";
+       public static final String SEARCH_ICON = "search_icon";
        /** Constant <code>EDIT_ICON="edit_icon"</code> */
        public static final String EDIT_ICON = "edit_icon";
        /** Constant <code>EDIT_LOGO_ICON="edit_logo_icon"</code> */
@@ -382,6 +383,8 @@ public class ImageResources {
                                "collapseall.gif");
                registerImage(registry, BROWSE_ICON,
                                "prj_obj.gif");
+               registerImage(registry, SEARCH_ICON,
+                       "search.gif");
                registerImage(registry, LOCK_ICON,
                        "lock.png");
                registerImage(registry, SYNCED,
index be516ead43451487640476ffae392e5ee6db412e..b24ceed12099bd70cf07c7c6b5c8695db8f7488f 100644 (file)
@@ -15,7 +15,7 @@ import java.util.Map;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
-import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.model.term.TermBase;
 
 /**
  * <p>MultiLanguageText class.</p>
index 23e5c66665b098d825c6072de785d0c79b2bb5f2..9e4fc8a08d85b49c9fbbbd5453a1b89c7510ed45 100644 (file)
@@ -5,10 +5,10 @@ package eu.etaxonomy.taxeditor.model;
 
 import org.apache.commons.lang.NotImplementedException;
 
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
index 09bfc64fc8ed5ea98305d53bddce56573a8f6494..1134ce0da956ba82c900a3d93db44c0a1cc3dd28 100644 (file)
@@ -9,8 +9,9 @@
 package eu.etaxonomy.taxeditor.newWizard;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -22,6 +23,12 @@ public class NewFeatureVocabularyWizard  extends AbstractNewEntityWizard<TermVoc
 
     private VocabularyWizardPage vocabularyPage;
 
+    private TermType termType;
+
+    public NewFeatureVocabularyWizard(TermType termType) {
+        this.termType = termType;
+    }
+
     @Override
     public void addPages() {
         vocabularyPage = new VocabularyWizardPage(formFactory, getConversationHolder(), getEntity());
@@ -30,6 +37,9 @@ public class NewFeatureVocabularyWizard  extends AbstractNewEntityWizard<TermVoc
 
     @Override
     protected TermVocabulary createNewEntity() {
+        if(termType!=null){
+            return TermVocabulary.NewInstance(termType);
+        }
         return TermVocabulary.NewInstance(TermType.Feature);
     }
 
index 553438baeb2c118f7dbff14010d7161bfadd71ae..e8125dd977917fc843c37b281a6ba6b61130bc7e 100644 (file)
@@ -40,6 +40,7 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<TaxonNode>{
     private UUID generatedTaxonNodeUuid;
     private IWizardPageListener wizardPageListener;
     private boolean isOpenInEditor = false;
+    private boolean success = true;
 
     /**
      * <p>Constructor for AbstractNewEntityWizard.</p>
@@ -83,12 +84,14 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<TaxonNode>{
                                 .fireChangeEvent(new CdmChangeEvent(Action.Create, result.getUpdatedObjects(), NewTaxonNodeWizard.class), true);
 
                     }else{
+                        setSuccess(false);
                         if (!result.isOk()){
                             if (!result.getExceptions().isEmpty()){
                                 MessagingUtils.error(getClass(), "Taxon could not be created", result.getExceptions().iterator().next());
                             }else{
                                 MessagingUtils.warn(getClass(), "Taxon could not be created");
                             }
+
                         }
                     }
           }catch(IllegalArgumentException e){
@@ -167,5 +170,15 @@ public class NewTaxonNodeWizard extends AbstractNewEntityWizard<TaxonNode>{
     }
 
 
+    public boolean isSuccess() {
+        return success;
+    }
+
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+
 
 }
index c071b887fd025dfb4ae3abec0ee7c259aa72c3f1..3344a7ab806134620063710a45bcf00f7a57ea50 100644 (file)
@@ -9,7 +9,7 @@
 package eu.etaxonomy.taxeditor.newWizard;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
index bfb0cf6997ff8f16c8179f70d824e7fe87fc0f82..648222164c590f53597bf6551bce80f2acb92444 100755 (executable)
@@ -18,12 +18,13 @@ import org.apache.log4j.Logger;
 
 import eu.etaxonomy.cdm.api.application.ICdmRepository;
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
 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.PreferenceResolver;
 import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.TermStore;
 
@@ -39,6 +40,8 @@ public class CdmPreferenceCache {
 
     private final static Logger logger = Logger.getLogger(CdmPreferenceCache.class);
 
+
+
     public static CdmPreferenceCache instance(){
         if(instance == null){
             instance = new CdmPreferenceCache();
@@ -180,4 +183,10 @@ public class CdmPreferenceCache {
         }
     }
 
+    private CdmPreference findBestMatching(PrefKey key) {
+
+        return PreferenceResolver.resolve(new ArrayList(this.preferenceCache.values()), key);
+
+    }
+
 }
index 19c1de67bc12ccf182b7cf8e014459ed2e1842c8..831c8fd1b619afbbb2426932cd81223741dfc4e1 100644 (file)
@@ -76,8 +76,8 @@ public class ChecklistEditorGeneralPreference extends CdmPreferencePage implemen
     Composite child ;
     protected boolean isAllowOverride;
 
-    protected Button activateCheckButton;
-    protected Button allowOverrideActivatedButton;
+    protected Combo activateCombo;
+   // protected Button allowOverrideActivatedButton;
 
     protected Button activateRankButton;
     protected Button allowOverrideRankButton;
@@ -95,54 +95,64 @@ public class ChecklistEditorGeneralPreference extends CdmPreferencePage implemen
         if(!isAdminPreference && !isEditorActivated && !isAllowOverride){
             Label label = new Label(composite, SWT.NONE);
             label.setText("The CDM settings don't allow to set the preferences for using the distribution editor locally. If you need to make local settings, please ask an administrator.");
-
+            this.setDefaultButtonActivated(false);
          }else{
             Composite activateComp = createComposite(composite);
             Label separator= new Label(activateComp, SWT.HORIZONTAL | SWT.SEPARATOR);
             GridData sepGrid = createTextGridData();
             separator.setLayoutData(sepGrid);
             separator.setVisible(false);
-            activateCheckButton = new Button(activateComp, SWT.CHECK);
-            activateCheckButton.setText(Messages.ChecklistEditorGeneralPreference_enable);
-            activateCheckButton.setSelection(isEditorActivated);
-            activateCheckButton.addSelectionListener(new SelectionAdapter(){
-                @Override
-                public void widgetSelected(SelectionEvent e) {
-                    setApply(true);
-                    isEditorActivated = activateCheckButton.getSelection();
-                    if(!isAdminPreference){
-                        overrideActivated = true;
-                        child.setEnabled(isEditorActivated);
-                        PreferencesUtil.recursiveSetEnabled(child, isEditorActivated);
-                    }
-
-
-
-
+            activateCombo = new Combo(activateComp, SWT.BORDER| SWT.READ_ONLY);
+            CdmPreference dbPref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DistributionEditorActivated);
+            if (dbPref != null){
+                if (Boolean.valueOf(dbPref.getValue())){
+                    activateCombo.add("Enable (default)");
+                    activateCombo.add("Disable");
+                }else{
+                    activateCombo.add("Enable");
+                    activateCombo.add("Disable (default)");
                 }
-            });
-            allowOverrideActivatedButton = createAllowOverrideButton(activateComp);
-            if (isAdminPreference){
-                allowOverrideActivatedButton.setSelection(allowOverrideActivated);
-                allowOverrideActivatedButton.addSelectionListener(new SelectionAdapter(){
-                    @Override
-                    public void widgetSelected(SelectionEvent e) {
-                        setApply(true);
-                        allowOverrideActivated = allowOverrideActivatedButton.getSelection();
-                    }
-                });
             }else{
-                allowOverrideActivatedButton.setSelection(overrideActivated);
-                allowOverrideActivatedButton.addSelectionListener(new SelectionAdapter(){
-                    @Override
-                    public void widgetSelected(SelectionEvent e) {
-                        setApply(true);
-                        overrideActivated = allowOverrideActivatedButton.getSelection();
-                    }
-                });
+                boolean defaultValue = (Boolean)PreferencePredicate.DistributionEditorActivated.getDefaultValue();
+                if (defaultValue){
+                    activateCombo.add("Enable (default)");
+                    activateCombo.add("Disable");
+                }else{
+                    activateCombo.add("Enable");
+                    activateCombo.add("Disable (default)");
+                }
+            }
+
+            if (isEditorActivated){
+                activateCombo.select(0);
+            }else{
+                activateCombo.select(1);
             }
 
 
+            activateCombo.addSelectionListener(this);
+//            allowOverrideActivatedButton = createAllowOverrideButton(activateComp);
+//            if (isAdminPreference){
+//                allowOverrideActivatedButton.setSelection(allowOverrideActivated);
+//                allowOverrideActivatedButton.addSelectionListener(new SelectionAdapter(){
+//                    @Override
+//                    public void widgetSelected(SelectionEvent e) {
+//                        setApply(true);
+//                        allowOverrideActivated = allowOverrideActivatedButton.getSelection();
+//                    }
+//                });
+//            }else{
+//                allowOverrideActivatedButton.setSelection(overrideActivated);
+//                allowOverrideActivatedButton.addSelectionListener(new SelectionAdapter(){
+//                    @Override
+//                    public void widgetSelected(SelectionEvent e) {
+//                        setApply(true);
+//                        overrideActivated = allowOverrideActivatedButton.getSelection();
+//                    }
+//                });
+//            }
+
+
             child  = createComposite(composite);
 
             if(!isAdminPreference){
@@ -689,7 +699,11 @@ public class ChecklistEditorGeneralPreference extends CdmPreferencePage implemen
     @Override
     protected void performDefaults() {
         isEditorActivated = (Boolean)PreferencePredicate.DistributionEditorActivated.getDefaultValue();
-        activateCheckButton.setSelection(isEditorActivated);
+        if (isEditorActivated){
+            activateCombo.select(0);
+        }else{
+            activateCombo.select(1);
+        }
 
         displayArea = ((TermDisplayEnum)PreferencePredicate.DisplayOfAreasInDistributionEditor.getDefaultValue()).getKey();
         TermDisplayEnum areaDisplay;
@@ -762,7 +776,7 @@ public class ChecklistEditorGeneralPreference extends CdmPreferencePage implemen
         ownDescriptionForDistributionEditor = Boolean.valueOf(PreferencePredicate.OwnDescriptionForDistributionEditor.getDefaultValue().toString());
 
         allowOverrideActivated = true;
-        allowOverrideActivatedButton.setSelection(allowOverrideActivated);
+      //  allowOverrideActivatedButton.setSelection(allowOverrideActivated);
         overrideActivated = true;
         allowOverrideAreaDisplay = true;
         overrideAreaDisplay = true;
index 93245b042817d888fbd857e842b4dad57d4b0fc5..862fb7ab2af07259a9a00c83b17aa64e2a3fe8dc 100644 (file)
@@ -24,7 +24,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
 import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
 import eu.etaxonomy.taxeditor.l10n.Messages;
index f3283d8b580083733261f706d0d811e9cbc6377e..c33b8b27644d47f63070204a0b99bb72d5139a5c 100755 (executable)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.preference;
 import java.util.Set;
 import java.util.UUID;
 
-import eu.etaxonomy.cdm.model.common.EnumeratedTermVoc;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
+import eu.etaxonomy.cdm.model.term.EnumeratedTermVoc;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate;
 
index 90e8c3bf7b356d181a0f4f045c68c255f79ac554..92ff20eb61a426ce0463f5b3981660a15544a857 100644 (file)
@@ -383,6 +383,7 @@ public class NameDetailsViewConfiguration extends CdmPreferencePage {
         }else{
             final CLabel description = new CLabel(parent, SWT.NULL);
             description.setText(Messages.NameDetailsViewConfiguration_description_not_available);
+            this.setDefaultButtonActivated(false);
         }
 
 
index dd91e5c17942936d3ebaa68f430cd904a1790cc1..ed46656f6d9c4665b0627fbc15d1a58b759e86e1 100644 (file)
@@ -45,12 +45,8 @@ import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
-import eu.etaxonomy.cdm.model.common.IDefinedTerm;
-import eu.etaxonomy.cdm.model.common.ISimpleTerm;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
 import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate;
@@ -58,6 +54,10 @@ import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
 import eu.etaxonomy.cdm.model.metadata.TermDisplayEnum;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.IDefinedTerm;
+import eu.etaxonomy.cdm.model.term.ISimpleTerm;
+import eu.etaxonomy.cdm.model.term.TermBase;
 import eu.etaxonomy.cdm.strategy.match.DefaultMatchStrategy;
 import eu.etaxonomy.cdm.strategy.match.FieldMatcher;
 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
@@ -530,6 +530,43 @@ public class PreferencesUtil implements IPreferenceKeys {
 
     }
 
+       public static List<CdmPreference> getPreferencesFromDB(IPreferencePredicate predicate){
+        ICdmRepository controller;
+        List<CdmPreference> prefs = null;
+
+        try{
+            if(CdmStore.isActive()){
+                controller = CdmStore.getCurrentApplicationConfiguration();
+                PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), predicate);
+                prefs = controller.getPreferenceService().list(predicate);
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+
+        return prefs;
+
+    }
+
+       public static CdmPreference getPreferenceFromDB(PrefKey key){
+        ICdmRepository controller;
+        CdmPreference pref = null;
+
+        try{
+            if(CdmStore.isActive()){
+                controller = CdmStore.getCurrentApplicationConfiguration();
+                pref = controller.getPreferenceService().find(key);
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+
+        return pref;
+
+    }
+
+
+
     public static void setPreferenceToDB(CdmPreference preference){
         ICdmRepository controller;
         try{
@@ -944,7 +981,7 @@ public class PreferencesUtil implements IPreferenceKeys {
         * getDefaultFeatureTreeForTextualDescription
         * </p>
         *
-        * @return a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
+        * @return a {@link eu.etaxonomy.cdm.model.term.FeatureTree} object.
         */
        public static FeatureTree getDefaultFeatureTreeForTextualDescription() {
                String uuidString = getStringValue(
@@ -965,7 +1002,7 @@ public class PreferencesUtil implements IPreferenceKeys {
         * getDefaultFeatureTreeForStructuredDescription
         * </p>
         *
-        * @return a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
+        * @return a {@link eu.etaxonomy.cdm.model.term.FeatureTree} object.
         */
        public static FeatureTree getDefaultFeatureTreeForStructuredDescription() {
                String uuidString = getStringValue(
@@ -1809,8 +1846,6 @@ public static void setPreferredVocabulariesForDistributionEditor(String saveChec
 }
 
 
-
-
 /**
  * @param saveCheckedElements
  * @param saveCheckedElements2
@@ -1832,9 +1867,18 @@ public static String getPreferredVocabulariesForDistributionEditor(boolean local
         }
 
     }
+}
 
-
-
+public static List<UUID> createUUIDListFromStringPref(String prefKey) {
+    String prefValue = PreferencesUtil.getStringValue(prefKey);
+    String[] stringArray = prefValue.split(";");
+    List<UUID> uuidList = new ArrayList();
+    for (String uuid: stringArray){
+        if (!StringUtils.isBlank(uuid)){
+            uuidList.add(UUID.fromString(uuid));
+        }
+    }
+    return uuidList;
 }
 
 public static boolean getFilterCommonNameReferences(){
@@ -1870,6 +1914,25 @@ public static void updateDBPreferences() {
 
 }
 
+/**
+ * @param string
+ * @param saveCheckedElements
+ */
+public static void setPreferencesToDB(List<CdmPreference> preferences) {
+
+    ICdmRepository controller;
+    try{
+        if(CdmStore.isActive()){
+            controller = CdmStore.getCurrentApplicationConfiguration();
+            for (CdmPreference preference: preferences){
+                controller.getPreferenceService().set(preference);
+            }
+        }
+    }catch(Exception e){
+        e.printStackTrace();
+    }
+}
+
 
 
 
index 22ec33a5d7717f7409d946bf43e11b6b6b370174..99f9ecce17708363bbb68978a2acd18b5b4c2a62 100644 (file)
@@ -50,6 +50,7 @@ public interface Resources {
        public static final String COLOR_CONTROL_SELECTED = "eu.etaxonomy.taxeditor.preferences.colorDefinition.nameEditor.colorContainerSelected";
        /** Constant <code>COLOR_CONTROL_SELECTED_FOCUS="eu.etaxonomy.taxeditor.preferences.colo"{trunked}</code> */
        public static final String COLOR_CONTROL_SELECTED_FOCUS = "eu.etaxonomy.taxeditor.preferences.colorDefinition.nameEditor.colorContainerSelectedFocus";
+       public static final String COLOR_SWT_BG_DEFAULT = "eu.etaxonomy.taxeditor.preferences.colorDefinition.swtBGDefault";
 
        public static final String COLOR_BULK_EDITOR_CANDIDATE = "eu.etaxonomy.taxeditor.preferences.colorDefinition.bulkEditor.colorCandidate";
 
index 3dc201705ff9171527dad79bcbb6bea750262c33..de74143877c5f0d90d29673989332902a7711ab4 100644 (file)
@@ -34,8 +34,8 @@ 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.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+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;
@@ -266,7 +266,7 @@ public abstract class AbstractMenuPreferences<T extends DefinedTermBase> extends
                return super.performOk();
        }
 
-       private boolean checkNoneChecked(){
+       protected boolean checkNoneChecked(){
 
                if(tableViewer!=null && tableViewer.getCheckedElements().length == 0){
                        setMessage("Please check at least one item", WARNING);
index 5708255ef4c713cca9b1aacf3a5eba05223ee29d..d71b00101c349db7bead0b5d880c249d07015bdd 100644 (file)
@@ -28,6 +28,7 @@ import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 public abstract class CdmPreferencePage extends PreferencePage implements IE4PreferencePage {
 
     private boolean isApply = false;
+    private boolean isDefaultButtonActivated = true;
 
     protected boolean isAdminPreference;
 
@@ -58,6 +59,9 @@ public abstract class CdmPreferencePage extends PreferencePage implements IE4Pre
         if (getApplyButton() != null){
             this.getApplyButton().setEnabled(false);
         }
+        if (getDefaultsButton() != null){
+            this.getDefaultsButton().setEnabled(isDefaultButtonActivated);
+        }
 
     }
 
@@ -132,6 +136,14 @@ public abstract class CdmPreferencePage extends PreferencePage implements IE4Pre
         }
     }
 
+    public boolean isDefaultButtonActivated() {
+        return isDefaultButtonActivated;
+    }
+
+    public void setDefaultButtonActivated(boolean isDefaultButtonActivated) {
+        this.isDefaultButtonActivated = isDefaultButtonActivated;
+    }
+
 
 
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CommonNameLanguagePreferences.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/menu/CommonNameLanguagePreferences.java
new file mode 100755 (executable)
index 0000000..c0e7ccb
--- /dev/null
@@ -0,0 +1,141 @@
+/**
+* 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 java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.lang.StringUtils;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * <p>LanguageMenuPreferences class.</p>
+ *
+ * @author p.ciardelli
+ * @created 24.08.2009
+ * @version 1.0
+ */
+public class CommonNameLanguagePreferences extends AbstractMenuPreferences<Language> {
+
+       /** Constant <code>ID="eu.etaxonomy.taxeditor.preferences.lang"{trunked}</code> */
+       public final static String ID = "eu.etaxonomy.taxeditor.preferences.languages"; //$NON-NLS-1$
+
+       /**
+        * <p>Constructor for LanguageMenuPreferences.</p>
+        */
+       public CommonNameLanguagePreferences() {
+               super("Language Preferences", //$NON-NLS-1$
+                               Messages.CommonNameLanguageMenuPreferences_configure,
+                               false);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#createContents(org.eclipse.swt.widgets.Composite)
+        */
+       /** {@inheritDoc} */
+       @Override
+       public Control createContents(Composite parent) {
+               Control control = super.createContents(parent);
+
+               tableViewer.setLabelProvider(new LanguagePreferenceLabelProvider());
+               tableViewer.setComparator(new ViewerComparator());
+
+               return control;
+       }
+
+       class LanguagePreferenceLabelProvider extends LabelProvider implements ITableLabelProvider{
+
+               /* (non-Javadoc)
+                * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+                */
+               @Override
+        public Image getColumnImage(Object element, int columnIndex) {
+                       return null;
+               }
+
+               /* (non-Javadoc)
+                * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+                */
+               @Override
+        public String getColumnText(Object element, int columnIndex) {
+                       String description = ((Language)element).getDescription();
+                       if (description == null) {
+                               description = ((Language)element).getLabel() + Messages.LanguageMenuPreferences_warning;
+                       }
+                       return description;
+               }
+
+               }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.preference.menu.AbstractMenuPreferences#getTermClass()
+        */
+       /** {@inheritDoc} */
+       @Override
+       protected TermType getTermType() {
+               return TermType.Language;
+       }
+
+
+       @Override
+       protected void refresh(List<Language> definedTerms) {
+        tableViewer.setInput(definedTerms);
+        List<UUID> uuids = PreferencesUtil.createUUIDListFromStringPref(PreferencePredicate.CommonNameLanguages.getKey());
+        List<Language> preferedTerms = CdmStore.getTermManager().getTerms(uuids, Language.class);
+
+        tableViewer.setCheckedElements(preferedTerms.toArray());
+    }
+
+
+
+       @Override
+    public boolean performOk() {
+        if(!CdmStore.isActive()) {
+            return true;
+        }
+
+        if(super.checkNoneChecked()){
+            return false;
+        }
+
+        getConversationHolder().commit(true);
+
+        if(tableViewer!=null){
+            List<UUID> preferredTermUuids = new ArrayList<UUID>();
+            if (tableViewer.getCheckedElements().length == tableViewer.getTable().getItemCount()){
+                PreferencesUtil.setStringValue(PreferencePredicate.CommonNameLanguages.getKey(), "");
+            }else{
+                for (Object element : tableViewer.getCheckedElements()){
+                    preferredTermUuids.add(((Language)element).getUuid());
+                }
+
+                String preferredLanguagesString = StringUtils.join(preferredTermUuids, ";");
+                PreferencesUtil.setStringValue(PreferencePredicate.CommonNameLanguages.getKey(), preferredLanguagesString);
+            }
+
+            PreferencesUtil.firePreferencesChanged(this.getClass());
+        }
+
+        return super.performOk();
+    }
+}
index e347740403fb1bcd6ba95387fdbdc0605c7388ab..e515da398c642523e2715d7090b560f6c16d7c53 100644 (file)
@@ -14,7 +14,7 @@ import java.util.Collection;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 
 /**
  * <p>DefinedTermBaseContentProvider class.</p>
index f1a964f4daa80a8a44467623f03241d0ad3fb6f8..c7f1b34bd2fa6b58ce20458f4d2df8e1bf3b4616 100644 (file)
@@ -13,7 +13,7 @@ import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.swt.graphics.Image;
 
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 
 /**
  * <p>DefinedTermBaseLabelProvider class.</p>
index 5b098c46bba2d2a508152cd0576ff33ec0b528a9..7f2864b91e57e29cb1a6ec080d99c7e6b3d43aaa 100644 (file)
@@ -10,7 +10,7 @@
 package eu.etaxonomy.taxeditor.preference.menu;
 
 import eu.etaxonomy.cdm.model.common.ExtensionType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
 /**
index d370557a9d0a922080e39f5f301c1fdd9522f1cf..b63d38705547e4ecb55b90ccb81303316981caad 100644 (file)
@@ -8,7 +8,7 @@
 */
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
index 94c853ed77cb28fe6631a4f2280fb71a10a32312..732694e4965028a35e586e34ded1c5ef29a3e03e 100644 (file)
@@ -17,7 +17,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
 /**
index 554cb0aab5a9b33f0d593dd5b465e3134d0a17de..eaacd8181c9baaad06e3efc971e541ee148bd083 100644 (file)
@@ -10,7 +10,7 @@
 package eu.etaxonomy.taxeditor.preference.menu;
 
 import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
 /**
index 5edc9362db4fc38b9bd05cb7538ecb78ed15df08..999a79e9072150cf0b8e957604cbac8fcf04f383 100644 (file)
@@ -3,7 +3,7 @@
  */
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.description.MeasurementUnit;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
index 2d7f602c2b7f8a65466970a74f166656e7ded87e..ca182fbbf2945180c3ef960aacebc2e6790c5cd3 100644 (file)
@@ -13,7 +13,7 @@ import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.labels.ILabelImageStrategy;
index d14337c64e1a3a57e11102bf411c521829fd9016..aac0361f0a29a5a9de3c8a0fce3c79b0aff899d2 100644 (file)
@@ -9,7 +9,7 @@
 
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
index b4b7e6bd5264b4a73e4e1242f88956282b5dbbc1..32a947ed44f94d15f1d51f2e319d0e707f7f7ea8 100644 (file)
@@ -9,7 +9,7 @@
 
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.location.NamedAreaType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
index 9535487c365ae9d67c643257e8ac4ddf9cb7d0e6..12a51afda1a75260beca9b887cd4bc21821451c1 100644 (file)
@@ -9,7 +9,7 @@
 
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
index faf27f6a873ede0a6ac781b655780959fd4cb752..0b3baffc9589145752a8331086de83cab7c0f774 100644 (file)
@@ -9,7 +9,7 @@
 
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
index 0699a2b18b495b9377973a7c95289ce9323fa9ea..f10f61d79ba1e08d313ab9c9bfd78f7ed6e8afc1 100644 (file)
@@ -9,8 +9,8 @@
 
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
 /**
index 3099a0d52f0f62d980bc728372b3a4a0f5e0f0a2..904d3fa30553c1891f60c132add4059217497617 100644 (file)
@@ -14,7 +14,7 @@ import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+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;
index 8e8eb7b5394d230db7a0642ffb29083b3720d67f..38e8b8453856b15525c5d7174c495f05bd4cb7c0 100644 (file)
@@ -9,7 +9,7 @@
 
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
index f172434d777de4442a465fafd184411fe82b728f..d7ab33759c07ab1ed2eaef1d44e6665843a2cb14 100644 (file)
@@ -9,8 +9,8 @@
 
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
 
index 5bdf5c3987e5245aa06a6beb0bcb0186ee87e206..f303fba71c7831d75192babf41d4406e68d67aea 100644 (file)
@@ -9,7 +9,7 @@
 
 package eu.etaxonomy.taxeditor.preference.menu;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 
index 2e99dc43cd5112c950bbe0efa989affe10584777..706e7043737399b968e3b86737a118317f7752a5 100755 (executable)
@@ -14,7 +14,7 @@ import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
index bf3e7b76cc3807bb123e638d182dd043cb9516f4..0031492b78b48764f81ff8fdb4bc57ad3b429b2d 100755 (executable)
@@ -24,9 +24,9 @@ import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
@@ -122,7 +122,7 @@ public abstract class AbstractTermSelectionWizardPage extends WizardPage {
                     IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class);
                     TermVocabulary termVocabulary = vocabularyService.load(uuid);
                     if (termVocabulary != null){
-                        termlist.add(new TermVocabularyDto(uuid, termVocabulary.getRepresentations()));
+                        termlist.add(new TermVocabularyDto(uuid, termVocabulary.getRepresentations(), termVocabulary.getTermType()));
                     }
                 }
             }
index eb6a6a069a91a6491bbde494d36aee938df2b343..63335c4aed63be56217c04620f417be3f3fe0de0 100755 (executable)
@@ -18,7 +18,7 @@ import org.apache.commons.lang.StringUtils;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
index 1f7ec5ae8448f4c776f07eafc724aa719982925f..11685abe7db38b3ceb9b79d048113fc9aa29d358 100755 (executable)
@@ -21,9 +21,9 @@ import org.apache.commons.lang.StringUtils;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 import eu.etaxonomy.taxeditor.l10n.Messages;
@@ -130,7 +130,7 @@ public class AvailableDistributionPage extends AbstractTermSelectionWizardPage {
             }
             List<TermVocabulary> tempVocs = CdmStore.getService(IVocabularyService.class).find(uuidVocs);
             for (TermVocabulary voc: tempVocs){
-                vocs.add(new TermVocabularyDto(voc.getUuid(), voc.getRepresentations()));
+                vocs.add(new TermVocabularyDto(voc.getUuid(), voc.getRepresentations(), voc.getTermType()));
             }
 
         }
index f97d1b22741fba56667d29a88d697e3ecd407f6b..6b095984028132904af9c70dbb102a01399a1a1c 100755 (executable)
@@ -19,7 +19,7 @@ import org.eclipse.jface.wizard.Wizard;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
index c7152d2d660e77370b5382053c61abac41d16cee..5ef67698f8a15b28076ce8c113230d70d56be26a 100755 (executable)
@@ -15,7 +15,7 @@ import java.util.Map;
 import org.eclipse.swt.widgets.Composite;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
index 009f6d7b0b9d0b81c6cdf2b7f4b748f8eebc990b..d5faf8a6cfc3ed1c9bfa2a36dd980f13a8ccdacf 100755 (executable)
@@ -19,7 +19,7 @@ import org.eclipse.jface.wizard.Wizard;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
index ec02619a6731b13f30a672903c2ea81e01412341..242cdad4f65f9b910eb5f328bcd199af46ca90aa 100755 (executable)
@@ -10,7 +10,7 @@ package eu.etaxonomy.taxeditor.preference.wizard;
 
 import java.util.Set;
 
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 
 /**
  * @author k.luther
index e20e0f4fac1a9ae053de33b46861e381a8be6fe8..5d6a7265d30757e5a8198ee5306950ceee7e725d 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.wizard.Wizard;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.CdmStore;
index 20f8b7b2bd0b1609125f33f1a056f54dd581557a..a3819aa4291ce83b2561e3981a0cae8422c354b7 100644 (file)
@@ -21,8 +21,8 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Text;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.Representation;
 
 /**
  * <p>VocabularyTermWizardPage class.</p>
index d8d3e95ffc7405f24f02d496c8f57d4cdaa8b2ed..f69e23e89878057ebf2dfb02a55f35157cc28186 100644 (file)
@@ -65,13 +65,13 @@ import eu.etaxonomy.cdm.database.DbSchemaValidation;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
index d972bee756bfd1bb4c8b82ca0b50143d7774a649..a7cf9fbc78793bfb52da9fdd98af69113ab158a5 100644 (file)
@@ -30,7 +30,7 @@ import eu.etaxonomy.cdm.config.CdmSourceException;
 import eu.etaxonomy.cdm.config.ICdmSource;
 import eu.etaxonomy.cdm.database.DbSchemaValidation;
 import eu.etaxonomy.cdm.database.ICdmDataSource;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.cdm.model.name.Rank;
@@ -212,7 +212,7 @@ class CdmStoreConnector extends Job {
                                         NomenclaturalStatusType.initDefaultTerms();
                                     } catch(CdmAuthenticationException cae) {
                                         loginDialog.hide(false);
-                                        loginDialog.setMessage("Your credentials are valid \nbut you are not permitted to use \nthe TaxEditor with the selected data source");
+                                        loginDialog.setMessage(Messages.RemotingLoginDialog_MISSING_PERMISSION);
 
                                     }
 
index d056aa32d95491452d788139e28c1ce3efe1e897..1f8c7d385b974693a2107feebb936351e3dfe7ba 100644 (file)
@@ -13,6 +13,7 @@ import java.util.UUID;
 
 import org.eclipse.core.commands.operations.IOperationHistory;
 import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jface.action.IStatusLineManager;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.swt.widgets.Composite;
@@ -155,7 +156,7 @@ public class StoreUtil extends AbstractUtility {
             boolean proceed = MessageDialog.openQuestion(null,
                     Messages.DefinedTermEditorE4_SAVE_TITLE, Messages.DefinedTermEditorE4_SAVE_MESSAGE);
             if (proceed) {
-                editor.save(null);
+                editor.save(new NullProgressMonitor());
                 return false;
             }
             else{
@@ -170,4 +171,42 @@ public class StoreUtil extends AbstractUtility {
     public static boolean confirmDelete(){
         return MessagingUtils.confirmDialog("Confirm deletion", "Do you really want to delete the selected element(s)?");
     }
+
+    /**
+     * Compares the two given input strings considering the given search string.<br>
+     * Strings will be sorted according to <br>
+     * <ol>
+     * <li> result begins with search string
+     * <li> string length
+     * <li> result contains search string
+     * <li> string length
+     * <li> alphabetically
+     * </ol>
+     */
+    public static int compareBySearchString(String searchString, String string1, String string2) {
+        string1 = string1.toLowerCase();
+        string2 = string2.toLowerCase();
+        //1. search string at the beginning
+        if(string1.startsWith(searchString)){
+            if(!string2.startsWith(searchString)){
+                return -1;
+            }
+            else{
+                return string1.compareTo(string2);
+            }
+        }
+        else if(string2.startsWith(searchString)){
+            return 1;
+        }
+        //2. label that contains search string
+        if(string1.contains(searchString)){
+            if(!string2.contains(searchString)){
+                return -1;
+            }
+        }
+        else if(string2.contains(searchString)){
+            return 1;
+        }
+        return string1.compareTo(string2);
+    }
 }
index d21c31ba687db2565d473076fb3ceb8765f140de..5c09ad19f7d69b6ecb8ecec57d3cdced5f6320de 100644 (file)
@@ -16,10 +16,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 
@@ -177,6 +177,9 @@ public class TermManager {
 
         List<T> filteredTerms = new ArrayList<T>();
         List<T> terms = TermStore.getTerms(clazz);
+        if (uuidList.isEmpty()){
+            return terms;
+        }
         for (T term : terms){
             if(uuidList.contains(term.getUuid())){
                 filteredTerms.add(term);
index 48f5b8248c07e6083e56842d35f6ef193ef71b55..cae6e4b39b17c650adea93db55ce99c13eac07ef 100644 (file)
@@ -19,10 +19,10 @@ import java.util.Set;
 
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.cdm.model.name.Rank;
@@ -131,7 +131,7 @@ public class TermStore {
        }
 
        /**
-        * @param term a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase} object.
+        * @param term a {@link eu.etaxonomy.cdm.model.term.DefinedTermBase} object.
         */
        public static void saveTerm(DefinedTermBase term){
                CdmStore.getService(ITermService.class).saveOrUpdate(term);
@@ -140,7 +140,7 @@ public class TermStore {
        /**
         * <p>delete</p>
         *
-        * @param selected a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase} object.
+        * @param selected a {@link eu.etaxonomy.cdm.model.term.DefinedTermBase} object.
         * @throws ReferencedObjectUndeletableException
         */
        public static void delete(DefinedTermBase selected) throws ReferencedObjectUndeletableException {
@@ -150,7 +150,7 @@ public class TermStore {
        /**
         * Save a vacabulary to data store
         *
-        * @param term a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase} object.
+        * @param term a {@link eu.etaxonomy.cdm.model.term.DefinedTermBase} object.
         */
        public static void updateVocabulary(DefinedTermBase term) {
                CdmStore.getService(ITermService.class).saveOrUpdate(term);
index d59bccdb54c564dcab5516b178f3ee38d06e09bb..6dab303b3321727b5c0ca0ca3a6fad8cdf0fae2f 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.taxeditor.store;
 \r
 import java.util.UUID;\r
 \r
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;\r
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;\r
 \r
 public class UsageTermCollection {\r
        protected final static UUID uuidMarkersVocabulary = UUID.fromString("19dffff7-e142-429c-a420-5d28e4ebe305");\r
index 81096d17351481ae5b63e849b18adab95bb84605..4afffe86b2a7072001f13bd9ccd5aad46c0c22aa 100644 (file)
@@ -17,10 +17,10 @@ import org.eclipse.core.runtime.NullProgressMonitor;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
-import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
+import eu.etaxonomy.cdm.model.term.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
-import eu.etaxonomy.cdm.model.common.TermType;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.TermType;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.State;\r
 \r
index 7fae0b169b439ffc93b3d5e973c888236292cc90..ffa3a5440198839c7c846c112265771a558e50b0 100644 (file)
@@ -20,8 +20,8 @@ import java.util.Map.Entry;
 
 import org.eclipse.swt.events.SelectionEvent;
 
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.media.ExternalLinkType;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
index 78d2c9aa8b677f67d8bbe6a235cdbc1da6cbe287..5099e079d35d1598d83b8426f02ddd50e4352f31 100755 (executable)
@@ -12,7 +12,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
index 5992878d976c83ae5a386e3863bb01643af6aa15..50fd1e2e325b6491b98dca7937a9ce3783f5f337 100755 (executable)
@@ -18,8 +18,8 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
 
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
index d760f1a6863179f571466fd4308fa067e275dc9a..250d11e1e9064c5e1eafc085b34180d7583037e1 100644 (file)
@@ -14,9 +14,9 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Listener;
 
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -66,29 +66,36 @@ public class TermComboElement<T extends DefinedTermBase>
        public TermComboElement(CdmFormFactory formFactory,
                        ICdmFormElement parentElement, TermType termType, String labelString, T selection, boolean addEmptyElement,
                        int style, boolean useAbbrevLabel, Comparator<T> comparator) {
-               this(formFactory, parentElement, null, termType, null, labelString, selection, addEmptyElement, style, useAbbrevLabel, comparator);
+               this(formFactory, parentElement, null, termType, null, null, labelString, selection, addEmptyElement, style, useAbbrevLabel, comparator);
        }
 
        public TermComboElement(CdmFormFactory formFactory,
                ICdmFormElement parentElement, TermVocabulary<?> termVocabulary, String labelString, T selection, boolean addEmptyElement,
                int style, boolean useAbbrevLabel, Comparator<T> comparator) {
-           this(formFactory, parentElement, null, null, termVocabulary, labelString, selection, addEmptyElement, style, useAbbrevLabel, comparator);
+           this(formFactory, parentElement, null, null, termVocabulary, null,labelString, selection, addEmptyElement, style, useAbbrevLabel, comparator);
        }
 
     public TermComboElement(CdmFormFactory formFactory,
             ICdmFormElement parentElement, Class<T> termClass, String labelString, T selection, boolean addEmptyElement,
             int style) {
-        this(formFactory, parentElement, termClass, null, null, labelString, selection, addEmptyElement, style, false, null);
+        this(formFactory, parentElement, termClass, null, null, null, labelString, selection, addEmptyElement, style, false, null);
     }
     public TermComboElement(CdmFormFactory formFactory,
             ICdmFormElement parentElement, Class<T> termClass, String labelString, T selection, boolean addEmptyElement,
             int style, boolean useAbbrevLabel) {
-        this(formFactory, parentElement, termClass, null, null, labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
+        this(formFactory, parentElement, termClass, null, null, null,labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
+
+    }
+
+    public TermComboElement(CdmFormFactory formFactory,
+            ICdmFormElement parentElement, List<T> terms, String labelString, T selection, boolean addEmptyElement,
+            int style, boolean useAbbrevLabel) {
+        this(formFactory, parentElement, null, null, null, terms,labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
 
     }
 
        private TermComboElement(CdmFormFactory formFactory,
-               ICdmFormElement parentElement, Class<T> termClass, TermType termType, TermVocabulary<?> termVocabulary, String labelString, T selection, boolean addEmptyElement,
+               ICdmFormElement parentElement, Class<T> termClass, TermType termType, TermVocabulary<?> termVocabulary, List<T> terms,String labelString, T selection, boolean addEmptyElement,
                int style, boolean useAbbrevLabel, Comparator<T> comparator) {
         super(formFactory, parentElement);
 
@@ -111,6 +118,8 @@ public class TermComboElement<T extends DefinedTermBase>
         }
         else if(this.termClass!=null){
             populateTerms(getPreferredTerms());
+        }else if (terms != null){
+            populateTerms(terms);
         }
 
         combo.addSelectionListener(this);
index 784965f2e249f1b9b35a152f07272d8231fa07d6..a27173531ff1f6acd5fdf466e820c7f35b3dd237 100644 (file)
@@ -12,7 +12,7 @@ import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 
 /**
  * @author pplitzner
index 124c768831c67e078875d9b4612b9b4e84c9b6bd..d0a7f713d7e2a40e950c74c3e0730ad451062d56 100644 (file)
@@ -13,8 +13,8 @@ import java.util.List;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
index 7510fd3ef0841d8c2965a260a08a69987dfeadb3..c9a8ccbede77236e30bec7580d7672bef8102087 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.taxeditor.ui.combo;
 
 import org.eclipse.jface.viewers.LabelProvider;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
 
 /**
  * @author pplitzner
index 28c158c827207fce359f2bceee5cc4c8192e15d1..f5184ba34d577ed2d0bb4d76cc4a7238ecfca742 100644 (file)
@@ -14,9 +14,9 @@ import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Listener;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
index c26d1a02023493bc58c5d91413d32bfa96db7de6..3b0761a33e49a84be24c2ddc9473023a48e3921c 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.taxeditor.ui.combo.termvocabulary;
 
 import org.eclipse.jface.viewers.LabelProvider;
 
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 
 /**
  *
index f0e66efebcea42081b718f2c1fc479f482e2d749..e6b1911fbda67d9be301ef3f245ef7ebf38df3cd 100644 (file)
@@ -12,7 +12,7 @@ import org.eclipse.jface.viewers.ILabelProvider;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.ui.combo.AbstractComboComposite;
 
 /**
index 1ee4b5bafcdd1cef96e7fd6dbc9025805c33e2a4..b756970a416fc7beb4a4659fa1d43d1c59a1ef78 100644 (file)
@@ -8,7 +8,7 @@
 */
 package eu.etaxonomy.taxeditor.ui.dialog;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
index 48e826e1169148daab423e89ac7009c35bce783c..a7cf2ea081852f052158aae2f67fadf38c08c075 100644 (file)
@@ -149,7 +149,7 @@ public class RemotingLoginDialog extends Dialog implements ICDMServerError {
     private final int MIN_WIDTH = 530;
     private final int MIN_HEIGHT = 220;
     private final int MIN_EXP_HEIGHT = 380;
-    private final int MESSAGE_HEIGHT = 75;
+    private final int MESSAGE_HEIGHT = 50;
     private Label lblEditorVersion;
     private Text txtEditorVersion;
     private Label lblServerCDMVersion;
@@ -224,7 +224,7 @@ public class RemotingLoginDialog extends Dialog implements ICDMServerError {
      * Create contents of the dialog.
      */
     private void createContents() {
-        shlConnect = new Shell(getParent(), SWT.DIALOG_TRIM);
+        shlConnect = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
         shlConnect.setMinimumSize(new Point(MIN_WIDTH, MIN_HEIGHT));
         shlConnect.setSize(MIN_WIDTH, MIN_HEIGHT);
         shlConnect.setText(Messages.RemotingLoginDialog_LABEL_CONNECT);
@@ -262,6 +262,7 @@ public class RemotingLoginDialog extends Dialog implements ICDMServerError {
         txtCdmServerStatus.setEditable(false);
         GridData gd_txtCdmServerStatus = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
         gd_txtCdmServerStatus.widthHint = 100;
+
         txtCdmServerStatus.setLayoutData(gd_txtCdmServerStatus);
 
         btnCdmServerRefresh = new Button(cdmServerComposite, SWT.NONE);
@@ -385,15 +386,20 @@ public class RemotingLoginDialog extends Dialog implements ICDMServerError {
         styledTxtMessage.setSelectionForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_RED));
         styledTxtMessage.setDoubleClickEnabled(false);
         styledTxtMessage.setEditable(false);
+        styledTxtMessage.setWordWrap(true);
+
         GridData gd_styledTxtMessage = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1);
         gd_styledTxtMessage.exclude = true;
         gd_styledTxtMessage.minimumHeight = MESSAGE_HEIGHT;
         gd_styledTxtMessage.heightHint = MESSAGE_HEIGHT;
+        gd_styledTxtMessage.widthHint = MIN_WIDTH - 5;
+
         styledTxtMessage.setLayoutData(gd_styledTxtMessage);
 
         xpndblcmpstAdvanced = new ExpandableComposite(remotingComposite, SWT.NONE, ExpandableComposite.TWISTIE);
         GridData gd_xpndblcmpstAdvanced = new GridData(SWT.FILL, SWT.FILL, false, true, 1, 1);
         gd_xpndblcmpstAdvanced.heightHint = 19;
+        gd_xpndblcmpstAdvanced.widthHint = MIN_WIDTH - 10;
         xpndblcmpstAdvanced.setLayoutData(gd_xpndblcmpstAdvanced);
         xpndblcmpstAdvanced.addExpansionListener(new IExpansionListener() {
             @Override
index 792a10026c6f438bc4659cd7c32b8c4678b8dffa..1ff746d61fe7c097622ad795d195bdf8d6e0688a 100644 (file)
@@ -31,7 +31,7 @@ import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
index a5bb9e4bda3613ee96392f9817adc6b2b824225d..97edc8de649ff25ac3362bfb689a943c6d8b8e19 100644 (file)
@@ -5,7 +5,7 @@ import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.IIdentifiableEntityService;
 import eu.etaxonomy.cdm.api.service.dto.IdentifiedEntityDTO;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.persistence.query.MatchMode;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
index 9b781f37e7f97d1e77f3b9e01c5585e96a1f1390..a9cc19997624da805694ab79c77623f899d41130 100644 (file)
@@ -31,8 +31,8 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created Sep 10, 2009
  * @version 1.0
  */
-public class AgentSelectionDialog extends
-               AbstractFilteredCdmResourceSelectionDialog<AgentBase> {
+public class AgentSelectionDialog<T extends AgentBase> extends
+               AbstractFilteredCdmResourceSelectionDialog {
 
        /**
         *
@@ -57,7 +57,7 @@ public class AgentSelectionDialog extends
                AgentBase entity, boolean selectTeamMember) {
                AgentSelectionDialog dialog = new AgentSelectionDialog(shell, //conversation,
                                "Choose Agent", false, AgentSelectionDialog.class.getCanonicalName(), entity, selectTeamMember);
-               return getSelectionFromDialog(dialog);
+               return (AgentBase) getSelectionFromDialog(dialog);
        }
 
        /**
@@ -89,7 +89,7 @@ public class AgentSelectionDialog extends
                 */
                @Override
         public String getText(Object element) {
-                       AgentBase agent = getCdmObjectByUuid(((UuidAndTitleCache<AgentBase>) element).getUuid());
+                   AgentBase agent = (AgentBase) getCdmObjectByUuid(((UuidAndTitleCache<AgentBase>) element).getUuid());
                        if (agent instanceof INomenclaturalAuthor) {
                                return "Nomenclatural title: '" + ((INomenclaturalAuthor) agent).getNomenclaturalTitle() + "'";
                        } else {
index adfefd356bf8d47019cb122a31f320fb0f388844..e6d87905a40fad223a73c1926945853d48bd73ef 100755 (executable)
@@ -16,8 +16,8 @@ import org.apache.commons.lang.StringUtils;
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.metadata.CdmPreference;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
index 25b31273f70cd84f44e452a99abc6106936dd971..72a735791a6630ac4f99eac8ebd99ac232161bdb 100644 (file)
@@ -17,7 +17,7 @@ import eu.etaxonomy.cdm.api.service.IReferenceService;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
index bfc4d5780356b12c2981715ba370516b44bd1b9f..dc588186d4e5ca9380d974b2e3657778a221c05d 100644 (file)
@@ -14,7 +14,7 @@ import java.util.UUID;
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
 import eu.etaxonomy.taxeditor.store.CdmStore;
index 93f39f494eea1e593bb420bf6798bd68ed9fa72c..6abad824e4b2996f363ce32d24f064c4b1aecd22 100644 (file)
@@ -19,7 +19,8 @@ import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -31,18 +32,25 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class FeatureTreeSelectionDialog extends
                AbstractFilteredCdmResourceSelectionDialog<FeatureTree> {
 
+    private final TermType termType;
+
+    public static FeatureTree select(Shell shell,
+            FeatureTree featureTree) {
+        return select(shell, featureTree, null);
+
+    }
        public static FeatureTree select(Shell shell,
-               FeatureTree featureTree) {
+               FeatureTree featureTree, TermType termType) {
                FeatureTreeSelectionDialog dialog = new FeatureTreeSelectionDialog(shell,
-                               Messages.FeatureTreeSelectionDialog_CHOOSE_TREE, false, featureTree);
+                               Messages.FeatureTreeSelectionDialog_CHOOSE_TREE, false, featureTree, termType);
                return getSelectionFromDialog(dialog);
        }
 
        protected FeatureTreeSelectionDialog(Shell shell,
                         String title, boolean multi,
-                       FeatureTree cdmObject) {
-               super(shell,
-                       title, multi, FeatureTreeSelectionDialog.class.getCanonicalName(), cdmObject);
+                       FeatureTree cdmObject, TermType termType) {
+               super(shell, title, multi, FeatureTreeSelectionDialog.class.getCanonicalName(), cdmObject);
+               this.termType = termType;
        }
 
        @Override
@@ -52,7 +60,7 @@ public class FeatureTreeSelectionDialog extends
 
        @Override
        protected void callService(String pattern) {
-        model = CdmStore.getService(IFeatureTreeService.class).getUuidAndTitleCache(FeatureTree.class, limitOfInitialElements, pattern);
+        model = CdmStore.getService(IFeatureTreeService.class).getUuidAndTitleCacheByTermType(FeatureTree.class, termType, limitOfInitialElements, pattern);
        }
 
        @Override
@@ -64,7 +72,13 @@ public class FeatureTreeSelectionDialog extends
                 InputDialog dialog = new InputDialog(getShell(), Messages.FeatureTreeSelectionDialog_TREE_LABEL, Messages.FeatureTreeSelectionDialog_ENTER_LABEL, null, null);
                 if (dialog.open() == Window.OK) {
                     // User clicked OK; update the label with the input
-                    FeatureTree tree = FeatureTree.NewInstance();
+                    FeatureTree tree = null;
+                    if(termType!=null){
+                        tree = FeatureTree.NewInstance(termType);
+                    }
+                    else{
+                        tree = FeatureTree.NewInstance();
+                    }
                     tree.setTitleCache(dialog.getValue(), true);
                     CdmStore.getService(IFeatureTreeService.class).merge(tree,true);
                     refresh();
index 1172b30c45d06e9f129c831b424346776bd937f6..bfbc457ff3c5021bfe84e7a475ecc8890f4a128a 100644 (file)
@@ -24,7 +24,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Shell;
 
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 
 /**
index 3dc3482d7e7ac40826bbc4254ca917a77901f67f..20cc3626efd8df3a1192a4fe7b6ea4c8aed30986 100644 (file)
@@ -18,6 +18,7 @@ import org.eclipse.swt.widgets.Shell;
 import eu.etaxonomy.cdm.api.service.IGroupService;
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
 import eu.etaxonomy.taxeditor.newWizard.NewGroupWizard;
@@ -31,10 +32,12 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class GroupSelectionDialog extends
                AbstractFilteredCdmResourceSelectionDialog<Group> {
 
+    User user;
+
        public static Group select(Shell shell, //ConversationHolder conversation,
-               Group group){
+               Group group, User user){
                GroupSelectionDialog dialog = new GroupSelectionDialog(shell, //conversation,
-                               "Choose Group", false, GroupSelectionDialog.class.getCanonicalName(), group);
+                               "Choose Group", false, GroupSelectionDialog.class.getCanonicalName(), group, user);
                return getSelectionFromDialog(dialog);
        }
 
@@ -48,9 +51,10 @@ public class GroupSelectionDialog extends
         */
        protected GroupSelectionDialog(Shell shell,//ConversationHolder conversation,
                String title, boolean multi,
-                       String settings, Group cdmObject) {
+                       String settings, Group cdmObject, User user) {
                super(shell, //conversation,
                        title, multi, settings, cdmObject);
+               this.user = user;
        }
 
        /* (non-Javadoc)
@@ -64,6 +68,9 @@ public class GroupSelectionDialog extends
 
                for(Group group : groups){
                    if (pattern == null || group.getName().matches("(?i)"+CdmUtils.quoteRegExWithWildcard(pattern) + ".*")){
+                       if (user != null && !user.getGroups().isEmpty() && user.getGroups().contains(group)){
+                           continue;
+                       }
                        model.add(new UuidAndTitleCache<Group>(Group.class, group.getUuid(), group.getId(), String.format("%s", group.getName())));
                    }
                }
index ab9d781068c101a2e7c79e085bccdac4fb98c1a4..aecdefe1faa16dfb8ea9f6ed33276e3d5aef8442 100644 (file)
@@ -25,9 +25,9 @@ import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
index 0149b4d38fdd03fb720ff2dfb1946b4a505ddded..0885486e7d2c3dda1ff7ed5469329b329a6c93e0 100644 (file)
@@ -18,7 +18,9 @@ import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.IAgentService;
-import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;
+import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
@@ -33,7 +35,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @date 25.05.2016
  *
  */
-public class NomenclaturalAuthorSelectionDialog extends AgentSelectionDialog {
+public class NomenclaturalAuthorSelectionDialog extends TeamOrPersonBaseSelectionDialog {
 
 
     /**
@@ -46,15 +48,15 @@ public class NomenclaturalAuthorSelectionDialog extends AgentSelectionDialog {
      */
     protected NomenclaturalAuthorSelectionDialog(Shell shell, //ConversationHolder conversation,
             String title,
-            boolean multi, String settings, AgentBase agent, boolean teamMemberSelection) {
-        super(shell, //conversation,
-                title, multi, settings, agent, teamMemberSelection);
-        // TODO Auto-generated constructor stub
+            boolean multi, String settings, TeamOrPersonBase agent, boolean teamMemberSelection) {
+        super(shell, title, multi, settings, agent, teamMemberSelection);
+
     }
 
     @Override
     protected void callService(String pattern) {
-        model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern, null);
+        model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(Team.class, limitOfInitialElements, pattern);
+        model.addAll(CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(Person.class, limitOfInitialElements, pattern));
     }
 
     /** {@inheritDoc} */
@@ -87,11 +89,11 @@ public class NomenclaturalAuthorSelectionDialog extends AgentSelectionDialog {
      * @param entity a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
      * @return a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
      */
-    public static AgentBase select(Shell shell, //ConversationHolder conversation,
-            AgentBase entity, boolean teamMemberSelection) {
+    public static TeamOrPersonBase select(Shell shell, //ConversationHolder conversation,
+            TeamOrPersonBase entity, boolean teamMemberSelection) {
         NomenclaturalAuthorSelectionDialog dialog = new NomenclaturalAuthorSelectionDialog(shell, //conversation,
                 "Choose Agent", false, NomenclaturalAuthorSelectionDialog.class.getCanonicalName(), entity, teamMemberSelection);
-        return getSelectionFromDialog(dialog);
+        return (TeamOrPersonBase)getSelectionFromDialog(dialog);
     }
 
     /**
@@ -101,17 +103,14 @@ public class NomenclaturalAuthorSelectionDialog extends AgentSelectionDialog {
      * @return a {@link java.lang.String} object.
      */
     @Override
-    protected String getTitle(AgentBase cdmObject) {
+    protected String getTitle(TeamOrPersonBase cdmObject) {
         if(cdmObject == null){
             return "";
         }
 
-        if (cdmObject instanceof TeamOrPersonBase) {
-            return ((TeamOrPersonBase) cdmObject).getNomenclaturalTitle();
-        } else if (cdmObject instanceof AgentBase){
-            return ((TeamOrPersonBase) cdmObject).getTitleCache();
+        if (cdmObject instanceof INomenclaturalAuthor) {
+            return ((INomenclaturalAuthor)cdmObject).getNomenclaturalTitle();
         }
-
         throw new IllegalArgumentException("Generic method only" +
                 " supports cdmObject of type IIdentifiableEntity." +
                 " Please implement specific method in subclass.");
index 1725708606317ac38f886157fc5331b23f79aa87..cb576cee581847ceca0c51fca54e9453882f4d07 100644 (file)
@@ -98,6 +98,6 @@ public class NomenclaturalAuthorTeamSelectionDialog extends
      */
     @Override
     void callService(String pattern) {
-        model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern, Team.class);
+        model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(Team.class, limitOfInitialElements, pattern);
     }
 }
index fb2049159975044f4f82d1e2fb110d817c4bd207..81347bb6de26d9deca7e1251029c5765f7faae1e 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.ui.dialog.selection;
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.IAgentService;
-import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -32,7 +32,7 @@ public class NomenclaturalPersonAuthorSelectionDialog extends NomenclaturalAutho
      */
     protected NomenclaturalPersonAuthorSelectionDialog(Shell shell, //ConversationHolder conversation,
             String title,
-            boolean multi, String settings, AgentBase agent, boolean teamMemberSelection) {
+            boolean multi, String settings, TeamOrPersonBase agent, boolean teamMemberSelection) {
         super(shell, //conversation,
                 title, multi, settings, agent, teamMemberSelection);
         // TODO Auto-generated constructor stub
@@ -47,16 +47,16 @@ public class NomenclaturalPersonAuthorSelectionDialog extends NomenclaturalAutho
      * @param entity a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
      * @return a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
      */
-    public static AgentBase select(Shell shell, //ConversationHolder conversation,
-            AgentBase entity, boolean teamMemberSelection) {
+    public static TeamOrPersonBase select(Shell shell, //ConversationHolder conversation,
+            TeamOrPersonBase entity, boolean teamMemberSelection) {
         NomenclaturalPersonAuthorSelectionDialog dialog = new NomenclaturalPersonAuthorSelectionDialog(shell, //conversation,
                 "Choose Agent", false, NomenclaturalAuthorSelectionDialog.class.getCanonicalName(), entity,teamMemberSelection);
-        return getSelectionFromDialog(dialog);
+        return (TeamOrPersonBase)getSelectionFromDialog(dialog);
     }
 
     @Override
     protected void callService(String pattern) {
-        model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern, Person.class);
+        model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(Person.class, limitOfInitialElements, pattern);
     }
 
 }
index c947c08f905e99d8077431479093490624b7deff..f9942d69ab01ee62810314bf240c2fdc6f71c16c 100644 (file)
@@ -15,7 +15,7 @@ import java.util.EnumSet;
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
 
 /**
@@ -33,7 +33,7 @@ public class OriginalSourceTypeSelectionDialog extends
         *
         * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
         * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
-        * @return a {@link eu.etaxonomy.cdm.model.common.OriginalSourceType} object.
+        * @return a {@link eu.etaxonomy.cdm.model.reference.OriginalSourceType} object.
         */
        public static OriginalSourceType select(Shell shell, ConversationHolder conversation){
                OriginalSourceTypeSelectionDialog dialog =
index 2cecdd2a9608b9acb0faed5e1372eca02413d476..39de3df52e10b7d2c352941c7a4c9ed17cb68675 100644 (file)
@@ -223,6 +223,7 @@ public class ReferenceSelectionDialog extends AbstractFilteredCdmResourceSelecti
             @Override
             public void widgetSelected(SelectionEvent e) {
                 useIdentifier = btnCheckButton.getSelection();
+                search();
             }
         });
     }
index e16be308f04885e846117e09e8fbd330488c3223..c8d9eba8ca668b064b7fdc4c76897294663a502f 100644 (file)
@@ -21,7 +21,6 @@ import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.location.Country;
@@ -41,6 +40,7 @@ import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -48,9 +48,13 @@ import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
 import eu.etaxonomy.taxeditor.ui.section.agent.TeamMemberElement;
 import eu.etaxonomy.taxeditor.ui.section.description.CommonNameSourceElement;
 import eu.etaxonomy.taxeditor.ui.section.description.detail.CommonNameDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection;
 
 /**
  * @author n.hoffmann
@@ -113,15 +117,15 @@ public class SelectionDialogFactory {
                }
                if(clazz.equals(TeamOrPersonBase.class) && parentElement instanceof AuthorshipDetailElement){
             return (T) NomenclaturalAuthorSelectionDialog.select(shell, //conversation,
-                    (AgentBase) currentSelection, false);
+                    (TeamOrPersonBase) currentSelection, false);
         }else if(clazz.equals(TeamOrPersonBase.class)){
                    //TODO: add TeamOrPersonBaseSelectionDialog (see ticket #4545)
-                   return (T) AgentSelectionDialog.select(shell, //conversation,
-                           (AgentBase) currentSelection, false);
+                   return (T) TeamOrPersonBaseSelectionDialog.select(shell, //conversation,
+                           (TeamOrPersonBase) currentSelection, false);
                }
                if(clazz.equals(Person.class) && parentElement instanceof TeamMemberElement){
                    return (T) NomenclaturalPersonAuthorSelectionDialog.select(shell, //conversation,
-                           (AgentBase) currentSelection, true);
+                           (TeamOrPersonBase) currentSelection, true);
         }
                if(clazz.equals(AgentBase.class)){
                        return (T) AgentSelectionDialog.select(shell, //conversation,
@@ -174,9 +178,10 @@ public class SelectionDialogFactory {
                        return (T) CollectionSelectionDialog.select(shell, //conversation,
                                (Collection) currentSelection);
                }
-               if(clazz.equals(User.class)){
+               if(clazz.equals(User.class) && parentElement instanceof MemberDetailElement){
+                   MemberDetailSection section = (MemberDetailSection)((MemberDetailElement)parentElement).getParentElement();
                        return (T) UserSelectionDialog.select(shell, //conversation,
-                               (User) currentSelection);
+                               (User) currentSelection, section.getEntity());
                }
                if(clazz.equals(GrantedAuthorityImpl.class)){
                        return (T) GrantedAuthoritySelectionDialog.select(shell, //conversation,
@@ -186,9 +191,10 @@ public class SelectionDialogFactory {
                        return (T) PersonSelectionDialog.select(shell, //conversation,
                                (Person) currentSelection);
                }
-               if(clazz.equals(Group.class)){
+               if(clazz.equals(Group.class) &&  parentElement instanceof GroupsByUserDetailElement){
+                   GroupsByUserDetailSection section =(GroupsByUserDetailSection)((GroupsByUserDetailElement)parentElement).getParentElement();
                        return (T) GroupSelectionDialog.select(shell, //conversation,
-                               (Group) currentSelection);
+                               (Group) currentSelection, section.getEntity());
                }
                if(clazz.equals(Institution.class)){
                        return (T) InstitutionSelectionDialog.select(shell, //conversation,
index 86ecfcc1eeffb469811a33379f8ec5c889bf454e..15df121d38aacdc3933ed050316a2685db300904 100644 (file)
@@ -26,7 +26,7 @@ public class SpecimenOrObservationTypeSelectionDialog extends
         *
         * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
         * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
-        * @return a {@link eu.etaxonomy.cdm.model.common.OriginalSourceType} object.
+        * @return a {@link eu.etaxonomy.cdm.model.reference.OriginalSourceType} object.
         */
        public static SpecimenOrObservationType select(Shell shell, ConversationHolder conversation){
                SpecimenOrObservationTypeSelectionDialog dialog =
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TeamOrPersonBaseSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TeamOrPersonBaseSelectionDialog.java
new file mode 100755 (executable)
index 0000000..a622e30
--- /dev/null
@@ -0,0 +1,75 @@
+/**
+* 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.ui.dialog.selection;
+
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.api.service.IAgentService;
+import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @since 18.03.2019
+ *
+ */
+public class TeamOrPersonBaseSelectionDialog extends AgentSelectionDialog<TeamOrPersonBase>  {
+
+    /**
+     * @param shell
+     * @param title
+     * @param multi
+     * @param settings
+     * @param agent
+     * @param selectTeamMember
+     */
+    protected TeamOrPersonBaseSelectionDialog(Shell shell, String title, boolean multi, String settings,
+            TeamOrPersonBase agent, boolean selectTeamMember) {
+        super(shell, title, multi, settings, agent, selectTeamMember);
+        // TODO Auto-generated constructor stub
+    }
+
+
+
+    /**
+     * <p>select</p>
+     *
+     * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
+     * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+     * @param entity a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
+     * @return a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
+     */
+    public static TeamOrPersonBase select(Shell shell, //ConversationHolder conversation,
+            TeamOrPersonBase entity, boolean selectTeamMember) {
+        TeamOrPersonBaseSelectionDialog dialog = new TeamOrPersonBaseSelectionDialog(shell, //conversation,
+                "Choose Team or Person", false, TeamOrPersonBaseSelectionDialog.class.getCanonicalName(), entity, selectTeamMember);
+        return (TeamOrPersonBase)getSelectionFromDialog(dialog);
+    }
+
+    @Override
+    void callService(String pattern) {
+        model = CdmStore.getService(IAgentService.class).getUuidAndTitleCache(Team.class,limitOfInitialElements, pattern);
+        model.addAll( CdmStore.getService(IAgentService.class).getUuidAndTitleCache(Person.class,limitOfInitialElements, pattern));
+    }
+
+
+
+    /**
+     * @param cdmObject
+     * @return
+     */
+    protected String getTitle(TeamOrPersonBase cdmObject) {
+        if(cdmObject == null){
+            return "";
+        }
+        return cdmObject.getTitleCache();
+    }
+}
index 589a37f7770bf3cc7fb79d697a6ef6bea731b75d..10beb90b3e99fb38e5bfe8c3c0634f4f446d9caf 100644 (file)
@@ -16,8 +16,8 @@ import java.util.UUID;
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
 import eu.etaxonomy.taxeditor.newWizard.NewFeatureVocabularyWizard;
 import eu.etaxonomy.taxeditor.store.CdmStore;
@@ -80,7 +80,7 @@ public class TermVocabularySelectionDialog extends
 
        @Override
        protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
-        return new NewFeatureVocabularyWizard();
+        return new NewFeatureVocabularyWizard(termType);
        }
 
 }
index 986a1f6f8912da8f18150e56d5fd187d73618d5d..45e6bdca2af05f82bd4bd57a9fd850ebf8676200 100644 (file)
@@ -11,12 +11,14 @@ package eu.etaxonomy.taxeditor.ui.dialog.selection;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import java.util.UUID;
 
 import org.eclipse.swt.widgets.Shell;
 
 import eu.etaxonomy.cdm.api.service.IUserService;
 import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
 import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
@@ -31,6 +33,9 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class UserSelectionDialog extends
                AbstractFilteredCdmResourceSelectionDialog<User> {
 
+    Group group;
+    Set<User> groupMembers;
+
        /**
         *
         * @param shell
@@ -39,9 +44,9 @@ public class UserSelectionDialog extends
         * @return
         */
        public static User select(Shell shell, //ConversationHolder conversation,
-               User user){
+               User user, Group group){
                UserSelectionDialog dialog = new UserSelectionDialog(shell, //conversation,
-                               "Choose User", false, UserSelectionDialog.class.getCanonicalName(), user);
+                               "Choose User", false, UserSelectionDialog.class.getCanonicalName(), user, group);
                return getSelectionFromDialog(dialog);
        }
 
@@ -54,9 +59,11 @@ public class UserSelectionDialog extends
         * @param cdmObject
         */
        protected UserSelectionDialog(Shell shell, //ConversationHolder conversation,
-                       String title, boolean multi, String settings, User cdmObject) {
+                       String title, boolean multi, String settings, User cdmObject, Group group) {
                super(shell, //conversation,
                        title, multi, settings, cdmObject);
+               this.group = group;
+               groupMembers = group.getMembers();
        }
 
        /* (non-Javadoc)
@@ -70,6 +77,9 @@ public class UserSelectionDialog extends
 
                for(User user : users){
                    if (pattern == null || user.getUsername().matches(CdmUtils.quoteRegExWithWildcard(pattern) + ".*")) {
+                       if (groupMembers != null && !groupMembers.isEmpty() && groupMembers.contains(user)){
+                          continue;
+                       }
                 model.add(new UuidAndTitleCache<User>(User.class, user.getUuid(), user.getId(), String.format("%s, %s", user.getUsername(), user.getPerson())));
             }
                }
index b0b96ae692ab6d7de202212156f27c7334be7b8e..61f55e559e3be15746d0da0f4cf669717ed73893 100644 (file)
@@ -56,23 +56,16 @@ import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Credit;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Extension;
 import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Identifier;
 import eu.etaxonomy.cdm.model.common.LSID;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.Marker;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
@@ -116,6 +109,13 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
@@ -620,7 +620,7 @@ public class CdmFormFactory extends FormToolkit {
      *            object.
      *
      * @param Representation
-     *            a {@link eu.etaxonomy.cdm.model.common.Representation} object.
+     *            a {@link eu.etaxonomy.cdm.model.term.Representation} object.
      * @param textHeight
      *            a int.
      * @param style
@@ -646,7 +646,7 @@ public class CdmFormFactory extends FormToolkit {
      *            object.
      *
      * @param Representation
-     *            a {@link eu.etaxonomy.cdm.model.common.Representation} object.
+     *            a {@link eu.etaxonomy.cdm.model.term.Representation} object.
      * @param textHeight
      *            a int.
      * @param style
@@ -662,58 +662,6 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
-    /**
-     * <p>
-     * createMultiLanguageTextElement
-     * </p>
-     *
-     * @param parentElement
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-     *            object.
-     *
-     * @param term
-     *            a {@link eu.etaxonomy.cdm.model.common.Representation} object.
-     * @param textHeight
-     *            a int.
-     * @param style
-     *            a int.
-     * @return a
-     *         {@link eu.etaxonomy.taxeditor.ui.element.RepresentationElement}
-     *         object.
-     */
-    public RepresentationElement createRepresentationElement(ICdmFormElement parentElement, TermBase term, int textHeight, int style, boolean fillDetails) {
-        RepresentationElement element = new RepresentationElement(this, parentElement, term, textHeight, style, fillDetails);
-        adapt(element);
-        parentElement.addElement(element);
-        return element;
-    }
-
-    /**
-     * <p>
-     * createMultiLanguageTextElement
-     * </p>
-     *
-     * @param parentElement
-     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-     *            object.
-     *
-     * @param term
-     *            a {@link eu.etaxonomy.cdm.model.common.Representation} object.
-     * @param textHeight
-     *            a int.
-     * @param style
-     *            a int.
-     * @return a
-     *         {@link eu.etaxonomy.taxeditor.ui.element.RepresentationElement}
-     *         object.
-     */
-    public TranslatableRepresentationElement createTranslatableRepresentationElement(ICdmFormElement parentElement, TermBase term, int textHeight, int style, boolean fillDetails) {
-        TranslatableRepresentationElement element = new TranslatableRepresentationElement(this, parentElement, term, textHeight, style, fillDetails);
-        adapt(element);
-        parentElement.addElement(element);
-        return element;
-    }
-
     public KeyStatementElement createKeyStatementElement(ICdmFormElement parentElement, String labelString,
             KeyStatement keyStatement, int textHeight, int style) {
         KeyStatementElement element = new KeyStatementElement(this, parentElement, labelString, keyStatement,
@@ -955,7 +903,7 @@ public class CdmFormFactory extends FormToolkit {
             T selection,
             int style,
             Comparator<T> comparator) {
-        return this.createDefinedTermComboElement(termType, null, parentElement, labelString, selection, true, style, false, comparator);
+        return this.createDefinedTermComboElement(termType, null, null, parentElement, labelString, selection, true, style, false, comparator);
     }
 
     public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
@@ -965,7 +913,7 @@ public class CdmFormFactory extends FormToolkit {
                        T selection,
                        boolean addEmptyElement,
                        int style) {
-        return this.createDefinedTermComboElement(termType, null, parentElement, labelString, selection, addEmptyElement, style, false, null);
+        return this.createDefinedTermComboElement(termType, null, null, parentElement, labelString, selection, addEmptyElement, style, false, null);
        }
 
        public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
@@ -974,8 +922,17 @@ public class CdmFormFactory extends FormToolkit {
                        String labelString,
                        T selection,
                        int style) {
-               return  this.createDefinedTermComboElement(termType, null, parentElement, labelString, selection, true, style, false, null);
+               return  this.createDefinedTermComboElement(termType, null, null, parentElement, labelString, selection, true, style, false, null);
        }
+
+       public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
+            List<T> terms,
+            ICdmFormElement parentElement,
+            String labelString,
+            T selection,
+            int style) {
+        return  this.createDefinedTermComboElement(null, null, terms, parentElement, labelString, selection, true, style, false, null);
+    }
     public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
                        TermType termType,
                        ICdmFormElement parentElement,
@@ -984,7 +941,7 @@ public class CdmFormFactory extends FormToolkit {
                        boolean addEmptyElement,
                        int style,
                        boolean useAbbrevLabel) {
-               return createDefinedTermComboElement(termType, null, parentElement, labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
+               return createDefinedTermComboElement(termType, null, null, parentElement, labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
        }
 
 
@@ -994,7 +951,7 @@ public class CdmFormFactory extends FormToolkit {
             String labelString,
             T selection,
             int style) {
-        return this.createDefinedTermComboElement(null, termVocabulary, parentElement, labelString, selection, true, style, false, null);
+        return this.createDefinedTermComboElement(null, termVocabulary, null, parentElement, labelString, selection, true, style, false, null);
     }
 
        public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
@@ -1005,12 +962,13 @@ public class CdmFormFactory extends FormToolkit {
                boolean addEmptyElement,
                int style,
                boolean useAbbrevLabel) {
-           return createDefinedTermComboElement(null, termVocabulary, parentElement, labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
+           return createDefinedTermComboElement(null, termVocabulary, null, parentElement, labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
        }
 
        private <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
                TermType termType,
                TermVocabulary<?> termVocabulary,
+               List<T> terms,
                ICdmFormElement parentElement,
                String labelString,
                T selection,
@@ -1032,6 +990,15 @@ public class CdmFormFactory extends FormToolkit {
                adapt(element);
                parentElement.addElement(element);
                return element;
+           }else if (terms != null){
+
+               TermComboElement<T> element = new TermComboElement<T>(this, parentElement, terms, labelString, selection, addEmptyElement, style, useAbbrevLabel);
+            if (comparator!= null){
+                element.setTermComparator(comparator);
+            }
+            adapt(element);
+            parentElement.addElement(element);
+            return element;
            }
            else {
                //this should never happen
@@ -1328,6 +1295,8 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+
+
        /**
         * <p>
         * createGatheringEventUnitElement
index 09e794851d1a557ecc440a4989eee583b093683d..e1f2ea1261de26374a7f09bc1d00ebe8c4aee9fa 100644 (file)
@@ -131,7 +131,10 @@ public class CheckboxElement extends AbstractCdmFormElement implements Selection
        /** {@inheritDoc} */
        @Override
        public void setBackground(Color color) {
-               checkbox.setBackground(color);
+           if (checkbox.isDisposed()){
+               return;
+           }
+           checkbox.setBackground(color);
                if (label != null) {
             label.setBackground(color);
         }
index 4aebc7c55a9a73305a58b87625a8389daaca8d50..8127b1ca57eb024a93364682fe8187186d3ffbe7 100644 (file)
@@ -27,7 +27,7 @@ import org.eclipse.swt.widgets.Button;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
index a2c97edb1eab5f754fead5601dfae20c7d2ea207..e43d684f6badd7e9b2a53fe7b945ad57d36b6e53 100644 (file)
@@ -14,7 +14,7 @@ import java.text.ParseException;
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.jface.util.PropertyChangeEvent;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.location.Point;
 import eu.etaxonomy.cdm.model.location.ReferenceSystem;
 import eu.etaxonomy.taxeditor.preference.Resources;
index 9f28709171a2a5e301cb0cd4be490f85fbfa9976..969a42a21f06160e2f766bf8d92a6ad266718c48 100644 (file)
@@ -15,7 +15,6 @@ package eu.etaxonomy.taxeditor.ui.element;
  */
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -23,13 +22,12 @@ import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.widgets.Button;
 
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -37,83 +35,28 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 
 
-public class RepresentationElement  extends AbstractCdmFormElement implements
-SelectionListener{
+public class RepresentationElement extends AbstractCdmFormElement {
 
         protected TermComboElement<Language> combo_language;
 
         protected TextWithLabelElement element_Label;
         protected TextWithLabelElement element_abbrevLabel;
+        protected TextWithLabelElement element_plural;
         protected TextWithLabelElement element_text;
 
         protected Button button;
-       
+
         protected Representation selectedRepresentation;
         protected TermBase term;
 
                private Button removeRepresentation;
 
-       // protected final boolean isTranslationWizard;
-
-
-        /**
-         * <p>
-         * Constructor for MultilanguageTextElement.
-         * </p>
-         *
-         * @param formFactory
-         *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-         *            object.
-         * @param formElement
-         *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-         *            object.
-         *
-         * @param term
-         *            a {@link eu.etaxonomy.cdm.model.common.TermBase} object.
-         * @param textHeight
-         *            a {@link java.lang.Integer} object.
-         * @param style
-         *            a int.
-         */
         public RepresentationElement(CdmFormFactory formFactory,
                 ICdmFormElement formElement, TermBase term,
                 Integer textHeight, int style, boolean fill) {
-            super(formFactory, formElement);
-
-            formFactory.addPropertyChangeListener(this);
-
-            element_Label = this.formFactory.createTextWithLabelElement(formElement, "Label", null, style);
-            element_abbrevLabel = this.formFactory
-                    .createTextWithLabelElement(formElement, "abbrev. Label",
-                            null, style);
-            element_text = this.formFactory.createMultiLineTextWithLabel(formElement, "Description", textHeight, style);
-            if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
-                createRepresentationEditingElements(formElement, style);
-            }
-            setTerm(term, fill);
-
+            this(formFactory, formElement, null, term, textHeight, style, fill);
         }
 
-        /**
-         * <p>
-         * Constructor for MultilanguageTextElement.
-         * </p>
-         *
-         * @param formFactory
-         *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
-         *            object.
-         * @param formElement
-         *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-         *            object.
-         * @param representation
-         *            a {@link eu.etaxonomy.cdm.model.common.Representation} object.
-         * @param term
-         *            a {@link eu.etaxonomy.cdm.model.common.TermBase} object.
-         * @param textHeight
-         *            a {@link java.lang.Integer} object.
-         * @param style
-         *            a int.
-         */
         public RepresentationElement(CdmFormFactory formFactory,
                 ICdmFormElement formElement, Representation representation, TermBase term,
                 Integer textHeight, int style, boolean fill) {
@@ -122,16 +65,16 @@ SelectionListener{
             formFactory.addPropertyChangeListener(this);
 
             element_Label = this.formFactory.createTextWithLabelElement(formElement, "Label", null, style);
-            element_abbrevLabel = this.formFactory
-                    .createTextWithLabelElement(formElement, "abbrev. Label",
-                            null, style);
+            element_abbrevLabel = this.formFactory.createTextWithLabelElement(formElement, "abbrev. Label", null, style);
+            element_plural = this.formFactory.createTextWithLabelElement(formElement, "Plural", null, style);
             element_text = this.formFactory.createMultiLineTextWithLabel(formElement, "Description", textHeight, style);
             if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                 createRepresentationEditingElements(formElement, style);
             }
             setTerm(term, fill);
-            setSelectedRepresentation(representation);
-
+            if(representation!=null){
+                setSelectedRepresentation(representation);
+            }
 
         }
 
@@ -144,13 +87,10 @@ SelectionListener{
                removeRepresentation.setToolTipText("Remove representation");
                removeRepresentation.addSelectionListener(new DeleteListener(this));
                addControl(removeRepresentation);
-               
+
             combo_language = formFactory.createDefinedTermComboElement(TermType.Language, formElement,
                             "", null, false, style);
 
-            combo_language.addSelectionListener(this);
-            
-            //addControl(formFactory.createLabel(getLayoutComposite(), ""));
        }
 
         public List<Language> getLanguages() {
@@ -165,56 +105,6 @@ SelectionListener{
             return languageList;
         }
 
-        /*
-         * (non-Javadoc)
-         *
-         * @see
-         * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
-         * .events.SelectionEvent)
-         */
-        /** {@inheritDoc} */
-        @Override
-        public void widgetSelected(SelectionEvent e) {
-            Language selectedLanguage = combo_language.getSelection();
-            if (selectedLanguage != null) {
-                selectedRepresentation = getTerm().getRepresentation(
-                        selectedLanguage);
-                if (selectedRepresentation == null){
-                    selectedRepresentation = Representation.NewInstance("", "", "", selectedLanguage);
-                }
-                element_Label.setText(selectedRepresentation.getLabel());
-                element_abbrevLabel.setText(selectedRepresentation.getAbbreviatedLabel());
-                element_text.setText(selectedRepresentation.getDescription());
-                
-            }else {
-                
-                element_Label.setEnabled(false);
-                 element_abbrevLabel.setEnabled(false);
-                 element_text.setEnabled(false);
-            }
-
-        }
-
-        /*
-         * (non-Javadoc)
-         *
-         * @see
-         * org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
-         * .swt.events.SelectionEvent)
-         */
-        /** {@inheritDoc} */
-        @Override
-        public void widgetDefaultSelected(SelectionEvent e) {
-        }
-
-        /**
-         * <p>
-         * Setter for the field <code>multilanguageText</code>.
-         * </p>
-         *
-         * @param multilanguageText
-         *            the multilanguageText to set
-         */
         public void setTerm(
                 TermBase term, boolean update) {
             this.term = term;
@@ -226,11 +116,9 @@ SelectionListener{
 
             if (selectedRepresentation != null) {
                combo_language.setTerms(getLanguages());
-               
+
             } else{
-                element_Label.setEnabled(false);
-                 element_abbrevLabel.setEnabled(false);
-                 element_text.setEnabled(false);
+                setEnabledControls(false);
                  if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                         removeRepresentation.setEnabled(false);
                  }
@@ -240,44 +128,34 @@ SelectionListener{
             }
         }
 
-        /**
-         *
-         */
+        private void setEnabledControls(boolean enabled){
+            element_Label.setEnabled(enabled);
+            element_abbrevLabel.setEnabled(enabled);
+            element_plural.setEnabled(enabled);
+            element_text.setEnabled(enabled);
+        }
+
         protected void updateControls() {
             Representation preferredRepresentation = term
                     .getPreferredRepresentation(PreferencesUtil.getGlobalLanguage() );
 
             element_Label.setText(preferredRepresentation.getLabel());
             element_abbrevLabel.setText(preferredRepresentation.getAbbreviatedLabel());
+            element_plural.setText(preferredRepresentation.getPlural());
             element_text.setText(preferredRepresentation.getDescription());
             selectedRepresentation = preferredRepresentation;
             if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
                 combo_language.setSelection(preferredRepresentation == null?CdmStore.getDefaultLanguage():preferredRepresentation.getLanguage());
                 boolean removePossible = term.getRepresentations().size() > 1 ;
                 removeRepresentation.setEnabled(removePossible);
-                
+
             }
         }
 
-        /**
-         * <p>
-         * Getter for the field <code>multilanguageText</code>.
-         * </p>
-         *
-         * @return the multilanguageText
-         */
         public TermBase getTerm() {
             return term;
         }
 
-        /*
-         * (non-Javadoc)
-         *
-         * @see
-         * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
-         * .eclipse.jface.util.PropertyChangeEvent)
-         */
-        /** {@inheritDoc} */
         @Override
         public void propertyChange(PropertyChangeEvent event) {
             if (event == null) {
@@ -290,6 +168,12 @@ SelectionListener{
                         .getText();
                 selectedRepresentation.setAbbreviatedLabel(abbrevLabel);
                 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
+            }
+            else if (eventSource == element_plural){
+                String plural = ((TextWithLabelElement) eventSource)
+                        .getText();
+                selectedRepresentation.setPlural(plural);
+                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
             } else if (eventSource == element_Label){
                 String label = ((TextWithLabelElement) eventSource)
                         .getText();
@@ -303,39 +187,44 @@ SelectionListener{
             } else if (eventSource == button){
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
             } else if (eventSource == combo_language){
-               if (combo_language.getSelection() != null){
-                       element_Label.setEnabled(true);
-                       element_abbrevLabel.setEnabled(true);
-                       element_text.setEnabled(true);
-                        boolean removePossible = term.getRepresentations().size() > 1 ;
-                     removeRepresentation.setEnabled(removePossible);
-               } else{
-                        element_Label.setEnabled(false);
-                     element_abbrevLabel.setEnabled(false);
-                     element_text.setEnabled(false);
-                     removeRepresentation.setEnabled(false);
-               }
-               firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
+                if (combo_language.getSelection() != null){
+                    setEnabledControls(true);
+                    boolean removePossible = term.getRepresentations().size() > 1 ;
+                    removeRepresentation.setEnabled(removePossible);
+
+                    Language selectedLanguage = combo_language.getSelection();
+                    if (selectedLanguage != null) {
+                        selectedRepresentation = getTerm().getRepresentation(selectedLanguage);
+                        if (selectedRepresentation == null){
+                            selectedRepresentation = Representation.NewInstance("", "", "", selectedLanguage);
+                        }
+                        element_Label.setText(selectedRepresentation.getLabel());
+                        element_abbrevLabel.setText(selectedRepresentation.getAbbreviatedLabel());
+                        element_plural.setText(selectedRepresentation.getPlural());
+                        element_text.setText(selectedRepresentation.getDescription());
+
+                    }else {
+                        setEnabledControls(false);
+                    }
+                } else{
+                    setEnabledControls(false);
+                    removeRepresentation.setEnabled(false);
+                }
+                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
             }
         }
 
-        /**
-         * @return the selectedRepresentation
-         */
         public Representation getSelectedRepresentation() {
             return selectedRepresentation;
         }
 
-        /**
-         * @param selectedRepresentation the selectedRepresentation to set
-         */
         public void setSelectedRepresentation(Representation selectedRepresentation) {
             if (selectedRepresentation == null){
                 selectedRepresentation = Representation.NewInstance("", "", "", null);
             }
             this.selectedRepresentation = selectedRepresentation;
         }
-        
+
         private class DeleteListener extends SelectionAdapter {
 
                private final RepresentationElement element;
index 14fa37af005e816d11708d448891c872c01efa22..c2810146084ebd1c5de29a6e6cc8c36ff5e3c196 100644 (file)
@@ -14,9 +14,9 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermTranslationWizard;
index 2ddd85efc768d76fd4b1f1c49f5d43059ffa99f6..fe420b006e3069daa685c1fe89120d9cca65cf2a 100644 (file)
@@ -18,7 +18,7 @@ import org.eclipse.ui.forms.widgets.FormToolkit;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite;
index c65751942c8f5b8e378da959eff5c7bb4c1d0ec8..f1e2f8507765a41e4df006c4a7b88e5008fa7814 100644 (file)
@@ -21,8 +21,8 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
index f1362eb1ffff63ca17a5c578e07432f4a1199923..9b8234877b61fa9bc65dedfe7523e18e2e0b19cc 100644 (file)
@@ -24,7 +24,7 @@ import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.TextData;
index 783f6ff133d4717948efd13724b7ea3833ce4100..eee1b0ca724b53677fa58dccbb88e5ecb1837a37 100644 (file)
@@ -141,10 +141,16 @@ public abstract class AbstractEntityCollectionSection<ENTITY, ELEMENT> extends A
                    toolBarManager.add(browseAction);
                }
 
+               addAction(toolBarManager);
+
                return toolBarManager.createControl(this);
        }
 
-       /**
+    protected void addAction(ToolBarManager toolBarManager) {
+        // default implementation empty
+    }
+
+    /**
         * using this method is discouraged, use updateToolBar() instead
         */
        public void showToolbar(){
@@ -335,7 +341,7 @@ public abstract class AbstractEntityCollectionSection<ENTITY, ELEMENT> extends A
            }
        }
 
-    private void updateToolbar() {
+    protected void updateToolbar() {
         if(getEntity() != null && CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), UPDATE)){
             showToolbar();
         } else {
index d0d9db187e898f86f5286e4452682020873c3a2a..330afbe5fd5f73c2f14eb0ba7cad84412c141170 100644 (file)
@@ -12,8 +12,8 @@ import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
index 38ce05dfccc0bea59a2550efc619060d2c27dd78..729dc0a8c2fa65775e18213ebddd99e0c0108c11 100644 (file)
@@ -107,10 +107,22 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
 //                             .createSelectionElement(Classification.class,//getConversationHolder(),
 //                                     formElement, "Classification",
 //                                             null, EntitySelectionElement.DELETABLE, style);
+
                selection_parentTaxonNode = formFactory
                                .createTaxonNodeSelectionElement(getConversationHolder(), formElement, "Parent", parentTreeNode,
                                                EntitySelectionElement.DELETABLE, style);
 
+
+
+               selection_Ref = formFactory
+                    .createSelectionElement(Reference.class,
+                            formElement, "Parent Child Relation Source", null,
+                            EntitySelectionElement.DELETABLE, style);
+
+
+            microReference = formFactory.createTextWithLabelElement(formElement,"Detail", "", style);
+            microReference.setText(getEntity().getMicroReference());
+
                selection_reuseExistingTaxon = formFactory
                                .createSelectionElement(Taxon.class,//getConversationHolder(),
                                        formElement,
@@ -135,9 +147,13 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
 
                }
            }else{
-               TextWithLabelElement textClassification = formFactory.createTextWithLabelElement(formElement,"Classification", entity.getClassification().getTitleCache(), style);
-               textClassification.setEnabled(false);
-
+               if (entity.getParent().getTaxon() == null){
+                   TextWithLabelElement textParent = formFactory.createTextWithLabelElement(formElement,"Classification", entity.getClassification().getTitleCache(), style);
+                textParent.setEnabled(false);
+               }else{
+                   TextWithLabelElement textParent = formFactory.createTextWithLabelElement(formElement,"Parent", entity.getParent().getTaxon().getTitleCache(), style);
+                   textParent.setEnabled(false);
+               }
 //             TextWithLabelElement textTaxon = formFactory.createTextWithLabelElement(formElement,"Taxon", taxon.getTitleCache(), style);
 //             textTaxon.setEnabled(false);
 
@@ -157,14 +173,11 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
 
            }
 
-           selection_Ref = formFactory
-                .createSelectionElement(Reference.class,//getConversationHolder(),
-                        formElement, "Parent Child Relation Source", null,
-                        EntitySelectionElement.DELETABLE, style);
-        microReference = formFactory.createTextWithLabelElement(formElement,"Detail", "", style);
-        microReference.setText(getEntity().getMicroReference());
+
         if (!isCreateNew()){
-            selection_Ref.setEntity(entity.getReference());
+            if (entity.getReference() != null){
+                selection_Ref.setEntity(entity.getReference());
+            }
         }
         parentTreeNode = entity.getParent();
 
@@ -225,9 +238,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
                    selectionNodeAgentRelation.setEntity(entity);
                    selectionNodeAgentRelation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
                }
-//             checkbox_openInEditor = formFactory.createCheckbox(formElement,
-//                     "Open in Editor", true, style);
-//             setOpenInEditor(true);
+
        }
 
        private void preFillTaxonName() {
@@ -283,6 +294,11 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
                        }
                        checkbox_publish.setSelected(getTaxon().isPublish());
             }
+                   boolean enabled = selection_reuseExistingTaxon.getEntity() == null;
+                   if (selection_reuseExistingName != null){
+                       selection_reuseExistingName.setEnabled(enabled);
+            }
+               textNewTaxonName.setEnabled(enabled);
                        complete = true;
                } else if (eventSource == selection_reuseExistingName) {
                    boolean enabled = selection_reuseExistingName.getEntity() == null;
@@ -339,9 +355,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<TaxonNode>
                return classification;
        }
 
-//     public boolean isOpenInEditor() {
-//             return openInEditor;
-//     }
+
 
        public ITaxonTreeNode getParentTreeNode() {
                return parentTreeNode;
index f7b67c5c0b7e54ece5ad2010de8c0bba2bea6b54..c1b0aeacb696299cfb03afbcc103184db97540bf 100755 (executable)
@@ -12,7 +12,7 @@ import java.util.Collection;
 import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
 import eu.etaxonomy.cdm.model.media.ExternalLink;
 import eu.etaxonomy.cdm.model.media.ExternalLinkType;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
index 93a2234d39196e829060765de7fd08fd924782ee..305e10396a76664619f0c46e7998c708385fbc7a 100644 (file)
@@ -1,23 +1,22 @@
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* 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.ui.section.description;
 
-import org.eclipse.swt.SWT;
+import java.util.Arrays;
+
+import org.eclipse.jface.util.PropertyChangeEvent;
 
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
 
 /**
  * <p>DescriptionDetailElement class.</p>
@@ -26,46 +25,47 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
  * @created Mar 5, 2010
  * @version 1.0
  */
-public class DescriptionDetailElement extends AbstractCdmDetailElement<DescriptionBase> {
+public class DescriptionDetailElement extends AbstractIdentifiableEntityDetailElement<DescriptionBase> {
 
-       private TextWithLabelElement detailDescription;
-       private EntitySelectionElement<FeatureTree> selection_featureTree;
+//     private EntitySelectionElement<FeatureTree> selection_featureTree;
 
-       /**
-        * <p>Constructor for DescriptionDetailElement.</p>
-        *
-        * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
-        * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
-        * @param style a int.
-        */
        public DescriptionDetailElement(CdmFormFactory cdmFormFactory,
                        ICdmFormElement formElement, int style) {
                super(cdmFormFactory, formElement);
        }
-       
-       /** {@inheritDoc} */
+
        @Override
        protected void createControls(ICdmFormElement formElement, DescriptionBase entity, int style) {
-               detailDescription = formFactory.createMultiLineTextWithLabel(this, "Label", 50, SWT.WRAP);
-               detailDescription.setText(entity.getTitleCache());
-               
-               // TODO I initially thought that we can handle the entity's descriptive system with a feature tree 
-               // Since descriptiveSystem is a Set of Features that are present or allowed for the current description, 
+        toggleable_cache = formFactory.createToggleableTextField(this, "Label", entity.getTitleCache(), entity.isProtectedTitleCache(), style);
+               // TODO I initially thought that we can handle the entity's descriptive system with a feature tree
+               // Since descriptiveSystem is a Set of Features that are present or allowed for the current description,
                // it is similar to a FeatureTree (you can get this information from a feature tree) but not the same.
                // Please correct this once it is clear what descriptive system will be used for in CDM
 //             selection_featureTree = formFactory.createSelectionElement(FeatureTree.class, getConversationHolder(), formElement, "Feature Tree", null, EntitySelectionElement.ALL, style);
        }
-               
-       /** {@inheritDoc} */
+
+    @Override
+    protected void updateContent() {
+        super.updateContent();
+        toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
+        setIrrelevant(toggleable_cache.getState(),
+                Arrays.asList(new Object[] { toggleable_cache}));
+    }
+
+    @Override
+    protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
+        if(!getEntity().isProtectedTitleCache()){
+            String title = getEntity().generateTitle();
+            getEntity().setTitleCache(title, false);
+        }
+        super.updateToggleableCacheField();
+    }
+
        @Override
        public void handleEvent(Object eventSource) {
-               if(eventSource == detailDescription){
-                       getEntity().setTitleCache(detailDescription.getText(), true);
-               }
-               else if(eventSource == selection_featureTree){
-                       FeatureTree featureTree = selection_featureTree.getSelection();
-                       //descriptive system is not available anymore since v3.3 
-//                     getEntity().setDescriptiveSystem(featureTree.getDistinctFeatures());
-               }
+        if (eventSource == toggleable_cache) {
+            getEntity().setTitleCache(toggleable_cache.getText(), toggleable_cache.getState());
+            setIrrelevant(toggleable_cache.getState(), Arrays.asList(new Object[] { toggleable_cache }));
+        }
        }
 }
index feca7c6b55fb7ca83cb77d7d8984320691d155db..f5749ee8212d4fc413137bbd791888c7461b987c 100644 (file)
@@ -7,7 +7,7 @@ import java.util.Collection;
 import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
index 66aa69805186071c90b7fec796b4bc8650047df3..94ee45fd026387b84b3420c675658fe263b9f713 100644 (file)
@@ -14,7 +14,7 @@ import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
index cc6b3f4aab64d60f56906d55a7dce92436c8f39f..0301c49a2bf66d0839bda7fafba9100e3422649e 100644 (file)
@@ -16,11 +16,12 @@ import java.util.Set;
 
 import org.eclipse.swt.events.SelectionListener;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.StateData;
 import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -64,11 +65,16 @@ public class ModifierElement extends AbstractEntityCollectionElement<DefinedTerm
                    if(parentSection.getEntity() instanceof StateData){
                        StateData stateData = (StateData) parentSection.getEntity();
                        recommendedModifierEnumeration = stateData.getCategoricalData().getFeature().getRecommendedModifierEnumeration();
-                   }
-                   if(parentSection.getEntity() instanceof StatisticalMeasurementValue){
+                   }else if(parentSection.getEntity() instanceof StatisticalMeasurementValue){
                        StatisticalMeasurementValue statisticalMeasurementValue = (StatisticalMeasurementValue)parentSection.getEntity();
                        recommendedModifierEnumeration = statisticalMeasurementValue.getQuantitativeData().getFeature().getRecommendedModifierEnumeration();
                    }
+                   if (!(parentSection.getParentElement() instanceof DescriptionElementBase) && parentSection.getEntity() instanceof DescriptionElementBase){
+                       DescriptionElementBase element = (DescriptionElementBase) parentSection.getEntity();
+                recommendedModifierEnumeration = element.getFeature().getRecommendedModifierEnumeration();
+
+                   }
+
                    for (TermVocabulary<DefinedTerm> termVocabulary : recommendedModifierEnumeration) {
                        modifierTerms.addAll(termVocabulary.getTerms());
                    }
@@ -106,6 +112,11 @@ public class ModifierElement extends AbstractEntityCollectionElement<DefinedTerm
                        DefinedTerm term = combo_modifier.getSelection();
                        parentEntity.addModifier(term);
                        entity = term;
+                   }else {
+                       ((DescriptionElementBase)parentSection.getEntity()).removeModifier(entity);
+                       DefinedTerm term = combo_modifier.getSelection();
+                       ((DescriptionElementBase)parentSection.getEntity()).addModifier(term);
+                    entity = term;
                    }
                }
            }
index d0123ce975eb3d4dd8d1e6d145d017a923ec1b8c..9a28dafa192e4dd4df97052eacdebb541e90d4c3 100644 (file)
@@ -13,7 +13,7 @@ import java.util.Collection;
 import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
 import eu.etaxonomy.cdm.model.description.IModifiable;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
index a56db7a89d034337ad7bf028cda45836201b018e..fa090b3ab19c1088dc2b7b4f2a2f6ffeec85296a 100644 (file)
@@ -20,7 +20,7 @@ import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.swt.widgets.Display;
 
 import eu.etaxonomy.cdm.api.service.NaturalLanguageGenerator;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
@@ -59,7 +59,7 @@ public class NaturalLanguageDetailElement extends AbstractCdmDetailElement<Taxon
        /** {@inheritDoc} */
        @Override
        protected void createControls(ICdmFormElement formElement,
-                       TaxonDescription entity, int style) {
+               TaxonDescription entity, int style) {
                label = formFactory.createLabel(formElement, "Generating Natural Language Description ...");
 
                if(entity.hasStructuredData()){
index a70daa5d941c69d3c0b922e115802fff8f5ce22a..cbaf287d568bc312a8b619c4f3d281831fe0400a 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import org.eclipse.swt.events.SelectionListener;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
index 2d1d0de05dd6b41e209400a30b4bc646e648929e..e3588e2c26473d32621aa703de3ee6f03f53fd1d 100644 (file)
@@ -13,7 +13,7 @@ import java.util.Collection;
 import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
index 1f927e330fc4cc8ee34026e52a22d81f624a916d..9925a5112dab73feea8857666ae9297049595626 100644 (file)
@@ -3,8 +3,8 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import java.util.Comparator;
 
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.reference.Reference;
 
 /**
index 2f0cefb636337305b2d044591ace82e49f57487a..3b8e0db382d0a8c0c8b01053c771476130bc2fc1 100644 (file)
@@ -17,8 +17,8 @@ import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.model.common.LanguageString;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.cdm.model.description.StateData;
 import eu.etaxonomy.taxeditor.store.CdmStore;
index 4afc3c99a3a64fb749d5700e78e5dd1eace28f51..796436a0e04975a99dd3eee7a0922f019d53a74d 100644 (file)
@@ -15,7 +15,7 @@ import java.util.Set;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
 import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
index 85a47fd60c09e802e3f24248dfb18a0114c1cba3..6ecef0d6237f360653b504923bd1685abec25445 100644 (file)
 package eu.etaxonomy.taxeditor.ui.section.description.detail;
 
 import org.eclipse.swt.SWT;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
+import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.description.ModifierSection;
 
 /**
  * <p>Abstract AbstractDetailedDescriptionDetailElement class.</p>
@@ -27,6 +33,8 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 public abstract class AbstractDetailedDescriptionDetailElement<T extends DescriptionElementBase> extends AbstractCdmDetailElement<T>{
 
     TimePeriodElement timePeriod;
+    ModifierSection section_modifiers;
+    TextWithLabelElement text_modifyingText;
 
        /**
         * <p>Constructor for AbstractDetailedDescriptionDetailElement.</p>
@@ -50,10 +58,36 @@ public abstract class AbstractDetailedDescriptionDetailElement<T extends Descrip
 
     }
 
+    protected void createModifier(ICdmFormElement formElement, DescriptionElementBase entity,
+            int style) {
+
+        section_modifiers = formFactory.createModifierSection(getConversationHolder(), this, ExpandableComposite.TWISTIE|ExpandableComposite.EXPANDED);
+        section_modifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+        section_modifiers.setEntity(entity);
+
+        text_modifyingText = formFactory.createTextWithLabelElement(this, "Modifying Text", null, style);
+        if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
+            text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+        }
+    }
+
+    protected void createFreetextModifier(ICdmFormElement formElement, DescriptionElementBase entity,
+            int style) {
+
+        text_modifyingText = formFactory.createTextWithLabelElement(this, "Modifying Text", null, style);
+        if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
+            text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+        }
+    }
+
     @Override
     public void handleEvent(Object eventSource) {
         if(eventSource == timePeriod){
             getEntity().setTimeperiod(timePeriod.getTimePeriod());
         }
+        if (eventSource == text_modifyingText){
+            getEntity().putModifyingText(LanguageString.NewInstance(text_modifyingText.getText(), CdmStore.getDefaultLanguage()));
+        }
+
     }
 }
index 5d322cbf6b9f6d37ede52486d2d5cbbdf193431c..94f5043d4e5612e07d52b259ec7c97cb1821c714 100644 (file)
@@ -46,6 +46,11 @@ public class CategoricalDataDetailElement extends AbstractDetailedDescriptionDet
                section_stateData.setEntity(entity);
                section_stateData.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
                createTimePeriod(formElement, entity, style);
+               if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+                   createModifier(formElement, entity, style);
+               }else{
+                   createFreetextModifier(formElement, entity, style);
+               }
        }
 
        /* (non-Javadoc)
index 3d7db3dc9a7ef76c8c97d5c8821431abf4086724..68ad5f67447d43adbd2696033f028e57ed41ceb9 100644 (file)
@@ -9,12 +9,17 @@
 
 package eu.etaxonomy.taxeditor.ui.section.description.detail;
 
+import java.util.List;
+import java.util.UUID;
+
 import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
 import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -54,16 +59,25 @@ public class CommonNameDetailElement extends AbstractDetailedDescriptionDetailEl
                        CommonTaxonName entity, int style) {
 
                commonName = formFactory.createTextWithLabelElement(this, "Common Name", entity.getName(), SWT.WRAP);
-
-               combo_language = formFactory.createDefinedTermComboElement(TermType.Language, this, "Language", entity.getLanguage(), style);
+               List<UUID> uuidList = PreferencesUtil.createUUIDListFromStringPref(PreferencePredicate.CommonNameLanguages.getKey());
+               List<Language> languages = CdmStore.getTermManager().getTerms(uuidList, Language.class);
+               combo_language = formFactory.createDefinedTermComboElement(languages, this, "Language", entity.getLanguage(), style);
 
                selection_namedArea = formFactory.createSelectionElement(NamedArea.class, //getConversationHolder(),
                                formElement, "Area",
                                entity.getArea(), EntitySelectionElement.NOTHING, style);
 
                createTimePeriod(formElement, entity, style);
+               if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+            createModifier(formElement, entity, style);
+        }else{
+            createFreetextModifier(formElement, entity, style);
+        }
+
        }
 
+
+
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
index 280d3793027a45ef19f17c035fd4cc5b9362823a..ab308608c8512d987db0d4fa7bf5a6de493beb4b 100644 (file)
@@ -58,6 +58,11 @@ public class DistributionDetailElement extends
 
         combo_presenceAbsence = formFactory.createTermComboElement(PresenceAbsenceTerm.class, this, "Distribution Status", entity.getStatus(), style);
         createTimePeriod(formElement, entity, style);
+        if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+            createModifier(formElement, entity, style);
+        }else{
+            createFreetextModifier(formElement, entity, style);
+        }
        }
 
        /** {@inheritDoc} */
index b6b8c7dcdd56aa2710a7723fb03a30790f769069..4ae6151f3accb01d47c71b7753995037f9c9d827 100644 (file)
@@ -61,6 +61,11 @@ public class IndividualsAssociationDetailElement extends
                }
 
                createTimePeriod(formElement, entity, style);
+               if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+            createModifier(formElement, entity, style);
+        }else{
+            createFreetextModifier(formElement, entity, style);
+        }
        }
 
        /** {@inheritDoc} */
index 0da2bb3c209f118d01d73293a63d2a9cd3f3cd37..61893b5b40ceb30944f778bd40bd29621e861b91 100644 (file)
@@ -7,9 +7,9 @@ import java.util.ArrayList;
 
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
-import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.description.MeasurementUnit;
 import eu.etaxonomy.cdm.model.description.QuantitativeData;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -51,6 +51,11 @@ public class QuantitativeDataDetailElement extends
                section_statisticalMeasurementValues = formFactory.createStatisticalMeasurementValueSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
                section_statisticalMeasurementValues.setEntity(entity);
                section_statisticalMeasurementValues.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+               if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+            createModifier(formElement, entity, style);
+        }else{
+            createFreetextModifier(formElement, entity, style);
+        }
        }
 
        /** {@inheritDoc} */
index 822a02e1e459720c30106c1b6fa6dae450f38949..fa310f3a599e29e4c69a2950a5feb079cec8ff69 100644 (file)
@@ -79,6 +79,11 @@ public class TaxonInteractionDetailElement extends
                     CdmStore.getDefaultLanguage()).getText());
         }
         createTimePeriod(formElement, entity, style);
+        if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+            createModifier(formElement, entity, style);
+        }else{
+            createFreetextModifier(formElement, entity, style);
+        }
        }
 
        /** {@inheritDoc} */
index 0c15a01021a41337dcb3a31669a019d9f6c5d3bc..b5c8cb29fefd66f5c3e9ae2cac1f3f876c28965a 100644 (file)
@@ -11,13 +11,23 @@ package eu.etaxonomy.taxeditor.ui.section.feature;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
+import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.Character;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.editor.definedterm.TermBasePropertyTester;
 import eu.etaxonomy.taxeditor.model.ColorResources;
 import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.RepresentationElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.MeasurementUnitCollectionSection;
 import eu.etaxonomy.taxeditor.ui.section.vocabulary.RecommendedModifierVocabulariesCollectionSection;
@@ -34,6 +44,10 @@ public class CharacterDetailElement extends AbstractCdmDetailElement<Character>
 
     private ICdmFormElement parentFormElement;
 
+    protected RepresentationElement element_Representation;
+
+    private TermComboElement<DefinedTerm> comboStructuralModifier;
+
     private CheckboxElement supportsQuantitativeData;
 
     private CheckboxElement supportsCategoricalData;
@@ -54,48 +68,69 @@ public class CharacterDetailElement extends AbstractCdmDetailElement<Character>
        @Override
        protected void createControls(ICdmFormElement formElement, Character entity, int style) {
            this.parentFormElement = formElement;
+           element_Representation = formFactory.createTranslatableRepresentationElement(formElement,  getEntity().getPreferredRepresentation(CdmStore.getDefaultLanguage()),getEntity(), 100, style, true);
            Label lblStructure = new Label(formElement.getLayoutComposite(), style);
            lblStructure.setText("Structure");
            Label lblStructureText = new Label(formElement.getLayoutComposite(), style);
-           lblStructureText.setText(entity.getStructure().getFeature().getLabel());
+           lblStructureText.setText(getPath(entity.getStructure()));
            lblStructureText.setForeground(ColorResources.getColor(Resources.BLACK));
            Label lblProperty = new Label(formElement.getLayoutComposite(), style);
            lblProperty.setText("Property");
            Label lblPropertyText = new Label(formElement.getLayoutComposite(), style);
            lblPropertyText.setForeground(ColorResources.getColor(Resources.BLACK));
-           lblPropertyText.setText(entity.getProperty().getFeature().getLabel());
+           lblPropertyText.setText(getPath(entity.getProperty()));
+
+        comboStructuralModifier = formFactory.createDefinedTermComboElement(TermType.StructureModifier, formElement, "Structural Modifier", entity.getStructureModifier(), style);
+
            supportsQuantitativeData = formFactory.createCheckbox(formElement, "Supports Quantitative Data", entity.isSupportsQuantitativeData(), style);
            supportsCategoricalData = formFactory.createCheckbox(formElement, "Supports Categorical Data", entity.isSupportsCategoricalData(), style);
 
         if (supportsCategoricalData.getSelection()) {
             sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),
-                    parentFormElement, ExpandableComposite.TWISTIE);
+                    parentFormElement, ExpandableComposite.TWISTIE| ExpandableComposite.EXPANDED);
             sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             sectionStateVocabularies.setEntity(getEntity());
-
         }
         if (supportsQuantitativeData.getSelection()) {
             sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),
-                    parentFormElement, ExpandableComposite.TWISTIE);
+                    parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
             sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             sectionMeasurementUnits.setEntity(getEntity());
 
             sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(getConversationHolder(),
-                    parentFormElement, ExpandableComposite.TWISTIE);
+                    parentFormElement, ExpandableComposite.TWISTIE| ExpandableComposite.EXPANDED);
             sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             sectionStatisticalMeasures.setEntity(getEntity());
         }
         if (supportsCategoricalData.getSelection() || supportsQuantitativeData.getSelection()) {
             sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(
-                    getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE
-                           );
+                    getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
             sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
             sectionModifierVocabularies.setEntity(getEntity());
         }
     }
 
+       private String getPath(FeatureNode node){
+           String path = node.getTerm().getLabel();
+           FeatureNode parent = node.getParent();
+           while(parent != null && parent.getTerm()!=null){
+               path = parent.getTerm().getLabel() + "/" + path;
+               parent = parent.getParent();
+           }
+           return path;
+       }
+
+    @Override
+    public void setEntity(Character entity) {
+        super.setEntity(entity);
+        setEnabled(TermBasePropertyTester.isModifiable(entity));
+    }
+
        @Override
        public void handleEvent(Object eventSource) {
+           if(eventSource == comboStructuralModifier){
+               getEntity().setStructureModifier(comboStructuralModifier.getSelection());
+           }
            if(eventSource == supportsQuantitativeData || eventSource == supportsCategoricalData){
                //if any type is selected disable supportsTextData
                getEntity().setSupportsTextData(false);
@@ -108,6 +143,7 @@ public class CharacterDetailElement extends AbstractCdmDetailElement<Character>
                else{
                    removeQuantitativeWidgets();
                }
+            StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);
            }
            else if(eventSource == supportsCategoricalData){
                getEntity().setSupportsCategoricalData(supportsCategoricalData.getSelection());
@@ -117,7 +153,21 @@ public class CharacterDetailElement extends AbstractCdmDetailElement<Character>
                else{
                    removeCategoricalWidgets();
                }
+            StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);
            }
+           else if (eventSource == element_Representation) {
+            Representation selectedRepresentation = element_Representation.getSelectedRepresentation();
+            if(selectedRepresentation!=null){
+                Language representationLanguage = selectedRepresentation.getLanguage();
+                if(representationLanguage==null){
+                    representationLanguage = Language.getDefaultLanguage();
+                }
+                getEntity().setLabel(selectedRepresentation.getLabel(),  representationLanguage);
+                getEntity().getRepresentation(representationLanguage).setAbbreviatedLabel(selectedRepresentation.getAbbreviatedLabel());
+                getEntity().getRepresentation(representationLanguage).setText(selectedRepresentation.getDescription());
+            }
+            getEntity().setTitleCache(null);
+        }
        }
 
        private void activateQuantitativeWidgets(){
@@ -128,19 +178,19 @@ public class CharacterDetailElement extends AbstractCdmDetailElement<Character>
 
            //measurement units
            sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),
-                   parentFormElement, ExpandableComposite.TWISTIE);
+                   parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
            sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
            sectionMeasurementUnits.setEntity(getEntity());
 
            //statistical measures
            sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(
-                   getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
+                   getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
            sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
            sectionStatisticalMeasures.setEntity(getEntity());
 
            //modifiers
            sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(
-                   getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
+                   getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
            sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
            sectionModifierVocabularies.setEntity(getEntity());
        }
@@ -161,13 +211,13 @@ public class CharacterDetailElement extends AbstractCdmDetailElement<Character>
 
            //states
            sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),
-                parentFormElement, ExpandableComposite.TWISTIE);
+                parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
         sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
         sectionStateVocabularies.setEntity(getEntity());
 
         //modifiers
         sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(
-                getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
+                getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
         sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
         sectionModifierVocabularies.setEntity(getEntity());
        }
index bb5679cec68780442ffaa36d9804b54aec5c6cc3..8ec1b79873410bdbf4f2c7c8cdce8f229588b60f 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.taxeditor.ui.section.feature;
 
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
index 7fa2966305898eef8d6ea248e25196a4685439ca..22c95b7f19b4f443b597c4511da6ca962a08008e 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.ui.section.feature;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
index 3be5dd4f4b82c50764c3d729b39bda17e8c15f19..7bfa04b0e76d8b56bb643eca1eea993b2053738d 100644 (file)
@@ -8,7 +8,11 @@
 */
 package eu.etaxonomy.taxeditor.ui.section.feature;
 
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import org.eclipse.swt.widgets.Label;
+
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.taxeditor.model.ColorResources;
+import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
@@ -29,6 +33,12 @@ public class FeatureTreeDetailElement extends AbstractIdentifiableEntityDetailEl
 
        @Override
        protected void createControls(ICdmFormElement formElement, FeatureTree entity, int style) {
+           Label lblTermType = new Label(formElement.getLayoutComposite(), style);
+           lblTermType.setText("Term Type");
+           Label lblStructureText = new Label(formElement.getLayoutComposite(), style);
+           lblStructureText.setText(entity.getTermType().getMessage());
+           lblStructureText.setForeground(ColorResources.getColor(Resources.BLACK));
+
            toggleable_cache = formFactory.createToggleableTextField(
                 formElement, "Title Cache", entity.getTitleCache(),
                 entity.isProtectedTitleCache(), style);
index 78dfd6e54564df6b93d79e0624a0a54e7c27061a..c1c735c4d6c39f6293dee61119d8fae640034a6a 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.ui.section.feature;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
index 47b36fbec4f5486178417b67781d0aee1dbba4fb..eba0c7d510dc38a8ac2c89ede5551f951400424c 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.feature;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
index 35056588bf8a205b98bd096adc0c14fe303e4b58..bbc344cad4111845deb2b8764c3e41b332a7d847 100644 (file)
@@ -13,7 +13,7 @@ import java.util.Collection;
 import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
index fedecf5894413a33575429eaaa636f115160c52c..e5e0c63c491cf9fc5f8ad1ecc26e70112a24ef7e 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.feature;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
index 06d844c574d5449f9ab2142af798a6fff7b1dd8d..17c87f49d8d2466e916190c1023174050d3550fc 100644 (file)
@@ -13,7 +13,7 @@ import java.util.Collection;
 import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
index b42422dd0660c6cdf9cb98a0af1767f73b8a0817..f2c0fc09c5b4682072d31dcc9cf01be786fd49b0 100644 (file)
@@ -15,6 +15,8 @@ import java.util.Comparator;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.UserSelectionDialog;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -60,7 +62,7 @@ public class MemberDetailSection extends AbstractEntityCollectionSection<Group,
        @Override
        public User createNewElement() {
                User selection = UserSelectionDialog.select(getLayoutComposite().getShell(), //getConversationHolder(),
-                       null);
+                       null, this.getEntity());
                return selection;
        }
 
@@ -78,6 +80,8 @@ public class MemberDetailSection extends AbstractEntityCollectionSection<Group,
        @Override
        public void removeElement(User element) {
                getEntity().removeMember(element);
+               EventUtility.postEvent(WorkbenchEventConstants.REMOVE_USER, element);
+
        }
 
        /* (non-Javadoc)
@@ -93,7 +97,7 @@ public class MemberDetailSection extends AbstractEntityCollectionSection<Group,
         */
        @Override
        protected String getTooltipString() {
-               return "Add a memeber to this group";
+               return "Add a member to this group";
        }
 
     /**
index 577b0423e6e99516503d42ce858d40525a5e3cb4..5e35debd28532a90e5b31ab29ff2e3a9706da196 100644 (file)
@@ -7,7 +7,7 @@ import java.util.Collection;
 import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
index 671ed26c41077c75751c3a9f76aa2854bdb0e451..adf31bd987cf952bef369804982d0cfad6b9139e 100644 (file)
@@ -9,14 +9,22 @@
 
 package eu.etaxonomy.taxeditor.ui.section.name;
 
+import java.util.Iterator;
+
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractReferencedEntityElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
+import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractSourcedEntityBaseElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>Abstract AbstractTypeDesignationElement class.</p>
@@ -25,10 +33,13 @@ import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractReferencedEntityEl
  * @created May 17, 2010
  * @version 1.0
  */
-public abstract class AbstractTypeDesignationElement<T extends TypeDesignationBase> extends AbstractReferencedEntityElement<T> {
+public abstract class AbstractTypeDesignationElement<T extends TypeDesignationBase> extends AbstractSourcedEntityBaseElement<T> {
 
        protected CheckboxElement checkbox_notDesignated;
-
+       protected EntitySelectionElement<Reference> selection_reference;
+    protected TextWithLabelElement text_referenceDetail;
+    protected ICdmFormElement formElement;
+    protected int style;
 
        /**
         * <p>Constructor for AbstractTypeDesignationElement.</p>
@@ -43,14 +54,132 @@ public abstract class AbstractTypeDesignationElement<T extends TypeDesignationBa
        public AbstractTypeDesignationElement(CdmFormFactory formFactory,
                        AbstractFormSection section, T entity,
                        SelectionListener removeListener, int style) {
-               super(formFactory, section, entity, removeListener, style, false);
+               super(formFactory, section, entity, removeListener, style);
        }
 
        /** {@inheritDoc} */
        @Override
        public void createControls(ICdmFormElement formElement, int style) {
                checkbox_notDesignated = formFactory.createCheckbox(formElement, "Not Designated", false, style);
-               super.createControls(formElement, style);
+               this.formElement = formElement;
+               this.style = style;
        }
 
+       @Override
+       public void setEntity(T entity){
+           super.setEntity(entity);
+
+           if (this.entity != null && this.entity.isLectoType()){
+               if (selection_reference == null){
+                   removeNotDesignatedControls();
+               selection_reference = formFactory
+                        .createSelectionElement(Reference.class, formElement, "Status Reference",
+                                entity.getCitation(), EntitySelectionElement.ALL, style);
+
+                text_referenceDetail = formFactory.createTextWithLabelElement(
+                    formElement, "Reference Detail", entity.getCitationMicroReference(), style);
+                checkbox_notDesignated = formFactory.createCheckbox(formElement, "Not Designated", entity.isNotDesignated(), style);
+               }
+        }else{
+            if (selection_reference != null){
+                removeReferenceControls();
+                //check if there is still a reference
+                if (this.entity.getCitation() != null){
+                    this.entity.setCitation(null);
+                    this.entity.setCitationMicroReference(null);
+                }
+            }
+        }
+        StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);
+
+       }
+
+       /**
+     * Updates all widgets to display the latest data
+     */
+    protected void updateContent() {
+      // if (this.getParentElement() instanceof NameDetailSection
+
+    }
+
+
+    public void removeReferenceControls(){
+        for (Iterator<ICdmFormElement> iterator = getElements().iterator();iterator.hasNext();) {
+            ICdmFormElement childElement = iterator.next();
+            // recursion
+           if (childElement instanceof EntitySelectionElement && ((EntitySelectionElement)childElement).equals(selection_reference)) {
+                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);
+                selection_reference = null;
+           }
+          if (childElement instanceof TextWithLabelElement && ((TextWithLabelElement)childElement).equals(text_referenceDetail)) {
+
+                  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);
+                  text_referenceDetail = null;
+
+
+          }
+        }
+
+    }
+
+    public void removeNotDesignatedControls(){
+        for (Iterator<ICdmFormElement> iterator = getElements().iterator();iterator.hasNext();) {
+            ICdmFormElement childElement = iterator.next();
+            // recursion
+           if (childElement instanceof CheckboxElement && ((CheckboxElement)childElement).equals(this.checkbox_notDesignated)) {
+                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);
+                checkbox_notDesignated = null;
+           }
+
+        }
+
+    }
+    @Override
+    public void handleEvent(Object eventSource) {
+        if (eventSource == selection_reference) {
+            getEntity().setCitation(selection_reference.getEntity());
+            setEntity(entity);
+        }
+        if (eventSource == text_referenceDetail) {
+            getEntity().setCitationMicroReference(text_referenceDetail.getText());
+            setEntity(entity);
+        }
+        if (eventSource == checkbox_notDesignated) {
+            getEntity().setNotDesignated(checkbox_notDesignated.getSelection());
+        }
+    }
+
 }
index a492da0b6b0fde6fb428bb6425a6451fa2a101b2..3596475905ab8b68ef0737920338e9605ef3de6c 100644 (file)
@@ -16,7 +16,7 @@ import java.util.Comparator;
 import org.apache.log4j.Logger;
 import org.eclipse.swt.SWT;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.name.IBacterialName;
 import eu.etaxonomy.cdm.model.name.ICultivarPlantName;
 import eu.etaxonomy.cdm.model.name.IFungusName;
index 65e3920f9b9faab6681e92dd14e160c9bbf39fac..3f10dd3348a644d3c4a8da3f78b513e5d3163f97 100644 (file)
@@ -12,10 +12,12 @@ package eu.etaxonomy.taxeditor.ui.section.name;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
 import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -48,15 +50,15 @@ public class NameTypeDesignationElement extends
        public void createControls(ICdmFormElement formElement, int style) {
 
                checkbox_rejectedType = formFactory.createCheckbox(formElement,
-                               "Rejected Type", false, style);
+                               "Rejected Type", false, style); //$NON-NLS-1$
                checkbox_conservedType = formFactory.createCheckbox(formElement,
-                               "Conserved Type", false, style);
+                               "Conserved Type", false, style); //$NON-NLS-1$
                selection_typeName = formFactory
                                .createSelectionElement(TaxonName.class,//getConversationHolder(),
-                                       formElement, "Name", null,
+                                       formElement, "Name", null, //$NON-NLS-1$
                                                EntitySelectionElement.ALL, style);
                combo_typeStatus = formFactory.createDefinedTermComboElement(TermType.NameTypeDesignationStatus, formElement,
-                                               "Designation Status", null, style);
+                                               "Designation Status", null, style); //$NON-NLS-1$
 
                super.createControls(formElement, style);
        }
@@ -85,10 +87,26 @@ public class NameTypeDesignationElement extends
                } else if (eventSource == selection_typeName) {
                        getEntity().setTypeName(selection_typeName.getEntity());
                } else if (eventSource == combo_typeStatus) {
+                   if ((combo_typeStatus.getSelection() == null && entity.getCitation() != null)){
+                       boolean ok = MessagingUtils.confirmDialog(Messages.NameTypeDesignationElement_4, Messages.NameTypeDesignationElement_5);
+                if (!ok){
+                    combo_typeStatus.setSelection(entity.getTypeStatus());
+                    return;
+                }
+                   }else if ( entity.getTypeStatus() != null && getEntity().getTypeStatus().isLectotype() && !combo_typeStatus.getSelection().isLectotype() && entity.getCitation() != null){
+                       boolean ok = MessagingUtils.confirmDialog(Messages.NameTypeDesignationElement_4, Messages.NameTypeDesignationElement_5);
+                if (!ok){
+                    combo_typeStatus.setSelection(entity.getTypeStatus());
+                    return;
+                }
+            }
                        getEntity().setTypeStatus(combo_typeStatus.getSelection());
+
+                       setEntity(entity);
                } else if (eventSource == checkbox_notDesignated) {
                        getEntity().setNotDesignated(checkbox_notDesignated.getSelection());
-               } else if (eventSource == selection_reference) {
+               }
+               else if (eventSource == selection_reference) {
                        getEntity().setCitation(selection_reference.getSelection());
                } else if (eventSource == text_referenceDetail) {
                        getEntity().setCitationMicroReference(
index 55a9dd935836f8cae7c60aca433529f25b664d61..7afbe1c1cd6a1a13d0175f7ed1280af298bb16d9 100644 (file)
@@ -14,8 +14,8 @@ import java.util.Comparator;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
 import eu.etaxonomy.taxeditor.store.CdmStore;
index 87268dd0b460af4347789eb999d95d5f0e0553f8..874b26fb391e3250ae65dd73506bb73ecf819b6e 100644 (file)
@@ -13,11 +13,13 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.api.service.name.TypeDesignationStatusComparator;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -76,8 +78,19 @@ public class SpecimenTypeDesignationElement extends
        /** {@inheritDoc} */
        @Override
        public void handleEvent(Object eventSource) {
+           super.handleEvent(eventSource);
                if (eventSource == combo_typeStatus) {
+
+                   if ((combo_typeStatus.getSelection() == null && entity.getCitation() != null) || ( entity.getTypeStatus() != null && getEntity().getTypeStatus().isLectotype() && !combo_typeStatus.getSelection().isLectotype() && entity.getCitation() != null)){
+                       boolean ok = MessagingUtils.confirmDialog(Messages.NameTypeDesignationElement_4, Messages.NameTypeDesignationElement_5);
+                       if (!ok){
+                           combo_typeStatus.setSelection(entity.getTypeStatus());
+                           return;
+                       }
+                   }
                        getEntity().setTypeStatus(combo_typeStatus.getSelection());
+                       setEntity(entity);
+
                }
                // TODO remove this once specimens are correctly implemented
                else if (eventSource == text_specimenTypeText) {
@@ -93,7 +106,8 @@ public class SpecimenTypeDesignationElement extends
                        getEntity().setTypeSpecimen(selection_typeSpecimen.getSelection());
                } else if (eventSource == checkbox_notDesignated) {
                        getEntity().setNotDesignated(checkbox_notDesignated.getSelection());
-               } else if (eventSource == selection_reference) {
+               }
+               else if (eventSource == selection_reference) {
                        getEntity().setCitation(selection_reference.getSelection());
                } else if (eventSource == text_referenceDetail) {
                        getEntity().setCitationMicroReference(
index aafa5c3d4c8c49ad2d68941d8c1956bb5d171cb2..721ddbaa76ac6dfb4941e71725308db62fa6bd12 100644 (file)
@@ -12,8 +12,19 @@ package eu.etaxonomy.taxeditor.ui.section.name;
 import java.util.Collection;
 import java.util.Comparator;
 
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.ToolBarManager;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.graphics.ImageData;
+
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.api.service.name.TypeDesignationComparator;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
@@ -22,17 +33,26 @@ import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.name.operation.DeleteTypeDesignationOperation;
+import eu.etaxonomy.taxeditor.ui.section.name.type.CloneTypeWizard;
+import eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
 
 /**
- * <p>TypeDesignationSection class.</p>
- *
  * @author n.hoffmann
  * @created May 17, 2010
  */
@@ -40,26 +60,66 @@ public class TypeDesignationSection extends AbstractEntityCollectionSection<Taxo
 
        private TaxonBase taxonBase;
 
-       /**
-        * <p>Constructor for TypeDesignationSection.</p>
-        *
-        * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
-        * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
-        * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
-        * @param style a int.
-        */
        public TypeDesignationSection(CdmFormFactory formFactory, ConversationHolder conversation,
                        ICdmFormElement parentElement, int style) {
-               super(formFactory, conversation, parentElement, "Type Designations", style);
+               super(formFactory, conversation, parentElement, Messages.TypeDesignationSection_TYPE_DESIGNATIONS, style);
+       }
+
+       @Override
+       protected void addAction(ToolBarManager toolBarManager) {
+           if(!isSpecimenType() ||
+                   getEntity().getTypeDesignations().isEmpty()
+                   || getEntity().getTypeDesignations().stream().noneMatch(designation->designation instanceof SpecimenTypeDesignation)){
+               return;
+           }
+           Action cloneAction = new Action(Messages.TypeDesignationSection_CREATE_DUPLICATE, IAction.AS_PUSH_BUTTON){
+            @Override
+            public void run() {
+                DetailsPartE4 detailsView = AbstractUtility.getDetailsView(getFormFactory().getContext().get((EPartService.class)));
+                if(detailsView!=null
+                        && detailsView.getSelectionProvidingPart().getObject() instanceof IE4SavablePart
+                        && StoreUtil.promptCheckIsDirty(((IE4SavablePart)detailsView.getSelectionProvidingPart().getObject()))){
+                    return;
+                }
+                CloneTypeWizard wizard = new CloneTypeWizard(getEntity());
+                WizardDialog dialog = new WizardDialog(getShell(), wizard);
+
+                if (dialog.open() == IStatus.OK) {
+                    SpecimenTypeDesignation baseTypeDesignation = HibernateProxyHelper.deproxy(wizard.getBaseTypeDesignation());
+                    UpdateResult result = CdmStore.getService(INameService.class).cloneTypeDesignation(
+                            wizard.getTaxonName().getUuid(),
+                            baseTypeDesignation,
+                            wizard.getAccessionNumber(),
+                            wizard.getBarcode(),
+                            wizard.getCatalogNumber(),
+                            wizard.getCollection().getUuid(),
+                            wizard.getTypeStatus());
+                    if(!result.isOk()){
+                        MessagingUtils.warningDialog(Messages.TypeDesignationSection_DUPLICATE_FAILED, this, result.getExceptions().toString());
+                    }
+                    StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);
+                    internalUpdateSection(false);
+                }
+            }
+        };
+        cloneAction.setImageDescriptor(new ImageDescriptor() {
+
+            @Override
+            public ImageData getImageData() {
+                return ImageResources.getImage(ImageResources.COPY_ICON).getImageData();
+            }
+        });
+        cloneAction.setToolTipText(Messages.TypeDesignationSection_CREATE_DUPLICATE);
+
+        toolBarManager.add(cloneAction);
        }
 
-       /** {@inheritDoc} */
        @Override
        public void addElement(TypeDesignationBase element) {
                getEntity().addTypeDesignation(element, PreferencesUtil.getBooleanValue(IPreferenceKeys.ADD_TYPES_TO_ALL_NAMES));
+               updateToolbar();
        }
 
-       /** {@inheritDoc} */
        @Override
        public TypeDesignationBase createNewElement() {
                if(isSpecimenType()){
@@ -69,7 +129,6 @@ public class TypeDesignationSection extends AbstractEntityCollectionSection<Taxo
                }
        }
 
-       /** {@inheritDoc} */
        @Override
        public Collection<TypeDesignationBase> getCollection(TaxonName entity) {
                if (entity == null){
@@ -83,27 +142,47 @@ public class TypeDesignationSection extends AbstractEntityCollectionSection<Taxo
         return new TypeDesignationComparator();
        }
 
-       /** {@inheritDoc} */
        @Override
        public String getEmptyString() {
-               return "No type designations yet.";
+               return Messages.TypeDesignationSection_NO_TYPES_YET;
        }
 
-       /** {@inheritDoc} */
        @Override
        protected String getTooltipString() {
-               return "Add a type designation";
+               return Messages.TypeDesignationSection_ADD_TYPE;
        }
 
-       /** {@inheritDoc} */
        @Override
        public void removeElement(TypeDesignationBase element) {
+           DetailsPartE4 detailsView = AbstractUtility.getDetailsView(getFormFactory().getContext().get((EPartService.class)));
+           if(detailsView!=null
+                   && detailsView.getSelectionProvidingPart().getObject() instanceof IE4SavablePart
+                   && StoreUtil.promptCheckIsDirty(((IE4SavablePart)detailsView.getSelectionProvidingPart().getObject()))){
+               return;
+           }
                boolean removeTypeDesignationFromAllTypifiedNames = PreferencesUtil.getBooleanValue(IPreferenceKeys.ADD_TYPES_TO_ALL_NAMES);
                TaxonName entity = removeTypeDesignationFromAllTypifiedNames ? null : getEntity();
-               CdmStore.getService(INameService.class).deleteTypeDesignation(entity.getUuid(), element.getUuid());
+               if(!element.isPersited() && entity!=null){
+            entity.removeTypeDesignation(element);
+               }
+               else if(detailsView!=null
+                       && detailsView.getSelectionProvidingPart().getObject() instanceof ITaxonEditor
+                       && detailsView.getSelectionProvidingPart().getObject() instanceof IPostOperationEnabled) {
+            DeleteTypeDesignationOperation operation = new DeleteTypeDesignationOperation(
+                    "Remove type designation",
+                    IOperationHistory.GLOBAL_UNDO_CONTEXT,
+                    entity,
+                    element,
+                    (IPostOperationEnabled) detailsView.getSelectionProvidingPart().getObject(),
+                    null);
+            ((ITaxonEditor) detailsView.getSelectionProvidingPart().getObject()).addOperation(operation);
+            if(entity!=null){
+                entity.removeTypeDesignation(element);
+            }
+               }
+               updateToolbar();
        }
 
-       /** {@inheritDoc} */
        @Override
     public void setTaxonBase(TaxonBase entity) {
                this.taxonBase = entity;
@@ -124,17 +203,11 @@ public class TypeDesignationSection extends AbstractEntityCollectionSection<Taxo
                return taxonBase;
        }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public TypeDesignationBase addExisting() {
         return null;
     }
 
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public boolean allowAddExisting() {
         return false;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/operation/DeleteTypeDesignationOperation.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/operation/DeleteTypeDesignationOperation.java
new file mode 100755 (executable)
index 0000000..ae3e4eb
--- /dev/null
@@ -0,0 +1,69 @@
+/**
+* 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.ui.section.name.operation;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ *
+ * @author pplitzner
+ * @since Apr 10, 2019
+ *
+ */
+public class DeleteTypeDesignationOperation extends AbstractPostOperation<TaxonName> {
+
+    private final TypeDesignationBase<?> typeDesignation;
+
+    public DeleteTypeDesignationOperation(String label, IUndoContext undoContext, TaxonName taxonName,
+            TypeDesignationBase<?> typeDesignation, IPostOperationEnabled postOperationEnabled,
+            ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
+        super(label, undoContext, taxonName, postOperationEnabled, cdmEntitySessionEnabled);
+        this.typeDesignation = typeDesignation;
+
+    }
+
+    @Override
+    public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+        monitor.worked(20);
+        if (typeDesignation != null && typeDesignation.isPersited()){
+            if(element==null){
+                CdmStore.getService(INameService.class).deleteTypeDesignation(null, typeDesignation);
+            }
+            else{
+                CdmStore.getService(INameService.class).deleteTypeDesignation(element.getUuid(), typeDesignation.getUuid());
+            }
+            return postExecute(element);
+        }
+        return null;
+    }
+
+    @Override
+    public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+        return execute(monitor, info);
+    }
+
+    @Override
+    public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+        element.removeTypeDesignation(typeDesignation);
+        return postExecute(element);
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/type/CloneTypeWizard.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/type/CloneTypeWizard.java
new file mode 100644 (file)
index 0000000..2ccfe1f
--- /dev/null
@@ -0,0 +1,98 @@
+/**
+* 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.ui.section.name.type;
+
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+import org.eclipse.jface.wizard.Wizard;
+
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+
+/**
+ * @author pplitzner
+ * @since Mar 13, 2019
+ *
+ */
+public class CloneTypeWizard extends Wizard{
+
+    private CloneTypeWizardPage page;
+
+    private final Collection<SpecimenTypeDesignation> typeDesignations;
+
+    private final TaxonName taxonName;
+
+    private SpecimenTypeDesignation baseTypeDesignation;
+
+    private String accessionNumber;
+
+    private String barcode;
+
+    private String catalogNumber;
+
+    private eu.etaxonomy.cdm.model.occurrence.Collection collection;
+
+    private SpecimenTypeDesignationStatus typeStatus;
+
+    public CloneTypeWizard(TaxonName taxonName) {
+        this.taxonName = taxonName;
+        this.typeDesignations = taxonName.getTypeDesignations().stream()
+                .filter(designation -> designation instanceof SpecimenTypeDesignation)
+                .map(specimenTypeDesignation -> (SpecimenTypeDesignation)specimenTypeDesignation)
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public void addPages() {
+        page = new CloneTypeWizardPage(typeDesignations);
+        addPage(page);
+    }
+
+    @Override
+    public boolean performFinish() {
+        this.baseTypeDesignation = page.getBaseTypeDesignation();
+        this.accessionNumber = page.getAccessionNumber();
+        this.barcode = page.getBarcode();
+        this.catalogNumber = page.getCatalogNumber();
+        this.collection = page.getCollection();
+        this.typeStatus = page.getTypeStatus();
+        return true;
+    }
+
+    public TaxonName getTaxonName() {
+        return taxonName;
+    }
+
+    public SpecimenTypeDesignation getBaseTypeDesignation() {
+        return baseTypeDesignation;
+    }
+
+    public String getAccessionNumber() {
+        return accessionNumber;
+    }
+
+    public String getBarcode() {
+        return barcode;
+    }
+
+    public String getCatalogNumber() {
+        return catalogNumber;
+    }
+
+    public eu.etaxonomy.cdm.model.occurrence.Collection getCollection() {
+        return collection;
+    }
+
+    public SpecimenTypeDesignationStatus getTypeStatus() {
+        return typeStatus;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/type/CloneTypeWizardComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/type/CloneTypeWizardComposite.java
new file mode 100644 (file)
index 0000000..7246780
--- /dev/null
@@ -0,0 +1,124 @@
+/**
+ * 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.ui.section.name.type;
+
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.swt.SWT;
+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.Label;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.ui.combo.TermUuidComboViewer;
+
+/**
+ * @author pplitzner
+ * @since Mar 13, 2019
+ *
+ */
+public class CloneTypeWizardComposite extends Composite {
+    private Text txtAccNumber;
+    private Text txtCollection;
+    private Button btnBrowseCollection;
+    private TermUuidComboViewer comboTypeStatus;
+    private ComboViewer comboViewerBaseType;
+    private Text textBarcode;
+    private Text textCatalogNumber;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public CloneTypeWizardComposite(Composite parent, int style) {
+        super(parent, style);
+        setLayout(new GridLayout(3, false));
+
+        Label lblNewLabel_3 = new Label(this, SWT.NONE);
+        lblNewLabel_3.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+        lblNewLabel_3.setText("Base Type");
+
+        comboViewerBaseType = new ComboViewer(this, SWT.READ_ONLY);
+        Combo combo = comboViewerBaseType.getCombo();
+        combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+        Label lblNewLabel_2 = new Label(this, SWT.NONE);
+        lblNewLabel_2.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+        lblNewLabel_2.setText("Collection");
+
+        txtCollection = new Text(this, SWT.BORDER);
+        txtCollection.setEnabled(false);
+        txtCollection.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+
+        btnBrowseCollection = new Button(this, SWT.NONE);
+        btnBrowseCollection.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON));
+
+        Label lblNewLabel = new Label(this, SWT.NONE);
+        lblNewLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+        lblNewLabel.setText("Accession Number");
+
+        txtAccNumber = new Text(this, SWT.BORDER);
+        txtAccNumber.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+        Label lblNewLabel_4 = new Label(this, SWT.NONE);
+        lblNewLabel_4.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+        lblNewLabel_4.setText("Barcode");
+
+        textBarcode = new Text(this, SWT.BORDER);
+        textBarcode.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+        Label lblNewLabel_5 = new Label(this, SWT.NONE);
+        lblNewLabel_5.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+        lblNewLabel_5.setText("Catalog Number");
+
+        textCatalogNumber = new Text(this, SWT.BORDER);
+        textCatalogNumber.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+        Label lblNewLabel_1 = new Label(this, SWT.NONE);
+        lblNewLabel_1.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+        lblNewLabel_1.setText("Type Status");
+
+        comboTypeStatus = new TermUuidComboViewer(this, SWT.NONE);
+        comboTypeStatus.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+        comboTypeStatus.setInput(TermType.SpecimenTypeDesignationStatus);
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+
+    public Button getBtnBrowseCollection() {
+        return btnBrowseCollection;
+    }
+    public TermUuidComboViewer getComboTypeStatus() {
+        return comboTypeStatus;
+    }
+    public Text getTxtCollection() {
+        return txtCollection;
+    }
+    public ComboViewer getComboViewerBaseType() {
+        return comboViewerBaseType;
+    }
+    public Text getTxtAccNumber() {
+        return txtAccNumber;
+    }
+    public Text getTextBarcode() {
+        return textBarcode;
+    }
+    public Text getTextCatalogNumber() {
+        return textCatalogNumber;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/type/CloneTypeWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/type/CloneTypeWizardPage.java
new file mode 100644 (file)
index 0000000..872feba
--- /dev/null
@@ -0,0 +1,136 @@
+/**
+* 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.ui.section.name.type;
+
+import java.util.Collection;
+
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.CollectionSelectionDialog;
+
+/**
+ * @author pplitzner
+ * @since Mar 13, 2019
+ *
+ */
+public class CloneTypeWizardPage extends WizardPage implements ISelectionChangedListener, ModifyListener {
+
+    private CloneTypeWizardComposite composite;
+
+    private eu.etaxonomy.cdm.model.occurrence.Collection selectedCollection = null;
+    private SpecimenTypeDesignation baseDesignation = null;
+
+    private final Collection<SpecimenTypeDesignation> typeDesignations;
+
+    protected CloneTypeWizardPage(Collection<SpecimenTypeDesignation> typeDesignations) {
+        super("Duplicate Type");
+        setTitle("Duplicate Type");
+        setDescription("Create a type duplicate based on an existing type specimen.");
+        this.typeDesignations = typeDesignations;
+    }
+
+    @Override
+    public void createControl(Composite parent) {
+
+        composite = new CloneTypeWizardComposite(parent, SWT.NONE);
+
+        // fill combo with available types
+        composite.getComboViewerBaseType().setContentProvider(new ArrayContentProvider());
+        composite.getComboViewerBaseType().setLabelProvider(new LabelProvider(){
+            @Override
+            public String getText(Object element) {
+                if(element instanceof SpecimenTypeDesignation){
+                    return ((SpecimenTypeDesignation) element).getTypeSpecimen().getTitleCache();
+                }
+                return super.getText(element);
+            }
+        });
+        composite.getComboViewerBaseType().setInput(typeDesignations);
+        if(typeDesignations.size()==1){
+            SpecimenTypeDesignation next = typeDesignations.iterator().next();
+            baseDesignation = next;
+            composite.getComboViewerBaseType().setSelection(new StructuredSelection(next));
+        }
+        composite.getComboViewerBaseType().addSelectionChangedListener(e->{
+            baseDesignation = (SpecimenTypeDesignation) ((StructuredSelection) e.getSelection()).getFirstElement();
+            getWizard().getContainer().updateButtons();
+        });
+
+        composite.getBtnBrowseCollection().addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                selectedCollection = CollectionSelectionDialog.select(getShell(), selectedCollection);
+                composite.getTxtCollection().setText(selectedCollection.getTitleCache());
+                getWizard().getContainer().updateButtons();
+            }
+        });
+
+        // add listeners for update buttons
+        composite.getTxtAccNumber().addModifyListener(this);
+        composite.getComboTypeStatus().addSelectionChangedListener(this);
+
+        setControl(composite);
+    }
+
+    @Override
+    public boolean isPageComplete() {
+        return composite.getComboViewerBaseType().getSelection()!=null
+                && selectedCollection!=null
+                && composite.getComboTypeStatus().getSelection()!=null;
+    }
+
+    @Override
+    public void selectionChanged(SelectionChangedEvent event) {
+        getWizard().getContainer().updateButtons();
+    }
+
+    @Override
+    public void modifyText(ModifyEvent e) {
+        getWizard().getContainer().updateButtons();
+
+    }
+
+    public SpecimenTypeDesignation getBaseTypeDesignation() {
+        return baseDesignation;
+    }
+
+    public String getAccessionNumber() {
+        return composite.getTxtAccNumber().getText();
+    }
+
+    public String getBarcode() {
+        return composite.getTextBarcode().getText();
+    }
+
+    public String getCatalogNumber() {
+        return composite.getTextCatalogNumber().getText();
+    }
+
+    public eu.etaxonomy.cdm.model.occurrence.Collection getCollection() {
+        return selectedCollection;
+    }
+
+    public SpecimenTypeDesignationStatus getTypeStatus() {
+        return (SpecimenTypeDesignationStatus) composite.getComboTypeStatus().getSelection();
+    }
+
+}
index b1383e224c5cd7371ecf5c02b0951d9079abc6dd..e7723a2702e45a95676247a6051c6d2aa9a4fea7 100644 (file)
@@ -1,8 +1,8 @@
 package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
index 5cfda2aed7d0324b91ae9b1d847d25a611357c9c..fd64a16d635d626c43fe580d5f69320184c32358 100644 (file)
@@ -13,8 +13,8 @@ import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.api.facade.MethodNotSupportedByDerivedUnitTypeException;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
index 01c30e33c3962b32a02ea3366a1422ee6a40172d..f6ac9405e75cabc5f7cbd9639a300676e6a65a9e 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import org.eclipse.swt.events.SelectionListener;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
index c66d90a89e3d5fab86dc2f918e83fe0fb8a7dc57..94ec129f806e469f93ebea509bdd928ff38bb6e6 100644 (file)
@@ -15,7 +15,7 @@ import java.util.Comparator;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
index 0155a4cfd7477d81594a3460a1682ad79ff72e1b..dfc441030bca3c6fb6ea077689479670afa115eb 100644 (file)
@@ -14,7 +14,7 @@ import java.util.Set;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
 import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
 import eu.etaxonomy.cdm.model.name.TaxonName;
@@ -98,12 +98,13 @@ public class DerivedUnitTypeDesignationElement
             getEntity().setTypeStatus(combo_typeStatus.getSelection());
         } else if (eventSource == checkbox_notDesignated) {
             getEntity().setNotDesignated(checkbox_notDesignated.getSelection());
-        } else if (eventSource == selection_reference) {
-            getEntity().setCitation(selection_reference.getSelection());
-        } else if (eventSource == text_referenceDetail) {
-            getEntity().setCitationMicroReference(
-                    text_referenceDetail.getText());
         }
+//        else if (eventSource == selection_reference) {
+//            getEntity().setCitation(selection_reference.getSelection());
+//        } else if (eventSource == text_referenceDetail) {
+//            getEntity().setCitationMicroReference(
+//                    text_referenceDetail.getText());
+//        }
     }
 
 }
index f8d2fa28837feab15ba6a45025fe713d7062572e..a265a1d86cb6dbc86334b7d8f2fe2c444e4cb62d 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence.derivedUnit;
 
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
index 64ec455afbd1797d0b45d1db347ebc10095ea422..0760fce110b448aa1df5a3080178f5862667b2a6 100644 (file)
@@ -14,7 +14,7 @@ import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
index 43b7b9bdb56617b2281971c02631911e25a57691..9a7e6463eb5b6491cab91ab1ee2ddf38c436b97f 100644 (file)
@@ -9,8 +9,8 @@
 package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.molecular.AmplificationResult;
 import eu.etaxonomy.cdm.model.molecular.Cloning;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
index 0ac54b6b4feda5feb121a4ef6f1c6e85d8730024..65281fb27d3562152e06851b0440ac176d2f382f 100644 (file)
@@ -10,8 +10,8 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Institution;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.molecular.Amplification;
 import eu.etaxonomy.cdm.model.molecular.Primer;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
index eac9f6006a1a0434be7d382f705a31a210d03ded..6e6865df8a6a1f4416b8ff8addd40567761ca0b8 100644 (file)
@@ -13,8 +13,8 @@ import java.time.ZonedDateTime;
 import org.joda.time.DateTime;
 import org.joda.time.LocalDateTime;
 
-import eu.etaxonomy.cdm.model.common.OrderedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.OrderedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.molecular.DnaQuality;
 import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.taxeditor.model.DateConverter;
index 0b9cf47c6f07fc62a3858e94b988b95b593f19c1..bd5a047be326bdf862936eda87f3f116195bc828 100644 (file)
@@ -8,8 +8,8 @@
  */
 package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.molecular.Primer;
 import eu.etaxonomy.cdm.model.molecular.SequenceString;
 import eu.etaxonomy.cdm.model.reference.Reference;
index 811ed1d004bc00bd9d0cd4cd4148f397171c1779..e7cbbc8ea646ab5204847184cb16016e0f79a578 100644 (file)
@@ -13,8 +13,8 @@ import java.net.URISyntaxException;
 
 import org.eclipse.swt.widgets.Text;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
 import eu.etaxonomy.cdm.model.molecular.SequenceString;
 import eu.etaxonomy.taxeditor.preference.Resources;
index d3e7aa21f5b69394eeae84d6009e2dea25344378..c1ab0f3d013233af1edca9f822d3616aba9a862d 100644 (file)
@@ -13,11 +13,11 @@ import org.apache.log4j.Logger;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Institution;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
 import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
index 1719f78e58239bfc8c99c5402aff89d7a50c101a..c0ff345ba7e71733403640fc4b8b985022034414 100644 (file)
@@ -10,13 +10,13 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence.media;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
index d5d5b6616b2b13de1dc91ef6370b3e6a24131e22..2e696123aaa961019bf4ebb5acf39a52cb8e3f2b 100644 (file)
@@ -18,7 +18,6 @@ import java.util.List;
 import org.eclipse.swt.SWT;
 import org.joda.time.DateTime;
 
-import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
@@ -72,7 +71,7 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
        private DoiWithLabelElement text_doi;
        private UriWithLabelElement text_uri;
        private DateElement text_accessed;
-       private EntitySelectionElement<AgentBase> selection_authorTeam;
+       private EntitySelectionElement<TeamOrPersonBase> selection_authorTeam;
        private VerbatimTimePeriodElement element_timePeriod;
        private EntitySelectionElement<Reference> selection_inReference;
        private EntitySelectionElement<Institution> selection_institution;
@@ -130,7 +129,7 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
                // author team
                if(referenceType != null && !referenceType.equals(ReferenceType.Journal) && !referenceType.equals(ReferenceType.PrintSeries) ) {
             selection_authorTeam = formFactory
-                       .createSelectionElement(AgentBase.class,//getConversationHolder(),
+                       .createSelectionElement(TeamOrPersonBase.class,//getConversationHolder(),
                                formElement, "Author",
                                        entity.getAuthorship(),
                                        EntitySelectionElement.ALL, style);
@@ -434,7 +433,7 @@ public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElem
                // selections
                else if (eventSource == selection_authorTeam) {
                        getEntity().setAuthorship(
-                                       (TeamOrPersonBase) selection_authorTeam.getEntity());
+                                       selection_authorTeam.getEntity());
                } else if (eventSource == selection_inReference) {
                        getEntity().setInReference(selection_inReference.getSelection());
                } else if (eventSource == selection_inSeries) {
index 33a8c366b51a8172ab2c3cac7d191eedfdc3ea88..2abac681abfced6abfa1ae558c1b847b3e5f84d3 100644 (file)
@@ -14,8 +14,8 @@ import java.util.Comparator;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionListener;
 
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
index 2255fdd2624f0618018220aa21ea19999fb4bf2f..f497dd608983c85701c4f97fd4a59056be5c5fdb 100644 (file)
@@ -27,7 +27,6 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 /**
  * @author n.hoffmann
  * @created Mar 25, 2010
- * @version 1.0
  */
 public abstract class AbstractReferencedEntityElement<T extends ReferencedEntityBase>
                extends AbstractEntityCollectionElement<T> implements ISelectableElement {
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractSourcedEntityBaseElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AbstractSourcedEntityBaseElement.java
new file mode 100755 (executable)
index 0000000..ae5fddd
--- /dev/null
@@ -0,0 +1,70 @@
+/**
+* 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.ui.section.supplemental;
+
+import org.eclipse.swt.events.SelectionListener;
+
+import eu.etaxonomy.cdm.model.common.SourcedEntityBase;
+import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
+import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+
+/**
+ * @author k.luther
+ * @since 26 Feb 2019
+ *
+ */
+public abstract class AbstractSourcedEntityBaseElement<T extends SourcedEntityBase> extends AbstractEntityCollectionElement<T> implements ISelectableElement{
+
+    private SelectionArbitrator selectionArbitrator;
+
+  //  protected SourceSection sources;
+
+
+    /**
+     * @param formFactory
+     * @param section
+     * @param entity
+     * @param removeListener
+     * @param backgroundColor
+     * @param style
+     */
+    public AbstractSourcedEntityBaseElement(CdmFormFactory formFactory, AbstractFormSection section, T entity,
+            SelectionListener removeListener, int style) {
+        super(formFactory, section, entity, removeListener, null, style);
+        // make this element selectable
+        if(formFactory.getSelectionProvider() != null){
+            selectionArbitrator = formFactory.createSelectionArbitrator(this);
+        }
+
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public SelectionArbitrator getSelectionArbitrator() {
+       return selectionArbitrator;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setEntity(T entity) {
+        this.entity = entity;
+    }
+
+
+
+
+
+}
index eff82501e3f4a2a583e9ae3e9a767df4f57f0fc1..c278e1a00c416394a01d632075ed12422ab5ef83 100644 (file)
@@ -7,7 +7,7 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.AnnotationType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
index cb2b00022f9d96994f01ea4e7772c91e5647b1e4..09c0584ebdb4aab2fef720b35ec976f634448e54 100644 (file)
@@ -8,7 +8,7 @@ import org.eclipse.swt.events.SelectionListener;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.Extension;
 import eu.etaxonomy.cdm.model.common.ExtensionType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
index a56c6b575b627366cee482ecbf0768d629a6fe71..b140c9329e2ce95e4b51467ecc4432cd17924b41 100644 (file)
@@ -3,12 +3,10 @@
  */
 package eu.etaxonomy.taxeditor.ui.section.supplemental;
 
-import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -58,8 +56,6 @@ public class IdentifiableSourceElement extends AbstractOriginalSourceElement<Ide
                }
                if(eventSource == selection_reference){
                        getEntity().setCitation(selection_reference.getSelection());
-                       AbstractUtility.getDetailsView(this.formFactory.getContext().get(EPartService.class)).
-                       refreshSelection();
                }
                else if(eventSource == text_referenceDetail){
                        getEntity().setCitationMicroReference(text_referenceDetail.getText());
index f22e8699f80829f9e1f2e06e0e6881d2407cc611..80af54ca986782a3f900b444e6336a92d600595b 100644 (file)
@@ -5,7 +5,7 @@ import org.eclipse.swt.events.SelectionListener;
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
index ba93b9e6b2849a6141e4ac906c9aadb337c7fa96..1eb91dc42ce21c60a5812e9475c7b07108e68d5c 100644 (file)
@@ -6,7 +6,7 @@ package eu.etaxonomy.taxeditor.ui.section.supplemental;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.media.Rights;
 import eu.etaxonomy.cdm.model.media.RightsType;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
index cfc9fb3842fc0335ea6205706e970261d405723a..f8219d0853cf2ebaaec01a6b247a01b0a391a2c3 100644 (file)
@@ -7,9 +7,9 @@ import java.util.Collection;
 import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
+import eu.etaxonomy.cdm.model.reference.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@@ -23,7 +23,7 @@ import eu.etaxonomy.taxeditor.ui.section.description.SourceComparator;
  * @created Nov 17, 2009
  * @version 1.0
  */
-public class SourceSection extends AbstractEntityCollectionSection<IIdentifiableEntity, IdentifiableSource> {
+public class SourceSection extends AbstractEntityCollectionSection<ISourceable, IdentifiableSource> {
 
        /**
         * <p>Constructor for SourceSection.</p>
@@ -40,7 +40,7 @@ public class SourceSection extends AbstractEntityCollectionSection<IIdentifiable
        /** {@inheritDoc} */
        @Override
        public IdentifiableSource createNewElement() {
-           IIdentifiableEntity entity = getEntity();
+           ISourceable entity = getEntity();
            OriginalSourceType type;
            if(entity instanceof Media) {
                type = OriginalSourceType.PrimaryMediaSource;
@@ -55,7 +55,7 @@ public class SourceSection extends AbstractEntityCollectionSection<IIdentifiable
        /** {@inheritDoc} */
        @Override
        public Collection<IdentifiableSource> getCollection(
-                       IIdentifiableEntity entity) {
+                       ISourceable entity) {
                return entity.getSources();
        }
 
@@ -106,4 +106,6 @@ public class SourceSection extends AbstractEntityCollectionSection<IIdentifiable
         return false;
     }
 
+
+
 }
index 70a519ec1c1f4a7e39638d104359d3ce9008a43f..91d12553ca8150a93d23e90f28bb628cced22b39 100644 (file)
@@ -11,9 +11,9 @@ package eu.etaxonomy.taxeditor.ui.section.supplemental.identifier;
 
 import org.eclipse.swt.events.SelectionListener;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.Identifier;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
index 2ee3445b17c0b5b023baa18d474997727f8216f9..29c25e37dc34118a4a7339064325a22dc1e616c8 100644 (file)
@@ -53,7 +53,7 @@ public class GroupsByUserDetailSection extends AbstractEntityCollectionSection<U
        @Override
        public Group createNewElement() {
                Group selectedGroup = GroupSelectionDialog.select(getShell(), //getConversationHolder(),
-                       null);
+                       null, getEntity());
                return selectedGroup;
        }
 
index d0dd27d5a0d7a6f7e7a33a538319b74e5b26e100..86e9ef76943e99f814a54ab129045897373fd89c 100644 (file)
@@ -19,11 +19,11 @@ import org.apache.log4j.Logger;
 import org.eclipse.swt.events.SelectionEvent;\r
 import org.eclipse.swt.events.SelectionListener;\r
 \r
-import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
+import eu.etaxonomy.cdm.model.term.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
 import eu.etaxonomy.cdm.model.common.LanguageString;\r
 import eu.etaxonomy.cdm.model.common.Marker;\r
-import eu.etaxonomy.cdm.model.common.TermType;\r
+import eu.etaxonomy.cdm.model.term.TermType;\r
 import eu.etaxonomy.cdm.model.description.CategoricalData;\r
 import eu.etaxonomy.cdm.model.description.State;\r
 import eu.etaxonomy.cdm.model.description.StateData;\r
index 2b472878108c5cf5069538a43bf7a0517de874eb..4cf0c6f825f78a8f28bd3b350cd17a41529e765f 100644 (file)
@@ -11,9 +11,9 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 import org.eclipse.swt.widgets.Button;\r
 \r
 import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.common.Representation;\r
-import eu.etaxonomy.cdm.model.common.TermBase;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.Representation;\r
+import eu.etaxonomy.cdm.model.term.TermBase;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.TermBasePropertyTester;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
index 5cb15548060c8b482a72146e9c568a2bd1b502bb..75732be94a4a01ad879bd4093dc7728d356e9499 100644 (file)
@@ -10,8 +10,8 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 \r
 import org.apache.commons.lang.StringUtils;\r
 \r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;\r
index c6de376efd03ce59379b4edfd78b72161eccc17e..0125bc55543ecf027d564a47917d78609465e7be 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 import org.eclipse.jface.viewers.ISelectionProvider;\r
 \r
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;\r
index 3742d449a262ad72f9547cead478ee8388d9c067..9d45a5fee4c7cc1f7e3d8572dd226ab5cf54bd81 100644 (file)
@@ -11,6 +11,7 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;\r
 \r
 import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;\r
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
@@ -57,7 +58,7 @@ public class FeatureDetailElement extends DefinedTermDetailElement<Feature> {
        }\r
 \r
        /* (non-Javadoc)\r
-        * @see eu.etaxonomy.taxeditor.ui.section.vocabulary.AbstractTermBaseDetailElement#createControls(eu.etaxonomy.taxeditor.ui.element.ICdmFormElement, eu.etaxonomy.cdm.model.common.TermBase, int)\r
+        * @see eu.etaxonomy.taxeditor.ui.section.vocabulary.AbstractTermBaseDetailElement#createControls(eu.etaxonomy.taxeditor.ui.element.ICdmFormElement, eu.etaxonomy.cdm.model.term.TermBase, int)\r
         */\r
        @Override\r
        protected void createControls(ICdmFormElement formElement, Feature entity, int style) {\r
@@ -107,37 +108,26 @@ public class FeatureDetailElement extends DefinedTermDetailElement<Feature> {
            if(eventSource == supportsTextData){\r
                getEntity().setSupportsTextData(supportsTextData.getSelection());\r
            }\r
-           else if(eventSource == supportsQuantitativeData){\r
-               getEntity().setSupportsQuantitativeData(supportsQuantitativeData.getSelection());\r
-               if(supportsQuantitativeData.getSelection()){\r
-                removeElementsAndControls(supportsDistribution);\r
-                sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),\r
-                        parentFormElement, ExpandableComposite.TWISTIE);\r
-                sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
-                sectionMeasurementUnits.setEntity(getEntity());\r
-\r
-                sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(\r
-                        getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
-                sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
-                sectionStatisticalMeasures.setEntity(getEntity());\r
-\r
-                if (!supportsCategoricalData.getSelection()) {\r
-                    sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(\r
-                            getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
-                    sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
-                    sectionModifierVocabularies.setEntity(getEntity());\r
-                }\r
-               }\r
-               else{\r
-                   if(sectionMeasurementUnits!=null){\r
-                       removeElementsAndControls(sectionMeasurementUnits);\r
-                       removeElementsAndControls(sectionStatisticalMeasures);\r
-                       if(!supportsCategoricalData.getSelection()){\r
-                           removeElementsAndControls(sectionModifierVocabularies);\r
-                       }\r
-                   }\r
-               }\r
-           }\r
+           if(eventSource == supportsQuantitativeData){\r
+            getEntity().setSupportsQuantitativeData(supportsQuantitativeData.getSelection());\r
+            if(supportsQuantitativeData.getSelection()){\r
+                activateQuantitativeWidgets();\r
+            }\r
+            else{\r
+                removeQuantitativeWidgets();\r
+            }\r
+            StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);\r
+        }\r
+        else if(eventSource == supportsCategoricalData){\r
+            getEntity().setSupportsCategoricalData(supportsCategoricalData.getSelection());\r
+            if (supportsCategoricalData.getSelection()) {\r
+                activateCategoricalWidgets();\r
+            }\r
+            else{\r
+                removeCategoricalWidgets();\r
+            }\r
+            StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);\r
+        }\r
            else if(eventSource == supportsDistribution){\r
                getEntity().setSupportsDistribution(supportsDistribution.getSelection());\r
            }\r
@@ -147,33 +137,69 @@ public class FeatureDetailElement extends DefinedTermDetailElement<Feature> {
            else if(eventSource == supportsTaxonInteraction){\r
                getEntity().setSupportsTaxonInteraction(supportsTaxonInteraction.getSelection());\r
            }\r
-           else if(eventSource == supportsCategoricalData){\r
-               getEntity().setSupportsCategoricalData(supportsCategoricalData.getSelection());\r
-            if (supportsCategoricalData.getSelection()) {\r
-                sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),\r
-                        parentFormElement, ExpandableComposite.TWISTIE);\r
-                sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
-                sectionStateVocabularies.setEntity(getEntity());\r
-\r
-                if (!supportsQuantitativeData.getSelection()) {\r
-                    sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(\r
-                            getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
-                    sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
-                    sectionModifierVocabularies.setEntity(getEntity());\r
-                }\r
-            }\r
-               else{\r
-                   if(sectionStateVocabularies!=null){\r
-                       removeElementsAndControls(sectionStateVocabularies);\r
-                       if(!supportsQuantitativeData.getSelection()){\r
-                           removeElementsAndControls(sectionModifierVocabularies);\r
-                       }\r
-                   }\r
-               }\r
-           }\r
            else if(eventSource == supportsCommonTaxonName){\r
                getEntity().setSupportsCommonTaxonName(supportsCommonTaxonName.getSelection());\r
            }\r
+        StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);\r
        }\r
 \r
+       private void activateQuantitativeWidgets(){\r
+        //disable categorical widgets\r
+        supportsCategoricalData.setSelection(false);\r
+        getEntity().setSupportsCategoricalData(false);\r
+        removeCategoricalWidgets();\r
+\r
+        //measurement units\r
+        sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),\r
+                parentFormElement, ExpandableComposite.TWISTIE);\r
+        sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+        sectionMeasurementUnits.setEntity(getEntity());\r
+\r
+        //statistical measures\r
+        sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(\r
+                getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
+        sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+        sectionStatisticalMeasures.setEntity(getEntity());\r
+\r
+        //modifiers\r
+        sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(\r
+                getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
+        sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+        sectionModifierVocabularies.setEntity(getEntity());\r
+    }\r
+\r
+    private void removeQuantitativeWidgets(){\r
+        if(sectionMeasurementUnits!=null){\r
+            removeElementsAndControls(sectionMeasurementUnits);\r
+            removeElementsAndControls(sectionStatisticalMeasures);\r
+            removeElementsAndControls(sectionModifierVocabularies);\r
+        }\r
+    }\r
+\r
+    private void activateCategoricalWidgets(){\r
+        //disable quantitative widgeets\r
+        supportsQuantitativeData.setSelection(false);\r
+        getEntity().setSupportsQuantitativeData(false);\r
+        removeQuantitativeWidgets();\r
+\r
+        //states\r
+        sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),\r
+                parentFormElement, ExpandableComposite.TWISTIE);\r
+        sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+        sectionStateVocabularies.setEntity(getEntity());\r
+\r
+        //modifiers\r
+        sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(\r
+                getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
+        sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+        sectionModifierVocabularies.setEntity(getEntity());\r
+    }\r
+\r
+    private void removeCategoricalWidgets(){\r
+        if(sectionStateVocabularies!=null){\r
+            removeElementsAndControls(sectionStateVocabularies);\r
+            removeElementsAndControls(sectionModifierVocabularies);\r
+        }\r
+    }\r
+\r
 }\r
index 187f41a94e3a5d5857cc6d626f02b958b13d0b6b..0b0e5007b22ab98193cf86f26ff2ba51bcabe175 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.MeasurementUnit;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
index 1930cd332c2241acf9268ac2955b66792ed6ce6c..f003cd024e6f2645d307e07566c42ffbfe75d5bb 100644 (file)
@@ -8,7 +8,7 @@
 */\r
 package eu.etaxonomy.taxeditor.ui.section.vocabulary;\r
 \r
-import eu.etaxonomy.cdm.model.common.TermType;\r
+import eu.etaxonomy.cdm.model.term.TermType;\r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
 import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
 import eu.etaxonomy.cdm.model.location.NamedAreaType;\r
index a1cc9b4506f03919fb4dc0059e0c23d551350d67..b6aff4d1fc1de3d0e7820be4262d3e9cccade963 100644 (file)
@@ -23,7 +23,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
 import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
index 2a4ab585fd37abfee996573b9ceea9a8a4257407..891901c5900b8c4d4c0b39a99fd00f7af69861f7 100644 (file)
@@ -12,9 +12,9 @@ import java.util.Collection;
 import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
index f75b4ef74f51b99f1d9538b7a52d31787d5b5ff2..2bae0dcb108c4d7a315881d64021a9b53432384f 100644 (file)
@@ -11,9 +11,9 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
index c5a91413aadbbc6096b35764c1fa5647186f722a..8c9b65e9d3a5f6e46f1f545035951821ffad8edd 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement;
index 1a84916cfbfff45fe86ab192df763261eb55d4f5..153ba8f3b70bd7cf5dd075db98c6acaf803c2f7b 100644 (file)
@@ -12,8 +12,8 @@ import java.util.Collection;
 import java.util.Comparator;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
index 492be0f82d7ada2d5fbed34650f812e6b619000f..bb3f059dbd4baea0d94c366f26fe4b45025357a8 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
index 68a52cb36aa3985d2cc75f8699cb583c0f3dd30f..d5e2f8eac25b3d72d2fa456da53bffb946a367cd 100644 (file)
@@ -10,8 +10,9 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 
 import org.eclipse.jface.wizard.Wizard;
 
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermBase;
 import eu.etaxonomy.taxeditor.ui.translation.TermTranslationWizardPage;
 
 /**
@@ -24,42 +25,44 @@ public class TermTranslationWizard extends Wizard {
 
     private final TermBase term;
 
-    /**
-     * <p>Constructor for TranslationWizard.</p>
-     *
-     * @param multilanguageText a {@link java.util.Map} object.
-     */
     public TermTranslationWizard(TermBase term) {
         setWindowTitle("Translation Editor");
         this.term = term;
         setNeedsProgressMonitor(true);
     }
 
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.wizard.Wizard#addPages()
-     */
-    /** {@inheritDoc} */
     @Override
     public void addPages() {
         page = new TermTranslationWizardPage(term);
         addPage(page);
     }
 
-    /* (non-Javadoc)
-     * @see org.eclipse.jface.wizard.Wizard#performFinish()
-     */
-    /** {@inheritDoc} */
     @Override
     public boolean performFinish() {
         Representation representation = page.getTargetRepresentation();
-        
+
         if (representation.getLanguage() == null){
                return false;
         }
-        if (!representation.getText().equals("") || !representation.getLabel().equals("") || !representation.getAbbreviatedLabel().equals("")) {
+        if (CdmUtils.isNotBlank(representation.getText())
+                || CdmUtils.isNotBlank(representation.getLabel())
+                || CdmUtils.isNotBlank(representation.getAbbreviatedLabel())
+                || CdmUtils.isNotBlank(representation.getPlural())){
             term.addRepresentation(representation);
         }
 
         return true;
     }
+
+    @Override
+    public boolean canFinish() {
+        Representation representation = page.getTargetRepresentation();
+        if (representation==null || representation.getLanguage() == null){
+            return false;
+        }
+        return CdmUtils.isNotBlank(representation.getText())
+                || CdmUtils.isNotBlank(representation.getLabel())
+                || CdmUtils.isNotBlank(representation.getAbbreviatedLabel())
+                || CdmUtils.isNotBlank(representation.getPlural());
+    }
 }
index 7a43b3f828b7d84b384c849bc2b652016d098a9c..03dcc38d5ef14f1bb7a1619ae40a44c010e10c9c 100644 (file)
@@ -8,7 +8,7 @@
 */\r
 package eu.etaxonomy.taxeditor.ui.section.vocabulary;\r
 \r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;\r
index dc793fbcee45ac370ae9826ce1ce518edaafdb81..90fe16f59a274671ab50ea1b57cdb67f4be50452 100644 (file)
@@ -11,7 +11,7 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 import org.eclipse.jface.viewers.ISelectionProvider;\r
 \r
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;\r
index 5e7a34c3f068bdd06b4b0320bc6ce69e03f6cb39..502573a66bb7a110e2f146e134d41533f3e81db8 100644 (file)
@@ -8,24 +8,15 @@
 */
 package eu.etaxonomy.taxeditor.ui.translation;
 
-/**
- * @author k.luther
- * @date 22.06.2016
- *
- */
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import org.apache.commons.lang.StringUtils;
+import org.eclipse.jface.util.IPropertyChangeListener;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermBase;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@@ -35,14 +26,18 @@ import eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement;
 import eu.etaxonomy.taxeditor.ui.element.RepresentationElement;
 import eu.etaxonomy.taxeditor.ui.element.RootElement;
 
-public class TermTranslationWizardPage extends WizardPage implements PropertyChangeListener{
-
+/**
+ * @author k.luther
+ * @date 22.06.2016
+ *
+ */
+public class TermTranslationWizardPage extends WizardPage implements IPropertyChangeListener{
 
         private static int TEXT_HEIGHT = 200;
 
         private final TermBase term;
 
-        MultilanguageTextElement source;
+        private MultilanguageTextElement source;
 
         private final CdmFormFactory formFactory;
 
@@ -50,71 +45,48 @@ public class TermTranslationWizardPage extends WizardPage implements PropertyCha
 
         private RepresentationElement text_target;
 
-        /**
-         * <p>Constructor for TranslationWizardPage.</p>
-         *
-         * @param multilanguageText a {@link java.util.Map} object.
-         */
         public TermTranslationWizardPage(TermBase term) {
             super("TranslationWizardPage");
             //Assert.isNotNull(multilanguageText, "Multilanguage text may not be null");
             setTitle("Add or edit translations.");
             this.term = term;
             formFactory = new CdmFormFactory(Display.getCurrent());
+            formFactory.addPropertyChangeListener(this);
             setPageComplete(false);
         }
 
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
-         */
-        /** {@inheritDoc} */
         @Override
         public void createControl(Composite parent) {
             Composite control = formFactory.createComposite(parent);
-//          control.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
             control.setLayout(LayoutConstants.LAYOUT(2, false));
 
             Composite leftContainer = formFactory.createComposite(control);
             leftContainer.setLayoutData(LayoutConstants.FILL(1, 4));
             leftContainer.setLayout(LayoutConstants.LAYOUT(2, false));
-//          leftContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
             RootElement leftRoot = new RootElement(formFactory, leftContainer);
 
             Composite rightContainer = formFactory.createComposite(control);
             rightContainer.setLayoutData(LayoutConstants.FILL(1, 4));
             rightContainer.setLayout(LayoutConstants.LAYOUT(2, false));
-//          rightContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
             RootElement rightRoot = new RootElement(formFactory, rightContainer);
 
             createLeftControls(leftRoot);
             createRightControls(rightRoot);
 
-
             // initialize with default language
             setSource(CdmStore.getDefaultLanguage());
 
-
             setControl(control);
             setPageComplete(true);
         }
 
-        /**
-         * @param defaultLanguage
-         */
         private void setSource(Language language) {
-
            Representation preferredRepresentation =term.getPreferredRepresentation(language);
-
             if(preferredRepresentation != null){
                text_source.setSelectedRepresentation(preferredRepresentation);
             }
         }
 
-
-        /**
-         *
-         * @param element
-         */
         private void createLeftControls(ICdmFormElement element){
             Representation preferredRepresentation= term.getPreferredRepresentation(PreferencesUtil.getGlobalLanguage());
 
@@ -123,50 +95,23 @@ public class TermTranslationWizardPage extends WizardPage implements PropertyCha
 
         }
 
-        /**
-         *
-         * @param element
-         */
         private void createRightControls(ICdmFormElement element){
             text_target = formFactory.createRepresentationElement(element, null, term, TEXT_HEIGHT, SWT.NULL, false);
-            
         }
 
-
-
-
-        /* (non-Javadoc)
-         * @see org.eclipse.jface.dialogs.DialogPage#dispose()
-         */
-        /** {@inheritDoc} */
         @Override
         public void dispose() {
             super.dispose();
         }
 
-        /**
-         * @return
-         *
-         */
         public Representation getTargetRepresentation() {
             return text_target.getSelectedRepresentation();
         }
 
-        /* (non-Javadoc)
-         * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
-         */
         @Override
-        public void propertyChange(PropertyChangeEvent evt) {
-            if (evt.getSource() == text_target){
-                if (!StringUtils.isBlank(text_target.getSelectedRepresentation().getAbbreviatedLabel()) ||
-                        !StringUtils.isBlank(text_target.getSelectedRepresentation().getLabel()) || !StringUtils.isBlank(text_target.getSelectedRepresentation().getText())){
-                    setPageComplete(true);
-                }
+        public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) {
+            if (event.getSource() == text_target){
+                getWizard().getContainer().updateButtons();
             }
-
         }
-
-
-
-
 }
index 558ae50a8d6b246e89e4a0d8dba099d8424648af..828b32ceccaa8ccf483492b3deca60eab84803bb 100644 (file)
@@ -26,7 +26,7 @@ import org.eclipse.swt.widgets.Display;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
index 7cef26a1d2bcbfc717f8d8db264598be1a195bd9..63ad759ce5f98bcab413a6dc14be1d51fd68c4bc 100644 (file)
@@ -121,7 +121,6 @@ public class ProgressMonitorClientManager {
 
             }
             // start the client monitor
-           // monitor.subTask(remotingMonitor.getTaskName());
             monitor.beginTask(remotingMonitor.getTaskName(), remotingMonitor.getTotalWork());
             logger.info("Work to be done: " + remotingMonitor.getTotalWork());
             int editorTotalWorkDone = 0;
@@ -161,10 +160,9 @@ public class ProgressMonitorClientManager {
 
 
                 // set dialog text
-                monitor.setTaskName(label + " " + percentage + "% done ");
-                monitor.subTask(remotingMonitor.getSubTask());
-//                monitor.setWorkRemaining((int) (remotingMonitor.getTotalWork()-remotingMonitor.getWorkDone()));
-               // monitor.subTask(remotingMonitor.getSubTask(), remotingMonitor.getWorkDone());
+                monitor.setTaskName(remotingMonitor.getTaskName());
+                monitor.subTask(" " + percentage + "% done ");
+
                 int worked = 0;
                 if (serverTotalWorkDone > editorTotalWorkDone){
                     worked = serverTotalWorkDone - editorTotalWorkDone;
@@ -180,7 +178,7 @@ public class ProgressMonitorClientManager {
             if(remotingMonitor.getResult() instanceof Exception) {
                 UpdateResult result = new UpdateResult();
                 result.addException((Exception) remotingMonitor.getResult());
-//                throw new IllegalStateException((Exception)remotingMonitor.getResult());
+
             }
             return remotingMonitor;
         } finally {
index b7b58604ce5eca0b4936f10a1af3aa7000358daa..73a81cce45a0d57b32d4f52d52b83e9303a656d0 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifDataSetProtocol;
 import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
 import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
 import eu.etaxonomy.cdm.io.specimen.gbif.in.GbifImportConfigurator;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.view.dataimport.GbifResponseComparator;
index c23f0af6e7fec9387ead18ccc5bccab5aa30c083..377d28f8cf9e82835fb206117cf8c74bd1d12736 100644 (file)
@@ -23,7 +23,6 @@ import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
-import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
@@ -35,6 +34,7 @@ import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.cdm.persistence.dto.TermDto;
@@ -46,6 +46,7 @@ import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4;
 import eu.etaxonomy.taxeditor.view.e4.details.DetailsViewerE4;
 import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
 import eu.etaxonomy.taxeditor.workbench.part.ISelectionElementEditingPart;
@@ -115,14 +116,6 @@ public abstract class AbstractCdmEditorPartE4
 
     protected Object previousSelection;
 
-    public Object getPreviousSelection() {
-        return previousSelection;
-    }
-
-    public void setPreviousSelection(Object previousSelection) {
-        this.previousSelection = previousSelection;
-    }
-
     protected ISelectionChangedListener selectionChangedListener;
 
     public ISelectionChangedListener getSelectionChangedListener() {
@@ -151,6 +144,7 @@ public abstract class AbstractCdmEditorPartE4
             showEmptyPage();
             return;
         }
+        // no active editor found
         if(activePart==thisPart && WorkbenchUtility.getActiveEditorPart(partService)==null){
             showEmptyPage();
             return;
@@ -164,14 +158,12 @@ public abstract class AbstractCdmEditorPartE4
 
         }
 
-        if(previousSelection!=null){
-            if(previousSelection==selection || previousSelection.equals(selection)){
-                return;
-            }
-            else if(previousSelection instanceof ISelection &&
-                    previousSelection.equals(selection)){//skip redundant rendering of details view
-                return;
-            }
+        if((previousSelection!=null && selection!=null) && (activePart != null &&  selectionProvidingPart != null && activePart.equals(selectionProvidingPart)) &&
+                (previousSelection==selection
+                || previousSelection.equals(selection)
+                || new StructuredSelection(selection).equals(previousSelection))
+                ) {
+            return;
         }
         if(delaySelection==null){
             delaySelection = new DelaySelection(selection, activePart, thisPart);
@@ -235,14 +227,20 @@ public abstract class AbstractCdmEditorPartE4
                 else if(element instanceof TermVocabularyDto){
                     element = CdmStore.getService(IVocabularyService.class).load(((TermVocabularyDto) element).getUuid());
                 }
+
+                selectionProvidingPart = activePart;
                 if (viewer instanceof DetailsViewerE4){
                     ((DetailsViewerE4)viewer).setInput(element, part);
                     ((DetailsViewerE4)viewer).setDetailsEnabled(true);
+
                 }
+
                 else{
+                    if (activePart.getObject() instanceof DetailsPartE4 && element instanceof TaxonName){
+                        selectionProvidingPart = ((DetailsPartE4)activePart.getObject()).getSelectionProvidingPart();
+                    }
                     viewer.setInput(element);
                 }
-                selectionProvidingPart = activePart;
             }
         }
     }
index c98bb3a301375f18f4067d4d7f1cae594f034a35..ad811b507d2998b602a0902418337b39209bb4ab 100644 (file)
@@ -27,6 +27,7 @@ import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
@@ -39,7 +40,7 @@ import eu.etaxonomy.taxeditor.workbench.part.ISelectionElementEditingPart;
  * @date 18.07.2017
  *
  */
-public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartContentHasSupplementalData {
+public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartContentHasSupplementalData, IPartContentHasFactualData {
        @Inject
        private Logger logger;
 
index c1bcb4d4548c08c9cd058a7524f9465d76c0d231..133c9bed66ae3af659439f32aaef47ca72280c9b 100755 (executable)
@@ -29,20 +29,21 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.Marker;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.description.CategoricalData;
 import eu.etaxonomy.cdm.model.description.Character;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Distribution;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.molecular.DnaSample;
 import eu.etaxonomy.cdm.model.molecular.Sequence;
@@ -175,8 +176,8 @@ public class DetailsViewerE4 extends AbstractCdmDataViewerE4 {
             input = ((GbifResponse) input).getDerivedUnitFacade();
         }
         if(input instanceof FeatureNode
-                && HibernateProxyHelper.isInstanceOf(((FeatureNode) input).getFeature(), Character.class)){
-            input = HibernateProxyHelper.deproxy(((FeatureNode) input).getFeature(), Character.class);
+                && HibernateProxyHelper.isInstanceOf(((FeatureNode) input).getTerm(), Character.class)){
+            input = HibernateProxyHelper.deproxy(((FeatureNode) input).getTerm(), Character.class);
         }
         if (input !=null && input.getClass().equals(DerivedUnit.class)) {
             DerivedUnit derivedUnit = (DerivedUnit)input;
@@ -269,9 +270,11 @@ public class DetailsViewerE4 extends AbstractCdmDataViewerE4 {
 
                 } else if (isUseDescription) {
                     createUseDescriptionSection(rootElement);
-                } else {
+                } else if (input instanceof TaxonDescription){
                     createTaxonDescriptionSection(rootElement);
 
+                } else{
+                    createDescriptionSection(rootElement, false);
                 }
             }
         } else if (input instanceof DescriptionElementBase){
index 9551c4efb2f189eaa29aa8847417c05bed7fc5f0..a72039deeddae9570abe2bc714104f8d849a25cc 100644 (file)
@@ -18,9 +18,9 @@ import org.eclipse.swt.SWT;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
+import eu.etaxonomy.cdm.model.reference.ISourceable;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
-import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
@@ -88,6 +88,9 @@ public class SupplementalDataViewerE4 extends AbstractCdmDataViewerE4 {
                if(input instanceof IdentifiableEntity){
                        createIdentifiableSections(rootElement);
                }
+               if(input instanceof ISourceable && !(input instanceof IdentifiableEntity)){
+            createSourceSection(rootElement);
+        }
                //4. Identifiable media entity
                if(input instanceof IdentifiableMediaEntity){
                        createIdentifiableMediaSections(rootElement);
@@ -109,6 +112,12 @@ public class SupplementalDataViewerE4 extends AbstractCdmDataViewerE4 {
                addPart(headlineSection);
        }
 
+       private void createSourceSection(RootElement parent){
+        SourceSection sourceSection =  formFactory.createSourceSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
+        formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+        addPart(sourceSection);
+    }
+
     private void createAnnotationSections(RootElement parent) {
         AnnotationSection annotationSection = formFactory.createAnnotationSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
 
index b3c8c1fb152758dfa30d10e5edc28377af2cf0cd..0d74229736e51d1a0847e89be870b9536adf3f4d 100644 (file)
@@ -31,7 +31,7 @@ import eu.etaxonomy.cdm.format.CdmFormatterFactory;
 import eu.etaxonomy.cdm.format.ICdmFormatter.FormatKey;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.Identifier;
 import eu.etaxonomy.cdm.model.molecular.DnaSample;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/CheckBoxSearchResultComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/CheckBoxSearchResultComposite.java
new file mode 100644 (file)
index 0000000..8e7ed26
--- /dev/null
@@ -0,0 +1,57 @@
+/**
+* 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.view.search.facet;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author pplitzner
+ * @since Feb 14, 2019
+ *
+ */
+public abstract class CheckBoxSearchResultComposite<T, S extends SearchResult<T>> extends Composite {
+
+    protected S result;
+    private Button btnCheck;
+
+    public CheckBoxSearchResultComposite(S result, Composite parent, int style) {
+        super(parent, style);
+        this.result = result;
+        setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+        GridLayout gridLayout = new GridLayout();
+        gridLayout.marginWidth = 0;
+        gridLayout.horizontalSpacing = 0;
+        gridLayout.numColumns = 2;
+        setLayout(gridLayout);
+
+        Composite composite = new Composite(this, SWT.NONE);
+        composite.setLayout(new GridLayout(1, false));
+        composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+
+        btnCheck = new Button(composite, SWT.CHECK);
+        btnCheck.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
+
+        createContent(this);
+    }
+
+    public abstract Composite createContent(Composite parent);
+
+    public S getResult() {
+        return result;
+    }
+
+    public Button getBtnCheck() {
+        return btnCheck;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/Facet.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/Facet.java
new file mode 100644 (file)
index 0000000..ce3211e
--- /dev/null
@@ -0,0 +1,76 @@
+/**
+* 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.view.search.facet;
+
+/**
+ * @author pplitzner
+ * @since Jan 24, 2019
+ *
+ */
+public class Facet {
+
+    private String category;
+    private String facet;
+
+    public Facet(String facet) {
+        this(facet, null);
+    }
+
+    public Facet(String facet, String category) {
+        this.category = category;
+        this.facet = facet;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public String getFacet() {
+        return facet;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((category == null) ? 0 : category.hashCode());
+        result = prime * result + ((facet == null) ? 0 : facet.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        Facet other = (Facet) obj;
+        if (category == null) {
+            if (other.category != null) {
+                return false;
+            }
+        } else if (!category.equals(other.category)) {
+            return false;
+        }
+        if (facet == null) {
+            if (other.facet != null) {
+                return false;
+            }
+        } else if (!facet.equals(other.facet)) {
+            return false;
+        }
+        return true;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/FilterComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/FilterComposite.java
new file mode 100644 (file)
index 0000000..b444e69
--- /dev/null
@@ -0,0 +1,68 @@
+/**
+* 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.view.search.facet;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author pplitzner
+ * @since Jan 23, 2019
+ *
+ */
+public class FilterComposite extends Composite{
+    private Button btnCheck;
+    private Facet facet;
+
+    public FilterComposite(Facet facet, SearchController controller, Composite parent, int style) {
+        super(parent, style);
+        this.facet = facet;
+        GridDataFactory.fillDefaults().applyTo(this);
+        GridLayout gridLayout = new GridLayout(2, false);
+        gridLayout.marginHeight = 0;
+        gridLayout.marginWidth = 0;
+        gridLayout.horizontalSpacing = 0;
+        setLayout(gridLayout);
+
+        btnCheck = new Button(this, SWT.CHECK);
+        btnCheck.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                controller.applyFilter(FilterComposite.this);
+            }
+        });
+        btnCheck.setSelection(true);
+
+        Composite content = new Composite(this, SWT.NONE);
+        GridDataFactory.fillDefaults().applyTo(content);
+        GridLayout gl_content = new GridLayout();
+        gl_content.horizontalSpacing = 0;
+        content.setLayout(gl_content);
+
+        Label label = new Label(content, SWT.NONE);
+        label.setText(facet.getFacet());
+        GridDataFactory.fillDefaults().applyTo(label);
+
+    }
+
+    public boolean isFilterActive() {
+        return btnCheck.getSelection();
+    }
+
+    public Facet getFacet() {
+        return facet;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchComposite.java
new file mode 100644 (file)
index 0000000..deb6e21
--- /dev/null
@@ -0,0 +1,134 @@
+// $Id$
+/**
+* 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.view.search.facet;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.taxeditor.model.ImageResources;
+
+/**
+ * @author pplitzner
+ * @date 22.01.2019
+ *
+ */
+public class SearchComposite extends SashForm {
+    private Text txtSearch;
+    private ScrolledComposite filterScrolledComposite;
+    private Composite filterListComposite;
+    private Composite searchResultComposite;
+    private ScrolledComposite resultScrolledComposite;
+    private Button btnSearchButton;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public SearchComposite(Composite parent, int style) {
+        super(parent, style);
+        setLayout(new GridLayout(2, false));
+
+        Composite filterComposite = new Composite(this, SWT.NONE);
+        filterComposite.setLayout(new GridLayout(1, false));
+        GridData gd_filterComposite = new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1);
+        filterComposite.setLayoutData(gd_filterComposite);
+
+        Composite composite = new Composite(filterComposite, SWT.NONE);
+        composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
+        composite.setLayout(new GridLayout(2, false));
+
+        txtSearch = new Text(composite, SWT.BORDER);
+        txtSearch.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
+
+        btnSearchButton = new Button(composite, SWT.NONE);
+        btnSearchButton.setImage(ImageResources.getImage(ImageResources.SEARCH_ICON));
+
+        filterScrolledComposite = new ScrolledComposite(filterComposite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+        filterScrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+        filterScrolledComposite.setExpandHorizontal(true);
+        filterScrolledComposite.setExpandVertical(true);
+
+        initFilterList();
+
+        Composite composite_1 = new Composite(this, SWT.NONE);
+        composite_1.setLayout(new GridLayout(1, false));
+        composite_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+
+        resultScrolledComposite = new ScrolledComposite(composite_1, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+        resultScrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+        resultScrolledComposite.setExpandHorizontal(true);
+        resultScrolledComposite.setExpandVertical(true);
+        setWeights(new int[] {40, 60});
+
+        initSearchResultList();
+
+    }
+
+    private void initSearchResultList() {
+        searchResultComposite = new Composite(resultScrolledComposite, SWT.NONE);
+        searchResultComposite.setLayout(new GridLayout(1, false));
+        resultScrolledComposite.setContent(searchResultComposite);
+        resultScrolledComposite.setMinSize(searchResultComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+    }
+
+    private void initFilterList() {
+        filterListComposite = new Composite(filterScrolledComposite, SWT.NONE);
+        GridLayout gl_filterListComposite = new GridLayout(1, false);
+        gl_filterListComposite.marginHeight = 0;
+        gl_filterListComposite.verticalSpacing = 0;
+        filterListComposite.setLayout(gl_filterListComposite);
+        filterScrolledComposite.setContent(filterListComposite);
+        filterScrolledComposite.setMinSize(filterListComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+    public Text getTxtSearch() {
+        return txtSearch;
+    }
+
+    public Composite getFilterListComposite() {
+        return filterListComposite;
+    }
+
+    public void clear(){
+        filterListComposite.dispose();
+        initFilterList();
+
+        clearResults();
+    }
+
+    public void clearResults() {
+        searchResultComposite.dispose();
+        initSearchResultList();
+    }
+
+    public void refresh(){
+        filterScrolledComposite.layout(true, true);
+        filterScrolledComposite.setMinSize(filterListComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+        resultScrolledComposite.layout(true, true);
+        resultScrolledComposite.setMinSize(searchResultComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+    }
+    public Composite getSearchResultComposite() {
+        return searchResultComposite;
+    }
+    public Button getBtnSearchButton() {
+        return btnSearchButton;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchController.java
new file mode 100644 (file)
index 0000000..8251516
--- /dev/null
@@ -0,0 +1,178 @@
+/**
+* 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.view.search.facet;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeMap;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public abstract class SearchController<S extends SearchResult<T>, T> implements KeyListener, SelectionListener{
+
+    private SearchComposite composite;
+    private List<S> searchResults = new ArrayList<>();
+    private Set<Facet> appliedFacets = new HashSet<>();
+    private List<CheckBoxSearchResultComposite<T, S>> searchResultComposites = new ArrayList<>();
+
+    public SearchController(SearchComposite composite) {
+        this.composite = composite;
+        composite.getTxtSearch().addKeyListener(this);
+        composite.getBtnSearchButton().addSelectionListener(this);
+    }
+
+    protected abstract List<S> searchResults(String searchString);
+
+    protected abstract CheckBoxSearchResultComposite<T, S> createResultComposite(S result, Composite parent);
+
+    protected abstract Comparator<S> getResultComparator(String searchString);
+
+    protected abstract List<S> getSelectedResults();
+
+    private void search(String searchString){
+        searchResults.clear();
+        searchResultComposites.clear();
+
+        searchResults = searchResults(searchString);
+        if(searchResults.size()>500){
+            MessagingUtils.warningDialog("Specify your search", this, "The following search has too many results. Please enter a more specific search query.");
+            return;
+        }
+
+        Collections.sort(searchResults, getResultComparator(searchString));
+
+        Set<Facet> facets = createResults(searchResults);
+
+        createFilterButtons(facets);
+
+        composite.refresh();
+    }
+
+    private void createFilterButtons(Set<Facet> facets) {
+        Map<String, List<Facet>> categoryToFacetsMap = new TreeMap<>();//(String o1, String o2)->o1.compareTo(o2));
+        for (Facet facet : facets) {
+            String category = facet.getCategory();
+            if(category==null){
+                category = "None";
+            }
+            List<Facet> categoryFacets = categoryToFacetsMap.get(category);
+            if(categoryFacets==null){
+                categoryFacets = new ArrayList<>();
+            }
+            categoryFacets.add(facet);
+            categoryToFacetsMap.put(category, categoryFacets);
+        }
+        for (Entry<String, List<Facet>> entry: categoryToFacetsMap.entrySet()) {
+            String category = entry.getKey();
+            // create group
+            Group group = new Group(composite.getFilterListComposite(), SWT.NONE);
+            group.setLayout(new GridLayout());
+            GridDataFactory.fillDefaults().applyTo(group);
+            group.setText(category!=null?category:"None");
+            // fill group with facet filters
+            List<Facet> categoryFacets = entry.getValue();
+            for (Facet facet : categoryFacets) {
+                if(facet.getFacet()!=null){
+                    FilterComposite filterComposite = new FilterComposite(facet, this, group, SWT.NONE);
+                    appliedFacets.add(facet);
+                }
+            }
+        }
+
+    }
+
+    private Set<Facet> createResults(List<S> results) {
+        Set<Facet> facets = new HashSet<>();
+        searchResultComposites.clear();
+        for (S result : results) {
+            searchResultComposites.add(createResultComposite(result, composite.getSearchResultComposite()));
+            facets.addAll(result.getFacets());
+        }
+        return facets;
+    }
+
+    public void applyFilter(FilterComposite filterComposite) {
+
+        composite.clearResults();
+
+        Facet facet = filterComposite.getFacet();
+        if(filterComposite.isFilterActive()){
+            appliedFacets.add(facet);
+        }
+        else{
+            appliedFacets.remove(facet);
+        }
+
+        searchResultComposites.clear();
+        for (S searchResult : searchResults) {
+            if(searchResult.hasAnyFacet(appliedFacets)){
+                searchResultComposites.add(createResultComposite(searchResult, composite.getSearchResultComposite()));
+            }
+        }
+
+        composite.refresh();
+    }
+
+    private void search(){
+        composite.clear();
+        search(composite.getTxtSearch().getText());
+    }
+
+    public List<S> getSelectedSearchResults(){
+        List<S> selectedSearchResults = new ArrayList<>();
+        searchResultComposites.stream()
+        .filter(resultComposite->resultComposite.getBtnCheck().getSelection())
+        .forEach(selected->selectedSearchResults.add(selected.getResult()));
+        return selectedSearchResults;
+    }
+
+    @Override
+    public void keyPressed(KeyEvent e) {
+        if(e.keyCode==SWT.CR && e.widget==composite.getTxtSearch()){
+            search();
+        }
+    }
+
+    @Override
+    public void keyReleased(KeyEvent e) {
+    }
+
+    @Override
+    public void widgetSelected(SelectionEvent e) {
+        if(e.widget==composite.getBtnSearchButton()){
+            search();
+        }
+    }
+
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchResult.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchResult.java
new file mode 100644 (file)
index 0000000..5d5fc33
--- /dev/null
@@ -0,0 +1,49 @@
+/**
+* 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.view.search.facet;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author pplitzner
+ * @since Jan 23, 2019
+ *
+ * @param <T> The type of the search result
+ */
+public abstract class SearchResult<T> {
+
+    private Set<Facet> facets = new HashSet<>();
+    private T content;
+
+    public SearchResult(T content) {
+        super();
+        this.content = content;
+        facets = initFacets(content);
+    }
+
+    protected abstract Set<Facet> initFacets(T content);
+
+    public boolean hasFacet(Facet facet){
+        return facets.contains(facet);
+    }
+
+    public boolean hasAnyFacet(Set<Facet> facets){
+        return facets.stream().anyMatch(facet->this.facets.contains(facet));
+    }
+
+    public T getContent() {
+        return content;
+    }
+
+    public Set<Facet> getFacets() {
+        return facets;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceFilter.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceFilter.java
new file mode 100644 (file)
index 0000000..f5c88ff
--- /dev/null
@@ -0,0 +1,46 @@
+/**
+* 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.view.search.facet.occurrence;
+
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public class OccurrenceFilter {
+
+    private TermVocabularyDto vocabulary;
+
+    /**
+     * @param vocabulary
+     */
+    public OccurrenceFilter(TermVocabularyDto vocabulary) {
+        super();
+        this.vocabulary = vocabulary;
+    }
+
+    /**
+     * @return the vocabulary
+     */
+    public TermVocabularyDto getVocabulary() {
+        return vocabulary;
+    }
+
+    /**
+     * @param vocabulary the vocabulary to set
+     */
+    public void setVocabulary(TermVocabularyDto vocabulary) {
+        this.vocabulary = vocabulary;
+    }
+
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearch.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearch.java
new file mode 100644 (file)
index 0000000..f7e29d2
--- /dev/null
@@ -0,0 +1,30 @@
+/**
+* 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.view.search.facet.occurrence;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public class OccurrenceSearch {
+
+    @SuppressWarnings("unused")
+    @PostConstruct
+    public void create(Composite parent){
+        new OccurrenceSearchController(new SearchComposite(parent, SWT.NONE));
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearchController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearchController.java
new file mode 100644 (file)
index 0000000..63366a6
--- /dev/null
@@ -0,0 +1,73 @@
+/**
+* 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.view.search.facet.occurrence;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.PreservedSpecimenDTO;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchController;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public class OccurrenceSearchController extends SearchController<OccurrenceSearchResult, PreservedSpecimenDTO> {
+
+    public OccurrenceSearchController(SearchComposite composite) {
+        super(composite);
+    }
+
+    @Override
+    protected Comparator<OccurrenceSearchResult> getResultComparator(String searchString) {
+        return new Comparator<OccurrenceSearchResult>() {
+            @Override
+            public int compare(OccurrenceSearchResult o1, OccurrenceSearchResult o2) {
+                String label1 = o1.getContent().getTitleCache();
+                String label2 = o2.getContent().getTitleCache();
+                return StoreUtil.compareBySearchString(searchString, label1, label2);
+            }
+
+        };
+    }
+
+    @Override
+    protected List<OccurrenceSearchResult> searchResults(String searchString){
+        List<OccurrenceSearchResult> searchResults = new ArrayList<>();
+        FindOccurrencesConfigurator config = new FindOccurrencesConfigurator();
+        config.setTitleSearchString(searchString);
+        config.setMatchMode(MatchMode.ANYWHERE);
+        Collection<PreservedSpecimenDTO> dtos = CdmStore.getService(IOccurrenceService.class).findByTitlePreservedSpecimenDTO(config);
+        dtos.stream().forEach(dto->searchResults.add(new OccurrenceSearchResult(dto)));
+        return searchResults;
+    }
+
+    @Override
+    protected OccurrenceSearchResultComposite createResultComposite(OccurrenceSearchResult result, Composite parent) {
+        return new OccurrenceSearchResultComposite(result, parent, SWT.NONE);
+    }
+
+    @Override
+    protected List<OccurrenceSearchResult> getSelectedResults() {
+        return null;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearchResult.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearchResult.java
new file mode 100644 (file)
index 0000000..15c90e0
--- /dev/null
@@ -0,0 +1,36 @@
+/**
+* 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.view.search.facet.occurrence;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import eu.etaxonomy.cdm.api.service.dto.PreservedSpecimenDTO;
+import eu.etaxonomy.taxeditor.view.search.facet.Facet;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchResult;
+
+/**
+ * @author pplitzner
+ * @since Jan 24, 2019
+ *
+ */
+public class OccurrenceSearchResult extends SearchResult<PreservedSpecimenDTO> {
+
+    public OccurrenceSearchResult(PreservedSpecimenDTO content) {
+        super(content);
+    }
+
+    @Override
+    protected Set<Facet> initFacets(PreservedSpecimenDTO content) {
+        Set<Facet> facets = new HashSet<>();
+        content.getAssociatedTaxa().forEach(pair->facets.add(new Facet(pair.getValue(), content.getKindOfUnit())));
+        return facets;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearchResultComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/occurrence/OccurrenceSearchResultComposite.java
new file mode 100644 (file)
index 0000000..edcf5e2
--- /dev/null
@@ -0,0 +1,66 @@
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.occurrence;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import eu.etaxonomy.cdm.api.service.dto.PreservedSpecimenDTO;
+import eu.etaxonomy.taxeditor.view.search.facet.CheckBoxSearchResultComposite;
+
+/**
+ * @author pplitzner
+ * @since Jan 23, 2019
+ *
+ */
+public class OccurrenceSearchResultComposite extends CheckBoxSearchResultComposite<PreservedSpecimenDTO, OccurrenceSearchResult> {
+
+    private Label label;
+
+    public OccurrenceSearchResultComposite(OccurrenceSearchResult result, Composite parent, int style) {
+        super(result, parent, style);
+    }
+
+    @Override
+    public Composite createContent(Composite parent) {
+        Composite content = new Composite(this, SWT.NONE);
+        content.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
+        GridLayout layout = new GridLayout(1, false);
+        content.setLayout(layout);
+        label = new Label(content, SWT.WRAP);
+        label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
+        label.setText(result.getContent().getTitleCache());
+        label.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT));
+        GridDataFactory.fillDefaults().applyTo(label);
+
+        Label lblDescription = new Label(content, SWT.WRAP);
+        GridData layoutData = new GridData();
+        lblDescription.setLayoutData(layoutData);
+        parent.addControlListener(new ControlAdapter() {
+            @Override
+            public void controlResized(ControlEvent e) {
+                layoutData.widthHint = parent.getClientArea().width - (6*layout.marginWidth);
+                parent.layout(true);
+            }
+        });
+        String representation_L10n_text = result.getContent().getCitation();
+        if(representation_L10n_text!=null){
+            lblDescription.setText(representation_L10n_text);
+        }
+        return content;
+    }
+
+}
similarity index 94%
rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermFilter.java
rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermFilter.java
index 926be29772f7730457dc8d46426fe94ae343cdca..9d6089893f3599ee0e1afe2ed36157ca915f760d 100644 (file)
@@ -6,7 +6,7 @@
 * 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.view.search.term;
+package eu.etaxonomy.taxeditor.view.search.facet.term;
 
 import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearch.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearch.java
new file mode 100644 (file)
index 0000000..ab9ba09
--- /dev/null
@@ -0,0 +1,30 @@
+/**
+* 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.view.search.facet.term;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public class TermSearch {
+
+    @SuppressWarnings("unused")
+    @PostConstruct
+    public void create(Composite parent){
+        new TermSearchController(new SearchComposite(parent, SWT.NONE), null);
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchController.java
new file mode 100644 (file)
index 0000000..bc83efe
--- /dev/null
@@ -0,0 +1,72 @@
+/**
+* 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.view.search.facet.term;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchController;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public class TermSearchController extends SearchController<TermSearchResult, TermDto> {
+
+    private TermType termType;
+
+    public TermSearchController(SearchComposite composite, TermType termType) {
+        super(composite);
+        this.termType = termType;
+    }
+
+    @Override
+    protected Comparator<TermSearchResult> getResultComparator(String searchString) {
+        return new Comparator<TermSearchResult>() {
+            @Override
+            public int compare(TermSearchResult o1, TermSearchResult o2) {
+                String label1 = o1.getContent().getRepresentation_L10n();
+                String label2 = o2.getContent().getRepresentation_L10n();
+                return StoreUtil.compareBySearchString(searchString, label1, label2);
+            }
+
+        };
+    }
+
+    @Override
+    protected List<TermSearchResult> searchResults(String searchString){
+        List<TermSearchResult> searchResults = new ArrayList<>();
+        Collection<TermDto> dtos = CdmStore.getService(ITermService.class).findByTitleAsDto(searchString, termType);
+        dtos.stream().forEach(dto->searchResults.add(new TermSearchResult(dto)));
+        return searchResults;
+    }
+
+    @Override
+    protected TermSearchResultComposite createResultComposite(TermSearchResult result, Composite parent) {
+        return new TermSearchResultComposite(result, parent, SWT.NONE);
+    }
+
+    @Override
+    protected List<TermSearchResult> getSelectedResults() {
+        return null;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchResult.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchResult.java
new file mode 100644 (file)
index 0000000..c0155d8
--- /dev/null
@@ -0,0 +1,40 @@
+/**
+* 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.view.search.facet.term;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.cdm.remote.l10n.TermRepresentation_L10n;
+import eu.etaxonomy.taxeditor.view.search.facet.Facet;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchResult;
+
+/**
+ * @author pplitzner
+ * @since Jan 24, 2019
+ *
+ */
+public class TermSearchResult extends SearchResult<TermDto> {
+
+    public TermSearchResult(TermDto content) {
+        super(content);
+    }
+
+    @Override
+    protected Set<Facet> initFacets(TermDto content) {
+        Set<Facet> facets = new HashSet<>();
+        content.localize(new TermRepresentation_L10n());
+        TermType termType = content.getTermType();
+        facets.add(new Facet(content.getVocRepresentation_L10n(), termType!=null?termType.getMessage():null));
+        return facets;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchResultComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchResultComposite.java
new file mode 100644 (file)
index 0000000..13367a8
--- /dev/null
@@ -0,0 +1,66 @@
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.term;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.view.search.facet.CheckBoxSearchResultComposite;
+
+/**
+ * @author pplitzner
+ * @since Jan 23, 2019
+ *
+ */
+public class TermSearchResultComposite extends CheckBoxSearchResultComposite<TermDto, TermSearchResult> {
+
+    private Label label;
+
+    public TermSearchResultComposite(TermSearchResult result, Composite parent, int style) {
+        super(result, parent, style);
+    }
+
+    @Override
+    public Composite createContent(Composite parent) {
+        Composite content = new Composite(this, SWT.NONE);
+        content.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
+        GridLayout layout = new GridLayout(1, false);
+        content.setLayout(layout);
+        label = new Label(content, SWT.WRAP);
+        label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
+        label.setText(result.getContent().getRepresentation_L10n());
+        label.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT));
+        GridDataFactory.fillDefaults().applyTo(label);
+
+        Label lblDescription = new Label(content, SWT.WRAP);
+        GridData layoutData = new GridData();
+        lblDescription.setLayoutData(layoutData);
+        parent.addControlListener(new ControlAdapter() {
+            @Override
+            public void controlResized(ControlEvent e) {
+                layoutData.widthHint = parent.getClientArea().width - (6*layout.marginWidth);
+                parent.layout(true);
+            }
+        });
+        String representation_L10n_text = result.getContent().getRepresentation_L10n_text();
+        if(representation_L10n_text!=null){
+            lblDescription.setText(representation_L10n_text);
+        }
+        return content;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermSearch.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermSearch.java
deleted file mode 100644 (file)
index ed45e14..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
-* 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.view.search.term;
-
-import javax.annotation.PostConstruct;
-import javax.inject.Named;
-
-import org.eclipse.e4.core.contexts.IEclipseContext;
-import org.eclipse.e4.ui.services.EMenuService;
-import org.eclipse.e4.ui.services.IServiceConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @author pplitzner
- * @since Jan 22, 2019
- *
- */
-public class TermSearch {
-
-    @PostConstruct
-    public void create(Composite parent, IEclipseContext context, @Named(IServiceConstants.ACTIVE_SHELL)Shell shell,
-            EMenuService menuService){
-        new TermSearchController(new TermSearchComposite(parent, SWT.NONE));
-    }
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermSearchComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermSearchComposite.java
deleted file mode 100644 (file)
index f382397..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-// $Id$
-/**
-* 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.view.search.term;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.ExpandBar;
-import org.eclipse.swt.widgets.ExpandItem;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author pplitzner
- * @date 22.01.2019
- *
- */
-public class TermSearchComposite extends Composite {
-    private Text txtSearch;
-    private Composite searchResultComposite;
-
-    /**
-     * Create the composite.
-     * @param parent
-     * @param style
-     */
-    public TermSearchComposite(Composite parent, int style) {
-        super(parent, style);
-        setLayout(new GridLayout(2, false));
-
-        Composite filterComposite = new Composite(this, SWT.NONE);
-        filterComposite.setLayout(new GridLayout(1, false));
-        filterComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
-        filterComposite.setBounds(0, 0, 64, 64);
-
-        txtSearch = new Text(filterComposite, SWT.BORDER);
-        txtSearch.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
-
-        ScrolledComposite scrolledComposite = new ScrolledComposite(filterComposite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-        scrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
-        scrolledComposite.setExpandHorizontal(true);
-        scrolledComposite.setExpandVertical(true);
-
-        searchResultComposite = new Composite(this, SWT.NONE);
-        searchResultComposite.setLayout(new GridLayout(1, false));
-        searchResultComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
-        searchResultComposite.setBounds(0, 0, 64, 64);
-
-        ScrolledComposite resultComposite = new ScrolledComposite(searchResultComposite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
-        resultComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
-        resultComposite.setExpandHorizontal(true);
-        resultComposite.setExpandVertical(true);
-
-        ExpandBar expandBar = new ExpandBar(resultComposite, SWT.NONE);
-
-        ExpandItem xpndtmNewExpanditem = new ExpandItem(expandBar, SWT.NONE);
-        xpndtmNewExpanditem.setExpanded(true);
-        xpndtmNewExpanditem.setText("New ExpandItem");
-
-        Label lblNewLabel = new Label(expandBar, SWT.NONE);
-        xpndtmNewExpanditem.setControl(lblNewLabel);
-        lblNewLabel.setText("New Label");
-        xpndtmNewExpanditem.setHeight(xpndtmNewExpanditem.getControl().computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
-
-        ExpandItem xpndtmNewExpanditem_1 = new ExpandItem(expandBar, SWT.NONE);
-        xpndtmNewExpanditem_1.setText("New ExpandItem");
-        resultComposite.setContent(expandBar);
-        resultComposite.setMinSize(expandBar.computeSize(SWT.DEFAULT, SWT.DEFAULT));
-
-    }
-
-    @Override
-    protected void checkSubclass() {
-        // Disable the check that prevents subclassing of SWT components
-    }
-    public Text getTxtSearch() {
-        return txtSearch;
-    }
-    public Composite getSearchResultComposite() {
-        return searchResultComposite;
-    }
-}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermSearchController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/term/TermSearchController.java
deleted file mode 100644 (file)
index a7f0a07..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
-* 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.view.search.term;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.widgets.Label;
-
-import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.location.Country;
-import eu.etaxonomy.cdm.persistence.dto.TermDto;
-import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
-import eu.etaxonomy.cdm.remote.l10n.TermRepresentation_L10n;
-
-/**
- * @author pplitzner
- * @since Jan 22, 2019
- *
- */
-public class TermSearchController implements KeyListener{
-
-    private TermSearchComposite composite;
-
-    public TermSearchController(TermSearchComposite composite) {
-        this.composite = composite;
-        composite.getTxtSearch().addKeyListener(this);
-    }
-
-    private void search(String searchString){
-        //search terms via term service
-        List<TermDto> terms = new ArrayList<>();
-        terms.add(TermDto.fromTerm(Feature.ANATOMY()));
-        terms.add(TermDto.fromTerm(Feature.BIOLOGY_ECOLOGY()));
-        terms.add(TermDto.fromTerm(Country.AFGHANISTAN()));
-        terms.add(TermDto.fromTerm(Country.DENMARKKINGDOMOF()));
-        terms.add(TermDto.fromTerm(Language.ENGLISH()));
-        terms.add(TermDto.fromTerm(Language.SUKUMA()));
-
-        List<TermFilter> filters = createResultsAndFilters(terms);
-
-        createFilterButtons(filters);
-
-    }
-
-    private void createFilterButtons(List<TermFilter> filters) {
-
-    }
-
-    private void extractFilters(List<TermDto> terms) {
-    }
-
-    private List<TermFilter> createResultsAndFilters(List<TermDto> terms) {
-        List<TermVocabularyDto> vocabularyDtos = new ArrayList<>();
-        for (TermDto term : terms) {
-            term.localize(new TermRepresentation_L10n());
-            createResultComposite(term);
-            if(!vocabularyDtos.contains(term.getVocabularyUuid())){
-                vocabularyDtos.add(term.getVocabularyDto());
-            }
-        }
-        List<TermFilter> filters = new ArrayList<>();
-        for (TermVocabularyDto termVocabularyDto : vocabularyDtos) {
-            filters.add(new TermFilter(termVocabularyDto));
-        }
-        return filters;
-    }
-
-    private void createResultComposite(TermDto term) {
-        Label label = new Label(composite.getSearchResultComposite(), SWT.NONE);
-        label.setText(term.getRepresentation_L10n());
-    }
-
-    @Override
-    public void keyPressed(KeyEvent e) {
-        if(e.widget==composite.getTxtSearch()){
-            search(composite.getTxtSearch().getText());
-        }
-    }
-
-    @Override
-    public void keyReleased(KeyEvent e) {
-    }
-
-}
index cf7089b8467518c124b913041735152e9dddbafa..578f82b3e4a11632fedb6306954b268b02bd98b4 100644 (file)
@@ -22,7 +22,7 @@ import org.eclipse.swt.widgets.Tree;
 import org.eclipse.wb.swt.SWTResourceManager;
 
 import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.combo.termvocabulary.TermVocabularyComboViewer;
index a40080de9a68d9f78a1d63f218ab0a8ea99d7458..bfd120dd7115f5dc7539fde724a27e124ea12b70 100644 (file)
@@ -45,6 +45,7 @@ import eu.etaxonomy.taxeditor.l10n.Messages;
 import eu.etaxonomy.taxeditor.model.ColorResources;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TermParser;
 import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TerminologyParser;
@@ -288,28 +289,7 @@ public class GfBioTerminologyImportPresenter {
             String trimmedSearch = searchString.replace("*", "");
             String label1 = o1.getLabel();
             String label2 = o2.getLabel();
-            //1. search string at the beginning
-            if(label1.startsWith(trimmedSearch)){
-                if(!label2.startsWith(trimmedSearch)){
-                    return -1;
-                }
-                else{
-                    return label1.compareTo(label2);
-                }
-            }
-            else if(label2.startsWith(trimmedSearch)){
-                return 1;
-            }
-            //2. label that contains search string
-            if(label1.contains(trimmedSearch)){
-                if(!label2.contains(trimmedSearch)){
-                    return -1;
-                }
-            }
-            else if(label2.contains(trimmedSearch)){
-                return 1;
-            }
-            return label1.compareTo(label2);
+            return StoreUtil.compareBySearchString(trimmedSearch, label1, label2);
         }
     }
 
index a5e211e583ce5a0cca084e47694bdca092dde45a..9b3c71d85ee92fe77f50669ac240bf0fc4c5de1c 100644 (file)
@@ -10,7 +10,7 @@ package eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper;
 
 import java.util.List;
 
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 
 /**
  * Wrapper for terms received from the GfBio terminology service.
index 57b5a47a3992837106b8f71fe973fe6ecc39502f..8c54e23c1e08b5345db545c75dab3740a6524a66 100644 (file)
@@ -15,10 +15,10 @@ import org.junit.Before;
 import org.junit.Test;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
 import eu.etaxonomy.cdm.model.name.INonViralName;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
+import eu.etaxonomy.cdm.model.term.DefaultTermInitializer;
 
 /**
  * @author n.hoffmann
index 393a82c22cd11ff19b52567a5037a312ec3eb1e4..97a41aecd542d976dcaaf856c685645511628e40 100644 (file)
@@ -19,9 +19,9 @@ import java.util.LinkedHashMap;
 
 import org.junit.Test;
 
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.name.RankClass;
diff --git a/eu.etaxonomy.taxeditor.test/.settings/org.eclipse.jdt.core.prefs b/eu.etaxonomy.taxeditor.test/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644 (file)
index a698e59..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
index 2480cf9d81d5aaf7f717f18700c2d90d9df44778..449be79ba27a87acc981a81c0a3de272c1da54a6 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: eu.etaxonomy.taxeditor.test
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.test;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: EDIT
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
index 2430cdd8d24c648cc079dfb18a6b19be4dfd74b5..c0965bda43142a157cff90bbd297884a0d81a31b 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>5.5.1</version>
+    <version>5.6.0</version>
   </parent>
   <artifactId>eu.etaxonomy.taxeditor.test</artifactId>
   <packaging>eclipse-test-plugin</packaging>
index b7599c5ed2bae219fcba57bc234da24460ea3dfe..9eaa9a335eae706427228fa435916f7d2c9671d8 100644 (file)
@@ -16,7 +16,6 @@ import org.junit.BeforeClass;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.context.SecurityContextImpl;
 import org.unitils.database.DatabaseUnitils;
 import org.unitils.database.annotations.Transactional;
 import org.unitils.database.util.TransactionMode;
@@ -27,6 +26,7 @@ import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.application.CdmDataChangeService;
 import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
 import eu.etaxonomy.cdm.cache.CdmRemoteCacheManager;
+import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.taxeditor.remoting.cache.ConversationalTransientEntityCacher;
 import eu.etaxonomy.taxeditor.remoting.source.CdmPersistentRemoteSource;
 import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSource;
@@ -67,6 +67,7 @@ public abstract class BaseRemotingTest extends ThreadedTest {
                     user,
                     password);
         } catch (Exception e) {
+            System.err.println("user: " + user + " password: " + password);
             e.printStackTrace();
            // Assert.fail("Server failed to start. Reason : " + e.getMessage());
         }
@@ -111,15 +112,34 @@ public abstract class BaseRemotingTest extends ThreadedTest {
         //FIXME:Remoting the authentication code should be replaced by a method call which actually
         // does the authentication in the editor code so that the 'real' authentication can be tested
         SecurityContextHolder.clearContext();
-        SecurityContextImpl sc = new SecurityContextImpl();
-        Authentication token = new UsernamePasswordAuthenticationToken(username,password);
+
+        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
         Authentication authentication = getRemoteApplicationController().getAuthenticationManager().authenticate(token);
-        authentication = new UsernamePasswordAuthenticationToken(username,password, authentication.getAuthorities());
-        sc.setAuthentication(authentication);
 
-        SecurityContextHolder.setContext(sc);
+
+        User user = (User) authentication.getPrincipal();
+        /* circumventing problem with hibernate not refreshing the transient collection authorities in this case,
+         * see http://dev.e-taxonomy.eu/trac/ticket/4053 */
+        user.initAuthorities();
+        authentication = new UsernamePasswordAuthenticationToken(user,password, authentication.getAuthorities());
+        SecurityContextHolder.getContext().setAuthentication(authentication);
         CdmApplicationState.setCurrentSecurityContext(SecurityContextHolder.getContext());
 
+
+
+
+
+//        SecurityContextHolder.clearContext();
+//        SecurityContextImpl sc = new SecurityContextImpl();
+//        Authentication token = new UsernamePasswordAuthenticationToken(username,password);
+//        Authentication authentication = getRemoteApplicationController().getAuthenticationManager().authenticate(token);
+//
+//        authentication = new UsernamePasswordAuthenticationToken(username,password, authentication.getAuthorities());
+//        sc.setAuthentication(authentication);
+//
+//        SecurityContextHolder.setContext(sc);
+//        CdmApplicationState.setCurrentSecurityContext(SecurityContextHolder.getContext());
+
     }
 
 
index d8040751a0f618d8f7c0b15a28f5008f1fbb25ff..2989821be9f0936e42c0383106ae668a0eddaf2c 100644 (file)
@@ -46,7 +46,7 @@ public class CdmServerTest extends TestConfig {
 
     @Test
     @Ignore
-    //FIXME: remove @ignore and fix test
+    //FIXME: remove @ignore and fix test #5632
     public void manageCdmServer() throws IOException, URISyntaxException, CDMEmbeddedServerException {
         Bundle bundle = Platform.getBundle("eu.etaxonomy.taxeditor.test");
         URL mgdDatasourcesConfigURL = bundle.getEntry("src/test/resources/.cdmLibrary/writableResources/mgd.datasources.xml");
index 2497820b963829ead4f96382bfee2275d48d3415..c4c46757530dbe33d6caec594da107b3a45c2d6b 100644 (file)
@@ -13,13 +13,13 @@ import java.util.UUID;
 import org.apache.log4j.Logger;
 import org.junit.After;
 import org.junit.Before;
+import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.service.IUserService;
 import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.model.common.User;
-import eu.etaxonomy.cdm.persistence.dto.MergeResult;
 import eu.etaxonomy.taxeditor.remoting.cache.ConversationalTransientEntityCacher;
 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
 import eu.etaxonomy.taxeditor.session.MockSessionOwner;
@@ -53,23 +53,25 @@ public abstract class RemotingSessionAwareTest extends BaseRemotingTest {
         sessionOwner.setCdmEntitySession(cdmEntitySession);
         cacher = getCacher(sessionOwner);
 
-        User extraUser = null;
+        UserDetails extraUser = null;
 
         try {
-            extraUser = (User) userService.loadUserByUsername(extraUsername);
+            extraUser = userService.loadUserByUsername(extraUsername);
             Group editorGroup = getRemoteApplicationController().getGroupService().find(editorGroupUuid);
-            if (!extraUser.getGroups().contains(editorGroup)){
-                extraUser.getGroups().add(editorGroup);
-                userService.merge(extraUser, true);
+            if (!((User)extraUser).getGroups().contains(editorGroup)){
+                ((User)extraUser).getGroups().add(editorGroup);
+                userService.merge(((User)extraUser), true);
+
             }
         } catch (UsernameNotFoundException unfe) {
-            User user = User.NewInstance(extraUsername, extraPassword);
-            userService.createUser(user);
+            UserDetails user = User.NewInstance(extraUsername, extraPassword);
+            user = userService.save((User)user);
+            //user = userService.find(((User)user).getUuid());
             Group editorGroup = getRemoteApplicationController().getGroupService().find(editorGroupUuid);
-            user = userService.load(user.getUuid());
-            user.getGroups().add(editorGroup);
-            MergeResult<User> result = userService.merge(user, true);
-            user = result.getMergedEntity();
+            ((User)user).getGroups().add(editorGroup);
+            userService.merge(((User)user), true);
+
+
         }
 
 
@@ -84,6 +86,7 @@ public abstract class RemotingSessionAwareTest extends BaseRemotingTest {
 
 
     protected static void authenticateExtraUser() {
+
         authenticate(extraUsername, extraPassword);
     }
 
index abe67c3172df74fae92e45bc379432398328ccf9..168d7fe1dc8f1c4abc9e32fa76200a6e16435b2e 100644 (file)
@@ -26,7 +26,7 @@ import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
 import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
index 86b8cd180467c797f89cc872bf3e7d30c24ce026..acae78c83dcab689e0c341b03edaf6abd36e11a7 100644 (file)
@@ -18,7 +18,6 @@ import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.SubMonitor;
 import org.junit.After;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
@@ -69,12 +68,12 @@ public class ProgressMonitorServiceTest extends RemotingSessionAwareTest {
     }
 
     @Test
-    @Ignore
     public void testMonitLongRunningMethodByChangingUser() throws InterruptedException {
 
         IllegalStateException ise = new IllegalStateException("IllegalStateException");
 
         UUID uuid = testService.monitLongRunningMethod(ise, null, 0);
+
         authenticateExtraUser();
         IRemotingProgressMonitor monitor = progressMonitorService.getRemotingMonitor(uuid);
         Assert.assertNull(monitor);
index 9eaee83c6ccd0098f02b1a4f1d380abc2820d430..7d50922edbc73cdd81f2c07552bb92b125ddc560 100644 (file)
@@ -10,9 +10,9 @@ import org.junit.Test;
 import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
 import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
 import eu.etaxonomy.taxeditor.httpinvoker.RemotingSessionAwareTest;
 
 public class ServiceInterceptorTest extends RemotingSessionAwareTest {
index 3ce0450645fb744d39617aaba4eaa2f1a986e3dc..135c0dd4ab2d5d5533194e58db349df2808bb8ca 100644 (file)
@@ -37,13 +37,13 @@ import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Credit;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.Extension;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.common.LanguageString;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.KeyStatement;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
index da5f19564a39d8d7e44fd34ed6cbe761f7a80843..7579a081185c761cab44572597a626f3300097dc 100644 (file)
Binary files a/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.h2.db and b/eu.etaxonomy.taxeditor.test/src/test/resources/h2/cdmTest.h2.db differ
diff --git a/eu.etaxonomy.taxeditor.webapp/.settings/org.eclipse.jdt.core.prefs b/eu.etaxonomy.taxeditor.webapp/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644 (file)
index a698e59..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
index de67a46eefac994339b5a58250a44d5db8e455d0..14aed29ce6c5d9959038e660b1f78b63add7160a 100644 (file)
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Webapp
 Bundle-SymbolicName: eu.etaxonomy.taxeditor.webapp;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Require-Bundle: org.eclipse.core.runtime
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
@@ -14,9 +14,9 @@ Bundle-ClassPath: .,
  lib/c3p0-0.9.5.2.jar,
  lib/h2-1.4.190.jar,
  lib/mchange-commons-java-0.2.11.jar,
- lib/mysql-connector-java-5.1.38.jar,
  lib/postgresql-9.4-1206-jdbc4.jar,
- lib/jdbc4-2.0.jar
+ lib/jdbc4-2.0.jar,
+ lib/mysql-connector-java-8.0.15.jar
 Bundle-Vendor: EDIT
 Import-Package: org.eclipse.jface.resource,
  org.eclipse.ui.plugin
index a8ba0ac03626e5623a4ba08059dce7f31d6244fd..54823a106f000317e653454313c5ff5109572b59 100644 (file)
@@ -5,7 +5,7 @@ bin.includes = META-INF/,\
                lib/,\
                lib/h2-1.4.190.jar,\
                lib/mchange-commons-java-0.2.11.jar,\
-               lib/mysql-connector-java-5.1.38.jar,\
                lib/postgresql-9.4-1206-jdbc4.jar,\
-               lib/jdbc4-2.0.jar
+               lib/jdbc4-2.0.jar,\
+               lib/mysql-connector-java-8.0.15.jar
 output.. = bin/
index faa0d7c9c01d62dff912ed3b65f32cca522a0897..568c453dde49524463ff61ad2bfa3a602ca7dd22 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>5.5.1</version>
+    <version>5.6.0</version>
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>eu.etaxonomy.taxeditor.webapp</artifactId>
index 694c5e49e4edcf3d08589357b6c3b3138edc3086..7c78d322a7bf361d6a8835a6269a921c3c559bc0 100644 (file)
@@ -4,7 +4,7 @@ Export-Package: eu.etaxonomy.taxeditor.bulkeditor,
  eu.etaxonomy.taxeditor.workbench,
  eu.etaxonomy.taxeditor.workbench.part
 Bundle-Name: Workbench Bundle
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.e4.ui.workbench,
index be3a048adccd063cda5d69a4a9c3d702d8dbe7e6..2083dd5a7048de8ead718df724d9650a147b8626 100644 (file)
@@ -54,9 +54,7 @@
         <children xsi:type="menu:HandledMenuItem" xmi:id="_b4RFsCQsEeeq76l4saMAFQ" elementId="eu.etaxonomy.taxeditor.workbench.menu.admin.dbpreferences" label="%command.label.23" command="_VawPsCQsEeeq76l4saMAFQ">
           <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_b4RFsSQsEeeq76l4saMAFQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
         </children>
-        <children xsi:type="menu:HandledMenuItem" xmi:id="_cWhvACQsEeeq76l4saMAFQ" elementId="eu.etaxonomy.taxeditor.workbench.menu.admin.dbrepair" label="%command.label.24" command="_Va29YCQsEeeq76l4saMAFQ">
-          <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_cWhvASQsEeeq76l4saMAFQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
-        </children>
+        <children xsi:type="menu:Menu" xmi:id="_NS6cwD8zEemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.workbench.menu.databaseRepair" label="Database Repair Functionality"/>
       </children>
       <children xsi:type="menu:Menu" xmi:id="_FaGnvyQNEeen_7LZsZSNoA" elementId="eu.etaxonomy.taxeditor.workbench.menu.help" label="%menu.label.2" mnemonics="H">
         <children xsi:type="menu:HandledMenuItem" xmi:id="_3cDNACQ7EeeKsvEah5BAoQ" elementId="eu.etaxonomy.taxeditor.workbench.menu.help.help_contents" label="%command.label.13" mnemonics="H" command="_xOYw4CQ7EeeKsvEah5BAoQ"/>
index 448de7a7a2bddbfe7c4cd7418a04b499ec8439f4..b69fc1ee001c93cef1869e168a43a67fb3b24587 100644 (file)
@@ -3,7 +3,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>5.5.1</version>
+    <version>5.6.0</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
index 7490113e1c4a00900f9b0d1edd32e27c093bcacb..56a9d2e53ec5f6e2be873ed3264398faafa3f200 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?><product application="eu.etaxonomy.taxeditor.application.application" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" includeLaunchers="true" name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" useFeatures="true" version="5.5.1">
+<?pde version="3.5"?><product application="eu.etaxonomy.taxeditor.application.application" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" includeLaunchers="true" name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" useFeatures="true" version="5.6.0">
   <aboutInfo>
     <image path="/eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif"/>
     <text>
index e8a96901c9f8aea1f10d71c6cc4f0d5900cd348b..b64ccb7a287510ac6b760cbcae3513270fa46457 100644 (file)
@@ -2,7 +2,7 @@
   <parent>
     <groupId>eu.etaxonomy</groupId>
     <artifactId>taxeditor-parent</artifactId>
-    <version>5.5.1</version>
+    <version>5.6.0</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
diff --git a/pom.xml b/pom.xml
index c39b0c40707900b63403d1e6aa9bf5363abe9def..665edd40450c94c6d7c50ed721d0a02255ce3707 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
   </prerequisites>
   <groupId>eu.etaxonomy</groupId>
   <artifactId>taxeditor-parent</artifactId>
-  <version>5.5.1</version>
+  <version>5.6.0</version>
   <name>EDIT Taxonomic Editor</name>
   <description>The Taxonomic Editor for EDIT's platform for
     cybertaxonomy
   <properties>
     <java.codelevel>1.8</java.codelevel>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <cdmlib.version>5.5.1</cdmlib.version>
+    <cdmlib.version>5.6.0</cdmlib.version>
     <!-- TODO can we use project.version ????? -->
     <!-- Increasing tycho above 0.22.0 will fail for the macosx build because 
       for higher version numbers tycho needs to be build against Eclipse Mars or 
       higher -->
     <tycho.version>1.0.0</tycho.version>
-    <taxeditor.version>5.5.1</taxeditor.version>
+    <taxeditor.version>5.6.0</taxeditor.version>
     <update.dir>snapshot</update.dir>
     <unitils.version>3.4.2</unitils.version>
     <log4j.version>1.2.17</log4j.version>
index 709386e2a50f7eab9afae9ce8d59b40ff6dce38b..66bf3b3eab860acf500a0b944304ac6b5d34c79e 100755 (executable)
@@ -4,8 +4,8 @@ echo -n "Clear eclipse project? [y,N]"
 read choice
 
 if [ "$choice" == "y" ]; then
-       find -type f -name ".classpath" -or -name ".project" -prune -exec rm -f {} \;
-       find -type d -name ".settings" -prune -exec rm -rf {} \;
+       find . -type f \( -name ".classpath" -o -name "*.project" \) -prune -exec rm -f {} \;
+       find -type d -name ".settings" -prune -exec rm -rf {} \;
 fi
 
 echo -n "Use the local repo? [y,N]"