merge-update from trunk
authorPatric Plitzner <p.plitzner@bgbm.org>
Mon, 9 Dec 2013 13:02:57 +0000 (13:02 +0000)
committerPatric Plitzner <p.plitzner@bgbm.org>
Mon, 9 Dec 2013 13:02:57 +0000 (13:02 +0000)
406 files changed:
.gitattributes
eu.etaxonomy.taxeditor.bulkeditor/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.bulkeditor/plugin.xml
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/annotatedlineeditor/AnnotatedLineDocumentProvider.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditor.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/BulkEditorLineDisplay.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/command/OpenBulkEditorContributionItem.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/derivedunit/operation/AddDerivedUnitFacadeMediaOperation.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/operation/SetMarkerFlagOperation.java
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DataImportEditor.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DataImportEditorLineDisplayStrategy.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DerivedUnitEditorInput.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientAgentService.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientCdmRepository.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientClassificationService.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientCollectionService.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientDescriptionService.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientNameService.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientOccurenceService.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientReferenceService.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTaxonService.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTermService.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/wizard/SpecimenSearchWizard.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/wizard/SpecimenSearchWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.cdmlib/.classpath
eu.etaxonomy.taxeditor.cdmlib/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.cdmlib/build.properties
eu.etaxonomy.taxeditor.cdmlib/lib/org.eclipse.equinox.common-3.6.0.v20110523.jar
eu.etaxonomy.taxeditor.cdmlib/lib/org.eclipse.osgi-3.7.2.v20120110-1415.jar
eu.etaxonomy.taxeditor.editor/icons/leaf_detail.png [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/plugin.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/MultiPageTaxonEditor.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/CreateNodeOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/DeleteNodeOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/operation/RefreshNodeNumberingOperation.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/name/operation/ChangeConceptToSynonymOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeHomotypicGroupOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeHomotypicalGroupBasionymOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeSynonymToAcceptedTaxonOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeSynonymToConceptOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeSynonymToHomotypicalGroupBasionymOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeSynonymToMisapplicationOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/CreateNameRelationOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/CreateSynonymInExistingHomotypicalGroupOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/CreateSynonymInNewGroupOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteMisapplicationOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteNameRelationOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteSynonymOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteTaxonOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/RemoveHomotypicalGroupBasionymOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/operation/SwapSynonymAndAcceptedOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/operation/CreateConceptRelationOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/operation/DeleteConceptRelationOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java [new file with mode: 0644]
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/DescriptiveViewPart.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/CreateDescriptionElementHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/CreateDescriptionHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DeleteHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DescriptionsMenuPropertyTester.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/DynamicFeatureMenu.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateDescriptionElementOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateSpecimenDescriptionOperation.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateTaxonDescriptionOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteDescriptionElementOperation.java
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/MoveDescriptionElementsOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/AddMediaToImageGalleryOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/CreateImageOperation.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/media/operation/MoveMediaInListOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/media/operation/RemoveImageFromDescriptionElementOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/UsesContentProvider.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseRecordHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/handler/CreateUseSummaryHandler.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateTaxonUseOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseRecordOperation.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/uses/operation/CreateUseSummaryOperation.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeConceptToSynonymOperationTest.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeHomotypicGroupOperationTest.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeHomotypicalGroupBasionymOperationTest.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeSynonymToConceptOperationTest.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/ChangeSynonymToMisapplicationOperationTest.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/CreateConceptRelationOperationTest.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/CreateDescriptionElementOperationTest.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteConceptRelationOperationTest.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/DeleteMisapplicationOperationTest.java
eu.etaxonomy.taxeditor.editor/src/test/java/eu/etaxonomy/taxeditor/editor/name/operation/SwapSynonymAndAcceptedOperationTest.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/key/polytomous/operation/RefreshNodesOperation.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/CopyOperation.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/DeleteOperation.java
eu.etaxonomy.taxeditor.store/META-INF/MANIFEST.MF
eu.etaxonomy.taxeditor.store/icons/artwork-16x16-32.gif [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/icons/dna_derivate-16x16-32.gif [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/icons/fieldunit-16x16-32.gif [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/icons/specimen_derivate-16x16-32.gif [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/icons/specimen_scan_derivate-16x16-32.gif [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/icons/tissue_sample-16x16-32.gif [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/plugin.xml
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermEditor.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermContentProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermLabelProvider.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/handler/CreateDefinedTermHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/handler/CreateTermVocabularyHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/handler/DeleteTermBaseHandler.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/operation/CreateDefinedTermOperation.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/DeleteTermBaseOperation.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/io/wizard/JaxbExportWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasFactualData.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewDerivedUnitBaseWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/PolytomousKeyWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractDescriptionPostOperation.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPersistentPostOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostOperation.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostTaxonOperation.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/IPreferenceKeys.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/LoginManager.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ComboDefinedTermController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntityCollectionElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntitySelectionField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntitySelectionFieldController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/LanguageTextFieldController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/NamedAreaFieldController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/NumberFieldController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/PointField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/PointFieldController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/TextFieldController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextField.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextFieldController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/compatibility/ICdmFormElement.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ICdmFormElement.java with 86% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/compatibility/IEntitySelectionElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateLabelProvider.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchCompositeController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchView.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsElementController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsView.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralElementController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventDetailsElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventDetailsElementController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsElementController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsElementController.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenGeneralSection.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/specimenSearch/SpecimenSearchComposite.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/specimenSearch/SpecimenSearchController.java [new file with mode: 0644]
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/TermComboElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AbstractFilteredCdmResourceSelectionDialog.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmEntityWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmFormElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractCdmFormElementWithErrors.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/AbstractFormSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/BrowserElement.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/DateDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/GatheringEventUnitElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/IEntityElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ImageElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyStatementElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/KeyValueViewerElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LabelElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/LanguageStringWithLabelElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/MinMaxTextSection.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/NumberWithLabelElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/PartialElement.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/RootElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/SelectionArbitrator.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextActionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TextWithLabelElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/TimePeriodElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ToggleableTextElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/UriWithLabelElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/group/grantedauthority/CRUDOperationChooser.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/group/grantedauthority/CdmAuthorityComposite.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/group/grantedauthority/CdmAuthorityCompositeViewer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/group/grantedauthority/CdmAuthorityRow.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/group/grantedauthority/CdmAuthorityTableHeader.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/openurl/OpenUrlSelectorElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/EditPasswordElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/password/PasswordWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.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/AbstractEntityCollectionElement.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/AbstractIdentifiableEntityDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/EmptyElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/ICdmDetailElement.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/PersonDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/PersonDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/PersonWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamMemberElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamMemberSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamOrPersonBaseDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationWizardPage.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/classification/TaxonNodeDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/TaxonNodeWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/common/ReferenceEntityDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/common/ReferencedEntityDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DerivedUnitElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescribedSpecimenSection.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/DescriptionDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementMediaSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementSourceElement.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/DescriptionSourceElement.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/GeoScopeElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/GeoScopeSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/MediaDetailsSection.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/NaturalLanguageSection.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/StateDataElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/StateDataSection.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/StatisticalMeasurementValueSection.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/description/detail/TextDataDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/operation/ChangeDescriptionElementType.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureDistributionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/feature/FeatureDistributionDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/grantedAuthority/GrantedAuthorityCollectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/grantedAuthority/GrantedAuthorityDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/grantedAuthority/GrantedAuthorityDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/grantedAuthority/GrantedAuthorityDetailWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GroupDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GroupDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GroupDetailWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/GroupSelectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/group/MemberDetailElement.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/GeographicalScopeDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailSection.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/key/TaxonomicScopeSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/ImageFileElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationPartElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationPartSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaRepresentationSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaSection.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/AuthorshipDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/AuthorshipDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/HybridDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/HybridDetailSection.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/NameDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NameRelationshipDetailSection.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/NomenclaturalStatusSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/NonViralNameWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/name/ProtologueSection.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/occurrence/AbstractDeterminationEventDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/AbstractEventDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectingAreasDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CollectionWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/CurrentDeterminationDetailSection.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/DerivedUnitBaseDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitDetailsWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralWizardPage.java [moved from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralWizardPage.java with 86% similarity]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationDetailSection.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/DeterminationHistoryDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationDetailsWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationGeneralWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitGeneralDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitGeneralDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitGeneralWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailsWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventWizardPage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/NamedAreaDetailElement.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/SpecimenCollectionDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenCollectionDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenDetailsWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralWizardPage.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/NomenclaturalReferenceDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/NomenclaturalReferenceDetailSection.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/reference/ReferenceDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceWizardPage.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/AnnotationElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/AnnotationSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/CdmBaseElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/CdmBaseSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/CreditElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/CreditSection.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/ExtensionSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/HeadlineSection.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/MarkerSection.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/RightsSection.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/VersionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/supplemental/VersionSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/ParsingMessageElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/ParsingMessagesSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonBaseDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonRelationshipDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/taxon/TaxonRelationshipDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/GroupsByUserDetailElement.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/user/UserDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/user/UserDetailWizardPage.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/userecords/UseRecordDetailSection.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/NamedAreaDetailElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/NamedAreaDetailSection.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/vocabulary/NamedAreaLevelDetailSection.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/selection/EditFromSelectionWizard.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/EntitySelectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/NomenclaturalAuthorTeamSelectionElement.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/selection/TaxonNodeSelectionElement.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/view/AbstractCdmViewPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/CdmSectionPart.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/DetailsViewer.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/supplementaldata/SupplementalDataViewPart.java
eu.etaxonomy.taxeditor.store/src/main/java/org/eclipse/wb/swt/ResourceManager.java [new file with mode: 0644]
eu.etaxonomy.taxeditor.store/src/main/java/org/eclipse/wb/swt/SWTResourceManager.java [new file with mode: 0644]

index e2b9f9652c1370f290ee75ed5b6cd20d3aed25a1..c167ad99b4a8fe557b069727d6cdd28f6237c40c 100644 (file)
@@ -115,6 +115,21 @@ eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkedito
 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsContentProvider.java -text
 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsLabelProvider.java -text
 eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/referencingobjects/ReferencingObjectsView.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DataImportEditor.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DataImportEditorLineDisplayStrategy.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DerivedUnitEditorInput.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientAgentService.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientCdmRepository.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientClassificationService.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientCollectionService.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientDescriptionService.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientNameService.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientOccurenceService.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientReferenceService.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTaxonService.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTermService.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/wizard/SpecimenSearchWizard.java -text
+eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/wizard/SpecimenSearchWizardPage.java -text
 eu.etaxonomy.taxeditor.bulkeditor/src/test/java/eu/etaxonomy/taxeditor/bulkeditor/Application.java -text
 eu.etaxonomy.taxeditor.bulkeditor/src/test/java/eu/etaxonomy/taxeditor/bulkeditor/ApplicationActionBarAdvisor.java -text
 eu.etaxonomy.taxeditor.bulkeditor/src/test/java/eu/etaxonomy/taxeditor/bulkeditor/ApplicationWorkbenchAdvisor.java -text
@@ -320,6 +335,7 @@ eu.etaxonomy.taxeditor.editor/icons/address-book-new.png -text
 eu.etaxonomy.taxeditor.editor/icons/camera-photo.png -text
 eu.etaxonomy.taxeditor.editor/icons/edit_16x16.gif -text
 eu.etaxonomy.taxeditor.editor/icons/emblem-photos.png -text
+eu.etaxonomy.taxeditor.editor/icons/leaf_detail.png -text
 eu.etaxonomy.taxeditor.editor/icons/xper64.png -text
 eu.etaxonomy.taxeditor.editor/p2.inf -text
 eu.etaxonomy.taxeditor.editor/plugin.properties -text
@@ -346,6 +362,7 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/group/
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/group/authority/CdmAuthorityEditorInput.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/group/authority/handler/EditCdmAuthoritiesHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/EditNewTaxonHandler.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenParentHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/SaveAllHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/SaveTaxonHandler.java -text
@@ -452,6 +469,11 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/c
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/handler/OpenRelatedConceptHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/operation/CreateConceptRelationOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/concept/operation/DeleteConceptRelationOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDragListener.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementDropAdapter.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptionElementTransfer.java -text
@@ -467,6 +489,7 @@ eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/d
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionElementsHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/handler/MoveDescriptionToOtherTaxonHandler.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateDescriptionElementOperation.java -text
+eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateSpecimenDescriptionOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateTaxonDescriptionOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteDescriptionElementOperation.java -text
 eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/DeleteTaxonDescriptionOperation.java -text
@@ -923,6 +946,7 @@ eu.etaxonomy.taxeditor.store/icons/add_no_bg2.gif -text
 eu.etaxonomy.taxeditor.store/icons/alt_window_16.gif -text
 eu.etaxonomy.taxeditor.store/icons/alt_window_32.gif -text
 eu.etaxonomy.taxeditor.store/icons/applications-office.png -text
+eu.etaxonomy.taxeditor.store/icons/artwork-16x16-32.gif -text
 eu.etaxonomy.taxeditor.store/icons/autonym_no_bg.gif -text
 eu.etaxonomy.taxeditor.store/icons/back.gif -text
 eu.etaxonomy.taxeditor.store/icons/basionym.gif -text
@@ -946,6 +970,7 @@ eu.etaxonomy.taxeditor.store/icons/db.gif -text
 eu.etaxonomy.taxeditor.store/icons/debug.gif -text
 eu.etaxonomy.taxeditor.store/icons/delete.gif -text
 eu.etaxonomy.taxeditor.store/icons/delete_edit.gif -text
+eu.etaxonomy.taxeditor.store/icons/dna_derivate-16x16-32.gif -text
 eu.etaxonomy.taxeditor.store/icons/eclipse.gif -text
 eu.etaxonomy.taxeditor.store/icons/edit_16x16.gif -text
 eu.etaxonomy.taxeditor.store/icons/edit_16x16.ico -text
@@ -953,6 +978,7 @@ eu.etaxonomy.taxeditor.store/icons/edit_256color.ICO -text
 eu.etaxonomy.taxeditor.store/icons/error_co.gif -text
 eu.etaxonomy.taxeditor.store/icons/expandAll.jpg -text
 eu.etaxonomy.taxeditor.store/icons/export.gif -text
+eu.etaxonomy.taxeditor.store/icons/fieldunit-16x16-32.gif -text
 eu.etaxonomy.taxeditor.store/icons/file_obj.gif -text
 eu.etaxonomy.taxeditor.store/icons/filter.gif -text
 eu.etaxonomy.taxeditor.store/icons/flat.gif -text
@@ -1022,6 +1048,8 @@ eu.etaxonomy.taxeditor.store/icons/search_src.gif -text
 eu.etaxonomy.taxeditor.store/icons/settings.gif -text
 eu.etaxonomy.taxeditor.store/icons/smartmode_co.gif -text
 eu.etaxonomy.taxeditor.store/icons/sort.gif -text
+eu.etaxonomy.taxeditor.store/icons/specimen_derivate-16x16-32.gif -text
+eu.etaxonomy.taxeditor.store/icons/specimen_scan_derivate-16x16-32.gif -text
 eu.etaxonomy.taxeditor.store/icons/step_done.gif -text
 eu.etaxonomy.taxeditor.store/icons/swap.gif -text
 eu.etaxonomy.taxeditor.store/icons/swap2.gif -text
@@ -1035,6 +1063,7 @@ eu.etaxonomy.taxeditor.store/icons/th_vertical.gif -text
 eu.etaxonomy.taxeditor.store/icons/thin_close_view.gif -text
 eu.etaxonomy.taxeditor.store/icons/thin_max_view.gif -text
 eu.etaxonomy.taxeditor.store/icons/thin_restore_view.GIF -text
+eu.etaxonomy.taxeditor.store/icons/tissue_sample-16x16-32.gif -text
 eu.etaxonomy.taxeditor.store/icons/trash.gif -text
 eu.etaxonomy.taxeditor.store/icons/tree_icon_small.jpg -text
 eu.etaxonomy.taxeditor.store/icons/undo.gif -text
@@ -1138,6 +1167,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IDirtyMa
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IElementHasDetails.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IPartChangeListener.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasDetails.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasFactualData.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasSupplementalData.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/ImageResources.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/LineSelection.java -text
@@ -1168,8 +1198,10 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewT
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewTeamWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/NewUserWizard.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/newWizard/PolytomousKeyWizardPage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractDescriptionPostOperation.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPersistentPostOperation.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostOperation.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostTaxonOperation.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/IPostOperationEnabled.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/parser/MatchStrategyConfigurator.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/parser/ParseHandler.java -text
@@ -1225,6 +1257,43 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermMana
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermStore.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/internal/TaxeditorStorePlugin.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/bar/AuthenticatedUserBar.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ComboDefinedTermController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntityCollectionElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntitySelectionField.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntitySelectionFieldController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/LanguageTextFieldController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/NamedAreaFieldController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/NumberFieldController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/PointField.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/PointFieldController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/TextFieldController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextField.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextFieldController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/compatibility/ICdmFormElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/compatibility/IEntitySelectionElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateLabelProvider.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchComposite.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchCompositeController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchView.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsElementController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsView.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralElementController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventDetailsElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventDetailsElementController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsElementController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsElementController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenGeneralSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/specimenSearch/SpecimenSearchComposite.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/specimenSearch/SpecimenSearchController.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/EnumComboElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/combo/TermComboElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/LoginDialog.java -text
@@ -1264,7 +1333,6 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/Cdm
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/CheckboxElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/DateDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/GatheringEventUnitElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ICdmFormElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/IEnableableFormElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/IEntityElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/IErrorIntolerableElement.java -text
@@ -1313,6 +1381,7 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/Abs
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractIdentifiableEntityDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/EmptyElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/ICdmDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/ITaxonBaseDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/InstitutionDetailSection.java -text
@@ -1423,14 +1492,18 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occ
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitBaseWizardPage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitDetailsWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitFacadeDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitGeneralWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationEventDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DeterminationHistoryDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationDetailsWizardPage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationGeneralWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitGeneralDetailElement.java -text
@@ -1439,13 +1512,15 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occ
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldUnitWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailsWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventWizardPage.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/IDerivedUnitFacadeDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/NamedAreaDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SourceCollectionDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenCollectionDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenCollectionDetailSection.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenDetailsWizardPage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralWizardPage.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/NomenclaturalReferenceDetailElement.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/NomenclaturalReferenceDetailSection.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/reference/ReferenceDetailElement.java -text
@@ -1527,6 +1602,8 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/detail/De
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/reporting/ReportingViewPart.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/supplementaldata/SupplementalDataViewPart.java -text
 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/supplementaldata/SupplementalDataViewer.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/org/eclipse/wb/swt/ResourceManager.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/org/eclipse/wb/swt/SWTResourceManager.java -text
 eu.etaxonomy.taxeditor.store/src/main/resources/eu/etaxonomy/cdm/editorApplicationContext.xml -text
 eu.etaxonomy.taxeditor.store/src/main/resources/log4j.properties -text
 eu.etaxonomy.taxeditor.store/src/test/java/eu/etaxonomy/taxeditor/store/NameProtectTitleCacheTest.java -text
index f0a21cf7f206e7f1e8402ee3eed167e6b10c2afb..61c72751cc72b36ce68409254b0675f6cd9f04e1 100644 (file)
@@ -5,7 +5,16 @@ Bundle-SymbolicName: eu.etaxonomy.taxeditor.bulkeditor;singleton:=true
 Bundle-Version: 3.3.0.qualifier
 Bundle-Activator: eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin
 Bundle-Vendor: EDIT
-Export-Package: eu.etaxonomy.taxeditor.annotatedlineeditor,eu.etaxonomy.taxeditor.annotatedlineeditor.handler,eu.etaxonomy.taxeditor.bulkeditor,eu.etaxonomy.taxeditor.bulkeditor.command,eu.etaxonomy.taxeditor.bulkeditor.handler,eu.etaxonomy.taxeditor.bulkeditor.input,eu.etaxonomy.taxeditor.bulkeditor.internal,eu.etaxonomy.taxeditor.bulkeditor.referencingobjects
+Export-Package: eu.etaxonomy.taxeditor.annotatedlineeditor,
+ eu.etaxonomy.taxeditor.annotatedlineeditor.handler,
+ eu.etaxonomy.taxeditor.bulkeditor,
+ eu.etaxonomy.taxeditor.bulkeditor.command,
+ eu.etaxonomy.taxeditor.bulkeditor.handler,
+ eu.etaxonomy.taxeditor.bulkeditor.input,
+ eu.etaxonomy.taxeditor.bulkeditor.internal,
+ eu.etaxonomy.taxeditor.bulkeditor.referencingobjects,
+ eu.etaxonomy.taxeditor.dataimport,
+ eu.etaxonomy.taxeditor.dataimport.wizard
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
  org.eclipse.ui.editors,
index eb3725ea16778b0d52083983a7bf147c19e86bec..8df35d12b1963c3ca040cb6c05ff8b56c99aabcf 100644 (file)
             id="nameeditor.editor"\r
             name="Name Editor">\r
       </editor>\r
+      <editor\r
+            class="eu.etaxonomy.taxeditor.dataimport.DataImportEditor"\r
+            default="false"\r
+            id="eu.etaxonomy.taxeditor.dataimport.DataImportEditor"\r
+            name="Data Import Editor">\r
+      </editor>\r
    </extension>\r
    <extension\r
          point="org.eclipse.ui.menus">\r
@@ -34,6 +40,9 @@
                id="bulkeditor.menus.openmenu"\r
                label="Bulk Editor">\r
          </menu>\r
+         <menu\r
+               label="Search Specimen">\r
+         </menu>\r
       </menuContribution>\r
       <menuContribution\r
             locationURI="menu:bulkeditor.menus.openmenu">\r
                style="push">\r
          </command>\r
       </menuContribution>\r
+      <menuContribution\r
+            allPopups="false"\r
+            locationURI="popup:eu.etaxonomy.taxeditor.editor.view.media">\r
+         <command\r
+               commandId="eu.etaxonomy.taxeditor.bulkeditor.command.derivedunit.addDerivedUnitMedia"\r
+               label="Add Derived Unit Media"\r
+               style="push">\r
+         </command>\r
+         <command\r
+               commandId="eu.etaxonomy.taxeditor.bulkeditor.command.derivedunit.addFieldObjectMedia"\r
+               label="Add Field Object Media"\r
+               style="push">\r
+         </command>\r
+      </menuContribution>\r
    </extension>\r
    <extension\r
          point="org.eclipse.ui.commands">\r
             id="bulkeditor.commands.removemergecandidate"\r
             name="Remove as Candidate for Group Merge">\r
       </command>\r
+      <command\r
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.SetMarkerFlagHandler"\r
+            id="taxeditor-bulkeditor.command.setMarkerFlag"\r
+            name="Set Marker Flag">\r
+      </command>\r
+      <command\r
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.derivedunit.handler.AddDerivedUnitMediaHandler"\r
+            id="eu.etaxonomy.taxeditor.bulkeditor.command.derivedunit.addDerivedUnitMedia"\r
+            name="Add Derived Unit Media">\r
+      </command>\r
+      <command\r
+            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.derivedunit.handler.AddFieldObjectMediaHandler"\r
+            id="eu.etaxonomy.taxeditor.bulkeditor.command.derivedunit.addFieldObjectMedia"\r
+            name="Add Field Object Media">\r
+      </command>\r
       <!--command\r
             defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.NewEntityHandler"\r
             id="eu.etaxonomy.taxeditor.bulkeditor.command.new"\r
             type="eu.etaxonomy.taxeditor.bulkeditor.BulkEditor">\r
       </propertyTester>\r
    </extension>\r
-   <extension\r
-         point="org.eclipse.ui.commands">\r
-      <command\r
-            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.handler.SetMarkerFlagHandler"\r
-            id="taxeditor-bulkeditor.command.setMarkerFlag"\r
-            name="Set Marker Flag">\r
-      </command>\r
-   </extension>\r
    <extension\r
          point="org.eclipse.ui.handlers">\r
       <handler\r
             name="Bulk Editor">\r
       </page>\r
    </extension>\r
-   <extension\r
-         point="org.eclipse.ui.menus">\r
-      <menuContribution\r
-            allPopups="false"\r
-            locationURI="popup:eu.etaxonomy.taxeditor.editor.view.media">\r
-         <command\r
-               commandId="eu.etaxonomy.taxeditor.bulkeditor.command.derivedunit.addDerivedUnitMedia"\r
-               label="Add Derived Unit Media"\r
-               style="push">\r
-         </command>\r
-         <command\r
-               commandId="eu.etaxonomy.taxeditor.bulkeditor.command.derivedunit.addFieldObjectMedia"\r
-               label="Add Field Object Media"\r
-               style="push">\r
-         </command>\r
-      </menuContribution>\r
-   </extension>\r
-   <extension\r
-         point="org.eclipse.ui.commands">\r
-      <command\r
-            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.derivedunit.handler.AddDerivedUnitMediaHandler"\r
-            id="eu.etaxonomy.taxeditor.bulkeditor.command.derivedunit.addDerivedUnitMedia"\r
-            name="Add Derived Unit Media">\r
-      </command>\r
-      <command\r
-            defaultHandler="eu.etaxonomy.taxeditor.bulkeditor.derivedunit.handler.AddFieldObjectMediaHandler"\r
-            id="eu.etaxonomy.taxeditor.bulkeditor.command.derivedunit.addFieldObjectMedia"\r
-            name="Add Field Object Media">\r
-      </command>\r
-   </extension>\r
    <extension\r
          point="org.eclipse.core.expressions.propertyTesters">\r
       <propertyTester\r
                id="eu.etaxonomy.taxeditor.view.detail">\r
          </showInPart>\r
       </perspectiveExtension>\r
+   </extension>\r
+   <extension\r
+         point="org.eclipse.ui.importWizards">\r
+      <wizard\r
+            category="eu.etaxonomy.taxeditor.import.category.cdm"\r
+            class="eu.etaxonomy.taxeditor.dataimport.wizard.SpecimenSearchWizard"\r
+            id="eu.etaxonomy.taxeditor.dataimport.wizard.SpecimenSearchWizard"\r
+            name="Query BioCASE">\r
+      </wizard>\r
    </extension>
 <!-- start set marker -->\r
 \r
index 2bd124f21bf3a1739cc4428459b651ba34630e63..af7d40c9f9eb56ca838ce40cc67e4dbae0b58da6 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -25,8 +25,9 @@ import org.eclipse.jface.text.source.IAnnotationModel;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.texteditor.AbstractDocumentProvider;
 
-import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;
 import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
+import eu.etaxonomy.taxeditor.dataimport.DerivedUnitEditorInput;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 
 
 
@@ -54,11 +55,11 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
        private LineAnnotationModel annotationModel;
 
        private IEntityCreator<?> entityCreator;
-       
+
        private ILineDisplayStrategy lineDisplayStrategy;
 
        private IEditorInput input;
-       
+
        /**
         * <p>Constructor for AnnotatedLineDocumentProvider.</p>
         *
@@ -67,12 +68,12 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
        public AnnotatedLineDocumentProvider(IEditorInput input){
                this.input = input;
        }
-       
+
        /** {@inheritDoc} */
        @Override
        public IAnnotationModel getAnnotationModel(Object element) {
                if (element == input) {
-                       
+
                        // Create model as necessary
                        if (annotationModel == null) {
                                annotationModel = new LineAnnotationModel(getLineDisplayStrategy(element));
@@ -80,10 +81,10 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                        }
                        return annotationModel;
                }
-               
+
                return null;
        }
-       
+
        /** {@inheritDoc} */
        @Override
        protected IAnnotationModel createAnnotationModel(Object element)
@@ -96,28 +97,28 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
        public IDocument getDocument(Object element) {
                return document;
        }
-       
+
        /** {@inheritDoc} */
        @Override
        protected IDocument createDocument(Object element) throws CoreException {
-               
+
                if (element instanceof IEditorInput) {
                        IEditorInput input = (IEditorInput) element;
                        document = new Document("");
 //                     IAnnotationModel model = getAnnotationModel(element);
-                                       
+
                        List<?> entityList = getEntityList(element);
-                       
+
                        if(entityList != null){
                                for (Object entity : entityList) {
                                        try {
                                                createAnnotatedLine(input, entity);
                                        } catch (BadLocationException e) {
-                                               BulkEditorUtil.error(getClass(), "Problems creating annotated line: ", e);
+                                               AbstractUtility.error(getClass(), "Problems creating annotated line: ", e);
                                        }
-                               }       
+                               }
                        }
-                       
+
                        return document;
                }
                return null;
@@ -132,12 +133,12 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
         * @return a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation} object.
         */
        protected LineAnnotation createAnnotatedLine(Object element, Object entity) throws BadLocationException {
-               
+
                Document document = (Document) getDocument(element);
                ILineDisplayStrategy lineDisplayStrategy = getLineDisplayStrategy(element);
-               
+
                LineAnnotation annotation = new LineAnnotation(entity, lineDisplayStrategy);
-                               
+
                // Is document zero length, or is last char in document line delimiter?
                int docLength = document.getLength();
                boolean useDelimiter = false;
@@ -149,7 +150,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                if (useDelimiter) {
                        document.replace(docLength, 0, document.getDefaultLineDelimiter());
                }
-               
+
                String text;
                if (lineDisplayStrategy.isEntityCacheEmpty(entity)) {
                        text = lineDisplayStrategy.getEmptyCacheMessage(entity);
@@ -159,46 +160,46 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                text += lineDisplayStrategy.getSupplementalText(entity);
                docLength = document.getLength();
                document.replace(docLength, 0, text);
-               
+
                Position position = new Position(docLength, text.length());
-               
+
                IAnnotationModel model = getAnnotationModel(element);
                if(model != null){
                        model.addAnnotation(annotation, position);
                }
-                                                       
-//             lineDisplayStrategy.addDisplayListener(entity, 
+
+//             lineDisplayStrategy.addDisplayListener(entity,
 //                                             new EntityListenerImpl((LineAnnotation) annotation, element));
-//                             
+//
                return annotation;
        }
-       
-       
+
+
        /**
         * <p>updateLineFromAnnotation</p>
         *
         * @param annotation a {@link eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation} object.
         */
        public void updateLineFromAnnotation(LineAnnotation annotation) {
-                               
+
                IAnnotationModel model = getAnnotationModel(input);
                IDocument document = getDocument(input);
                ILineDisplayStrategy lineDisplay = getLineDisplayStrategy(input);
-               
+
                Object entity = annotation.getEntity();
                String text = "";
                if (getLineDisplayStrategy(input).isEntityCacheEmpty(entity)) {
                        text = lineDisplay.getEmptyCacheMessage(entity);
                } else {
                        text = lineDisplay.getText(entity);
-               }               
+               }
                text += lineDisplay.getSupplementalText(entity);
-               
+
                try {
                        if (model.getPosition(annotation) == null) {
                                return;
                        }
-                       int offset = model.getPosition(annotation).getOffset();                 
+                       int offset = model.getPosition(annotation).getOffset();
                        int line = document.getLineOfOffset(offset);
                        int lineLength = document.getLineLength(document.getLineOfOffset(offset));
                        if (document.getLineDelimiter(line) != null) {
@@ -206,18 +207,21 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                        }
                        document.replace(offset, lineLength, text);
                } catch (BadLocationException e) {
-                       BulkEditorUtil.error(getClass(), "Problem updating annotated line: " ,e);
+                       AbstractUtility.error(getClass(), "Problem updating annotated line: " ,e);
                }
        }
-       
+
        /**
-        * @param element 
+        * @param element
         * @return
         */
        private List<?> getEntityList(Object element) {
                if (element instanceof AbstractBulkEditorInput) {
                        return ((AbstractBulkEditorInput)element).getModel();
                }
+               else if(element instanceof DerivedUnitEditorInput){
+                   return ((DerivedUnitEditorInput) element).getResults();
+               }
                return null;
        }
 
@@ -226,9 +230,9 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
        protected void doSaveDocument(IProgressMonitor monitor, Object element,
                        IDocument document, boolean overwrite) throws CoreException {
                if (element instanceof AbstractBulkEditorInput) {
-                       
+
                        IEntityPersistenceService persistenceService = (AbstractBulkEditorInput) element;
-                       
+
                        // Get new containers from annotation model
                        LineAnnotationModel model = (LineAnnotationModel) getAnnotationModel(element);
                        Iterator iterator = model.getAnnotationIterator();
@@ -248,7 +252,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                                        continue;
                                }
                                if (annotation.isMarkedAsMerged()) {
-                                       persistenceService.merge(annotation.getEntity(), annotation.getMergeTarget()); //  merge                                        
+                                       persistenceService.merge(annotation.getEntity(), annotation.getMergeTarget()); //  merge
                                } else {
                                        // TODO clarify w AM whether this needs to be executed on merged objects
                                        //persistenceService.delete(annotation.getEntity()); // delete
@@ -263,20 +267,20 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
        protected IRunnableContext getOperationRunner(IProgressMonitor monitor) {
                return null;
        }
-       
+
        /** {@inheritDoc} */
        @Override
        public boolean isModifiable(Object element) {
                return true;
        }
-       
+
        /** {@inheritDoc} */
        @Override
        public boolean isReadOnly(Object element) {
                // enables copy & paste
                return false;
        }
-       
+
        /**
         * <p>Getter for the field <code>entityCreator</code>.</p>
         *
@@ -300,9 +304,9 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                        ILineDisplayStrategy lineDisplayStrategy, Object element) {
                if (element instanceof IEditorInput) {
                        this.lineDisplayStrategy = lineDisplayStrategy;
-               }       
+               }
        }
-       
+
        /**
         * <p>Getter for the field <code>lineDisplayStrategy</code>.</p>
         *
@@ -316,7 +320,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                }
                return null;
        }
-       
+
        /**
         * <p>removeAnnotatedLine</p>
         *
@@ -326,7 +330,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                LineAnnotation annotation = (LineAnnotation) annotationModel.getAnnotation(entity);
                removeAnnotatedLine(annotation);
        }
-       
+
        /**
         * <p>removeAnnotatedLine</p>
         *
@@ -337,7 +341,7 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                LineAnnotation annotation = (LineAnnotation) annotationModel.getAnnotationAtLine(lineno, document);
                removeAnnotatedLine(annotation);
        }
-       
+
        /**
         * <p>removeAnnotatedLine</p>
         *
@@ -347,15 +351,15 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                if (annotation != null) {
                        Document document = (Document) getDocument(input);
                        LineAnnotationModel model = (LineAnnotationModel) getAnnotationModel(input);
-                       
+
                        Position position = model.getPosition(annotation);
                        int offset = position.getOffset();
                        int length = position.getLength();
-                       
+
                        Object entity = annotation.getEntity();
                        annotation.markAsDeleted();
                        model.removeAnnotation(annotation);
-                       
+
                        // Immediately followed by a delimiter?
                        int annotationEnd = offset + length;
                        try {
@@ -363,17 +367,17 @@ public class AnnotatedLineDocumentProvider extends AbstractDocumentProvider {
                                        length += 2;
                                }
                        } catch (BadLocationException e1) {
-                               BulkEditorUtil.error(getClass(), "Problems removing annotated line", e1);
+                               AbstractUtility.error(getClass(), "Problems removing annotated line", e1);
                        }
-                       
+
                        try {
                                document.replace(offset, length, "");
                        } catch (BadLocationException e) {
-                               BulkEditorUtil.error(getClass(), "Problems removing annotated line", e);
+                               AbstractUtility.error(getClass(), "Problems removing annotated line", e);
                        }
-               }               
+               }
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.ui.texteditor.AbstractDocumentProvider#changed(java.lang.Object)
         */
index e0c5d808d1405944167d161b0819bdc6fff3a755..26628625f268ca47927d08321797ca341c9a7dcd 100644 (file)
@@ -1,17 +1,15 @@
 // $Id$
 /**
 * 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.bulkeditor;
 
-import java.util.Iterator;
-
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.dialogs.MessageDialogWithToggle;
@@ -21,7 +19,6 @@ import org.eclipse.jface.text.ITextSelection;
 import org.eclipse.jface.text.TextSelection;
 import org.eclipse.jface.text.source.Annotation;
 import org.eclipse.jface.text.source.AnnotationModel;
-import org.eclipse.jface.text.source.IAnnotationModel;
 import org.eclipse.jface.text.source.ISourceViewer;
 import org.eclipse.jface.text.source.IVerticalRuler;
 import org.eclipse.jface.util.IPropertyChangeListener;
@@ -62,9 +59,9 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
        public static final String ID = "bulkeditor.editor";
 
        private boolean isInitialFocus = true;
-       
+
        private BulkEditorSearch searchBar = null;
-       
+
        private IPropertyChangeListener markerPreferenceListener;
 
        /**
@@ -81,32 +78,33 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
        @Override
        protected void initializeEditor() {
                super.initializeEditor();
-                               
+
                /**
                 * see AbstractTextEditor javadoc for explanation of context menu ids
                 */
                setEditorContextMenuId("#BulkEditorContext");
 
 //             setEntityCreatorService(new BulkEditorEntityCreatorService());
-               
+
                setLineDisplayStrategy(new BulkEditorLineDisplay(this));
-               
+
                setSourceViewerConfiguration(new BulkEditorViewerConfiguration(lineDisplayStrategy));
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.ListEditor#createSourceViewer(org.eclipse.swt.widgets.Composite, org.eclipse.jface.text.source.IVerticalRuler, int)
         */
        /** {@inheritDoc} */
-       protected ISourceViewer createSourceViewer(Composite parent,
+       @Override
+    protected ISourceViewer createSourceViewer(Composite parent,
                        IVerticalRuler ruler, int styles) {
                ISourceViewer viewer = super.createSourceViewer(parent, ruler, styles);
-               if (((AbstractBulkEditorInput) getEditorInput()).isMergingEnabled()) {
+               if (getEditorInput().isMergingEnabled()) {
                        addToggleMergeCandidateListener(ruler.getControl());
                }
                return viewer;
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.AnnotatedLineEditor#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
         */
@@ -114,46 +112,46 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
        @Override
        public void init(IEditorSite site, IEditorInput input)
                        throws PartInitException {
-               
+
                if (!(input instanceof AbstractBulkEditorInput)) {
                        throw new PartInitException("Invalid Input: Must be BulkEditorInput");
                }
-               
+
                super.init(site, input);
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.ui.texteditor.AbstractDecoratedTextEditor#createPartControl(org.eclipse.swt.widgets.Composite)
         */
        /** {@inheritDoc} */
        @Override
        public void createPartControl(Composite parent) {
-               
+
                parent.setLayout(new GridLayout());
-               
+
                Composite layoutComposite = new Composite(parent, SWT.NONE);
                layoutComposite.setLayout(new GridLayout());
 
                GridData gridData = new GridData(SWT.FILL, SWT.TOP, true, false);
                layoutComposite.setLayoutData(gridData);
-               
+
 //             layoutComposite.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_BLUE));
-               
-               
+
+
                searchBar = new BulkEditorSearch(this, layoutComposite, SWT.NONE);
 //             layoutComposite.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
-                               
+
                super.createPartControl(parent);
-               
+
                // Set viewer composite to fill grid. Unfortunately it is private and we have to do a little hack here.
                for (Control control : parent.getChildren()) {
-                       if (control instanceof Composite && 
+                       if (control instanceof Composite &&
                                                !(control.equals(layoutComposite))) {
                                control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
                        }
                }
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.ui.editors.text.TextEditor#dispose()
         */
@@ -183,16 +181,16 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
        public void setFocus() {
                searchBar.setFocus();
 
-               // TODO find a better place to put this - this dialog should be shown after initial contents of 
+               // TODO find a better place to put this - this dialog should be shown after initial contents of
                //      Editor are displayed
                if (isInitialFocus) {
                        displayWarningDialog();
                        isInitialFocus = false;
                }
        }
-       
+
        /**
-        * 
+        *
         */
        private void displayWarningDialog() {
                IPreferenceStore prefs = PreferencesUtil.getPreferenceStore();
@@ -201,14 +199,14 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
                                                        "Any changes you make to an object in the Bulk Editor will be displayed wherever the object is used.\n\n" +
                                                        "For instance, a reference may be displayed with both a name and a descriptive element. If the reference name is changed here, the display of both the name and the descriptive element will be affected.";
                        MessageDialogWithToggle dialog = MessageDialogWithToggle.openOkCancelConfirm
-                                                                                               (getSite().getShell(), "Bulk Editor", msg, "Do not show this message again", 
+                                                                                               (getSite().getShell(), "Bulk Editor", msg, "Do not show this message again",
                                                                                                                false, null, PreferencesUtil.HIDE_BULKEDITOR_INFO);
-                       if (dialog.getReturnCode() == Window.OK) { 
+                       if (dialog.getReturnCode() == Window.OK) {
                                prefs.setValue(PreferencesUtil.HIDE_BULKEDITOR_INFO, dialog.getToggleState());
                        }
                }
        }
-       
+
        /**
         * @param control
         */
@@ -229,14 +227,14 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
         * @param line a int.
         */
        public void toggleMergeCandidateAnnotation(int line) {
-               
+
                IDocument document = getSourceViewer().getDocument();
-               LineAnnotationModel model = 
+               LineAnnotationModel model =
                                (LineAnnotationModel) getSourceViewer().getAnnotationModel();
-               
+
                if(model != null){
                        Annotation annotation = model.getAnnotationAtLine(line, document);
-                       
+
                        if (annotation != null) {
                                if (annotation.getType().equals(IBulkEditorConstants.TYPE_MERGE_CANDIDATE)) {
                                        model.changeAnnotationType(
@@ -248,25 +246,26 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
                        }
                }
        }
-       
+
        /** {@inheritDoc} */
-       public void changed(Object object) {
+       @Override
+    public void changed(Object object) {
 //             this.dirty = dirty;
                AnnotatedLineDocumentProvider p = (AnnotatedLineDocumentProvider) getDocumentProvider();
                p.changed(object);
 //             firePropertyChange(PROP_DIRTY);
        }
-       
+
        /* (non-Javadoc)
         * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
         */
        /** {@inheritDoc} */
        public void performSearch(BulkEditorQuery query) {
                if (query != null) {
-                       
+
                        // TODO check if dirty, prompt save
                        if (isDirty()) {
-                               boolean proceed = MessageDialog.openQuestion(getEditorSite().getShell(), 
+                               boolean proceed = MessageDialog.openQuestion(getEditorSite().getShell(),
                                                "Save changes", "You have made changes that must be saved before this query can be executed. Would you like to proceed?");
                                if (proceed) {
                                        doSave(null);
@@ -274,40 +273,41 @@ public class BulkEditor extends AnnotatedLineEditor implements IPartContentHasDe
                                        return;
                                }
                        }
-                                               
+
                        getEditorInput().performSearch(query);
-                       
+
                        refresh();
-                       
+
                        selectFirstItem();
-                       
+
                        getSourceViewer().getTextWidget().setFocus();
                }
        }
-       
+
        private void selectFirstItem() {
-               ITextSelection selection = new TextSelection(0, 0);     
+               ITextSelection selection = new TextSelection(0, 0);
                getSelectionProvider().setSelection(selection);
        }
 
        /**
-        * 
+        *
         */
        public void refresh() {
                if(getDocumentProvider().getAnnotationModel(getEditorInput()) != null){
                        ((AnnotationModel) getDocumentProvider().getAnnotationModel(getEditorInput())).removeAllAnnotations();
                }
-               
+
                setInput(getEditorInput());
        }
-       
+
        /** {@inheritDoc} */
        @Override
        public AbstractBulkEditorInput getEditorInput() {
                return (AbstractBulkEditorInput) super.getEditorInput();
        }
-       
-       protected void editorContextMenuAboutToShow(IMenuManager menu) {
+
+       @Override
+    protected void editorContextMenuAboutToShow(IMenuManager menu) {
                super.editorContextMenuAboutToShow(menu);
                menu.remove(ITextEditorActionConstants.SHIFT_RIGHT);
                menu.remove(ITextEditorActionConstants.SHIFT_LEFT);
index cd53d16cb07990ba7a0d70eae4a6bb8ba04f1016..a6ae0fd7787d87e75da2a5d5056b29e14984e8d6 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -42,7 +42,7 @@ import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
  * @version 1.0
  */
 public class BulkEditorLineDisplay implements ILineDisplayStrategy {
-       
+
        private BulkEditor editor;
 
        /**
@@ -58,7 +58,8 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.bulkeditor.ILineDisplayStrategy#getIcon(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public Image getIcon(Object entity) {
+       @Override
+    public Image getIcon(Object entity) {
                return null;
        }
 
@@ -66,7 +67,8 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.bulkeditor.ILineDisplayStrategy#getIndent(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public int getIndent(Object entity) {
+       @Override
+    public int getIndent(Object entity) {
                return 0;
        }
 
@@ -74,7 +76,8 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.bulkeditor.ILineDisplayStrategy#getText(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public String getText(Object entity) {          
+       @Override
+    public String getText(Object entity) {
                return editor.getEditorInput().getText((ICdmBase) entity);
        }
 
@@ -83,20 +86,21 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#getSupplementalText(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public String getSupplementalText(Object entity) {
-               
+       @Override
+    public String getSupplementalText(Object entity) {
+
                String supplementalText = "";
-               
+
                AbstractBulkEditorInput input = editor.getEditorInput();
                String typeText = input.getTypeText(entity);
-               
+
                supplementalText += StringUtils.isBlank(typeText) ? "" : String.format(" [%s]", typeText);
-               
+
                if (entity instanceof IAnnotatableEntity) {
                        IAnnotatableEntity annotatableEntity = (IAnnotatableEntity) HibernateProxyHelper.deproxy(entity);
 
                        Map<MarkerType, Boolean> editMarkerTypePreferences = PreferencesUtil.getEditMarkerTypePreferences();
-                       
+
                        String markerText = "";
                        List<String> markers = new ArrayList<String>();
                        for (Marker marker : annotatableEntity.getMarkers()) {
@@ -106,20 +110,21 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
                        if (! markers.isEmpty()) {
                                markerText = StringUtils.join(markers, ", ");
                        }
-                       
+
                        supplementalText += StringUtils.isBlank(markerText) ? "" : String.format(" [%s]", markerText);
                }
-               
+
                return supplementalText;
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.bulkeditor.ILineDisplayStrategy#setText(java.lang.String, java.lang.Object)
         */
        /** {@inheritDoc} */
-       public void setText(String text, Object entity) {
+       @Override
+    public void setText(String text, Object entity) {
                if (entity instanceof Reference) {
-                       ((Reference) entity).setTitleCache(text);                       
+                       ((Reference) entity).setTitleCache(text);
                }
        }
 
@@ -127,7 +132,8 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.bulkeditor.ILineDisplayStrategy#getHoverText(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public String getHoverText(Object entity) {
+       @Override
+    public String getHoverText(Object entity) {
                return null;
        }
 
@@ -135,15 +141,18 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.bulkeditor.ILineDisplayStrategy#setStatusMessage(java.lang.String, java.lang.Object)
         */
        /** {@inheritDoc} */
-       public void setStatusMessage(final String text, Object entity) {
-               
+       @Override
+    public void setStatusMessage(final String text, Object entity) {
+
                // Calling from the synchronized method ListEditorReconcilingStrategy#doReconcile
                // without its own thread causes an invalid thread access exception
                // see http://wiki.eclipse.org/FAQ_Why_do_I_get_an_invalid_thread_access_exception%3F
                new Thread(new Runnable() {
-                       public void run() {
+                       @Override
+            public void run() {
                                Display.getDefault().asyncExec(new Runnable() {
-                                       public void run() {
+                                       @Override
+                    public void run() {
                                                IStatusLineManager statusLineManager = editor.getEditorSite().getActionBars().getStatusLineManager();
                                                statusLineManager.setMessage(text);
                                        }
@@ -156,7 +165,8 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#getEmptyText(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public String getEmptyCacheMessage(Object entity) {
+       @Override
+    public String getEmptyCacheMessage(Object entity) {
                if (entity instanceof Reference) {
                        return "No reference title cache";
                }
@@ -173,17 +183,18 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#isEntityCacheEmpty(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public boolean isEntityCacheEmpty(Object entity) {
+       @Override
+    public boolean isEntityCacheEmpty(Object entity) {
                if (entity instanceof Reference) {
                        String text = ((Reference) entity).getTitleCache();
                        return (text == null || text.equals(""));
                }
                if (entity instanceof TaxonNameBase) {
-                       String text = ((TaxonNameBase) entity).getTitleCache(); 
+                       String text = ((TaxonNameBase) entity).getTitleCache();
                        return (text == null || text.equals(""));
                }
                if (entity instanceof AgentBase) {
-                       String text = ((AgentBase) entity).getTitleCache(); 
+                       String text = ((AgentBase) entity).getTitleCache();
                        return (text == null || text.equals(""));
                }
                return false;
@@ -193,16 +204,17 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#addDisplayListener(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public void addDisplayListener(Object entity, EntityListener listener) {
-               /* Note: all non-field specific listeners require that corresponding property sheets 
+       @Override
+    public void addDisplayListener(Object entity, EntityListener listener) {
+               /* Note: all non-field specific listeners require that corresponding property sheets
                 * contain the following:
-                * 
-                * 
+                *
+                *
                 *              public void setPropertyValue(Object id, Object value) {
                 *              ...
                 *                      reference.firePropertyChange(new PropertyChangeEvent(reference, "", null, null));
                 *              }
-                * 
+                *
                 */
                if (entity instanceof CdmBase) {
                        ((CdmBase) entity).addPropertyChangeListener(listener);
@@ -213,7 +225,8 @@ public class BulkEditorLineDisplay implements ILineDisplayStrategy {
         * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#getFont(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public Font getFont(Object entity) {
+       @Override
+    public Font getFont(Object entity) {
                return null;
        }
 }
index 8150e39aee0724e380a4e48e6784021d89a38e35..303373ac0f3c8755008d673ef7d097f18b64d5fd 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
  * 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.
  */
@@ -25,82 +25,82 @@ import org.eclipse.ui.menus.CommandContributionItemParameter;
 
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorConstants;
 import eu.etaxonomy.taxeditor.bulkeditor.input.BulkEditorInputType;
+import eu.etaxonomy.taxeditor.dataimport.DataImportEditor;
 
 /**
  * <p>
  * OpenBulkEditorContributionItem class.
  * </p>
- * 
+ *
  * @author p.ciardelli
  * @created 19.08.2009
  * @version 1.0
  */
 public class OpenBulkEditorContributionItem extends CompoundContributionItem {
 
-       /**
-        * <p>
-        * Constructor for OpenBulkEditorContributionItem.
-        * </p>
-        */
-       public OpenBulkEditorContributionItem() {
-       }
+    /**
+     * <p>
+     * Constructor for OpenBulkEditorContributionItem.
+     * </p>
+     */
+    public OpenBulkEditorContributionItem() {
+    }
 
-       /**
-        * <p>
-        * Constructor for OpenBulkEditorContributionItem.
-        * </p>
-        * 
-        * @param id
-        *            a {@link java.lang.String} object.
-        */
-       public OpenBulkEditorContributionItem(String id) {
-               super(id);
-       }
+    /**
+     * <p>
+     * Constructor for OpenBulkEditorContributionItem.
+     * </p>
+     *
+     * @param id
+     *            a {@link java.lang.String} object.
+     */
+    public OpenBulkEditorContributionItem(String id) {
+        super(id);
+    }
 
-       /*
-        * (non-Javadoc)
-        * 
-        * @see
-        * org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
-        */
-       /** {@inheritDoc} */
-       @Override
-       protected IContributionItem[] getContributionItems() {
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
+     */
+    /** {@inheritDoc} */
+    @Override
+    protected IContributionItem[] getContributionItems() {
 
-               List<IContributionItem> contributionItems = new ArrayList<IContributionItem>();
+        List<IContributionItem> contributionItems = new ArrayList<IContributionItem>();
 
-               contributionItems.add(BulkEditorInputType.AGENT.createContributionItem());
-               contributionItems.add(BulkEditorInputType.REFERENCE.createContributionItem());
-               contributionItems.add(new Separator("test"));
-               contributionItems.add(BulkEditorInputType.NAME.createContributionItem());
-               contributionItems.add(BulkEditorInputType.NAME_RELATIONSHIP.createContributionItem());
-               contributionItems.add(new Separator("test"));
-               contributionItems.add(BulkEditorInputType.OCCURRENCE.createContributionItem());
-               contributionItems.add(new Separator("test"));
-               contributionItems.add(BulkEditorInputType.USER.createContributionItem());
-               contributionItems.add(BulkEditorInputType.GROUP.createContributionItem());              
+        contributionItems.add(BulkEditorInputType.AGENT.createContributionItem());
+        contributionItems.add(BulkEditorInputType.REFERENCE.createContributionItem());
+        String groupName = "test";
+        contributionItems.add(new Separator(groupName));
+        contributionItems.add(BulkEditorInputType.NAME.createContributionItem());
+        contributionItems.add(BulkEditorInputType.NAME_RELATIONSHIP.createContributionItem());
+        contributionItems.add(new Separator(groupName));
+        contributionItems.add(BulkEditorInputType.OCCURRENCE.createContributionItem());
+        contributionItems.add(new Separator(groupName));
+        contributionItems.add(BulkEditorInputType.USER.createContributionItem());
+        contributionItems.add(BulkEditorInputType.GROUP.createContributionItem());
+        contributionItems.add(new Separator(groupName));
+        contributionItems.add(createContributionItem("Search Specimen", DataImportEditor.ID));
 
-               return contributionItems
-                               .toArray(new IContributionItem[contributionItems.size()]);
-       }
+        return contributionItems.toArray(new IContributionItem[contributionItems.size()]);
+    }
 
-       /**
-        * @param key
-        * @param object
-        * @return
-        */
-       private IContributionItem createContributionItem(String label,
-                       String inputType) {
-               CommandContributionItemParameter parameter = new CommandContributionItemParameter(
-                               PlatformUI.getWorkbench().getActiveWorkbenchWindow(), null,
-                               IBulkEditorConstants.DYNAMIC_OPEN_MENU_ID, SWT.NONE);
+    /**
+     * @param key
+     * @param object
+     * @return
+     */
+    private IContributionItem createContributionItem(String label, String inputType) {
+        CommandContributionItemParameter parameter = new CommandContributionItemParameter(PlatformUI.getWorkbench().getActiveWorkbenchWindow(), null, IBulkEditorConstants.DYNAMIC_OPEN_MENU_ID, SWT.NONE);
 
-               parameter.label = label;
+        parameter.label = label;
 
-               Map parameters = new HashMap();
-               parameters.put(IBulkEditorConstants.INPUT_TYPE_PARAMETER_ID, inputType);
-               parameter.parameters = parameters;
+        Map<String, String> parameters = new HashMap<String, String>();
+        parameters.put(IBulkEditorConstants.INPUT_TYPE_PARAMETER_ID, inputType);
+        parameter.parameters = parameters;
 
-               return new CommandContributionItem(parameter);
-       }
+        return new CommandContributionItem(parameter);
+    }
 }
index 5b5e8e2137b773c8da3819ddd6369c70f2b50fde..e673e513c7c43f65d2087e5c87af2b5a292a396d 100644 (file)
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -31,7 +31,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @version 1.0
  */
 public class AddDerivedUnitFacadeMediaOperation extends
-               AbstractPostOperation {
+               AbstractPostTaxonOperation {
 
        public static final int DERIVED_UNIT_MEDIA = 0;
        public static final int FIELD_OBJECT_MEDIA = 1;
index c929425671fa1658a72640a30a251f0c46ea4f71..9da689de70e7e73a5c931168b1bf59ca10d080f8 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -25,15 +25,16 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.strategy.merge.IMergable;
 import eu.etaxonomy.cdm.strategy.merge.MergeException;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
 import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService;
 import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorQuery;
-import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;
 import eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorSortProvider;
 import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.CdmBaseSortProvider;
 import eu.etaxonomy.taxeditor.bulkeditor.input.sortprovider.TitleCacheComparator;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
@@ -47,16 +48,16 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEditorInput, IEntityPersistenceService<T> {
 
        /**
-        * 
+        *
         */
        private static final long serialVersionUID = 416414530232743735L;
 
        private UUID entityUuid;
 
        private List<T> model;
-       
+
        private IEntityCreator<T> entityCreator;
-       
+
        /**
         * <p>NewInstance</p>
         *
@@ -66,7 +67,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
        static public AbstractBulkEditorInput NewInstance(BulkEditorInputType inputType) {
                return BulkEditorInputType.getInput(inputType);
        }
-       
+
        /**
         * <p>NewInstance</p>
         *
@@ -74,17 +75,17 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @return a {@link eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput} object.
         */
        public static AbstractBulkEditorInput NewInstance(IdentifiableEntity entity) {
-               
-               
+
+
                BulkEditorInputType inputType = BulkEditorInputType.getByType(entity.getClass());
-               
+
                AbstractBulkEditorInput editorInput = NewInstance(inputType);
-               
+
                editorInput.setEntityUuid(entity.getUuid());
-               
+
                return editorInput;
        }
-       
+
        /**
         * <p>listEntities</p>
         *
@@ -92,7 +93,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @return a {@link java.util.List} object.
         */
        protected abstract List<T> listEntities(IIdentifiableEntityServiceConfigurator configurator);
-               
+
        /**
         * <p>loadEntity</p>
         *
@@ -104,7 +105,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
        private void setEntityUuid(UUID entityUuid){
                this.entityUuid = entityUuid;
        }
-       
+
        /**
         * <p>Getter for the field <code>entityUuid</code>.</p>
         *
@@ -114,7 +115,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
                return entityUuid;
        }
 
-                       
+
        /* (non-Javadoc)
         * @see org.eclipse.ui.IEditorInput#exists()
         */
@@ -123,7 +124,8 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         *
         * @return a boolean.
         */
-       public boolean exists() {
+       @Override
+    public boolean exists() {
                // TODO Auto-generated method stub
                return false;
        }
@@ -136,7 +138,8 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         *
         * @return a {@link org.eclipse.jface.resource.ImageDescriptor} object.
         */
-       public ImageDescriptor getImageDescriptor() {
+       @Override
+    public ImageDescriptor getImageDescriptor() {
                // TODO Auto-generated method stub
                return null;
        }
@@ -149,7 +152,8 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         *
         * @return a {@link org.eclipse.ui.IPersistableElement} object.
         */
-       public IPersistableElement getPersistable() {
+       @Override
+    public IPersistableElement getPersistable() {
                return null;
        }
 
@@ -157,7 +161,8 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
         */
        /** {@inheritDoc} */
-       @SuppressWarnings("unchecked")
+       @Override
+    @SuppressWarnings("unchecked")
        public Object getAdapter(Class adapter) {
                return null;
        }
@@ -168,30 +173,29 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @param bulkEditorQuery a {@link eu.etaxonomy.taxeditor.bulkeditor.IBulkEditorQuery} object.
         */
        public void performSearch(final BulkEditorQuery bulkEditorQuery) {
-               
+
                List<T> entityList = new ArrayList<T>();
-               
+
                if(getEntityUuid() != null){
-                       
+
                        T entity = loadEntity(getEntityUuid());
                        entityList.add(entity);
                        model = entityList;
                }
                else if(bulkEditorQuery != null){
-                       
-                       String queryString = bulkEditorQuery.getSearchString();
+
                        IIdentifiableEntityServiceConfigurator configurator = bulkEditorQuery.getSearchConfigurator();
                        Comparator queryComparator = (bulkEditorQuery.getComparator() != null) ? bulkEditorQuery.getComparator() : new TitleCacheComparator();
-                       
+
                        entityList = listEntities(configurator);
-                       
-                       Collections.sort(entityList, queryComparator);                  
-                       
+
+                       Collections.sort(entityList, queryComparator);
+
                }
-               
+
                model = entityList;
        }
-       
+
        /**
         * <p>isMergingEnabled</p>
         *
@@ -210,32 +214,34 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
        public boolean isMarkerTypeEditingEnabled(MarkerType markerType) {
                return false;
        }
-       
+
        /*
         * (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService#merge(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
         */
        /** {@inheritDoc} */
-       public boolean merge(T entity, T mergeTarget) {
+       @Override
+    public boolean merge(T entity, T mergeTarget) {
                if (entity instanceof IMergable) {
                        try {
                                CdmStore.getService(ICommonService.class).merge((IMergable)mergeTarget, (IMergable)entity, null);
                        } catch (MergeException e) {
-                               BulkEditorUtil.error(getClass(), e);
+                               AbstractUtility.error(getClass(), e);
                        }
                }
                return true;
-       };
-       
+       }
+
        /*
         * (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityPersistenceService#create(eu.etaxonomy.cdm.model.common.IdentifiableEntity)
         */
        /** {@inheritDoc} */
-       public boolean create(T entity) {
-               return save(entity);            
-       };
-       
+       @Override
+    public boolean create(T entity) {
+               return save(entity);
+       }
+
        public IEntityCreator<T> getEntityCreator(){
                if(entityCreator == null){
                        entityCreator = createEntityCreator();
@@ -254,9 +260,9 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         */
        public List<IBulkEditorSortProvider<T>> getSortProviders(){
                List<IBulkEditorSortProvider<T>> sortProviders = new ArrayList<IBulkEditorSortProvider<T>>();
-               
+
                sortProviders.add(new CdmBaseSortProvider<T>());
-               
+
                return sortProviders;
        }
 
@@ -265,7 +271,7 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
         * @return
         */
        public String getTypeText(Object entity){
-               return entity.getClass().getSimpleName();
+               return ((SpecimenOrObservationBase) entity).getRecordBasis().toString();
        }
 
        /**
@@ -275,13 +281,13 @@ public abstract class AbstractBulkEditorInput<T extends ICdmBase> implements IEd
        public String getText(T entity) {
                if(entity instanceof IdentifiableEntity){
                        IdentifiableEntity identifiableEntity = (IdentifiableEntity) HibernateProxyHelper.deproxy(entity);
-                       
+
                        return identifiableEntity.getTitleCache();
                }
-               
+
                return "No text. Implement in subclass";
        }
-       
+
        /**
         * @return
         */
index 0c0673a7e98b62285ba56736c2e1a1e02917ee7c..3ed83e2da1e964b152c299d6e79c82018578fb56 100644 (file)
@@ -21,7 +21,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.model.common.IAnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -29,7 +29,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created Dec 13, 2010
  * @version 1.0
  */
-public class SetMarkerFlagOperation extends AbstractPostOperation {
+public class SetMarkerFlagOperation extends AbstractPostTaxonOperation {
 
        private Set<IAnnotatableEntity> annotatableEntities;
        private MarkerType markerType;
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DataImportEditor.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DataImportEditor.java
new file mode 100644 (file)
index 0000000..1f90559
--- /dev/null
@@ -0,0 +1,55 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.ui.IEditorInput;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor;
+
+/**
+ * @author pplitzner
+ * @date 20.09.2013
+ *
+ */
+public class DataImportEditor extends AnnotatedLineEditor {
+
+    /** Constant <code>ID="bulkeditor.input.nameRelationship"</code> */
+    public static final String ID = "eu.etaxonomy.taxeditor.dataimport.DataImportEditor";
+
+    /**
+     * Constructs a new DataImportEditor with a new {@link ConversationHolder}
+     */
+    public DataImportEditor() {
+        super(null);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.editors.text.TextEditor#initializeEditor()
+     */
+    /** {@inheritDoc} */
+    @Override
+    protected void initializeEditor() {
+        super.initializeEditor();
+        setLineDisplayStrategy(new DataImportEditorLineDisplayStrategy());
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.AnnotatedLineEditor#doSetInput(org.eclipse.ui.IEditorInput)
+     */
+    @Override
+    protected void doSetInput(IEditorInput input) throws CoreException {
+        super.doSetInput(input);
+        setPartName(input.getName());
+        setTitleToolTip(input.getName());
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DataImportEditorLineDisplayStrategy.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DataImportEditorLineDisplayStrategy.java
new file mode 100644 (file)
index 0000000..cf91f38
--- /dev/null
@@ -0,0 +1,122 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport;
+
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Image;
+
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.annotatedlineeditor.EntityListener;
+import eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy;
+
+/**
+ * @author pplitzner
+ * @date 20.09.2013
+ *
+ */
+public class DataImportEditorLineDisplayStrategy implements ILineDisplayStrategy {
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#getIndent(java.lang.Object)
+     */
+    @Override
+    public int getIndent(Object entity) {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#getIcon(java.lang.Object)
+     */
+    @Override
+    public Image getIcon(Object entity) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#getFont(java.lang.Object)
+     */
+    @Override
+    public Font getFont(Object entity) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#getText(java.lang.Object)
+     */
+    @Override
+    public String getText(Object entity) {
+        return ((SpecimenOrObservationBase)entity).getTitleCache();
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#getSupplementalText(java.lang.Object)
+     */
+    @Override
+    public String getSupplementalText(Object entity) {
+        return "";
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#getEmptyCacheMessage(java.lang.Object)
+     */
+    @Override
+    public String getEmptyCacheMessage(Object entity) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#setText(java.lang.String, java.lang.Object)
+     */
+    @Override
+    public void setText(String text, Object entity) {
+        // TODO Auto-generated method stub
+
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#getHoverText(java.lang.Object)
+     */
+    @Override
+    public String getHoverText(Object entity) {
+        return ((SpecimenOrObservationBase)entity).getTitleCache();
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#setStatusMessage(java.lang.String, java.lang.Object)
+     */
+    @Override
+    public void setStatusMessage(String text, Object entity) {
+        // TODO Auto-generated method stub
+
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#isEntityCacheEmpty(java.lang.Object)
+     */
+    @Override
+    public boolean isEntityCacheEmpty(Object entity) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.annotatedlineeditor.ILineDisplayStrategy#addDisplayListener(java.lang.Object, eu.etaxonomy.taxeditor.annotatedlineeditor.EntityListener)
+     */
+    @Override
+    public void addDisplayListener(Object entity, EntityListener listener) {
+        // TODO Auto-generated method stub
+
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DerivedUnitEditorInput.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/DerivedUnitEditorInput.java
new file mode 100644 (file)
index 0000000..0fc3a93
--- /dev/null
@@ -0,0 +1,166 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.http.client.ClientProtocolException;
+import org.apache.log4j.Logger;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+
+import eu.etaxonomy.cdm.ext.biocase.BioCaseQuery;
+import eu.etaxonomy.cdm.ext.biocase.BioCaseQueryServiceWrapper;
+import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
+import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.dataimport.transientServices.TransientCdmRepository;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author pplitzner
+ * @date 20.09.2013
+ *
+ */
+public class DerivedUnitEditorInput implements IEditorInput {
+
+    private static Logger logger = Logger.getLogger(DerivedUnitEditorInput.class);
+
+    private final BioCaseQuery query;
+
+    /**
+     * @param results
+     */
+    public DerivedUnitEditorInput(BioCaseQuery query) {
+        this.query = query;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+     */
+    @Override
+    public Object getAdapter(Class adapter) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#exists()
+     */
+    @Override
+    public boolean exists() {
+        return false;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
+     */
+    @Override
+    public ImageDescriptor getImageDescriptor() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#getName()
+     */
+    @Override
+    public String getName() {
+        return query.toString();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#getPersistable()
+     */
+    @Override
+    public IPersistableElement getPersistable() {
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#getToolTipText()
+     */
+    @Override
+    public String getToolTipText() {
+        return query.toString();
+    }
+
+    /**
+     * @return the results
+     */
+    public List<SpecimenOrObservationBase> getResults() {
+        String errorMessage = "Could not execute query " + query;
+        List<SpecimenOrObservationBase> results = Collections.EMPTY_LIST;
+        try {
+            InputStream resultStream = new BioCaseQueryServiceWrapper().query(query);
+            Abcd206ImportConfigurator configurator = Abcd206ImportConfigurator.NewInstance(resultStream, null, false);
+            TransientCdmRepository repo = new TransientCdmRepository(CdmStore.getCurrentApplicationConfiguration());
+            configurator.setCdmAppController(repo);
+
+            CdmDefaultImport<Abcd206ImportConfigurator> importer = new CdmDefaultImport<Abcd206ImportConfigurator>();
+            importer.invoke(configurator);
+            results = repo.getUnits();
+//            Abcd206Import abcd206Import = new Abcd206Import();
+//            Abcd206ImportState state = new Abcd206ImportState(configurator);
+//            abcd206Import.invoke(state);
+//            state.countTrees();
+        } catch (ClientProtocolException e) {
+            logger.error(errorMessage, e);
+        } catch (IOException e) {
+            logger.error(errorMessage, e);
+        } catch (URISyntaxException e) {
+            logger.error(errorMessage, e);
+        }
+//        return new BioCaseQueryServiceWrapper().dummyData();
+        return results;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#hashCode()
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((query == null) ? 0 : query.hashCode());
+        return result;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        DerivedUnitEditorInput other = (DerivedUnitEditorInput) obj;
+        if (query == null) {
+            if (other.query != null) {
+                return false;
+            }
+        } else if (!query.equals(other.query)) {
+            return false;
+        }
+        return true;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientAgentService.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientAgentService.java
new file mode 100644 (file)
index 0000000..42396ed
--- /dev/null
@@ -0,0 +1,742 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.transientServices;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.hibernate.LockMode;
+import org.hibernate.Session;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.envers.query.criteria.AuditCriterion;
+
+import eu.etaxonomy.cdm.api.service.IAgentService;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.agent.Address;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.agent.Institution;
+import eu.etaxonomy.cdm.model.agent.InstitutionalMembership;
+import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.ISourceable;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.LSID;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
+import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.view.AuditEvent;
+import eu.etaxonomy.cdm.model.view.AuditEventRecord;
+import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.query.Grouping;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.cdm.persistence.query.OrderHint;
+import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
+import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
+import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
+
+/**
+ * @author pplitzner
+ * @date 27.09.2013
+ *
+ */
+public class TransientAgentService implements IAgentService {
+
+    private IAgentService defaultAgentService;
+
+    /**
+     * @param defaultAgentService
+     */
+    public TransientAgentService(IAgentService defaultAgentService) {
+        this.defaultAgentService = defaultAgentService;
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<AgentBase>> pageAuditEvents(AgentBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultAgentService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+    }
+
+    /**
+     * @param annotatedObj
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Annotation> getAnnotations(AgentBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultAgentService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param code
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAgentService#searchInstitutionByCode(java.lang.String)
+     */
+    @Override
+    public List<Institution> searchInstitutionByCode(String code) {
+        return defaultAgentService.searchInstitutionByCode(code);
+    }
+
+    /**
+     * @param person
+     * @param pageSize
+     * @param pageNumber
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAgentService#getInstitutionalMemberships(eu.etaxonomy.cdm.model.agent.Person, java.lang.Integer, java.lang.Integer)
+     */
+    @Override
+    public Pager<InstitutionalMembership> getInstitutionalMemberships(Person person, Integer pageSize, Integer pageNumber) {
+        return defaultAgentService.getInstitutionalMemberships(person, pageSize, pageNumber);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IService#clear()
+     */
+    @Override
+    public void clear() {
+        defaultAgentService.clear();
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
+     */
+    @Override
+    public void lock(AgentBase t, LockMode lockMode) {
+        defaultAgentService.lock(t, lockMode);
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @param propertyPaths
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
+     */
+    @Override
+    public void refresh(AgentBase t, LockMode lockMode, List<String> propertyPaths) {
+        defaultAgentService.refresh(t, lockMode, propertyPaths);
+    }
+
+    /**
+     * @param team
+     * @param pageSize
+     * @param pageNumber
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAgentService#getMembers(eu.etaxonomy.cdm.model.agent.Team, java.lang.Integer, java.lang.Integer)
+     */
+    @Override
+    public Pager<Person> getMembers(Team team, Integer pageSize, Integer pageNumber) {
+        return defaultAgentService.getMembers(team, pageSize, pageNumber);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
+     */
+    @Override
+    public void updateTitleCache() {
+        defaultAgentService.updateTitleCache();
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<AgentBase> getNextAuditEvent(AgentBase t) {
+        return defaultAgentService.getNextAuditEvent(t);
+    }
+
+    /**
+     * @param annotatableEntity
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Marker> getMarkers(AgentBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultAgentService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param stepSize
+     * @param cacheStrategy
+     * @param monitor
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
+     */
+    @Override
+    public void updateTitleCache(Class<? extends AgentBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<AgentBase> cacheStrategy, IProgressMonitor monitor) {
+        defaultAgentService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+    }
+
+    /**
+     * @param agent
+     * @param pageSize
+     * @param pageNumber
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAgentService#getAddresses(eu.etaxonomy.cdm.model.agent.AgentBase, java.lang.Integer, java.lang.Integer)
+     */
+    @Override
+    public Pager<Address> getAddresses(AgentBase agent, Integer pageSize, Integer pageNumber) {
+        return defaultAgentService.getAddresses(agent, pageSize, pageNumber);
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<AgentBase> getPreviousAuditEvent(AgentBase t) {
+        return defaultAgentService.getPreviousAuditEvent(t);
+    }
+
+    /**
+     * @param clazz
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
+     */
+    @Override
+    public int count(Class<? extends AgentBase> clazz) {
+        return defaultAgentService.count(clazz);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAgentService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<AgentBase> search(Class<? extends AgentBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultAgentService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param from
+     * @param to
+     * @param criteria
+     * @param pageSize
+     * @param pageValue
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<AgentBase>> pageAuditEvents(Class<? extends AgentBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultAgentService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+    }
+
+    /**
+     * @param lsid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
+     */
+    @Override
+    public AgentBase find(LSID lsid) {
+        return defaultAgentService.find(lsid);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID delete(AgentBase persistentObject) throws ReferencedObjectUndeletableException{
+        return defaultAgentService.delete(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Object[]> groupMarkers(Class<? extends AgentBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultAgentService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
+     */
+    @Override
+    public boolean exists(UUID uuid) {
+        return defaultAgentService.exists(uuid);
+    }
+
+    /**
+     * @param x
+     * @param y
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
+     */
+    @Override
+    public AgentBase replace(AgentBase x, AgentBase y) {
+        return defaultAgentService.replace(x, y);
+    }
+
+    /**
+     * @param uuidSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
+     */
+    @Override
+    public List<AgentBase> find(Set<UUID> uuidSet) {
+        return defaultAgentService.find(uuidSet);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<IdentifiableSource> getSources(AgentBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultAgentService.getSources(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
+     */
+    @Override
+    public AgentBase find(UUID uuid) {
+        return defaultAgentService.find(uuid);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAgentService#getPersonUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<Person>> getPersonUuidAndTitleCache() {
+        return defaultAgentService.getPersonUuidAndTitleCache();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAgentService#getTeamUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<Team>> getTeamUuidAndTitleCache() {
+        return defaultAgentService.getTeamUuidAndTitleCache();
+    }
+
+    /**
+     * @param id
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
+     */
+    @Override
+    public AgentBase find(int id) {
+        return defaultAgentService.find(id);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Rights> getRights(AgentBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultAgentService.getRights(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
+     */
+    @Override
+    public int countMarkers(Class<? extends AgentBase> clazz, Boolean technical) {
+        return defaultAgentService.countMarkers(clazz, technical);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAgentService#getTeamUuidAndNomenclaturalTitle()
+     */
+    @Override
+    public List<UuidAndTitleCache<Team>> getTeamUuidAndNomenclaturalTitle() {
+        return defaultAgentService.getTeamUuidAndNomenclaturalTitle();
+    }
+
+    /**
+     * @param idSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
+     */
+    @Override
+    public List<AgentBase> findById(Set<Integer> idSet) {
+        return defaultAgentService.findById(idSet);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAgentService#getInstitutionUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<Institution>> getInstitutionUuidAndTitleCache() {
+        return defaultAgentService.getInstitutionUuidAndTitleCache();
+    }
+
+    /**
+     * @param clazz
+     * @param idInSource
+     * @param idNamespace
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
+     */
+    @Override
+    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
+        return defaultAgentService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
+     */
+    @Override
+    public Session getSession() {
+        return defaultAgentService.getSession();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<AgentBase>> getUuidAndTitleCache() {
+        return defaultAgentService.getUuidAndTitleCache();
+    }
+
+    /**
+     * @param clazz
+     * @param limit
+     * @param start
+     * @param groups
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Object[]> group(Class<? extends AgentBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
+        return defaultAgentService.group(clazz, limit, start, groups, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<AgentBase> findByTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultAgentService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<AgentBase> list(Class<? extends AgentBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultAgentService.list(type, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Pager<AgentBase> findByTitle(IIdentifiableEntityServiceConfigurator<AgentBase> configurator) {
+        return defaultAgentService.findByTitle(configurator);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public Integer countByTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
+        return defaultAgentService.countByTitle(clazz, queryString, matchmode, criteria);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
+     */
+    @Override
+    public AgentBase load(UUID uuid) {
+        return defaultAgentService.load(uuid);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
+     */
+    @Override
+    public AgentBase load(UUID uuid, List<String> propertyPaths) {
+        return defaultAgentService.load(uuid, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<AgentBase> configurator) {
+        return defaultAgentService.countByTitle(configurator);
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public AgentBase merge(AgentBase transientObject) {
+        return defaultAgentService.merge(transientObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<AgentBase> listByTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultAgentService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<AgentBase> page(Class<? extends AgentBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultAgentService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID refresh(AgentBase persistentObject) {
+        return defaultAgentService.refresh(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<AgentBase> listByReferenceTitle(Class<? extends AgentBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultAgentService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param tableName
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
+     */
+    @Override
+    public List<AgentBase> rows(String tableName, int limit, int start) {
+        return defaultAgentService.rows(tableName, limit, start);
+    }
+
+    /**
+     * @param newInstances
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, AgentBase> save(Collection<AgentBase> newInstances) {
+        return null;
+    }
+
+    /**
+     * @param newInstance
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID save(AgentBase newInstance) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID saveOrUpdate(AgentBase transientObject) {
+        return null;
+    }
+
+    /**
+     * @param transientObjects
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, AgentBase> saveOrUpdate(Collection<AgentBase> transientObjects) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID update(AgentBase transientObject) {
+        return defaultAgentService.update(transientObject);
+    }
+
+    /**
+     * @param example
+     * @param includeProperties
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<AgentBase> list(AgentBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultAgentService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param matchStrategy
+     * @param mergeStrategy
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
+     */
+    @Override
+    public int deduplicate(Class<? extends AgentBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
+        return defaultAgentService.deduplicate(clazz, matchStrategy, mergeStrategy);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param matchMode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
+     */
+    @Override
+    public Pager<AgentBase> findTitleCache(Class<? extends AgentBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
+        return defaultAgentService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+    };
+
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientCdmRepository.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientCdmRepository.java
new file mode 100644 (file)
index 0000000..3cc18f7
--- /dev/null
@@ -0,0 +1,384 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.transientServices;
+
+import java.util.List;
+
+import org.springframework.security.access.PermissionEvaluator;
+import org.springframework.security.authentication.ProviderManager;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionStatus;
+
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.service.IAgentService;
+import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.api.service.ICollectionService;
+import eu.etaxonomy.cdm.api.service.ICommonService;
+import eu.etaxonomy.cdm.api.service.IDatabaseService;
+import eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
+import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
+import eu.etaxonomy.cdm.api.service.IGrantedAuthorityService;
+import eu.etaxonomy.cdm.api.service.IGroupService;
+import eu.etaxonomy.cdm.api.service.IIdentificationKeyService;
+import eu.etaxonomy.cdm.api.service.ILocationService;
+import eu.etaxonomy.cdm.api.service.IMediaService;
+import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
+import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
+import eu.etaxonomy.cdm.api.service.IReferenceService;
+import eu.etaxonomy.cdm.api.service.IService;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.api.service.IUserService;
+import eu.etaxonomy.cdm.api.service.IVocabularyService;
+import eu.etaxonomy.cdm.api.service.IWorkingSetService;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+
+/**
+ * @author pplitzner
+ * @date 26.09.2013
+ *
+ */
+public class TransientCdmRepository implements ICdmApplicationConfiguration {
+
+    private ICdmApplicationConfiguration defaultApplicationConfiguration;
+    private TransientOccurenceService occurenceService;
+
+    public List<SpecimenOrObservationBase> getUnits(){
+        return occurenceService.getUnits();
+    }
+
+    /**
+     * @param defaultApplicationConfiguration
+     */
+    public TransientCdmRepository(ICdmApplicationConfiguration defaultApplicationConfiguration) {
+        this.defaultApplicationConfiguration = defaultApplicationConfiguration;
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#NewConversation()
+     */
+    @Override
+    public ConversationHolder NewConversation() {
+        return defaultApplicationConfiguration.NewConversation();
+    }
+
+    /**
+     * @param arg0
+     * @param arg1
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#authenticate(java.lang.String, java.lang.String)
+     */
+    @Override
+    public void authenticate(String arg0, String arg1) {
+        defaultApplicationConfiguration.authenticate(arg0, arg1);
+    }
+
+    /**
+     * @param arg0
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#commitTransaction(org.springframework.transaction.TransactionStatus)
+     */
+    @Override
+    public void commitTransaction(TransactionStatus arg0) {
+        defaultApplicationConfiguration.commitTransaction(arg0);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getAgentService()
+     */
+    @Override
+    public IAgentService getAgentService() {
+        return new TransientAgentService(defaultApplicationConfiguration.getAgentService());
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getAuthenticationManager()
+     */
+    @Override
+    public ProviderManager getAuthenticationManager() {
+        return defaultApplicationConfiguration.getAuthenticationManager();
+    }
+
+    /**
+     * @param arg0
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getBean(java.lang.String)
+     */
+    @Override
+    public Object getBean(String arg0) {
+        return defaultApplicationConfiguration.getBean(arg0);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getClassificationService()
+     */
+    @Override
+    public IClassificationService getClassificationService() {
+        return new TransientClassificationService(defaultApplicationConfiguration.getClassificationService());
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCollectionService()
+     */
+    @Override
+    public ICollectionService getCollectionService() {
+        return new TransientCollectionService(defaultApplicationConfiguration.getCollectionService());
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getCommonService()
+     */
+    @Override
+    public ICommonService getCommonService() {
+        return defaultApplicationConfiguration.getCommonService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getDatabaseService()
+     */
+    @Override
+    public IDatabaseService getDatabaseService() {
+        return defaultApplicationConfiguration.getDatabaseService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getDescriptionService()
+     */
+    @Override
+    public IDescriptionService getDescriptionService() {
+        return new TransientDescriptionService(defaultApplicationConfiguration.getDescriptionService());
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getFeatureNodeService()
+     */
+    @Override
+    public IFeatureNodeService getFeatureNodeService() {
+        return defaultApplicationConfiguration.getFeatureNodeService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getFeatureTreeService()
+     */
+    @Override
+    public IFeatureTreeService getFeatureTreeService() {
+        return defaultApplicationConfiguration.getFeatureTreeService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getGrantedAuthorityService()
+     */
+    @Override
+    public IGrantedAuthorityService getGrantedAuthorityService() {
+        return defaultApplicationConfiguration.getGrantedAuthorityService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getGroupService()
+     */
+    @Override
+    public IGroupService getGroupService() {
+        return defaultApplicationConfiguration.getGroupService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getIdentificationKeyService()
+     */
+    @Override
+    public IIdentificationKeyService getIdentificationKeyService() {
+        return defaultApplicationConfiguration.getIdentificationKeyService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getLocationService()
+     */
+    @Override
+    public ILocationService getLocationService() {
+        return defaultApplicationConfiguration.getLocationService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getMainService()
+     */
+    @Override
+    public IService<CdmBase> getMainService() {
+        return defaultApplicationConfiguration.getMainService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getMediaService()
+     */
+    @Override
+    public IMediaService getMediaService() {
+        return defaultApplicationConfiguration.getMediaService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getNameService()
+     */
+    @Override
+    public INameService getNameService() {
+        return new TransientNameService(defaultApplicationConfiguration.getNameService());
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getOccurrenceService()
+     */
+    @Override
+    public IOccurrenceService getOccurrenceService() {
+        if(occurenceService==null){
+            occurenceService = new TransientOccurenceService(defaultApplicationConfiguration.getOccurrenceService());
+        }
+        return occurenceService;
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPermissionEvaluator()
+     */
+    @Override
+    public PermissionEvaluator getPermissionEvaluator() {
+        return defaultApplicationConfiguration.getPermissionEvaluator();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPolytomousKeyNodeService()
+     */
+    @Override
+    public IPolytomousKeyNodeService getPolytomousKeyNodeService() {
+        return defaultApplicationConfiguration.getPolytomousKeyNodeService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getPolytomousKeyService()
+     */
+    @Override
+    public IPolytomousKeyService getPolytomousKeyService() {
+        return defaultApplicationConfiguration.getPolytomousKeyService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getReferenceService()
+     */
+    @Override
+    public IReferenceService getReferenceService() {
+        return new TransientReferenceService(defaultApplicationConfiguration.getReferenceService());
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTaxonNodeService()
+     */
+    @Override
+    public ITaxonNodeService getTaxonNodeService() {
+        return defaultApplicationConfiguration.getTaxonNodeService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTaxonService()
+     */
+    @Override
+    public ITaxonService getTaxonService() {
+        return new TransientTaxonService(defaultApplicationConfiguration.getTaxonService());
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTermService()
+     */
+    @Override
+    public ITermService getTermService() {
+        return new TransientTermService(defaultApplicationConfiguration.getTermService());
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getTransactionManager()
+     */
+    @Override
+    public PlatformTransactionManager getTransactionManager() {
+        return defaultApplicationConfiguration.getTransactionManager();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getUserService()
+     */
+    @Override
+    public IUserService getUserService() {
+        return defaultApplicationConfiguration.getUserService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getVocabularyService()
+     */
+    @Override
+    public IVocabularyService getVocabularyService() {
+        return defaultApplicationConfiguration.getVocabularyService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#getWorkingSetService()
+     */
+    @Override
+    public IWorkingSetService getWorkingSetService() {
+        return defaultApplicationConfiguration.getWorkingSetService();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction()
+     */
+    @Override
+    public TransactionStatus startTransaction() {
+        return defaultApplicationConfiguration.startTransaction();
+    }
+
+    /**
+     * @param arg0
+     * @return
+     * @see eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration#startTransaction(java.lang.Boolean)
+     */
+    @Override
+    public TransactionStatus startTransaction(Boolean arg0) {
+        return defaultApplicationConfiguration.startTransaction(arg0);
+    }
+
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientClassificationService.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientClassificationService.java
new file mode 100644 (file)
index 0000000..856dc47
--- /dev/null
@@ -0,0 +1,922 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.transientServices;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.hibernate.LockMode;
+import org.hibernate.Session;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.envers.query.criteria.AuditCriterion;
+
+import eu.etaxonomy.cdm.api.service.IClassificationService;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.ISourceable;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.LSID;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;
+import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.view.AuditEvent;
+import eu.etaxonomy.cdm.model.view.AuditEventRecord;
+import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.query.Grouping;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.cdm.persistence.query.OrderHint;
+import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
+import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
+import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
+
+/**
+ * @author pplitzner
+ * @date 27.09.2013
+ *
+ */
+public class TransientClassificationService implements IClassificationService {
+
+    private IClassificationService defaultClassificationService;
+
+    /**
+     * @param defaultClassificationService
+     */
+    public TransientClassificationService(IClassificationService defaultClassificationService) {
+        this.defaultClassificationService = defaultClassificationService;
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<Classification>> pageAuditEvents(Classification t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultClassificationService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+    }
+
+    /**
+     * @param annotatedObj
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Annotation> getAnnotations(Classification annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultClassificationService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getTaxonNodeByUuid(java.util.UUID)
+     */
+    @Override
+    public TaxonNode getTaxonNodeByUuid(UUID uuid) {
+        return defaultClassificationService.getTaxonNodeByUuid(uuid);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getTreeNodeByUuid(java.util.UUID)
+     */
+    @Override
+    public ITaxonTreeNode getTreeNodeByUuid(UUID uuid) {
+        return defaultClassificationService.getTreeNodeByUuid(uuid);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IService#clear()
+     */
+    @Override
+    public void clear() {
+        defaultClassificationService.clear();
+    }
+
+    /**
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#listClassifications(java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Classification> listClassifications(Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultClassificationService.listClassifications(limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
+     */
+    @Override
+    public void lock(Classification t, LockMode lockMode) {
+        defaultClassificationService.lock(t, lockMode);
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @param propertyPaths
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
+     */
+    @Override
+    public void refresh(Classification t, LockMode lockMode, List<String> propertyPaths) {
+        defaultClassificationService.refresh(t, lockMode, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param classificationUuid
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadTaxonNodeByTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.UUID, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public TaxonNode loadTaxonNodeByTaxon(Taxon taxon, UUID classificationUuid, List<String> propertyPaths) {
+        return defaultClassificationService.loadTaxonNodeByTaxon(taxon, classificationUuid, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
+     */
+    @Override
+    public void updateTitleCache() {
+        defaultClassificationService.updateTitleCache();
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<Classification> getNextAuditEvent(Classification t) {
+        return defaultClassificationService.getNextAuditEvent(t);
+    }
+
+    /**
+     * @param annotatableEntity
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Marker> getMarkers(Classification annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultClassificationService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param stepSize
+     * @param cacheStrategy
+     * @param monitor
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
+     */
+    @Override
+    public void updateTitleCache(Class<? extends Classification> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<Classification> cacheStrategy, IProgressMonitor monitor) {
+        defaultClassificationService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+    }
+
+    /**
+     * @param taxonNode
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public TaxonNode loadTaxonNode(TaxonNode taxonNode, List<String> propertyPaths) {
+        return defaultClassificationService.loadTaxonNode(taxonNode, propertyPaths);
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<Classification> getPreviousAuditEvent(Classification t) {
+        return defaultClassificationService.getPreviousAuditEvent(t);
+    }
+
+    /**
+     * @param classification
+     * @param rank
+     * @param limit
+     * @param start
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public List<TaxonNode> loadRankSpecificRootNodes(Classification classification, Rank rank, Integer limit, Integer start, List<String> propertyPaths) {
+        return defaultClassificationService.loadRankSpecificRootNodes(classification, rank, limit, start, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
+     */
+    @Override
+    public int count(Class<? extends Classification> clazz) {
+        return defaultClassificationService.count(clazz);
+    }
+
+    /**
+     * @param clazz
+     * @param from
+     * @param to
+     * @param criteria
+     * @param pageSize
+     * @param pageValue
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<Classification>> pageAuditEvents(Class<? extends Classification> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultClassificationService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+    }
+
+    /**
+     * @param lsid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
+     */
+    @Override
+    public Classification find(LSID lsid) {
+        return defaultClassificationService.find(lsid);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID delete(Classification persistentObject) throws ReferencedObjectUndeletableException{
+        return defaultClassificationService.delete(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Object[]> groupMarkers(Class<? extends Classification> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultClassificationService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
+     */
+    @Override
+    public boolean exists(UUID uuid) {
+        return defaultClassificationService.exists(uuid);
+    }
+
+    /**
+     * @param x
+     * @param y
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
+     */
+    @Override
+    public Classification replace(Classification x, Classification y) {
+        return defaultClassificationService.replace(x, y);
+    }
+
+    /**
+     * @param uuidSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
+     */
+    @Override
+    public List<Classification> find(Set<UUID> uuidSet) {
+        return defaultClassificationService.find(uuidSet);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<IdentifiableSource> getSources(Classification t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultClassificationService.getSources(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param classification
+     * @param rank
+     * @param pageSize
+     * @param pageIndex
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#listRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<TaxonNode> listRankSpecificRootNodes(Classification classification, Rank rank, Integer pageSize, Integer pageIndex, List<String> propertyPaths) {
+        return defaultClassificationService.listRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
+     */
+    @Override
+    public Classification find(UUID uuid) {
+        return defaultClassificationService.find(uuid);
+    }
+
+    /**
+     * @param id
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
+     */
+    @Override
+    public Classification find(int id) {
+        return defaultClassificationService.find(id);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Rights> getRights(Classification t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultClassificationService.getRights(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
+     */
+    @Override
+    public int countMarkers(Class<? extends Classification> clazz, Boolean technical) {
+        return defaultClassificationService.countMarkers(clazz, technical);
+    }
+
+    /**
+     * @param idSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
+     */
+    @Override
+    public List<Classification> findById(Set<Integer> idSet) {
+        return defaultClassificationService.findById(idSet);
+    }
+
+    /**
+     * @param clazz
+     * @param idInSource
+     * @param idNamespace
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
+     */
+    @Override
+    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
+        return defaultClassificationService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+    }
+
+    /**
+     * @param classification
+     * @param rank
+     * @param pageSize
+     * @param pageIndex
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#pageRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<TaxonNode> pageRankSpecificRootNodes(Classification classification, Rank rank, Integer pageSize, Integer pageIndex, List<String> propertyPaths) {
+        return defaultClassificationService.pageRankSpecificRootNodes(classification, rank, pageSize, pageIndex, propertyPaths);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
+     */
+    @Override
+    public Session getSession() {
+        return defaultClassificationService.getSession();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<Classification>> getUuidAndTitleCache() {
+        return defaultClassificationService.getUuidAndTitleCache();
+    }
+
+    /**
+     * @param clazz
+     * @param limit
+     * @param start
+     * @param groups
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Object[]> group(Class<? extends Classification> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
+        return defaultClassificationService.group(clazz, limit, start, groups, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Classification> findByTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultClassificationService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxonNode
+     * @param baseRank
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadTreeBranch(eu.etaxonomy.cdm.model.taxon.TaxonNode, eu.etaxonomy.cdm.model.name.Rank, java.util.List)
+     */
+    @Override
+    public List<TaxonNode> loadTreeBranch(TaxonNode taxonNode, Rank baseRank, List<String> propertyPaths) {
+        return defaultClassificationService.loadTreeBranch(taxonNode, baseRank, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Classification> list(Class<? extends Classification> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultClassificationService.list(type, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param classification
+     * @param baseRank
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadTreeBranchToTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.util.List)
+     */
+    @Override
+    public List<TaxonNode> loadTreeBranchToTaxon(Taxon taxon, Classification classification, Rank baseRank, List<String> propertyPaths) {
+        return defaultClassificationService.loadTreeBranchToTaxon(taxon, classification, baseRank, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Pager<Classification> findByTitle(IIdentifiableEntityServiceConfigurator<Classification> configurator) {
+        return defaultClassificationService.findByTitle(configurator);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public Integer countByTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
+        return defaultClassificationService.countByTitle(clazz, queryString, matchmode, criteria);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
+     */
+    @Override
+    public Classification load(UUID uuid) {
+        return defaultClassificationService.load(uuid);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
+     */
+    @Override
+    public Classification load(UUID uuid, List<String> propertyPaths) {
+        return defaultClassificationService.load(uuid, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<Classification> configurator) {
+        return defaultClassificationService.countByTitle(configurator);
+    }
+
+    /**
+     * @param taxon
+     * @param classification
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadChildNodesOfTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List)
+     */
+    @Override
+    public List<TaxonNode> loadChildNodesOfTaxon(Taxon taxon, Classification classification, List<String> propertyPaths) {
+        return defaultClassificationService.loadChildNodesOfTaxon(taxon, classification, propertyPaths);
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public Classification merge(Classification transientObject) {
+        return defaultClassificationService.merge(transientObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Classification> listByTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultClassificationService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Classification> page(Class<? extends Classification> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultClassificationService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxonNode
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadChildNodesOfTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public List<TaxonNode> loadChildNodesOfTaxonNode(TaxonNode taxonNode, List<String> propertyPaths) {
+        return defaultClassificationService.loadChildNodesOfTaxonNode(taxonNode, propertyPaths);
+    }
+
+    /**
+     * @param classification
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(eu.etaxonomy.cdm.model.taxon.Classification)
+     */
+    @Override
+    public List<UuidAndTitleCache<TaxonNode>> getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(Classification classification) {
+        return defaultClassificationService.getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(classification);
+    }
+
+    /**
+     * @param taxon
+     * @param taxTree
+     * @param propertyPaths
+     * @param size
+     * @param height
+     * @param widthOrDuration
+     * @param mimeTypes
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List, int, int, int, java.lang.String[])
+     */
+    @Deprecated
+    @Override
+    public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(Taxon taxon, Classification taxTree, List<String> propertyPaths, int size, int height, int widthOrDuration, String[] mimeTypes) {
+        return defaultClassificationService.getAllMediaForChildNodes(taxon, taxTree, propertyPaths, size, height, widthOrDuration, mimeTypes);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID refresh(Classification persistentObject) {
+        return defaultClassificationService.refresh(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Classification> listByReferenceTitle(Class<? extends Classification> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultClassificationService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxonNode
+     * @param propertyPaths
+     * @param size
+     * @param height
+     * @param widthOrDuration
+     * @param mimeTypes
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getAllMediaForChildNodes(eu.etaxonomy.cdm.model.taxon.TaxonNode, java.util.List, int, int, int, java.lang.String[])
+     */
+    @Override
+    public Map<UUID, List<MediaRepresentation>> getAllMediaForChildNodes(TaxonNode taxonNode, List<String> propertyPaths, int size, int height, int widthOrDuration, String[] mimeTypes) {
+        return defaultClassificationService.getAllMediaForChildNodes(taxonNode, propertyPaths, size, height, widthOrDuration, mimeTypes);
+    }
+
+    /**
+     * @param tableName
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
+     */
+    @Override
+    public List<Classification> rows(String tableName, int limit, int start) {
+        return defaultClassificationService.rows(tableName, limit, start);
+    }
+
+    /**
+     * @param newInstances
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, Classification> save(Collection<Classification> newInstances) {
+        return null;
+    }
+
+    /**
+     * @param taxonNode
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#removeTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)
+     */
+    @Deprecated
+    @Override
+    public UUID removeTaxonNode(TaxonNode taxonNode) {
+        return defaultClassificationService.removeTaxonNode(taxonNode);
+    }
+
+    /**
+     * @param taxonNode
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#saveTaxonNode(eu.etaxonomy.cdm.model.taxon.TaxonNode)
+     */
+    @Deprecated
+    @Override
+    public UUID saveTaxonNode(TaxonNode taxonNode) {
+        return null;
+    }
+
+    /**
+     * @param newInstance
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID save(Classification newInstance) {
+        return null;
+    }
+
+    /**
+     * @param taxonNodeCollection
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#saveTaxonNodeAll(java.util.Collection)
+     */
+    @Deprecated
+    @Override
+    public Map<UUID, TaxonNode> saveTaxonNodeAll(Collection<TaxonNode> taxonNodeCollection) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID saveOrUpdate(Classification transientObject) {
+        return null;
+    }
+
+    /**
+     * @param treeNode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#removeTreeNode(eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode)
+     */
+    @Override
+    public UUID removeTreeNode(ITaxonTreeNode treeNode) {
+        return defaultClassificationService.removeTreeNode(treeNode);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Classification> search(Class<? extends Classification> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultClassificationService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param treeNode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#saveTreeNode(eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode)
+     */
+    @Override
+    public UUID saveTreeNode(ITaxonTreeNode treeNode) {
+        return null;
+    }
+
+    /**
+     * @param transientObjects
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, Classification> saveOrUpdate(Collection<Classification> transientObjects) {
+        return null;
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IClassificationService#getAllNodes()
+     */
+    @Override
+    public List<TaxonNode> getAllNodes() {
+        return defaultClassificationService.getAllNodes();
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID update(Classification transientObject) {
+        return defaultClassificationService.update(transientObject);
+    }
+
+    /**
+     * @param example
+     * @param includeProperties
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Classification> list(Classification example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultClassificationService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param matchStrategy
+     * @param mergeStrategy
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
+     */
+    @Override
+    public int deduplicate(Class<? extends Classification> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
+        return defaultClassificationService.deduplicate(clazz, matchStrategy, mergeStrategy);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param matchMode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
+     */
+    @Override
+    public Pager<Classification> findTitleCache(Class<? extends Classification> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
+        return defaultClassificationService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+    }
+
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientCollectionService.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientCollectionService.java
new file mode 100644 (file)
index 0000000..4179564
--- /dev/null
@@ -0,0 +1,660 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.transientServices;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.hibernate.LockMode;
+import org.hibernate.Session;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.envers.query.criteria.AuditCriterion;
+
+import eu.etaxonomy.cdm.api.service.ICollectionService;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.ISourceable;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.LSID;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
+import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.cdm.model.view.AuditEvent;
+import eu.etaxonomy.cdm.model.view.AuditEventRecord;
+import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.query.Grouping;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.cdm.persistence.query.OrderHint;
+import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
+import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
+import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
+
+/**
+ * @author pplitzner
+ * @date 27.09.2013
+ *
+ */
+public class TransientCollectionService implements ICollectionService {
+
+    private ICollectionService defaultCollectionService;
+
+    /**
+     * @param defaultCollectionService
+     */
+    public TransientCollectionService(ICollectionService defaultCollectionService) {
+        this.defaultCollectionService = defaultCollectionService;
+    }
+
+    /**
+     * @param clazz
+     * @param query
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ICollectionService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Collection> search(Class<? extends Collection> clazz, String query, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultCollectionService.search(clazz, query, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<Collection>> pageAuditEvents(Collection t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultCollectionService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+    }
+
+    /**
+     * @param annotatedObj
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Annotation> getAnnotations(Collection annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultCollectionService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IService#clear()
+     */
+    @Override
+    public void clear() {
+        defaultCollectionService.clear();
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
+     */
+    @Override
+    public void lock(Collection t, LockMode lockMode) {
+        defaultCollectionService.lock(t, lockMode);
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @param propertyPaths
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
+     */
+    @Override
+    public void refresh(Collection t, LockMode lockMode, List<String> propertyPaths) {
+        defaultCollectionService.refresh(t, lockMode, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
+     */
+    @Override
+    public void updateTitleCache() {
+        defaultCollectionService.updateTitleCache();
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<Collection> getNextAuditEvent(Collection t) {
+        return defaultCollectionService.getNextAuditEvent(t);
+    }
+
+    /**
+     * @param code
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ICollectionService#searchByCode(java.lang.String)
+     */
+    @Override
+    public List<Collection> searchByCode(String code) {
+        return defaultCollectionService.searchByCode(code);
+    }
+
+    /**
+     * @param annotatableEntity
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Marker> getMarkers(Collection annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultCollectionService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param stepSize
+     * @param cacheStrategy
+     * @param monitor
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
+     */
+    @Override
+    public void updateTitleCache(Class<? extends Collection> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<Collection> cacheStrategy, IProgressMonitor monitor) {
+        defaultCollectionService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<Collection> getPreviousAuditEvent(Collection t) {
+        return defaultCollectionService.getPreviousAuditEvent(t);
+    }
+
+    /**
+     * @param clazz
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
+     */
+    @Override
+    public int count(Class<? extends Collection> clazz) {
+        return defaultCollectionService.count(clazz);
+    }
+
+    /**
+     * @param clazz
+     * @param from
+     * @param to
+     * @param criteria
+     * @param pageSize
+     * @param pageValue
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<Collection>> pageAuditEvents(Class<? extends Collection> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultCollectionService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+    }
+
+    /**
+     * @param lsid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
+     */
+    @Override
+    public Collection find(LSID lsid) {
+        return defaultCollectionService.find(lsid);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID delete(Collection persistentObject) throws ReferencedObjectUndeletableException{
+        return defaultCollectionService.delete(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Object[]> groupMarkers(Class<? extends Collection> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultCollectionService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
+     */
+    @Override
+    public boolean exists(UUID uuid) {
+        return defaultCollectionService.exists(uuid);
+    }
+
+    /**
+     * @param x
+     * @param y
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
+     */
+    @Override
+    public Collection replace(Collection x, Collection y) {
+        return defaultCollectionService.replace(x, y);
+    }
+
+    /**
+     * @param uuidSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
+     */
+    @Override
+    public List<Collection> find(Set<UUID> uuidSet) {
+        return defaultCollectionService.find(uuidSet);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<IdentifiableSource> getSources(Collection t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultCollectionService.getSources(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
+     */
+    @Override
+    public Collection find(UUID uuid) {
+        return defaultCollectionService.find(uuid);
+    }
+
+    /**
+     * @param id
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
+     */
+    @Override
+    public Collection find(int id) {
+        return defaultCollectionService.find(id);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Rights> getRights(Collection t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultCollectionService.getRights(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
+     */
+    @Override
+    public int countMarkers(Class<? extends Collection> clazz, Boolean technical) {
+        return defaultCollectionService.countMarkers(clazz, technical);
+    }
+
+    /**
+     * @param idSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
+     */
+    @Override
+    public List<Collection> findById(Set<Integer> idSet) {
+        return defaultCollectionService.findById(idSet);
+    }
+
+    /**
+     * @param clazz
+     * @param idInSource
+     * @param idNamespace
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
+     */
+    @Override
+    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
+        return defaultCollectionService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
+     */
+    @Override
+    public Session getSession() {
+        return defaultCollectionService.getSession();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<Collection>> getUuidAndTitleCache() {
+        return defaultCollectionService.getUuidAndTitleCache();
+    }
+
+    /**
+     * @param clazz
+     * @param limit
+     * @param start
+     * @param groups
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Object[]> group(Class<? extends Collection> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
+        return defaultCollectionService.group(clazz, limit, start, groups, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Collection> findByTitle(Class<? extends Collection> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultCollectionService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Collection> list(Class<? extends Collection> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultCollectionService.list(type, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Pager<Collection> findByTitle(IIdentifiableEntityServiceConfigurator<Collection> configurator) {
+        return defaultCollectionService.findByTitle(configurator);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public Integer countByTitle(Class<? extends Collection> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
+        return defaultCollectionService.countByTitle(clazz, queryString, matchmode, criteria);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
+     */
+    @Override
+    public Collection load(UUID uuid) {
+        return defaultCollectionService.load(uuid);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
+     */
+    @Override
+    public Collection load(UUID uuid, List<String> propertyPaths) {
+        return defaultCollectionService.load(uuid, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<Collection> configurator) {
+        return defaultCollectionService.countByTitle(configurator);
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public Collection merge(Collection transientObject) {
+        return defaultCollectionService.merge(transientObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Collection> listByTitle(Class<? extends Collection> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultCollectionService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Collection> page(Class<? extends Collection> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultCollectionService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID refresh(Collection persistentObject) {
+        return defaultCollectionService.refresh(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Collection> listByReferenceTitle(Class<? extends Collection> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultCollectionService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param tableName
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
+     */
+    @Override
+    public List<Collection> rows(String tableName, int limit, int start) {
+        return defaultCollectionService.rows(tableName, limit, start);
+    }
+
+    /**
+     * @param newInstances
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, Collection> save(java.util.Collection<Collection> newInstances) {
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID save(Collection newInstance) {
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID saveOrUpdate(Collection transientObject) {
+        return null;
+    }
+
+    /**
+     * @param transientObjects
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, Collection> saveOrUpdate(java.util.Collection<Collection> transientObjects) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID update(Collection transientObject) {
+        return defaultCollectionService.update(transientObject);
+    }
+
+    /**
+     * @param example
+     * @param includeProperties
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Collection> list(Collection example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultCollectionService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param matchStrategy
+     * @param mergeStrategy
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
+     */
+    @Override
+    public int deduplicate(Class<? extends Collection> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
+        return defaultCollectionService.deduplicate(clazz, matchStrategy, mergeStrategy);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param matchMode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
+     */
+    @Override
+    public Pager<Collection> findTitleCache(Class<? extends Collection> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
+        return defaultCollectionService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+    }
+
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientDescriptionService.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientDescriptionService.java
new file mode 100644 (file)
index 0000000..2837c7c
--- /dev/null
@@ -0,0 +1,1099 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.transientServices;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.hibernate.LockMode;
+import org.hibernate.Session;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.envers.query.criteria.AuditCriterion;
+
+import eu.etaxonomy.cdm.api.service.DistributionTree;
+import eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.common.ISourceable;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.LSID;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
+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.FeatureTree;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.view.AuditEvent;
+import eu.etaxonomy.cdm.model.view.AuditEventRecord;
+import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.query.Grouping;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.cdm.persistence.query.OrderHint;
+import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
+import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
+import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
+
+/**
+ * @author pplitzner
+ * @date 27.09.2013
+ *
+ */
+public class TransientDescriptionService implements IDescriptionService {
+
+    private IDescriptionService defaultDescriptionService;
+
+    /**
+     * @param defaultDescriptionService
+     */
+    public TransientDescriptionService(IDescriptionService defaultDescriptionService) {
+        this.defaultDescriptionService = defaultDescriptionService;
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<DescriptionBase>> pageAuditEvents(DescriptionBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultDescriptionService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+    }
+
+    /**
+     * @param annotatedObj
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Annotation> getAnnotations(DescriptionBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IService#clear()
+     */
+    @Override
+    public void clear() {
+        defaultDescriptionService.clear();
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
+     */
+    @Override
+    public void lock(DescriptionBase t, LockMode lockMode) {
+        defaultDescriptionService.lock(t, lockMode);
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @param propertyPaths
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
+     */
+    @Override
+    public void refresh(DescriptionBase t, LockMode lockMode, List<String> propertyPaths) {
+        defaultDescriptionService.refresh(t, lockMode, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
+     */
+    @Override
+    public void updateTitleCache() {
+        defaultDescriptionService.updateTitleCache();
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<DescriptionBase> getNextAuditEvent(DescriptionBase t) {
+        return defaultDescriptionService.getNextAuditEvent(t);
+    }
+
+    /**
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getDefaultFeatureVocabulary()
+     */
+    @Deprecated
+    @Override
+    public TermVocabulary<Feature> getDefaultFeatureVocabulary() {
+        return defaultDescriptionService.getDefaultFeatureVocabulary();
+    }
+
+    /**
+     * @param annotatableEntity
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Marker> getMarkers(DescriptionBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getFeatureVocabulary(java.util.UUID)
+     */
+    @Deprecated
+    @Override
+    public TermVocabulary<Feature> getFeatureVocabulary(UUID uuid) {
+        return defaultDescriptionService.getFeatureVocabulary(uuid);
+    }
+
+    /**
+     * @param clazz
+     * @param stepSize
+     * @param cacheStrategy
+     * @param monitor
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
+     */
+    @Override
+    public void updateTitleCache(Class<? extends DescriptionBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<DescriptionBase> cacheStrategy, IProgressMonitor monitor) {
+        defaultDescriptionService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<DescriptionBase> getPreviousAuditEvent(DescriptionBase t) {
+        return defaultDescriptionService.getPreviousAuditEvent(t);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getDescriptionElementByUuid(java.util.UUID)
+     */
+    @Override
+    public DescriptionElementBase getDescriptionElementByUuid(UUID uuid) {
+        return defaultDescriptionService.getDescriptionElementByUuid(uuid);
+    }
+
+    /**
+     * @param clazz
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
+     */
+    @Override
+    public int count(Class<? extends DescriptionBase> clazz) {
+        return defaultDescriptionService.count(clazz);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#loadDescriptionElement(java.util.UUID, java.util.List)
+     */
+    @Override
+    public DescriptionElementBase loadDescriptionElement(UUID uuid, List<String> propertyPaths) {
+        return defaultDescriptionService.loadDescriptionElement(uuid, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param from
+     * @param to
+     * @param criteria
+     * @param pageSize
+     * @param pageValue
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<DescriptionBase>> pageAuditEvents(Class<? extends DescriptionBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultDescriptionService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+    }
+
+    /**
+     * @param lsid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
+     */
+    @Override
+    public DescriptionBase find(LSID lsid) {
+        return defaultDescriptionService.find(lsid);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID delete(DescriptionBase persistentObject) throws ReferencedObjectUndeletableException{
+        return defaultDescriptionService.delete(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Object[]> groupMarkers(Class<? extends DescriptionBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
+     */
+    @Override
+    public boolean exists(UUID uuid) {
+        return defaultDescriptionService.exists(uuid);
+    }
+
+    /**
+     * @param x
+     * @param y
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
+     */
+    @Override
+    public DescriptionBase replace(DescriptionBase x, DescriptionBase y) {
+        return defaultDescriptionService.replace(x, y);
+    }
+
+    /**
+     * @param descriptionElement
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#saveDescriptionElement(eu.etaxonomy.cdm.model.description.DescriptionElementBase)
+     */
+    @Override
+    public UUID saveDescriptionElement(DescriptionElementBase descriptionElement) {
+        return null;
+    }
+
+    /**
+     * @param uuidSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
+     */
+    @Override
+    public List<DescriptionBase> find(Set<UUID> uuidSet) {
+        return defaultDescriptionService.find(uuidSet);
+    }
+
+    /**
+     * @param descriptionElements
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#saveDescriptionElement(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, DescriptionElementBase> saveDescriptionElement(Collection<DescriptionElementBase> descriptionElements) {
+        return null;
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<IdentifiableSource> getSources(DescriptionBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.getSources(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param descriptionElement
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#deleteDescriptionElement(eu.etaxonomy.cdm.model.description.DescriptionElementBase)
+     */
+    @Override
+    public UUID deleteDescriptionElement(DescriptionElementBase descriptionElement) {
+        return defaultDescriptionService.deleteDescriptionElement(descriptionElement);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
+     */
+    @Override
+    public DescriptionBase find(UUID uuid) {
+        return defaultDescriptionService.find(uuid);
+    }
+
+    /**
+     * @param type
+     * @param hasMedia
+     * @param hasText
+     * @param feature
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#page(java.lang.Class, java.lang.Boolean, java.lang.Boolean, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<DescriptionBase> page(Class<? extends DescriptionBase> type, Boolean hasMedia, Boolean hasText, Set<Feature> feature, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.page(type, hasMedia, hasText, feature, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param id
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
+     */
+    @Override
+    public DescriptionBase find(int id) {
+        return defaultDescriptionService.find(id);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Rights> getRights(DescriptionBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.getRights(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
+     */
+    @Override
+    public int countMarkers(Class<? extends DescriptionBase> clazz, Boolean technical) {
+        return defaultDescriptionService.countMarkers(clazz, technical);
+    }
+
+    /**
+     * @param idSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
+     */
+    @Override
+    public List<DescriptionBase> findById(Set<Integer> idSet) {
+        return defaultDescriptionService.findById(idSet);
+    }
+
+    /**
+     * @param clazz
+     * @param idInSource
+     * @param idNamespace
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
+     */
+    @Override
+    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
+        return defaultDescriptionService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
+     */
+    @Override
+    public Session getSession() {
+        return defaultDescriptionService.getSession();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<DescriptionBase>> getUuidAndTitleCache() {
+        return defaultDescriptionService.getUuidAndTitleCache();
+    }
+
+    /**
+     * @param clazz
+     * @param limit
+     * @param start
+     * @param groups
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Object[]> group(Class<? extends DescriptionBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
+        return defaultDescriptionService.group(clazz, limit, start, groups, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param hasImages
+     * @param hasText
+     * @param feature
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#count(java.lang.Class, java.lang.Boolean, java.lang.Boolean, java.util.Set)
+     */
+    @Override
+    public int count(Class<? extends DescriptionBase> type, Boolean hasImages, Boolean hasText, Set<Feature> feature) {
+        return defaultDescriptionService.count(type, hasImages, hasText, feature);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<DescriptionBase> findByTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<DescriptionBase> list(Class<? extends DescriptionBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.list(type, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param description
+     * @param features
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getDescriptionElements(eu.etaxonomy.cdm.model.description.DescriptionBase, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public Pager<DescriptionElementBase> getDescriptionElements(DescriptionBase description, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.getDescriptionElements(description, features, type, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Pager<DescriptionBase> findByTitle(IIdentifiableEntityServiceConfigurator<DescriptionBase> configurator) {
+        return defaultDescriptionService.findByTitle(configurator);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public Integer countByTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
+        return defaultDescriptionService.countByTitle(clazz, queryString, matchmode, criteria);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
+     */
+    @Override
+    public DescriptionBase load(UUID uuid) {
+        return defaultDescriptionService.load(uuid);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
+     */
+    @Override
+    public DescriptionBase load(UUID uuid, List<String> propertyPaths) {
+        return defaultDescriptionService.load(uuid, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<DescriptionBase> configurator) {
+        return defaultDescriptionService.countByTitle(configurator);
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public DescriptionBase merge(DescriptionBase transientObject) {
+        return defaultDescriptionService.merge(transientObject);
+    }
+
+    /**
+     * @param description
+     * @param descriptionType
+     * @param features
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageDescriptionElements(eu.etaxonomy.cdm.model.description.DescriptionBase, java.lang.Class, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<DescriptionElementBase> pageDescriptionElements(DescriptionBase description, Class<? extends DescriptionBase> descriptionType, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.pageDescriptionElements(description, descriptionType, features, type, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<DescriptionBase> listByTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<DescriptionBase> page(Class<? extends DescriptionBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID refresh(DescriptionBase persistentObject) {
+        return defaultDescriptionService.refresh(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<DescriptionBase> listByReferenceTitle(Class<? extends DescriptionBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param description
+     * @param features
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listDescriptionElements(eu.etaxonomy.cdm.model.description.DescriptionBase, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public List<DescriptionElementBase> listDescriptionElements(DescriptionBase description, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.listDescriptionElements(description, features, type, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param tableName
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
+     */
+    @Override
+    public List<DescriptionBase> rows(String tableName, int limit, int start) {
+        return defaultDescriptionService.rows(tableName, limit, start);
+    }
+
+    /**
+     * @param newInstances
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, DescriptionBase> save(Collection<DescriptionBase> newInstances) {
+        return null;
+    }
+
+    /**
+     * @param newInstance
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID save(DescriptionBase newInstance) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID saveOrUpdate(DescriptionBase transientObject) {
+        return null;
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<DescriptionBase> search(Class<? extends DescriptionBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param transientObjects
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, DescriptionBase> saveOrUpdate(Collection<DescriptionBase> transientObjects) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID update(DescriptionBase transientObject) {
+        return defaultDescriptionService.update(transientObject);
+    }
+
+    /**
+     * @param description
+     * @param descriptionType
+     * @param features
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listDescriptionElements(eu.etaxonomy.cdm.model.description.DescriptionBase, java.lang.Class, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<DescriptionElementBase> listDescriptionElements(DescriptionBase description, Class<? extends DescriptionBase> descriptionType, Set<Feature> features, Class<? extends DescriptionElementBase> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.listDescriptionElements(description, descriptionType, features, type, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param example
+     * @param includeProperties
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<DescriptionBase> list(DescriptionBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param matchStrategy
+     * @param mergeStrategy
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
+     */
+    @Override
+    public int deduplicate(Class<? extends DescriptionBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
+        return defaultDescriptionService.deduplicate(clazz, matchStrategy, mergeStrategy);
+    }
+
+    /**
+     * @param annotatedObj
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getDescriptionElementAnnotations(eu.etaxonomy.cdm.model.description.DescriptionElementBase, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Annotation> getDescriptionElementAnnotations(DescriptionElementBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.getDescriptionElementAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param matchMode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
+     */
+    @Override
+    public Pager<DescriptionBase> findTitleCache(Class<? extends DescriptionBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
+        return defaultDescriptionService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+    }
+
+    /**
+     * @param taxon
+     * @param scopes
+     * @param geographicalScope
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageTaxonDescriptions(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<TaxonDescription> pageTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.pageTaxonDescriptions(taxon, scopes, geographicalScope, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param scopes
+     * @param geographicalScope
+     * @param markerTypes
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageTaxonDescriptions(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.util.Set, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<TaxonDescription> pageTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Set<MarkerType> markerTypes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.pageTaxonDescriptions(taxon, scopes, geographicalScope, markerTypes, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param scopes
+     * @param geographicalScope
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listTaxonDescriptions(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<TaxonDescription> listTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.listTaxonDescriptions(taxon, scopes, geographicalScope, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param scopes
+     * @param geographicalScope
+     * @param markerTypes
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listTaxonDescriptions(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.util.Set, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<TaxonDescription> listTaxonDescriptions(Taxon taxon, Set<DefinedTerm> scopes, Set<NamedArea> geographicalScope, Set<MarkerType> markerTypes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.listTaxonDescriptions(taxon, scopes, geographicalScope, markerTypes, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param taxonUuid
+     * @param limitToGalleries
+     * @param markerTypes
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listTaxonDescriptionMedia(java.util.UUID, boolean, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Media> listTaxonDescriptionMedia(UUID taxonUuid, boolean limitToGalleries, Set<MarkerType> markerTypes, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.listTaxonDescriptionMedia(taxonUuid, limitToGalleries, markerTypes, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param taxonUuid
+     * @param limitToGalleries
+     * @param markerTypes
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#countTaxonDescriptionMedia(java.util.UUID, boolean, java.util.Set)
+     */
+    @Override
+    public int countTaxonDescriptionMedia(UUID taxonUuid, boolean limitToGalleries, Set<MarkerType> markerTypes) {
+        return defaultDescriptionService.countTaxonDescriptionMedia(taxonUuid, limitToGalleries, markerTypes);
+    }
+
+    /**
+     * @param name
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getTaxonNameDescriptions(eu.etaxonomy.cdm.model.name.TaxonNameBase, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<TaxonNameDescription> getTaxonNameDescriptions(TaxonNameBase name, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.getTaxonNameDescriptions(name, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param namedAreas
+     * @param presence
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#searchDescriptionByDistribution(java.util.Set, eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonDescription> searchDescriptionByDistribution(Set<NamedArea> namedAreas, PresenceAbsenceTermBase presence, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.searchDescriptionByDistribution(namedAreas, presence, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#searchElements(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<DescriptionElementBase> searchElements(Class<? extends DescriptionElementBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultDescriptionService.searchElements(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param descriptionElement
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getMedia(eu.etaxonomy.cdm.model.description.DescriptionElementBase, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Media> getMedia(DescriptionElementBase descriptionElement, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.getMedia(descriptionElement, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param features
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getDescriptionElementsForTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public <T extends DescriptionElementBase> List<T> getDescriptionElementsForTaxon(Taxon taxon, Set<Feature> features, Class<T> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.getDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param features
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#listDescriptionElementsForTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public <T extends DescriptionElementBase> List<T> listDescriptionElementsForTaxon(Taxon taxon, Set<Feature> features, Class<T> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.listDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param features
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageDescriptionElementsForTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public <T extends DescriptionElementBase> Pager<T> pageDescriptionElementsForTaxon(Taxon taxon, Set<Feature> features, Class<T> type, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.pageDescriptionElementsForTaxon(taxon, features, type, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param featureTree
+     * @param description
+     * @param preferredLanguages
+     * @param separator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#generateNaturalLanguageDescription(eu.etaxonomy.cdm.model.description.FeatureTree, eu.etaxonomy.cdm.model.description.TaxonDescription, java.util.List, java.lang.String)
+     */
+    @Override
+    public String generateNaturalLanguageDescription(FeatureTree featureTree, TaxonDescription description, List<Language> preferredLanguages, String separator) {
+        return defaultDescriptionService.generateNaturalLanguageDescription(featureTree, description, preferredLanguages, separator);
+    }
+
+    /**
+     * @param description
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#hasStructuredData(eu.etaxonomy.cdm.model.description.DescriptionBase)
+     */
+    @Deprecated
+    @Override
+    public boolean hasStructuredData(DescriptionBase<?> description) {
+        return defaultDescriptionService.hasStructuredData(description);
+    }
+
+    /**
+     * @param descriptionElements
+     * @param targetDescription
+     * @param isPaste
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#moveDescriptionElementsToDescription(java.util.Collection, eu.etaxonomy.cdm.model.description.DescriptionBase, boolean)
+     */
+    @Override
+    public void moveDescriptionElementsToDescription(Collection<DescriptionElementBase> descriptionElements, DescriptionBase targetDescription, boolean isPaste) {
+        defaultDescriptionService.moveDescriptionElementsToDescription(descriptionElements, targetDescription, isPaste);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#pageNamedAreasInUse(java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<NamedArea> pageNamedAreasInUse(Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultDescriptionService.pageNamedAreasInUse(pageSize, pageNumber, propertyPaths);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.IDescriptionService#getOrderedDistributions(java.util.Set, boolean, boolean, java.util.Set, java.util.List)
+     */
+    @Override
+    public DistributionTree getOrderedDistributions(Set<TaxonDescription> taxonDescriptions, boolean subAreaPreference, boolean statusOrderPreference, Set<NamedAreaLevel> omitLevels, List<String> propertyPaths) {
+        // TODO Auto-generated method stub
+        return defaultDescriptionService.getOrderedDistributions(taxonDescriptions, subAreaPreference, statusOrderPreference, omitLevels, propertyPaths);
+    }
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientNameService.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientNameService.java
new file mode 100644 (file)
index 0000000..13f889c
--- /dev/null
@@ -0,0 +1,1194 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.transientServices;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.queryParser.ParseException;
+import org.hibernate.LockMode;
+import org.hibernate.Session;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.envers.query.criteria.AuditCriterion;
+
+import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.api.service.search.DocumentSearchResult;
+import eu.etaxonomy.cdm.api.service.search.SearchResult;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.ISourceable;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.LSID;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
+import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
+import eu.etaxonomy.cdm.model.common.RelationshipBase;
+import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
+import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
+import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
+import eu.etaxonomy.cdm.model.name.HybridRelationship;
+import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
+import eu.etaxonomy.cdm.model.name.NameRelationship;
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
+import eu.etaxonomy.cdm.model.name.NonViralName;
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
+import eu.etaxonomy.cdm.model.view.AuditEvent;
+import eu.etaxonomy.cdm.model.view.AuditEventRecord;
+import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.query.Grouping;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.cdm.persistence.query.OrderHint;
+import eu.etaxonomy.cdm.strategy.cache.TaggedText;
+import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
+import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
+import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
+
+/**
+ * @author pplitzner
+ * @date 27.09.2013
+ *
+ */
+public class TransientNameService implements INameService {
+
+    private INameService defaultNameService;
+
+    /**
+     *
+     */
+    public TransientNameService(INameService defaultNameService) {
+        this.defaultNameService = defaultNameService;
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<TaxonNameBase>> pageAuditEvents(TaxonNameBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultNameService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+    }
+
+    /**
+     * @param annotatedObj
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Annotation> getAnnotations(TaxonNameBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IService#clear()
+     */
+    @Override
+    public void clear() {
+        defaultNameService.clear();
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
+     */
+    @Override
+    public void lock(TaxonNameBase t, LockMode lockMode) {
+        defaultNameService.lock(t, lockMode);
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @param propertyPaths
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
+     */
+    @Override
+    public void refresh(TaxonNameBase t, LockMode lockMode, List<String> propertyPaths) {
+        defaultNameService.refresh(t, lockMode, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
+     */
+    @Override
+    public void updateTitleCache() {
+        defaultNameService.updateTitleCache();
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<TaxonNameBase> getNextAuditEvent(TaxonNameBase t) {
+        return defaultNameService.getNextAuditEvent(t);
+    }
+
+    /**
+     * @param annotatableEntity
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Marker> getMarkers(TaxonNameBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param stepSize
+     * @param cacheStrategy
+     * @param monitor
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
+     */
+    @Override
+    public void updateTitleCache(Class<? extends TaxonNameBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<TaxonNameBase> cacheStrategy, IProgressMonitor monitor) {
+        defaultNameService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<TaxonNameBase> getPreviousAuditEvent(TaxonNameBase t) {
+        return defaultNameService.getPreviousAuditEvent(t);
+    }
+
+    /**
+     * @param clazz
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
+     */
+    @Override
+    public int count(Class<? extends TaxonNameBase> clazz) {
+        return defaultNameService.count(clazz);
+    }
+
+    /**
+     * @param name
+     * @param config
+     * @return
+     * @throws ReferencedObjectUndeletableException
+     * @see eu.etaxonomy.cdm.api.service.INameService#delete(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.api.service.config.NameDeletionConfigurator)
+     */
+    @Override
+    public UUID delete(TaxonNameBase name, NameDeletionConfigurator config) throws ReferencedObjectUndeletableException {
+        return defaultNameService.delete(name, config);
+    }
+
+    /**
+     * @param clazz
+     * @param from
+     * @param to
+     * @param criteria
+     * @param pageSize
+     * @param pageValue
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<TaxonNameBase>> pageAuditEvents(Class<? extends TaxonNameBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultNameService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+    }
+
+    /**
+     * @param lsid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
+     */
+    @Override
+    public TaxonNameBase find(LSID lsid) {
+        return defaultNameService.find(lsid);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID delete(TaxonNameBase persistentObject) throws ReferencedObjectUndeletableException{
+        return defaultNameService.delete(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Object[]> groupMarkers(Class<? extends TaxonNameBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultNameService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
+     */
+    @Override
+    public boolean exists(UUID uuid) {
+        return defaultNameService.exists(uuid);
+    }
+
+    /**
+     * @param name
+     * @param typeDesignation
+     * @see eu.etaxonomy.cdm.api.service.INameService#deleteTypeDesignation(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.TypeDesignationBase)
+     */
+    @Override
+    public void deleteTypeDesignation(TaxonNameBase name, TypeDesignationBase typeDesignation) {
+        defaultNameService.deleteTypeDesignation(name, typeDesignation);
+    }
+
+    /**
+     * @param x
+     * @param y
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
+     */
+    @Override
+    public TaxonNameBase replace(TaxonNameBase x, TaxonNameBase y) {
+        return defaultNameService.replace(x, y);
+    }
+
+    /**
+     * @param uuidSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
+     */
+    @Override
+    public List<TaxonNameBase> find(Set<UUID> uuidSet) {
+        return defaultNameService.find(uuidSet);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<IdentifiableSource> getSources(TaxonNameBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultNameService.getSources(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param typeDesignationCollection
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#saveTypeDesignationAll(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, TypeDesignationBase> saveTypeDesignationAll(Collection<TypeDesignationBase> typeDesignationCollection) {
+        return null;
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
+     */
+    @Override
+    public TaxonNameBase find(UUID uuid) {
+        return defaultNameService.find(uuid);
+    }
+
+    /**
+     * @param referencedEntityCollection
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#saveReferencedEntitiesAll(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, ReferencedEntityBase> saveReferencedEntitiesAll(Collection<ReferencedEntityBase> referencedEntityCollection) {
+        return null;
+    }
+
+    /**
+     * @param homotypicalGroups
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#saveAllHomotypicalGroups(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, HomotypicalGroup> saveAllHomotypicalGroups(Collection<HomotypicalGroup> homotypicalGroups) {
+        return null;
+    }
+
+    /**
+     * @param id
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
+     */
+    @Override
+    public TaxonNameBase find(int id) {
+        return defaultNameService.find(id);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Rights> getRights(TaxonNameBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultNameService.getRights(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
+     */
+    @Override
+    public int countMarkers(Class<? extends TaxonNameBase> clazz, Boolean technical) {
+        return defaultNameService.countMarkers(clazz, technical);
+    }
+
+    /**
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getAllNomenclaturalStatus(int, int)
+     */
+    @Override
+    public List<NomenclaturalStatus> getAllNomenclaturalStatus(int limit, int start) {
+        return defaultNameService.getAllNomenclaturalStatus(limit, start);
+    }
+
+    /**
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getAllTypeDesignations(int, int)
+     */
+    @Override
+    public List<TypeDesignationBase> getAllTypeDesignations(int limit, int start) {
+        return defaultNameService.getAllTypeDesignations(limit, start);
+    }
+
+    /**
+     * @param idSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
+     */
+    @Override
+    public List<TaxonNameBase> findById(Set<Integer> idSet) {
+        return defaultNameService.findById(idSet);
+    }
+
+    /**
+     * @param name
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getNamesByName(java.lang.String)
+     */
+    @Override
+    public List<TaxonNameBase> getNamesByName(String name) {
+        return defaultNameService.getNamesByName(name);
+    }
+
+    /**
+     * @param nameCache
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getNamesByNameCache(java.lang.String)
+     */
+    @Override
+    public List<NonViralName> getNamesByNameCache(String nameCache) {
+        return defaultNameService.getNamesByNameCache(nameCache);
+    }
+
+    /**
+     * @param clazz
+     * @param idInSource
+     * @param idNamespace
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
+     */
+    @Override
+    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
+        return defaultNameService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
+     */
+    @Override
+    public Session getSession() {
+        return defaultNameService.getSession();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<TaxonNameBase>> getUuidAndTitleCache() {
+        return defaultNameService.getUuidAndTitleCache();
+    }
+
+    /**
+     * @param clazz
+     * @param limit
+     * @param start
+     * @param groups
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Object[]> group(Class<? extends TaxonNameBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
+        return defaultNameService.group(clazz, limit, start, groups, propertyPaths);
+    }
+
+    /**
+     * @param titleCache
+     * @param matchMode
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#findNamesByTitleCache(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public List<NonViralName> findNamesByTitleCache(String titleCache, MatchMode matchMode, List<String> propertyPaths) {
+        return defaultNameService.findNamesByTitleCache(titleCache, matchMode, propertyPaths);
+    }
+
+    /**
+     * @param nameCache
+     * @param matchMode
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#findNamesByNameCache(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public List<NonViralName> findNamesByNameCache(String nameCache, MatchMode matchMode, List<String> propertyPaths) {
+        return defaultNameService.findNamesByNameCache(nameCache, matchMode, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonNameBase> findByTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#findNameByUuid(java.util.UUID, java.util.List)
+     */
+    @Override
+    public NonViralName findNameByUuid(UUID uuid, List<String> propertyPaths) {
+        return defaultNameService.findNameByUuid(uuid, propertyPaths);
+    }
+
+    /**
+     * @param name
+     * @param sessionObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getNamesByName(java.lang.String, eu.etaxonomy.cdm.model.common.CdmBase)
+     */
+    @Override
+    public List getNamesByName(String name, CdmBase sessionObject) {
+        return defaultNameService.getNamesByName(name, sessionObject);
+    }
+
+    /**
+     * @param name
+     * @param accuracy
+     * @param languages
+     * @param highlightFragments
+     * @param propertyPaths
+     * @param maxNoOfResults
+     * @return
+     * @throws CorruptIndexException
+     * @throws IOException
+     * @throws ParseException
+     * @see eu.etaxonomy.cdm.api.service.INameService#findByNameFuzzySearch(java.lang.String, float, java.util.List, boolean, java.util.List, int)
+     */
+    @Override
+    public List<SearchResult<TaxonNameBase>> findByNameFuzzySearch(String name, float accuracy, List<Language> languages, boolean highlightFragments, List<String> propertyPaths, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
+        return defaultNameService.findByNameFuzzySearch(name, accuracy, languages, highlightFragments, propertyPaths, maxNoOfResults);
+    }
+
+    /**
+     * @param type
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<TaxonNameBase> list(Class<? extends TaxonNameBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.list(type, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Pager<TaxonNameBase> findByTitle(IIdentifiableEntityServiceConfigurator<TaxonNameBase> configurator) {
+        return defaultNameService.findByTitle(configurator);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public Integer countByTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
+        return defaultNameService.countByTitle(clazz, queryString, matchmode, criteria);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
+     */
+    @Override
+    public TaxonNameBase load(UUID uuid) {
+        return defaultNameService.load(uuid);
+    }
+
+    /**
+     * @param name
+     * @param accuracy
+     * @param languages
+     * @param highlightFragments
+     * @param maxNoOfResults
+     * @return
+     * @throws CorruptIndexException
+     * @throws IOException
+     * @throws ParseException
+     * @see eu.etaxonomy.cdm.api.service.INameService#findByNameFuzzySearch(java.lang.String, float, java.util.List, boolean, int)
+     */
+    @Override
+    public List<DocumentSearchResult> findByNameFuzzySearch(String name, float accuracy, List<Language> languages, boolean highlightFragments, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
+        return defaultNameService.findByNameFuzzySearch(name, accuracy, languages, highlightFragments, maxNoOfResults);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
+     */
+    @Override
+    public TaxonNameBase load(UUID uuid, List<String> propertyPaths) {
+        return defaultNameService.load(uuid, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<TaxonNameBase> configurator) {
+        return defaultNameService.countByTitle(configurator);
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public TaxonNameBase merge(TaxonNameBase transientObject) {
+        return defaultNameService.merge(transientObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<TaxonNameBase> listByTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonNameBase> page(Class<? extends TaxonNameBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param name
+     * @param accuracy
+     * @param languages
+     * @param highlightFragments
+     * @param maxNoOfResults
+     * @return
+     * @throws CorruptIndexException
+     * @throws IOException
+     * @throws ParseException
+     * @see eu.etaxonomy.cdm.api.service.INameService#findByFuzzyNameCacheSearch(java.lang.String, float, java.util.List, boolean, int)
+     */
+    @Override
+    public List<DocumentSearchResult> findByFuzzyNameCacheSearch(String name, float accuracy, List<Language> languages, boolean highlightFragments, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
+        return defaultNameService.findByFuzzyNameCacheSearch(name, accuracy, languages, highlightFragments, maxNoOfResults);
+    }
+
+    /**
+     * @param name
+     * @param wildcard
+     * @param languages
+     * @param highlightFragments
+     * @param maxNoOfResults
+     * @return
+     * @throws CorruptIndexException
+     * @throws IOException
+     * @throws ParseException
+     * @see eu.etaxonomy.cdm.api.service.INameService#findByNameExactSearch(java.lang.String, boolean, java.util.List, boolean, int)
+     */
+    @Override
+    public List<DocumentSearchResult> findByNameExactSearch(String name, boolean wildcard, List<Language> languages, boolean highlightFragments, int maxNoOfResults) throws CorruptIndexException, IOException, ParseException {
+        return defaultNameService.findByNameExactSearch(name, wildcard, languages, highlightFragments, maxNoOfResults);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID refresh(TaxonNameBase persistentObject) {
+        return defaultNameService.refresh(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<TaxonNameBase> listByReferenceTitle(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param tableName
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
+     */
+    @Override
+    public List<TaxonNameBase> rows(String tableName, int limit, int start) {
+        return defaultNameService.rows(tableName, limit, start);
+    }
+
+    /**
+     * @param newInstances
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, TaxonNameBase> save(Collection<TaxonNameBase> newInstances) {
+        return null;
+    }
+
+    /**
+     * @param newInstance
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID save(TaxonNameBase newInstance) {
+        return null;
+    }
+
+    /**
+     * @param title
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#findNamesByTitle(java.lang.String)
+     */
+    @Override
+    public List findNamesByTitle(String title) {
+        return defaultNameService.findNamesByTitle(title);
+    }
+
+    /**
+     * @param title
+     * @param sessionObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#findNamesByTitle(java.lang.String, eu.etaxonomy.cdm.model.common.CdmBase)
+     */
+    @Override
+    public List findNamesByTitle(String title, CdmBase sessionObject) {
+        return defaultNameService.findNamesByTitle(title, sessionObject);
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID saveOrUpdate(TaxonNameBase transientObject) {
+        return null;
+    }
+
+    /**
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getAllHomotypicalGroups(int, int)
+     */
+    @Override
+    public List<HomotypicalGroup> getAllHomotypicalGroups(int limit, int start) {
+        return defaultNameService.getAllHomotypicalGroups(limit, start);
+    }
+
+    /**
+     * @param limit
+     * @param start
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.INameService#getAllRelationships(int, int)
+     */
+    @Deprecated
+    @Override
+    public List<RelationshipBase> getAllRelationships(int limit, int start) {
+        return defaultNameService.getAllRelationships(limit, start);
+    }
+
+    /**
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.INameService#getRankVocabulary()
+     */
+    @Deprecated
+    @Override
+    public OrderedTermVocabulary<Rank> getRankVocabulary() {
+        return defaultNameService.getRankVocabulary();
+    }
+
+    /**
+     * @param transientObjects
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, TaxonNameBase> saveOrUpdate(Collection<TaxonNameBase> transientObjects) {
+        return null;
+    }
+
+    /**
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.INameService#getStatusTypeVocabulary()
+     */
+    @Deprecated
+    @Override
+    public TermVocabulary<NomenclaturalStatusType> getStatusTypeVocabulary() {
+        return defaultNameService.getStatusTypeVocabulary();
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID update(TaxonNameBase transientObject) {
+        return defaultNameService.update(transientObject);
+    }
+
+    /**
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.INameService#getSpecimenTypeDesignationStatusVocabulary()
+     */
+    @Deprecated
+    @Override
+    public TermVocabulary<SpecimenTypeDesignationStatus> getSpecimenTypeDesignationStatusVocabulary() {
+        return defaultNameService.getSpecimenTypeDesignationStatusVocabulary();
+    }
+
+    /**
+     * @param example
+     * @param includeProperties
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<TaxonNameBase> list(TaxonNameBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.INameService#getSpecimenTypeDesignationVocabulary()
+     */
+    @Deprecated
+    @Override
+    public OrderedTermVocabulary<SpecimenTypeDesignationStatus> getSpecimenTypeDesignationVocabulary() {
+        return defaultNameService.getSpecimenTypeDesignationVocabulary();
+    }
+
+    /**
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.INameService#getNameRelationshipTypeVocabulary()
+     */
+    @Deprecated
+    @Override
+    public TermVocabulary<NameRelationshipType> getNameRelationshipTypeVocabulary() {
+        return defaultNameService.getNameRelationshipTypeVocabulary();
+    }
+
+    /**
+     * @param clazz
+     * @param matchStrategy
+     * @param mergeStrategy
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
+     */
+    @Override
+    public int deduplicate(Class<? extends TaxonNameBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
+        return defaultNameService.deduplicate(clazz, matchStrategy, mergeStrategy);
+    }
+
+    /**
+     * @param name
+     * @param direction
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#listNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.common.RelationshipBase.Direction, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<NameRelationship> listNameRelationships(TaxonNameBase name, Direction direction, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.listNameRelationships(name, direction, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param matchMode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
+     */
+    @Override
+    public Pager<TaxonNameBase> findTitleCache(Class<? extends TaxonNameBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
+        return defaultNameService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+    }
+
+    /**
+     * @param name
+     * @param direction
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#pageNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.common.RelationshipBase.Direction, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<NameRelationship> pageNameRelationships(TaxonNameBase name, Direction direction, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.pageNameRelationships(name, direction, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param name
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.INameService#listFromNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public List<NameRelationship> listFromNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.listFromNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param name
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.INameService#pageFromNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public Pager<NameRelationship> pageFromNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.pageFromNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param name
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.INameService#listToNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public List<NameRelationship> listToNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.listToNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param name
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.INameService#pageToNameRelationships(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.NameRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public Pager<NameRelationship> pageToNameRelationships(TaxonNameBase name, NameRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.pageToNameRelationships(name, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param name
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getHybridNames(eu.etaxonomy.cdm.model.name.NonViralName, eu.etaxonomy.cdm.model.name.HybridRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<HybridRelationship> getHybridNames(NonViralName name, HybridRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.getHybridNames(name, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param name
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getTypeDesignations(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus, java.lang.Integer, java.lang.Integer)
+     */
+    @Override
+    public Pager<TypeDesignationBase> getTypeDesignations(TaxonNameBase name, SpecimenTypeDesignationStatus status, Integer pageSize, Integer pageNumber) {
+        return defaultNameService.getTypeDesignations(name, status, pageSize, pageNumber);
+    }
+
+    /**
+     * @param name
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getTypeDesignations(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<TypeDesignationBase> getTypeDesignations(TaxonNameBase name, SpecimenTypeDesignationStatus status, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultNameService.getTypeDesignations(name, status, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uninomial
+     * @param infraGenericEpithet
+     * @param specificEpithet
+     * @param infraspecificEpithet
+     * @param rank
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#searchNames(java.lang.String, java.lang.String, java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonNameBase> searchNames(String uninomial, String infraGenericEpithet, String specificEpithet, String infraspecificEpithet, Rank rank, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.searchNames(uninomial, infraGenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonNameBase> search(Class<? extends TaxonNameBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getUuidAndTitleCacheOfNames()
+     */
+    @Override
+    public List<UuidAndTitleCache> getUuidAndTitleCacheOfNames() {
+        return defaultNameService.getUuidAndTitleCacheOfNames();
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#findByName(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonNameBase> findByName(Class<? extends TaxonNameBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultNameService.findByName(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#findHomotypicalGroup(java.util.UUID)
+     */
+    @Override
+    public HomotypicalGroup findHomotypicalGroup(UUID uuid) {
+        return defaultNameService.findHomotypicalGroup(uuid);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.INameService#getTaggedName(java.util.UUID)
+     */
+    @Override
+    public List<TaggedText> getTaggedName(UUID uuid) {
+        return defaultNameService.getTaggedName(uuid);
+    }
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientOccurenceService.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientOccurenceService.java
new file mode 100644 (file)
index 0000000..83f1f66
--- /dev/null
@@ -0,0 +1,860 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.transientServices;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.queryParser.ParseException;
+import org.hibernate.LockMode;
+import org.hibernate.Session;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.envers.query.criteria.AuditCriterion;
+import org.hibernate.search.spatial.impl.Rectangle;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.api.service.search.SearchResult;
+import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.ISourceable;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.LSID;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.location.Country;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.model.view.AuditEvent;
+import eu.etaxonomy.cdm.model.view.AuditEventRecord;
+import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.query.Grouping;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.cdm.persistence.query.OrderHint;
+import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
+import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
+import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
+
+/**
+ * @author pplitzner
+ * @date 26.09.2013
+ *
+ */
+public class TransientOccurenceService implements IOccurrenceService {
+
+    private IOccurrenceService defaultService;
+    private List<SpecimenOrObservationBase> units;
+
+    /**
+     * @param defaultService
+     */
+    public TransientOccurenceService(IOccurrenceService defaultService) {
+        this.defaultService = defaultService;
+        this.units = new ArrayList<SpecimenOrObservationBase>();
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<SpecimenOrObservationBase>> pageAuditEvents(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+    }
+
+    /**
+     * @param annotatedObj
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Annotation> getAnnotations(SpecimenOrObservationBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IService#clear()
+     */
+    @Override
+    public void clear() {
+        defaultService.clear();
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
+     */
+    @Override
+    public void lock(SpecimenOrObservationBase t, LockMode lockMode) {
+        defaultService.lock(t, lockMode);
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @param propertyPaths
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
+     */
+    @Override
+    public void refresh(SpecimenOrObservationBase t, LockMode lockMode, List<String> propertyPaths) {
+        defaultService.refresh(t, lockMode, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
+     */
+    @Override
+    public void updateTitleCache() {
+        defaultService.updateTitleCache();
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<SpecimenOrObservationBase> getNextAuditEvent(SpecimenOrObservationBase t) {
+        return defaultService.getNextAuditEvent(t);
+    }
+
+    /**
+     * @param annotatableEntity
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Marker> getMarkers(SpecimenOrObservationBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param stepSize
+     * @param cacheStrategy
+     * @param monitor
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
+     */
+    @Override
+    public void updateTitleCache(Class<? extends SpecimenOrObservationBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<SpecimenOrObservationBase> cacheStrategy, IProgressMonitor monitor) {
+        defaultService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<SpecimenOrObservationBase> getPreviousAuditEvent(SpecimenOrObservationBase t) {
+        return defaultService.getPreviousAuditEvent(t);
+    }
+
+    /**
+     * @param iso639
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getCountryByIso(java.lang.String)
+     */
+    @Override
+    public Country getCountryByIso(String iso639) {
+        return defaultService.getCountryByIso(iso639);
+    }
+
+    /**
+     * @param clazz
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
+     */
+    @Override
+    public int count(Class<? extends SpecimenOrObservationBase> clazz) {
+        return defaultService.count(clazz);
+    }
+
+    /**
+     * @param name
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getCountryByName(java.lang.String)
+     */
+    @Override
+    public List<Country> getCountryByName(String name) {
+        return defaultService.getCountryByName(name);
+    }
+
+    /**
+     * @param type
+     * @param determinedAs
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#list(java.lang.Class, eu.etaxonomy.cdm.model.taxon.TaxonBase, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SpecimenOrObservationBase> list(Class<? extends SpecimenOrObservationBase> type, TaxonBase determinedAs, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.list(type, determinedAs, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param from
+     * @param to
+     * @param criteria
+     * @param pageSize
+     * @param pageValue
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<SpecimenOrObservationBase>> pageAuditEvents(Class<? extends SpecimenOrObservationBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+    }
+
+    /**
+     * @param lsid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
+     */
+    @Override
+    public SpecimenOrObservationBase find(LSID lsid) {
+        return defaultService.find(lsid);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID delete(SpecimenOrObservationBase persistentObject) throws ReferencedObjectUndeletableException{
+        return defaultService.delete(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Object[]> groupMarkers(Class<? extends SpecimenOrObservationBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
+     */
+    @Override
+    public boolean exists(UUID uuid) {
+        return defaultService.exists(uuid);
+    }
+
+    /**
+     * @param x
+     * @param y
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
+     */
+    @Override
+    public SpecimenOrObservationBase replace(SpecimenOrObservationBase x, SpecimenOrObservationBase y) {
+        return defaultService.replace(x, y);
+    }
+
+    /**
+     * @param uuidSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
+     */
+    @Override
+    public List<SpecimenOrObservationBase> find(Set<UUID> uuidSet) {
+        return defaultService.find(uuidSet);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<IdentifiableSource> getSources(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultService.getSources(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
+     */
+    @Override
+    public SpecimenOrObservationBase find(UUID uuid) {
+        return defaultService.find(uuid);
+    }
+
+    /**
+     * @param id
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
+     */
+    @Override
+    public SpecimenOrObservationBase find(int id) {
+        return defaultService.find(id);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Rights> getRights(SpecimenOrObservationBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultService.getRights(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
+     */
+    @Override
+    public int countMarkers(Class<? extends SpecimenOrObservationBase> clazz, Boolean technical) {
+        return defaultService.countMarkers(clazz, technical);
+    }
+
+    /**
+     * @param occurence
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getMedia(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Media> getMedia(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultService.getMedia(occurence, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param idSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
+     */
+    @Override
+    public List<SpecimenOrObservationBase> findById(Set<Integer> idSet) {
+        return defaultService.findById(idSet);
+    }
+
+    /**
+     * @param clazz
+     * @param idInSource
+     * @param idNamespace
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
+     */
+    @Override
+    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
+        return defaultService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
+     */
+    @Override
+    public Session getSession() {
+        return defaultService.getSession();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<SpecimenOrObservationBase>> getUuidAndTitleCache() {
+        return defaultService.getUuidAndTitleCache();
+    }
+
+    /**
+     * @param clazz
+     * @param limit
+     * @param start
+     * @param groups
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Object[]> group(Class<? extends SpecimenOrObservationBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
+        return defaultService.group(clazz, limit, start, groups, propertyPaths);
+    }
+
+    /**
+     * @param occurence
+     * @param taxonBase
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDeterminations(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.model.taxon.TaxonBase, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<DeterminationEvent> getDeterminations(SpecimenOrObservationBase occurence, TaxonBase taxonBase, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultService.getDeterminations(occurence, taxonBase, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SpecimenOrObservationBase> findByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param occurence
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivationEvents(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<DerivationEvent> getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultService.getDerivationEvents(occurence, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<SpecimenOrObservationBase> list(Class<? extends SpecimenOrObservationBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.list(type, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param query
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SpecimenOrObservationBase> search(Class<? extends SpecimenOrObservationBase> clazz, String query, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.search(clazz, query, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Pager<SpecimenOrObservationBase> findByTitle(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator) {
+        return defaultService.findByTitle(configurator);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public Integer countByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
+        return defaultService.countByTitle(clazz, queryString, matchmode, criteria);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
+     */
+    @Override
+    public SpecimenOrObservationBase load(UUID uuid) {
+        return defaultService.load(uuid);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
+     */
+    @Override
+    public SpecimenOrObservationBase load(UUID uuid, List<String> propertyPaths) {
+        return defaultService.load(uuid, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase> configurator) {
+        return defaultService.countByTitle(configurator);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getFieldUnitUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<FieldUnit>> getFieldUnitUuidAndTitleCache() {
+        return defaultService.getFieldUnitUuidAndTitleCache();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<DerivedUnit>> getDerivedUnitUuidAndTitleCache() {
+        return defaultService.getDerivedUnitUuidAndTitleCache();
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public SpecimenOrObservationBase merge(SpecimenOrObservationBase transientObject) {
+        return defaultService.merge(transientObject);
+    }
+
+    /**
+     * @param derivedUnit
+     * @param propertyPaths
+     * @return
+     * @throws DerivedUnitFacadeNotSupportedException
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#getDerivedUnitFacade(eu.etaxonomy.cdm.model.occurrence.DerivedUnit, java.util.List)
+     */
+    @Override
+    public DerivedUnitFacade getDerivedUnitFacade(DerivedUnit derivedUnit, List<String> propertyPaths) throws DerivedUnitFacadeNotSupportedException {
+        return defaultService.getDerivedUnitFacade(derivedUnit, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<SpecimenOrObservationBase> listByTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param description
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listDerivedUnitFacades(eu.etaxonomy.cdm.model.description.DescriptionBase, java.util.List)
+     */
+    @Override
+    public List<DerivedUnitFacade> listDerivedUnitFacades(DescriptionBase description, List<String> propertyPaths) {
+        return defaultService.listDerivedUnitFacades(description, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SpecimenOrObservationBase> page(Class<? extends SpecimenOrObservationBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param includeRelationships
+     * @param associatedTaxon
+     * @param maxDepth
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#listByAssociatedTaxon(java.lang.Class, java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public <T extends SpecimenOrObservationBase> List<T> listByAssociatedTaxon(Class<T> type, Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.listByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID refresh(SpecimenOrObservationBase persistentObject) {
+        return defaultService.refresh(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<SpecimenOrObservationBase> listByReferenceTitle(Class<? extends SpecimenOrObservationBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param tableName
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
+     */
+    @Override
+    public List<SpecimenOrObservationBase> rows(String tableName, int limit, int start) {
+        return defaultService.rows(tableName, limit, start);
+    }
+
+    /**
+     * @param newInstances
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, SpecimenOrObservationBase> save(Collection<SpecimenOrObservationBase> newInstances) {
+        for(SpecimenOrObservationBase unit:newInstances){
+            save(unit);
+        }
+        return null;
+    }
+
+    /**
+     * @param type
+     * @param includeRelationships
+     * @param associatedTaxon
+     * @param maxDepth
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#pageByAssociatedTaxon(java.lang.Class, java.util.Set, eu.etaxonomy.cdm.model.taxon.Taxon, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public <T extends SpecimenOrObservationBase> Pager<T> pageByAssociatedTaxon(Class<T> type, Set<TaxonRelationshipEdge> includeRelationships, Taxon associatedTaxon, Integer maxDepth, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.pageByAssociatedTaxon(type, includeRelationships, associatedTaxon, maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param newInstance
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID save(SpecimenOrObservationBase newInstance) {
+        units.add(newInstance);
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID saveOrUpdate(SpecimenOrObservationBase transientObject) {
+        units.add(transientObject);
+        return null;
+    }
+
+    /**
+     * @param transientObjects
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, SpecimenOrObservationBase> saveOrUpdate(Collection<SpecimenOrObservationBase> transientObjects) {
+        for(SpecimenOrObservationBase unit:transientObjects){
+            saveOrUpdate(unit);
+        }
+        return null;
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param boundingBox
+     * @param languages
+     * @param highlightFragments
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @throws CorruptIndexException
+     * @throws IOException
+     * @throws ParseException
+     * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#findByFullText(java.lang.Class, java.lang.String, org.hibernate.search.spatial.impl.Rectangle, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SearchResult<SpecimenOrObservationBase>> findByFullText(Class<? extends SpecimenOrObservationBase> clazz, String queryString, Rectangle boundingBox, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException {
+        return defaultService.findByFullText(clazz, queryString, boundingBox, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID update(SpecimenOrObservationBase transientObject) {
+        return defaultService.update(transientObject);
+    }
+
+    /**
+     * @param example
+     * @param includeProperties
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<SpecimenOrObservationBase> list(SpecimenOrObservationBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param matchStrategy
+     * @param mergeStrategy
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
+     */
+    @Override
+    public int deduplicate(Class<? extends SpecimenOrObservationBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
+        return defaultService.deduplicate(clazz, matchStrategy, mergeStrategy);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param matchMode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
+     */
+    @Override
+    public Pager<SpecimenOrObservationBase> findTitleCache(Class<? extends SpecimenOrObservationBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
+        return defaultService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+    }
+
+    /**
+     * @return
+     */
+    public List<SpecimenOrObservationBase> getUnits() {
+        return units;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientReferenceService.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientReferenceService.java
new file mode 100644 (file)
index 0000000..c38e0f4
--- /dev/null
@@ -0,0 +1,694 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.transientServices;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.hibernate.LockMode;
+import org.hibernate.Session;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.envers.query.criteria.AuditCriterion;
+
+import eu.etaxonomy.cdm.api.service.IReferenceService;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.ISourceable;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.LSID;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
+import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.model.view.AuditEvent;
+import eu.etaxonomy.cdm.model.view.AuditEventRecord;
+import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.query.Grouping;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.cdm.persistence.query.OrderHint;
+import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
+import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
+import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
+
+/**
+ * @author pplitzner
+ * @date 27.09.2013
+ *
+ */
+public class TransientReferenceService implements IReferenceService {
+
+    private IReferenceService defaultReferenceService;
+
+    /**
+     * @param defaultReferenceService
+     */
+    public TransientReferenceService(IReferenceService defaultReferenceService) {
+        this.defaultReferenceService = defaultReferenceService;
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IReferenceService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Reference> search(Class<? extends Reference> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultReferenceService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<Reference>> pageAuditEvents(Reference t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultReferenceService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+    }
+
+    /**
+     * @param annotatedObj
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Annotation> getAnnotations(Reference annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultReferenceService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IService#clear()
+     */
+    @Override
+    public void clear() {
+        defaultReferenceService.clear();
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
+     */
+    @Override
+    public void lock(Reference t, LockMode lockMode) {
+        defaultReferenceService.lock(t, lockMode);
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @param propertyPaths
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
+     */
+    @Override
+    public void refresh(Reference t, LockMode lockMode, List<String> propertyPaths) {
+        defaultReferenceService.refresh(t, lockMode, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
+     */
+    @Override
+    public void updateTitleCache() {
+        defaultReferenceService.updateTitleCache();
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<Reference> getNextAuditEvent(Reference t) {
+        return defaultReferenceService.getNextAuditEvent(t);
+    }
+
+    /**
+     * @param annotatableEntity
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Marker> getMarkers(Reference annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultReferenceService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IReferenceService#getUuidAndTitle()
+     */
+    @Override
+    public List<UuidAndTitleCache<Reference>> getUuidAndTitle() {
+        return defaultReferenceService.getUuidAndTitle();
+    }
+
+    /**
+     * @param clazz
+     * @param stepSize
+     * @param cacheStrategy
+     * @param monitor
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
+     */
+    @Override
+    public void updateTitleCache(Class<? extends Reference> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<Reference> cacheStrategy, IProgressMonitor monitor) {
+        defaultReferenceService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<Reference> getPreviousAuditEvent(Reference t) {
+        return defaultReferenceService.getPreviousAuditEvent(t);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IReferenceService#getAllReferencesForPublishing()
+     */
+    @Override
+    public List<Reference> getAllReferencesForPublishing() {
+        return defaultReferenceService.getAllReferencesForPublishing();
+    }
+
+    /**
+     * @param clazz
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
+     */
+    @Override
+    public int count(Class<? extends Reference> clazz) {
+        return defaultReferenceService.count(clazz);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IReferenceService#getAllNomenclaturalReferences()
+     */
+    @Override
+    public List<Reference> getAllNomenclaturalReferences() {
+        return defaultReferenceService.getAllNomenclaturalReferences();
+    }
+
+    /**
+     * @param reference
+     * @param includeSubordinateReferences
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IReferenceService#listCoveredTaxa(eu.etaxonomy.cdm.model.reference.Reference, boolean, java.util.List)
+     */
+    @Override
+    public List<TaxonBase> listCoveredTaxa(Reference reference, boolean includeSubordinateReferences, List<String> propertyPaths) {
+        return defaultReferenceService.listCoveredTaxa(reference, includeSubordinateReferences, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param from
+     * @param to
+     * @param criteria
+     * @param pageSize
+     * @param pageValue
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<Reference>> pageAuditEvents(Class<? extends Reference> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultReferenceService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+    }
+
+    /**
+     * @param lsid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
+     */
+    @Override
+    public Reference find(LSID lsid) {
+        return defaultReferenceService.find(lsid);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID delete(Reference persistentObject) throws ReferencedObjectUndeletableException{
+        return defaultReferenceService.delete(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Object[]> groupMarkers(Class<? extends Reference> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultReferenceService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
+     */
+    @Override
+    public boolean exists(UUID uuid) {
+        return defaultReferenceService.exists(uuid);
+    }
+
+    /**
+     * @param x
+     * @param y
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
+     */
+    @Override
+    public Reference replace(Reference x, Reference y) {
+        return defaultReferenceService.replace(x, y);
+    }
+
+    /**
+     * @param uuidSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
+     */
+    @Override
+    public List<Reference> find(Set<UUID> uuidSet) {
+        return defaultReferenceService.find(uuidSet);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<IdentifiableSource> getSources(Reference t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultReferenceService.getSources(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
+     */
+    @Override
+    public Reference find(UUID uuid) {
+        return defaultReferenceService.find(uuid);
+    }
+
+    /**
+     * @param id
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
+     */
+    @Override
+    public Reference find(int id) {
+        return defaultReferenceService.find(id);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Rights> getRights(Reference t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultReferenceService.getRights(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
+     */
+    @Override
+    public int countMarkers(Class<? extends Reference> clazz, Boolean technical) {
+        return defaultReferenceService.countMarkers(clazz, technical);
+    }
+
+    /**
+     * @param idSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
+     */
+    @Override
+    public List<Reference> findById(Set<Integer> idSet) {
+        return defaultReferenceService.findById(idSet);
+    }
+
+    /**
+     * @param clazz
+     * @param idInSource
+     * @param idNamespace
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
+     */
+    @Override
+    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
+        return defaultReferenceService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
+     */
+    @Override
+    public Session getSession() {
+        return defaultReferenceService.getSession();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<Reference>> getUuidAndTitleCache() {
+        return defaultReferenceService.getUuidAndTitleCache();
+    }
+
+    /**
+     * @param clazz
+     * @param limit
+     * @param start
+     * @param groups
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Object[]> group(Class<? extends Reference> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
+        return defaultReferenceService.group(clazz, limit, start, groups, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Reference> findByTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultReferenceService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Reference> list(Class<? extends Reference> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultReferenceService.list(type, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Pager<Reference> findByTitle(IIdentifiableEntityServiceConfigurator<Reference> configurator) {
+        return defaultReferenceService.findByTitle(configurator);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public Integer countByTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
+        return defaultReferenceService.countByTitle(clazz, queryString, matchmode, criteria);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
+     */
+    @Override
+    public Reference load(UUID uuid) {
+        return defaultReferenceService.load(uuid);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
+     */
+    @Override
+    public Reference load(UUID uuid, List<String> propertyPaths) {
+        return defaultReferenceService.load(uuid, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<Reference> configurator) {
+        return defaultReferenceService.countByTitle(configurator);
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public Reference merge(Reference transientObject) {
+        return defaultReferenceService.merge(transientObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Reference> listByTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultReferenceService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Reference> page(Class<? extends Reference> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultReferenceService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID refresh(Reference persistentObject) {
+        return defaultReferenceService.refresh(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Reference> listByReferenceTitle(Class<? extends Reference> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultReferenceService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param tableName
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
+     */
+    @Override
+    public List<Reference> rows(String tableName, int limit, int start) {
+        return defaultReferenceService.rows(tableName, limit, start);
+    }
+
+    /**
+     * @param newInstances
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, Reference> save(Collection<Reference> newInstances) {
+        return null;
+    }
+
+    /**
+     * @param newInstance
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID save(Reference newInstance) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID saveOrUpdate(Reference transientObject) {
+        return null;
+    }
+
+    /**
+     * @param transientObjects
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, Reference> saveOrUpdate(Collection<Reference> transientObjects) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID update(Reference transientObject) {
+        return defaultReferenceService.update(transientObject);
+    }
+
+    /**
+     * @param example
+     * @param includeProperties
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Reference> list(Reference example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultReferenceService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param matchStrategy
+     * @param mergeStrategy
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
+     */
+    @Override
+    public int deduplicate(Class<? extends Reference> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
+        return defaultReferenceService.deduplicate(clazz, matchStrategy, mergeStrategy);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param matchMode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
+     */
+    @Override
+    public Pager<Reference> findTitleCache(Class<? extends Reference> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
+        return defaultReferenceService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+    }
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTaxonService.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTaxonService.java
new file mode 100644 (file)
index 0000000..587b20b
--- /dev/null
@@ -0,0 +1,1399 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.transientServices;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.queryParser.ParseException;
+import org.hibernate.LockMode;
+import org.hibernate.Session;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.envers.query.criteria.AuditCriterion;
+
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.TaxaAndNamesSearchMode;
+import eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.config.MatchingTaxonConfigurator;
+import eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
+import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.api.service.search.LuceneMultiSearchException;
+import eu.etaxonomy.cdm.api.service.search.SearchResult;
+import eu.etaxonomy.cdm.api.service.util.TaxonRelationshipEdge;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.ISourceable;
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.common.LSID;
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
+import eu.etaxonomy.cdm.model.common.RelationshipBase;
+import eu.etaxonomy.cdm.model.common.RelationshipBase.Direction;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
+import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.media.MediaRepresentation;
+import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
+import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
+import eu.etaxonomy.cdm.model.view.AuditEvent;
+import eu.etaxonomy.cdm.model.view.AuditEventRecord;
+import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.fetch.CdmFetch;
+import eu.etaxonomy.cdm.persistence.query.Grouping;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.cdm.persistence.query.OrderHint;
+import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
+import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
+import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
+
+/**
+ * @author pplitzner
+ * @date 27.09.2013
+ *
+ */
+public class TransientTaxonService implements ITaxonService {
+
+    private final ITaxonService defaultTaxonService;
+
+    /**
+     * @param defaultTaxonService
+     */
+    public TransientTaxonService(ITaxonService defaultTaxonService) {
+        this.defaultTaxonService = defaultTaxonService;
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<TaxonBase>> pageAuditEvents(TaxonBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultTaxonService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+    }
+
+    /**
+     * @param annotatedObj
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Annotation> getAnnotations(TaxonBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IService#clear()
+     */
+    @Override
+    public void clear() {
+        defaultTaxonService.clear();
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
+     */
+    @Override
+    public void lock(TaxonBase t, LockMode lockMode) {
+        defaultTaxonService.lock(t, lockMode);
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @param propertyPaths
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
+     */
+    @Override
+    public void refresh(TaxonBase t, LockMode lockMode, List<String> propertyPaths) {
+        defaultTaxonService.refresh(t, lockMode, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
+     */
+    @Override
+    public void updateTitleCache() {
+        defaultTaxonService.updateTitleCache();
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<TaxonBase> getNextAuditEvent(TaxonBase t) {
+        return defaultTaxonService.getNextAuditEvent(t);
+    }
+
+    /**
+     * @param annotatableEntity
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Marker> getMarkers(TaxonBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param stepSize
+     * @param cacheStrategy
+     * @param monitor
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
+     */
+    @Override
+    public void updateTitleCache(Class<? extends TaxonBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<TaxonBase> cacheStrategy, IProgressMonitor monitor) {
+        defaultTaxonService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<TaxonBase> getPreviousAuditEvent(TaxonBase t) {
+        return defaultTaxonService.getPreviousAuditEvent(t);
+    }
+
+    /**
+     * @param clazz
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
+     */
+    @Override
+    public int count(Class<? extends TaxonBase> clazz) {
+        return defaultTaxonService.count(clazz);
+    }
+
+    /**
+     * @param clazz
+     * @param from
+     * @param to
+     * @param criteria
+     * @param pageSize
+     * @param pageValue
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<TaxonBase>> pageAuditEvents(Class<? extends TaxonBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultTaxonService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+    }
+
+    /**
+     * @param lsid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
+     */
+    @Override
+    public TaxonBase find(LSID lsid) {
+        return defaultTaxonService.find(lsid);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID delete(TaxonBase persistentObject) throws ReferencedObjectUndeletableException{
+        return defaultTaxonService.delete(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Object[]> groupMarkers(Class<? extends TaxonBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultTaxonService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
+     */
+    @Override
+    public boolean exists(UUID uuid) {
+        return defaultTaxonService.exists(uuid);
+    }
+
+    /**
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getAllSynonyms(int, int)
+     */
+    @Override
+    public List<Synonym> getAllSynonyms(int limit, int start) {
+        return defaultTaxonService.getAllSynonyms(limit, start);
+    }
+
+    /**
+     * @param x
+     * @param y
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
+     */
+    @Override
+    public TaxonBase replace(TaxonBase x, TaxonBase y) {
+        return defaultTaxonService.replace(x, y);
+    }
+
+    /**
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getAllTaxa(int, int)
+     */
+    @Override
+    public List<Taxon> getAllTaxa(int limit, int start) {
+        return defaultTaxonService.getAllTaxa(limit, start);
+    }
+
+    /**
+     * @param uuidSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
+     */
+    @Override
+    public List<TaxonBase> find(Set<UUID> uuidSet) {
+        return defaultTaxonService.find(uuidSet);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<IdentifiableSource> getSources(TaxonBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultTaxonService.getSources(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param sec
+     * @param cdmFetch
+     * @param onlyWithChildren
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.reference.Reference, eu.etaxonomy.cdm.persistence.fetch.CdmFetch, boolean)
+     */
+    @Deprecated
+    @Override
+    public List<Taxon> getRootTaxa(Reference sec, CdmFetch cdmFetch, boolean onlyWithChildren) {
+        return defaultTaxonService.getRootTaxa(sec, cdmFetch, onlyWithChildren);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
+     */
+    @Override
+    public TaxonBase find(UUID uuid) {
+        return defaultTaxonService.find(uuid);
+    }
+
+    /**
+     * @param rank
+     * @param sec
+     * @param onlyWithChildren
+     * @param withMisapplications
+     * @param propertyPaths
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getRootTaxa(eu.etaxonomy.cdm.model.name.Rank, eu.etaxonomy.cdm.model.reference.Reference, boolean, boolean, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public List<Taxon> getRootTaxa(Rank rank, Reference sec, boolean onlyWithChildren, boolean withMisapplications, List<String> propertyPaths) {
+        return defaultTaxonService.getRootTaxa(rank, sec, onlyWithChildren, withMisapplications, propertyPaths);
+    }
+
+    /**
+     * @param id
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
+     */
+    @Override
+    public TaxonBase find(int id) {
+        return defaultTaxonService.find(id);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Rights> getRights(TaxonBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultTaxonService.getRights(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
+     */
+    @Override
+    public int countMarkers(Class<? extends TaxonBase> clazz, Boolean technical) {
+        return defaultTaxonService.countMarkers(clazz, technical);
+    }
+
+    /**
+     * @param idSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
+     */
+    @Override
+    public List<TaxonBase> findById(Set<Integer> idSet) {
+        return defaultTaxonService.findById(idSet);
+    }
+
+    /**
+     * @param clazz
+     * @param idInSource
+     * @param idNamespace
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
+     */
+    @Override
+    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
+        return defaultTaxonService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
+     */
+    @Override
+    public Session getSession() {
+        return defaultTaxonService.getSession();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCache() {
+        return defaultTaxonService.getUuidAndTitleCache();
+    }
+
+    /**
+     * @param clazz
+     * @param limit
+     * @param start
+     * @param groups
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Object[]> group(Class<? extends TaxonBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
+        return defaultTaxonService.group(clazz, limit, start, groups, propertyPaths);
+    }
+
+    /**
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getAllRelationships(int, int)
+     */
+    @Override
+    public List<RelationshipBase> getAllRelationships(int limit, int start) {
+        return defaultTaxonService.getAllRelationships(limit, start);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonBase> findByTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getTaxonRelationshipTypeVocabulary()
+     */
+    @Deprecated
+    @Override
+    public OrderedTermVocabulary<TaxonRelationshipType> getTaxonRelationshipTypeVocabulary() {
+        return defaultTaxonService.getTaxonRelationshipTypeVocabulary();
+    }
+
+    /**
+     * @param name
+     * @param sec
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#searchTaxaByName(java.lang.String, eu.etaxonomy.cdm.model.reference.Reference)
+     */
+    @Override
+    public List<TaxonBase> searchTaxaByName(String name, Reference sec) {
+        return defaultTaxonService.searchTaxaByName(name, sec);
+    }
+
+    /**
+     * @param synonym
+     * @param acceptedTaxon
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#swapSynonymAndAcceptedTaxon(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon)
+     */
+    @Override
+    public void swapSynonymAndAcceptedTaxon(Synonym synonym, Taxon acceptedTaxon) {
+        defaultTaxonService.swapSynonymAndAcceptedTaxon(synonym, acceptedTaxon);
+    }
+
+    /**
+     * @param type
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<TaxonBase> list(Class<? extends TaxonBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.list(type, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Pager<TaxonBase> findByTitle(IIdentifiableEntityServiceConfigurator<TaxonBase> configurator) {
+        return defaultTaxonService.findByTitle(configurator);
+    }
+
+    /**
+     * @param synonym
+     * @param acceptedTaxon
+     * @param deleteSynonym
+     * @param copyCitationInfo
+     * @param citation
+     * @param microCitation
+     * @return
+     * @throws HomotypicalGroupChangeException
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#changeSynonymToAcceptedTaxon(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon, boolean, boolean, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)
+     */
+    @Override
+    public Taxon changeSynonymToAcceptedTaxon(Synonym synonym, Taxon acceptedTaxon, boolean deleteSynonym, boolean copyCitationInfo, Reference citation, String microCitation) throws HomotypicalGroupChangeException {
+        return defaultTaxonService.changeSynonymToAcceptedTaxon(synonym, acceptedTaxon, deleteSynonym, copyCitationInfo, citation, microCitation);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public Integer countByTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
+        return defaultTaxonService.countByTitle(clazz, queryString, matchmode, criteria);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
+     */
+    @Override
+    public TaxonBase load(UUID uuid) {
+        return defaultTaxonService.load(uuid);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
+     */
+    @Override
+    public TaxonBase load(UUID uuid, List<String> propertyPaths) {
+        return defaultTaxonService.load(uuid, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<TaxonBase> configurator) {
+        return defaultTaxonService.countByTitle(configurator);
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public TaxonBase merge(TaxonBase transientObject) {
+        return defaultTaxonService.merge(transientObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<TaxonBase> listByTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonBase> page(Class<? extends TaxonBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID refresh(TaxonBase persistentObject) {
+        return defaultTaxonService.refresh(persistentObject);
+    }
+
+    /**
+     * @param synonym
+     * @param toTaxon
+     * @param taxonRelationshipType
+     * @param reference
+     * @param microReference
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#changeSynonymToRelatedTaxon(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String)
+     */
+    @Override
+    public Taxon changeSynonymToRelatedTaxon(Synonym synonym, Taxon toTaxon, TaxonRelationshipType taxonRelationshipType, Reference reference, String microReference) {
+        return defaultTaxonService.changeSynonymToRelatedTaxon(synonym, toTaxon, taxonRelationshipType, reference, microReference);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<TaxonBase> listByReferenceTitle(Class<? extends TaxonBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param tableName
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
+     */
+    @Override
+    public List<TaxonBase> rows(String tableName, int limit, int start) {
+        return defaultTaxonService.rows(tableName, limit, start);
+    }
+
+    /**
+     * @param newInstances
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, TaxonBase> save(Collection<TaxonBase> newInstances) {
+        return null;
+    }
+
+    /**
+     * @param syn
+     * @param taxon
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonymRelationships(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon)
+     */
+    @Override
+    public long deleteSynonymRelationships(Synonym syn, Taxon taxon) {
+        return defaultTaxonService.deleteSynonymRelationships(syn, taxon);
+    }
+
+    /**
+     * @param newInstance
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID save(TaxonBase newInstance) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID saveOrUpdate(TaxonBase transientObject) {
+        return null;
+    }
+
+    /**
+     * @param synonym
+     * @param newHomotypicalGroup
+     * @param targetTaxon
+     * @param removeFromOtherTaxa
+     * @param setBasionymRelationIfApplicable
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#changeHomotypicalGroupOfSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.name.HomotypicalGroup, eu.etaxonomy.cdm.model.taxon.Taxon, boolean, boolean)
+     */
+    @Override
+    public void changeHomotypicalGroupOfSynonym(Synonym synonym, HomotypicalGroup newHomotypicalGroup, Taxon targetTaxon, boolean removeFromOtherTaxa, boolean setBasionymRelationIfApplicable) {
+        defaultTaxonService.changeHomotypicalGroupOfSynonym(synonym, newHomotypicalGroup, targetTaxon, removeFromOtherTaxa, setBasionymRelationIfApplicable);
+    }
+
+    /**
+     * @param transientObjects
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, TaxonBase> saveOrUpdate(Collection<TaxonBase> transientObjects) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID update(TaxonBase transientObject) {
+        return defaultTaxonService.update(transientObject);
+    }
+
+    /**
+     * @param example
+     * @param includeProperties
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<TaxonBase> list(TaxonBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param oldSynonymRelation
+     * @param newTaxon
+     * @param moveHomotypicGroup
+     * @param newSynonymRelationshipType
+     * @param newReference
+     * @param newReferenceDetail
+     * @param keepReference
+     * @return
+     * @throws HomotypicalGroupChangeException
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#moveSynonymToAnotherTaxon(eu.etaxonomy.cdm.model.taxon.SynonymRelationship, eu.etaxonomy.cdm.model.taxon.Taxon, boolean, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, eu.etaxonomy.cdm.model.reference.Reference, java.lang.String, boolean)
+     */
+    @Override
+    public SynonymRelationship moveSynonymToAnotherTaxon(SynonymRelationship oldSynonymRelation, Taxon newTaxon, boolean moveHomotypicGroup, SynonymRelationshipType newSynonymRelationshipType, Reference newReference, String newReferenceDetail, boolean keepReference) throws HomotypicalGroupChangeException {
+        return defaultTaxonService.moveSynonymToAnotherTaxon(oldSynonymRelation, newTaxon, moveHomotypicGroup, newSynonymRelationshipType, newReference, newReferenceDetail, keepReference);
+    }
+
+    /**
+     * @param clazz
+     * @param matchStrategy
+     * @param mergeStrategy
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
+     */
+    @Override
+    public int deduplicate(Class<? extends TaxonBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
+        return defaultTaxonService.deduplicate(clazz, matchStrategy, mergeStrategy);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param matchMode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
+     */
+    @Override
+    public Pager<TaxonBase> findTitleCache(Class<? extends TaxonBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
+        return defaultTaxonService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+    }
+
+    /**
+     * @param taxon
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listToTaxonRelationships(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<TaxonRelationship> listToTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.listToTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#pageToTaxonRelationships(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonRelationship> pageToTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.pageToTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listFromTaxonRelationships(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<TaxonRelationship> listFromTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.listFromTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#pageFromTaxonRelationships(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonRelationship> pageFromTaxonRelationships(Taxon taxon, TaxonRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.pageFromTaxonRelationships(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param includeRelationships
+     * @param maxDepth
+     * @param limit
+     * @param start
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listRelatedTaxa(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Set<Taxon> listRelatedTaxa(Taxon taxon, Set<TaxonRelationshipEdge> includeRelationships, Integer maxDepth, Integer limit, Integer start, List<String> propertyPaths) {
+        return defaultTaxonService.listRelatedTaxa(taxon, includeRelationships, maxDepth, limit, start, propertyPaths);
+    }
+
+    /**
+     * @param taxonBase
+     * @param limit
+     * @param start
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listClassifications(eu.etaxonomy.cdm.model.taxon.TaxonBase, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Classification> listClassifications(TaxonBase taxonBase, Integer limit, Integer start, List<String> propertyPaths) {
+        return defaultTaxonService.listClassifications(taxonBase, limit, start, propertyPaths);
+    }
+
+    /**
+     * @param synonym
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getSynonyms(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SynonymRelationship> getSynonyms(Synonym synonym, SynonymRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.getSynonyms(synonym, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getSynonyms(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SynonymRelationship> getSynonyms(Taxon taxon, SynonymRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.getSynonyms(taxon, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getHomotypicSynonymsByHomotypicGroup(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.List)
+     */
+    @Override
+    public List<Synonym> getHomotypicSynonymsByHomotypicGroup(Taxon taxon, List<String> propertyPaths) {
+        return defaultTaxonService.getHomotypicSynonymsByHomotypicGroup(taxon, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getHeterotypicSynonymyGroups(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.List)
+     */
+    @Override
+    public List<List<Synonym>> getHeterotypicSynonymyGroups(Taxon taxon, List<String> propertyPaths) {
+        return defaultTaxonService.getHeterotypicSynonymyGroups(taxon, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<TaxonBase> search(Class<? extends TaxonBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTaxonService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param uninomial
+     * @param infragenericEpithet
+     * @param specificEpithet
+     * @param infraspecificEpithet
+     * @param rank
+     * @param pageSize
+     * @param pageNumber
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaByName(java.lang.Class, java.lang.String, java.lang.String, java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer)
+     */
+    @Override
+    public Pager<TaxonBase> findTaxaByName(Class<? extends TaxonBase> clazz, String uninomial, String infragenericEpithet, String specificEpithet, String infraspecificEpithet, Rank rank, Integer pageSize, Integer pageNumber) {
+        return defaultTaxonService.findTaxaByName(clazz, uninomial, infragenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber);
+    }
+
+    /**
+     * @param clazz
+     * @param uninomial
+     * @param infragenericEpithet
+     * @param specificEpithet
+     * @param infraspecificEpithet
+     * @param rank
+     * @param pageSize
+     * @param pageNumber
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listTaxaByName(java.lang.Class, java.lang.String, java.lang.String, java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer)
+     */
+    @Override
+    public List<TaxonBase> listTaxaByName(Class<? extends TaxonBase> clazz, String uninomial, String infragenericEpithet, String specificEpithet, String infraspecificEpithet, Rank rank, Integer pageSize, Integer pageNumber) {
+        return defaultTaxonService.listTaxaByName(clazz, uninomial, infragenericEpithet, specificEpithet, infraspecificEpithet, rank, pageSize, pageNumber);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaAndNames(eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator)
+     */
+    @Override
+    public Pager<IdentifiableEntity> findTaxaAndNames(IFindTaxaAndNamesConfigurator configurator) {
+        return defaultTaxonService.findTaxaAndNames(configurator);
+    }
+
+    /**
+     * @param queryString
+     * @param classification
+     * @param languages
+     * @param highlightFragments
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @throws CorruptIndexException
+     * @throws IOException
+     * @throws ParseException
+     * @throws LuceneMultiSearchException
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findByEverythingFullText(java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public Pager<SearchResult<TaxonBase>> findByEverythingFullText(String queryString, Classification classification, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException, LuceneMultiSearchException {
+        return defaultTaxonService.findByEverythingFullText(queryString, classification, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param classification
+     * @param languages
+     * @param highlightFragments
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @throws CorruptIndexException
+     * @throws IOException
+     * @throws ParseException
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findByFullText(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SearchResult<TaxonBase>> findByFullText(Class<? extends TaxonBase> clazz, String queryString, Classification classification, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException {
+        return defaultTaxonService.findByFullText(clazz, queryString, classification, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param areaFilter
+     * @param statusFilter
+     * @param classification
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @throws IOException
+     * @throws ParseException
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findByDistribution(java.util.List, java.util.List, eu.etaxonomy.cdm.model.taxon.Classification, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SearchResult<TaxonBase>> findByDistribution(List<NamedArea> areaFilter, List<PresenceAbsenceTermBase<?>> statusFilter, Classification classification, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws IOException, ParseException {
+        return defaultTaxonService.findByDistribution(areaFilter, statusFilter, classification, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param searchModes
+     * @param queryString
+     * @param classification
+     * @param namedAreas
+     * @param distributionStatus
+     * @param languages
+     * @param highlightFragments
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @throws CorruptIndexException
+     * @throws IOException
+     * @throws ParseException
+     * @throws LuceneMultiSearchException
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaAndNamesByFullText(java.util.EnumSet, java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, java.util.Set, java.util.Set, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SearchResult<TaxonBase>> findTaxaAndNamesByFullText(EnumSet<TaxaAndNamesSearchMode> searchModes, String queryString, Classification classification, Set<NamedArea> namedAreas, Set<PresenceAbsenceTermBase<?>> distributionStatus, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException, LuceneMultiSearchException {
+        return defaultTaxonService.findTaxaAndNamesByFullText(searchModes, queryString, classification, namedAreas, distributionStatus, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param classification
+     * @param features
+     * @param languages
+     * @param highlightFragments
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @throws CorruptIndexException
+     * @throws IOException
+     * @throws ParseException
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findByDescriptionElementFullText(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.model.taxon.Classification, java.util.List, java.util.List, boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<SearchResult<TaxonBase>> findByDescriptionElementFullText(Class<? extends DescriptionElementBase> clazz, String queryString, Classification classification, List<Feature> features, List<Language> languages, boolean highlightFragments, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) throws CorruptIndexException, IOException, ParseException {
+        return defaultTaxonService.findByDescriptionElementFullText(clazz, queryString, classification, features, languages, highlightFragments, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param taxon
+     * @param size
+     * @param height
+     * @param widthOrDuration
+     * @param mimeTypes
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getAllMedia(eu.etaxonomy.cdm.model.taxon.Taxon, int, int, int, java.lang.String[])
+     */
+    @Deprecated
+    @Override
+    public List<MediaRepresentation> getAllMedia(Taxon taxon, int size, int height, int widthOrDuration, String[] mimeTypes) {
+        return defaultTaxonService.getAllMedia(taxon, size, height, widthOrDuration, mimeTypes);
+    }
+
+    /**
+     * @param taxon
+     * @param includeRelationships
+     * @param limitToGalleries
+     * @param propertyPath
+     * @return
+     * @deprecated
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listTaxonDescriptionMedia(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, boolean, java.util.List)
+     */
+    @Deprecated
+    @Override
+    public List<Media> listTaxonDescriptionMedia(Taxon taxon, Set<TaxonRelationshipEdge> includeRelationships, boolean limitToGalleries, List<String> propertyPath) {
+        return defaultTaxonService.listTaxonDescriptionMedia(taxon, includeRelationships, limitToGalleries, propertyPath);
+    }
+
+    /**
+     * @param taxon
+     * @param includeRelationships
+     * @param limitToGalleries
+     * @param includeTaxonDescriptions
+     * @param includeOccurrences
+     * @param includeTaxonNameDescriptions
+     * @param propertyPath
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listMedia(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.Set, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, java.util.List)
+     */
+    @Override
+    public List<Media> listMedia(Taxon taxon, Set<TaxonRelationshipEdge> includeRelationships, Boolean limitToGalleries, Boolean includeTaxonDescriptions, Boolean includeOccurrences, Boolean includeTaxonNameDescriptions, List<String> propertyPath) {
+        return defaultTaxonService.listMedia(taxon, includeRelationships, limitToGalleries, includeTaxonDescriptions, includeOccurrences, includeTaxonNameDescriptions, propertyPath);
+    }
+
+    /**
+     * @param listOfIDs
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaByID(java.util.Set)
+     */
+    @Override
+    public List<TaxonBase> findTaxaByID(Set<Integer> listOfIDs) {
+        return defaultTaxonService.findTaxaByID(listOfIDs);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxonByUuid(java.util.UUID, java.util.List)
+     */
+    @Override
+    public TaxonBase findTaxonByUuid(UUID uuid, List<String> propertyPaths) {
+        return defaultTaxonService.findTaxonByUuid(uuid, propertyPaths);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#countAllRelationships()
+     */
+    @Override
+    public int countAllRelationships() {
+        return defaultTaxonService.countAllRelationships();
+    }
+
+    /**
+     * @param propertyPath
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findIdenticalTaxonNames(java.util.List)
+     */
+    @Override
+    public List<TaxonNameBase> findIdenticalTaxonNames(List<String> propertyPath) {
+        return defaultTaxonService.findIdenticalTaxonNames(propertyPath);
+    }
+
+    /**
+     * @param propertyPath
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findIdenticalTaxonNameIds(java.util.List)
+     */
+    @Override
+    public List<TaxonNameBase> findIdenticalTaxonNameIds(List<String> propertyPath) {
+        return defaultTaxonService.findIdenticalTaxonNameIds(propertyPath);
+    }
+
+    /**
+     * @param name
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getPhylumName(eu.etaxonomy.cdm.model.name.TaxonNameBase)
+     */
+    @Override
+    public String getPhylumName(TaxonNameBase name) {
+        return defaultTaxonService.getPhylumName(name);
+    }
+
+    /**
+     * @param syn
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonymRelationships(eu.etaxonomy.cdm.model.taxon.Synonym)
+     */
+    @Override
+    public long deleteSynonymRelationships(Synonym syn) {
+        return defaultTaxonService.deleteSynonymRelationships(syn);
+    }
+
+    /**
+     * @param taxonBase
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @param direction
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#listSynonymRelationships(eu.etaxonomy.cdm.model.taxon.TaxonBase, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List, eu.etaxonomy.cdm.model.common.RelationshipBase.Direction)
+     */
+    @Override
+    public List<SynonymRelationship> listSynonymRelationships(TaxonBase taxonBase, SynonymRelationshipType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths, Direction direction) {
+        return defaultTaxonService.listSynonymRelationships(taxonBase, type, pageSize, pageNumber, orderHints, propertyPaths, direction);
+    }
+
+    /**
+     * @param taxonName
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findBestMatchingTaxon(java.lang.String)
+     */
+    @Override
+    public Taxon findBestMatchingTaxon(String taxonName) {
+        return defaultTaxonService.findBestMatchingTaxon(taxonName);
+    }
+
+    /**
+     * @param config
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findBestMatchingTaxon(eu.etaxonomy.cdm.api.service.config.MatchingTaxonConfigurator)
+     */
+    @Override
+    public Taxon findBestMatchingTaxon(MatchingTaxonConfigurator config) {
+        return defaultTaxonService.findBestMatchingTaxon(config);
+    }
+
+    /**
+     * @param taxonName
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findBestMatchingSynonym(java.lang.String)
+     */
+    @Override
+    public Synonym findBestMatchingSynonym(String taxonName) {
+        return defaultTaxonService.findBestMatchingSynonym(taxonName);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getUuidAndTitleCacheTaxon()
+     */
+    @Override
+    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheTaxon() {
+        return defaultTaxonService.getUuidAndTitleCacheTaxon();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getUuidAndTitleCacheSynonym()
+     */
+    @Override
+    public List<UuidAndTitleCache<TaxonBase>> getUuidAndTitleCacheSynonym() {
+        return defaultTaxonService.getUuidAndTitleCacheSynonym();
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#findTaxaAndNamesForEditor(eu.etaxonomy.cdm.api.service.config.IFindTaxaAndNamesConfigurator)
+     */
+    @Override
+    public List<UuidAndTitleCache<TaxonBase>> findTaxaAndNamesForEditor(IFindTaxaAndNamesConfigurator configurator) {
+        return defaultTaxonService.findTaxaAndNamesForEditor(configurator);
+    }
+
+    /**
+     * @param taxon
+     * @param tree
+     * @param type
+     * @param doWithMisappliedNames
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#createInferredSynonyms(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, boolean)
+     */
+    @Override
+    public List<Synonym> createInferredSynonyms(Taxon taxon, Classification tree, SynonymRelationshipType type, boolean doWithMisappliedNames) {
+        return defaultTaxonService.createInferredSynonyms(taxon, tree, type, doWithMisappliedNames);
+    }
+
+    /**
+     * @param taxon
+     * @param tree
+     * @param doWithMisappliedNames
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#createAllInferredSynonyms(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.Classification, boolean)
+     */
+    @Override
+    public List<Synonym> createAllInferredSynonyms(Taxon taxon, Classification tree, boolean doWithMisappliedNames) {
+        return defaultTaxonService.createAllInferredSynonyms(taxon, tree, doWithMisappliedNames);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator)
+     */
+    @Override
+    public void deleteSynonym(Synonym arg0, SynonymDeletionConfigurator arg1) {
+        defaultTaxonService.deleteSynonym(arg0, arg1);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.api.service.config.SynonymDeletionConfigurator)
+     */
+    @Override
+    public void deleteSynonym(Synonym arg0, Taxon arg1, SynonymDeletionConfigurator arg2) {
+        defaultTaxonService.deleteSynonym(arg0, arg1, arg2);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#deleteTaxon(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator, eu.etaxonomy.cdm.model.taxon.Classification)
+     */
+    @Override
+    public UUID deleteTaxon(Taxon arg0, TaxonDeletionConfigurator arg1, Classification arg2)
+            throws DataChangeNoRollbackException {
+        return defaultTaxonService.deleteTaxon(arg0, arg1, arg2);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.service.ITaxonService#getSynonymsByHomotypicGroup(eu.etaxonomy.cdm.model.taxon.Taxon, java.util.List)
+     */
+    @Override
+    public List<List<Synonym>> getSynonymsByHomotypicGroup(Taxon taxon, List<String> propertyPaths) {
+        return defaultTaxonService.getSynonymsByHomotypicGroup(taxon, propertyPaths);
+    }
+
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTermService.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/transientServices/TransientTermService.java
new file mode 100644 (file)
index 0000000..d8b1269
--- /dev/null
@@ -0,0 +1,857 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.transientServices;
+
+import java.net.URI;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.hibernate.LockMode;
+import org.hibernate.Session;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.envers.query.criteria.AuditCriterion;
+
+import eu.etaxonomy.cdm.api.service.DeleteResult;
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.config.TermDeletionConfigurator;
+import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
+import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.common.monitor.IProgressMonitor;
+import eu.etaxonomy.cdm.model.common.Annotation;
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.common.ISourceable;
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+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.LanguageStringBase;
+import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
+import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
+import eu.etaxonomy.cdm.model.location.NamedAreaType;
+import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.view.AuditEvent;
+import eu.etaxonomy.cdm.model.view.AuditEventRecord;
+import eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort;
+import eu.etaxonomy.cdm.persistence.query.Grouping;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.cdm.persistence.query.OrderHint;
+import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy;
+import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
+import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
+
+/**
+ * @author pplitzner
+ * @date 27.09.2013
+ *
+ */
+public class TransientTermService implements ITermService {
+
+    private ITermService defaultTermService;
+
+    /**
+     * @param defaultTermService
+     */
+    public TransientTermService(ITermService defaultTermService) {
+        this.defaultTermService = defaultTermService;
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(eu.etaxonomy.cdm.model.common.VersionableEntity, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<DefinedTermBase>> pageAuditEvents(DefinedTermBase t, Integer pageSize, Integer pageNumber, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultTermService.pageAuditEvents(t, pageSize, pageNumber, sort, propertyPaths);
+    }
+
+    /**
+     * @param annotatedObj
+     * @param status
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getAnnotations(eu.etaxonomy.cdm.model.common.AnnotatableEntity, eu.etaxonomy.cdm.model.common.MarkerType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Annotation> getAnnotations(DefinedTermBase annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.getAnnotations(annotatedObj, status, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IService#clear()
+     */
+    @Override
+    public void clear() {
+        defaultTermService.clear();
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @see eu.etaxonomy.cdm.api.service.IService#lock(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode)
+     */
+    @Override
+    public void lock(DefinedTermBase t, LockMode lockMode) {
+        defaultTermService.lock(t, lockMode);
+    }
+
+    /**
+     * @param uri
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#getByUri(java.net.URI)
+     */
+    @Override
+    public DefinedTermBase getByUri(URI uri) {
+        return defaultTermService.getByUri(uri);
+    }
+
+    /**
+     * @param t
+     * @param lockMode
+     * @param propertyPaths
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase, org.hibernate.LockMode, java.util.List)
+     */
+    @Override
+    public void refresh(DefinedTermBase t, LockMode lockMode, List<String> propertyPaths) {
+        defaultTermService.refresh(t, lockMode, propertyPaths);
+    }
+
+    /**
+     * @param languageData
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#saveLanguageData(eu.etaxonomy.cdm.model.common.LanguageStringBase)
+     */
+    @Override
+    public UUID saveLanguageData(LanguageStringBase languageData) {
+        return null;
+    }
+
+    /**
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#getAllLanguageStrings(int, int)
+     */
+    @Override
+    public List<LanguageString> getAllLanguageStrings(int limit, int start) {
+        return defaultTermService.getAllLanguageStrings(limit, start);
+    }
+
+    /**
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#getAllRepresentations(int, int)
+     */
+    @Override
+    public List<Representation> getAllRepresentations(int limit, int start) {
+        return defaultTermService.getAllRepresentations(limit, start);
+    }
+
+    /**
+     *
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache()
+     */
+    @Override
+    public void updateTitleCache() {
+        defaultTermService.updateTitleCache();
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getNextAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<DefinedTermBase> getNextAuditEvent(DefinedTermBase t) {
+        return defaultTermService.getNextAuditEvent(t);
+    }
+
+    /**
+     * @param iso639
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#getLanguageByIso(java.lang.String)
+     */
+    @Override
+    public Language getLanguageByIso(String iso639) {
+        return defaultTermService.getLanguageByIso(iso639);
+    }
+
+    /**
+     * @param locales
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#getLanguagesByLocale(java.util.Enumeration)
+     */
+    @Override
+    public List<Language> getLanguagesByLocale(Enumeration<Locale> locales) {
+        return defaultTermService.getLanguagesByLocale(locales);
+    }
+
+    /**
+     * @param tdwgAbbreviation
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#getAreaByTdwgAbbreviation(java.lang.String)
+     */
+    @Override
+    public NamedArea getAreaByTdwgAbbreviation(String tdwgAbbreviation) {
+        return defaultTermService.getAreaByTdwgAbbreviation(tdwgAbbreviation);
+    }
+
+    /**
+     * @param annotatableEntity
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#getMarkers(eu.etaxonomy.cdm.model.common.AnnotatableEntity, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<Marker> getMarkers(DefinedTermBase annotatableEntity, Boolean technical, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.getMarkers(annotatableEntity, technical, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param definedTerm
+     * @param pageSize
+     * @param pageNumber
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#getMedia(eu.etaxonomy.cdm.model.common.DefinedTermBase, java.lang.Integer, java.lang.Integer)
+     */
+    @Override
+    public Pager<Media> getMedia(DefinedTermBase definedTerm, Integer pageSize, Integer pageNumber) {
+        return defaultTermService.getMedia(definedTerm, pageSize, pageNumber);
+    }
+
+    /**
+     * @param clazz
+     * @param stepSize
+     * @param cacheStrategy
+     * @param monitor
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#updateTitleCache(java.lang.Class, java.lang.Integer, eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy, eu.etaxonomy.cdm.common.monitor.IProgressMonitor)
+     */
+    @Override
+    public void updateTitleCache(Class<? extends DefinedTermBase> clazz, Integer stepSize, IIdentifiableEntityCacheStrategy<DefinedTermBase> cacheStrategy, IProgressMonitor monitor) {
+        defaultTermService.updateTitleCache(clazz, stepSize, cacheStrategy, monitor);
+    }
+
+    /**
+     * @param t
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#getPreviousAuditEvent(eu.etaxonomy.cdm.model.common.VersionableEntity)
+     */
+    @Override
+    public AuditEventRecord<DefinedTermBase> getPreviousAuditEvent(DefinedTermBase t) {
+        return defaultTermService.getPreviousAuditEvent(t);
+    }
+
+    /**
+     * @param clazz
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#count(java.lang.Class)
+     */
+    @Override
+    public int count(Class<? extends DefinedTermBase> clazz) {
+        return defaultTermService.count(clazz);
+    }
+
+    /**
+     * @param level
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#list(eu.etaxonomy.cdm.model.location.NamedAreaLevel, eu.etaxonomy.cdm.model.location.NamedAreaType, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<NamedArea> list(NamedAreaLevel level, NamedAreaType type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.list(level, type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param from
+     * @param to
+     * @param criteria
+     * @param pageSize
+     * @param pageValue
+     * @param sort
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IVersionableService#pageAuditEvents(java.lang.Class, eu.etaxonomy.cdm.model.view.AuditEvent, eu.etaxonomy.cdm.model.view.AuditEvent, java.util.List, java.lang.Integer, java.lang.Integer, eu.etaxonomy.cdm.persistence.dao.common.AuditEventSort, java.util.List)
+     */
+    @Override
+    public Pager<AuditEventRecord<DefinedTermBase>> pageAuditEvents(Class<? extends DefinedTermBase> clazz, AuditEvent from, AuditEvent to, List<AuditCriterion> criteria, Integer pageSize, Integer pageValue, AuditEventSort sort, List<String> propertyPaths) {
+        return defaultTermService.pageAuditEvents(clazz, from, to, criteria, pageSize, pageValue, sort, propertyPaths);
+    }
+
+    /**
+     * @param lsid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#find(eu.etaxonomy.cdm.model.common.LSID)
+     */
+    @Override
+    public DefinedTermBase find(LSID lsid) {
+        return defaultTermService.find(lsid);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#delete(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID delete(DefinedTermBase persistentObject) throws ReferencedObjectUndeletableException{
+        return defaultTermService.delete(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#groupMarkers(java.lang.Class, java.lang.Boolean, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public List<Object[]> groupMarkers(Class<? extends DefinedTermBase> clazz, Boolean technical, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultTermService.groupMarkers(clazz, technical, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#exists(java.util.UUID)
+     */
+    @Override
+    public boolean exists(UUID uuid) {
+        return defaultTermService.exists(uuid);
+    }
+
+    /**
+     * @param x
+     * @param y
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#replace(eu.etaxonomy.cdm.model.common.IdentifiableEntity, eu.etaxonomy.cdm.model.common.IdentifiableEntity)
+     */
+    @Override
+    public DefinedTermBase replace(DefinedTermBase x, DefinedTermBase y) {
+        return defaultTermService.replace(x, y);
+    }
+
+    /**
+     * @param definedTerm
+     * @param pageSize
+     * @param pageNumber
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#getGeneralizationOf(eu.etaxonomy.cdm.model.common.DefinedTermBase, java.lang.Integer, java.lang.Integer)
+     */
+    @Override
+    public <T extends DefinedTermBase> Pager<T> getGeneralizationOf(T definedTerm, Integer pageSize, Integer pageNumber) {
+        return defaultTermService.getGeneralizationOf(definedTerm, pageSize, pageNumber);
+    }
+
+    /**
+     * @param uuidSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.Set)
+     */
+    @Override
+    public List<DefinedTermBase> find(Set<UUID> uuidSet) {
+        return defaultTermService.find(uuidSet);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSources(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<IdentifiableSource> getSources(DefinedTermBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultTermService.getSources(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(java.util.UUID)
+     */
+    @Override
+    public DefinedTermBase find(UUID uuid) {
+        return defaultTermService.find(uuid);
+    }
+
+    /**
+     * @param definedTerms
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#getPartOf(java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public <T extends DefinedTermBase> Pager<T> getPartOf(Set<T> definedTerms, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultTermService.getPartOf(definedTerms, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param id
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#find(int)
+     */
+    @Override
+    public DefinedTermBase find(int id) {
+        return defaultTermService.find(id);
+    }
+
+    /**
+     * @param t
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getRights(eu.etaxonomy.cdm.model.common.IdentifiableEntity, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public Pager<Rights> getRights(DefinedTermBase t, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultTermService.getRights(t, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param technical
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IAnnotatableService#countMarkers(java.lang.Class, java.lang.Boolean)
+     */
+    @Override
+    public int countMarkers(Class<? extends DefinedTermBase> clazz, Boolean technical) {
+        return defaultTermService.countMarkers(clazz, technical);
+    }
+
+    /**
+     * @param idSet
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#findById(java.util.Set)
+     */
+    @Override
+    public List<DefinedTermBase> findById(Set<Integer> idSet) {
+        return defaultTermService.findById(idSet);
+    }
+
+    /**
+     * @param definedTerms
+     * @param pageSize
+     * @param pageNumber
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#getIncludes(java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List)
+     */
+    @Override
+    public <T extends DefinedTermBase> Pager<T> getIncludes(Set<T> definedTerms, Integer pageSize, Integer pageNumber, List<String> propertyPaths) {
+        return defaultTermService.getIncludes(definedTerms, pageSize, pageNumber, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param idInSource
+     * @param idNamespace
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getSourcedObjectByIdInSource(java.lang.Class, java.lang.String, java.lang.String)
+     */
+    @Override
+    public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {
+        return defaultTermService.getSourcedObjectByIdInSource(clazz, idInSource, idNamespace);
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#getSession()
+     */
+    @Override
+    public Session getSession() {
+        return defaultTermService.getSession();
+    }
+
+    /**
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#getUuidAndTitleCache()
+     */
+    @Override
+    public List<UuidAndTitleCache<DefinedTermBase>> getUuidAndTitleCache() {
+        return defaultTermService.getUuidAndTitleCache();
+    }
+
+    /**
+     * @param clazz
+     * @param limit
+     * @param start
+     * @param groups
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#group(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<Object[]> group(Class<? extends DefinedTermBase> clazz, Integer limit, Integer start, List<Grouping> groups, List<String> propertyPaths) {
+        return defaultTermService.group(clazz, limit, start, groups, propertyPaths);
+    }
+
+    /**
+     * @param label
+     * @param clazz
+     * @param pageSize
+     * @param pageNumber
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#findByRepresentationText(java.lang.String, java.lang.Class, java.lang.Integer, java.lang.Integer)
+     */
+    @Override
+    public <T extends DefinedTermBase> Pager<T> findByRepresentationText(String label, Class<T> clazz, Integer pageSize, Integer pageNumber) {
+        return defaultTermService.findByRepresentationText(label, clazz, pageSize, pageNumber);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<DefinedTermBase> findByTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.findByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param abbrev
+     * @param clazz
+     * @param pageSize
+     * @param pageNumber
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#findByRepresentationAbbreviation(java.lang.String, java.lang.Class, java.lang.Integer, java.lang.Integer)
+     */
+    @Override
+    public <T extends DefinedTermBase> Pager<T> findByRepresentationAbbreviation(String abbrev, Class<T> clazz, Integer pageSize, Integer pageNumber) {
+        return defaultTermService.findByRepresentationAbbreviation(abbrev, clazz, pageSize, pageNumber);
+    }
+
+    /**
+     * @param type
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<DefinedTermBase> list(Class<? extends DefinedTermBase> type, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.list(type, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#listByTermClass(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public <TERM extends DefinedTermBase> List<TERM> listByTermClass(Class<TERM> clazz, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.listByTermClass(clazz, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param term
+     * @param config
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.ITermService#delete(eu.etaxonomy.cdm.model.common.DefinedTermBase, eu.etaxonomy.cdm.api.service.config.TermDeletionConfigurator)
+     */
+    @Override
+    public DeleteResult delete(DefinedTermBase term, TermDeletionConfigurator config) {
+        return defaultTermService.delete(term, config);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Pager<DefinedTermBase> findByTitle(IIdentifiableEntityServiceConfigurator<DefinedTermBase> configurator) {
+        return defaultTermService.findByTitle(configurator);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
+     */
+    @Override
+    public Integer countByTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria) {
+        return defaultTermService.countByTitle(clazz, queryString, matchmode, criteria);
+    }
+
+    /**
+     * @param uuid
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID)
+     */
+    @Override
+    public DefinedTermBase load(UUID uuid) {
+        return defaultTermService.load(uuid);
+    }
+
+    /**
+     * @param uuid
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#load(java.util.UUID, java.util.List)
+     */
+    @Override
+    public DefinedTermBase load(UUID uuid, List<String> propertyPaths) {
+        return defaultTermService.load(uuid, propertyPaths);
+    }
+
+    /**
+     * @param configurator
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#countByTitle(eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator)
+     */
+    @Override
+    public Integer countByTitle(IIdentifiableEntityServiceConfigurator<DefinedTermBase> configurator) {
+        return defaultTermService.countByTitle(configurator);
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#merge(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public DefinedTermBase merge(DefinedTermBase transientObject) {
+        return defaultTermService.merge(transientObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<DefinedTermBase> listByTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.listByTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param type
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#page(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<DefinedTermBase> page(Class<? extends DefinedTermBase> type, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.page(type, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param persistentObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#refresh(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID refresh(DefinedTermBase persistentObject) {
+        return defaultTermService.refresh(persistentObject);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param matchmode
+     * @param criteria
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#listByReferenceTitle(java.lang.Class, java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<DefinedTermBase> listByReferenceTitle(Class<? extends DefinedTermBase> clazz, String queryString, MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.listByReferenceTitle(clazz, queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param tableName
+     * @param limit
+     * @param start
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#rows(java.lang.String, int, int)
+     */
+    @Override
+    public List<DefinedTermBase> rows(String tableName, int limit, int start) {
+        return defaultTermService.rows(tableName, limit, start);
+    }
+
+    /**
+     * @param newInstances
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, DefinedTermBase> save(Collection<DefinedTermBase> newInstances) {
+        return null;
+    }
+
+    /**
+     * @param newInstance
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#save(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID save(DefinedTermBase newInstance) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID saveOrUpdate(DefinedTermBase transientObject) {
+        return null;
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#search(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public Pager<DefinedTermBase> search(Class<? extends DefinedTermBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.search(clazz, queryString, pageSize, pageNumber, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param transientObjects
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#saveOrUpdate(java.util.Collection)
+     */
+    @Override
+    public Map<UUID, DefinedTermBase> saveOrUpdate(Collection<DefinedTermBase> transientObjects) {
+        return null;
+    }
+
+    /**
+     * @param transientObject
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#update(eu.etaxonomy.cdm.model.common.ICdmBase)
+     */
+    @Override
+    public UUID update(DefinedTermBase transientObject) {
+        return defaultTermService.update(transientObject);
+    }
+
+    /**
+     * @param example
+     * @param includeProperties
+     * @param limit
+     * @param start
+     * @param orderHints
+     * @param propertyPaths
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IService#list(eu.etaxonomy.cdm.model.common.ICdmBase, java.util.Set, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
+     */
+    @Override
+    public List<DefinedTermBase> list(DefinedTermBase example, Set<String> includeProperties, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {
+        return defaultTermService.list(example, includeProperties, limit, start, orderHints, propertyPaths);
+    }
+
+    /**
+     * @param clazz
+     * @param matchStrategy
+     * @param mergeStrategy
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#deduplicate(java.lang.Class, eu.etaxonomy.cdm.strategy.match.IMatchStrategy, eu.etaxonomy.cdm.strategy.merge.IMergeStrategy)
+     */
+    @Override
+    public int deduplicate(Class<? extends DefinedTermBase> clazz, IMatchStrategy matchStrategy, IMergeStrategy mergeStrategy) {
+        return defaultTermService.deduplicate(clazz, matchStrategy, mergeStrategy);
+    }
+
+    /**
+     * @param clazz
+     * @param queryString
+     * @param pageSize
+     * @param pageNumber
+     * @param orderHints
+     * @param matchMode
+     * @return
+     * @see eu.etaxonomy.cdm.api.service.IIdentifiableEntityService#findTitleCache(java.lang.Class, java.lang.String, java.lang.Integer, java.lang.Integer, java.util.List, eu.etaxonomy.cdm.persistence.query.MatchMode)
+     */
+    @Override
+    public Pager<DefinedTermBase> findTitleCache(Class<? extends DefinedTermBase> clazz, String queryString, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, MatchMode matchMode) {
+        return defaultTermService.findTitleCache(clazz, queryString, pageSize, pageNumber, orderHints, matchMode);
+    }
+
+
+
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/wizard/SpecimenSearchWizard.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/wizard/SpecimenSearchWizard.java
new file mode 100644 (file)
index 0000000..6264201
--- /dev/null
@@ -0,0 +1,92 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.wizard;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.IImportWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+
+import eu.etaxonomy.cdm.ext.biocase.BioCaseQuery;
+import eu.etaxonomy.taxeditor.dataimport.DataImportEditor;
+import eu.etaxonomy.taxeditor.dataimport.DerivedUnitEditorInput;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * Wizard for querying BioCASe provider.
+ * @author pplitzner
+ * @date 11.09.2013
+ *
+ */
+public class SpecimenSearchWizard extends Wizard implements IImportWizard {
+    @SuppressWarnings("unused")
+    private static final Logger logger = Logger.getLogger(SpecimenSearchWizard.class);
+
+    private BioCaseQuery query;
+    private SpecimenSearchWizardPage searchPage;
+
+    /**
+     * Creates a new SpecimenSearchWizard
+     */
+    public SpecimenSearchWizard() {
+        //default constructor needed for RCP extension points
+
+        //check if connected to a data source. If not this will open an error dialog
+        CdmStore.getCurrentApplicationConfiguration();
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.wizard.Wizard#performFinish()
+     */
+    @Override
+    public boolean performFinish() {
+        IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+
+        try {
+            query = searchPage.getQuery();
+            DerivedUnitEditorInput input = new DerivedUnitEditorInput(query);
+            page.openEditor(input, DataImportEditor.ID, true);
+        } catch ( PartInitException e ) {
+            //Put your exception handler here if you wish to
+        }
+        return true;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.wizard.Wizard#addPages()
+     */
+    @Override
+    public void addPages() {
+        addPage(searchPage);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
+     */
+    @Override
+    public void init(IWorkbench workbench, IStructuredSelection selection) {
+        query = new BioCaseQuery();
+        searchPage = new SpecimenSearchWizardPage("Specimen Search");
+    }
+
+    /**
+     * Return a {@link BioCaseQuery} with the parameters entered in the wizard
+     * @return the query
+     */
+    public BioCaseQuery getQuery() {
+        return query;
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/wizard/SpecimenSearchWizardPage.java b/eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/dataimport/wizard/SpecimenSearchWizardPage.java
new file mode 100644 (file)
index 0000000..080c85f
--- /dev/null
@@ -0,0 +1,59 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.dataimport.wizard;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.ext.biocase.BioCaseQuery;
+import eu.etaxonomy.taxeditor.ui.campanula.specimenSearch.SpecimenSearchController;
+
+
+/**
+ * Wizard page for entering search parameters
+ * @author pplitzner
+ * @date 12.09.2013
+ *
+ */
+public class SpecimenSearchWizardPage extends WizardPage{
+
+    private SpecimenSearchController specimenSearchController;
+
+    protected SpecimenSearchWizardPage(String pageName) {
+        super(pageName);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
+     */
+    @Override
+    public void createControl(Composite parent) {
+        specimenSearchController = new SpecimenSearchController(parent);
+        setControl(specimenSearchController.getComposite());
+    }
+
+    /**
+     * Returns a {@link BioCaseQuery} filled with the parameters defined in this wizard page
+     * @return
+     */
+    public BioCaseQuery getQuery() {
+        BioCaseQuery query = new BioCaseQuery();
+        query.accessionNumber = specimenSearchController.getAccessionNumber();
+        query.collector = specimenSearchController.getCollector();
+        query.collectorsNumber = specimenSearchController.getCollectorNumber();
+        query.country = specimenSearchController.getCountry();
+//        query.date = specimenSearchController.getDate();
+        query.herbarium = specimenSearchController.getHerbarium();
+        query.locality = specimenSearchController.getLocality();
+        query.taxonName = specimenSearchController.getTaxonName();
+        return query;
+    }
+
+}
index 6d9c7e8a0453e81b2a445cf1161001720b83f4e2..eba26448fed2ea7a23beafa38801e574c26813a0 100644 (file)
        <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/spring-aop-3.2.2.RELEASE.jar"/>
-       <classpathentry exported="true" kind="lib" path="lib/spring-beans-3.2.2.RELEASE.jar"/>
+       <classpathentry exported="true" kind="lib" path="lib/spring-beans-3.2.2.RELEASE.jar" sourcepath="/home/pplitzner/.m2/repository/org/springframework/org.springframework.beans/3.2.2.RELEASE/org.springframework.beans-3.2.2.RELEASE-sources.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/spring-context-3.2.2.RELEASE.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/spring-context-support-3.2.2.RELEASE.jar"/>
        <classpathentry exported="true" kind="lib" path="lib/spring-core-3.2.2.RELEASE.jar"/>
index 9a498aca84582754759d372d6e38f57016241cd9..a0d8cd0024bc47c7ec9da813b7a2c084944824da 100644 (file)
@@ -35,6 +35,7 @@ Export-Package: com.google.api,
  eu.etaxonomy.cdm.database.update.v25_30,
  eu.etaxonomy.cdm.database.update.v30_31,
  eu.etaxonomy.cdm.ext.bci,
+ eu.etaxonomy.cdm.ext.biocase,
  eu.etaxonomy.cdm.ext.common,
  eu.etaxonomy.cdm.ext.dc,
  eu.etaxonomy.cdm.ext.geo,
@@ -183,6 +184,7 @@ Export-Package: com.google.api,
  org.apache.commons.lang;uses:="org.apache.commons.lang.exception",
  org.apache.fop.apps,
  org.apache.http,
+ org.apache.http.client,
  org.apache.log4j;uses:="org.apache.log4j.helpers,org.apache.log4j.or,org.apache.log4j.spi",
  org.apache.log4j.chainsaw;
   uses:="org.apache.log4j,
@@ -237,6 +239,8 @@ Export-Package: com.google.api,
    org.apache.log4j.spi,
    org.w3c.dom,
    org.xml.sax",
+ org.apache.lucene.index,
+ org.apache.lucene.queryParser,
  org.apache.lucene.util,
  org.apache.sanselan;uses:="org.apache.sanselan.common,org.apache.sanselan.common.byteSources",
  org.apache.xerces.dom,
@@ -246,7 +250,10 @@ Export-Package: com.google.api,
  org.hibernate.annotations.common.reflection,
  org.hibernate.cache.internal,
  org.hibernate.classic,
+ org.hibernate.criterion,
+ org.hibernate.envers.query.criteria,
  org.hibernate.search,
+ org.hibernate.search.spatial.impl,
  org.jadira.usertype.dateandtime.joda,
  org.jadira.usertype.dateandtime.shared.spi,
  org.jboss.logging,
@@ -592,4 +599,20 @@ Bundle-ClassPath: .,
  lib/yjp-controller-api-redist-9.0.8.jar,
  lib/google-api-translate-java-0.92.jar,
  lib/odfdom-0.8.jar,
- lib/h2mig_pagestore_addon.jar
+ lib/h2mig_pagestore_addon.jar,
+ lib/cdmlib-commons-3.2.4-SNAPSHOT-sources.jar,
+ lib/cdmlib-commons-3.2.4-SNAPSHOT.jar,
+ lib/cdmlib-ext-3.2.4-SNAPSHOT-sources.jar,
+ lib/cdmlib-ext-3.2.4-SNAPSHOT.jar,
+ lib/cdmlib-io-3.2.4-SNAPSHOT-sources.jar,
+ lib/cdmlib-io-3.2.4-SNAPSHOT.jar,
+ lib/cdmlib-model-3.2.4-SNAPSHOT-sources.jar,
+ lib/cdmlib-model-3.2.4-SNAPSHOT.jar,
+ lib/cdmlib-persistence-3.2.4-SNAPSHOT-sources.jar,
+ lib/cdmlib-persistence-3.2.4-SNAPSHOT.jar,
+ lib/cdmlib-print-3.2.4-SNAPSHOT-sources.jar,
+ lib/cdmlib-print-3.2.4-SNAPSHOT.jar,
+ lib/cdmlib-remote-3.2.4-SNAPSHOT-sources.jar,
+ lib/cdmlib-remote-3.2.4-SNAPSHOT.jar,
+ lib/cdmlib-services-3.2.4-SNAPSHOT-sources.jar,
+ lib/cdmlib-services-3.2.4-SNAPSHOT.jar
index f1fbc5b03f88720a74aa2e8621cd53e7679dc8a1..50c772a2bbd09addd37618579e2653442141fcf5 100644 (file)
@@ -200,5 +200,21 @@ bin.includes = META-INF/,\
                lib/yjp-controller-api-redist-9.0.8.jar,\\r
                lib/google-api-translate-java-0.92.jar,\\r
                lib/odfdom-0.8.jar,\\r
-               lib/h2mig_pagestore_addon.jar\r
+               lib/h2mig_pagestore_addon.jar,\\r
+               lib/cdmlib-commons-3.2.4-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-commons-3.2.4-SNAPSHOT.jar,\\r
+               lib/cdmlib-ext-3.2.4-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-ext-3.2.4-SNAPSHOT.jar,\\r
+               lib/cdmlib-io-3.2.4-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-io-3.2.4-SNAPSHOT.jar,\\r
+               lib/cdmlib-model-3.2.4-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-model-3.2.4-SNAPSHOT.jar,\\r
+               lib/cdmlib-persistence-3.2.4-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-persistence-3.2.4-SNAPSHOT.jar,\\r
+               lib/cdmlib-print-3.2.4-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-print-3.2.4-SNAPSHOT.jar,\\r
+               lib/cdmlib-remote-3.2.4-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-remote-3.2.4-SNAPSHOT.jar,\\r
+               lib/cdmlib-services-3.2.4-SNAPSHOT-sources.jar,\\r
+               lib/cdmlib-services-3.2.4-SNAPSHOT.jar\r
 \r
index 9fb167cc8644ced846238dee40784f7341832719..4cf488ee33f1a17bac6e7badc2adfac6cf54f75d 100644 (file)
Binary files a/eu.etaxonomy.taxeditor.cdmlib/lib/org.eclipse.equinox.common-3.6.0.v20110523.jar and b/eu.etaxonomy.taxeditor.cdmlib/lib/org.eclipse.equinox.common-3.6.0.v20110523.jar differ
index 25f118068392d39fda76feea6c855dfb3633db17..f131a431cbf20a8f2194c84912950bd3e0a6485b 100644 (file)
Binary files a/eu.etaxonomy.taxeditor.cdmlib/lib/org.eclipse.osgi-3.7.2.v20120110-1415.jar and b/eu.etaxonomy.taxeditor.cdmlib/lib/org.eclipse.osgi-3.7.2.v20120110-1415.jar differ
diff --git a/eu.etaxonomy.taxeditor.editor/icons/leaf_detail.png b/eu.etaxonomy.taxeditor.editor/icons/leaf_detail.png
new file mode 100644 (file)
index 0000000..217c601
Binary files /dev/null and b/eu.etaxonomy.taxeditor.editor/icons/leaf_detail.png differ
index 21fe756d109de4a24c9894073eedae466cbba132..a02e50e30d43e339e60e2871afa5cead2c00859b 100644 (file)
             id="eu.etaxonomy.taxeditor.editor.group.authority"
             name="Cdm Authority Editor">
       </editor>
+      <editor
+            class="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"
+            default="false"
+            id="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"
+            name="Derivate View">
+      </editor>
    </extension>
       <extension
             point="org.eclipse.ui.views">
          <view
                allowMultiple="false"
+               category="eu.etaxonomy.taxeditor.editor.category"
                class="eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart"
                icon="icons/address-book-new.png"
                id="eu.etaxonomy.taxeditor.editor.view.descriptive"
                restorable="true">
          </view>
           <view
-               allowMultiple="false"
-               class="eu.etaxonomy.taxeditor.editor.view.uses.UsesViewPart"
-               icon="icons/leaf.png"
-               id="eu.etaxonomy.taxeditor.editor.view.uses"
-               name="Uses"
-               restorable="true">
+                allowMultiple="false"
+                category="eu.etaxonomy.taxeditor.editor.category"
+                class="eu.etaxonomy.taxeditor.editor.view.uses.UsesViewPart"
+                icon="icons/leaf.png"
+                id="eu.etaxonomy.taxeditor.editor.view.uses"
+                name="Uses"
+                restorable="true">
          </view>
          <view
                allowMultiple="false"
+               category="eu.etaxonomy.taxeditor.editor.category"
                class="eu.etaxonomy.taxeditor.editor.view.media.MediaViewPart"
                icon="icons/camera-photo.png"
                id="eu.etaxonomy.taxeditor.editor.view.media"
                restorable="true">
          </view>
          <view
+               category="eu.etaxonomy.taxeditor.editor.category"
                class="eu.etaxonomy.taxeditor.editor.view.concept.ConceptViewPart"
                id="eu.etaxonomy.taxeditor.editor.view.concept"
                name="Concept Relations"
                restorable="true">
          </view>
          <view
+               category="eu.etaxonomy.taxeditor.editor.category"
                class="eu.etaxonomy.taxeditor.editor.view.concept.graph.ConceptGraphView"
                icon="icons/address-book-new.png"
                id="eu.etaxonomy.taxeditor.editor.view.concept.graph"
                name="Concept Graph"
                restorable="true">
          </view>
+         <category
+               id="eu.etaxonomy.taxeditor.editor.category"
+               name="Taxonomic Editor">
+         </category>
       </extension>
    <extension
          point="org.eclipse.ui.elementFactories">
                style="push">
          </command>
       </menuContribution>
+      <menuContribution
+            locationURI="popup:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
+         <menu
+               label="New Derivate">
+            <dynamic
+                  class="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu"
+                  id="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu">
+            </dynamic>
+            <visibleWhen
+                  checkEnabled="true">
+               <reference
+                     definitionId="isSpecimenOrObservation">
+               </reference>
+            </visibleWhen>
+         </menu>
+      </menuContribution>
       
       
       
             id="eu.etaxonomy.taxeditor.group.cdmauthorities.edit"
             name="Edit CDM Authorities">
       </command>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.editor.handler.OpenDerivateViewHandler"
+            id="eu.etaxonomy.taxeditor.editor.handler.openDerivateView"
+            name="Open Derivate View">
+      </command>
    </extension>
    <extension
          point="org.eclipse.core.expressions.definitions">
             </test>
          </with>
       </definition>
+      <definition
+            id="isSpecimenOrObservation">
+         <with
+               variable="selection">
+            <test
+                  property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester.isSpecimenOrObservation">
+            </test>
+         </with>
+      </definition>
    </extension>
    <extension
          point="org.eclipse.core.expressions.propertyTesters">
             properties="isGroup"
             type="eu.etaxonomy.taxeditor.bulkeditor.BulkEditor">
       </propertyTester>
+      <propertyTester
+            class="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
+            id="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
+            namespace="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
+            properties="isSpecimenOrObservation"
+            type="org.eclipse.jface.viewers.TreeSelection">
+      </propertyTester>
    </extension>
    <extension
          point="org.eclipse.ui.bindings">   
index a951ef9030fb6dfa797c384340a67361a46f2350..e2a8ee77bdc90a865d8ca77f7f03635a79b8fb2d 100644 (file)
@@ -1,8 +1,8 @@
 /**
  * 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.
  */
@@ -26,16 +26,21 @@ import org.eclipse.ui.IEditorReference;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.taxeditor.editor.group.authority.CdmAuthorityEditor;
 import eu.etaxonomy.taxeditor.editor.group.authority.CdmAuthorityEditorInput;
 import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
 import eu.etaxonomy.taxeditor.editor.key.KeyEditor;
 import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorInput;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 
 /**
  * Utility for the editor package
- * 
+ *
  * @author n.hoffmann
  * @created 20.01.2009
  * @version 1.0
@@ -46,7 +51,7 @@ public class EditorUtil extends AbstractUtility {
 
        /**
         * Opens a new editor window with the given input
-        * 
+        *
         * @param input
         * @param editorId
         * @return
@@ -60,7 +65,7 @@ public class EditorUtil extends AbstractUtility {
 
        /**
         * Opens a new editor window with the given TaxonEditorInput
-        * 
+        *
         * @param input
         *            a {@link eu.etaxonomy.taxeditor.editor.TaxonEditorInput}
         *            object.
@@ -75,16 +80,26 @@ public class EditorUtil extends AbstractUtility {
                        throws PartInitException {
                open(input, KeyEditor.ID);
        }
-       
+
        public static void open(CdmAuthorityEditorInput input)
                        throws PartInitException {
                open(input, CdmAuthorityEditor.ID);
        }
 
+       /**
+        * Opens a new DerivateView for the given input
+        * @param input a {@link DerivateViewEditorInput} representing the selected derivate
+        * @throws PartInitException
+        */
+       public static void open(DerivateViewEditorInput input)
+               throws PartInitException {
+           open(input, DerivateView.ID);
+       }
+
        /**
         * Taxon Editors may be opened by supplying a taxon node uuid. Session gets
         * initialised here and is passed to the editor
-        * 
+        *
         * @param taxonNodeUuid
         *            a {@link java.util.UUID} object.
         * @throws java.lang.Exception
@@ -99,7 +114,7 @@ public class EditorUtil extends AbstractUtility {
         * <p>
         * openTaxonBase
         * </p>
-        * 
+        *
         * @param taxonBaseUuid
         *            a {@link java.util.UUID} object.
         * @throws org.eclipse.ui.PartInitException
@@ -116,7 +131,7 @@ public class EditorUtil extends AbstractUtility {
         * <p>
         * findEditorByTaxonNodeUuid
         * </p>
-        * 
+        *
         * @param taxonNodeUuid
         *            a {@link java.util.UUID} object.
         * @return a {@link org.eclipse.ui.IEditorPart} object.
@@ -133,7 +148,7 @@ public class EditorUtil extends AbstractUtility {
         * An uninitialized taxon is one that hasn't been saved yet. As such, it
         * should appear in neither the list of recent names nor in the taxonomic
         * tree when opened.
-        * 
+        *
         * @throws org.eclipse.ui.PartInitException
         *             if any.
         * @param parentNodeUuid
@@ -152,7 +167,7 @@ public class EditorUtil extends AbstractUtility {
         * <p>
         * setSaving
         * </p>
-        * 
+        *
         * @param isSaving
         *            a boolean.
         */
@@ -164,7 +179,7 @@ public class EditorUtil extends AbstractUtility {
         * <p>
         * isSaving
         * </p>
-        * 
+        *
         * @return a boolean.
         */
        public static boolean isSaving() {
@@ -173,7 +188,7 @@ public class EditorUtil extends AbstractUtility {
 
        /**
         * Returns a set of all currently open <code>MultiPageTaxonEditor</code>s.
-        * 
+        *
         * @return a {@link java.util.Set} object.
         */
        public static Set<IEditorPart> getOpenEditors() {
@@ -194,7 +209,7 @@ public class EditorUtil extends AbstractUtility {
 
        /**
         * Returns the currently active taxon editor
-        * 
+        *
         * @return the taxon editor that has focus
         */
        public static MultiPageTaxonEditor getActiveMultiPageTaxonEditor() {
@@ -211,7 +226,7 @@ public class EditorUtil extends AbstractUtility {
         * <p>
         * getActiveEditorPage
         * </p>
-        * 
+        *
         * @param page
         *            a {@link eu.etaxonomy.taxeditor.editor.Page} object.
         * @return a {@link org.eclipse.ui.IEditorPart} object.
@@ -224,7 +239,7 @@ public class EditorUtil extends AbstractUtility {
 
        /**
         * Returns the selection of the currently active taxon editor
-        * 
+        *
         * @return a {@link org.eclipse.jface.viewers.ISelection} object.
         */
        public static ISelection getCurrentSelection() {
@@ -240,7 +255,7 @@ public class EditorUtil extends AbstractUtility {
         * <p>
         * getUndoContext
         * </p>
-        * 
+        *
         * @param editor
         *            a {@link eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor}
         *            object.
@@ -255,7 +270,7 @@ public class EditorUtil extends AbstractUtility {
         * <p>
         * getUndoContext
         * </p>
-        * 
+        *
         * @return a {@link org.eclipse.core.commands.operations.IUndoContext}
         *         object.
         */
@@ -267,7 +282,7 @@ public class EditorUtil extends AbstractUtility {
         * <p>
         * forceUserSave
         * </p>
-        * 
+        *
         * @param editor
         *            a {@link org.eclipse.ui.IEditorPart} object.
         * @param shell
@@ -286,7 +301,7 @@ public class EditorUtil extends AbstractUtility {
                                return false;
                        }
 
-                       editor.doSave(EditorUtil.getMonitor());
+                       editor.doSave(AbstractUtility.getMonitor());
                }
                return true;
        }
@@ -295,7 +310,7 @@ public class EditorUtil extends AbstractUtility {
         * <p>
         * getSelection
         * </p>
-        * 
+        *
         * @param event
         *            a {@link org.eclipse.core.commands.ExecutionEvent} object.
         * @return a {@link org.eclipse.jface.viewers.IStructuredSelection} object.
@@ -311,7 +326,7 @@ public class EditorUtil extends AbstractUtility {
         * <p>
         * getPluginId
         * </p>
-        * 
+        *
         * @return a {@link java.lang.String} object.
         */
        public static String getPluginId() {
@@ -324,10 +339,27 @@ public class EditorUtil extends AbstractUtility {
                                .NewInstance(polytomousKeyUuid);
                open(input);
        }
-       
+
        public static void openCdmAuthorities(UUID groupUuid)
                        throws Exception {
                CdmAuthorityEditorInput input = CdmAuthorityEditorInput.NewInstance(groupUuid);
                open(input);
        }
+
+    public static FieldUnit getFieldUnit(SpecimenOrObservationBase<?> specimen){
+        if(specimen.isInstanceOf(FieldUnit.class)){
+            return (FieldUnit) specimen;
+        }
+        else if(specimen.isInstanceOf(DerivedUnit.class)){
+            for(SpecimenOrObservationBase original:((DerivedUnit) specimen).getOriginals()){
+                if(original.isInstanceOf(FieldUnit.class)){
+                    return (FieldUnit) original;
+                }
+                else if(original.isInstanceOf(DerivedUnit.class)){
+                    return getFieldUnit(original);
+                }
+            }
+        }
+        return null;
+    }
 }
index 207b5d2f031da8a784189d35170f4b1e942ba22c..2f49284d4d95d3d7de60b2cc8bd2bc566bc1f6dd 100644 (file)
@@ -37,6 +37,7 @@ import eu.etaxonomy.taxeditor.model.DataChangeBridge;
 import eu.etaxonomy.taxeditor.model.IDataChangeBehavior;
 import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -50,7 +51,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @version 1.0
  */
 public class MultiPageTaxonEditor extends FormEditor implements
-               IConversationEnabled, IPostOperationEnabled,
+        IPartContentHasFactualData, IConversationEnabled, IPostOperationEnabled,
                IDirtyMarkableSelectionProvider, IPartContentHasDetails, ISecuredEditor {
 
        /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.taxon"{trunked}</code> */
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/handler/OpenDerivateViewHandler.java
new file mode 100644 (file)
index 0000000..b41c775
--- /dev/null
@@ -0,0 +1,39 @@
+package eu.etaxonomy.taxeditor.editor.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+
+public class OpenDerivateViewHandler extends AbstractHandler {
+
+    /* (non-Javadoc)
+     * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+     */
+    @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+        ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
+        if(currentSelection instanceof IStructuredSelection){
+            Object selectedElement = ((IStructuredSelection) currentSelection).getFirstElement();
+            if(selectedElement instanceof SpecimenOrObservationBase<?>){
+                DerivateViewEditorInput input = new DerivateViewEditorInput(EditorUtil.getFieldUnit((SpecimenOrObservationBase<?>) selectedElement));
+                try {
+                    EditorUtil.open(input);
+                } catch (PartInitException e) {
+                    AbstractUtility.error(OpenDerivateViewHandler.class, "Could not open DerivateView", e);
+                }
+            }
+        }
+        return null;
+    }
+
+}
index cc58872f8a5e7977498f5b7846b32b2387ffa6a6..f45ce48b021ba42043a23a5448c5e02835b9c33a 100644 (file)
@@ -10,14 +10,14 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
  * @author n.hoffmann
  *
  */
-public class CreateNodeOperation extends AbstractPostOperation {
+public class CreateNodeOperation extends AbstractPostTaxonOperation {
 
        PolytomousKeyNode parentNode;
        private PolytomousKeyNode childNode;
index db6aa6c8e2fd275ff39cad1bc5579a46a0519900..02097b6f25ee1bc53d71548259f45b7ea9d3bfe6 100644 (file)
@@ -15,7 +15,7 @@ import eu.etaxonomy.cdm.api.application.CdmApplicationController;
 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
 import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -23,7 +23,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @author n.hoffmann
  * 
  */
-public class DeleteNodeOperation extends AbstractPostOperation {
+public class DeleteNodeOperation extends AbstractPostTaxonOperation {
 
        private final PolytomousKeyNode parent;
        private final PolytomousKeyNode node;
index c147600879abd08047b0af64a2885d2f0356a5ec..d3d84db585f6555bb164a613e571dbfa132bb5d0 100644 (file)
@@ -7,7 +7,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -17,7 +17,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @author c.mathew
  *
  */
-public class RefreshNodeNumberingOperation extends AbstractPostOperation {
+public class RefreshNodeNumberingOperation extends AbstractPostTaxonOperation {
 
        PolytomousKeyNode node;
        private PolytomousKeyNode childNode;
index 58fe43b73ee8c1b3f68e76dac03545c50c8f1c7d..850747b6252772404bb0d6cfbb7f5145d9914067 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -20,7 +20,7 @@ import org.eclipse.core.runtime.IStatus;
 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.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 
@@ -31,14 +31,14 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  * @created 03.02.2009
  * @version 1.0
  */
-public class ChangeConceptRelationshipTypeOperation extends AbstractPostOperation {
-       
+public class ChangeConceptRelationshipTypeOperation extends AbstractPostTaxonOperation {
+
        private Taxon relatedTaxon;
-       
+
        private TaxonRelationship taxonRelationship;
-       
+
        private TaxonRelationshipType oldRelationshipType;
-       
+
        private TaxonRelationshipType newRelationshipType;
 
        /**
@@ -55,20 +55,20 @@ public class ChangeConceptRelationshipTypeOperation extends AbstractPostOperatio
                        IUndoContext undoContext, Taxon taxon, Taxon relatedTaxon, TaxonRelationshipType type, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, taxon, postOperationEnabled);
                this.relatedTaxon = relatedTaxon;
-                               
+
                Set<TaxonRelationship> taxonRelationships = taxon.getTaxonRelations(relatedTaxon);
-               
+
                if(taxonRelationships.size() > 1){
                        StoreUtil.warningDialog("Multiple relations between taxa", this, "There are multiple relations between the " +
                                        "accepted and the related taxon. This case is not handled by the software yet");
                        return;
                }
-               
+
                this.taxonRelationship = taxonRelationships.iterator().next();
                this.oldRelationshipType = taxonRelationship.getType();
                this.newRelationshipType = type;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
         */
@@ -76,17 +76,17 @@ public class ChangeConceptRelationshipTypeOperation extends AbstractPostOperatio
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                // Remove relatedTaxon and old relationship
                // FIXME since taxon relationships come in a set, which relationships are we going to delete here?
-               taxon.removeTaxon(relatedTaxon, oldRelationshipType);
+           element.removeTaxon(relatedTaxon, oldRelationshipType);
                monitor.worked(20);
-        
+
         // Add new relationship
                // TODO add microcitation for misapplied name to property sheet
-               relatedTaxon.addTaxonRelation(taxon, newRelationshipType, null, null);  
+               relatedTaxon.addTaxonRelation(element, newRelationshipType, null, null);
                monitor.worked(40);
-               
+
                return postExecute(relatedTaxon);
        }
 
index 97a5d667be1ed277965a6b2474b1f9bad998a70e..62e56bcd4bf62e262f88642a72080bef78febb07 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
 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.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 
@@ -36,15 +36,15 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  * @version 1.0
  */
 public class ChangeConceptToSynonymOperation extends
-               AbstractPostOperation {
-       
+               AbstractPostTaxonOperation {
+
        private Taxon concept;
 
        private HomotypicalGroup homotypicalGroup;
 
        private TaxonRelationship taxonRelationship;
        private TaxonRelationshipType oldRelationshipType;
-       
+
        private SynonymRelationship newSynonymRelationship;
 
        /**
@@ -61,18 +61,18 @@ public class ChangeConceptToSynonymOperation extends
                        IUndoContext undoContext, Taxon taxon, Taxon concept, HomotypicalGroup homotypicalGroup,
                        IPostOperationEnabled editor) {
                super(label, undoContext, taxon, editor);
-               
+
                Set<TaxonRelationship> taxonRelationships = taxon.getTaxonRelations(concept);
-               
+
                if(taxonRelationships.size() > 1){
                        StoreUtil.warningDialog("Multiple relations between taxa", this, "There are multiple relations between the " +
                                        "accepted and the related taxon. This case is not handled by the software yet");
                        return;
                }
-               
+
                this.taxonRelationship = taxonRelationships.iterator().next();
                this.oldRelationshipType = taxonRelationship.getType();
-               
+
                this.concept = concept;
                this.homotypicalGroup = homotypicalGroup != null ? homotypicalGroup : HomotypicalGroup.NewInstance();
        }
@@ -84,21 +84,21 @@ public class ChangeConceptToSynonymOperation extends
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                // Create new synonym using concept name
                TaxonNameBase<?, ?> synonymName = concept.getName();
-               
+
                // Remove concept relation from taxon
-               taxon.removeTaxon(concept, oldRelationshipType);
+               element.removeTaxon(concept, oldRelationshipType);
                monitor.worked(20);
-        
+
                // Add name to new homotypic group
                homotypicalGroup.addTypifiedName(synonymName);
                monitor.worked(40);
-               
+
         // Create a new synonym for the taxon
-               newSynonymRelationship = taxon.addHeterotypicSynonymName(synonymName);
-                       
+               newSynonymRelationship = element.addHeterotypicSynonymName(synonymName);
+
                return postExecute(newSynonymRelationship.getSynonym());
        }
 
index 708dd3e2403e8803dd9265a7536b2ea2cfde85d6..d2b5af65d4ca40bed8ed0ee913c01c0e4a6218ef 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -30,21 +30,21 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 19.01.2009
  * @version 1.0
  */
-public class ChangeHomotypicGroupOperation extends AbstractPostOperation {
+public class ChangeHomotypicGroupOperation extends AbstractPostTaxonOperation {
 
        /**
         * The synonym to be moved.
         */
-       private Synonym synonym; 
+       private final Synonym synonym;
        /**
         * The former homotypical group the synonym belonged to
         */
-       private HomotypicalGroup oldHomotypicalGroup;
+       private final HomotypicalGroup oldHomotypicalGroup;
        /**
         * The homotypical group the synonym is to be moved to
         */
-       private HomotypicalGroup newHomotypicalGroup;
-       
+       private final HomotypicalGroup newHomotypicalGroup;
+
        /**
         * <p>Constructor for ChangeHomotypicGroupOperation.</p>
         *
@@ -55,16 +55,16 @@ public class ChangeHomotypicGroupOperation extends AbstractPostOperation {
         * @param newHomotypicalGroup a {@link eu.etaxonomy.cdm.model.name.HomotypicalGroup} object.
         * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
         */
-       public ChangeHomotypicGroupOperation(String label, IUndoContext undoContext, 
+       public ChangeHomotypicGroupOperation(String label, IUndoContext undoContext,
                        Taxon taxon, Synonym synonym, HomotypicalGroup newHomotypicalGroup, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, taxon, postOperationEnabled);
-               
+
                this.synonym = synonym;
                if(synonym == null){
                        throw new IllegalArgumentException(
                                        "A null synonym was provided.");
                }
-               
+
                this.oldHomotypicalGroup = synonym.getHomotypicGroup();
                this.newHomotypicalGroup = newHomotypicalGroup != null ? newHomotypicalGroup : HomotypicalGroup.NewInstance();
        }
@@ -76,32 +76,32 @@ public class ChangeHomotypicGroupOperation extends AbstractPostOperation {
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
        // Get synonym name
                TaxonNameBase<?, ?> synonymName = synonym.getName();
                monitor.worked(20);
-        
+
                // TODO pass in homotypical group's taxon in case we are dragging from one editor to another
-               
+
                // Switch groups
                oldHomotypicalGroup.removeTypifiedName(synonymName);
                monitor.worked(40);
 
                newHomotypicalGroup.addTypifiedName(synonymName);
-               
-               if(! synonym.getAcceptedTaxa().contains(taxon)){
+
+               if(! synonym.getAcceptedTaxa().contains(element)){
                        for(Taxon acceptedTaxon : synonym.getAcceptedTaxa()){
                                acceptedTaxon.removeSynonym(synonym);
                        }
-                       
+
                        SynonymRelationshipType type = SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF();
-                       if(newHomotypicalGroup.getTypifiedNames().contains(taxon.getName())){
+                       if(newHomotypicalGroup.getTypifiedNames().contains(element.getName())){
                                type = SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF();
                        }
-                       
-                       taxon.addSynonym(synonym, type);
+
+                       element.addSynonym(synonym, type);
                }
-               
+
                // Redraw editor if it exists
                return postExecute(synonym);
        }
@@ -123,19 +123,19 @@ public class ChangeHomotypicGroupOperation extends AbstractPostOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                // Get synonym name
                TaxonNameBase<?, ?> synonymName = this.synonym.getName();
                if(synonymName == null){
                        // TODO
                }
-               
+
                // TODO pass in homotypical group's taxon in case we are dragging from one editor to another
-               
+
                // Switch groups
                newHomotypicalGroup.removeTypifiedName(synonymName);
-               oldHomotypicalGroup.addTypifiedName(synonymName);               
-               
+               oldHomotypicalGroup.addTypifiedName(synonymName);
+
                // Redraw editor if it exists
                return postExecute(synonym);
        }
index cb919655dfda25cc3e1182bf9edb4748d834d744..3e5c3f37896d6932d0384ab88cde5443e0bd0a58 100644 (file)
@@ -18,7 +18,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -29,7 +29,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @version 1.0
  */
 public class ChangeHomotypicalGroupBasionymOperation extends
-               AbstractPostOperation {
+               AbstractPostTaxonOperation {
        private TaxonBase taxonBase;
 
        /**
index 5d8b351fdddda8a63fd5f34e275d05c4dabe0ce2..2c7f81315dbe265876a131b48dfa4249ac4b294f 100644 (file)
@@ -22,11 +22,10 @@ import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 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.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 
 /**
  * Change the taxonomic parent of a given taxon.
@@ -38,12 +37,12 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
 public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPostOperation {
 
        private Taxon newTaxon;
-       private Synonym synonym;
-       private ITaxonTreeNode parentNode;
+       private final Synonym synonym;
+       private final ITaxonTreeNode parentNode;
 
        private TaxonNode newNode;
 
-       private Synonym[] synonymsInHomotypicalGroup;
+       private final Synonym[] synonymsInHomotypicalGroup;
 
        /**
         * <p>Constructor for ChangeSynonymToAcceptedTaxonOperation.</p>
@@ -61,7 +60,7 @@ public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPos
                        Taxon taxon, ITaxonTreeNode parentNode, Synonym synonym, Synonym[] synonymsInHomotypicalGroup, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {
                super(label, undoContext, postOperationEnabled, conversationEnabled);
 
-               this.taxon = taxon;
+               this.element = taxon;
                this.parentNode = parentNode;
                this.synonym = synonym;
                this.synonymsInHomotypicalGroup = synonymsInHomotypicalGroup;
@@ -76,9 +75,9 @@ public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPos
                        throws ExecutionException {
 
                try {
-                       newTaxon = CdmStore.getService(ITaxonService.class).changeSynonymToAcceptedTaxon(synonym, taxon, true, true, null, null);
+                       newTaxon = CdmStore.getService(ITaxonService.class).changeSynonymToAcceptedTaxon(synonym, element, true, true, null, null);
                } catch (HomotypicalGroupChangeException e) {
-                       EditorUtil.warningDialog("Operation may lead to inconsistent data", getClass(), e.getMessage());
+                       AbstractUtility.warningDialog("Operation may lead to inconsistent data", getClass(), e.getMessage());
                        return postExecute(null);
                }
                monitor.worked(20);
@@ -117,9 +116,9 @@ public class ChangeSynonymToAcceptedTaxonOperation extends AbstractPersistentPos
                        throws ExecutionException {
 
                // TODO implement - biggest problem is that any window open for new taxon must be closed first
-               StoreUtil.warn(this.getClass(), "Not yet implemented");
+               AbstractUtility.warn(this.getClass(), "Not yet implemented");
 
-               return postExecute(taxon);
+               return postExecute(element);
        }
 
 }
index 9ec8fa36de8d795e639dcf8b022d2a5d3900578a..5bcc43ef5b07f4e03c952af3d1ba8eda8828ed20 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -19,7 +19,7 @@ import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -31,10 +31,10 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created 21.01.2009
  * @version 1.0
  */
-public class ChangeSynonymToConceptOperation extends AbstractPostOperation {
-       private Synonym synonym;
-       private TaxonRelationshipType taxonRelationshipType;
-       
+public class ChangeSynonymToConceptOperation extends AbstractPostTaxonOperation {
+       private final Synonym synonym;
+       private final TaxonRelationshipType taxonRelationshipType;
+
        /**
         * <p>Constructor for ChangeSynonymToConceptOperation.</p>
         *
@@ -48,10 +48,10 @@ public class ChangeSynonymToConceptOperation extends AbstractPostOperation {
        public ChangeSynonymToConceptOperation(String label,
                        IUndoContext undoContext, Taxon taxon, Synonym synonym, TaxonRelationshipType taxonRelationshipType, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, taxon, postOperationEnabled);
-               
+
                this.taxonRelationshipType = taxonRelationshipType;
                this.synonym = synonym;
-               
+
        }
 
        /* (non-Javadoc)
@@ -64,20 +64,20 @@ public class ChangeSynonymToConceptOperation extends AbstractPostOperation {
 
 //             // Get name from synonym
 //             TaxonNameBase<?, ?> synonymName = synonym.getName();
-//             
+//
 //             // remove synonym from taxon
 //             taxon.removeSynonym(synonym);
-//             
+//
 //             // Create a taxon with synonym name
 //             Taxon fromTaxon = Taxon.NewInstance(synonymName, null);
-//             
-//             // Add taxon relation 
+//
+//             // Add taxon relation
 //             fromTaxon.addTaxonRelation(taxon, taxonRelationshipType, null, null);
 
                monitor.worked(20);
-       Taxon fromTaxon = CdmStore.getService(ITaxonService.class).changeSynonymToRelatedTaxon(synonym, taxon, taxonRelationshipType, null, null);
+       Taxon fromTaxon = CdmStore.getService(ITaxonService.class).changeSynonymToRelatedTaxon(synonym, element, taxonRelationshipType, null, null);
                monitor.worked(40);
-               
+
 //             TaxonRelationshipType.
 //             logger.warn("Not yet implemented.");
 
index ffa2f4abe8f4d99353824ea8f3580cead615ddff..bcd9033c8456a1fd0314ac93eea9b955ba6b30da 100644 (file)
@@ -17,7 +17,7 @@ import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 
 /**
  * <p>ChangeSynonymToHomotypicalGroupBasionymOperation class.</p>
@@ -27,7 +27,7 @@ import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
  * @version 1.0
  * @deprecated there will be an operation to set the basionym only that automatically unsets the former basionym
  */
-public class ChangeSynonymToHomotypicalGroupBasionymOperation extends AbstractPostOperation {
+public class ChangeSynonymToHomotypicalGroupBasionymOperation extends AbstractPostTaxonOperation {
        
        private Synonym synonym;
 
index f3b9ff566c629521e26c29fc0b17798ff90c4d92..3bd310bd30a9439dc44ee67de235be50e600e0fc 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -35,9 +35,9 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created 14.01.2009
  * @version 1.0
  */
-public class ChangeSynonymToMisapplicationOperation extends AbstractPostOperation {
+public class ChangeSynonymToMisapplicationOperation extends AbstractPostTaxonOperation {
 
-       private Synonym synonym;
+       private final Synonym synonym;
        private Taxon misapplication;
        private Set<SynonymRelationshipType> synonymTypes;
 
@@ -53,7 +53,7 @@ public class ChangeSynonymToMisapplicationOperation extends AbstractPostOperatio
        public ChangeSynonymToMisapplicationOperation(String label,
                        IUndoContext undoContext, Taxon taxon, Synonym synonym, IPostOperationEnabled editor) {
                super(label, undoContext, taxon, editor);
-               
+
                this.synonym = synonym;
        }
 
@@ -61,7 +61,7 @@ public class ChangeSynonymToMisapplicationOperation extends AbstractPostOperatio
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
        // get name from synonym
                TaxonNameBase<?, ?> synonymName = synonym.getName();
 
@@ -69,18 +69,18 @@ public class ChangeSynonymToMisapplicationOperation extends AbstractPostOperatio
                misapplication = Taxon.NewInstance(synonymName, null);
                CdmStore.getService(ITaxonService.class).saveOrUpdate(misapplication);
                monitor.worked(20);
-               
+
                // store synonymRelationshipType for later undo operations
-               synonymTypes = synonym.getRelationType(taxon);
-               
-               // remove synonym from taxon            
-               taxon.removeSynonym(synonym);
+               synonymTypes = synonym.getRelationType(element);
+
+               // remove synonym from taxon
+               element.removeSynonym(synonym);
                monitor.worked(40);
-               
+
                // add misapplied name to taxon
                // TODO add microcitation for misapplied name to property sheet (if microcitation is indeed needed?!)
-               taxon.addMisappliedName(misapplication, null, null);
-               
+               element.addMisappliedName(misapplication, null, null);
+
                // redraw editor if exists
                return postExecute(misapplication);
        }
@@ -91,11 +91,11 @@ public class ChangeSynonymToMisapplicationOperation extends AbstractPostOperatio
                        throws ExecutionException {
                // add misapplied name to taxon
                // TODO add citation for misapplied name to property sheet
-               taxon.addMisappliedName(misapplication, null, null);
-               
+               element.addMisappliedName(misapplication, null, null);
+
                // remove synonym from taxon
-               taxon.removeSynonym(synonym);
-               
+               element.removeSynonym(synonym);
+
                // redraw editor if exists
                return postExecute(null);
        }
@@ -104,15 +104,15 @@ public class ChangeSynonymToMisapplicationOperation extends AbstractPostOperatio
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                // remove misapplied name from taxon
-               taxon.removeTaxon(misapplication, TaxonRelationshipType.MISAPPLIED_NAME_FOR());
-               
+               element.removeTaxon(misapplication, TaxonRelationshipType.MISAPPLIED_NAME_FOR());
+
                // add synonym to taxon
                for (SynonymRelationshipType synonymType : synonymTypes){
-                       taxon.addSynonym(synonym, synonymType);
+                       element.addSynonym(synonym, synonymType);
                }
-               
+
                // redraw editor if exists
                return postExecute(null);
        }
index 836d82a0c43e9ce5bdfca01da47af09b34f367aa..f313dd59a850356ef57c53c7dedb4ea429544e51 100644 (file)
@@ -19,7 +19,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -29,7 +29,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created Mar 30, 2010
  * @version 1.0
  */
-public class CreateNameRelationOperation extends AbstractPostOperation {
+public class CreateNameRelationOperation extends AbstractPostTaxonOperation {
 
        private TaxonBase taxonBase;
        private TaxonNameBase relatedName;
index 31a191851ab4516d27625807b4ff3fd82b4e5b59..d0d3d74c3caebe2d30b788ff847bda789f81bc76 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -19,7 +19,7 @@ import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -30,13 +30,13 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @version 1.0
  */
 public class CreateSynonymInExistingHomotypicalGroupOperation extends
-               AbstractPostOperation {
+               AbstractPostTaxonOperation {
 
-       private HomotypicalGroup group;
-       private TaxonNameBase newSynonymName;
+       private final HomotypicalGroup group;
+       private final TaxonNameBase newSynonymName;
 
        private SynonymRelationship synonymRelationship;
-       
+
        /**
         * <p>Constructor for CreateSynonymInExistingHomotypicalGroupOperation.</p>
         *
@@ -61,29 +61,29 @@ public class CreateSynonymInExistingHomotypicalGroupOperation extends
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                // Add name to given homotypic group
                group.addTypifiedName(newSynonymName);
                monitor.worked(20);
-               
+
                // Create a new synonym for the taxon
                // TODO add citations
-               if(group.equals(taxon.getHomotypicGroup())){
-                       synonymRelationship = taxon.addHomotypicSynonymName(newSynonymName, null, null);
+               if(group.equals(element.getHomotypicGroup())){
+                       synonymRelationship = element.addHomotypicSynonymName(newSynonymName, null, null);
                }else{
-                       synonymRelationship = taxon.addHeterotypicSynonymName(newSynonymName);
+                       synonymRelationship = element.addHeterotypicSynonymName(newSynonymName);
                }
                monitor.worked(40);
-               
+
 //             Synonym affectedSynonym = null;
-//             
+//
 //             for(Synonym synonym : group.getSynonymsInGroup(taxon.getSec())){
 //                     if(synonym.getName() == synonymName){
 //                             affectedSynonym = synonym;
 //                             break;
 //                     }
 //             }
-               
+
                return postExecute(synonymRelationship.getSynonym());
        }
 
@@ -105,8 +105,8 @@ public class CreateSynonymInExistingHomotypicalGroupOperation extends
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
 
-               taxon.removeSynonymRelation(synonymRelationship);
-               
+               element.removeSynonymRelation(synonymRelationship);
+
                return postExecute(null);
        }
 }
index 8accbbeac5a2b3e8f3701bf07eb2a5782c753cfb..6fca0efc663a55c5ae49c249c5f23e3c81a25df6 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -19,7 +19,7 @@ import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -34,10 +34,10 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 16.01.2009
  * @version 1.0
  */
-public class CreateSynonymInNewGroupOperation extends AbstractPostOperation {
-       
+public class CreateSynonymInNewGroupOperation extends AbstractPostTaxonOperation {
+
        // TODO replace this with TaxonNameBase
-       private TaxonNameBase newSynonymName;
+       private final TaxonNameBase newSynonymName;
        private SynonymRelationship newSynonymRelationship;
 
        /**
@@ -52,7 +52,7 @@ public class CreateSynonymInNewGroupOperation extends AbstractPostOperation {
        public CreateSynonymInNewGroupOperation(String label,
                        IUndoContext undoContext, Taxon taxon, TaxonNameBase newSynonymName, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, taxon, postOperationEnabled);
-               
+
                this.newSynonymName = newSynonymName;
        }
 
@@ -63,13 +63,13 @@ public class CreateSynonymInNewGroupOperation extends AbstractPostOperation {
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                // Add name to new homotypic group
                HomotypicalGroup.NewInstance().addTypifiedName(newSynonymName);
                monitor.worked(20);
-               
+
                // Create a new synonym for the taxon
-               newSynonymRelationship = taxon.addHeterotypicSynonymName(newSynonymName);
+               newSynonymRelationship = element.addHeterotypicSynonymName(newSynonymName);
                monitor.worked(40);
 
                return postExecute(newSynonymRelationship.getSynonym());
@@ -92,11 +92,11 @@ public class CreateSynonymInNewGroupOperation extends AbstractPostOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
-               // Remove the synonym 
-               taxon.removeSynonymRelation(newSynonymRelationship);
+
+               // Remove the synonym
+               element.removeSynonymRelation(newSynonymRelationship);
                newSynonymRelationship = null;
-               
+
                return postExecute(null);
        }
 }
index 99aaf79c56b03f6cc75589ea823c931019b7d4a6..fb4856897d7e0a285ea50ef51518498a43b7e4cc 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -19,7 +19,7 @@ import eu.etaxonomy.cdm.model.reference.Reference;
 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.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -29,9 +29,9 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 16.01.2009
  * @version 1.0
  */
-public class DeleteMisapplicationOperation extends AbstractPostOperation {
-       
-       private Taxon misapplication;
+public class DeleteMisapplicationOperation extends AbstractPostTaxonOperation {
+
+       private final Taxon misapplication;
 
        private Reference<?> citation;
 
@@ -49,7 +49,7 @@ public class DeleteMisapplicationOperation extends AbstractPostOperation {
        public DeleteMisapplicationOperation(String label, IUndoContext undoContext,
                        Taxon taxon, Taxon misapplication, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, taxon, postOperationEnabled);
-               
+
                this.misapplication = misapplication;
        }
 
@@ -62,7 +62,7 @@ public class DeleteMisapplicationOperation extends AbstractPostOperation {
                        throws ExecutionException {
 
                // Find misapplication relation, save citation information
-               for (TaxonRelationship relationship : taxon.getTaxonRelations()) {
+               for (TaxonRelationship relationship : element.getTaxonRelations()) {
                        if (relationship.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())
                                        && relationship.getFromTaxon().equals(misapplication)) {
                                citation = relationship.getCitation();
@@ -70,9 +70,9 @@ public class DeleteMisapplicationOperation extends AbstractPostOperation {
                        }
                }
                monitor.worked(20);
-               
+
                // Remove misapplied name relation from taxon
-               taxon.removeTaxon(misapplication, TaxonRelationshipType.MISAPPLIED_NAME_FOR());
+               element.removeTaxon(misapplication, TaxonRelationshipType.MISAPPLIED_NAME_FOR());
                monitor.worked(40);
 
                return postExecute(null);
@@ -95,9 +95,9 @@ public class DeleteMisapplicationOperation extends AbstractPostOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
-               taxon.addMisappliedName(misapplication, citation, microcitation);
-               
+
+               element.addMisappliedName(misapplication, citation, microcitation);
+
                return postExecute(misapplication);
        }
 }
index c4d4632ffd5f5dc3a7a32438adf83fb5480c0bcf..d471f669eed4dbc9d5c3ac13caa25da756911e3c 100644 (file)
@@ -18,7 +18,7 @@ import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -28,7 +28,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created Mar 30, 2010
  * @version 1.0
  */
-public class DeleteNameRelationOperation extends AbstractPostOperation {
+public class DeleteNameRelationOperation extends AbstractPostTaxonOperation {
 
        private NameRelationship nameRelationship;
 
index 76e1b34f844e661a9c7cd5cfe02a3557055d6ace..cba17dc0758906191e20b0e8e7736a81bbb05e66 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -22,7 +22,7 @@ import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -33,9 +33,9 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created 14.01.2009
  * @version 1.0
  */
-public class DeleteSynonymOperation extends AbstractPostOperation {
-       
-       private Synonym synonym;
+public class DeleteSynonymOperation extends AbstractPostTaxonOperation {
+
+       private final Synonym synonym;
        private Set<SynonymRelationshipType> synonymTypes;
 
        /**
@@ -60,33 +60,33 @@ public class DeleteSynonymOperation extends AbstractPostOperation {
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                // Store synonymRelationshipType for later undo operations
-                               synonymTypes = synonym.getRelationType(taxon);
+                               synonymTypes = synonym.getRelationType(element);
                                monitor.worked(20);
-                               
+
                                // Remove synonym from taxon
-                               
+
                                CdmApplicationController controller;
-                               
+
                                controller = (CdmApplicationController) CdmStore.getCurrentApplicationConfiguration();
-                               
+
                                ITaxonService service = controller.getTaxonService();
                                if (synonym.getId() == 0){
-                                       taxon.removeSynonym(synonym);
-                                       
+                                       element.removeSynonym(synonym);
+
                                } else {
                                        service.deleteSynonym(synonym, null);
                                }
                        //      taxon.removeSynonym(synonym);
 //                             CdmStore.getTaxonService().deleteSynonymRelationships(synonym);
 //                             CdmStore.getTaxonService().delete(synonym);
-                               
+
                                monitor.worked(40);
 
                                // Redraw editor if exists
-                               
-                               return postExecute(taxon);
+
+                               return postExecute(element);
        }
 
        /* (non-Javadoc)
@@ -95,7 +95,7 @@ public class DeleteSynonymOperation extends AbstractPostOperation {
        /** {@inheritDoc} */
        @Override
        public IStatus redo(IProgressMonitor monitor, IAdaptable info)
-                       throws ExecutionException {             
+                       throws ExecutionException {
                return execute(monitor, info);
        }
 
@@ -106,12 +106,12 @@ public class DeleteSynonymOperation extends AbstractPostOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                // Add synonym to taxon
                for (SynonymRelationshipType synonymType : synonymTypes){
-                       taxon.addSynonym(synonym, synonymType);
+                       element.addSynonym(synonym, synonymType);
                }
-               
+
                // Redraw editor if exists
                return postExecute(synonym);
        }
index b1a365900c94e0b47157a72dc218af4ec425625d..49f714668504e8c48eadc17c513410b377069871 100644 (file)
@@ -3,21 +3,12 @@ package eu.etaxonomy.taxeditor.editor.name.operation;
 import java.util.Iterator;\r
 import java.util.Set;\r
 \r
-import org.eclipse.core.commands.ExecutionEvent;\r
 import org.eclipse.core.commands.ExecutionException;\r
 import org.eclipse.core.commands.operations.IUndoContext;\r
 import org.eclipse.core.runtime.IAdaptable;\r
 import org.eclipse.core.runtime.IProgressMonitor;\r
 import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.core.runtime.Status;\r
-import org.eclipse.ui.IEditorInput;\r
-import org.eclipse.ui.IEditorReference;\r
-import org.eclipse.ui.IPerspectiveDescriptor;\r
-import org.eclipse.ui.IViewPart;\r
-import org.eclipse.ui.IViewReference;\r
 import org.eclipse.ui.IWorkbenchPage;\r
-import org.eclipse.ui.PartInitException;\r
-import org.eclipse.ui.handlers.HandlerUtil;\r
 \r
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;\r
@@ -25,26 +16,23 @@ import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;\r
 import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;\r
 import eu.etaxonomy.cdm.model.taxon.Classification;\r
-import eu.etaxonomy.cdm.model.taxon.Synonym;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
 public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{\r
        //private Taxon taxon;\r
-       private Classification classification;\r
-       \r
-       \r
-       \r
-       \r
+       private final Classification classification;\r
+\r
+\r
+\r
+\r
        public DeleteTaxonOperation(String label, IUndoContext undoContext,\r
                        Taxon taxon, Classification classification, IWorkbenchPage activePage, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {\r
                super(label, undoContext, taxon, activePage, postOperationEnabled, conversationEnabled);\r
-               this.taxon = taxon;\r
-               \r
+               this.element = taxon;\r
+\r
                Set<TaxonNode> nodes = taxon.getTaxonNodes();\r
                if (nodes.size() == 1 && classification == null){\r
                        this.taxonNode = nodes.iterator().next();\r
@@ -60,38 +48,38 @@ public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{
                        //TODO\r
                }\r
                this.classification = classification;\r
-               \r
+\r
        }\r
 \r
-       \r
+\r
 \r
        @Override\r
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
-                               \r
+\r
                                monitor.worked(20);\r
                                bind();\r
-                               \r
-                               \r
+\r
+\r
                                CdmApplicationController controller;\r
-                               \r
+\r
                                controller = (CdmApplicationController) CdmStore.getCurrentApplicationConfiguration();\r
-                               \r
+\r
                                ITaxonService service = controller.getTaxonService();\r
                                try {\r
-                                       \r
-                                       service.deleteTaxon(taxon, new TaxonDeletionConfigurator(), classification);\r
-                                       \r
+\r
+                                       service.deleteTaxon(element, new TaxonDeletionConfigurator(), classification);\r
+\r
                                } catch (DataChangeNoRollbackException e) {\r
                                        // TODO Auto-generated catch block\r
                                        e.printStackTrace();\r
-                                       \r
+\r
                                }\r
-                               \r
+\r
                                //closeObsoleteEditor(taxon);\r
                                monitor.worked(40);\r
-                               \r
-                               \r
+\r
+\r
                                return postExecute(null);\r
        }\r
 \r
@@ -108,6 +96,6 @@ public class DeleteTaxonOperation extends DeleteTaxonBaseOperation{
                // TODO Auto-generated method stub\r
                return null;\r
        }\r
-       \r
-       \r
+\r
+\r
 }\r
index c23b34f64f9a83f193a65b35342ba279fb1ec615..73ab96aa441c33565fb220e35bf3039bf560434a 100644 (file)
@@ -18,7 +18,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -29,7 +29,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @version 1.0
  */
 public class RemoveHomotypicalGroupBasionymOperation extends
-               AbstractPostOperation {
+               AbstractPostTaxonOperation {
 
        private TaxonBase taxonBase;
 
index 0758a17b23e00c66a70d9cf04cba6bcde4d4e9d6..a30c1f9d394a6e3b32b97ad477605510ebf2d4fd 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -15,15 +15,12 @@ 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.ITaxonService;
-import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-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.store.StoreUtil;
@@ -35,12 +32,12 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  * @created 23.04.2009
  * @version 1.0
  */
-public class SwapSynonymAndAcceptedOperation extends AbstractPostOperation {
-       
-       private Synonym synonym;
+public class SwapSynonymAndAcceptedOperation extends AbstractPostTaxonOperation {
+
+       private final Synonym synonym;
        // TODO store the old relationship for undo reasons
        private SynonymRelationshipType synonymRelationshipType;
-       
+
        /**
         * <p>Constructor for SwapSynonymAndAcceptedOperation.</p>
         *
@@ -53,7 +50,7 @@ public class SwapSynonymAndAcceptedOperation extends AbstractPostOperation {
        public SwapSynonymAndAcceptedOperation(String label, IUndoContext undoContext,
                        Taxon taxon, Synonym synonym, IPostOperationEnabled postOperationEnabled) {
                super("Swap Synonym And Accepted Taxon Operation", undoContext, taxon, postOperationEnabled);
-               
+
                this.synonym = synonym;
        }
 
@@ -64,14 +61,14 @@ public class SwapSynonymAndAcceptedOperation extends AbstractPostOperation {
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                monitor.worked(20);
-               
-               CdmStore.getService(ITaxonService.class).swapSynonymAndAcceptedTaxon(synonym, taxon);
-               
+
+               CdmStore.getService(ITaxonService.class).swapSynonymAndAcceptedTaxon(synonym, element);
+
                monitor.worked(40);
 
-               return postExecute(taxon);
+               return postExecute(element);
        }
 
        /* (non-Javadoc)
index 29079f925e0276991adfbcecf36f166e6f77ced5..40c92af92938f59b2ab03bc89f00eb4ace2bfdcd 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -18,7 +18,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
 import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -29,11 +29,11 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 26.01.2009
  * @version 1.0
  */
-public class CreateConceptRelationOperation extends AbstractPostOperation {
-       
-       private Taxon concept;
-       private TaxonRelationshipTypeInverseContainer taxonRelationshipTypeInverseContainer;
-       
+public class CreateConceptRelationOperation extends AbstractPostTaxonOperation {
+
+       private final Taxon concept;
+       private final TaxonRelationshipTypeInverseContainer taxonRelationshipTypeInverseContainer;
+
        /**
         * <p>Constructor for CreateConceptRelationOperation.</p>
         *
@@ -51,7 +51,7 @@ public class CreateConceptRelationOperation extends AbstractPostOperation {
                this.concept = concept;
                this.taxonRelationshipTypeInverseContainer = taxonRelationshipTypeInverseContainer;
        }
-       
+
        public CreateConceptRelationOperation(String label,
                        IUndoContext undoContext, Taxon taxon, Taxon concept, TaxonRelationshipType taxonRelationshipType
                        , IPostOperationEnabled postOperationEnabled) {
@@ -69,12 +69,12 @@ public class CreateConceptRelationOperation extends AbstractPostOperation {
                monitor.worked(20);
                // add concept to taxon
                if(taxonRelationshipTypeInverseContainer.isInverse()){
-                       concept.addTaxonRelation(taxon, taxonRelationshipTypeInverseContainer.getType(), null, null);   
+                       concept.addTaxonRelation(element, taxonRelationshipTypeInverseContainer.getType(), null, null);
                } else {
-                       taxon.addTaxonRelation(concept, taxonRelationshipTypeInverseContainer.getType(), null, null);
+                   element.addTaxonRelation(concept, taxonRelationshipTypeInverseContainer.getType(), null, null);
                }
                monitor.worked(40);
-               
+
                // redraw editor if exists
                return postExecute(concept);
        }
@@ -96,9 +96,9 @@ public class CreateConceptRelationOperation extends AbstractPostOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
-               taxon.removeTaxon(concept, taxonRelationshipTypeInverseContainer.getType());
-               
+
+           element.removeTaxon(concept, taxonRelationshipTypeInverseContainer.getType());
+
                // redraw editor if exists
                return postExecute(null);
        }
index 4c5c4240f3d65ef834c9c1d977dac85844194303..9f71fae56e44aee8dc84047de1d00ba48a0680de 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -19,7 +19,7 @@ import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -30,9 +30,9 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 29.01.2009
  * @version 1.0
  */
-public class DeleteConceptRelationOperation extends AbstractPostOperation {
-       
-       private Set<TaxonRelationship> taxonRelationships;      
+public class DeleteConceptRelationOperation extends AbstractPostTaxonOperation {
+
+       private final Set<TaxonRelationship> taxonRelationships;
 
 
        /**
@@ -45,7 +45,7 @@ public class DeleteConceptRelationOperation extends AbstractPostOperation {
                        IUndoContext undoContext, Taxon taxon, Set<TaxonRelationship> relations,
                        IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, taxon, postOperationEnabled);
-               
+
                taxonRelationships = relations;
        }
 
@@ -56,17 +56,17 @@ public class DeleteConceptRelationOperation extends AbstractPostOperation {
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                monitor.worked(20);
-               
+
                // Remove relation from taxon
                for(TaxonRelationship relationship : taxonRelationships){
-                       taxon.removeTaxonRelation(relationship);
+                   element.removeTaxonRelation(relationship);
                        monitor.worked(10);
                }
                monitor.worked(10);
 
-               return postExecute(taxon);
+               return postExecute(element);
        }
 
        /* (non-Javadoc)
@@ -86,12 +86,12 @@ public class DeleteConceptRelationOperation extends AbstractPostOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                for(TaxonRelationship relationship : taxonRelationships){
-                       taxon.addTaxonRelation(relationship);
+                   element.addTaxonRelation(relationship);
                        monitor.worked(10);
                }
-               
-               return postExecute(taxon);
+
+               return postExecute(element);
        }
 }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java
new file mode 100644 (file)
index 0000000..d00c935
--- /dev/null
@@ -0,0 +1,131 @@
+package eu.etaxonomy.taxeditor.editor.view.derivate;
+
+import org.eclipse.jface.action.ContributionItem;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.CompoundContributionItem;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+
+/**
+ * Context menu for the creation of sub-derivates.
+ *
+ */
+public class CreateDerivateContextMenu extends CompoundContributionItem {
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
+     */
+    @Override
+    protected IContributionItem[] getContributionItems() {
+        IContributionItem[] contributionItems = new IContributionItem[] {
+                new ContributionItem() {
+                    @Override
+                    public void fill(Menu menu, int index) {
+                        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+                        final ISelection selection = window.getActivePage().getSelection();
+                        if(selection instanceof TreeSelection){
+                            final Object selectedElement = ((TreeSelection) selection).getFirstElement();
+                            //context menu for FieldUnit
+                            if(selectedElement instanceof FieldUnit){
+                                MenuItem createSpecimen = new MenuItem(menu, SWT.None);
+                                createSpecimen.setText("Specimen");
+                                FieldUnit fieldUnit = (FieldUnit) selectedElement;
+                                createSpecimen.addSelectionListener(new WidgetSelectionListener(fieldUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen)));
+
+                                MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
+                                createLivingPlantPhoto.setText("Living Plant Photo");
+                                createLivingPlantPhoto.addSelectionListener(new WidgetSelectionListener(fieldUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage)));
+                            }
+                            //context menu for Specimen
+                            else if(selectedElement instanceof DerivedUnit && ((DerivedUnit)selectedElement).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
+                                DerivedUnit derivedUnit = (DerivedUnit) selectedElement;
+                                MenuItem createTissueSample = new MenuItem(menu, SWT.None);
+                                createTissueSample.setText("Tissue Sample");
+                                createTissueSample.addSelectionListener(new WidgetSelectionListener(derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.TissueSample)));
+
+                                MenuItem createDNASample = new MenuItem(menu, SWT.None);
+                                createDNASample.setText("DNA Sample");
+                                createDNASample.addSelectionListener(new WidgetSelectionListener(derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.DnaSample)));
+
+                                MenuItem createSpecimenScan = new MenuItem(menu, SWT.None);
+                                createSpecimenScan.setText("Specimen Scan");
+                                createSpecimenScan.addSelectionListener(new WidgetSelectionListener(derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage)));
+
+                                MenuItem createArtwork = new MenuItem(menu, SWT.None);
+                                createArtwork.setText("Artwork");
+                                createArtwork.addSelectionListener(new WidgetSelectionListener(derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage)));
+
+                                MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
+                                createLivingPlantPhoto.setText("Living Plant Photo");
+                                createLivingPlantPhoto.addSelectionListener(new WidgetSelectionListener(derivedUnit, DerivedUnit.NewInstance(SpecimenOrObservationType.StillImage)));
+                            }
+                            else{
+                                MenuItem menuItem = new MenuItem(menu, SWT.None);
+                                menuItem.setText("No child derivates");
+                                menuItem.setEnabled(false);
+                            }
+                        }
+                    }
+                }
+        };
+        return contributionItems;
+    }
+
+    private class WidgetSelectionListener implements SelectionListener{
+
+        private final SpecimenOrObservationBase<?> parent;
+        private final DerivedUnit derivate;
+
+        /**
+         * @param parent
+         */
+        public WidgetSelectionListener(SpecimenOrObservationBase<?> parent, DerivedUnit derivate) {
+            this.parent = parent;
+            this.derivate = derivate;
+        }
+
+        /* (non-Javadoc)
+         * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+         */
+        @Override
+        public void widgetSelected(SelectionEvent e) {
+            parent.addDerivationEvent(DerivationEvent.NewSimpleInstance(parent, derivate, DerivationEventType.GATHERING_IN_SITU()));
+            derivate.setCacheStrategy(new DerivedUnitFacadeCacheStrategy());
+            derivate.getTitleCache(); //update title cache
+            IWorkbenchPart activePart = AbstractUtility.getActivePart();
+            if(activePart instanceof DerivateView){
+                DerivateView derivateView = (DerivateView)activePart;
+                derivateView.changed(derivate);
+                derivateView.viewer.refresh();
+            }
+        }
+
+        /* (non-Javadoc)
+         * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
+         */
+        @Override
+        public void widgetDefaultSelected(SelectionEvent e) {
+            // TODO Auto-generated method stub
+
+        }
+
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java
new file mode 100644 (file)
index 0000000..bee0847
--- /dev/null
@@ -0,0 +1,98 @@
+package eu.etaxonomy.taxeditor.editor.view.derivate;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+
+public class DerivateContentProvider implements ITreeContentProvider {
+
+       @Override
+       public void dispose() {
+               // TODO Auto-generated method stub
+
+       }
+
+       @Override
+       public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+       }
+
+       @Override
+       public Object[] getElements(Object inputElement) {
+           FieldUnit fieldUnit = null;
+           if(inputElement instanceof DerivateViewEditorInput){
+               fieldUnit = ((DerivateViewEditorInput) inputElement).getFieldUnit();
+           }
+           // return the parent FieldUnit if element is a DerivedUnit
+           else if(inputElement instanceof DerivedUnit){
+               fieldUnit = EditorUtil.getFieldUnit((DerivedUnit)inputElement);
+           }
+           else if(inputElement instanceof FieldUnit){
+               fieldUnit = (FieldUnit) inputElement;
+//             fieldUnit.getTitleCache();
+           }
+           if(fieldUnit!=null){
+               return Collections.singleton(fieldUnit).toArray();
+           }
+           else {
+               return Collections.EMPTY_LIST.toArray();
+           }
+       }
+
+       @Override
+       public Object[] getChildren(Object parentElement) {
+        if(parentElement instanceof DerivateViewEditorInput){
+            parentElement = ((DerivateViewEditorInput) parentElement).getFieldUnit();
+           }
+           if(parentElement instanceof SpecimenOrObservationBase){
+               return getDerivates((SpecimenOrObservationBase) parentElement).toArray();
+           }
+           return null;
+       }
+
+       @Override
+       public Object getParent(Object element) {
+        if(element instanceof DerivateViewEditorInput){
+            element = ((DerivateViewEditorInput) element).getFieldUnit();
+           }
+           if(element instanceof DerivedUnit){
+               DerivedUnit derivedUnit = (DerivedUnit)element;
+               return derivedUnit.getOriginalUnit();
+           }
+               return null;
+       }
+
+       @Override
+       public boolean hasChildren(Object element) {
+        if(element instanceof DerivateViewEditorInput){
+            element = ((DerivateViewEditorInput) element).getFieldUnit();
+           }
+           if(element instanceof SpecimenOrObservationBase){
+               SpecimenOrObservationBase specimenOrObservation = (SpecimenOrObservationBase)element;
+               for(DerivationEvent event:(Set<DerivationEvent>)specimenOrObservation.getDerivationEvents()){
+                   if(!event.getDerivatives().isEmpty()){
+                       return true;
+                   }
+               }
+           }
+               return false;
+       }
+
+       private List<DerivedUnit> getDerivates(SpecimenOrObservationBase specimenOrObservation){
+           List<DerivedUnit> derivates = new ArrayList<DerivedUnit>();
+           for(DerivationEvent derivationEvent:(Set<DerivationEvent>)specimenOrObservation.getDerivationEvents()){
+               derivates.addAll(derivationEvent.getDerivatives());
+           }
+           return derivates;
+       }
+
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateMenuPropertyTester.java
new file mode 100644 (file)
index 0000000..6d30016
--- /dev/null
@@ -0,0 +1,52 @@
+/**
+ *
+ */
+package eu.etaxonomy.taxeditor.editor.view.derivate;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.jface.viewers.IStructuredSelection;
+
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+
+/**
+ * Property tester used by the DerivateView tree menu.
+ *
+ */
+public class DerivateMenuPropertyTester extends PropertyTester {
+
+       private static final String IS_SPECIMEN_OR_OBSERVATION = "isSpecimenOrObservation";
+
+       /* (non-Javadoc)
+        * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
+        */
+       /** {@inheritDoc} */
+       @Override
+    public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+           //TODO: these simple instanceof-checks can be unified in one class because there are several
+           // PropertyTesters that do the same, that is just checking which class the selection is of
+
+           Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
+
+               if(selectedElements.length == 0){
+                       // nothing selected so all tests should fail
+                       return false;
+               }
+
+               if(IS_SPECIMEN_OR_OBSERVATION.equals(property)){
+                   return isSpecimenOrObservation(selectedElements);
+               }
+               else{
+                       return false;
+               }
+       }
+
+       private boolean isSpecimenOrObservation(Object[] selectedElements) {
+           for (Object object : selectedElements){
+               if(!(object instanceof SpecimenOrObservationBase)){
+                   return false;
+               }
+           }
+           return true;
+       }
+
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
new file mode 100644 (file)
index 0000000..383f47d
--- /dev/null
@@ -0,0 +1,180 @@
+package eu.etaxonomy.taxeditor.editor.view.derivate;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.AbstractTreeViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.EditorPart;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
+import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
+import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.derivatesearch.DerivateLabelProvider;
+
+/**
+ * Displays the derivate hierarchy of all derivates belonging to a taxon.
+ *
+ */
+public class DerivateView extends EditorPart implements IPartContentHasFactualData, IDirtyMarkableSelectionProvider, IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData {
+
+       /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.desc"{trunked}</code> */
+       public static final String ID = "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView";
+
+       private ConversationHolder conversation;
+
+       protected TreeViewer viewer;
+
+//     private SpecimenOrObservationBase<DerivedUnitFacadeCacheStrategy> derivate;
+
+    private boolean isDirty;
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+     */
+    @Override
+    public void createPartControl(Composite parent) {
+        viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION));
+        viewer.setContentProvider(new DerivateContentProvider());
+        viewer.setLabelProvider(new DerivateLabelProvider());
+        viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
+        // Propagate selection from viewer
+        getSite().setSelectionProvider(viewer);
+
+        //create context menu
+        MenuManager menuManager = new MenuManager();
+
+        getSite().registerContextMenu(menuManager, viewer);
+
+        Control control = viewer.getControl();
+        Menu menu = menuManager.createContextMenu(control);
+
+        control.setMenu(menu);
+
+        viewer.setInput(getEditorInput());
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
+     */
+    @Override
+    public void doSave(IProgressMonitor monitor) {
+        monitor.beginTask("Saving Derivates", 3);
+        if (!conversation.isBound()) {
+            conversation.bind();
+        }
+        monitor.worked(1);
+
+        // commit the conversation and start a new transaction immediately
+        conversation.commit(true);
+        monitor.worked(1);
+
+        this.setDirty(false);
+        monitor.worked(1);
+        monitor.done();
+        firePropertyChange(PROP_DIRTY);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.EditorPart#doSaveAs()
+     */
+    @Override
+    public void doSaveAs() {
+        // TODO Auto-generated method stub
+
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.EditorPart#getTitleToolTip()
+     */
+    @Override
+    public String getTitleToolTip() {
+        // TODO Auto-generated method stub
+        return "Derivate View";
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
+     */
+    @Override
+    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
+        conversation = CdmStore.createConversation();
+        setSite(site);
+        setInput(input);
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.EditorPart#isDirty()
+     */
+    @Override
+    public boolean isDirty() {
+        return isDirty;
+    }
+
+    /**
+     * @param isDirty the isDirty to set
+     */
+    public void setDirty(boolean isDirty) {
+        this.isDirty = isDirty;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
+     */
+    @Override
+    public boolean isSaveAsAllowed() {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+     */
+    @Override
+    public void setFocus() {
+        // TODO Auto-generated method stub
+
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
+     */
+    @Override
+    public void update(CdmDataChangeMap changeEvents) {
+        // TODO Auto-generated method stub
+
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
+     */
+    @Override
+    public ConversationHolder getConversationHolder() {
+        return conversation;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#changed(java.lang.Object)
+     */
+    @Override
+    public void changed(Object element) {
+        viewer.setInput(getEditorInput());
+        setDirty(true);
+        firePropertyChange(IEditorPart.PROP_DIRTY);
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateViewEditorInput.java
new file mode 100644 (file)
index 0000000..089502a
--- /dev/null
@@ -0,0 +1,125 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.derivate;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IPersistableElement;
+
+import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+
+/**
+ * @author pplitzner
+ * @date 25.11.2013
+ *
+ */
+public class DerivateViewEditorInput implements IEditorInput {
+
+    private final FieldUnit fieldUnit;
+
+    public DerivateViewEditorInput(FieldUnit fieldUnit) {
+        super();
+        this.fieldUnit = fieldUnit;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+     */
+    @Override
+    public Object getAdapter(Class adapter) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#exists()
+     */
+    @Override
+    public boolean exists() {
+        return false;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#getImageDescriptor()
+     */
+    @Override
+    public ImageDescriptor getImageDescriptor() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#getName()
+     */
+    @Override
+    public String getName() {
+        return fieldUnit.toString();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#getPersistable()
+     */
+    @Override
+    public IPersistableElement getPersistable() {
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IEditorInput#getToolTipText()
+     */
+    @Override
+    public String getToolTipText() {
+        return fieldUnit.toString();
+    }
+
+    /**
+     * @return the fieldUnit
+     */
+    public FieldUnit getFieldUnit() {
+        return fieldUnit;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#hashCode()
+     */
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((fieldUnit == null) ? 0 : fieldUnit.hashCode());
+        return result;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        DerivateViewEditorInput other = (DerivateViewEditorInput) obj;
+        if (fieldUnit == null) {
+            if (other.fieldUnit != null) {
+                return false;
+            }
+        } else if (!fieldUnit.equals(other.fieldUnit)) {
+            return false;
+        }
+        return true;
+    }
+
+}
index fce0faf8e592fc5ec687eb383a97af673547b092..8bd9fa6f4386c3156e888ca49a1262b3bc9eede0 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package eu.etaxonomy.taxeditor.editor.view.descriptive;
 
@@ -17,9 +17,7 @@ import eu.etaxonomy.cdm.model.common.MarkerType;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
-import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.cdm.model.description.IDescribable;
 import eu.etaxonomy.taxeditor.editor.UsageTermCollection;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;
@@ -35,33 +33,34 @@ import eu.etaxonomy.taxeditor.store.TermStore;
  * @version $Id: $
  */
 public class DescriptiveContentProvider implements ITreeContentProvider {
-       
+
        protected static final Object[] NO_CHILDREN = new Object[0];
-       protected Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache;
-       
+       protected Map<DescriptionBase<?>, FeatureNodeContainerTree> featureNodeContainerCache;
+
        /**
         * <p>Constructor for DescriptiveContentProvider.</p>
         *
         * @param featureNodeContainerCache a {@link java.util.Map} object.
         */
-       public DescriptiveContentProvider(Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache) {
+       public DescriptiveContentProvider(Map<DescriptionBase<?>, FeatureNodeContainerTree> featureNodeContainerCache) {
                this.featureNodeContainerCache = featureNodeContainerCache;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public Object[] getChildren(Object parentElement) {
-               if (parentElement instanceof TaxonEditorInput) {
-                       return getDescriptions((TaxonEditorInput) parentElement).toArray(); 
+       @Override
+    public Object[] getChildren(Object parentElement) {
+               if (parentElement instanceof IDescribable<?>) {
+                       return getDescriptions((IDescribable<?>) parentElement).toArray();
                }
-               else if (parentElement instanceof TaxonDescription) {
-                       if ( ! ((TaxonDescription) parentElement).isImageGallery()) {
-                               TaxonDescription description = (TaxonDescription) parentElement;
-                               
+               else if (parentElement instanceof DescriptionBase<?>) {
+                       if ( ! ((DescriptionBase<?>) parentElement).isImageGallery()) {
+                           DescriptionBase<?> description = (DescriptionBase<?>) parentElement;
+
                                FeatureNodeContainerTree containerTree = getContainerTreeForDesription(description);
-                               
+
                                return containerTree.getRoot().getChildren().toArray();
                        }
                }
@@ -73,11 +72,11 @@ public class DescriptiveContentProvider implements ITreeContentProvider {
                                return container.getChildren().toArray();
                        }
                }
-               
+
                return NO_CHILDREN;
        }
-       
-       private FeatureNodeContainerTree getContainerTreeForDesription(TaxonDescription description){
+
+       private FeatureNodeContainerTree getContainerTreeForDesription(DescriptionBase<?> description){
                if(! featureNodeContainerCache.containsKey(description)){
                        FeatureNodeContainerTree containerTree = new FeatureNodeContainerTree(description, getFeatureTree(description));
                        featureNodeContainerCache.put(description, containerTree);
@@ -88,77 +87,76 @@ public class DescriptiveContentProvider implements ITreeContentProvider {
        /** {@inheritDoc} */
        @Override
        public boolean hasChildren(Object element) {
-               if (element instanceof TaxonDescription){
-                       TaxonDescription description = (TaxonDescription) element;
+               if (element instanceof DescriptionBase<?>){
+                   DescriptionBase<?> description = (DescriptionBase<?>) element;
                        FeatureNodeContainerTree containerTree = featureNodeContainerCache.get(description);
                        if(containerTree != null && containerTree.getRoot() != null){
                                return containerTree.getRoot().getChildren().size() != 0;
                        }
-               } 
+               }
                return getChildren(element).length != 0;
        }
-       
+
        /**
         * Retrieves the feature tree associated with the given description
-        * 
-        * TODO as of now this is always the same thing because feature trees may not be associated 
+        *
+        * TODO as of now this is always the same thing because feature trees may not be associated
         * to descriptions yet.
-        * 
+        *
         * @param description
         * @return
         */
        private FeatureTree getFeatureTree(DescriptionBase description){
                FeatureTree featureTree = null;
-               
+
                // TODO change this to the feature tree associated with this taxon description
-               if (description.hasStructuredData()){                                   
+               if (description.hasStructuredData()){
                        featureTree = PreferencesUtil.getDefaultFeatureTreeForStructuredDescription();
                }else{
                        featureTree = PreferencesUtil.getDefaultFeatureTreeForTextualDescription();
                }
-               
+
                // create a transient tree with all features if none was selected
                if(featureTree == null){
                        featureTree = FeatureTree.NewInstance(TermStore.getTerms(Feature.class));
                }
-               
+
                return featureTree;
        }
 
-       /**
-        * Get all descriptions associated with the given TaxonEditorInput
-        * 
-        * @param parentElement
-        * @return
-        */
-       protected List<DescriptionBase> getDescriptions(TaxonEditorInput parentElement) {
-               Taxon taxon = parentElement.getTaxon();
-               List<DescriptionBase> descriptions = new ArrayList<DescriptionBase>();
-               for(DescriptionBase description : taxon.getDescriptions()){
+    /**
+     * Get all descriptions associated with the given object
+     * @param parentElement
+     * @return
+     */
+    protected List<DescriptionBase> getDescriptions(IDescribable<?> parentElement) {
+        Set<? extends DescriptionBase> elementDescriptions = parentElement.getDescriptions();
+        List<DescriptionBase> resultDescriptions = new ArrayList<DescriptionBase>();
+        for(DescriptionBase description : elementDescriptions){
                        if(! description.isImageGallery()){
                                MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseMarkerType);
                                Set<Marker> descriptionMarkers = description.getMarkers();
                                if(descriptionMarkers != null && !descriptionMarkers.isEmpty()) {
                                        for (Marker marker: descriptionMarkers) {
                                                if(!(marker.getMarkerType().equals(useMarkertype))) {
-                                                       descriptions.add(description);
+                                                       resultDescriptions.add(description);
                                                }
                                        }
                                }
                                else {
-                                       descriptions.add(description);
+                                       resultDescriptions.add(description);
                                }
                        }
-                       
-               }                       
-               return descriptions;
-       }
+               }
+        return resultDescriptions;
+    }
 
        /* (non-Javadoc)
         * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public Object getParent(Object element) {
+       @Override
+    public Object getParent(Object element) {
                return null;
        }
 
@@ -166,17 +164,19 @@ public class DescriptiveContentProvider implements ITreeContentProvider {
         * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
         */
        /** {@inheritDoc} */
-       public Object[] getElements(Object inputElement) {
+       @Override
+    public Object[] getElements(Object inputElement) {
                return getChildren(inputElement);
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.viewers.IContentProvider#dispose()
         */
        /**
         * <p>dispose</p>
         */
-       public void dispose() {
+       @Override
+    public void dispose() {
                featureNodeContainerCache.clear();
        }
 
@@ -184,6 +184,7 @@ public class DescriptiveContentProvider implements ITreeContentProvider {
         * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
         */
        /** {@inheritDoc} */
-       public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}    
-       
+       @Override
+    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
+
 }
index 30db42aed714313840fd633d7008222a9d05882f..cb8582f84d3eb203576b33495849597d3bb114e0 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -15,10 +15,13 @@ import java.util.Map;
 
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
@@ -30,26 +33,23 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Tree;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.IWorkbenchPart;
 
 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.TaxonDescription;
-import eu.etaxonomy.taxeditor.bulkeditor.BulkEditor;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
-import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;
-import eu.etaxonomy.taxeditor.editor.key.AbstractGraphKeyEditor;
+import eu.etaxonomy.cdm.model.description.IDescribable;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;
 import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
+import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
+import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
 
 /**
  * <p>DescriptiveViewPart class.</p>
@@ -62,23 +62,27 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
 
        /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.desc"{trunked}</code> */
        public static final String ID = "eu.etaxonomy.taxeditor.editor.view.descriptive";
-       
+
        protected TreeViewer viewer;
-       
-       protected Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache = new HashMap<TaxonDescription, FeatureNodeContainerTree>();
+
+       /**
+        * Maps {@link FeatureNodeContainerTree} to their corresponding {@link TaxonDescritpion}.<br>
+        * This serves as input for the {@link ITreeContentProvider} of the {@link TreeViewer}
+        */
+       protected Map<DescriptionBase<?>, FeatureNodeContainerTree> featureNodeContainerCache = new HashMap<DescriptionBase<?>, FeatureNodeContainerTree>();
 
        protected ToggleDescriptionAction showAllElementsAction;
 
        protected ToggleDescriptionAction hideAllElementsAction;
 
        protected int dndOperations = DND.DROP_COPY | DND.DROP_MOVE;
-       
+
        /** {@inheritDoc} */
        @Override
        public void createViewer(Composite parent) {
                viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL
                                | SWT.V_SCROLL | SWT.FULL_SELECTION));
-               viewer.setContentProvider(new DescriptiveContentProvider(featureNodeContainerCache));           
+               viewer.setContentProvider(new DescriptiveContentProvider(featureNodeContainerCache));
                viewer.setLabelProvider(new DescriptiveLabelProvider());
                viewer.setSorter(new DescriptiveViewerSorter());
                viewer.setAutoExpandLevel(2);
@@ -87,24 +91,24 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                                this));
                viewer.addDropSupport(dndOperations, transfers,
                                new DescriptionElementDropAdapter(viewer));
-                                               
+
                // Propagate selection from viewer
                getSite().setSelectionProvider(viewer);
-               
-               showAllElementsAction = new ToggleDescriptionAction(false);             
+
+               showAllElementsAction = new ToggleDescriptionAction(false);
                hideAllElementsAction = new ToggleDescriptionAction(true);
-               
+
                // Add context menu to tree
                createMenu();
-               
+
                createToolbar();
-               
+
                // set initial input
 //             if(getEditor() != null){
 //                     viewer.setInput(getEditor().getEditorInput());
 //             }
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.model.AbstractCdmViewPart#getInitialSelection()
         */
@@ -113,8 +117,8 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
        protected ISelection getInitialSelection() {
                if(getEditor() != null){
                        return new StructuredSelection(getEditor().getEditorInput());
-               }       
-               
+               }
+
                return super.getInitialSelection();
        }
 
@@ -123,73 +127,69 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                toolBarManager.add(showAllElementsAction);
                toolBarManager.add(hideAllElementsAction);
        }
-       
+
        /*
         * TODO add to the views menu
         */
        protected void createMenu(){
                MenuManager menuManager = new MenuManager();
                menuManager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
-               
+
                getSite().registerContextMenu(menuManager, viewer);
 
                // FIXME for some reason this is not working
                menuManager.add(showAllElementsAction);
                menuManager.add(hideAllElementsAction);
-                               
+
                Control control = viewer.getControl();
                Menu menu = menuManager.createContextMenu(control);
-               
-               control.setMenu(menu);  
+
+               control.setMenu(menu);
        }
 
        /** {@inheritDoc} */
-       public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-               if(EditorUtil.getActiveEditor() == null){
+       @Override
+    public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+               if(AbstractUtility.getActiveEditor() == null){
                        showEmptyPage();
                        return;
                }
-               
-               if(part instanceof BulkEditor){
-                       showEmptyPage();
-                       return;
+
+               if(part == this){
+                   return;
                }
-               
-               if(part instanceof AbstractGraphKeyEditor){
-                       showEmptyPage();
-                       return;
+               if(part instanceof DetailsViewPart || part instanceof SupplementalDataViewPart){
+                   // do not show empty page as these views are also used to edit the description selected in this view
+                   return;
                }
-               
-               if(part instanceof DefinedTermEditor){
-                       showEmptyPage();
-                       return;
+
+               if(selection instanceof IStructuredSelection
+                       && ((IStructuredSelection) selection).getFirstElement() instanceof IDescribable<?>
+                       && part instanceof IPartContentHasFactualData){
+                   featureNodeContainerCache.clear();
+                   showViewer(part, (IStructuredSelection) selection);
+                   return;
                }
-               
-               if(part instanceof MultiPageTaxonEditor){
-                       if(! part.equals(this.part)){
-                               IEditorInput input = ((IEditorPart) part).getEditorInput();
-                               featureNodeContainerCache.clear();
-                               showViewer(part, new StructuredSelection(input));
-                       }
-                       showViewer();
+               else{
+                   showEmptyPage();
                }
        }
-       
+
        /**
-        * 
+        *
         * @author n.hoffmann
         * @created May 28, 2010
         * @version 1.0
         */
        protected class ToggleDescriptionAction extends Action{
-               private boolean expanded;
-               
+               private final boolean expanded;
+
                public ToggleDescriptionAction(boolean expand){
-                       super(null, Action.AS_PUSH_BUTTON);
+                       super(null, IAction.AS_PUSH_BUTTON);
                        expanded = expand;
                        setImageAndTooltip();
                }
-               
+
                private void setImageAndTooltip(){
                        setImageDescriptor(new ImageDescriptor() {
                                @Override
@@ -199,11 +199,11 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                                        return ImageResources.getImage(resource).getImageData();
                                }
                        });
-                       
+
                        String toolTipText = expanded ? "Collapse all" : "Show all descriptive data";
                        setToolTipText(toolTipText);
                }
-               
+
                @Override
                public void run() {
                        if(expanded){
@@ -228,15 +228,15 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                        containerTree.buildTree();
                }
                viewer.refresh();
-               
+
                if(object instanceof DescriptionElementBase){
                        DescriptionElementBase descriptionElement = (DescriptionElementBase) object;
                        DescriptionBase description = descriptionElement.getInDescription();
                        FeatureNodeContainerTree containerTree = featureNodeContainerCache.get(description);
-                       
+
                        FeatureNodeContainer featureNodeContainer = containerTree.getFeatureNodeContainerForDescriptionElement(descriptionElement);
                        viewer.expandToLevel(featureNodeContainer, 1);
-                       
+
                }
 
                if(object != null){
@@ -258,7 +258,8 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
         *
         * @return a boolean.
         */
-       public boolean onComplete() {
+       @Override
+    public boolean onComplete() {
                return false;
        }
 }
index 618d9c0ee3a6870466e65438279199ff9e014609..7d95201d924dda3490106a723b33273651786f02 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
  * 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.
  */
@@ -16,21 +16,15 @@ import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.common.NotDefinedException;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeSelection;
-import org.eclipse.jface.viewers.TreePath;
 import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.forms.editor.FormEditor;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateDescriptionElementOperation;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
@@ -45,61 +39,47 @@ public class CreateDescriptionElementHandler extends AbstractHandler {
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.
         * ExecutionEvent)
         */
-       /** {@inheritDoc} */
-       public Object execute(ExecutionEvent event) throws ExecutionException {
-               IWorkbenchPart part = HandlerUtil.getActivePart(event);
-               IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part
-                               : null;
+    /** {@inheritDoc} */
+    @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
+        IWorkbenchPart part = HandlerUtil.getActivePart(event);
+        IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part
+                : null;
 
-               IEditorPart editor = HandlerUtil.getActiveEditor(event);
-               if (editor instanceof FormEditor) {
-                       editor = ((FormEditor) editor).getActiveEditor();
-               }
-               IEditorInput input = editor.getEditorInput();
-               if (input instanceof TaxonEditorInput) {
-                       Taxon taxon = ((TaxonEditorInput) input).getTaxon();
 
-                       TaxonDescription description = null;
+        DescriptionBase<?> description = null;
 
-                       ISelection selection = HandlerUtil.getCurrentSelection(event);
-                       if (selection instanceof ITreeSelection) {
-                               TreePath[] paths = ((ITreeSelection) selection).getPaths();
-                               Object firstSegment = paths[0].getFirstSegment();
-                               if (firstSegment instanceof TaxonDescription) {
-                                       description = (TaxonDescription) firstSegment;
-                               }
-                       }else if (selection instanceof IStructuredSelection) {
-                               Object selectedElement = ((IStructuredSelection) selection)
-                                               .getFirstElement();
-                               if (selectedElement instanceof TaxonDescription){
-                                       description = (TaxonDescription) selectedElement;
-                               }
-                       } 
+        ISelection selection = HandlerUtil.getCurrentSelection(event);
+        if (selection instanceof IStructuredSelection) {
+            Object selectedElement = ((IStructuredSelection) selection).getFirstElement();
+            if (selectedElement instanceof DescriptionBase<?>) {
+                description = (DescriptionBase<?>) selectedElement;
+            }
+        }
 
-                       if (description != null) {
-                               AbstractPostOperation operation = null;
-                               try {
-                                       // TODO use undo context specific to editor
-                                       operation = operationCreationInstance(event.getCommand().getName(), event, taxon, description, postOperationEnabled);
-                                       EditorUtil.executeOperation(operation);
-                               } catch (NotDefinedException e) {
-                                       EditorUtil.warn(getClass(), "Command name not set");
-                               }
-                       } else {
-                               EditorUtil.error(getClass(), new IllegalArgumentException("Could not determine the taxon description"));
-                               return null;
-                       }
-               }
-               return null;
+        if (description != null) {
+            AbstractPostOperation operation = null;
+            try {
+                // TODO use undo context specific to editor
+                operation = operationCreationInstance(event.getCommand().getName(), event, description, postOperationEnabled);
+                AbstractUtility.executeOperation(operation);
+            } catch (NotDefinedException e) {
+                AbstractUtility.warn(getClass(), "Command name not set");
+            }
+        } else {
+            AbstractUtility.error(getClass(), new IllegalArgumentException("Could not determine the taxon description"));
+            return null;
+        }
+        return null;
 
-       }
-       
-       /**
+    }
+
+    /**
         * Added to make the Class more generic and limit the amount of code changes required
         * @param label
         * @param event
@@ -108,11 +88,9 @@ public class CreateDescriptionElementHandler extends AbstractHandler {
         * @param postOperationEnabled
         * @return
         */
-       protected AbstractPostOperation operationCreationInstance(String label, ExecutionEvent event, Taxon taxon, TaxonDescription description, IPostOperationEnabled postOperationEnabled) {
+       protected AbstractPostOperation operationCreationInstance(String label, ExecutionEvent event, DescriptionBase<?> description, IPostOperationEnabled postOperationEnabled) {
                Feature feature = (Feature) ((Event) event.getTrigger()).data;
-               return new CreateDescriptionElementOperation(label,
-                                       EditorUtil.getUndoContext(), taxon,
-                                       description, feature, postOperationEnabled);
+               return new CreateDescriptionElementOperation(label, EditorUtil.getUndoContext(), description, feature, postOperationEnabled);
        }
 
 }
index 9542fb5cd364519d8bcba15453d26bc560a9c96e..165205e2ed8f0e62dca3e08bdffba976e115eb6f 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2011 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.
 */
@@ -19,10 +19,14 @@ import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.forms.editor.FormEditor;
 import org.eclipse.ui.handlers.HandlerUtil;
 
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateSpecimenDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonDescriptionOperation;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
@@ -39,41 +43,46 @@ public class CreateDescriptionHandler extends AbstractHandler {
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
         */
        /** {@inheritDoc} */
-       public Object execute(ExecutionEvent event) throws ExecutionException {
+       @Override
+    public Object execute(ExecutionEvent event) throws ExecutionException {
                IWorkbenchPart part = HandlerUtil.getActivePart(event);
                IPostOperationEnabled postOperationEnabled = (part instanceof IPostOperationEnabled) ? (IPostOperationEnabled) part : null;
-               
-               
+
                IEditorPart editor = HandlerUtil.getActiveEditor(event);
                if (editor instanceof FormEditor) {
                        editor = ((FormEditor) editor).getActiveEditor();
                }
                IEditorInput input = editor.getEditorInput();
+               AbstractPostOperation<?> operation;
+
+               // taxon description
                if (input instanceof TaxonEditorInput) {
-                       Taxon taxon = ((TaxonEditorInput) input).getTaxon();    
-                       AbstractPostOperation operation;
+                       Taxon taxon = ((TaxonEditorInput) input).getTaxon();
                        try {
-                               
-                               operation = createOperationInstance(event.getCommand().getName(), taxon, postOperationEnabled);
-                               EditorUtil.executeOperation(operation);
+                           operation = createTaxonOperation(event.getCommand().getName(), taxon, postOperationEnabled);
+                               AbstractUtility.executeOperation(operation);
                        } catch (NotDefinedException e) {
-                               EditorUtil.warn(getClass(), "Command name not set.");
+                               AbstractUtility.warn(getClass(), "Command name not set.");
                        }
-               } 
+               }
+               // specimen description
+               else if(part instanceof DescriptiveViewPart){
+                   Object viewerInput = ((DescriptiveViewPart)part).getViewer().getInput();
+                   if(viewerInput instanceof SpecimenOrObservationBase<?>){
+                       try {
+                           operation = new CreateSpecimenDescriptionOperation(event.getCommand().getName(), EditorUtil.getUndoContext(), (SpecimenOrObservationBase<?>) viewerInput, postOperationEnabled);
+                           AbstractUtility.executeOperation(operation);
+                       } catch (NotDefinedException e) {
+                           AbstractUtility.warn(getClass(), "Command name not set.");
+                       }
+                   }
+               }
                return null;
        }
-       
-       /**Comments for funtion createOperationInstance
-        * The function is used to make the specific object creation more generic
-        * @param eventLabel
-        * @param taxon
-        * @param postOperationEnabled
-        * @return
-        */
-       protected AbstractPostOperation createOperationInstance(String eventLabel, Taxon taxon, IPostOperationEnabled postOperationEnabled) {
-               // TODO use undo context specific to editor     
-               return new CreateTaxonDescriptionOperation(eventLabel,  EditorUtil.getUndoContext(), taxon, postOperationEnabled);
-       }
-       
+
+          /** {@inheritDoc} */
+    protected CreateTaxonDescriptionOperation createTaxonOperation(String eventLabel, Taxon taxon, IPostOperationEnabled postOperationEnabled) {
+        return new CreateTaxonDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxon, postOperationEnabled);
+    }
 
 }
index 04fbab44f75cd005592cd878bc4129cc8f91d778..ce6aaef14301ada49c906c784b737f39f4150dc7 100644 (file)
@@ -32,6 +32,7 @@ import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteDescriptio
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonDescriptionOperation;
 import eu.etaxonomy.taxeditor.editor.view.media.operation.DeleteMediaOperation;
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
@@ -59,7 +60,7 @@ public class DeleteHandler extends AbstractHandler {
                
                        IUndoContext undoContext = EditorUtil.getUndoContext();
                        
-                       List<AbstractPostOperation> operations = new ArrayList<AbstractPostOperation>();
+                       List<AbstractPostTaxonOperation> operations = new ArrayList<AbstractPostTaxonOperation>();
                        
                        for(Object object : selection.toArray()){
                                
index 202308dbabbb2e1be77f9a9cc738a9b367efbff4..471cdf0e7bd9f5793b0c26220b63a5887657668b 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package eu.etaxonomy.taxeditor.editor.view.descriptive.handler;
 
@@ -19,28 +19,29 @@ import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
  * @version $Id: $
  */
 public class DescriptionsMenuPropertyTester extends PropertyTester {
-       
+
        private static final String MEDIA = "isMedia";
        private static final String FEATURE_NODE_CONTAINER = "isFeatureNodeContainer";
        private static final String DESCRIPTION = "isDescription";
        private static final String DESCRIPTION_ELEMENT = "isDescriptionElement";
        private static final String DELETABLE = "isDeletable";
        private static final String IMAGE_GALLERY = "isImageGallery";
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
         */
        /** {@inheritDoc} */
-       public boolean test(Object receiver, String property, Object[] args,
+       @Override
+    public boolean test(Object receiver, String property, Object[] args,
                        Object expectedValue) {
 
                Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
-               
+
                if(selectedElements.length == 0){
                        // nothing selected so all tests should fail
                        return false;
                }
-               
+
                if(MEDIA.equals(property)){
                        return isMedia(selectedElements);
                }
@@ -63,9 +64,9 @@ public class DescriptionsMenuPropertyTester extends PropertyTester {
                        return false;
                }
        }
-       
+
        private boolean isImageGallery(Object[] selectedElements) {
-               for (Object object : selectedElements){         
+               for (Object object : selectedElements){
                        if(!(object instanceof DescriptionBase) || !((DescriptionBase) object).isImageGallery()){
                                return false;
                        }
@@ -84,9 +85,9 @@ public class DescriptionsMenuPropertyTester extends PropertyTester {
 
        private boolean isDeletable(Object[] selectedElements) {
                boolean result = false;
-               
+
                for (Object object : selectedElements) {
-                       
+
                        if((object instanceof DescriptionBase)
                                || (object instanceof DescriptionElementBase)
                                || (object instanceof Media)
@@ -95,7 +96,7 @@ public class DescriptionsMenuPropertyTester extends PropertyTester {
                        }else{
                                return false;
                        }
-                       
+
                }
                return result;
        }
index 0c10b9ad7df145bd2f37f166c3d583d5a79120d6..7c3a65669a66ab367ac873fafb7c3083510c8209 100644 (file)
@@ -29,7 +29,6 @@ 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.TaxonDescription;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateDescriptionElementOperation;
@@ -48,9 +47,9 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  */
 public class DynamicFeatureMenu extends CompoundContributionItem {
 
-       private ISelectionService selectionService = EditorUtil.getActivePart()
+       private final ISelectionService selectionService = EditorUtil.getActivePart()
                        .getSite().getWorkbenchWindow().getSelectionService();
-       private IHandlerService handlerService = (IHandlerService) EditorUtil
+       private final IHandlerService handlerService = (IHandlerService) EditorUtil
                        .getService(IHandlerService.class);
 
        /*
@@ -75,8 +74,8 @@ public class DynamicFeatureMenu extends CompoundContributionItem {
                                        Object selectedElement = structuredSelection
                                                        .getFirstElement();
 
-                                       if (selectedElement instanceof TaxonDescription) {
-                                               FeatureTree featureTree = getFeatureTree((TaxonDescription) selectedElement);
+                                       if (selectedElement instanceof DescriptionBase<?>) {
+                                               FeatureTree featureTree = getFeatureTree((DescriptionBase<?>) selectedElement);
 
                                                for (FeatureNode childNode : featureTree.getRootChildren()) {
                                                        createMenuItem(menu, childNode.getFeature());
index 5f67b2cbc0bf943549dd57250e6db2a9b9fb083f..76c4d76a9e53728179dc90d007c9c5769e29b9cd 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -17,16 +17,16 @@ import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.model.description.CategoricalData;
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
+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.Feature;
 import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.cdm.model.description.QuantitativeData;
-import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.description.TaxonInteraction;
 import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -37,13 +37,13 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 05.02.2009
  * @version 1.0
  */
-public class CreateDescriptionElementOperation extends AbstractPostOperation {
-       
+public class CreateDescriptionElementOperation extends AbstractPostTaxonOperation {
+
        /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.descripti"{trunked}</code> */
        public static final String ID = "eu.etaxonomy.taxeditor.editor.description.createDescriptionElement";
-       
-       private TaxonDescription description;
-       private Feature feature;
+
+       private final DescriptionBase<?> description;
+       private final Feature feature;
        private DescriptionElementBase element;
 
        /**
@@ -52,14 +52,14 @@ public class CreateDescriptionElementOperation extends AbstractPostOperation {
         * @param label a {@link java.lang.String} object.
         * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
         * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.
-        * @param description a {@link eu.etaxonomy.cdm.model.description.TaxonDescription} object.
+        * @param description a {@link DescriptionBase} object.
         * @param feature a {@link eu.etaxonomy.cdm.model.description.Feature} object.
         * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
         */
        public CreateDescriptionElementOperation(String label, IUndoContext undoContext,
-                       Taxon taxon, TaxonDescription description, Feature feature, IPostOperationEnabled postOperationEnabled) {
-               super(label, undoContext, taxon, postOperationEnabled);
-               
+               DescriptionBase<?> description, Feature feature, IPostOperationEnabled postOperationEnabled) {
+               super(label, undoContext, (Taxon)null, postOperationEnabled);
+
                this.description = description;
                this.feature = feature;
        }
@@ -69,18 +69,17 @@ public class CreateDescriptionElementOperation extends AbstractPostOperation {
         *
         * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
         * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.
-        * @param description a {@link eu.etaxonomy.cdm.model.description.TaxonDescription} object.
+        * @param description a {@link DescriptionBase} object.
         * @param feature a {@link eu.etaxonomy.cdm.model.description.Feature} object.
         * @param element a {@link eu.etaxonomy.cdm.model.description.DescriptionElementBase} object.
         * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
         * @param label a {@link java.lang.String} object.
         */
        public CreateDescriptionElementOperation(String label,
-                       IUndoContext undoContext, Taxon taxon,
-                       TaxonDescription description, Feature feature,
+                       IUndoContext undoContext, DescriptionBase<?> description, Feature feature,
                        DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) {
-               this(label, undoContext, taxon, description, feature, postOperationEnabled);
-               
+               this(label, undoContext, description, feature, postOperationEnabled);
+
                this.element = element;
        }
 
@@ -96,10 +95,10 @@ public class CreateDescriptionElementOperation extends AbstractPostOperation {
                if (element == null) {
                        if (feature.isSupportsCommonTaxonName()) {
                                element = CommonTaxonName.NewInstance("", null);
-                       } 
+                       }
                        else if (feature.isSupportsDistribution()) {
                                element = Distribution.NewInstance();
-                       } 
+                       }
                        else if(feature.isSupportsTaxonInteraction()){
                                element = TaxonInteraction.NewInstance();
                        }
@@ -131,9 +130,9 @@ public class CreateDescriptionElementOperation extends AbstractPostOperation {
        @Override
        public IStatus redo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                description.addElement(element);
-               
+
                return postExecute(element);
        }
 
@@ -144,9 +143,9 @@ public class CreateDescriptionElementOperation extends AbstractPostOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                description.removeElement(element);
-               
+
                return postExecute(null);
        }
 }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateSpecimenDescriptionOperation.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/operation/CreateSpecimenDescriptionOperation.java
new file mode 100644 (file)
index 0000000..ec8b505
--- /dev/null
@@ -0,0 +1,45 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.SpecimenDescription;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.operation.AbstractDescriptionPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+
+/**
+ * @author pplitzner
+ * @date 04.12.2013
+ *
+ */
+public class CreateSpecimenDescriptionOperation extends AbstractDescriptionPostOperation<SpecimenOrObservationBase<?>, DescriptionBase> {
+
+    /**
+     * @param label
+     * @param undoContext
+     * @param describable
+     * @param postOperationEnabled
+     */
+    public CreateSpecimenDescriptionOperation(String label, IUndoContext undoContext, SpecimenOrObservationBase<?> describable, IPostOperationEnabled postOperationEnabled) {
+        super(label, undoContext, describable, postOperationEnabled);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.operation.AbstractDescriptionPostOperation#initDescription()
+     */
+    @Override
+    protected void initDescription() {
+        description = SpecimenDescription.NewInstance(element);
+    }
+
+}
index 949c648dac6f020233e16260d86c3d1c17fc044d..622fb0974fe7e886b8b775ee208e6a5ad751e565 100644 (file)
+// $Id$
 /**
-* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* Copyright (C) 2013 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 eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.cdm.model.description.TextData;
-import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractDescriptionPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
- * <p>CreateTaxonDescriptionOperation class.</p>
+ * @author pplitzner
+ * @date 04.12.2013
  *
- * @author p.ciardelli
- * @author n.hoffmann
- * @created 05.02.2009
- * @version 1.0
  */
-public class CreateTaxonDescriptionOperation extends AbstractPostOperation {
-       
-       private TaxonDescription description;
-       private boolean isImageGallery;
-
-       /**
-        * <p>Constructor for CreateTaxonDescriptionOperation.</p>
-        *
-        * @param label a {@link java.lang.String} object.
-        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
-        * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.
-        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
-        */
-       public CreateTaxonDescriptionOperation(String label, IUndoContext undoContext,
-                       Taxon taxon, IPostOperationEnabled postOperationEnabled) {
-               this(label, undoContext, taxon, postOperationEnabled, false);
-       }
-
-       /**
-        * <p>Constructor for CreateTaxonDescriptionOperation.</p>
-        *
-        * @param label a {@link java.lang.String} object.
-        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
-        * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.
-        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
-        * @param isImageGallery a boolean.
-        */
-       public CreateTaxonDescriptionOperation(String label, IUndoContext undoContext,
-                       Taxon taxon, IPostOperationEnabled postOperationEnabled, boolean isImageGallery) {
-               super(label, undoContext, taxon, postOperationEnabled);
-               
-               this.isImageGallery  = isImageGallery;
-       }
-       
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
-        */
-       /** {@inheritDoc} */
-       @Override
-       public IStatus execute(IProgressMonitor monitor, IAdaptable info)
-                       throws ExecutionException {
-               
-               description = TaxonDescription.NewInstance(taxon);
-               monitor.worked(20);
-
-               if(isImageGallery){
-                       description.setImageGallery(isImageGallery);
-                       // add the description element to hold the media elements for this image gallery
-                       TextData element = TextData.NewInstance(Feature.IMAGE());
-                       element.addMedia(Media.NewInstance());
-                       description.addElement(element);
-               }
-               monitor.worked(40);
-
-               return postExecute(description);
-       }
-
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.operations.AbstractOperation#redo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
-        */
-       /** {@inheritDoc} */
-       @Override
-       public IStatus redo(IProgressMonitor monitor, IAdaptable info)
-                       throws ExecutionException {
-               
-               taxon.addDescription(description);
-               
-               return postExecute(description);
-       }
-
-       /* (non-Javadoc)
-        * @see org.eclipse.core.commands.operations.AbstractOperation#undo(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
-        */
-       /** {@inheritDoc} */
-       @Override
-       public IStatus undo(IProgressMonitor monitor, IAdaptable info)
-                       throws ExecutionException {
-
-               taxon.removeDescription(description);
-               
-               return postExecute(null);
-       }
+public class CreateTaxonDescriptionOperation extends AbstractDescriptionPostOperation<Taxon, TaxonDescription> {
+
+    /**
+     * @param label
+     * @param undoContext
+     * @param describable
+     * @param postOperationEnabled
+     * @param isImageGallery
+     */
+    public CreateTaxonDescriptionOperation(String label, IUndoContext undoContext, Taxon describable, IPostOperationEnabled postOperationEnabled) {
+        super(label, undoContext, describable, postOperationEnabled, false);
+    }
+
+    /**
+     * @param label
+     * @param undoContext
+     * @param describable
+     * @param postOperationEnabled
+     * @param isImageGallery
+     */
+    public CreateTaxonDescriptionOperation(String label, IUndoContext undoContext, Taxon describable, IPostOperationEnabled postOperationEnabled, boolean isImageGallery) {
+        super(label, undoContext, describable, postOperationEnabled, isImageGallery);
+    }
+
+    @Override
+    protected void initDescription(){
+        description = TaxonDescription.NewInstance(element);
+    }
 }
index aad1362d5cac90b53bc190b52da28e483a4e2272..195e3d715e9d6064452f9811bdbbc2a9d258e28c 100644 (file)
@@ -17,7 +17,7 @@ import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 
@@ -28,7 +28,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  * @created 05.02.2009
  * @version 1.0
  */
-public class DeleteDescriptionElementOperation extends AbstractPostOperation {
+public class DeleteDescriptionElementOperation extends AbstractPostTaxonOperation {
        
        private DescriptionElementBase element;
        private DescriptionBase description = null;
index c331f4fd252d8d5df0a48c3b5c1b04b598a230e1..daa0394da86657dbd3e1e415358c7b98ceef4b1c 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * 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.
 */
@@ -16,7 +16,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -27,9 +27,9 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 05.02.2009
  * @version 1.0
  */
-public class DeleteTaxonDescriptionOperation extends AbstractPostOperation {
-       
-       private TaxonDescription description;
+public class DeleteTaxonDescriptionOperation extends AbstractPostTaxonOperation {
+
+       private final TaxonDescription description;
 
        /**
         * <p>Constructor for DeleteTaxonDescriptionOperation.</p>
@@ -42,9 +42,9 @@ public class DeleteTaxonDescriptionOperation extends AbstractPostOperation {
        public DeleteTaxonDescriptionOperation(String label, IUndoContext undoContext,
                        TaxonDescription description, IPostOperationEnabled postOperationEnabled) {
                super(label, undoContext, postOperationEnabled);
-               
+
                this.description = description;
-               taxon = description.getTaxon();
+               element = description.getTaxon();
        }
 
        /* (non-Javadoc)
@@ -56,7 +56,7 @@ public class DeleteTaxonDescriptionOperation extends AbstractPostOperation {
                        throws ExecutionException {
 
                monitor.worked(20);
-               taxon.removeDescription(description);
+               element.removeDescription(description);
                monitor.worked(40);
 
                return postExecute(description);
@@ -80,8 +80,8 @@ public class DeleteTaxonDescriptionOperation extends AbstractPostOperation {
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
 
-               taxon.addDescription(description);
-               
+           element.addDescription(description);
+
                return postExecute(null);
        }
 }
index 51ba2b2919ce804d47b1a7f19c6187643c99df59..5b4b0053ed727bfea012bd536bf289b3378dd06e 100644 (file)
@@ -21,7 +21,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.api.service.IDescriptionService;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -30,7 +30,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @created Feb 8, 2011
  * @version 1.0
  */
-public class MoveDescriptionElementsOperation extends AbstractPostOperation {
+public class MoveDescriptionElementsOperation extends AbstractPostTaxonOperation {
 
        private Collection<DescriptionElementBase> descriptionElements;
        private DescriptionBase targetDescription;
index 7fa478f016af14846d09ecf63721045fdf7d8037..eb8f66380b6cf03b8e4b0fc53d5b5268b0d77013 100644 (file)
@@ -18,7 +18,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.api.utility.ImagesUtility;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.media.Media;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 /**
  * <p>AddMediaToImageGalleryOperation class.</p>
@@ -28,7 +28,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 05.02.2009
  * @version 1.0
  */
-public class AddMediaToImageGalleryOperation extends AbstractPostOperation {
+public class AddMediaToImageGalleryOperation extends AbstractPostTaxonOperation {
        
        private DescriptionBase description;
        private Media media;
index e9a15814b4602e368040639ed5b732f36c52d936..f6025c0d9252f30df304f4394a39cecf7fa5fd98 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.api.utility.ImagesUtility;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.media.ImageFile;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -30,11 +30,11 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 31.03.2009
  * @version 1.0
  */
-public class CreateImageOperation extends AbstractPostOperation {
-       
+public class CreateImageOperation extends AbstractPostTaxonOperation {
+
        private ImageFile imageFile;
 
-       private DescriptionBase<?> description;
+       private final DescriptionBase<?> description;
 
        /**
         * <p>Constructor for CreateImageOperation.</p>
@@ -67,7 +67,7 @@ public class CreateImageOperation extends AbstractPostOperation {
                super(label, undoContext, taxon, postOperationEnabled);
                this.description = description;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
         */
@@ -75,13 +75,13 @@ public class CreateImageOperation extends AbstractPostOperation {
        @Override
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                if (imageFile == null) {
                        imageFile = ImageFile.NewInstance(null, null);
                }
                monitor.worked(20);
 
-               ImagesUtility.addTaxonImage(taxon, description, imageFile);
+               ImagesUtility.addTaxonImage(element, description, imageFile);
                monitor.worked(40);
 
                return postExecute(imageFile);
@@ -94,9 +94,9 @@ public class CreateImageOperation extends AbstractPostOperation {
        @Override
        public IStatus redo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
-               ImagesUtility.addTaxonImage(taxon, description, imageFile);
-               
+
+               ImagesUtility.addTaxonImage(element, description, imageFile);
+
                return postExecute(imageFile);
        }
 
@@ -107,9 +107,9 @@ public class CreateImageOperation extends AbstractPostOperation {
        @Override
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
-               ImagesUtility.removeTaxonImage(taxon, description, imageFile);
-               
+
+               ImagesUtility.removeTaxonImage(element, description, imageFile);
+
                return postExecute(null);
        }
 
index 6e67c52c70612c9b6a00812e1a4243881edf0665..63172152fec8b8be561b289b4fc5d6cbfa74e0da 100644 (file)
@@ -19,7 +19,7 @@ import org.eclipse.core.runtime.IStatus;
 import eu.etaxonomy.cdm.api.utility.ImagesUtility;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.media.Media;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -30,7 +30,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @version 1.0
  */
 @Deprecated // I don't think this is really used anymore
-public class DeleteMediaOperation extends AbstractPostOperation {
+public class DeleteMediaOperation extends AbstractPostTaxonOperation {
        
        private Media media;
 
index 8d98f3b5e5a80887e1f7588dfec386d6ebdfb1a7..667598736fd8097a10c6c1feb740d5e59d546541 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 
@@ -34,7 +34,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  * @created 05.02.2009
  * @version 1.0
  */
-public class MoveMediaInListOperation extends AbstractPostOperation {
+public class MoveMediaInListOperation extends AbstractPostTaxonOperation {
        
        /** Constant <code>UP=1</code> */
        public static final int UP = 1;
index 40b6d36bf11fd17c814c5eaa29d022cc5d3ce6dc..bef1115e9fc0151d14358211da1c3984192980d5 100644 (file)
@@ -19,7 +19,7 @@ import eu.etaxonomy.cdm.api.utility.ImagesUtility;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.media.ImageFile;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -30,7 +30,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @created 05.02.2009
  * @version 1.0
  */
-public class RemoveImageFromDescriptionElementOperation extends AbstractPostOperation {
+public class RemoveImageFromDescriptionElementOperation extends AbstractPostTaxonOperation {
        
        private DescriptionElementBase element;
        private ImageFile image;
index dd8de1c64a3198cbe0d50a558d14dd3a42479c3c..b49e0496f4114b7383fb3b5509fc98f3c797ef10 100644 (file)
@@ -1,8 +1,8 @@
 /**\r
  * Copyright (C) 2011 EDIT\r
- * European Distributed Institute of Taxonomy \r
+ * European Distributed Institute of Taxonomy\r
  * http://www.e-taxonomy.eu\r
- * \r
+ *\r
  * The contents of this file are subject to the Mozilla Public License Version 1.1\r
  * See LICENSE.TXT at the top of this package for the full license terms.\r
  */\r
@@ -14,71 +14,63 @@ import java.util.List;
 import java.util.Map;\r
 import java.util.Set;\r
 \r
-import org.eclipse.jface.viewers.ITreeContentProvider;\r
-import org.eclipse.jface.viewers.Viewer;\r
-\r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
 import eu.etaxonomy.cdm.model.common.Marker;\r
 import eu.etaxonomy.cdm.model.common.MarkerType;\r
 import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
-import eu.etaxonomy.cdm.model.description.Feature;\r
-import eu.etaxonomy.cdm.model.description.FeatureTree;\r
-import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.description.IDescribable;\r
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;\r
 import eu.etaxonomy.taxeditor.editor.UsageTermCollection;\r
 import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveContentProvider;\r
-import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;\r
 import eu.etaxonomy.taxeditor.model.FeatureNodeContainerTree;\r
-import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
-import eu.etaxonomy.taxeditor.store.TermStore;\r
 \r
 /**\r
  * The class provides the required content to the Uses View\r
- * @author a.theys     \r
+ * @author a.theys\r
  * @created mar 13, 2012\r
  * @version 1.0\r
  */\r
-public class UsesContentProvider extends DescriptiveContentProvider implements ITreeContentProvider {\r
+public class UsesContentProvider extends DescriptiveContentProvider {\r
 \r
        Set<MarkerType> markerTypes = new HashSet<MarkerType>();\r
-               \r
+\r
        /**\r
         * <p>Constructor for DescriptiveContentProvider.</p>\r
         *\r
         * @param featureNodeContainerCache a {@link java.util.Map} object.\r
         */\r
-       public UsesContentProvider(Map<TaxonDescription, FeatureNodeContainerTree> featureNodeContainerCache) {\r
+       public UsesContentProvider(Map<DescriptionBase<?>, FeatureNodeContainerTree> featureNodeContainerCache) {\r
                super(featureNodeContainerCache);\r
                this.featureNodeContainerCache = featureNodeContainerCache;\r
        }\r
 \r
        /**\r
         * Get all descriptions associated with the given TaxonEditorInput\r
-        * \r
+        *\r
         * @param parentElement\r
         * @return\r
         */\r
        @Override\r
-       protected List<DescriptionBase> getDescriptions(TaxonEditorInput parentElement) {\r
-               this.markerTypes.addAll(CdmStore.getTermManager().getPreferredTerms(MarkerType.class));\r
-               Taxon taxon = parentElement.getTaxon();\r
-               List<DescriptionBase> descriptions = new ArrayList<DescriptionBase>();\r
-               \r
-               for(DescriptionBase description : taxon.getDescriptions()){\r
-                       if(! description.isImageGallery()){\r
-                               MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseMarkerType);\r
-                               Set<Marker> descriptionMarkers = description.getMarkers();\r
-                               if(descriptionMarkers != null) {\r
-                                       for (Marker marker: descriptionMarkers) {\r
-                                               if(marker.getMarkerType().equals(useMarkertype)) {\r
-                                                       descriptions.add(description);\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }                       \r
+       protected List<DescriptionBase> getDescriptions(IDescribable<?> parentElement) {\r
+           List<DescriptionBase> descriptions = new ArrayList<DescriptionBase>();\r
+           if(parentElement instanceof Taxon){\r
+               Taxon taxon = (Taxon) parentElement;\r
+               this.markerTypes.addAll(CdmStore.getTermManager().getPreferredTerms(MarkerType.class));\r
+               for(DescriptionBase description : taxon.getDescriptions()){\r
+                   if(! description.isImageGallery()){\r
+                       MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseMarkerType);\r
+                       Set<Marker> descriptionMarkers = description.getMarkers();\r
+                       if(descriptionMarkers != null) {\r
+                           for (Marker marker: descriptionMarkers) {\r
+                               if(marker.getMarkerType().equals(useMarkertype)) {\r
+                                   descriptions.add(description);\r
+                               }\r
+                           }\r
+                       }\r
+                   }\r
+               }\r
+           }\r
                return descriptions;\r
        }\r
 \r
index f208906a8c701f15b06ff2b13f2823fceede48dd..31bd189916b87fe8ca685b6d1a4816d2819ffead 100644 (file)
@@ -1,8 +1,8 @@
 /**\r
 * Copyright (C) 2011 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
 * http://www.e-taxonomy.eu\r
-* \r
+*\r
 * The contents of this file are subject to the Mozilla Public License Version 1.1\r
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
@@ -11,22 +11,22 @@ package eu.etaxonomy.taxeditor.editor.view.uses.handler;
 import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
 import eu.etaxonomy.taxeditor.editor.view.descriptive.handler.CreateDescriptionHandler;\r
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonDescriptionOperation;\r
 import eu.etaxonomy.taxeditor.editor.view.uses.operation.CreateTaxonUseOperation;\r
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 \r
 /**\r
  * CreateUseHandler Class\r
- * @author a.theys     \r
+ * @author a.theys\r
  * @created mar 13, 2012\r
  * @version 1.0\r
  */\r
 public class CreateUseHandler extends CreateDescriptionHandler {\r
 \r
-       \r
+\r
        /** {@inheritDoc} */\r
        @Override\r
-       protected AbstractPostOperation createOperationInstance(String eventLabel, Taxon taxon, IPostOperationEnabled postOperationEnabled) {\r
+    protected CreateTaxonDescriptionOperation createTaxonOperation(String eventLabel, Taxon taxon, IPostOperationEnabled postOperationEnabled) {\r
                return new CreateTaxonUseOperation(eventLabel, EditorUtil.getUndoContext(), taxon, postOperationEnabled);\r
        }\r
 }\r
index 8124bd3cf9ee75da63e2232e74cd0923e87faf2a..e99cdd862de11def8b14a7973278cbd1a13c877f 100644 (file)
@@ -1,8 +1,8 @@
 /**
  * Copyright (C) 2011 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.
  */
@@ -12,9 +12,8 @@ package eu.etaxonomy.taxeditor.editor.view.uses.handler;
 import org.eclipse.core.commands.ExecutionEvent;
 
 import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.TaxonDescription;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.UsageTermCollection;
 import eu.etaxonomy.taxeditor.editor.view.descriptive.handler.CreateDescriptionElementHandler;
@@ -25,22 +24,22 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 
 /**
  * CreateUseRecordHandler Class
- * @author a.theys     
+ * @author a.theys
  * @created mar 13, 2012
  * @version 1.0
  */
 public class CreateUseRecordHandler extends CreateDescriptionElementHandler {
        /** {@inheritDoc} */
        @Override
-       protected AbstractPostOperation operationCreationInstance(String label, ExecutionEvent event, Taxon taxon, TaxonDescription description, IPostOperationEnabled postOperationEnabled) {
+       protected AbstractPostOperation operationCreationInstance(String label, ExecutionEvent event, DescriptionBase<?> description, IPostOperationEnabled postOperationEnabled) {
                //Use Record Feature retrieval below
                Feature feature = (Feature) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseRecordFeature);
                feature.setSupportsCategoricalData(true);
                return new CreateUseRecordOperation(label,
-                                       EditorUtil.getUndoContext(), taxon,
+                                       EditorUtil.getUndoContext(),
                                        description, feature, postOperationEnabled);
        }
-       
-       
-       
+
+
+
 }
index ebc3e2884c9346bbbc7952e9f4a27304ea079c8a..fd717832fd69a59801600f24b5fa3368c16825f2 100644 (file)
@@ -1,8 +1,8 @@
 /**\r
 * Copyright (C) 2011 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
 * http://www.e-taxonomy.eu\r
-* \r
+*\r
 * The contents of this file are subject to the Mozilla Public License Version 1.1\r
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
@@ -12,9 +12,8 @@ package eu.etaxonomy.taxeditor.editor.view.uses.handler;
 import org.eclipse.core.commands.ExecutionEvent;\r
 \r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
-import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.editor.EditorUtil;\r
 import eu.etaxonomy.taxeditor.editor.UsageTermCollection;\r
 import eu.etaxonomy.taxeditor.editor.view.descriptive.handler.CreateDescriptionElementHandler;\r
@@ -25,18 +24,18 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 \r
 /**\r
  * CreateUseSummaryHandler Class\r
- * @author a.theys     \r
+ * @author a.theys\r
  * @created mar 13, 2012\r
  * @version 1.0\r
  */\r
 public class CreateUseSummaryHandler extends CreateDescriptionElementHandler {\r
        /** {@inheritDoc} */\r
        @Override\r
-       protected AbstractPostOperation operationCreationInstance(String label, ExecutionEvent event, Taxon taxon, TaxonDescription description, IPostOperationEnabled postOperationEnabled) {\r
+       protected AbstractPostOperation operationCreationInstance(String label, ExecutionEvent event, DescriptionBase<?> description, IPostOperationEnabled postOperationEnabled) {\r
                //Use Record Feature retrieval below\r
                Feature feature = (Feature) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseSummaryFeature);\r
                feature.setSupportsTextData(true);\r
-               return new CreateUseSummaryOperation(label,     EditorUtil.getUndoContext(), taxon,     description, feature, postOperationEnabled);\r
+               return new CreateUseSummaryOperation(label,     EditorUtil.getUndoContext(), description, feature, postOperationEnabled);\r
        }\r
-       \r
+\r
 }\r
index f312a1a42970e4b5efe9ddeb73dbdbcda9971a9d..8f1c8084981009f005b0e24055b46ce60361cec3 100644 (file)
@@ -1,15 +1,13 @@
 /**\r
 * Copyright (C) 2011 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
 * http://www.e-taxonomy.eu\r
-* \r
+*\r
 * The contents of this file are subject to the Mozilla Public License Version 1.1\r
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
 package eu.etaxonomy.taxeditor.editor.view.uses.operation;\r
 \r
-import java.util.UUID;\r
-\r
 import org.eclipse.core.commands.ExecutionException;\r
 import org.eclipse.core.commands.operations.IUndoContext;\r
 import org.eclipse.core.runtime.IAdaptable;\r
@@ -28,7 +26,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 \r
 /**\r
  * CreateTaxonUseOperation Class\r
- * @author a.theys     \r
+ * @author a.theys\r
  * @created mar 13, 2012\r
  * @version 1.0\r
  */\r
@@ -62,7 +60,7 @@ public class CreateTaxonUseOperation extends CreateTaxonDescriptionOperation {
                        Taxon taxon, IPostOperationEnabled postOperationEnabled, boolean isImageGallery) {\r
                super(label, undoContext, taxon, postOperationEnabled);\r
        }\r
-       \r
+\r
        /* (non-Javadoc)\r
         * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)\r
         */\r
@@ -70,8 +68,8 @@ public class CreateTaxonUseOperation extends CreateTaxonDescriptionOperation {
        @Override\r
        public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
-               \r
-               description = TaxonDescription.NewInstance(taxon);\r
+\r
+               description = TaxonDescription.NewInstance(element);\r
                monitor.worked(20);\r
                MarkerType useMarkerType = (MarkerType) CdmStore.getService(ITermService.class).find(UsageTermCollection.uuidUseMarkerType);\r
                marker = Marker.NewInstance(useMarkerType, true);\r
index ea45ffb28519c909ae4238eec3a69c7896b5612d..28b7b201156482214e34eba1ba6e649449e773a8 100644 (file)
@@ -1,8 +1,8 @@
 /**
 * Copyright (C) 2011 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.
 */
@@ -15,6 +15,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 
 import eu.etaxonomy.cdm.model.description.CategoricalData;
+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.TaxonDescription;
@@ -26,16 +27,16 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
  * CreateUseRecordOperation Class
- * @author a.theys     
+ * @author a.theys
  * @created mar 13, 2012
  * @version 1.0
  */
 public class CreateUseRecordOperation extends AbstractPostOperation {
-       
+
        /** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.use."{trunked}</code> */
        public static final String ID = "eu.etaxonomy.taxeditor.editor.use.createUseRecord";
-       private TaxonDescription description;
-       private Feature feature;
+       private final DescriptionBase<?> description;
+       private final Feature feature;
        private DescriptionElementBase element;
 
        /**
@@ -48,15 +49,14 @@ public class CreateUseRecordOperation extends AbstractPostOperation {
         * @param feature a {@link eu.etaxonomy.cdm.model.description.Feature} object.
         * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
         */
-       public CreateUseRecordOperation(String label, IUndoContext undoContext,
-               Taxon taxon, TaxonDescription description, Feature feature, IPostOperationEnabled postOperationEnabled) {
-                       super(label, undoContext, taxon, postOperationEnabled);
-               
+       public CreateUseRecordOperation(String label, IUndoContext undoContext, DescriptionBase<?> description, Feature feature, IPostOperationEnabled postOperationEnabled) {
+                       super(label, undoContext, (Taxon)null, postOperationEnabled);
+
                        this.description = description;
                        this.feature = feature;
        }
 
-       
+
        /**
         * <p>Constructor for CreateUseRecordOperation.</p>
         *
@@ -72,8 +72,8 @@ public class CreateUseRecordOperation extends AbstractPostOperation {
                        IUndoContext undoContext, Taxon taxon,
                        TaxonDescription description, Feature feature,
                        DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) {
-                       this(label, undoContext, taxon, description, feature, postOperationEnabled);
-                       
+                       this(label, undoContext, description, feature, postOperationEnabled);
+
                this.element = element;
        }
 
@@ -90,7 +90,7 @@ public class CreateUseRecordOperation extends AbstractPostOperation {
                        }
                }
 
-               
+
                element.setFeature(feature);
                description.addElement(element);
                monitor.worked(40);
@@ -101,9 +101,9 @@ public class CreateUseRecordOperation extends AbstractPostOperation {
        @Override
        public IStatus redo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
-               
+
                description.addElement(element);
-               
+
                return postExecute(element);
        }
 
@@ -111,7 +111,7 @@ public class CreateUseRecordOperation extends AbstractPostOperation {
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)
                        throws ExecutionException {
                description.removeElement(element);
-               
+
                return postExecute(null);
        }
 }
index 2a86f90fddd859a3664efaecdb8dcb3ddc0ac583..80c85db61ccca467cd2e22f646eca1d2a4550610 100644 (file)
@@ -1,8 +1,8 @@
 /**\r
 * Copyright (C) 2011 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
 * http://www.e-taxonomy.eu\r
-* \r
+*\r
 * The contents of this file are subject to the Mozilla Public License Version 1.1\r
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
@@ -14,6 +14,7 @@ import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.IProgressMonitor;\r
 import org.eclipse.core.runtime.IStatus;\r
 \r
+import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.cdm.model.description.Feature;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
@@ -25,19 +26,19 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 \r
 /**\r
  * CreateUseSummaryOperation Class\r
- * @author a.theys     \r
+ * @author a.theys\r
  * @created mar 13, 2012\r
  * @version 1.0\r
  */\r
 public class CreateUseSummaryOperation extends AbstractPostOperation {\r
-       \r
+\r
        public static final String ID = "eu.etaxonomy.taxeditor.editor.use.createUseRecord";\r
-       \r
-       private TaxonDescription description;\r
-       private Feature feature;\r
+\r
+       private final DescriptionBase<?> description;\r
+       private final Feature feature;\r
        private DescriptionElementBase element;\r
 \r
-       \r
+\r
        /**\r
         * <p>Constructor for CreateUseSummaryOperation.</p>\r
         *\r
@@ -48,10 +49,9 @@ public class CreateUseSummaryOperation extends AbstractPostOperation {
         * @param feature a {@link eu.etaxonomy.cdm.model.description.Feature} object.\r
         * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.\r
         */\r
-       public CreateUseSummaryOperation(String label, IUndoContext undoContext,\r
-               Taxon taxon, TaxonDescription description, Feature feature, IPostOperationEnabled postOperationEnabled) {\r
-                       super(label, undoContext, taxon, postOperationEnabled);\r
-               \r
+       public CreateUseSummaryOperation(String label, IUndoContext undoContext, DescriptionBase<?> description, Feature feature, IPostOperationEnabled postOperationEnabled) {\r
+                       super(label, undoContext, (Taxon)null, postOperationEnabled);\r
+\r
                        this.description = description;\r
                        this.feature = feature;\r
        }\r
@@ -71,8 +71,8 @@ public class CreateUseSummaryOperation extends AbstractPostOperation {
                        IUndoContext undoContext, Taxon taxon,\r
                        TaxonDescription description, Feature feature,\r
                        DescriptionElementBase element, IPostOperationEnabled postOperationEnabled) {\r
-                       this(label, undoContext, taxon, description, feature, postOperationEnabled);\r
-                       \r
+                       this(label, undoContext, description, feature, postOperationEnabled);\r
+\r
                this.element = element;\r
        }\r
 \r
@@ -86,7 +86,7 @@ public class CreateUseSummaryOperation extends AbstractPostOperation {
                                element = TextData.NewInstance();\r
                }\r
 \r
-               \r
+\r
                element.setFeature(feature);\r
                description.addElement(element);\r
                monitor.worked(40);\r
@@ -97,9 +97,9 @@ public class CreateUseSummaryOperation extends AbstractPostOperation {
        @Override\r
        public IStatus redo(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
-               \r
+\r
                description.addElement(element);\r
-               \r
+\r
                return postExecute(element);\r
        }\r
 \r
@@ -107,7 +107,7 @@ public class CreateUseSummaryOperation extends AbstractPostOperation {
        public IStatus undo(IProgressMonitor monitor, IAdaptable info)\r
                        throws ExecutionException {\r
                description.removeElement(element);\r
-               \r
+\r
                return postExecute(null);\r
        }\r
 }\r
index 13b8f075196c4a6ab8e3ad718178abcd2b793c42..34e62b6a9a0e74beea0ab4764c73bd2765c3ddd0 100644 (file)
@@ -102,7 +102,7 @@ public class ChangeConceptToSynonymOperationTest extends AbstractTaxeditorOperat
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostOperation#postExecute(ICdmBase)}.
+        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation#postExecute(ICdmBase)}.
         */
        @Test
        public void testPostExecute() {
index 06511cd508cfebcd1c3492fb019a9b9757ef97ca..60ea9941e06ac82cfa7d9f0d86cacc00a2ce91f0 100644 (file)
@@ -101,7 +101,7 @@ public class ChangeHomotypicGroupOperationTest extends AbstractTaxeditorOperatio
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostOperation#postExecute(ICdmBase)}.
+        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation#postExecute(ICdmBase)}.
         */
        @Test
        public void testPostExecute() {
index 5a799ca7c9341173df598125154f9403d2fe6f72..8868c27dbba870a2f9846b613c4f5217fa34fb6a 100644 (file)
@@ -84,7 +84,7 @@ public class ChangeHomotypicalGroupBasionymOperationTest extends AbstractTaxedit
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostOperation#postExecute(ICdmBase)}.
+        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation#postExecute(ICdmBase)}.
         */
        @Test
        public void testPostExecute() {
index 62ca21fe9c64aa9146b8a115bf9b7b4974e4003b..096c61ad4f7eb8f1669547d738f601acbe0f4155 100644 (file)
@@ -98,7 +98,7 @@ public class ChangeSynonymToConceptOperationTest extends AbstractTaxeditorOperat
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostOperation#postExecute(ICdmBase)}.
+        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation#postExecute(ICdmBase)}.
         */
        @Test
        public void testPostExecute() {
index b5ea54a75bd81be4162347d60f40928a1d60c956..95739883f387720408a705bc3dc5c151302e3091 100644 (file)
@@ -96,7 +96,7 @@ public class ChangeSynonymToMisapplicationOperationTest extends AbstractTaxedito
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostOperation#postExecute(ICdmBase)}.
+        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation#postExecute(ICdmBase)}.
         */
        @Test
        public void testPostExecute() {
index 5a6d9b455f40d58ddb3d707eb5409a8a1d88e8cb..044cb26d6279c12add9202390f340dadaaa63756 100644 (file)
@@ -85,7 +85,7 @@ public class CreateConceptRelationOperationTest extends AbstractTaxeditorOperati
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostOperation#postExecute(ICdmBase)}.
+        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation#postExecute(ICdmBase)}.
         */
        @Test
        public void testPostExecute() {
index 2436e7f0ca254181878aeaf55914269b22b9f51f..3ee2d654370da56989ec003bb0f67b803b78c76c 100644 (file)
@@ -24,22 +24,22 @@ public class CreateDescriptionElementOperationTest extends AbstractTaxeditorOper
 
        private static Feature feature;
 
-       private DescriptionElementBase[] arrayType = new DescriptionElementBase[0];
-       
+       private final DescriptionElementBase[] arrayType = new DescriptionElementBase[0];
+
        @BeforeClass
        public static void setUpBeforeClass() throws Exception {
                taxon = Taxon.NewInstance(null, null);
                description = TaxonDescription.NewInstance();
                feature = Feature.NewInstance();
-               
-               operation = new CreateDescriptionElementOperation("Add Element", null, taxon, description, feature, postOperation);
+
+               operation = new CreateDescriptionElementOperation("Add Element", null, description, feature, postOperation);
        }
 
 
        @Test
        public void testExecute() throws ExecutionException {
                operation.execute(monitor, info);
-               
+
                Assert.assertTrue(description.getElements().size() > 0);
                Assert.assertEquals(feature, description.getElements().toArray(arrayType)[0].getFeature());
        }
@@ -47,14 +47,14 @@ public class CreateDescriptionElementOperationTest extends AbstractTaxeditorOper
        @Test
        public void testUndo() throws ExecutionException {
                operation.undo(monitor, info);
-               
+
                Assert.assertTrue(description.getElements().size() == 0);
        }
-       
+
        @Test
        public void testRedo() throws ExecutionException {
                operation.redo(monitor, info);
-               
+
                Assert.assertTrue(description.getElements().size() > 0);
                Assert.assertEquals(feature, description.getElements().toArray(arrayType)[0].getFeature());
        }
index 458dfd121f51ef62a0b5d307844512c14d7154e8..794cd7779be97aa58845cce2db46686341ea77c7 100644 (file)
@@ -85,7 +85,7 @@ public class DeleteConceptRelationOperationTest extends AbstractTaxeditorOperati
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostOperation#postExecute(ICdmBase)}.
+        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation#postExecute(ICdmBase)}.
         */
        @Test
        public void testPostExecute() {
index f52990bd3c7553766f2433d0ebf7d61a5bb882a9..22ee71d4d15729ffe1ce3c7733bb4271118038f4 100644 (file)
@@ -82,7 +82,7 @@ public class DeleteMisapplicationOperationTest extends AbstractTaxeditorOperatio
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostOperation#postExecute(ICdmBase)}.
+        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation#postExecute(ICdmBase)}.
         */
        @Test
        public void testPostExecute() {
index 37065b5d6f3d18f4f03e85ee7e2f88142703b0db..38e6e88611c9231c87dd096779b6df617cc2023d 100644 (file)
@@ -183,7 +183,7 @@ public class SwapSynonymAndAcceptedOperationTest extends AbstractTaxeditorOperat
        }
 
        /**
-        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostOperation#postExecute(ICdmBase)}.
+        * Test method for {@link eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation#postExecute(ICdmBase)}.
         */
        @Test
        public void testPostExecute() {
index 2ffd39de396949b59709744588f46a98096d5a4e..5bb8f28ebe4ac4f223c7bd3714d1f7515a0c03d0 100644 (file)
@@ -14,7 +14,7 @@ import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
 import eu.etaxonomy.cdm.api.service.ITermService;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 
@@ -27,7 +27,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @version 1.0
  *
  */
-public class RefreshNodesOperation extends AbstractPostOperation {
+public class RefreshNodesOperation extends AbstractPostTaxonOperation {
 
        PolytomousKey key;      
        
index c6b3c56bc076c36698c7f498027d5008c5ad9938..93f871e2f720cc263c88973195bb0a3aaedc5074 100644 (file)
@@ -19,7 +19,7 @@ import org.eclipse.swt.dnd.TextTransfer;
 import org.eclipse.swt.dnd.Transfer;\r
 \r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 \r
 \r
@@ -28,7 +28,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @date 23 Jan 2012\r
  *\r
  */\r
-public class CopyOperation extends AbstractPostOperation {\r
+public class CopyOperation extends AbstractPostTaxonOperation {\r
 \r
        /**\r
         * @param label\r
index 9cd017a222c44819d6cbb38fbc6bc7dcd39ec05a..1f9cea4dfdb3607a7e1bb2ab5215ebc9321d31a5 100644 (file)
@@ -17,27 +17,21 @@ 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.jface.dialogs.MessageDialog;
-import org.eclipse.ui.handlers.HandlerUtil;
 
-import eu.etaxonomy.cdm.api.application.CdmApplicationController;
 import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.api.service.IClassificationService;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
 import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator;
 import eu.etaxonomy.cdm.api.service.exception.DataChangeNoRollbackException;
 import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.ITreeNode;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 
 /**
  * <p>DeleteTreeNodeOperation class.</p>
@@ -49,7 +43,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
 public class DeleteOperation extends AbstractPersistentPostOperation{
 
        private Set<ITaxonTreeNode> treeNodes;
-       private TaxonDeletionConfigurator config;
+       private final TaxonDeletionConfigurator config;
 
 
        /**
@@ -87,7 +81,7 @@ public class DeleteOperation extends AbstractPersistentPostOperation{
                this.treeNodes = treeNodes;
                this.config = config;
        }
-       
+
 
        /* (non-Javadoc)
         * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
@@ -104,15 +98,15 @@ public class DeleteOperation extends AbstractPersistentPostOperation{
                        if(taxonNode != null && taxonNode instanceof TaxonNode){
                                //((TaxonNode) treeNode).delete();
 
-                               taxon = ((TaxonNode)taxonNode).getTaxon();
+                               element = ((TaxonNode)taxonNode).getTaxon();
                                try {
                                        service.deleteTaxonNode((TaxonNode)taxonNode, config);
                                } catch (DataChangeNoRollbackException e) {
-                                       
+
                                        throw new ExecutionException(e.getMessage());
-                                       
+
                                }
-                               
+
                        }else if(taxonNode != null && taxonNode instanceof Classification){
                                Classification taxonomicTree = (Classification) taxonNode;
                                /*if(taxonomicTree.hasChildNodes()){
@@ -125,8 +119,8 @@ public class DeleteOperation extends AbstractPersistentPostOperation{
                                }catch(ReferencedObjectUndeletableException e){
                                        throw new ExecutionException(e.getMessage());
                                }
-                                       
-                                       
+
+
                                /*}else{
                                        try{
                                        CdmStore.getService(IClassificationService.class).delete(taxonomicTree);
@@ -141,7 +135,7 @@ public class DeleteOperation extends AbstractPersistentPostOperation{
                                        throw new ExecutionException(e.getMessage());
                                }
                        }
-               
+
                monitor.worked(40);
                return postExecute(null);
        }
index 543454e66850e6d452f866d97bc515e20fa4bd71..9a8373a7da0404fab7389b4eead0f8b73a519ef7 100644 (file)
@@ -30,6 +30,8 @@ Export-Package: eu.etaxonomy.cdm,
  eu.etaxonomy.taxeditor.store.internal,
  eu.etaxonomy.taxeditor.store.operations,
  eu.etaxonomy.taxeditor.ui.bar,
+ eu.etaxonomy.taxeditor.ui.campanula.derivatesearch,
+ eu.etaxonomy.taxeditor.ui.campanula.specimenSearch,
  eu.etaxonomy.taxeditor.ui.combo,
  eu.etaxonomy.taxeditor.ui.dialog,
  eu.etaxonomy.taxeditor.ui.dialog.selection,
diff --git a/eu.etaxonomy.taxeditor.store/icons/artwork-16x16-32.gif b/eu.etaxonomy.taxeditor.store/icons/artwork-16x16-32.gif
new file mode 100644 (file)
index 0000000..ee8009a
Binary files /dev/null and b/eu.etaxonomy.taxeditor.store/icons/artwork-16x16-32.gif differ
diff --git a/eu.etaxonomy.taxeditor.store/icons/dna_derivate-16x16-32.gif b/eu.etaxonomy.taxeditor.store/icons/dna_derivate-16x16-32.gif
new file mode 100644 (file)
index 0000000..a186f00
Binary files /dev/null and b/eu.etaxonomy.taxeditor.store/icons/dna_derivate-16x16-32.gif differ
diff --git a/eu.etaxonomy.taxeditor.store/icons/fieldunit-16x16-32.gif b/eu.etaxonomy.taxeditor.store/icons/fieldunit-16x16-32.gif
new file mode 100644 (file)
index 0000000..2c2aaf3
Binary files /dev/null and b/eu.etaxonomy.taxeditor.store/icons/fieldunit-16x16-32.gif differ
diff --git a/eu.etaxonomy.taxeditor.store/icons/specimen_derivate-16x16-32.gif b/eu.etaxonomy.taxeditor.store/icons/specimen_derivate-16x16-32.gif
new file mode 100644 (file)
index 0000000..cbd8e23
Binary files /dev/null and b/eu.etaxonomy.taxeditor.store/icons/specimen_derivate-16x16-32.gif differ
diff --git a/eu.etaxonomy.taxeditor.store/icons/specimen_scan_derivate-16x16-32.gif b/eu.etaxonomy.taxeditor.store/icons/specimen_scan_derivate-16x16-32.gif
new file mode 100644 (file)
index 0000000..a695f43
Binary files /dev/null and b/eu.etaxonomy.taxeditor.store/icons/specimen_scan_derivate-16x16-32.gif differ
diff --git a/eu.etaxonomy.taxeditor.store/icons/tissue_sample-16x16-32.gif b/eu.etaxonomy.taxeditor.store/icons/tissue_sample-16x16-32.gif
new file mode 100644 (file)
index 0000000..e9a3d6a
Binary files /dev/null and b/eu.etaxonomy.taxeditor.store/icons/tissue_sample-16x16-32.gif differ
index 4b7d01cb2dd3e2c25fd3b21d3cef0023f0cfbf8d..c4c5996798a81b862b3d14a4b62bbfcf94aff573 100644 (file)
         id="eu.etaxonomy.taxeditor.view.userecords"
         name="Use Records"
         restorable="true">
+  </view>
+  <view
+        class="eu.etaxonomy.taxeditor.ui.campanula.derivatesearch.DerivateSearchView"
+        id="eu.etaxonomy.taxeditor.ui.campanula.derivatesearch.DerivateSearchView"
+        name="Derivate Search"
+        restorable="true">
   </view>
    </extension>
    <extension
          </command>
       </menuContribution>
    </extension>
-   <extension
-         name="Window Menu Commands"
-         point="org.eclipse.ui.commands">
-      <command
-            defaultHandler="eu.etaxonomy.taxeditor.editor.definedterm.handler.OpenDefinedTermEditorHandler"
-            id="eu.etaxonomy.taxeditor.store.openDefinedTermEditor"
-            name="Open Defined Term Editor">
-         <commandParameter
-               id="eu.etaxonomy.taxeditor.store.openDefinedTermEditor.parameter"
-               name="inputType"
-               optional="true">
-         </commandParameter>
-         <commandParameter
-               id="eu.etaxonomy.taxeditor.store.openDefinedTermEditor.termTypeUuid"
-               name="inputType"
-               optional="true">
-         </commandParameter>
-      </command>
-   </extension>
-   <extension
-         name="File Menu Commands"
-         point="org.eclipse.ui.commands">
-      <command
-            defaultHandler="eu.etaxonomy.taxeditor.handler.ShowLoginWindowHandler"
-            id="eu.etaxonomy.taxeditor.store.operations.showLoginWindow"
-            name="Show Login Window">
-      </command>
-   </extension>
    <extension
          point="org.eclipse.ui.handlers">
       <handler
             id="eu.etaxonomy.taxeditor.store.datasource.update"
             name="Update Datasource">
       </command>
-   </extension>
-   <extension
-         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.handler.ShowLoginWindowHandler"
+            id="eu.etaxonomy.taxeditor.store.operations.showLoginWindow"
+            name="Show Login Window">
+      </command>
+      <command
+            defaultHandler="eu.etaxonomy.taxeditor.editor.definedterm.handler.OpenDefinedTermEditorHandler"
+            id="eu.etaxonomy.taxeditor.store.openDefinedTermEditor"
+            name="Open Defined Term Editor">
+         <commandParameter
+               id="eu.etaxonomy.taxeditor.store.openDefinedTermEditor.parameter"
+               name="inputType"
+               optional="true">
+         </commandParameter>
+         <commandParameter
+               id="eu.etaxonomy.taxeditor.store.openDefinedTermEditor.termTypeUuid"
+               name="inputType"
+               optional="true">
+         </commandParameter>
+      </command>
       <command
             defaultHandler="eu.etaxonomy.taxeditor.editor.definedterm.handler.CreateDefinedTermHandler"
             id="eu.etaxonomy.taxeditor.editor.definedTerms.newDefinedTerm"
index 059990f6bebca7972e9720a438545c7e14e8e9a6..2600f04779d0a1754b5f1e0f44740bd583023dea 100644 (file)
@@ -9,10 +9,6 @@
  */\r
 package eu.etaxonomy.taxeditor.editor.definedterm;\r
 \r
-import java.util.HashSet;\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
 import org.eclipse.core.runtime.IProgressMonitor;\r
 import org.eclipse.jface.action.GroupMarker;\r
 import org.eclipse.jface.action.MenuManager;\r
@@ -38,13 +34,8 @@ import org.eclipse.ui.part.EditorPart;
 \r
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;\r
-import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
-import eu.etaxonomy.cdm.model.common.TermType;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;\r
-import eu.etaxonomy.taxeditor.editor.definedterm.input.AbstractDefinedTermEditorInput;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;\r
 import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
index e7ca0c28d174320d12426ac6b0604bb7371f557a..d0ad5df8072a396b7b60ce4573cdc7e8a0d3a270 100644 (file)
@@ -17,9 +17,7 @@ import java.util.SortedSet;
 import org.eclipse.jface.viewers.ITreeContentProvider;\r
 import org.eclipse.jface.viewers.Viewer;\r
 \r
-import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
-import eu.etaxonomy.cdm.model.common.TermBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
index 7e3e8f9eb53b7493b5683dda0c8ec5de9fbf1919..3be304f230f7d1d18ed4bb7a3c1bcb580092b0b4 100644 (file)
@@ -9,11 +9,9 @@
 */\r
 package eu.etaxonomy.taxeditor.editor.definedterm;\r
 \r
-import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;\r
-import org.eclipse.jface.viewers.StyledString.Styler;\r
-import org.eclipse.jface.viewers.LabelProvider;\r
 import org.eclipse.jface.viewers.StyledCellLabelProvider;\r
 import org.eclipse.jface.viewers.StyledString;\r
+import org.eclipse.jface.viewers.StyledString.Styler;\r
 import org.eclipse.jface.viewers.ViewerCell;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.custom.StyleRange;\r
@@ -21,10 +19,8 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.TextStyle;\r
 import org.eclipse.swt.widgets.Display;\r
 \r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.TermBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
-import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;\r
 \r
 /**\r
  * @author l.morris\r
index d60d40a78386439a93c6566578fa6ac12734cb57..f3e09bac07b8070eff0d8c907f18701314b11e97 100644 (file)
@@ -18,9 +18,7 @@ import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.jface.viewers.IStructuredSelection;\r
 import org.eclipse.ui.handlers.HandlerUtil;\r
 \r
-import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
 import eu.etaxonomy.cdm.model.common.TermBase;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.operation.CreateDefinedTermOperation;\r
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
index fb7e01f3939295bd74c84a7c6822c183b48bb6d8..12f349be1b30cd0e1a01c53f051c0901f05c2205 100644 (file)
@@ -15,11 +15,8 @@ import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.commands.IHandler;\r
 import org.eclipse.core.commands.common.NotDefinedException;\r
 import org.eclipse.core.commands.operations.IUndoContext;\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
 import org.eclipse.ui.handlers.HandlerUtil;\r
 \r
-import eu.etaxonomy.cdm.model.common.TermType;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.operation.CreateTermVocabularyOperation;\r
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
index 40bc987fa695fad7c7623a35f7b99f9864718761..de5d40a13ebb84b80d63c7398a8b4b9c19ca3c65 100644 (file)
@@ -19,10 +19,7 @@ import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.jface.viewers.IStructuredSelection;\r
 import org.eclipse.ui.handlers.HandlerUtil;\r
 \r
-import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.TermBase;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.operation.DeleteTermBaseOperation;\r
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
index 7677096e1ec1dc2fa291fc8bd4a85ca4704f39e2..c1e838a9ca056d89e81d845881838fa00e743fc4 100644 (file)
@@ -20,7 +20,7 @@ import eu.etaxonomy.cdm.model.common.DefinedTermBase;
 import eu.etaxonomy.cdm.model.common.TermBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;\r
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.StoreUtil;\r
 \r
@@ -29,7 +29,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  * @date 21 Dec 2011\r
  *\r
  */\r
-public class CreateDefinedTermOperation extends AbstractPostOperation {\r
+public class CreateDefinedTermOperation extends AbstractPostTaxonOperation {\r
 \r
        \r
 \r
index cad587c2b0fc97115a231414322731d1d0fbf797..74a8b7cf821cf881ef6b316d8a0cf89cef583461 100644 (file)
@@ -9,8 +9,6 @@
 */\r
 package eu.etaxonomy.taxeditor.editor.definedterm.operation;\r
 \r
-import java.net.URI;\r
-\r
 import org.eclipse.core.commands.ExecutionException;\r
 import org.eclipse.core.commands.operations.IUndoContext;\r
 import org.eclipse.core.runtime.IAdaptable;\r
@@ -18,13 +16,9 @@ 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.DefinedTerm;\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.taxeditor.editor.definedterm.DefinedTermEditor;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;\r
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 \r
@@ -33,7 +27,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
  * @date 21 Dec 2011\r
  *\r
  */\r
-public class CreateTermVocabularyOperation extends AbstractPostOperation {\r
+public class CreateTermVocabularyOperation extends AbstractPostTaxonOperation {\r
 \r
        private TermEditorInput definedEditorInput;\r
        \r
index eed7baa7d58fd9b55b811b9742adcf0bb7d68da2..52ebe22c73c80663fde7d781aea3692740164b6d 100644 (file)
@@ -25,7 +25,7 @@ import eu.etaxonomy.cdm.model.common.TermBase;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;\r
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 import eu.etaxonomy.taxeditor.store.StoreUtil;\r
@@ -35,7 +35,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  * @date 22 Dec 2011\r
  *\r
  */\r
-public class DeleteTermBaseOperation extends AbstractPostOperation {\r
+public class DeleteTermBaseOperation extends AbstractPostTaxonOperation {\r
 \r
        private TermEditorInput definedEditorInput;\r
        private TermBase termBase;\r
index b68a85061f85aabeffa98465391227c5bfb7762b..e85d87700eb1ce16804d9b9af78caecfb552f285 100644 (file)
@@ -21,9 +21,7 @@ import org.eclipse.core.runtime.Status;
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.TermBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
-import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;\r
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;\r
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;\r
 import eu.etaxonomy.taxeditor.store.StoreUtil;\r
 \r
@@ -32,7 +30,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
  * @date 10 Jan 2012\r
  *\r
  */\r
-public class MoveDefinedTermOperation extends AbstractPostOperation {\r
+public class MoveDefinedTermOperation extends AbstractPostTaxonOperation {\r
        \r
        private Collection<DefinedTermBase> sourceTerms;// the actual DefinedTermBase(s) we are moving\r
        private TermBase targetTermOrVocabulary;// the target VOCABULARY or DefinedTerm we are moving these to\r
index 9b3b75663d000154b8d1f18744876be8440240f9..3ca24a788f303bd812c5455e5a1f10bbb2a75de7 100644 (file)
@@ -12,14 +12,12 @@ package eu.etaxonomy.taxeditor.io.wizard;
 
 import java.io.File;
 import java.net.URI;
-import java.net.URISyntaxException;
 
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.ui.IWorkbench;
 
 import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator;
 import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 
 /**
  * <p>JaxbExportWizard class.</p>
index 2ea0a5d6a4d58e0b1567eb178de9fd9ea02283f2..520ff64238507314b2760aa0c23bb192108ae479 100644 (file)
@@ -452,7 +452,7 @@ public abstract class AbstractUtility {
         *
         * @param operation
         *            a
-        *            {@link eu.etaxonomy.taxeditor.operation.AbstractPostOperation}
+        *            {@link eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation}
         *            object.
         * @return a {@link org.eclipse.core.runtime.IStatus} object.
         */
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasFactualData.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/IPartContentHasFactualData.java
new file mode 100644 (file)
index 0000000..23ea105
--- /dev/null
@@ -0,0 +1,21 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.model;
+
+/**
+ * Clients implementing this interface indicate, that the data they present is suitable for the factual data view.
+ *
+ * @author pplitzner
+ * @date 03.12.2013
+ *
+ */
+public interface IPartContentHasFactualData {
+
+}
index 9be591dddd571dfc699bb8951c79f8ab6c624191..89f5aefe6aa2c120d16c95e781a64ce92f91ae42 100644 (file)
@@ -21,7 +21,6 @@ import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.swt.graphics.Image;
 
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 
 /**
@@ -135,6 +134,14 @@ public class ImageResources {
        /** Constant <code>COLLAPSE_ALL="collapse_all"</code> */
        public static final String COLLAPSE_ALL = "collapse_all";
 
+       public static final String TISSUE_SAMPLE_DERIVATE = "tissue_sample_derivate";
+       public static final String DNA_SAMPLE_DERIVATE = "dna_derivate";
+       public static final String FIELD_UNIT = "field_unit";
+       public static final String SPECIMEN_DERIVATE = "specimen_scan_derivate";
+    public static final String ARTWORK_DERIVATE = "artwor_derivate";
+    public static final String SPECIMEN_SCAN_DERIVATE = "specimen_scan_derivate";
+    public static final String LIVING_PLANT_FOTO_DERIVATE = "living_plant_photo_derivate";
+
 
 
        /***************************************************************************
@@ -186,7 +193,7 @@ public class ImageResources {
                        } catch (MalformedURLException e) {
                                // should never happen
                        } catch (Exception e) {
-                               StoreUtil.error(ImageResources.class, e);
+                               AbstractUtility.error(ImageResources.class, e);
                        }
 
 //                     logger.warn(ImageDescriptor.getMissingImageDescriptor().getClass());
@@ -311,6 +318,20 @@ public class ImageResources {
                        "lock.png");
                registerImage(registry, LOCK_OPEN_ICON,
                        "lock_open.png");
+               registerImage(registry, DNA_SAMPLE_DERIVATE,
+                       "dna_derivate-16x16-32.gif");
+               registerImage(registry, FIELD_UNIT,
+                       "fieldunit-16x16-32.gif");
+               registerImage(registry, SPECIMEN_DERIVATE,
+                       "specimen_derivate-16x16-32.gif");
+               registerImage(registry, ARTWORK_DERIVATE,
+                       "artwork_derivate-16x16-32.gif");
+               registerImage(registry, SPECIMEN_SCAN_DERIVATE,
+                       "specimen_scan_derivate-16x16-32.gif");
+               registerImage(registry, LIVING_PLANT_FOTO_DERIVATE,
+                       "specimen_scan_derivate-16x16-32.gif");
+               registerImage(registry, TISSUE_SAMPLE_DERIVATE,
+                       "tissue_sample-16x16-32.gif");
        }
 
        private void registerImage(ImageRegistry registry, String key,
index 260beaf7b4b8f95707fa6d1d735561672e8d2340..627c140aa66ba82c4ee7a7e43bc10504268833b0 100644 (file)
@@ -21,10 +21,10 @@ import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.GeneralWizardPage;
 
 /**
  * <p>NewDerivedUnitBaseWizard class.</p>
@@ -48,48 +48,52 @@ public class NewDerivedUnitBaseWizard extends AbstractNewEntityWizard<SpecimenOr
        @Override
        public void addPages() {
            DerivedUnitFacade facade = null;
-        try {
-            if(getEntity() instanceof DerivedUnit) {
-                facade = DerivedUnitFacade.NewInstance((DerivedUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
-                addPage(new GeneralWizardPage(formFactory, getConversationHolder(), facade));
-                addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade));
-                addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade));
-                addPage(new DerivedUnitBaseWizardPage(formFactory, getConversationHolder(), facade));
-            }
-            else if(getEntity() instanceof FieldUnit){
-                facade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
-                addPage(new FieldUnitGeneralWizardPage(formFactory, getConversationHolder(), facade));
-                addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade));
-                addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade));
-            }
-        } catch (DerivedUnitFacadeNotSupportedException e) {
-            // we should never get here
-            throw new IllegalStateException();
-        }
-       }
+           try {
+               if(getEntity() instanceof DerivedUnit) {
+                   facade = DerivedUnitFacade.NewInstance((DerivedUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
+                   facade.getFieldUnit(true); //TODO: this is a temporary solution for the Campanula project as
+                   //this ALWAYS needs a FieldUnit as root of the hierarchy
 
-
-       /* (non-Javadoc)
-        * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#createNewEntity()
-        */
-       /** {@inheritDoc} */
-       @Override
-       protected SpecimenOrObservationBase createNewEntity() {
-           if(specOrObsType == null) {
-               return DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
-           } else {
-               if(SpecimenOrObservationType.Media.equals(specOrObsType) ||
-                       ((specOrObsType.getKindOf() != null) &&
-                               specOrObsType.getKindOf().equals(SpecimenOrObservationType.Media))) {
-                   return MediaSpecimen.NewInstance(SpecimenOrObservationType.Media);
-               } else if (specOrObsType.equals(SpecimenOrObservationType.FieldUnit)) {
-                   return FieldUnit.NewInstance();
-               } else {
-                   return DerivedUnit.NewInstance(specOrObsType);
+                   addPage(new DerivedUnitGeneralWizardPage(formFactory, getConversationHolder(), facade));
+                   addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade));
+                   addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade));
+                   addPage(new DerivedUnitBaseWizardPage(formFactory, getConversationHolder(), facade));
+               }
+               else if(getEntity() instanceof FieldUnit){
+                   facade = DerivedUnitFacade.NewInstance(SpecimenOrObservationType.FieldUnit, (FieldUnit)getEntity(), PreferencesUtil.getDerivedUnitConfigurator());
+                   addPage(new FieldUnitGeneralWizardPage(formFactory, getConversationHolder(), facade));
+                   addPage(new GatheringEventWizardPage(formFactory, getConversationHolder(), facade));
+                   addPage(new FieldUnitWizardPage(formFactory, getConversationHolder(), facade));
                }
+           } catch (DerivedUnitFacadeNotSupportedException e) {
+               // we should never get here
+               throw new IllegalStateException();
            }
        }
 
+    /*
+     * (non-Javadoc)
+     *
+     * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#
+     * createNewEntity()
+     */
+    /** {@inheritDoc} */
+    @Override
+    protected SpecimenOrObservationBase createNewEntity() {
+        if (specOrObsType == null) {
+            return DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+        } else {
+            if (SpecimenOrObservationType.Media.equals(specOrObsType)
+                    || ((specOrObsType.getKindOf() != null) && specOrObsType.getKindOf().equals(SpecimenOrObservationType.Media))) {
+                return MediaSpecimen.NewInstance(SpecimenOrObservationType.Media);
+            } else if (specOrObsType.equals(SpecimenOrObservationType.FieldUnit)) {
+                return FieldUnit.NewInstance();
+            } else {
+                return DerivedUnit.NewInstance(specOrObsType);
+            }
+        }
+    }
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard#saveEntity()
         */
index c4248413cede4919ff5940f006c0588161632b9d..4a795985a4b0679c43ba13f278ef38a6c8d96fbd 100644 (file)
@@ -5,9 +5,9 @@ package eu.etaxonomy.taxeditor.newWizard;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.key.PolytomousKeyDetailElement;
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractDescriptionPostOperation.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractDescriptionPostOperation.java
new file mode 100644 (file)
index 0000000..7fe6f43
--- /dev/null
@@ -0,0 +1,98 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.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.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.description.IDescribable;
+import eu.etaxonomy.cdm.model.description.TextData;
+import eu.etaxonomy.cdm.model.media.Media;
+
+/**
+ * @author pplitzner
+ * @date 04.12.2013
+ *
+ */
+public abstract class AbstractDescriptionPostOperation<T extends IDescribable<D>, D extends DescriptionBase<?>> extends AbstractPostOperation<T> {
+
+    protected D description;
+
+    private final boolean isImageGallery;
+
+    /**
+     *
+     */
+    public AbstractDescriptionPostOperation(String label, IUndoContext undoContext,
+            T describable, IPostOperationEnabled postOperationEnabled) {
+        this(label, undoContext, describable, postOperationEnabled, false);
+    }
+
+    /**
+     *
+     */
+    public AbstractDescriptionPostOperation(String label, IUndoContext undoContext,
+            T describable, IPostOperationEnabled postOperationEnabled,  boolean isImageGallery) {
+        super(label, undoContext, describable, postOperationEnabled);
+        this.isImageGallery = isImageGallery;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.core.commands.operations.AbstractOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+            throws ExecutionException {
+
+        initDescription();
+        monitor.worked(20);
+
+        if(isImageGallery){
+            description.setImageGallery(isImageGallery);
+            // add the description element to hold the media elements for this image gallery
+            TextData element = TextData.NewInstance(Feature.IMAGE());
+            element.addMedia(Media.NewInstance());
+            description.addElement(element);
+        }
+        monitor.worked(40);
+
+        return postExecute(description);
+    }
+
+    /**
+     * Creates the description and attaches it to the operated element.
+     */
+    protected abstract void initDescription();
+
+    /** {@inheritDoc} */
+    @Override
+    public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+
+       element.addDescription(description);
+
+       return postExecute(description);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+
+       element.removeDescription(description);
+
+       return postExecute(null);
+    }
+
+}
index 37ff63f70e73337197149ab7ac44dceef4a6e5df..e42030d986305da803da9b07c1ffa30f1af89181 100644 (file)
@@ -30,7 +30,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonNode;
  * @created 08.05.2009
  * @version 1.0
  */
-public abstract class AbstractPersistentPostOperation extends AbstractPostOperation {
+public abstract class AbstractPersistentPostOperation extends AbstractPostTaxonOperation {
        private IConversationEnabled conversationEnabled;
 
        protected ITaxonTreeNode parentNode;
index eca9d8369f5d9301f3240f36af940436ec546a87..5b7c68ec8230074a7de6ef72c0fd5ae812bb3636 100644 (file)
+// $Id$
 /**
-* 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.
-*/
-
+ * Copyright (C) 2013 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.operation;
 
-import java.util.UUID;
-
 import org.eclipse.core.commands.operations.AbstractOperation;
 import org.eclipse.core.commands.operations.IUndoContext;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.ITreeNode;
-import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.common.ICdmBase;
 
 /**
- * <p>Abstract AbstractPostOperation class.</p>
+ * @author pplitzner
+ * @date 03.12.2013
  *
- * @author p.ciardelli
- * @author n.hoffmann
- * @created 14.01.2009
- * @version 1.0
  */
-public abstract class AbstractPostOperation extends AbstractOperation {
-       
-       /**
-        * 
-        */
-       protected IPostOperationEnabled postOperationEnabled;
-       
-       /** 
-        * A reference to the taxon the concrete operation is working on 
-        */
-       protected Taxon taxon;
+public abstract class AbstractPostOperation<T extends ICdmBase> extends AbstractOperation {
+
+
+    /**
+     * A reference to the {@link ICdmBase} element the concrete operation is working on
+     */
+    protected T element;
+
+    /**
+     *
+     */
+    protected IPostOperationEnabled postOperationEnabled;
+
+
+    /**
+     * <p>Constructor for AbstractPostOperation.</p>
+     *
+     * @param label a {@link java.lang.String} object.
+     * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
+     */
+    protected AbstractPostOperation(String label, IUndoContext undoContext) {
+        super(label);
+        addContext(undoContext);
+    }
+
+    /**
+     * <p>Constructor for AbstractPostOperation.</p>
+     *
+     * @param label a {@link java.lang.String} object.
+     * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
+     * @param element a {@link ICdmBase} object on which this operation is working.
+     */
+    public AbstractPostOperation(String label, IUndoContext undoContext, T element) {
+        this(label, undoContext);
+        this.element = element;
+    }
 
-       /**
-        * A reference to the taxons TaxonNode
-        */
-       protected ITaxonTreeNode taxonNode;
+    /**
+     * @param label
+     * @param element
+     * @param postOperationEnabled
+     */
+    public AbstractPostOperation(String label, IUndoContext undoContext,
+            T element, IPostOperationEnabled postOperationEnabled) {
+        this(label, undoContext);
+        this.element = element;
+        this.postOperationEnabled = postOperationEnabled;
+    }
 
-       protected UUID parentNodeUuid;
+    /**
+     * This method will try to call the post operation on a possibly registered
+     * IPostOperationEnabled implementor. Objects that were affected by the operation
+     * may be passed to the registered IPostOperationEnabled implementor.
+     *
+     * @param objectAffectedByOperation the affected object. Should be <code>null</code> if not needed
+     * @return a {@link org.eclipse.core.runtime.IStatus} object.
+     */
+    protected IStatus postExecute(CdmBase objectAffectedByOperation) {
+       if(postOperationEnabled != null){
+               return postOperationEnabled.postOperation(objectAffectedByOperation) ? Status.OK_STATUS : Status.CANCEL_STATUS;
+       }
+       return Status.OK_STATUS;
+    }
 
-       /**
-        * <p>Constructor for AbstractPostOperation.</p>
-        *
-        * @param label a {@link java.lang.String} object.
-        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
-        */
-       protected AbstractPostOperation(String label, IUndoContext undoContext) {
-               super(label);
-               addContext(undoContext);
-       }
-       
-       /**
-        * <p>Constructor for AbstractPostOperation.</p>
-        *
-        * @param label a {@link java.lang.String} object.
-        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
-        * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.
-        */
-       public AbstractPostOperation(String label, IUndoContext undoContext,
-                       Taxon taxon) {
-               this(label, undoContext);
-               
-               this.taxon = taxon;
-       }
-       
-       /**
-        * <p>Constructor for AbstractPostOperation.</p>
-        *
-        * @param label a {@link java.lang.String} object.
-        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
-        * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.
-        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
-        */
-       public AbstractPostOperation(String label, IUndoContext undoContext,
-                       Taxon taxon, IPostOperationEnabled postOperationEnabled) {
-               this(label, undoContext, taxon);
-               this.postOperationEnabled = postOperationEnabled;
-       }
-       
-       /**
-        * <p>Constructor for AbstractPostOperation.</p>
-        *
-        * @param label a {@link java.lang.String} object.
-        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
-        * @param taxonNode a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
-        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
-        */
-       public AbstractPostOperation(String label, IUndoContext undoContext, TaxonNode taxonNode, IPostOperationEnabled postOperationEnabled){
-               this(label, undoContext, taxonNode.getTaxon(), postOperationEnabled);
-               this.taxonNode = taxonNode;
-       }
-       
-       /**
-        * <p>Constructor for AbstractPostOperation.</p>
-        *
-        * @param label a {@link java.lang.String} object.
-        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
-        * @param parentNodeUuid a {@link java.util.UUID} object.
-        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
-        */
-       public AbstractPostOperation(String label, IUndoContext undoContext, UUID parentNodeUuid, IPostOperationEnabled postOperationEnabled){
-               this(label, undoContext);
-               
-               this.parentNodeUuid = parentNodeUuid;
-               this.postOperationEnabled = postOperationEnabled;
-       }
-       
-       /**
-        * <p>Constructor for AbstractPostOperation.</p>
-        *
-        * @param label a {@link java.lang.String} object.
-        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
-        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
-        */
-       public AbstractPostOperation(String label, IUndoContext undoContext,
-                       IPostOperationEnabled postOperationEnabled) {
-               this(label, undoContext);
-               this.postOperationEnabled = postOperationEnabled;
-       }
+    /**
+     * <p>Getter for the field <code>postOperationEnabled</code>.</p>
+     *
+     * @return a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
+     */
+    public IPostOperationEnabled getPostOperationEnabled() {
+       return postOperationEnabled;
+    }
 
-       /**
-        * This method will try to call the post operation on a possibly registered
-        * IPostOperationEnabled implementor. Objects that were affected by the operation
-        * may be passed to the registered IPostOperationEnabled implementor.
-        *
-        * @param objectAffectedByOperation the affected object. Should be <code>null</code> if not needed
-        * @return a {@link org.eclipse.core.runtime.IStatus} object.
-        */
-       protected IStatus postExecute(CdmBase objectAffectedByOperation) {      
-               if(postOperationEnabled != null){
-                       return postOperationEnabled.postOperation(objectAffectedByOperation) ? Status.OK_STATUS : Status.CANCEL_STATUS;
-               }
-               return Status.OK_STATUS;
-       }
-       
-       /**
-        * <p>Getter for the field <code>postOperationEnabled</code>.</p>
-        *
-        * @return a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
-        */
-       public IPostOperationEnabled getPostOperationEnabled() {
-               return postOperationEnabled;
-       }
-       
-       
-}
+}
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostTaxonOperation.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/operation/AbstractPostTaxonOperation.java
new file mode 100644 (file)
index 0000000..b37c540
--- /dev/null
@@ -0,0 +1,97 @@
+/**
+* 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.operation;
+
+import java.util.UUID;
+
+import org.eclipse.core.commands.operations.IUndoContext;
+
+import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+
+/**
+ * <p>Abstract AbstractPostOperation class.</p>
+ *
+ * @author p.ciardelli
+ * @author n.hoffmann
+ * @created 14.01.2009
+ * @version 1.0
+ */
+public abstract class AbstractPostTaxonOperation extends AbstractPostOperation<Taxon> {
+
+       /**
+        * A reference to the taxons TaxonNode
+        */
+       protected ITaxonTreeNode taxonNode;
+
+       protected UUID parentNodeUuid;
+
+
+       /**
+        * <p>Constructor for AbstractPostOperation.</p>
+        *
+        * @param label a {@link java.lang.String} object.
+        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
+        * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.Taxon} object.
+        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
+        */
+       public AbstractPostTaxonOperation(String label, IUndoContext undoContext,
+                       Taxon taxon, IPostOperationEnabled postOperationEnabled) {
+               super(label, undoContext, taxon, postOperationEnabled);
+       }
+
+       /**
+        * <p>Constructor for AbstractPostOperation.</p>
+        *
+        * @param label a {@link java.lang.String} object.
+        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
+        * @param taxonNode a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
+        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
+        */
+       public AbstractPostTaxonOperation(String label, IUndoContext undoContext, TaxonNode taxonNode, IPostOperationEnabled postOperationEnabled){
+               this(label, undoContext, taxonNode.getTaxon(), postOperationEnabled);
+               this.taxonNode = taxonNode;
+       }
+
+       /**
+        * <p>Constructor for AbstractPostOperation.</p>
+        *
+        * @param label a {@link java.lang.String} object.
+        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
+        * @param parentNodeUuid a {@link java.util.UUID} object.
+        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
+        */
+       public AbstractPostTaxonOperation(String label, IUndoContext undoContext, UUID parentNodeUuid, IPostOperationEnabled postOperationEnabled){
+               super(label, undoContext, null, postOperationEnabled);
+               this.parentNodeUuid = parentNodeUuid;
+       }
+
+       /**
+        * <p>Constructor for AbstractPostOperation.</p>
+        *
+        * @param label a {@link java.lang.String} object.
+        * @param undoContext a {@link org.eclipse.core.commands.operations.IUndoContext} object.
+        * @param postOperationEnabled a {@link eu.etaxonomy.taxeditor.operation.IPostOperationEnabled} object.
+        */
+       public AbstractPostTaxonOperation(String label, IUndoContext undoContext,
+                       IPostOperationEnabled postOperationEnabled) {
+               super(label, undoContext, null, postOperationEnabled);
+       }
+
+    /**
+     * @param text
+     * @param undoContext
+     * @param taxon
+     */
+    public AbstractPostTaxonOperation(String label, IUndoContext undoContext, Taxon taxon) {
+        this(label, undoContext, taxon, null);
+    }
+}
index 0545633720267c1c95b2687e067e4c8db5f04acb..80feebd088c5b0d2e437a26c773938f64fc1023d 100644 (file)
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.preference;
 
-import eu.etaxonomy.cdm.model.common.IDefinedTerm;
 import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
 
 /**
index 586dbfc0502730ee507419eaec24b46cbf52668c..0c1235fa4f869f8e9aeea85c6f314347b00df985 100644 (file)
@@ -9,7 +9,6 @@
 
 package eu.etaxonomy.taxeditor.store;
 
-import java.io.Serializable;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
@@ -35,7 +34,6 @@ import eu.etaxonomy.cdm.ext.geo.IEditGeoService;
 import eu.etaxonomy.cdm.model.common.CdmBase;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
-import eu.etaxonomy.cdm.persistence.hibernate.permission.Operation;
 import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
 import eu.etaxonomy.taxeditor.io.ExportManager;
 import eu.etaxonomy.taxeditor.io.ImportManager;
index 76a730a1bcbd7fc4bd90293a4bb28dd568542828..42c6e74930cf78578a5035d6f33747be26b750c0 100644 (file)
@@ -13,13 +13,7 @@ package eu.etaxonomy.taxeditor.store;
 import java.util.Observable;
 
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IMemento;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.editors.text.EditorsUI;
-import org.eclipse.ui.handlers.HandlerUtil;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.LockedException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ComboDefinedTermController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ComboDefinedTermController.java
new file mode 100644 (file)
index 0000000..3d25ed1
--- /dev/null
@@ -0,0 +1,402 @@
+// $Id$
+/**
+ * Copyright (C) 2013 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.campanula.basicFields;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Listener;
+
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.store.TermManager;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+
+/**
+ * @author pplitzner
+ * @date 15.08.2013
+ *
+ */
+public class ComboDefinedTermController<T extends DefinedTermBase> extends AbstractCdmFormElement implements SelectionListener, DisposeListener, IEnableableFormElement, ISelectable {
+
+    private static final int DEFAULT_VISIBLE_ITEMS = 10;
+
+    private T selection;
+
+    private T emptyElement;
+    private static String EMPTY_ELEMENT_LABEL = "";
+
+//    protected Label label;
+    private Combo combo;
+
+    private ArrayList<T> terms;
+
+    private Comparator<T> termComparator;
+
+    private Class<T> termClass;
+
+    private List<T> customPreferredTerms;
+
+    /**
+     * <p>
+     * Constructor for AbstractTermComboElement.
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param style
+     *            a int.
+     * @param formFactory
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param selection
+     *            a T object.
+     * @param visibleItems
+     *            a int.
+     * @param <T>
+     *            a T object.
+     */
+    public ComboDefinedTermController(Combo combo, CdmFormFactory formFactory, ICdmFormElement parentElement, Class<T> termClass, T selection, int style) {
+        super(formFactory, parentElement);
+
+        this.termClass = termClass;
+        setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+        formFactory.addPropertyChangeListener(this);
+//        if (labelString != null) {
+//            label = formFactory.createLabel(getLayoutComposite(), labelString);
+//            addControl(label);
+//        }
+
+        // create combo
+        this.combo = combo;//new Combo(getLayoutComposite(), SWT.BORDER | SWT.READ_ONLY);
+        addControl(combo);
+//        combo.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+        combo.setVisibleItemCount(DEFAULT_VISIBLE_ITEMS);
+
+        populateTerms(getPreferredTerms());
+
+        combo.addSelectionListener(this);
+        combo.addDisposeListener(this);
+        PreferencesUtil.getPreferenceStore().addPropertyChangeListener(this);
+
+        if (selection != null) {
+            setSelection(selection);
+        }
+    }
+
+    /**
+     * <p>
+     * Getter for the field <code>selection</code>.
+     * </p>
+     *
+     * @return a T object.
+     */
+    public T getSelection() {
+        return selection;
+    }
+
+    /**
+     * <p>
+     * Sets the selection of the combo to the given T object.
+     * </p>
+     * <p>
+     * Passing <code>null</code> to this method will set the selection to the
+     * empty element and effectively clear the selection
+     * </p>
+     *
+     * @param selection
+     *            a T object or <code>null</code> to clear the selection
+     */
+    public void setSelection(T selection) {
+        this.selection = selection;
+
+        this.selection = selection;
+
+        Listener[] listeners = combo.getListeners(SWT.Selection);
+
+        for (Listener listener : listeners) {
+            combo.removeListener(SWT.Selection, listener);
+        }
+        int selectedIndex;
+        if (selection == null) {
+            // set selection to the emptyElement
+            selectedIndex = 0;
+        } else {
+            selectedIndex = terms.indexOf(selection);
+            if (selectedIndex == -1) {
+                createTermNotInPreferredTerms(selection);
+                selectedIndex = terms.indexOf(selection);
+            }
+        }
+        combo.select(selectedIndex);
+
+        for (Listener listener : listeners) {
+            combo.addListener(SWT.Selection, listener);
+        }
+    }
+
+    /**
+     * Fills the combo with elements and sets up the convenience functions for
+     * selection index
+     *
+     * @param preferredTerms
+     */
+    private void populateTerms(List<T> preferredTerms) {
+
+        combo.removeAll();
+
+        terms = new ArrayList<T>();
+
+        int i = 1;
+        int index = 0;
+
+        // Add an empty element for when nothing was selected yet
+        combo.add(EMPTY_ELEMENT_LABEL);
+        terms.add(emptyElement);
+
+        if (termComparator != null) {
+            Collections.sort(preferredTerms, termComparator);
+        }
+        for (T term : preferredTerms) {
+            String label = getLabel(term);
+            if (label == null) {
+                if (term.getTitleCache() != null) {
+                    label = term.getTitleCache();
+                    StoreUtil.warn(getClass(), "Term does not have a representation: " + term + ", " + term.getUuid());
+                } else {
+                    label = "Unknown";
+                    StoreUtil.warn(getClass(), "Representation Label and TitleCache empty for term: " + term + ", " + term.getUuid());
+                }
+
+            }
+
+            combo.add(label);
+            terms.add(term);
+
+            i++;
+            if (selection != null) {
+                if (selection.equals(term)) {
+                    index = i;
+                }
+            }
+        }
+
+        if (selection != null && index == 0) {
+            createTermNotInPreferredTerms(selection);
+        }
+
+        combo.select(index);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void setEnabled(boolean enabled) {
+        combo.setEnabled(enabled);
+    }
+
+    /**
+     * <p>
+     * preferredTerms
+     * </p>
+     *
+     * @return a {@link java.util.List} object.
+     */
+    protected List<T> getPreferredTerms() {
+        if (customPreferredTerms != null) {
+            return customPreferredTerms;
+        }
+        return getTermManager().getPreferredTerms(termClass);
+    }
+
+    /**
+     * May be overridden by derived classes if the desired label string does not
+     * reside in term.getLabel();
+     *
+     * @param term
+     *            a T object.
+     * @return a {@link java.lang.String} object.
+     */
+    protected String getLabel(T term) {
+        return term.getLabel(CdmStore.getDefaultLanguage());
+    }
+
+    /**
+     *
+     *
+     * @param term
+     */
+    private void createTermNotInPreferredTerms(T term) {
+        List<T> preferredTerms = getPreferredTerms();
+
+        preferredTerms.add(term);
+
+        populateTerms(preferredTerms);
+    }
+
+    /**
+     * <p>
+     * addSelectionListener
+     * </p>
+     *
+     * @param listener
+     *            a {@link org.eclipse.swt.events.SelectionListener} object.
+     */
+    public void addSelectionListener(SelectionListener listener) {
+        combo.addSelectionListener(listener);
+    }
+
+    /**
+     * <p>
+     * removeSelectionListener
+     * </p>
+     *
+     * @param listener
+     *            a {@link org.eclipse.swt.events.SelectionListener} object.
+     */
+    public void removeSelectionListener(SelectionListener listener) {
+        combo.removeSelectionListener(listener);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
+     * .events.SelectionEvent)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void widgetSelected(SelectionEvent e) {
+        selection = terms.get(combo.getSelectionIndex());
+        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see java.beans.PropertyChangeListener#propertyChange(java.beans.
+     * PropertyChangeEvent)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void propertyChange(PropertyChangeEvent event) {
+        super.propertyChange(event);
+        if (event != null && PreferencesUtil.PREFERRED_TERMS_CHANGE.equals(event.getProperty())) {
+            populateTerms(getPreferredTerms());
+        }
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSelected(boolean selected) {
+        setBackground(selected ? SELECTED : getPersistentBackground());
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void widgetDisposed(DisposeEvent e) {
+        PreferencesUtil.getPreferenceStore().removePropertyChangeListener(this);
+    }
+
+    // not used
+    /** {@inheritDoc} */
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIrrelevant(boolean irrelevant) {
+        String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT : Resources.COLOR_COMPOSITE_BACKGROUND;
+
+        Color color = StoreUtil.getColor(colorId);
+        combo.setBackground(color);
+    }
+
+//    /** {@inheritDoc} */
+//    @Override
+//    public void setBackground(Color color) {
+//        if (label != null)
+//            label.setBackground(color);
+//    }
+
+    /**
+*
+*/
+    protected TermManager getTermManager() {
+        return CdmStore.getTermManager();
+    }
+
+    /**
+     *
+     * @return
+     */
+    public int getVisibleItemCount() {
+        return combo.getVisibleItemCount();
+    }
+
+    /**
+     *
+     * @param count
+     */
+    public void setVisibleItemCount(int count) {
+        combo.setVisibleItemCount(count);
+    }
+
+    /**
+     * <p>
+     * A {@link List} of term objects may be passed to this combo box. In this
+     * case, the default behaviour of displaying the preferred terms for the T
+     * type will be overridden and the combo will only display the given terms.
+     * Also, any previous selection will be reseted.
+     * </p>
+     *
+     * <p>
+     * To return to the default of displaying the preferred terms, simply pass
+     * <code>null</code>.
+     * </p>
+     *
+     * @param terms
+     *            a {@link List} of T objects or <code>null</code> for default
+     *            preferred terms
+     */
+    public void setTerms(List<T> terms) {
+        setSelection(null);
+        customPreferredTerms = terms;
+        populateTerms(customPreferredTerms);
+    }
+}
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntityCollectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntityCollectionElement.java
new file mode 100644 (file)
index 0000000..37590d9
--- /dev/null
@@ -0,0 +1,79 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.basicFields;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.ToolBarManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.wb.swt.ResourceManager;
+import org.eclipse.wb.swt.SWTResourceManager;
+
+/**
+ * @author pplitzner
+ * @date 16.08.2013
+ *
+ */
+public class EntityCollectionElement extends ExpandableComposite {
+    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public EntityCollectionElement(Composite parent, int style) {
+        super(parent, style);
+        setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+        setExpanded(true);
+
+        ToolBar toolBar = new ToolBar(this, SWT.FLAT | SWT.RIGHT);
+        setTextClient(toolBar);
+
+        Label label = formToolkit.createLabel(this, "", SWT.NONE);
+        setClient(label);
+
+        ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
+
+        Action addAction = new Action("add", IAction.AS_PUSH_BUTTON){
+            /* (non-Javadoc)
+             * @see org.eclipse.jface.action.Action#run()
+             */
+            @Override
+            public void run() {
+//                ELEMENT element = createNewElement();
+//                if(element != null){
+//                    addElement(element);
+//                    if(! getSection().isExpanded()) {
+//                        getSection().setExpanded(true);
+//                    }
+//                    internalUpdateSection(true);
+//                }
+            }
+        };
+        addAction.setImageDescriptor(ResourceManager.getPluginImageDescriptor("eu.etaxonomy.taxeditor.store", "icons/add_no_bg2.gif"));
+//        addAction.setToolTipText(getTooltipString());
+
+        toolBarManager.add(addAction);
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntitySelectionField.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntitySelectionField.java
new file mode 100644 (file)
index 0000000..0c60974
--- /dev/null
@@ -0,0 +1,100 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.basicFields;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+import org.eclipse.wb.swt.ResourceManager;
+
+/**
+ * @author pplitzner
+ * @date 13.08.2013
+ *
+ */
+public class EntitySelectionField extends Composite {
+    private FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+    private Label text;
+    private Button button_selection;
+    private Button button_edit;
+    private Button button_remove;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public EntitySelectionField(Composite parent, int style) {
+        super(parent, style);
+        setBackgroundMode(SWT.INHERIT_DEFAULT);
+        {
+            TableWrapLayout tableWrapLayout = new TableWrapLayout();
+            tableWrapLayout.verticalSpacing = 0;
+            tableWrapLayout.topMargin = 0;
+            tableWrapLayout.rightMargin = 0;
+            tableWrapLayout.numColumns = 4;
+            tableWrapLayout.leftMargin = 0;
+            tableWrapLayout.horizontalSpacing = 0;
+            tableWrapLayout.bottomMargin = 0;
+            setLayout(tableWrapLayout);
+        }
+
+        text = formToolkit.createLabel(this, "", SWT.WRAP);
+        TableWrapData twd_text = new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1);
+        twd_text.align = TableWrapData.LEFT;
+        text.setLayoutData(twd_text);
+
+        button_selection = formToolkit.createButton(this, "", SWT.NONE);
+        button_selection.setToolTipText("Browse existing");
+        button_selection.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/prj_obj.gif"));
+
+        button_edit = formToolkit.createButton(this, "", SWT.NONE);
+        button_edit.setToolTipText("Edit");
+        button_edit.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/text.gif"));
+
+        button_remove = formToolkit.createButton(this, "", SWT.NONE);
+        button_remove.setToolTipText("Remove");
+        button_remove.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/trash.gif"));
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+    public Label getText() {
+        return text;
+    }
+    public Button getButton_selection() {
+        return button_selection;
+    }
+    public Button getButton_edit() {
+        return button_edit;
+    }
+    public Button getButton_remove() {
+        return button_remove;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.swt.widgets.Control#setEnabled(boolean)
+     */
+    @Override
+    public void setEnabled(boolean enabled) {
+        super.setEnabled(enabled);
+        text.setEnabled(enabled);
+        button_selection.setEnabled(enabled);
+        button_edit.setEnabled(enabled);
+        button_remove.setEnabled(enabled);
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntitySelectionFieldController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/EntitySelectionFieldController.java
new file mode 100644 (file)
index 0000000..00ecc4d
--- /dev/null
@@ -0,0 +1,435 @@
+// $Id$
+/**
+ * Copyright (C) 2013 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.campanula.basicFields;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.springframework.security.core.GrantedAuthority;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.ICdmBase;
+import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
+import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.SelectionDialogFactory;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
+import eu.etaxonomy.taxeditor.ui.element.ILabeledElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
+import eu.etaxonomy.taxeditor.ui.selection.EditFromSelectionWizard;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+
+/**
+ * @author pplitzner
+ * @date 13.08.2013
+ *
+ */
+public class EntitySelectionFieldController<T extends ICdmBase> extends AbstractCdmFormElement implements SelectionListener, IEnableableFormElement, ISelectableElement, IEntityElement<T>, ILabeledElement, IConversationEnabled {
+
+    /**
+     * Bitmask for configuring functionality of selection element
+     */
+    public static final int NOTHING = 0; // 000
+    public static final int EDITABLE = 1 << 0; // 001
+    public static final int DELETABLE = 1 << 1; // 010
+    public static final int SELECTABLE = 1 << 2; // 100
+    public static final int ALL = EDITABLE | DELETABLE | SELECTABLE; // 111
+
+    protected T entity;
+
+    //TODO also control "label" with this class?
+//    protected Label label;
+    protected Label text;
+    protected Button button_selection;
+
+    private SelectionArbitrator selectionArbitrator;
+
+    protected Button button_edit;
+
+//    private final String labelString;
+
+    private Composite selectableComposite;
+
+    private Button button_remove;
+
+    private final boolean isEditable;
+
+    private final boolean isDeletable;
+
+    private final ConversationHolder conversation;
+    private Class<T> clazz;
+
+    /**
+     * <p>
+     * Constructor for AbstractSelectionElement.
+     * </p>
+     *
+     * @param formFactory
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+     *            object.
+     * @param conversation
+     *            TODO
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param entity
+     *            a T object.
+     * @param isEditable
+     *            a boolean.
+     * @param isSelectable
+     *            a boolean.
+     * @param isDeletable
+     *            a boolean.
+     * @param style
+     *            a int.
+     * @param <T>
+     *            a T object.
+     */
+    public EntitySelectionFieldController(EntitySelectionField entitySelectionField, CdmFormFactory formFactory, ConversationHolder conversation, ICdmFormElement parentElement, T entity, int mode) {
+        super(formFactory, parentElement);
+
+        setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+        formFactory.addPropertyChangeListener(this);
+
+        this.isEditable = (mode & EDITABLE) == EDITABLE;
+        this.isDeletable = (mode & DELETABLE) == DELETABLE;
+        boolean isSelectable = (mode & SELECTABLE) == SELECTABLE;
+
+//        this.labelString = labelString;
+
+        this.conversation = conversation;
+
+        if (isSelectable && formFactory.getSelectionProvider() != null) {
+            selectionArbitrator = formFactory.createSelectionArbitrator(this);
+        }
+
+        createControls(entitySelectionField);
+
+        setEntity(entity);
+    }
+
+    public EntitySelectionFieldController(EntitySelectionField entitySelectionField, CdmFormFactory formFactory, ConversationHolder conversation, ICdmFormElement parentElement, Class<T> clazz, T entity, int mode) {
+        this(entitySelectionField, formFactory, conversation, parentElement, entity, mode);
+        this.clazz = clazz;
+    }
+
+    private void createControls(EntitySelectionField entitySelectionField) {
+
+//        label = formFactory.createLabel(getLayoutComposite(), labelString, SWT.NULL);
+//
+//        addControl(label);
+
+        selectableComposite = entitySelectionField;
+
+        int columns = 2;
+        if (isEditable) {
+            columns += 1;
+        }
+        if (isDeletable) {
+            columns += 1;
+        }
+
+        selectableComposite.setLayout(LayoutConstants.LAYOUT(columns, false));
+        selectableComposite.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+
+        addControl(selectableComposite);
+
+        text = entitySelectionField.getText();
+        addControl(text);
+
+        text.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+        text.setBackground(AbstractUtility.getColor(Resources.COLOR_TEXT_DISABLED_BACKGROUND));
+
+        button_selection = entitySelectionField.getButton_selection();
+        button_selection.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON));
+        button_selection.setToolTipText("Browse existing");
+
+        addControl(button_selection);
+        button_selection.addSelectionListener(this);
+
+        button_edit = entitySelectionField.getButton_edit();
+        if (isEditable) {
+            addControl(button_edit);
+            //TODO: this worked with the extracted (but now reverted) interfaces done for campanula
+//            button_edit.addSelectionListener(new EditListener(this));
+        }
+        else{
+            button_edit.setVisible(false);
+        }
+
+        button_remove = entitySelectionField.getButton_remove();
+        if (isDeletable) {
+            addControl(button_remove);
+            button_remove.addSelectionListener(new DeleteListener(this));
+        }
+        else{
+            button_remove.setVisible(false);
+        }
+    }
+
+    @Override
+    public void widgetSelected(SelectionEvent e) {
+        T selection = SelectionDialogFactory.getSelectionFromDialog(clazz, getShell(), getConversationHolder(), getEntity());
+        setSelectionInternal(selection);
+    }
+
+    /**
+     * Return the selected object
+     *
+     * @return a T object.
+     */
+    public T getSelection() {
+        return entity;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void setEnabled(boolean enabled) {
+        button_selection.setEnabled(enabled);
+        if (isEditable) {
+            button_edit.setEnabled(enabled && entity != null);
+        }
+    }
+
+    /**
+     * <p>
+     * setSelectionInternal
+     * </p>
+     *
+     * @param selection
+     *            a T object.
+     */
+    protected void setSelectionInternal(T selection) {
+        if (selection != null && !selection.equals(this.entity)) {
+            setEntity(selection);
+            firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+        }
+    }
+
+    /**
+     * <p>
+     * Setter for the field <code>entity</code>.
+     * </p>
+     *
+     * @param selection
+     *            a T object.
+     */
+    public void setEntity(T selection) {
+        this.entity = selection;
+        updateElement();
+    }
+
+    /**
+     * Updates this elements view
+     */
+    protected void updateElement() {
+        String title = CdmUtils.Nz(getTitle());
+        // we have to duplicate ampersands otherwise they are treated as
+        // mnenomic (see Label.setText() documentation)
+        title = title.replace("&", "&&");
+        text.setText(title); // title can be null
+        if (isEditable) {
+            button_edit.setEnabled(entity != null);
+        }
+    }
+
+    public void updateFromWizard() {
+        updateElement();
+        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+    }
+
+    /**
+     * <p>
+     * getTitle
+     * </p>
+     *
+     * @return a {@link java.lang.String} object.
+     */
+    protected String getTitle() {
+        if (entity != null) {
+            if (entity instanceof IIdentifiableEntity) {
+                return ((IIdentifiableEntity) entity).getTitleCache();
+            } else if (entity instanceof Group) {
+                return ((Group) entity).getName();
+            } else if (entity instanceof GrantedAuthority) {
+                return ((GrantedAuthority) entity).getAuthority();
+            }
+        }
+        return "";
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setSelected(boolean selected) {
+        setBackground(selected ? SELECTED : getPersistentBackground());
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see eu.etaxonomy.taxeditor.forms.IEntityElement#getEntity()
+     */
+    /**
+     * <p>
+     * Getter for the field <code>entity</code>.
+     * </p>
+     *
+     * @return a T object.
+     */
+    @Override
+    public T getEntity() {
+        return entity;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see eu.etaxonomy.taxeditor.forms.section.cdmdetail.ISelectableElement#
+     * getSelectionArbitrator()
+     */
+    /**
+     * <p>
+     * Getter for the field <code>selectionArbitrator</code>.
+     * </p>
+     *
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
+     *         object.
+     */
+    @Override
+    public SelectionArbitrator getSelectionArbitrator() {
+        return selectionArbitrator;
+    }
+
+    public Shell getShell() {
+        return getLayoutComposite().getShell();
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIrrelevant(boolean irrelevant) {
+        String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT : Resources.COLOR_TEXT_DISABLED_BACKGROUND;
+
+        Color color = AbstractUtility.getColor(colorId);
+        text.setBackground(color);
+    }
+
+    private class DeleteListener extends SelectionAdapter {
+
+        private final EntitySelectionFieldController<T> selectionElement;
+
+        public DeleteListener(EntitySelectionFieldController<T> selectionElement) {
+            this.selectionElement = selectionElement;
+        }
+
+        @Override
+        public void widgetSelected(SelectionEvent e) {
+            setEntity(null);
+            firePropertyChangeEvent(new CdmPropertyChangeEvent(selectionElement, null));
+        }
+    }
+
+    private class EditListener extends SelectionAdapter {
+
+        private final EntitySelectionElement<T> selectionElement;
+
+        public EditListener(EntitySelectionElement<T> selectionElement) {
+            this.selectionElement = selectionElement;
+        }
+
+        /** {@inheritDoc} */
+        @Override
+        public void widgetSelected(SelectionEvent e) {
+            WizardDialog dialog = new WizardDialog(selectionElement.getShell(), new EditFromSelectionWizard(selectionElement));
+            if (dialog.open() == IStatus.OK) {
+                selectionElement.updateFromWizard();
+            }
+        }
+    }
+
+    // not used
+    /** {@inheritDoc} */
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
+    }
+
+    /**
+     * <p>
+     * getConversationHolder
+     * </p>
+     *
+     * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
+     *         object.
+     */
+    @Override
+    public ConversationHolder getConversationHolder() {
+        return conversation;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setBackground(Color color) {
+//        label.setBackground(color);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setLabel(String labelString) {
+//        if (label != null) {
+//            label.setText(labelString);
+//        }
+    }
+
+    /**
+     * <p>
+     * Getter for the field <code>label</code>.
+     * </p>
+     *
+     * @return a {@link java.lang.String} object.
+     */
+    @Override
+    public String getLabel() {
+//        if (label != null) {
+//            return label.getText();
+//        }
+        return null;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void update(CdmDataChangeMap changeEvents) {
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/LanguageTextFieldController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/LanguageTextFieldController.java
new file mode 100644 (file)
index 0000000..fc656f7
--- /dev/null
@@ -0,0 +1,100 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.basicFields;
+
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+
+/**
+ * @author pplitzner
+ * @date 15.08.2013
+ *
+ */
+public class LanguageTextFieldController extends TextFieldController{
+
+    private LanguageString languageString;
+
+    /**
+     * <p>Constructor for LanguageStringWithLabelElement.</p>
+     *
+     * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+     * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
+     * @param labelString a {@link java.lang.String} object.
+     * @param languageString a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
+     * @param style a int.
+     */
+    public LanguageTextFieldController(Text controlledText, CdmFormFactory formFactory,
+            ICdmFormElement parentElement,
+            LanguageString languageString) {
+        this(controlledText, formFactory, parentElement, languageString, null);
+    }
+
+    /**
+     * <p>Constructor for LanguageStringWithLabelElement.</p>
+     *
+     * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+     * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
+     * @param labelString a {@link java.lang.String} object.
+     * @param languageString a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
+     * @param height a int.
+     * @param style a int.
+     */
+    protected LanguageTextFieldController(Text controlledText, CdmFormFactory formFactory,
+            ICdmFormElement parentElement,
+            LanguageString languageString, Integer height) {
+        super(controlledText, formFactory, parentElement, null, height);
+
+        setLanguageString(languageString);
+    }
+
+    /**
+     * <p>Getter for the field <code>languageString</code>.</p>
+     *
+     * @return a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
+     */
+    public LanguageString getLanguageString() {
+        return languageString;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void modifyText(ModifyEvent e) {
+        if(languageString == null){
+            languageString = LanguageString.NewInstance("", CdmStore.getDefaultLanguage());
+        }
+
+        languageString.setText(text.getText());
+        super.modifyText(e);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setText(String text) {
+        if(text != null && languageString!=null){
+            languageString.setText(text);
+            super.setText(text);
+        }
+    }
+
+    /**
+     * <p>Setter for the field <code>languageString</code>.</p>
+     *
+     * @param languageString a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
+     */
+    public void setLanguageString(LanguageString languageString) {
+        this.languageString = languageString;
+        super.setText(languageString != null ? languageString.getText() : "");
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/NamedAreaFieldController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/NamedAreaFieldController.java
new file mode 100644 (file)
index 0000000..f78e941
--- /dev/null
@@ -0,0 +1,94 @@
+// $Id$
+/**
+ * Copyright (C) 2013 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.campanula.basicFields;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionListener;
+
+import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+
+/**
+ * @author pplitzner
+ * @date 15.08.2013
+ *
+ */
+public class NamedAreaFieldController extends AbstractEntityCollectionElement<NamedArea> {
+
+    private EntitySelectionFieldController<NamedArea> selection_namedArea;
+
+    /**
+     * <p>
+     * Constructor for CollectingAreasDetailElement.
+     * </p>
+     *
+     * @param formFactory
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+     *            object.
+     * @param section
+     *            a
+     *            {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
+     *            object.
+     * @param entity
+     *            a {@link eu.etaxonomy.cdm.model.location.NamedArea} object.
+     * @param removeListener
+     *            a {@link org.eclipse.swt.events.SelectionListener} object.
+     * @param style
+     *            a int.
+     */
+    public NamedAreaFieldController(CdmFormFactory formFactory, AbstractFormSection section, NamedArea entity, SelectionListener removeListener, int style) {
+        super(formFactory, section, entity, removeListener, null, style);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#setEntity
+     * (java.lang.Object)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void setEntity(NamedArea entity) {
+        selection_namedArea.setEntity(entity);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#createControls
+     * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, int)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void createControls(ICdmFormElement formElement, int style) {
+        selection_namedArea = new EntitySelectionFieldController<NamedArea>(new EntitySelectionField(formElement.getLayoutComposite(), SWT.NONE), getFormFactory(), getConversationHolder(), formElement, NamedArea.class, null, EntitySelectionElement.NOTHING);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent
+     * (java.lang.Object)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void handleEvent(Object eventSource) {
+        if (eventSource == selection_namedArea) {
+            setEntity(selection_namedArea.getSelection());
+        }
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/NumberFieldController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/NumberFieldController.java
new file mode 100644 (file)
index 0000000..34d7415
--- /dev/null
@@ -0,0 +1,171 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.basicFields;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+
+/**
+ * @author pplitzner
+ * @date 12.08.2013
+ *
+ */
+public class NumberFieldController extends TextFieldController {
+    private Float start;
+    private Float end;
+
+    private NumberFormatException exception;
+
+    /**
+     * <p>Constructor for NumberWithLabelElement.</p>
+     *
+     * @param toolkit a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+     * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
+     * @param labelString a {@link java.lang.String} object.
+     * @param initialNumber a {@link java.lang.Integer} object.
+     * @param style a int.
+     */
+    public NumberFieldController(Text controlledText, CdmFormFactory formFactory, ICdmFormElement parentElement, Number initialNumber){
+        super(controlledText, formFactory, parentElement, null, null);
+        //WindowBuilder exception handling
+        if(initialNumber==null){
+            initialNumber = 0;
+        }
+        setNumber(initialNumber);
+    }
+
+    /**
+     * <p>setInteger</p>
+     *
+     * @param number a {@link java.lang.Integer} object.
+     */
+    public void setInteger(Integer number) {
+        super.setText(getStringRepresentation(number));
+    }
+
+    /**
+        * <p>setNumber</p>
+     *
+        * @param number a {@link java.lang.Number} object.
+     */
+       public void setNumber(Number number) {
+        super.setText(getStringRepresentation(number));
+    }
+
+    /**
+     * <p>getInteger</p>
+     *
+     * @return a {@link java.lang.Integer} object.
+     */
+    public Integer getInteger() {
+        String text = super.getText().trim();
+        return text.equals("") ? 0 : new Integer(text);
+    }
+
+    /**
+     * <p>getFloat</p>
+     *
+     * @return a {@link java.lang.Float} object.
+     */
+    public Float getFloat(){
+        String text = super.getText();
+        return new Float(text);
+    }
+
+       /**
+        * <p>getDouble</p>
+        *
+        * @return a {@link java.lang.Float} object.
+        */
+       public Double getDouble(){
+               String text = super.getText();
+               return new Double(text);
+       }
+
+    private String getStringRepresentation(Object number){
+        if(number != null){
+            return number.toString();
+        }
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void modifyText(ModifyEvent event) {
+        String value = text.getText();
+        if(CdmUtils.isEmpty(value)){
+            text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
+            return;
+        }
+
+        try{
+
+            Float number = Float.parseFloat(value);
+
+            if((start != null && number < start) || (end != null && number > end)){
+                throw new NumberFormatException("You entered a number that is not within the allowed bounds.");
+            }
+
+        }catch(NumberFormatException e){
+            text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
+            firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+            exception = e;
+            return;
+        }
+
+        exception = null;
+        text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
+
+        super.modifyText(event);
+    }
+
+    /**
+     * <p>setLimits</p>
+     *
+     * @param numberOfDigits a int.
+     * @param start a {@link java.lang.Integer} object.
+     * @param end a {@link java.lang.Integer} object.
+     */
+    public void setLimits(int numberOfDigits, Integer start, Integer end){
+        setLimits(numberOfDigits, start.floatValue(), end.floatValue());
+    }
+
+    /**
+     * <p>setLimits</p>
+     *
+     * @param numberOfDigits a int.
+     * @param start a {@link java.lang.Float} object.
+     * @param end a {@link java.lang.Float} object.
+     */
+    public void setLimits(int numberOfDigits, Float start, Float end){
+        text.setTextLimit(numberOfDigits);
+        this.start = start;
+        this.end = end;
+    }
+
+    /**
+     * <p>Getter for the field <code>exception</code>.</p>
+     *
+     * @return the exception
+     */
+    public NumberFormatException getException() {
+        return exception;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/PointField.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/PointField.java
new file mode 100644 (file)
index 0000000..9e12ff6
--- /dev/null
@@ -0,0 +1,112 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.basicFields;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+/**
+ * @author pplitzner
+ * @date 15.08.2013
+ *
+ */
+public class PointField extends Composite {
+    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+    private Text text_latitude;
+    private Text text_latitudeParsed;
+    private Text text_longitude;
+    private Text text_longitudeParsed;
+    private Text number_errorRadius;
+    private Combo combo_referenceSystem;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public PointField(Composite parent, int style) {
+        super(parent, style);
+        {
+            setLayout(new TableWrapLayout());
+        }
+
+        text_latitude = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_latitude.setText("");
+        text_latitude.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        text_latitudeParsed = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_latitudeParsed.setEnabled(false);
+        text_latitudeParsed.setText("");
+        text_latitudeParsed.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        text_longitude = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_longitude.setText("");
+        text_longitude.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        text_longitudeParsed = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_longitudeParsed.setEnabled(false);
+        text_longitudeParsed.setText("");
+        text_longitudeParsed.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        number_errorRadius = formToolkit.createText(this, "New Text", SWT.NONE);
+        number_errorRadius.setText("");
+        number_errorRadius.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        combo_referenceSystem = new Combo(this, SWT.READ_ONLY);
+        combo_referenceSystem.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(combo_referenceSystem);
+        formToolkit.paintBordersFor(combo_referenceSystem);
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+
+    public Text getText_latitude() {
+        return text_latitude;
+    }
+    public Text getText_latitudeParsed() {
+        return text_latitudeParsed;
+    }
+    public Text getText_longitude() {
+        return text_longitude;
+    }
+    public Text getText_longitudeParsed() {
+        return text_longitudeParsed;
+    }
+    public Text getNumber_errorRadius() {
+        return number_errorRadius;
+    }
+    public Combo getCombo_referenceSystem() {
+        return combo_referenceSystem;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.swt.widgets.Control#setEnabled(boolean)
+     */
+    @Override
+    public void setEnabled(boolean enabled) {
+        super.setEnabled(enabled);
+        text_latitude.setEnabled(enabled);
+        text_latitudeParsed.setEnabled(enabled);
+        text_longitude.setEnabled(enabled);
+        text_longitudeParsed.setEnabled(enabled);
+        number_errorRadius.setEnabled(enabled);
+        combo_referenceSystem.setEnabled(enabled);
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/PointFieldController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/PointFieldController.java
new file mode 100644 (file)
index 0000000..3788716
--- /dev/null
@@ -0,0 +1,187 @@
+// $Id$
+/**
+ * Copyright (C) 2013 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.campanula.basicFields;
+
+import java.text.ParseException;
+
+import org.eclipse.jface.util.PropertyChangeEvent;
+
+import eu.etaxonomy.cdm.model.location.Point;
+import eu.etaxonomy.cdm.model.location.ReferenceSystem;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
+
+/**
+ * @author pplitzner
+ * @date 15.08.2013
+ *
+ */
+public class PointFieldController extends AbstractCdmFormElement implements IEntityElement<Point> {
+
+    private Point point;
+
+    private final TextFieldController text_latitude;
+    private final TextFieldController text_longitude;
+    private final NumberFieldController number_errorRadius;
+    private final ComboDefinedTermController<ReferenceSystem> combo_referenceSystem;
+
+    private final TextFieldController text_latitudeParsed;
+
+    private final TextFieldController text_longitudeParsed;
+
+    /**
+     * <p>
+     * Constructor for PointElement.
+     * </p>
+     *
+     * @param formFactory
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+     *            object.
+     * @param formElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param point
+     *            a {@link eu.etaxonomy.cdm.model.location.Point} object.
+     * @param style
+     *            a int.
+     */
+    public PointFieldController(PointField pointField, CdmFormFactory formFactory, ICdmFormElement formElement, Point point, final int style) {
+        super(formFactory, formElement);
+
+        setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+        formFactory.addPropertyChangeListener(this);
+
+        text_latitude = new TextFieldController(pointField.getText_latitude(), getFormFactory(), formElement, null, style);
+        text_latitudeParsed = new TextFieldController(pointField.getText_latitudeParsed(), getFormFactory(), formElement, null, style);
+        text_longitude = new TextFieldController(pointField.getText_longitude(), getFormFactory(), formElement, null, style);
+        text_longitudeParsed = new TextFieldController(pointField.getText_longitudeParsed(), getFormFactory(), formElement, null, style);
+        number_errorRadius = new NumberFieldController(pointField.getNumber_errorRadius(), getFormFactory(), formElement, (Integer)null);
+        combo_referenceSystem = new ComboDefinedTermController<ReferenceSystem>(pointField.getCombo_referenceSystem(), getFormFactory(), formElement, ReferenceSystem.class, null, style);
+
+        setPoint(point);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
+     * .eclipse.jface.util.PropertyChangeEvent)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void propertyChange(PropertyChangeEvent event) {
+        if (event == null) {
+            return;
+        }
+
+        boolean propagate = false;
+
+        Object eventSource = event.getSource();
+        if (eventSource == text_latitude) {
+            try {
+                getPoint().setLatitudeByParsing(text_latitude.getText());
+                text_latitudeParsed.setText(point.getLatitudeSexagesimal().toString(false));
+                text_latitude.setBackground(getColor(Resources.COLOR_COMPOSITE_BACKGROUND));
+                propagate = true;
+            } catch (ParseException e) {
+                text_latitude.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
+            }
+        } else if (eventSource == text_longitude) {
+            try {
+                getPoint().setLongitudeByParsing(text_longitude.getText());
+                text_longitudeParsed.setText(point.getLongitudeSexagesimal().toString(false));
+                text_longitude.setBackground(getColor(Resources.COLOR_COMPOSITE_BACKGROUND));
+                propagate = true;
+            } catch (ParseException e) {
+                text_longitude.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
+            }
+        } else if (eventSource == number_errorRadius) {
+            getPoint().setErrorRadius(number_errorRadius.getInteger());
+            propagate = true;
+        } else if (eventSource == combo_referenceSystem) {
+            getPoint().setReferenceSystem(combo_referenceSystem.getSelection());
+            propagate = true;
+        }
+
+        if (propagate) {
+            firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see eu.etaxonomy.taxeditor.forms.IEntityElement#getEntity()
+     */
+    /** {@inheritDoc} */
+    @Override
+    public Point getEntity() {
+        return getPoint();
+    }
+
+    /**
+     * <p>
+     * setEntity
+     * </p>
+     *
+     * @param point
+     *            a {@link eu.etaxonomy.cdm.model.location.Point} object.
+     */
+    public void setEntity(Point point) {
+        setPoint(point);
+    }
+
+    /**
+     * <p>
+     * Setter for the field <code>point</code>.
+     * </p>
+     *
+     * @param point
+     *            the point to set
+     */
+    public void setPoint(Point point) {
+        this.point = point;
+        if (point != null) {
+            String latitude = point.getLatitudeSexagesimal() == null ? "" : point.getLatitudeSexagesimal().toString(false);
+            String longitude = point.getLongitudeSexagesimal() == null ? "" : point.getLongitudeSexagesimal().toString(false);
+            text_latitude.setText(latitude);
+            text_latitudeParsed.setText(latitude);
+            text_longitude.setText(longitude);
+            text_longitudeParsed.setText(longitude);
+            number_errorRadius.setInteger(point.getErrorRadius());
+            combo_referenceSystem.setSelection(point.getReferenceSystem());
+        }
+    }
+
+    /**
+     * <p>
+     * Getter for the field <code>point</code>.
+     * </p>
+     *
+     * @return the point
+     */
+    public Point getPoint() {
+        if (point == null) {
+            point = Point.NewInstance();
+        }
+
+        return point;
+    }
+
+    @Override
+    public void setSelected(boolean selected) {
+        setBackground(selected ? SELECTED : getPersistentBackground());
+    }
+}
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/TextFieldController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/TextFieldController.java
new file mode 100644 (file)
index 0000000..a306b0e
--- /dev/null
@@ -0,0 +1,210 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.basicFields;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wb.swt.SWTResourceManager;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+
+/**
+ * @author pplitzner
+ * @date 09.08.2013
+ *
+ */
+public class TextFieldController extends AbstractCdmFormElement implements ModifyListener, IEnableableFormElement, ISelectable{
+
+    protected Text text;
+
+    /** Constant <code>MAX_HEIGHT=0</code> */
+    public static final int MAX_HEIGHT = 0;
+    /** Constant <code>SINGLE=-1</code> */
+    public static final int SINGLE = -1;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     * @param initialText
+     * @param textHeight
+     */
+    public TextFieldController(Text controlledText, CdmFormFactory formFactory, ICdmFormElement parentFormElement, String initialText, Integer textHeight) {
+        super(formFactory, parentFormElement);
+        setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+
+        //vvvvvvvvvvvvv
+
+        setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+        formFactory.addPropertyChangeListener(this);
+
+        initialText = initialText==null?"":initialText;
+//
+//        int scrollStyle = textHeight == null ? SWT.NULL : (SWT.V_SCROLL | SWT.MULTI);
+//
+//        int combinedStyle = style | SWT.BORDER | scrollStyle;
+//
+//        // SWT.PASSWORD does not work when SWT.WRAP is set.
+//        if (style != SWT.PASSWORD) {
+//            combinedStyle = combinedStyle | SWT.WRAP;
+//        }
+        //^^^^^^^^^^^^^^
+
+        this.text = controlledText;
+//        TableWrapData twd_text_1 = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP);
+//        twd_text_1.grabHorizontal = true;
+        setText(initialText);
+//        text.setLayoutData(twd_text_1);
+
+
+        //vvvvvvvvvvvvvvvvvv
+        if (textHeight == null) {
+            text.addKeyListener(new KeyAdapter() {
+                @Override
+                public void keyPressed(KeyEvent e) {
+                    if (e.character == SWT.CR) {
+                        // Don't accept carriage returns as input when in single
+                        // line mode
+                        e.doit = false;
+                    } else if (e.character == SWT.TAB) {
+                        // traverse is not working for wrapped text widgets so
+                        // we reintroduce it here
+                        e.doit = false;
+                        TextFieldController.this.text.traverse(SWT.TRAVERSE_TAB_NEXT);
+                    }
+                }
+            });
+        }
+
+//        if (textHeight != null && textHeight > 0) {
+//            TableWrapData layoutData = LayoutConstants.FILL();
+//            (layoutData).heightHint = textHeight;
+//            text.setLayoutData(layoutData);
+//        }
+
+        text.addModifyListener(this);
+
+        addControl(text);
+
+    }
+
+    /**
+     * Get the text of this composites text composite
+     *
+     * @return a {@link java.lang.String} object.
+     */
+    public String getText() {
+        return text.getText();
+    }
+
+    /**
+     * Set the text of this composites text composite
+     *
+     * @param string
+     *            a {@link java.lang.String} object.
+     */
+    public void setText(String string) {
+        Listener[] listeners = text.getListeners(SWT.Modify);
+
+        for (Listener listener : listeners) {
+            text.removeListener(SWT.Modify, listener);
+        }
+
+        text.setText(CdmUtils.Nz(string));
+
+        for (Listener listener : listeners) {
+            text.addListener(SWT.Modify, listener);
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events
+     * .ModifyEvent)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void modifyText(ModifyEvent e) {
+        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setEnabled(boolean enabled) {
+        text.setEnabled(enabled);
+        String symbolicName = enabled ? Resources.COLOR_FONT_DEFAULT : Resources.COLOR_TEXT_DISABLED;
+        text.setForeground(getColor(symbolicName));
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIrrelevant(boolean irrelevant) {
+        String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT : Resources.COLOR_COMPOSITE_BACKGROUND;
+
+        Color color = getColor(colorId);
+        text.setBackground(color);
+    }
+
+    @Override
+    public void setSelected(boolean selected) {
+        setBackground(selected ? SELECTED : getPersistentBackground());
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#setFocus()
+     */
+    /** {@inheritDoc}
+     * @return */
+    @Override
+    public void setFocus() {
+        text.setFocus();
+    }
+
+    /**
+     * <p>
+     * getMainControl
+     * </p>
+     *
+     * @return a {@link org.eclipse.swt.widgets.Control} object.
+     */
+    public Control getMainControl() {
+        return text;
+    }
+
+    /**
+     * <p>
+     * setTextLimit
+     * </p>
+     *
+     * @param limit
+     *            a int.
+     */
+    public void setTextLimit(int limit) {
+        text.setTextLimit(limit);
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextField.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextField.java
new file mode 100644 (file)
index 0000000..55ed58a
--- /dev/null
@@ -0,0 +1,72 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.basicFields;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+/**
+ * @author pplitzner
+ * @date 14.08.2013
+ *
+ */
+public class ToggleableTextField extends Composite {
+    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+    private Text text;
+    private Button editButton;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public ToggleableTextField(Composite parent, int style) {
+        super(parent, style);
+        setBackgroundMode(SWT.INHERIT_DEFAULT);
+        {
+            TableWrapLayout tableWrapLayout = new TableWrapLayout();
+            tableWrapLayout.numColumns = 2;
+            tableWrapLayout.verticalSpacing = 0;
+            tableWrapLayout.topMargin = 0;
+            tableWrapLayout.rightMargin = 0;
+            tableWrapLayout.leftMargin = 0;
+            tableWrapLayout.horizontalSpacing = 0;
+            tableWrapLayout.bottomMargin = 0;
+            setLayout(tableWrapLayout);
+        }
+
+        text = formToolkit.createText(this, "New Text", SWT.WRAP);
+        text.setText("");
+        TableWrapData twd_text = new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1);
+        twd_text.grabVertical = true;
+        text.setLayoutData(twd_text);
+
+        editButton = formToolkit.createButton(this, "Edit", SWT.TOGGLE);
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+
+    public Text getText() {
+        return text;
+    }
+    public Button getEditButton() {
+        return editButton;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextFieldController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/basicFields/ToggleableTextFieldController.java
new file mode 100644 (file)
index 0000000..1307f04
--- /dev/null
@@ -0,0 +1,218 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.basicFields;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+
+/**
+ * @author pplitzner
+ * @date 14.08.2013
+ *
+ */
+public class ToggleableTextFieldController extends AbstractCdmFormElement implements SelectionListener, ModifyListener, IEnableableFormElement, ISelectable {
+
+    private ToggleableTextField toggleableTextField;
+
+    private boolean state;
+    private Set<SelectionListener> selectionListener = new HashSet<SelectionListener>();
+    //TODO also connect label
+//    private Label label;
+
+    /**
+     * <p>Constructor for ToggleableTextElement.</p>
+     *
+     * @param style a int.
+     * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+     * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
+     * @param labelString a {@link java.lang.String} object.
+     * @param initialText a {@link java.lang.String} object.
+     * @param initialState a boolean.
+     */
+    public ToggleableTextFieldController(ToggleableTextField toggleableTextField, CdmFormFactory formFactory, ICdmFormElement parentElement,
+            String initialText, boolean initialState, int style) {
+        super(formFactory, parentElement);
+        setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+        formFactory.addPropertyChangeListener(this);
+
+        this.toggleableTextField = toggleableTextField;
+
+//        label = formFactory.createLabel(getLayoutComposite(), labelString, style);
+//        addControl(label);
+
+        Text text = toggleableTextField.getText();
+        addControl(text);
+        text.addModifyListener(this);
+        text.setLayoutData(LayoutConstants.FILL());
+
+        // Don't accept carriage returns as input
+        text.addKeyListener( new KeyAdapter(){
+            @Override
+            public void keyPressed(KeyEvent e) {
+            if(e.character == SWT.CR) {
+                e.doit = false;
+            }
+            }
+        });
+
+        Button editButton = toggleableTextField.getEditButton();
+        addControl(editButton);
+        editButton.addSelectionListener(this);
+
+        setState(initialState);
+    }
+
+    /**
+     * <p>setText</p>
+     *
+     * @param text a {@link java.lang.String} object.
+     */
+    public void setText(String text){
+        if(text != null){
+            // store current caret position
+            Text textField = toggleableTextField.getText();
+            int caretPosition = textField.getCaretPosition();
+
+            Listener[] listeners = textField.getListeners(SWT.Modify);
+            for (Listener listener : listeners) {
+                textField.removeListener(SWT.Modify, listener);
+            }
+            textField.setText(CdmUtils.Nz(text));
+            for (Listener listener : listeners) {
+                textField.addListener(SWT.Modify, listener);
+            }
+
+            // restore caret position
+            textField.setSelection(caretPosition);
+        }
+    }
+
+    /**
+     * <p>getText</p>
+     *
+     * @return a {@link java.lang.String} object.
+     */
+    public String getText(){
+        return toggleableTextField.getText().getText();
+    }
+
+    /**
+     * <p>Setter for the field <code>state</code>.</p>
+     *
+     * @param state a boolean.
+     */
+    public void setState(boolean state) {
+        this.state = state;
+        setEnabled(state);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setEnabled(boolean enabled) {
+        toggleableTextField.getText().setEnabled(enabled);
+        String symbolicName = enabled ? Resources.COLOR_FONT_DEFAULT : Resources.COLOR_TEXT_DISABLED;
+        toggleableTextField.getText().setForeground(StoreUtil.getColor(symbolicName));
+        toggleableTextField.getEditButton().setSelection(enabled);
+    }
+
+    /**
+     * <p>Getter for the field <code>state</code>.</p>
+     *
+     * @return a boolean.
+     */
+    public boolean getState(){
+        return state;
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+     */
+    /** {@inheritDoc} */
+    @Override
+    public void widgetSelected(SelectionEvent e) {
+        setState(toggleableTextField.getEditButton().getSelection());
+        for(SelectionListener listener : selectionListener){
+            listener.widgetSelected(e);
+        }
+        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+    }
+
+    /**
+     * <p>addSelectionListener</p>
+     *
+     * @param listener a {@link org.eclipse.swt.events.SelectionListener} object.
+     */
+    public void addSelectionListener(SelectionListener listener){
+        selectionListener.add(listener);
+    }
+
+    /**
+     * <p>removeSelectionListener</p>
+     *
+     * @param listener a {@link org.eclipse.swt.events.SelectionListener} object.
+     */
+    public void removeSelectionListener(SelectionListener listener){
+        selectionListener.remove(listener);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void widgetDefaultSelected(SelectionEvent e) {}
+
+    /** {@inheritDoc} */
+    @Override
+    public void modifyText(ModifyEvent e) {
+        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setIrrelevant(boolean irrelevant) {
+        String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT : Resources.COLOR_COMPOSITE_BACKGROUND;
+
+        Color color = getColor(colorId);
+        toggleableTextField.getText().setBackground(color);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void setBackground(Color color) {
+//        label.setBackground(color);
+        toggleableTextField.setBackground(color);
+    }
+
+    @Override
+    public void setSelected(boolean selected) {
+        setBackground(selected ? SELECTED : getPersistentBackground());
+    }
+}
similarity index 86%
rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/element/ICdmFormElement.java
rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/compatibility/ICdmFormElement.java
index a85aecfe7a158f56dc20fa50d1fe352ed7f132ff..504a677b55d6ff3aa55d26f295c9eaf0ea7b587d 100644 (file)
@@ -1,4 +1,4 @@
-package eu.etaxonomy.taxeditor.ui.element;
+package eu.etaxonomy.taxeditor.ui.campanula.compatibility;
 
 
 import java.util.List;
@@ -9,6 +9,9 @@ import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.IPropertyChangeEmitter;
+
 /**
  * <p>ICdmFormElement interface.</p>
  *
@@ -31,47 +34,47 @@ public interface ICdmFormElement extends IPropertyChangeEmitter, IPropertyChange
         */
        public abstract void setPropertyChangeListeners(
                        List<IPropertyChangeListener> propertyChangeListeners);
-       
+
        /**
         * <p>getControls</p>
         *
         * @return a {@link java.util.Set} object.
         */
        public abstract Set<Control> getControls();
-       
+
        /**
         * <p>getElements</p>
         *
         * @return a {@link java.util.Set} object.
         */
        public abstract Set<ICdmFormElement> getElements();
-       
+
        /**
         * <p>addElement</p>
         *
         * @param element a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
         */
        public abstract void addElement(ICdmFormElement element);
-       
+
        /**
         * <p>getParentElement</p>
         *
         * @return a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
         */
        public abstract ICdmFormElement getParentElement();
-               
+
        /**
         * <p>removeElements</p>
         */
        public abstract void removeElements();
-       
+
        /**
         * <p>getLayoutComposite</p>
         *
         * @return a {@link org.eclipse.swt.widgets.Composite} object.
         */
        public abstract Composite getLayoutComposite();
-       
+
        /**
         * <p>containsFormElement</p>
         *
@@ -79,29 +82,29 @@ public interface ICdmFormElement extends IPropertyChangeEmitter, IPropertyChange
         * @return a boolean.
         */
        public boolean containsFormElement(ICdmFormElement formElement);
-       
+
        /**
         * <p>setBackground</p>
         *
         * @param color a {@link org.eclipse.swt.graphics.Color} object.
         */
        public void setBackground(Color color);
-       
+
        /**
         * Sets a background color for this element and stores this background color
         * for future reference
-        * 
+        *
         * @param color
         */
        public void setPersistentBackground(Color color);
-       
+
        /**
         * Get the background color that is associated with this element.
-        * 
+        *
         * @return
         */
        public Color getPersistentBackground();
-       
+
        /**
         * Refreshes the layout of this form element.
         *
@@ -109,4 +112,11 @@ public interface ICdmFormElement extends IPropertyChangeEmitter, IPropertyChange
         * changes and the current element needs to display that changes
         */
        public void refresh();
+
+    /**
+     * <p>Getter for the field <code>formFactory</code>.</p>
+     *
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+     */
+    public CdmFormFactory getFormFactory();
 }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/compatibility/IEntitySelectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/compatibility/IEntitySelectionElement.java
new file mode 100644 (file)
index 0000000..2acc168
--- /dev/null
@@ -0,0 +1,42 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.compatibility;
+
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.model.common.ICdmBase;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
+import eu.etaxonomy.taxeditor.ui.element.ILabeledElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
+
+/**
+ * @author pplitzner
+ * @date 15.08.2013
+ *
+ */
+public interface IEntitySelectionElement<T extends ICdmBase> extends SelectionListener, IEnableableFormElement, ISelectableElement, IEntityElement<T>, ILabeledElement, IConversationEnabled {
+    /**
+     * Convenient access to current shell
+     *
+     * @return a {@link org.eclipse.swt.widgets.Shell} object.
+     */
+    public abstract Shell getShell();
+
+    /**
+     * <p>
+     * updateFromWizard
+     * </p>
+     */
+    public abstract void updateFromWizard();
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateLabelProvider.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateLabelProvider.java
new file mode 100644 (file)
index 0000000..aade683
--- /dev/null
@@ -0,0 +1,72 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.derivatesearch;
+
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+
+/**
+ * Label provider for the views to show {@link SpecimenOrObservationBase}s.
+ */
+public class DerivateLabelProvider extends ColumnLabelProvider {
+
+    /** {@inheritDoc} */
+    @Override
+    public String getText(Object element) {
+        return getDerivateText(element);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public String getToolTipText(Object element) {
+        return getDerivateText(element);
+    }
+
+    private String getDerivateText(Object element){
+        if(element instanceof SpecimenOrObservationBase){
+            SpecimenOrObservationBase<?> derivate = (SpecimenOrObservationBase<?>) element;
+            SpecimenOrObservationType type = derivate.getRecordBasis();
+            return derivate.getTitleCache() + (type!=null?" ["+type.toString()+"]":"");
+        }
+        return element.toString();
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.jface.viewers.ColumnLabelProvider#getImage(java.lang.Object)
+     */
+    @Override
+    public Image getImage(Object element) {
+        if(element instanceof DerivedUnit){
+            DerivedUnit derivedUnit = (DerivedUnit)element;
+            if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.FieldUnit){
+                return ImageResources.getImage(ImageResources.FIELD_UNIT);
+            }
+            else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.DnaSample){
+                return ImageResources.getImage(ImageResources.DNA_SAMPLE_DERIVATE);
+            }
+            else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.TissueSample){
+                return ImageResources.getImage(ImageResources.TISSUE_SAMPLE_DERIVATE);
+            }
+            else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
+                return ImageResources.getImage(ImageResources.SPECIMEN_DERIVATE);
+            }
+            else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.StillImage){
+                return ImageResources.getImage(ImageResources.ARTWORK_DERIVATE);
+            }
+        }
+        return super.getImage(element);
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchComposite.java
new file mode 100644 (file)
index 0000000..090a1d0
--- /dev/null
@@ -0,0 +1,79 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.derivatesearch;
+
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/**
+ * The widgets of the {@link DerivateSearchView}<br>
+ *
+ */
+public class DerivateSearchComposite extends Composite {
+    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+    private final Text searchField;
+    private final Table table;
+    private final TableViewer resultViewer;
+    private final Combo comboDerivateType;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public DerivateSearchComposite(Composite parent, int style) {
+        super(parent, style);
+        setLayout(new GridLayout(2, false));
+
+        Label lblDerivateType = new Label(this, SWT.NULL);
+        lblDerivateType.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+        lblDerivateType.setText("Derivate Filter");
+
+        comboDerivateType = new Combo(this, SWT.NONE);
+        comboDerivateType.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+        formToolkit.paintBordersFor(comboDerivateType);
+
+        Label lblNameFilter = new Label(this, SWT.NULL);
+        lblNameFilter.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+        lblNameFilter.setText("Name Filter");
+
+        searchField = formToolkit.createText(this, "New Text", SWT.NONE);
+        searchField.setText("");
+        searchField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+
+        resultViewer = new TableViewer(this, SWT.BORDER | SWT.FULL_SELECTION);
+        table = resultViewer.getTable();
+        table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+    public Text getSearchField() {
+        return searchField;
+    }
+    public TableViewer getResultViewer() {
+        return resultViewer;
+    }
+    public Combo getComboDerivateType() {
+        return comboDerivateType;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchCompositeController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchCompositeController.java
new file mode 100644 (file)
index 0000000..5fffd73
--- /dev/null
@@ -0,0 +1,117 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.derivatesearch;
+
+import java.util.List;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.NotEnabledException;
+import org.eclipse.core.commands.NotHandledException;
+import org.eclipse.core.commands.common.NotDefinedException;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.handlers.IHandlerService;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy;
+import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
+import eu.etaxonomy.cdm.api.service.config.IdentifiableServiceConfiguratorImpl;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * Controller class for the {@link DerivateSearchComposite}.<br>
+ * This controller contains the logic to search the data base for {@link SpecimenOrObservationBase}s
+ * and handles GUI events.
+ *
+ */
+public class DerivateSearchCompositeController {
+
+    private final DerivateSearchComposite derivateSearchComposite;
+    private IIdentifiableEntityServiceConfigurator<SpecimenOrObservationBase<DerivedUnitFacadeCacheStrategy>> configurator;
+
+    /**
+     * @param parent
+     */
+    public DerivateSearchCompositeController(Composite parent) {
+        this.derivateSearchComposite = new DerivateSearchComposite(parent, SWT.NONE);
+        init();
+    }
+
+    private void init(){
+        derivateSearchComposite.getSearchField().addKeyListener(new KeyAdapter() {
+            /*
+             * (non-Javadoc)
+             * @see org.eclipse.swt.events.KeyAdapter#keyPressed(org.eclipse.swt.events.KeyEvent)
+             */
+            @Override
+            public void keyPressed(KeyEvent e) {
+                if (e.keyCode == SWT.CR) {
+                    String searchString = derivateSearchComposite.getSearchField().getText();
+                    searchDerivates(searchString);
+                }
+            }
+        });
+
+        TableViewer resultViewer = derivateSearchComposite.getResultViewer();
+        resultViewer.setContentProvider(new ArrayContentProvider());
+        resultViewer.setLabelProvider(new DerivateLabelProvider());
+        resultViewer.addDoubleClickListener(new IDoubleClickListener() {
+            @Override
+            public void doubleClick(DoubleClickEvent event) {
+                String commandId = "eu.etaxonomy.taxeditor.editor.handler.openDerivateView";
+
+                IHandlerService handlerService = (IHandlerService) AbstractUtility.getService(IHandlerService.class);
+                try {
+                    handlerService.executeCommand(commandId, null);
+                } catch (ExecutionException e) {
+                    AbstractUtility.error(DerivateSearchCompositeController.class, e);
+                } catch (NotDefinedException e) {
+                    AbstractUtility.error(DerivateSearchCompositeController.class, e);
+                } catch (NotEnabledException e) {
+                    AbstractUtility.error(DerivateSearchCompositeController.class, e);
+                } catch (NotHandledException e) {
+                    AbstractUtility.error(DerivateSearchCompositeController.class, e);
+                }
+
+            }
+        });
+
+        configurator = new IdentifiableServiceConfiguratorImpl<SpecimenOrObservationBase<DerivedUnitFacadeCacheStrategy>>();
+
+    }
+
+    private void searchDerivates(String searchString){
+        configurator.setTitleSearchString(searchString);
+        List<SpecimenOrObservationBase> results = CdmStore.getSearchManager().findOccurrences(configurator);
+        derivateSearchComposite.getResultViewer().setInput(results);
+    }
+
+
+    /**
+     * @return the derivateSearchComposite
+     */
+    public DerivateSearchComposite getDerivateSearchComposite() {
+        return derivateSearchComposite;
+    }
+
+    private void setEnable(boolean enabled){
+        derivateSearchComposite.setEnabled(enabled);
+        derivateSearchComposite.getResultViewer().getTable().setEnabled(enabled);
+        derivateSearchComposite.getSearchField().setEnabled(enabled);
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchView.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/derivatesearch/DerivateSearchView.java
new file mode 100644 (file)
index 0000000..ce63162
--- /dev/null
@@ -0,0 +1,44 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.derivatesearch;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.ViewPart;
+
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+
+/**
+ * This view allows to search for and filter {@link SpecimenOrObservationBase}s and display
+ * the results in a list. The results can be selected and opened in an editor.
+ */
+public class DerivateSearchView extends ViewPart {
+
+    private DerivateSearchCompositeController derivateSearchCompositeController;
+
+    public DerivateSearchView() {
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+     */
+    @Override
+    public void createPartControl(Composite parent) {
+        derivateSearchCompositeController = new DerivateSearchCompositeController(parent);
+        getSite().setSelectionProvider(derivateSearchCompositeController.getDerivateSearchComposite().getResultViewer());
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+     */
+    @Override
+    public void setFocus() {
+        derivateSearchCompositeController.getDerivateSearchComposite().setFocus();
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsElement.java
new file mode 100644 (file)
index 0000000..4fe05d3
--- /dev/null
@@ -0,0 +1,97 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.fieldObservation;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+import org.eclipse.wb.swt.SWTResourceManager;
+
+/**
+ * @author pplitzner
+ * @date 15.08.2013
+ *
+ */
+public class FieldObservationDetailsElement extends Composite {
+    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+    private Text text_ecology;
+    private Text text_plantDescription;
+    private Text text_FieldNotes;
+    private Text text_IndividualCount;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public FieldObservationDetailsElement(Composite parent, int style) {
+        super(parent, style);
+        setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+        {
+            TableWrapLayout tableWrapLayout = new TableWrapLayout();
+            tableWrapLayout.numColumns = 2;
+            tableWrapLayout.verticalSpacing = 0;
+            tableWrapLayout.topMargin = 0;
+            tableWrapLayout.rightMargin = 0;
+            tableWrapLayout.leftMargin = 0;
+            tableWrapLayout.horizontalSpacing = 0;
+            tableWrapLayout.bottomMargin = 0;
+            setLayout(tableWrapLayout);
+        }
+
+        Label lblEcology = formToolkit.createLabel(this, "Ecology", SWT.NONE);
+
+        text_ecology = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_ecology.setText("");
+        text_ecology.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblPlantDescription = formToolkit.createLabel(this, "Plant Description", SWT.NONE);
+
+        text_plantDescription = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_plantDescription.setText("");
+        text_plantDescription.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblFieldNotes = formToolkit.createLabel(this, "Field Notes", SWT.NONE);
+
+        text_FieldNotes = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_FieldNotes.setText("");
+        text_FieldNotes.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblIndividualCount = formToolkit.createLabel(this, "Individual Count", SWT.NONE);
+
+        text_IndividualCount = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_IndividualCount.setText("");
+        text_IndividualCount.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+
+    public Text getText_ecology() {
+        return text_ecology;
+    }
+    public Text getText_plantDescription() {
+        return text_plantDescription;
+    }
+    public Text getText_FieldNotes() {
+        return text_FieldNotes;
+    }
+    public Text getText_IndividualCount() {
+        return text_IndividualCount;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsElementController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsElementController.java
new file mode 100644 (file)
index 0000000..151e7bb
--- /dev/null
@@ -0,0 +1,83 @@
+// $Id$
+/**
+ * Copyright (C) 2013 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.campanula.detailViews.fieldObservation;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.NumberFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.TextFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author pplitzner
+ * @date 15.08.2013
+ *
+ */
+public class FieldObservationDetailsElementController extends AbstractCdmDetailElement<DerivedUnitFacade> {
+
+    private FieldObservationDetailsElement fieldObservationDetailsElement;
+
+    private TextFieldController text_ecology;
+
+    private TextFieldController text_plantDescription;
+
+    private TextFieldController text_fieldObjectDefinition;
+
+    private TextFieldController text_fieldNotes;
+
+    private NumberFieldController number_individualCount;
+
+    /**
+     * <p>
+     * Constructor for FieldObservationDetailElement.
+     * </p>
+     *
+     * @param formFactory
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+     *            object.
+     * @param formElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     */
+    public FieldObservationDetailsElementController(FieldObservationDetailsElement fieldObservationDetailsElement, CdmFormFactory formFactory, ICdmFormElement formElement) {
+        super(formFactory, formElement);
+        this.fieldObservationDetailsElement = fieldObservationDetailsElement;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+//        text_ecology = new TextFieldController(fieldObservationDetailsElement.getText_ecology(), getFormFactory(), formElement, entity.getEcology(CdmStore.getDefaultLanguage()), null);
+//        text_plantDescription = new TextFieldController(fieldObservationDetailsElement.getText_plantDescription(), getFormFactory(), formElement, entity.getPlantDescription(CdmStore.getDefaultLanguage()), style);
+        // Disable for now
+        // text_fieldObjectDefinition = formFactory.createTextWithLabelElement(formElement, "Field Object Definition", entity.getFieldObjectDefinition(CdmStore.getDefaultLanguage()), style);
+        text_fieldNotes = new TextFieldController(fieldObservationDetailsElement.getText_FieldNotes(), getFormFactory(), formElement, entity.getFieldNotes(), style);
+
+        number_individualCount = new NumberFieldController(fieldObservationDetailsElement.getText_IndividualCount(), getFormFactory(), formElement, entity.getIndividualCount());
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void handleEvent(Object eventSource) {
+//        if (eventSource == text_ecology) {
+//            getEntity().setEcology(text_ecology.getText());
+//        } else if (eventSource == text_plantDescription) {
+//            getEntity().setPlantDescription(text_plantDescription.getText());
+//        } else if (eventSource == text_fieldObjectDefinition) {
+//            getEntity().addFieldObjectDefinition(text_fieldObjectDefinition.getText(), CdmStore.getDefaultLanguage());
+//        } else
+            if (eventSource == text_fieldNotes) {
+            getEntity().setFieldNotes(text_fieldNotes.getText());
+        } else if (eventSource == number_individualCount) {
+            getEntity().setIndividualCount(number_individualCount.getInteger());
+        }
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsSection.java
new file mode 100644 (file)
index 0000000..c417edd
--- /dev/null
@@ -0,0 +1,57 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.fieldObservation;
+
+import org.eclipse.jface.viewers.ISelectionProvider;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.IDerivedUnitFacadeDetailSection;
+
+/**
+ * @author pplitzner
+ * @date 21.08.2013
+ *
+ */
+public class FieldObservationDetailsSection extends AbstractCdmDetailSection<DerivedUnitFacade> implements IDerivedUnitFacadeDetailSection{
+
+    /**
+     * <p>Constructor for FieldObservationDetailSection.</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 selectionProvider a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
+     * @param style a int.
+     */
+    public FieldObservationDetailsSection(CdmFormFactory formFactory, ConversationHolder conversation,
+            ICdmFormElement parentElement,
+            ISelectionProvider selectionProvider, int style) {
+        super(formFactory, conversation, parentElement, selectionProvider, style);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public String getHeading() {
+        return "Field Observation Details";
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
+     */
+    @Override
+    protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
+        return formFactory.createFieldObservationDetailsElementController(parentElement);
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsView.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationDetailsView.java
new file mode 100644 (file)
index 0000000..8a46c9e
--- /dev/null
@@ -0,0 +1,88 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.fieldObservation;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+import org.eclipse.wb.swt.SWTResourceManager;
+
+/**
+ * @author pplitzner
+ * @date 07.08.2013
+ *
+ */
+public class FieldObservationDetailsView extends Composite {
+    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public FieldObservationDetailsView(Composite parent, int style) {
+        super(parent, style);
+        setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+        {
+            TableWrapLayout tableWrapLayout = new TableWrapLayout();
+            tableWrapLayout.numColumns = 1;
+            setLayout(tableWrapLayout);
+        }
+
+        ExpandableComposite xpndblcmpstNewExpandablecomposite = formToolkit.createExpandableComposite(this, ExpandableComposite.TWISTIE);
+        TableWrapData twd_xpndblcmpstNewExpandablecomposite = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 1);
+        twd_xpndblcmpstNewExpandablecomposite.grabHorizontal = true;
+        xpndblcmpstNewExpandablecomposite.setLayoutData(twd_xpndblcmpstNewExpandablecomposite);
+        formToolkit.paintBordersFor(xpndblcmpstNewExpandablecomposite);
+        xpndblcmpstNewExpandablecomposite.setText("FieldObservation");
+        xpndblcmpstNewExpandablecomposite.setExpanded(true);
+
+        FieldObservationGeneralElement fieldObservationGeneralElement = new FieldObservationGeneralElement(xpndblcmpstNewExpandablecomposite, SWT.NONE);
+        formToolkit.adapt(fieldObservationGeneralElement);
+        formToolkit.paintBordersFor(fieldObservationGeneralElement);
+        xpndblcmpstNewExpandablecomposite.setClient(fieldObservationGeneralElement);
+
+        ExpandableComposite xpndblcmpstNewExpandablecomposite_1 = formToolkit.createExpandableComposite(this, ExpandableComposite.TWISTIE);
+        TableWrapData twd_xpndblcmpstNewExpandablecomposite_1 = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 1);
+        twd_xpndblcmpstNewExpandablecomposite_1.grabHorizontal = true;
+        xpndblcmpstNewExpandablecomposite_1.setLayoutData(twd_xpndblcmpstNewExpandablecomposite_1);
+        formToolkit.paintBordersFor(xpndblcmpstNewExpandablecomposite_1);
+        xpndblcmpstNewExpandablecomposite_1.setText("Gathering Event Details");
+        xpndblcmpstNewExpandablecomposite_1.setExpanded(true);
+
+        GatheringEventDetailsElement gatheringEventDetailsElement = new GatheringEventDetailsElement(xpndblcmpstNewExpandablecomposite_1, SWT.NONE);
+        formToolkit.adapt(gatheringEventDetailsElement);
+        formToolkit.paintBordersFor(gatheringEventDetailsElement);
+        xpndblcmpstNewExpandablecomposite_1.setClient(gatheringEventDetailsElement);
+
+        ExpandableComposite xpndblcmpstFieldObservationDetails = formToolkit.createExpandableComposite(this, ExpandableComposite.TWISTIE);
+        TableWrapData twd_xpndblcmpstFieldObservationDetails = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 1);
+        twd_xpndblcmpstFieldObservationDetails.grabHorizontal = true;
+        xpndblcmpstFieldObservationDetails.setLayoutData(twd_xpndblcmpstFieldObservationDetails);
+        formToolkit.paintBordersFor(xpndblcmpstFieldObservationDetails);
+        xpndblcmpstFieldObservationDetails.setText("Field Observation Details");
+        xpndblcmpstFieldObservationDetails.setExpanded(true);
+
+        FieldObservationDetailsElement fieldObservationDetailsElement = new FieldObservationDetailsElement(xpndblcmpstFieldObservationDetails, SWT.NONE);
+        formToolkit.adapt(fieldObservationDetailsElement);
+        formToolkit.paintBordersFor(fieldObservationDetailsElement);
+        xpndblcmpstFieldObservationDetails.setClient(fieldObservationDetailsElement);
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralElement.java
new file mode 100644 (file)
index 0000000..e3de5d0
--- /dev/null
@@ -0,0 +1,227 @@
+// $Id$
+/**
+ * Copyright (C) 2013 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.campanula.detailViews.fieldObservation;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.EntitySelectionField;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.PointField;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.ToggleableTextField;
+
+/**
+ * @author pplitzner
+ * @date 07.08.2013
+ *
+ */
+public class FieldObservationGeneralElement extends Composite {
+    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+    private final Text textLocality;
+    private final Text textElevation;
+    private final Text textCollectingNumber;
+    private EntitySelectionField countrySelectionField;
+    private EntitySelectionField collectorSelectionField;
+    private ToggleableTextField toggleableTextField;
+    private PointField pointField;
+    private Text textAccessionNumber;
+    private EntitySelectionField collectionSelectionField;
+    private Label lblCollection;
+    private Label lblAccesionNumber;
+    private Label lblCountry;
+    private Label lblLocality;
+    private Label lblLatitude;
+    private Label lblLongitude;
+    private Label lblErrorRadiusm;
+    private Label lblReferenceSystem;
+    private Label lblAbsoluteElevationm;
+    private Label lblDate;
+    private Label lblCollector;
+    private Label lblCollectingNumber;
+
+    /**
+     * Create the composite.
+     *
+     * @param parent
+     * @param style
+     */
+    public FieldObservationGeneralElement(Composite parent, int style) {
+        super(parent, SWT.NONE);
+        setBackgroundMode(SWT.INHERIT_DEFAULT);
+        {
+            TableWrapLayout tableWrapLayout = new TableWrapLayout();
+            tableWrapLayout.numColumns = 2;
+            setLayout(tableWrapLayout);
+        }
+
+        Label lblTitleCache = formToolkit.createLabel(this, "Title Cache", SWT.NONE);
+
+        toggleableTextField = new ToggleableTextField(this, SWT.NONE);
+        toggleableTextField.setBackgroundMode(SWT.INHERIT_DEFAULT);
+        TableWrapData twd_toggleableTextField = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 1);
+        twd_toggleableTextField.grabHorizontal = true;
+        toggleableTextField.setLayoutData(twd_toggleableTextField);
+        formToolkit.adapt(toggleableTextField);
+        formToolkit.paintBordersFor(toggleableTextField);
+
+        lblCountry = new Label(this, SWT.NONE);
+        formToolkit.adapt(lblCountry, true, true);
+        lblCountry.setText("Country");
+
+        countrySelectionField = new EntitySelectionField(this, SWT.NONE);
+        countrySelectionField.setBackgroundMode(SWT.INHERIT_DEFAULT);
+        countrySelectionField.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(countrySelectionField);
+        formToolkit.paintBordersFor(countrySelectionField);
+
+        lblLocality = formToolkit.createLabel(this, "Locality", SWT.NONE);
+
+        textLocality = formToolkit.createText(this, "New Text", SWT.NONE);
+        textLocality.setText("");
+        textLocality.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        lblLatitude = formToolkit.createLabel(this, "Latitude", SWT.NONE);
+
+        pointField = new PointField(this, SWT.NONE);
+        TableWrapLayout twl_pointField = (TableWrapLayout) pointField.getLayout();
+        twl_pointField.verticalSpacing = 0;
+        twl_pointField.topMargin = 0;
+        twl_pointField.rightMargin = 0;
+        twl_pointField.leftMargin = 0;
+        twl_pointField.horizontalSpacing = 0;
+        twl_pointField.bottomMargin = 0;
+        pointField.setLayoutData(new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 6, 1));
+        formToolkit.adapt(pointField);
+        formToolkit.paintBordersFor(pointField);
+        new Label(this, SWT.NONE);
+
+        lblLongitude = formToolkit.createLabel(this, "Longitude", SWT.NONE);
+        new Label(this, SWT.NONE);
+
+        lblErrorRadiusm = formToolkit.createLabel(this, "Error Radius (m)", SWT.NONE);
+
+        lblReferenceSystem = formToolkit.createLabel(this, "Reference System", SWT.NONE);
+
+        lblAbsoluteElevationm = formToolkit.createLabel(this, "Absolute Elevation (m)", SWT.NONE);
+
+        textElevation = formToolkit.createText(this, "New Text", SWT.NONE);
+        textElevation.setText("");
+        textElevation.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        lblDate = formToolkit.createLabel(this, "Date", SWT.NONE);
+        new Label(this, SWT.NONE);
+
+        lblCollector = formToolkit.createLabel(this, "Collector", SWT.NONE);
+
+        collectorSelectionField = new EntitySelectionField(this, SWT.NONE);
+        collectorSelectionField.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(collectorSelectionField);
+        formToolkit.paintBordersFor(collectorSelectionField);
+
+                        lblCollectingNumber = formToolkit.createLabel(this, "Collecting Number", SWT.NONE);
+
+                        textCollectingNumber = formToolkit.createText(this, "New Text", SWT.NONE);
+                        textCollectingNumber.setText("");
+                        textCollectingNumber.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        lblCollection = formToolkit.createLabel(this, "Collection", SWT.NONE);
+
+        collectionSelectionField = new EntitySelectionField(this, SWT.NONE);
+        formToolkit.adapt(collectionSelectionField);
+        formToolkit.paintBordersFor(collectionSelectionField);
+
+        lblAccesionNumber = formToolkit.createLabel(this, "Accesion Number", SWT.NONE);
+
+        textAccessionNumber = formToolkit.createText(this, "New Text", SWT.NONE);
+        textAccessionNumber.setText("");
+        textAccessionNumber.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+
+    public EntitySelectionField getCountrySelectionField() {
+        return countrySelectionField;
+    }
+
+    public EntitySelectionField getCollectorSelectionField() {
+        return collectorSelectionField;
+    }
+
+    public Text getTextElevation() {
+        return textElevation;
+    }
+
+    public Text getTextLocality() {
+        return textLocality;
+    }
+
+    public Text getTextCollectingNumber() {
+        return textCollectingNumber;
+    }
+
+    public ToggleableTextField getToggleableTextField() {
+        return toggleableTextField;
+    }
+
+    public PointField getPointField() {
+        return pointField;
+    }
+    public EntitySelectionField getCollectionSelectionField() {
+        return collectionSelectionField;
+    }
+    public Text getTextAccessionNumber() {
+        return textAccessionNumber;
+    }
+    public Label getLblCollection() {
+        return lblCollection;
+    }
+    public Label getLblAccesionNumber() {
+        return lblAccesionNumber;
+    }
+    public Label getLblCountry() {
+        return lblCountry;
+    }
+    public Label getLblLocality() {
+        return lblLocality;
+    }
+    public Label getLblLatitude() {
+        return lblLatitude;
+    }
+    public Label getLblLongitude() {
+        return lblLongitude;
+    }
+    public Label getLblErrorRadiusm() {
+        return lblErrorRadiusm;
+    }
+    public Label getLblReferenceSystem() {
+        return lblReferenceSystem;
+    }
+    public Label getLblAbsoluteElevation() {
+        return lblAbsoluteElevationm;
+    }
+    public Label getLblDate() {
+        return lblDate;
+    }
+    public Label getLblCollector() {
+        return lblCollector;
+    }
+    public Label getLblCollectingNumber() {
+        return lblCollectingNumber;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralElementController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralElementController.java
new file mode 100644 (file)
index 0000000..c5b8d36
--- /dev/null
@@ -0,0 +1,168 @@
+// $Id$
+/**
+ * Copyright (C) 2013 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.campanula.detailViews.fieldObservation;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.EntitySelectionFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.LanguageTextFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.NumberFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.PointFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.TextFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.ToggleableTextFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+
+/**
+ * @author pplitzner
+ * @date 13.08.2013
+ *
+ */
+public class FieldObservationGeneralElementController extends AbstractCdmDetailElement<DerivedUnitFacade> {
+
+    private FieldObservationGeneralElement fieldObservationGeneralElement;
+
+    private ToggleableTextFieldController toggleableText_titleCache;
+    private EntitySelectionFieldController<NamedArea> selection_country;
+    private LanguageTextFieldController languageText_locality;
+    private PointFieldController element_point;
+    private NumberFieldController number_elevation;
+    private TimePeriodElement element_date;//TODO convert
+    private EntitySelectionFieldController<AgentBase> selection_collector;
+    private TextFieldController text_collectingNumber;
+    private EntitySelectionFieldController<Collection> selectionCollection;
+    private TextFieldController textAccessionNumber;
+
+    boolean isSpecimen;
+    boolean isWizard;
+
+    /**
+     * @param formFactory
+     * @param formElement
+     */
+    public FieldObservationGeneralElementController(FieldObservationGeneralElement fieldObservationGeneralElement, CdmFormFactory formFactory, ICdmFormElement formElement, boolean isSpecimen, boolean isWizard) {
+        super(formFactory, formElement);
+        this.fieldObservationGeneralElement = fieldObservationGeneralElement;
+        this.isSpecimen = isSpecimen;
+        this.isWizard = isWizard;
+        setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+        formFactory.addPropertyChangeListener(this);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
+     * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
+     */
+    @Override
+    protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+        toggleableText_titleCache = new ToggleableTextFieldController(fieldObservationGeneralElement.getToggleableTextField(), getFormFactory(), formElement, entity.getTitleCache(), entity.isProtectedTitleCache(), style);
+
+        selection_country = new EntitySelectionFieldController<NamedArea>(fieldObservationGeneralElement.getCountrySelectionField(), getFormFactory(), getConversationHolder(), formElement, NamedArea.class, entity.getCountry(), EntitySelectionElement.NOTHING);
+        languageText_locality = new LanguageTextFieldController(fieldObservationGeneralElement.getTextLocality(), getFormFactory(), formElement, entity.getLocality());
+        element_point = new PointFieldController(fieldObservationGeneralElement.getPointField(),getFormFactory(), formElement, entity.getExactLocation(), style);
+        number_elevation = new NumberFieldController(fieldObservationGeneralElement.getTextElevation(), getFormFactory(), formElement, entity.getAbsoluteElevation());
+        element_date = formFactory.createTimePeriodElement(formElement, "Date", entity.getGatheringPeriod(), style);
+        selection_collector = new EntitySelectionFieldController<AgentBase>(fieldObservationGeneralElement.getCollectorSelectionField(), getFormFactory(), getConversationHolder(), formElement, AgentBase.class, entity.getCollector(), EntitySelectionElement.ALL);
+        text_collectingNumber = new TextFieldController(fieldObservationGeneralElement.getTextCollectingNumber(), getFormFactory(), formElement, entity.getFieldNumber(), null);
+        if(isWizard){
+            if(!isSpecimen){
+                fieldObservationGeneralElement.getLblCollection().setVisible(false);
+                fieldObservationGeneralElement.getCollectionSelectionField().setVisible(false);
+                fieldObservationGeneralElement.getLblAccesionNumber().setVisible(false);
+                fieldObservationGeneralElement.getTextAccessionNumber().setVisible(false);
+            }
+            else{
+                selectionCollection = new EntitySelectionFieldController<Collection>(fieldObservationGeneralElement.getCollectionSelectionField(), getFormFactory(), getConversationHolder(), formElement, Collection.class, entity.getCollection(), EntitySelectionElement.ALL);
+                textAccessionNumber = new TextFieldController(fieldObservationGeneralElement.getTextAccessionNumber(), getFormFactory(), formElement, entity.getAccessionNumber(), null);
+            }
+        }
+        else{
+            if(isSpecimen){
+                selectionCollection = new EntitySelectionFieldController<Collection>(fieldObservationGeneralElement.getCollectionSelectionField(), getFormFactory(), getConversationHolder(), formElement, Collection.class, entity.getCollection(), EntitySelectionElement.ALL);
+                textAccessionNumber = new TextFieldController(fieldObservationGeneralElement.getTextAccessionNumber(), getFormFactory(), formElement, entity.getAccessionNumber(), null);
+                fieldObservationGeneralElement.getLblCountry().setEnabled(false);
+                fieldObservationGeneralElement.getCountrySelectionField().setEnabled(false);
+                fieldObservationGeneralElement.getLblLocality().setEnabled(false);
+                fieldObservationGeneralElement.getTextLocality().setEnabled(false);
+
+                fieldObservationGeneralElement.getPointField().setEnabled(false);
+                //            fieldObservationGeneralElement.getPointField().getText_latitude().setEnabled(false);
+                fieldObservationGeneralElement.getLblLatitude().setEnabled(false);
+                //            fieldObservationGeneralElement.getPointField().getText_longitude().setEnabled(false);
+                fieldObservationGeneralElement.getLblLongitude().setEnabled(false);
+                //            fieldObservationGeneralElement.getPointField().getNumber_errorRadius().setEnabled(false);
+                fieldObservationGeneralElement.getLblErrorRadiusm().setEnabled(false);
+                //            fieldObservationGeneralElement.getPointField().getCombo_referenceSystem().setEnabled(false);
+                fieldObservationGeneralElement.getLblReferenceSystem().setEnabled(false);
+
+                fieldObservationGeneralElement.getLblAbsoluteElevation().setEnabled(false);
+                fieldObservationGeneralElement.getTextElevation().setEnabled(false);
+                fieldObservationGeneralElement.getLblDate().setEnabled(false);
+
+                fieldObservationGeneralElement.getLblCollector().setEnabled(false);
+                fieldObservationGeneralElement.getCollectorSelectionField().setEnabled(false);
+                fieldObservationGeneralElement.getLblCollectingNumber().setEnabled(false);
+                fieldObservationGeneralElement.getTextCollectingNumber().setEnabled(false);
+            }
+            else{
+                fieldObservationGeneralElement.getLblCollection().setVisible(false);
+                fieldObservationGeneralElement.getCollectionSelectionField().setVisible(false);
+                fieldObservationGeneralElement.getLblAccesionNumber().setVisible(false);
+                fieldObservationGeneralElement.getTextAccessionNumber().setVisible(false);
+            }
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
+     * .lang.Object)
+     */
+    @Override
+    public void handleEvent(Object eventSource) {
+        if (eventSource == toggleableText_titleCache) {
+            getEntity().setTitleCache(toggleableText_titleCache.getText(), toggleableText_titleCache.getState());
+        } else if (eventSource == selection_country) {
+            getEntity().setCountry(selection_country.getSelection());
+        } else if (eventSource == languageText_locality) {
+            LanguageString locality = languageText_locality.getLanguageString();
+            getEntity().setLocality(locality);
+        } else if (eventSource == element_point) {
+            getEntity().setExactLocation(element_point.getPoint());
+        } else if (eventSource == number_elevation) {
+            getEntity().setAbsoluteElevation(number_elevation.getInteger());
+        } else if (eventSource == element_date) {
+            getEntity().setGatheringPeriod(element_date.getTimePeriod());
+        } else if (eventSource == selection_collector) {
+            getEntity().setCollector(selection_collector.getSelection());
+        } else if (eventSource == text_collectingNumber) {
+            getEntity().setFieldNumber(text_collectingNumber.getText());
+        } else if (eventSource == selectionCollection) {
+            getEntity().setCollection(selectionCollection.getSelection());
+        } else if (eventSource == textAccessionNumber) {
+            getEntity().setAccessionNumber(textAccessionNumber.getText());
+        }
+        if (eventSource != toggleableText_titleCache) {
+            toggleableText_titleCache.setText(getEntity().getTitleCache());
+        }
+    }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/FieldObservationGeneralSection.java
new file mode 100644 (file)
index 0000000..e9d459b
--- /dev/null
@@ -0,0 +1,57 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.fieldObservation;
+
+import org.eclipse.jface.viewers.ISelectionProvider;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.IDerivedUnitFacadeDetailSection;
+
+/**
+ * @author pplitzner
+ * @date 16.08.2013
+ *
+ */
+public class FieldObservationGeneralSection extends AbstractCdmDetailSection<DerivedUnitFacade> implements IDerivedUnitFacadeDetailSection{
+
+    /**
+     * <p>Constructor for FieldObservationDetailSection.</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 selectionProvider a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
+     * @param style a int.
+     */
+    public FieldObservationGeneralSection(CdmFormFactory formFactory, ConversationHolder conversation,
+            ICdmFormElement parentElement,
+            ISelectionProvider selectionProvider, int style) {
+        super(formFactory, conversation, parentElement, selectionProvider, style);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public String getHeading() {
+        return "Field Observation";
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
+     */
+    @Override
+    protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
+        return formFactory.createFieldObservationGeneralElementController(parentElement);
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventDetailsElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventDetailsElement.java
new file mode 100644 (file)
index 0000000..d1d436e
--- /dev/null
@@ -0,0 +1,127 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.fieldObservation;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+import org.eclipse.wb.swt.SWTResourceManager;
+
+/**
+ * @author pplitzner
+ * @date 07.08.2013
+ *
+ */
+public class GatheringEventDetailsElement extends Composite {
+    private FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+    private Text textElevationError;
+    private Text text_ElevationMinimum;
+    private Text text_ElevationMaximum;
+    private Text text_CollectingMethod;
+    private Text text_DistanceToGround;
+    private Text text_DistanceToWaterSurface;
+    private Text text_GatheringEventDescription;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public GatheringEventDetailsElement(Composite parent, int style) {
+        super(parent, style);
+        setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+        {
+            TableWrapLayout tableWrapLayout = new TableWrapLayout();
+            tableWrapLayout.verticalSpacing = 0;
+            tableWrapLayout.topMargin = 0;
+            tableWrapLayout.rightMargin = 0;
+            tableWrapLayout.leftMargin = 0;
+            tableWrapLayout.horizontalSpacing = 0;
+            tableWrapLayout.bottomMargin = 0;
+            tableWrapLayout.numColumns = 2;
+            setLayout(tableWrapLayout);
+        }
+
+        Label lblElevationError = formToolkit.createLabel(this, "Elevation Error", SWT.NONE);
+
+        textElevationError = formToolkit.createText(this, "New Text", SWT.NONE);
+        textElevationError.setText("");
+        textElevationError.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblElevationMinimumm = formToolkit.createLabel(this, "Elevation Minimum (m)", SWT.NONE);
+
+        text_ElevationMinimum = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_ElevationMinimum.setText("");
+        text_ElevationMinimum.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblElevationMaximumm = formToolkit.createLabel(this, "Elevation Maximum (m)", SWT.NONE);
+
+        text_ElevationMaximum = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_ElevationMaximum.setText("");
+        text_ElevationMaximum.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblCollectingMethod = formToolkit.createLabel(this, "Collecting Method", SWT.NONE);
+
+        text_CollectingMethod = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_CollectingMethod.setText("");
+        text_CollectingMethod.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblDistanceToGround = formToolkit.createLabel(this, "Distance To Ground (m)", SWT.NONE);
+
+        text_DistanceToGround = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_DistanceToGround.setText("");
+        text_DistanceToGround.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblDistanceToWater = formToolkit.createLabel(this, "Distance To Water Surface (m)", SWT.NONE);
+
+        text_DistanceToWaterSurface = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_DistanceToWaterSurface.setText("");
+        text_DistanceToWaterSurface.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblGatheringEventDescription = formToolkit.createLabel(this, "Gathering Event Description", SWT.NONE);
+
+        text_GatheringEventDescription = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_GatheringEventDescription.setText("");
+        text_GatheringEventDescription.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+
+    public Text getTextElevationError() {
+        return textElevationError;
+    }
+    public Text getText_ElevationMinimum() {
+        return text_ElevationMinimum;
+    }
+    public Text getText_ElevationMaximum() {
+        return text_ElevationMaximum;
+    }
+    public Text getText_CollectingMethod() {
+        return text_CollectingMethod;
+    }
+    public Text getText_DistanceToGround() {
+        return text_DistanceToGround;
+    }
+    public Text getText_DistanceToWaterSurface() {
+        return text_DistanceToWaterSurface;
+    }
+    public Text getText_GatheringEventDescription() {
+        return text_GatheringEventDescription;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventDetailsElementController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventDetailsElementController.java
new file mode 100644 (file)
index 0000000..56f1045
--- /dev/null
@@ -0,0 +1,115 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.fieldObservation;
+
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.NumberFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.TextFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectingAreasDetailSection;
+
+/**
+ * @author pplitzner
+ * @date 14.08.2013
+ *
+ */
+public class GatheringEventDetailsElementController extends AbstractCdmDetailElement<DerivedUnitFacade> {
+
+    private GatheringEventDetailsElement gatheringEventDetailsElement;
+
+//    private NumberFieldController number_absoluteElevationError;
+
+//    private NumberFieldController number_absoluteElevationMinimum;
+
+    private NumberFieldController number_absoluteElevationMaximum;
+
+    private TextFieldController text_collectingMethod;
+
+    private NumberFieldController number_distanceToGround;
+
+    private NumberFieldController number_distanceToWaterSurface;
+
+    private TextFieldController text_gatheringEventDescription;
+
+    private CollectingAreasDetailSection section_collectingAreas;
+
+    /**
+     * <p>
+     * Constructor for GatheringEventDetailElement.
+     * </p>
+     *
+     * @param formFactory
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+     *            object.
+     * @param formElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     */
+    public GatheringEventDetailsElementController(GatheringEventDetailsElement gatheringEventDetailsElement, CdmFormFactory formFactory, ICdmFormElement formElement) {
+        super(formFactory, formElement);
+        this.gatheringEventDetailsElement = gatheringEventDetailsElement;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+
+//        number_absoluteElevationError = new NumberFieldController(gatheringEventDetailsElement.getTextElevationError(), formFactory, this, entity.getAbsoluteElevation());
+//        number_absoluteElevationMinimum = new NumberFieldController(gatheringEventDetailsElement.getText_ElevationMinimum(), formFactory, this, entity.getAbsoluteElevationMinimum());
+        number_absoluteElevationMaximum = new NumberFieldController(gatheringEventDetailsElement.getText_ElevationMaximum(), formFactory, this, entity.getAbsoluteElevationMaximum());
+        text_collectingMethod = new TextFieldController(gatheringEventDetailsElement.getText_CollectingMethod(), formFactory, this, entity.getCollectingMethod(), null);
+        number_distanceToGround = new NumberFieldController(gatheringEventDetailsElement.getText_DistanceToGround(), formFactory, this, entity.getDistanceToGround());
+        number_distanceToWaterSurface = new NumberFieldController(gatheringEventDetailsElement.getText_DistanceToWaterSurface(), formFactory, this, entity.getDistanceToWaterSurface());
+        text_gatheringEventDescription = new TextFieldController(gatheringEventDetailsElement.getText_GatheringEventDescription(), formFactory, this, entity.getGatheringEventDescription(), null);
+        section_collectingAreas = formFactory.createCollectingAreasDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
+        section_collectingAreas.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+        section_collectingAreas.setEntity(entity);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void handleEvent(Object eventSource) {
+//        if (eventSource == number_absoluteElevationError) {
+//            getEntity().setAbsoluteElevationError(number_absoluteElevationError.getDouble());
+//        }
+//        else if (eventSource == number_absoluteElevationMinimum) {
+//            try {
+//                getEntity().setAbsoluteElevationRange(number_absoluteElevationMinimum.getInteger(), number_absoluteElevationMaximum.getInteger());
+//                number_absoluteElevationMinimum.setBackground(getColor(Resources.COLOR_COMPOSITE_BACKGROUND));
+//            } catch (IllegalArgumentException e) {
+//                number_absoluteElevationMinimum.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
+//                AbstractUtility.warn(getClass(), e.getLocalizedMessage());
+//            }
+//        }
+//        else if (eventSource == number_absoluteElevationMaximum) {
+//            try {
+//                getEntity().setAbsoluteElevationRange(number_absoluteElevationError.getInteger(), number_absoluteElevationMaximum.getInteger());
+//                number_absoluteElevationMaximum.setBackground(getColor(Resources.COLOR_COMPOSITE_BACKGROUND));
+//            } catch (IllegalArgumentException e) {
+//                number_absoluteElevationMaximum.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
+//                AbstractUtility.warn(getClass(), e.getLocalizedMessage());
+//            }
+//        } else
+            if (eventSource == text_collectingMethod) {
+            getEntity().setCollectingMethod(text_collectingMethod.getText());
+        } else if (eventSource == number_distanceToGround) {
+            getEntity().setDistanceToGround(number_distanceToGround.getDouble());
+        } else if (eventSource == number_distanceToWaterSurface) {
+            getEntity().setDistanceToWaterSurface(number_distanceToWaterSurface.getDouble());
+        } else if (eventSource == text_gatheringEventDescription) {
+            getEntity().setGatheringEventDescription(text_gatheringEventDescription.getText());
+        }
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/fieldObservation/GatheringEventSection.java
new file mode 100644 (file)
index 0000000..d548812
--- /dev/null
@@ -0,0 +1,61 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.fieldObservation;
+
+import org.eclipse.jface.viewers.ISelectionProvider;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.IDerivedUnitFacadeDetailSection;
+
+/**
+ * @author pplitzner
+ * @date 21.08.2013
+ *
+ */
+public class GatheringEventSection extends AbstractCdmDetailSection<DerivedUnitFacade> implements IDerivedUnitFacadeDetailSection{
+
+    /**
+     * <p>Constructor for GatheringEventDetailSection.</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 selectionProvider a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
+     * @param style a int.
+     */
+    public GatheringEventSection(CdmFormFactory formFactory,
+            ConversationHolder conversation, ICdmFormElement parentElement,
+            ISelectionProvider selectionProvider, int style) {
+        super(formFactory, conversation, parentElement, selectionProvider, style);
+    }
+
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection#getHeading()
+     */
+    /** {@inheritDoc} */
+    @Override
+    public String getHeading() {
+        return "Gathering Event Details";
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
+     */
+    @Override
+    protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
+        return formFactory.createGatheringEventDetailsElementController(parentElement);
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsElement.java
new file mode 100644 (file)
index 0000000..db4c70d
--- /dev/null
@@ -0,0 +1,105 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.specimen;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+import org.eclipse.wb.swt.SWTResourceManager;
+
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.EntitySelectionField;
+
+/**
+ * @author pplitzner
+ * @date 29.08.2013
+ *
+ */
+public class DerivedUnitDetailsElement extends Composite {
+    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+    private Text textBarcode;
+    private Text textCatalogNumber;
+    private Text txtExsiccatum;
+    private Combo comboPreservationMethod;
+    private EntitySelectionField storedUnderSelectionField;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public DerivedUnitDetailsElement(Composite parent, int style) {
+        super(parent, style);
+        setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+        {
+            TableWrapLayout tableWrapLayout = new TableWrapLayout();
+            tableWrapLayout.numColumns = 2;
+            setLayout(tableWrapLayout);
+        }
+
+        Label lblBarcode = formToolkit.createLabel(this, "Barcode", SWT.NONE);
+
+        textBarcode = formToolkit.createText(this, "New Text", SWT.NONE);
+        textBarcode.setText("");
+        textBarcode.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblCatalognumber = formToolkit.createLabel(this, "CatalogNumber", SWT.NONE);
+
+        textCatalogNumber = formToolkit.createText(this, "New Text", SWT.NONE);
+        textCatalogNumber.setText("");
+        textCatalogNumber.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblPreservationMethod = formToolkit.createLabel(this, "Preservation Method", SWT.NONE);
+
+        comboPreservationMethod = new Combo(this, SWT.NONE);
+        comboPreservationMethod.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(comboPreservationMethod);
+        formToolkit.paintBordersFor(comboPreservationMethod);
+
+        Label lblStoredUnder = formToolkit.createLabel(this, "Stored Under", SWT.NONE);
+
+        storedUnderSelectionField = new EntitySelectionField(this, SWT.NONE);
+        formToolkit.adapt(storedUnderSelectionField);
+        formToolkit.paintBordersFor(storedUnderSelectionField);
+
+        Label lblExsiccatum = formToolkit.createLabel(this, "Exsiccatum", SWT.NONE);
+
+        txtExsiccatum = formToolkit.createText(this, "New Text", SWT.NONE);
+        txtExsiccatum.setText("");
+        txtExsiccatum.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+
+    public Text getTextBarcode() {
+        return textBarcode;
+    }
+    public Text getTextCatalogNumber() {
+        return textCatalogNumber;
+    }
+    public Combo getComboPreservationMethod() {
+        return comboPreservationMethod;
+    }
+    public EntitySelectionField getStoredUnderSelectionField() {
+        return storedUnderSelectionField;
+    }
+    public Text getTxtExsiccatum() {
+        return txtExsiccatum;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsElementController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsElementController.java
new file mode 100644 (file)
index 0000000..22c3439
--- /dev/null
@@ -0,0 +1,110 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.specimen;
+
+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.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.EntitySelectionFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.TextFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SourceCollectionDetailSection;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+
+/**
+ * @author pplitzner
+ * @date 29.08.2013
+ *
+ */
+public class DerivedUnitDetailsElementController extends AbstractCdmDetailElement<DerivedUnitFacade> {
+
+    private DerivedUnitDetailsElement derivedUnitDetailsElement;
+
+    private TextFieldController barCode;
+    private TextFieldController catalogNumber;
+//    private ComboDefinedTermController<PreservationMethod> preservationMethod;
+    private EntitySelectionFieldController<TaxonNameBase> storedUnder;
+    private TextFieldController exsiccatum;
+
+    private SourceCollectionDetailSection section_source;
+
+
+    public DerivedUnitDetailsElementController(DerivedUnitDetailsElement derivedUnitDetailsElement, CdmFormFactory formFactory, ICdmFormElement formElement) {
+        super(formFactory, formElement);
+        this.derivedUnitDetailsElement = derivedUnitDetailsElement;
+        setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+        formFactory.addPropertyChangeListener(this);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#createControls(eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement, java.lang.Object, int)
+     */
+    @Override
+    protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+        barCode = new TextFieldController(derivedUnitDetailsElement.getTextBarcode(), getFormFactory(), formElement, entity.getBarcode(), null);
+        catalogNumber = new TextFieldController(derivedUnitDetailsElement.getTextCatalogNumber(), getFormFactory(), formElement, entity.getCatalogNumber(), null);
+        PreservationMethod entityPreservationMethod;
+        try {
+            entityPreservationMethod = entity.getPreservationMethod();
+        } catch (MethodNotSupportedByDerivedUnitTypeException e) {
+            // we ignore this
+            AbstractUtility.info(e.getMessage());
+            entityPreservationMethod = null;
+        }
+//        preservationMethod = new ComboDefinedTermController<PreservationMethod>(derivedUnitDetailsElement.getComboPreservationMethod(), getFormFactory(), formElement, PreservationMethod.class, entityPreservationMethod, style);
+        storedUnder = new EntitySelectionFieldController<TaxonNameBase>(derivedUnitDetailsElement.getStoredUnderSelectionField(), getFormFactory(), getConversationHolder(), formElement, TaxonNameBase.class, entity.getStoredUnder(), EntitySelectionElement.ALL);
+        String entitiyExsiccatum;
+        try {
+            entitiyExsiccatum = entity.getExsiccatum();
+        } catch (MethodNotSupportedByDerivedUnitTypeException e) {
+            // we ignore this
+            AbstractUtility.info(e.getMessage());
+            entitiyExsiccatum = null;
+        }
+        exsiccatum = new TextFieldController(derivedUnitDetailsElement.getTxtExsiccatum(), getFormFactory(), formElement, entitiyExsiccatum, null);
+
+        section_source = formFactory.createSourceCollectionDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
+        section_source.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+        section_source.setEntity(entity);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#handleEvent(java.lang.Object)
+     */
+    @Override
+    public void handleEvent(Object eventSource) {
+        if (eventSource == barCode) {
+            getEntity().setBarcode(barCode.getText());
+        } else if (eventSource == catalogNumber) {
+            getEntity().setCatalogNumber(catalogNumber.getText());
+//        } else if (eventSource == preservationMethod) {
+//            try {
+//                getEntity().setPreservationMethod(preservationMethod.getSelection());
+//            } catch (MethodNotSupportedByDerivedUnitTypeException e) {
+//                AbstractUtility.errorDialog("MethodNotSupportedByDerivedUnitTypeException", this, "MethodNotSupportedByDerivedUnitTypeException when trying to set preservation method for derive unit", e);
+//            }
+        } else if (eventSource == storedUnder) {
+            getEntity().setStoredUnder(storedUnder.getEntity());
+        } else if (eventSource == exsiccatum) {
+            try {
+                getEntity().setExsiccatum(exsiccatum.getText());
+            } catch (Exception e) {
+                AbstractUtility.error(this.getClass(), e);
+            }
+        }
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/DerivedUnitDetailsSection.java
new file mode 100644 (file)
index 0000000..db2f504
--- /dev/null
@@ -0,0 +1,48 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.specimen;
+
+import org.eclipse.jface.viewers.ISelectionProvider;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.IDerivedUnitFacadeDetailSection;
+
+/**
+ * @author pplitzner
+ * @date 29.08.2013
+ *
+ */
+public class DerivedUnitDetailsSection extends AbstractCdmDetailSection<DerivedUnitFacade> implements IDerivedUnitFacadeDetailSection {
+
+    public DerivedUnitDetailsSection(CdmFormFactory formFactory, ConversationHolder conversation,
+            ICdmFormElement parentElement,
+            ISelectionProvider selectionProvider, int style) {
+        super(formFactory, conversation, parentElement, selectionProvider, style);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public String getHeading() {
+        return "Derived Unit Details";
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
+     */
+    @Override
+    protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
+        return formFactory.createDerivedUnitDetailsElementController(parentElement);
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsElement.java
new file mode 100644 (file)
index 0000000..bcd5432
--- /dev/null
@@ -0,0 +1,104 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.specimen;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+import org.eclipse.wb.swt.SWTResourceManager;
+
+/**
+ * @author pplitzner
+ * @date 29.08.2013
+ *
+ */
+public class SpecimenDetailsElement extends Composite {
+    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+    private Text text_IndividualEcology;
+    private Text text_PlantDesriptionDetails;
+    private Text text_IndividualFieldNotes;
+    private Combo comboLiveStage;
+    private Combo combo_Sex;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public SpecimenDetailsElement(Composite parent, int style) {
+        super(parent, style);
+        setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
+        {
+            TableWrapLayout tableWrapLayout = new TableWrapLayout();
+            tableWrapLayout.numColumns = 2;
+            setLayout(tableWrapLayout);
+        }
+
+        Label lblNewLabel = formToolkit.createLabel(this, "Individual Ecology", SWT.NONE);
+
+        text_IndividualEcology = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_IndividualEcology.setText("");
+        text_IndividualEcology.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblPlantDescriptionDetails = formToolkit.createLabel(this, "Plant Description Details", SWT.NONE);
+
+        text_PlantDesriptionDetails = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_PlantDesriptionDetails.setText("");
+        text_PlantDesriptionDetails.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblIndividualFieldNotes = formToolkit.createLabel(this, "Individual Field Notes", SWT.NONE);
+
+        text_IndividualFieldNotes = formToolkit.createText(this, "New Text", SWT.NONE);
+        text_IndividualFieldNotes.setText("");
+        text_IndividualFieldNotes.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblLiveStage = formToolkit.createLabel(this, "Live Stage", SWT.NONE);
+
+        comboLiveStage = new Combo(this, SWT.NONE);
+        comboLiveStage.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(comboLiveStage);
+        formToolkit.paintBordersFor(comboLiveStage);
+
+        Label lblSex = formToolkit.createLabel(this, "Sex", SWT.NONE);
+
+        combo_Sex = new Combo(this, SWT.NONE);
+        combo_Sex.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(combo_Sex);
+        formToolkit.paintBordersFor(combo_Sex);
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+
+    public Text getText_IndividualEcology() {
+        return text_IndividualEcology;
+    }
+    public Text getText_PlantDesriptionDetails() {
+        return text_PlantDesriptionDetails;
+    }
+    public Text getText_IndividualFieldNotes() {
+        return text_IndividualFieldNotes;
+    }
+    public Combo getComboLiveStage() {
+        return comboLiveStage;
+    }
+    public Combo getCombo_Sex() {
+        return combo_Sex;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsElementController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsElementController.java
new file mode 100644 (file)
index 0000000..4041487
--- /dev/null
@@ -0,0 +1,75 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.specimen;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.ComboDefinedTermController;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.TextFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author pplitzner
+ * @date 29.08.2013
+ *
+ */
+public class SpecimenDetailsElementController extends AbstractCdmDetailElement<DerivedUnitFacade>  {
+
+    private SpecimenDetailsElement specimenDetailsElement;
+    private TextFieldController individualEcology;
+    private TextFieldController plantDescriptionDetails;
+    private TextFieldController individualFieldNotes;
+    private ComboDefinedTermController<DefinedTerm> liveStage;
+    private ComboDefinedTermController<DefinedTerm> sex;
+
+
+    public SpecimenDetailsElementController(SpecimenDetailsElement specimenDetailsElement, CdmFormFactory formFactory, ICdmFormElement formElement) {
+        super(formFactory, formElement);
+        this.specimenDetailsElement = specimenDetailsElement;
+        setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+        formFactory.addPropertyChangeListener(this);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#createControls(eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement, java.lang.Object, int)
+     */
+    @Override
+    protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+        individualEcology = new TextFieldController(specimenDetailsElement.getText_IndividualEcology(), getFormFactory(), formElement, entity.getEcology(), null);
+        plantDescriptionDetails = new TextFieldController(specimenDetailsElement.getText_PlantDesriptionDetails(), getFormFactory(), formElement, entity.getPlantDescription(), null);
+        plantDescriptionDetails = new TextFieldController(specimenDetailsElement.getText_IndividualFieldNotes(), getFormFactory(), formElement, entity.getFieldNotes(), null);
+        liveStage = new ComboDefinedTermController<DefinedTerm>(specimenDetailsElement.getComboLiveStage(), getFormFactory(), formElement, DefinedTerm.class, entity.getLifeStage(), style);
+        sex = new ComboDefinedTermController<DefinedTerm>(specimenDetailsElement.getCombo_Sex(), getFormFactory(), formElement, DefinedTerm.class, entity.getSex(), style);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#handleEvent(java.lang.Object)
+     */
+    @Override
+    public void handleEvent(Object eventSource) {
+        if(eventSource == individualEcology){
+            getEntity().setEcology(individualEcology.getText());
+        }
+        else if(eventSource == plantDescriptionDetails){
+            getEntity().setPlantDescription(plantDescriptionDetails.getText());
+        }
+        else if(eventSource == individualFieldNotes){
+            getEntity().setFieldNotes(individualFieldNotes.getText());
+        }
+        else if(eventSource == liveStage){
+            getEntity().setLifeStage(liveStage.getSelection());
+        }
+        else if(eventSource == sex){
+            getEntity().setSex(sex.getSelection());
+        }
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenDetailsSection.java
new file mode 100644 (file)
index 0000000..4854f72
--- /dev/null
@@ -0,0 +1,48 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.specimen;
+
+import org.eclipse.jface.viewers.ISelectionProvider;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.IDerivedUnitFacadeDetailSection;
+
+/**
+ * @author pplitzner
+ * @date 29.08.2013
+ *
+ */
+public class SpecimenDetailsSection extends AbstractCdmDetailSection<DerivedUnitFacade> implements IDerivedUnitFacadeDetailSection {
+
+    public SpecimenDetailsSection(CdmFormFactory formFactory, ConversationHolder conversation,
+            ICdmFormElement parentElement,
+            ISelectionProvider selectionProvider, int style) {
+        super(formFactory, conversation, parentElement, selectionProvider, style);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public String getHeading() {
+        return "Specimen Details";
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
+     */
+    @Override
+    protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
+        return formFactory.createSpecimenDetailsElementController(parentElement);
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenGeneralSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/detailViews/specimen/SpecimenGeneralSection.java
new file mode 100644 (file)
index 0000000..e20e819
--- /dev/null
@@ -0,0 +1,48 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.detailViews.specimen;
+
+import org.eclipse.jface.viewers.ISelectionProvider;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.IDerivedUnitFacadeDetailSection;
+
+/**
+ * @author pplitzner
+ * @date 16.08.2013
+ *
+ */
+public class SpecimenGeneralSection extends AbstractCdmDetailSection<DerivedUnitFacade> implements IDerivedUnitFacadeDetailSection{
+
+    public SpecimenGeneralSection(CdmFormFactory formFactory, ConversationHolder conversation,
+            ICdmFormElement parentElement,
+            ISelectionProvider selectionProvider, int style) {
+        super(formFactory, conversation, parentElement, selectionProvider, style);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public String getHeading() {
+        return "Specimen";
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
+     */
+    @Override
+    protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
+        return formFactory.createSpecimenGeneralElementController(parentElement);
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/specimenSearch/SpecimenSearchComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/specimenSearch/SpecimenSearchComposite.java
new file mode 100644 (file)
index 0000000..0680214
--- /dev/null
@@ -0,0 +1,135 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.specimenSearch;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+/**
+ * @author pplitzner
+ * @date 03.09.2013
+ *
+ */
+public class SpecimenSearchComposite extends Composite {
+    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+    private Text textTaxonName;
+    private Text textCollector;
+    private Text textCollectorNumber;
+    private Text textAccessionNumber;
+    private Text textLocality;
+    private Text textHerbarium;
+    private Text textCountry;
+
+    /**
+     * Create the composite.
+     * @param parent
+     * @param style
+     */
+    public SpecimenSearchComposite(Composite parent, int style) {
+        super(parent, style);
+        setBackgroundMode(SWT.INHERIT_DEFAULT);
+        {
+            TableWrapLayout tableWrapLayout = new TableWrapLayout();
+            tableWrapLayout.numColumns = 2;
+            setLayout(tableWrapLayout);
+        }
+
+        Label lblTaxonName = formToolkit.createLabel(this, "Taxon Name", SWT.NONE);
+
+        textTaxonName = new Text(this, SWT.BORDER);
+        textTaxonName.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(textTaxonName, true, true);
+
+        Label lblCollectors = new Label(this, SWT.NONE);
+        formToolkit.adapt(lblCollectors, true, true);
+        lblCollectors.setText("Collector(s)");
+
+        textCollector = new Text(this, SWT.BORDER);
+        textCollector.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(textCollector, true, true);
+
+        Label lblCollectorsNumber = new Label(this, SWT.NONE);
+        formToolkit.adapt(lblCollectorsNumber, true, true);
+        lblCollectorsNumber.setText("Collector(s) Number");
+
+        textCollectorNumber = new Text(this, SWT.BORDER);
+        textCollectorNumber.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(textCollectorNumber, true, true);
+
+        Label lblAccessionNumber = new Label(this, SWT.NONE);
+        formToolkit.adapt(lblAccessionNumber, true, true);
+        lblAccessionNumber.setText("Accession Number");
+
+        textAccessionNumber = new Text(this, SWT.BORDER);
+        textAccessionNumber.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(textAccessionNumber, true, true);
+
+        Label lblHerbarium = new Label(this, SWT.NONE);
+        formToolkit.adapt(lblHerbarium, true, true);
+        lblHerbarium.setText("Herbarium");
+
+        textHerbarium = new Text(this, SWT.NONE);
+        textHerbarium.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblCountry = new Label(this, SWT.NONE);
+        formToolkit.adapt(lblCountry, true, true);
+        lblCountry.setText("Country");
+
+        textCountry = new Text(this, SWT.NONE);
+        textCountry.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+        Label lblLocality = new Label(this, SWT.NONE);
+        formToolkit.adapt(lblLocality, true, true);
+        lblLocality.setText("Locality");
+
+        textLocality = new Text(this, SWT.BORDER);
+        textLocality.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+        formToolkit.adapt(textLocality, true, true);
+
+        Label lblCollectionDate = new Label(this, SWT.NONE);
+        formToolkit.adapt(lblCollectionDate, true, true);
+        lblCollectionDate.setText("Collection Date");
+        new Label(this, SWT.NONE);
+
+    }
+
+    @Override
+    protected void checkSubclass() {
+        // Disable the check that prevents subclassing of SWT components
+    }
+
+    public Text getTextTaxonName() {
+        return textTaxonName;
+    }
+    public Text getTextCollector() {
+        return textCollector;
+    }
+    public Text getTextCollectorNumber() {
+        return textCollectorNumber;
+    }
+    public Text getTextAccessionNumber() {
+        return textAccessionNumber;
+    }
+    public Text getTextHerbarium() {
+        return textHerbarium;
+    }
+    public Text getTextCountry() {
+        return textCountry;
+    }
+    public Text getTextLocality() {
+        return textLocality;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/specimenSearch/SpecimenSearchController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/campanula/specimenSearch/SpecimenSearchController.java
new file mode 100644 (file)
index 0000000..295bc26
--- /dev/null
@@ -0,0 +1,105 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.campanula.specimenSearch;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Controller class for handling a {@link SpecimenSearchComposite}.
+ * @author pplitzner
+ * @date 03.09.2013
+ *
+ */
+public class SpecimenSearchController {
+
+    private final SpecimenSearchComposite specimenSearchComposite;
+
+    /**
+     * @param specimenSearchComposite
+     */
+    public SpecimenSearchController(Composite parent) {
+        this.specimenSearchComposite = new SpecimenSearchComposite(parent, SWT.NONE);
+    }
+
+    /**
+     * Returns the {@link Composite} handled by this controller
+     * @return
+     */
+    public Composite getComposite() {
+        return specimenSearchComposite;
+    }
+
+    /**
+     * Returns the taxon name entered in the search view
+     * @return the taxon name as a {@link String}
+     * @see eu.etaxonomy.taxeditor.ui.campanula.specimenSearch.SpecimenSearchComposite#getTextTaxonName()
+     */
+    public String getTaxonName() {
+        return specimenSearchComposite.getTextTaxonName().getText();
+    }
+
+    /**
+     * Returns the collector entered in the search view
+     * @return the collector as a {@link String}
+     * @see eu.etaxonomy.taxeditor.ui.campanula.specimenSearch.SpecimenSearchComposite#getTextCollector()
+     */
+    public String getCollector() {
+        return specimenSearchComposite.getTextCollector().getText();
+    }
+
+    /**
+     * Returns the collecting number entered in the search view
+     * @return the collecting as a {@link String}
+     * @see eu.etaxonomy.taxeditor.ui.campanula.specimenSearch.SpecimenSearchComposite#getTextCollectorNumber()
+     */
+    public String getCollectorNumber() {
+        return specimenSearchComposite.getTextCollectorNumber().getText();
+    }
+
+    /**
+     * Returns the accession number entered in the search view
+     * @return the accession number as a {@link String}
+     * @see eu.etaxonomy.taxeditor.ui.campanula.specimenSearch.SpecimenSearchComposite#getTextAccessionNumber()
+     */
+    public String getAccessionNumber() {
+        return specimenSearchComposite.getTextAccessionNumber().getText();
+    }
+
+    /**
+     * Returns the herbarium entered in the search view
+     * @return the herbarium as a {@link String}
+     * @see eu.etaxonomy.taxeditor.ui.campanula.specimenSearch.SpecimenSearchComposite#getComboHerbarium()
+     */
+    public String getHerbarium() {
+        return specimenSearchComposite.getTextHerbarium().getText();
+//        return specimenSearchComposite.getComboHerbarium().getItem(specimenSearchComposite.getComboHerbarium().getSelectionIndex());
+    }
+
+    /**
+     * Returns the country entered in the search view
+     * @return the country as a {@link String}
+     * @see eu.etaxonomy.taxeditor.ui.campanula.specimenSearch.SpecimenSearchComposite#getComboCountry()
+     */
+    public String getCountry() {
+        return specimenSearchComposite.getTextCountry().getText();
+//        return specimenSearchComposite.getComboCountry().getItem(specimenSearchComposite.getComboCountry().getSelectionIndex());
+    }
+
+    /**
+     * Returns the locality entered in the search view
+     * @return the locality as a {@link String}
+     * @see eu.etaxonomy.taxeditor.ui.campanula.specimenSearch.SpecimenSearchComposite#getTextLocality()
+     */
+    public String getLocality() {
+        return specimenSearchComposite.getTextLocality().getText();
+    }
+
+}
\ No newline at end of file
index 04f64ab05238c1e5da7357e0d7d3c9d2e4327678..05df291ba4976995b60f7d1197fb31d087479ae1 100644 (file)
@@ -32,10 +32,10 @@ import eu.etaxonomy.cdm.model.reference.ReferenceType;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectable;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
index 77400dbe35342db62043b3b1b441a7c97eed7504..f05cbe1c497ca468f04b11402df608d77165402e 100644 (file)
@@ -27,10 +27,10 @@ import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.taxeditor.store.TermManager;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectable;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
index 171df7231870c61ab6e7b7822587245deb579f2c..5e3e5c1ee568b3aeaefd8a49d7297ba95a520e62 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -66,14 +66,14 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
        protected List<UuidAndTitleCache<T>> model;
        private final Set<T> transientCdmObjects = new HashSet<T>();
        private final String settings;
-
+       
        protected T cdmBaseToBeFiltered;
-
+       
        /**
         * <p>Constructor for AbstractFilteredCdmResourceSelectionDialog.</p>
         *
         * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
-        * @param conversation
+        * @param conversation 
         * @param title a {@link java.lang.String} object.
         * @param multi a boolean.
         * @param settings a {@link java.lang.String} object.
@@ -85,29 +85,29 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                setTitle(title);
                setMessage("Use * for wildcard, or ? to see all entries");
                this.settings = settings;
-
+               
                this.conversation = conversation;
-
+               
                init();
-
+               
                initModel();
-
+               
                String objectTitle = getTitle(cdmObject);
                if (objectTitle != null) {
                        setInitialPattern(objectTitle);
                }
-
+               
                setListLabelProvider(createListLabelProvider());
                setDetailsLabelProvider(createDetailsLabelProvider());
-
+               
                setSelectionHistory(new ResourceSelectionHistory());
        }
-
+       
        /**
         * By default, we are returning the standard list label provider
-        *
-        * Override in subclasses if you want different behavior
-        *
+        * 
+        * Override in subclasses if you want different behavior 
+        * 
         * @return
         */
        protected ILabelProvider createDetailsLabelProvider() {
@@ -115,7 +115,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
        }
 
        /**
-        *
+        * 
         * @return
         */
        protected ILabelProvider createListLabelProvider() {
@@ -127,9 +127,9 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
         * Will run before initModel()
         */
        protected void init() {
-
+               
        }
-
+       
        /**
         * <p>getSelectionFromDialog</p>
         *
@@ -140,18 +140,18 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
        protected static <TYPE extends CdmBase> TYPE getSelectionFromDialog(AbstractFilteredCdmResourceSelectionDialog<TYPE> dialog) {
                //dialog.setInitialPattern("");
                int result = dialog.open();
-
+               
                if (result == Window.CANCEL) {
                        return null;
                }
-
+               
                UUID uuid = dialog.getSelectedUuidAndTitleCache().getUuid();
                if(uuid == null){
                        return null;
-               }
+               }       
                return dialog.getCdmObjectByUuid(uuid);
        }
-
+       
        /**
         * Check if object was created during the life of this dialog. If not,
         * retrieve it from the CdmStore.
@@ -167,7 +167,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                }
                return getPersistentObject(cdmUuid);
        }
-
+       
        /**
         * <p>getPersistentObject</p>
         *
@@ -204,16 +204,16 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                if(cdmObject == null){
                        return "";
                }
-
+               
                if (cdmObject instanceof IIdentifiableEntity) {
-                       return ((IIdentifiableEntity) cdmObject).getTitleCache();
+                       return ((IIdentifiableEntity) cdmObject).getTitleCache();                       
                }
-
+               
                throw new IllegalArgumentException("Generic method only" +
                                " supports cdmObject of type IIdentifiableEntity." +
                                " Please implement specific method in subclass.");
        }
-
+       
 
        /** {@inheritDoc} */
        @Override
@@ -222,7 +222,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                filterExcludedObjects();
                super.refresh();
        }
-
+       
        /**
         * <p>initModel</p>
         */
@@ -243,7 +243,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                        public boolean equalsFilter(ItemsFilter filter) {
                                return false;
                        }
-
+                       
                        @Override
                        public boolean isConsistentItem(Object item) {
                                return false;
@@ -259,10 +259,10 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                                }
                                return text != null ? matches(text) : false;
                        }
-
+                       
                };
        }
-
+       
 
        /**
         * Set the filter input to the Agent's title cache
@@ -270,11 +270,11 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
         * @param cdmObject a T object.
         */
        protected void setPattern(T cdmObject) {
-               // FilteredSelection does some very tricky caching to make sure it
-               // runs with high performance.
+               // FilteredSelection does some very tricky caching to make sure it 
+               // runs with high performance. 
                // This works for most use cases, but we want to change the model while the dialog is open
                // and all the clever caching prevents the content provider from knowing that the model has changed
-               // I am aware, that this is a hack, but the FilteredSelectionDialog API does not offer a convenient
+               // I am aware, that this is a hack, but the FilteredSelectionDialog API does not offer a convenient 
                // way to solve the problem.
                try {
                        Field lastCompletedFilter = this.getClass().getSuperclass().getSuperclass().getDeclaredField("lastCompletedFilter");
@@ -289,14 +289,14 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                } catch (IllegalAccessException e) {
                        AbstractUtility.error(getClass(), e);
                }
-
-               // this also is not the nicest way to do it.
+               
+               // this also is not the nicest way to do it. 
                // I am still amazed, that FilteredSelectionDialog does not offer any methods to change its data
                // once it was opened. Am I doing it wrong?
                String pattern = getTitle(cdmObject);
                ((Text) getPatternControl()).setText(pattern);
        }
-
+       
        /* (non-Javadoc)
        * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#fillContentProvider(org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.AbstractContentProvider, org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.ItemsFilter, org.eclipse.core.runtime.IProgressMonitor)
        */
@@ -306,7 +306,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                ItemsFilter itemsFilter, IProgressMonitor progressMonitor)
                throws CoreException {
                try {
-                       if(model != null){
+                       if(model != null){                              
                                progressMonitor.beginTask("Looking for entities", model.size());
                                for(UuidAndTitleCache<T> element : model){
                                        contentProvider.add(element, itemsFilter);
@@ -355,7 +355,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
        protected Comparator getItemsComparator() {
                return new Comparator<UuidAndTitleCache>() {
                        @Override
-            public int compare(UuidAndTitleCache entity1,
+                       public int compare(UuidAndTitleCache entity1,
                                        UuidAndTitleCache entity2) {
                                Collator collator = Collator.getInstance();
                                return collator.compare(entity1.getTitleCache(), entity2.getTitleCache());
@@ -371,7 +371,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
        protected IStatus validateItem(Object item) {
                return Status.OK_STATUS;
        }
-
+       
        /**
         * <p>getSelectedUuidAndTitleCache</p>
         *
@@ -381,7 +381,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                Object[] result = getResult();
                return result[0] == null ? null : (UuidAndTitleCache) result[0];
        }
-
+       
        /**
         * <p>Getter for the field <code>settings</code>.</p>
         *
@@ -393,9 +393,9 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                }
                return settings;
        }
-
+       
        /**
-        *
+        * 
         * @author n.hoffmann
         * @created Oct 19, 2009
         * @version 1.0
@@ -405,7 +405,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
            * @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.SelectionHistory#restoreItemFromMemento(org.eclipse.ui.IMemento)
                */
                @Override
-        protected Object restoreItemFromMemento(IMemento element) {
+               protected Object restoreItemFromMemento(IMemento element) {
                        return element.getString("resource"); //$NON-NLS-1$
                }
                /*
@@ -413,33 +413,33 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                 *      org.eclipse.ui.IMemento)
                 */
                @Override
-        protected void storeItemToMemento(Object item, IMemento element) {
+               protected void storeItemToMemento(Object item, IMemento element) {
                        element.putString("resource", item.toString()); //$NON-NLS-1$
                }
        }
-
+       
        /**
         * <p>getNewWizardLinkText</p>
         *
         * @return a {@link java.lang.String} object.
         */
        protected abstract String getNewWizardLinkText();
-
+       
        /**
         * <p>getNewEntityWizard</p>
-        * @param parameter
+        * @param parameter 
         * @return a {@link eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard} object.
         */
        protected abstract AbstractNewEntityWizard getNewEntityWizard(String parameter);
-
+       
        public class FilteredCdmResourceLabelProvider extends LabelProvider {
                @Override
-        public String getText(Object element) {
+               public String getText(Object element) {
                        if (element == null) {
                                return null;
                        }
                        return ((UuidAndTitleCache) element).getTitleCache();
-               }
+               }                       
        };
 
        /* (non-Javadoc)
@@ -457,10 +457,10 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                }
                return null;
        }
-
+       
        protected SelectionListener getNewWizardLinkSelectionListener(){
                return new SelectionAdapter() {
-
+                       
                        /* (non-Javadoc)
                         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
                         */
@@ -470,53 +470,53 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                                AbstractNewEntityWizard wizard = getNewEntityWizard(e.text);
 
                                wizard.init(null, null);
-                               WizardDialog dialog = new WizardDialog(getShell(), wizard);
-                               int status = dialog.open();
-
-                               if (status == IStatus.OK) {
+                               if(wizard.getEntity() != null) {
+                                       WizardDialog dialog = new WizardDialog(getShell(), wizard);
+                                       int status = dialog.open();
 
-                                       T entity = (T) wizard.getEntity();
+                                       if (status == IStatus.OK) {
 
-//                                     addObjectToModel(teamOrPerson);
-                                       refresh();
-                                       setPattern(entity);
-                                       getConversationHolder().bind();
+                                               T entity = (T) wizard.getEntity();
+                                               refresh();
+                                               setPattern(entity);
+                                               getConversationHolder().bind();
+                                       }
                                        //FIXME : Need to make sure this is a stable fix (ticket 3822)
                                        getConversationHolder().commit();
                                }
                        }
                };
        }
-
+       
        /**
         * <p>getConversationHolder</p>
         *
         * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
         */
        @Override
-    public ConversationHolder getConversationHolder() {
+       public ConversationHolder getConversationHolder() {
                return conversation;
        }
-
+       
        /** {@inheritDoc} */
        @Override
-    public void update(CdmDataChangeMap changeEvents) {}
+       public void update(CdmDataChangeMap changeEvents) {}
 
        /**
-        * Don't want to add for example a taxon or synonym to itself
-        * so filter the list to remove the taxon in question
+        * Don't want to add for example a taxon or synonym to itself 
+        * so filter the list to remove the taxon in question 
         * (<code>cdmBaseToBeFiltered</code>)
         * so it is not available in the filtered list.
         */
        private void filterExcludedObjects() {
                if (model != null && cdmBaseToBeFiltered != null) {
-
+                       
                        UuidAndTitleCache uuidAndTitleCacheToRemove = null;
-
+                                               
                        for (UuidAndTitleCache uuidAndTitleCache : model){
                                if ((cdmBaseToBeFiltered.getUuid()).equals(uuidAndTitleCache.getUuid())) {
                                        uuidAndTitleCacheToRemove = uuidAndTitleCache;
-                               }
+                               }                               
                        }
                        model.remove(uuidAndTitleCacheToRemove);
                }
index e04928fa8f31ed0575a4354fd6857df368c54c65..825619ba8c52f54fa2a12a4cbfdb2fa9ffac00f8 100644 (file)
@@ -22,6 +22,7 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index 6d71b98a8ec2ebf6df372fe70029f773b650470f..0aeb323c494bb08337cb0cf526e1e8e5138a4e12 100644 (file)
@@ -17,6 +17,7 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.forms.widgets.Section;
 
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>Abstract AbstractCdmFormElement class.</p>
@@ -63,12 +64,8 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
 //             addControl(layoutComposite);
        }
 
-       /**
-        * <p>Getter for the field <code>formFactory</code>.</p>
-        *
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
-        */
-       public CdmFormFactory getFormFactory() {
+       @Override
+    public CdmFormFactory getFormFactory() {
                return formFactory;
        }
 
@@ -237,6 +234,7 @@ public abstract class AbstractCdmFormElement implements ICdmFormElement {
        /** {@inheritDoc} */
        @Override
     public void firePropertyChangeEvent(CdmPropertyChangeEvent event) {
+           //TODO: replace propertyChangeListeners with formFactory.getPropertyChangeListeners() and remove member propertyChangeListeners from AbstractCdmFormElement
                Assert.isNotNull(propertyChangeListeners, "Property change listeners are not present");
 
                try{
index 3138191d3ee7a93a45c00c98f394c7b1810fcf00..b95402ed0d0392940b60afa81e7275eb9308a460 100644 (file)
@@ -13,6 +13,8 @@ package eu.etaxonomy.taxeditor.ui.element;
 import java.util.ArrayList;
 import java.util.List;
 
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+
 
 
 /**
index cece9928bba24c05f590518a3603b11d2651c766..80392ad976b1cdc22358a670a02cec33aaaf2aaf 100644 (file)
@@ -34,6 +34,7 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>
@@ -49,9 +50,7 @@ import eu.etaxonomy.taxeditor.model.AbstractUtility;
  * @param <T>
  */
 //TODO shouldn't ENTITY be bound with super class ICdmBase for example (AbstractFormSection<ENTITY extends ICdmBase>)?
-public abstract class AbstractFormSection<ENTITY> extends Section implements
-               ISelectionChangedListener, IEntityElement<ENTITY>,
-               IConversationEnabled {
+public abstract class AbstractFormSection<ENTITY> extends Section implements ISelectionChangedListener, IEntityElement<ENTITY>, IConversationEnabled {
 
        private ISelectionProvider selectionProvider;
 
index 3664ed528399e07b6129fe58d2bb505b53a8cd0b..f2e4b1604143c1a4afe0f0ac4f3892b71e67411b 100644 (file)
@@ -12,6 +12,8 @@ import org.eclipse.swt.events.ControlListener;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+
 
 /**
  * <p>BrowserElement class.</p>
index abfe38db919230e183e29068d2585ddfc56eb9c4..cbd7249d5d328e0f0315b3677ccc275ffd25e09b 100644 (file)
@@ -95,6 +95,24 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.NamedAreaFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationDetailsElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationDetailsSection;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationGeneralElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationGeneralElementController;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationGeneralSection;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.GatheringEventDetailsElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.GatheringEventDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.GatheringEventSection;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.DerivedUnitDetailsElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.DerivedUnitDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.DerivedUnitDetailsSection;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.SpecimenDetailsElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.SpecimenDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.SpecimenDetailsSection;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.SpecimenGeneralSection;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.MinMaxTextSection.UnitType;
@@ -268,372 +286,372 @@ import eu.etaxonomy.taxeditor.ui.selection.TaxonNodeSelectionElement;
  */
 public class CdmFormFactory extends FormToolkit {
 
-       private BoldFontHolder2 boldFontHolder2;
-       private MouseListener selectionMouseHandler;
-       private FocusListener selectionFocusHandler;
+    private BoldFontHolder2 boldFontHolder2;
+    private MouseListener selectionMouseHandler;
+    private FocusListener selectionFocusHandler;
 
     private final Set<SelectionListener> selectionListenerList = new HashSet<SelectionListener>();
 
-       private final List<IPropertyChangeListener> propertyChangeListeners = new ArrayList<IPropertyChangeListener>();
+    private final List<IPropertyChangeListener> propertyChangeListeners = new ArrayList<IPropertyChangeListener>();
 
-       private final int orientation = Window.getDefaultOrientation();
-       private ISelectionProvider selectionProvider;
+    private final int orientation = Window.getDefaultOrientation();
+    private ISelectionProvider selectionProvider;
 
-       /** Constant <code>EMPTY_SELECTION</code> */
-       public static ISelection EMPTY_SELECTION = new ISelection() {
-               @Override
-               public boolean isEmpty() {
-                       return true;
-               }
-       };
+    /** Constant <code>EMPTY_SELECTION</code> */
+    public static ISelection EMPTY_SELECTION = new ISelection() {
+        @Override
+        public boolean isEmpty() {
+            return true;
+        }
+    };
 
-       /**
-        *
-        * @author n.hoffmann
-        * @date Jan 25, 2010
-        *
-        */
-       private class SelectionMouseHandler extends MouseAdapter {
-               @Override
-               public void mouseDown(MouseEvent e) {
-                       notifySelectionListeners(e);
-               }
-       }
+    /**
+     *
+     * @author n.hoffmann
+     * @date Jan 25, 2010
+     *
+     */
+    private class SelectionMouseHandler extends MouseAdapter {
+        @Override
+        public void mouseDown(MouseEvent e) {
+            notifySelectionListeners(e);
+        }
+    }
 
-       /**
-        *
-        * @author n.hoffmann
-        * @date Jan 25, 2010
-        *
-        */
-       private class SelectionFocusHandler extends FocusAdapter {
-               @Override
-               public void focusGained(FocusEvent e) {
-                       notifySelectionListeners(e);
-               }
-       }
+    /**
+     *
+     * @author n.hoffmann
+     * @date Jan 25, 2010
+     *
+     */
+    private class SelectionFocusHandler extends FocusAdapter {
+        @Override
+        public void focusGained(FocusEvent e) {
+            notifySelectionListeners(e);
+        }
+    }
 
-       private void notifySelectionListeners(TypedEvent e) {
-               Event event = new Event();
-               event.widget = e.widget;
-               SelectionEvent selectionEvent = new SelectionEvent(event);
+    private void notifySelectionListeners(TypedEvent e) {
+        Event event = new Event();
+        event.widget = e.widget;
+        SelectionEvent selectionEvent = new SelectionEvent(event);
 
         for (SelectionListener listener : selectionListenerList) {
             listener.widgetSelected(selectionEvent);
-               }
-       }
+        }
+    }
 
-       /**
-        * <p>
-        * Constructor for CdmFormFactory.
-        * </p>
-        *
-        * @param display
-        *            a {@link org.eclipse.swt.widgets.Display} object.
-        * @param selectionProvider
-        *            a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
-        */
-       public CdmFormFactory(Display display, ISelectionProvider selectionProvider) {
-               super(display);
-               this.selectionProvider = selectionProvider;
-               init();
-       }
+    /**
+     * <p>
+     * Constructor for CdmFormFactory.
+     * </p>
+     *
+     * @param display
+     *            a {@link org.eclipse.swt.widgets.Display} object.
+     * @param selectionProvider
+     *            a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
+     */
+    public CdmFormFactory(Display display, ISelectionProvider selectionProvider) {
+        super(display);
+        this.selectionProvider = selectionProvider;
+        init();
+    }
 
-       /**
-        * <p>
-        * Constructor for CdmFormFactory.
-        * </p>
-        *
-        * @param display
-        *            a {@link org.eclipse.swt.widgets.Display} object.
-        */
-       public CdmFormFactory(Display display) {
-               super(display);
-               init();
-       }
+    /**
+     * <p>
+     * Constructor for CdmFormFactory.
+     * </p>
+     *
+     * @param display
+     *            a {@link org.eclipse.swt.widgets.Display} object.
+     */
+    public CdmFormFactory(Display display) {
+        super(display);
+        init();
+    }
 
-       /**
+    /**
         *
         */
-       private void init() {
-               boldFontHolder2 = new BoldFontHolder2();
-               selectionMouseHandler = new SelectionMouseHandler();
-               selectionFocusHandler = new SelectionFocusHandler();
-       }
+    private void init() {
+        boldFontHolder2 = new BoldFontHolder2();
+        selectionMouseHandler = new SelectionMouseHandler();
+        selectionFocusHandler = new SelectionFocusHandler();
+    }
 
-       /**
-        * Creates an instance initialized with the correct selectionProvider
-        *
-        * Make sure to remove the instance when the entityComposite disposes via
-        * destroySelectionArbitrator(..)
-        *
-        * @param entityElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.IEntityElement}
-        *            object.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
-        *         object.
-        */
+    /**
+     * Creates an instance initialized with the correct selectionProvider
+     *
+     * Make sure to remove the instance when the entityComposite disposes via
+     * destroySelectionArbitrator(..)
+     *
+     * @param entityElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.IEntityElement}
+     *            object.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
+     *         object.
+     */
     public SelectionArbitrator createSelectionArbitrator(IEntityElement entityElement) {
         SelectionArbitrator selectionArbitrator = new SelectionArbitrator(entityElement);
-               selectionArbitrator.addSelectionProvider(selectionProvider);
-               selectionProvider.addSelectionChangedListener(selectionArbitrator);
-               addSelectionListener(selectionArbitrator);
-               return selectionArbitrator;
-       }
+        selectionArbitrator.addSelectionProvider(selectionProvider);
+        selectionProvider.addSelectionChangedListener(selectionArbitrator);
+        addSelectionListener(selectionArbitrator);
+        return selectionArbitrator;
+    }
 
-       /**
-        * <p>
-        * destroySelectionArbitrator
-        * </p>
-        *
-        * @param selectionArbitrator
+    /**
+     * <p>
+     * destroySelectionArbitrator
+     * </p>
+     *
+     * @param selectionArbitrator
      *            a
      *            {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
-        *            object.
-        */
+     *            object.
+     */
     public void destroySelectionArbitrator(SelectionArbitrator selectionArbitrator) {
-               removeSelectionListener(selectionArbitrator);
-               if (selectionProvider != null) {
+        removeSelectionListener(selectionArbitrator);
+        if (selectionProvider != null) {
             selectionProvider.removeSelectionChangedListener(selectionArbitrator);
-               } else {
+        } else {
             AbstractUtility.error(this.getClass(),
                     "Tried to destroy a selection listener from this factories listeners but was null", null);
-               }
-       }
-
-       /** {@inheritDoc} */
-       @Override
-       public void adapt(Composite composite) {
-               composite.addMouseListener(selectionMouseHandler);
-               super.adapt(composite);
-       }
+        }
+    }
 
-       /**
-        * <p>
+    /**
+     * <p>
      * Adapts the {@link AbstractCdmFormElement}:<br>
      * - sets the {@link IPropertyChangeListener}s handled by this class
-        * </p>
-        *
-        * @param formElement
-        *            a
-        *            {@link eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement}
-        *            object.
-        */
-       public void adapt(AbstractCdmFormElement formElement) {
-               formElement.setPropertyChangeListeners(propertyChangeListeners);
-       }
+     * </p>
+     *
+     * @param formElement
+     *            a
+     *            {@link eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement}
+     *            object.
+     */
+    public void adapt(AbstractCdmFormElement formElement) {
+        formElement.setPropertyChangeListeners(propertyChangeListeners);
+    }
 
-       /** {@inheritDoc} */
-       @Override
-       public void adapt(Control control, boolean trackFocus, boolean trackKeyboard) {
-               if (trackFocus) {
-                       control.addFocusListener(selectionFocusHandler);
-               }
-               super.adapt(control, trackFocus, trackKeyboard);
-       }
+    /** {@inheritDoc} */
+    @Override
+    public void adapt(Control control, boolean trackFocus, boolean trackKeyboard) {
+        if (trackFocus) {
+            control.addFocusListener(selectionFocusHandler);
+        }
+        super.adapt(control, trackFocus, trackKeyboard);
+    }
 
-       /**
-        * <p>
-        * destroyElement
-        * </p>
-        *
-        * @param formElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        */
-       public void destroyElement(ICdmFormElement formElement) {
-               // return if element was not initialized
-               if (formElement == null) {
-                       return;
-               }
-               // destroy selection arbitrator, if any
-               if (formElement instanceof ISelectableElement) {
+    /** {@inheritDoc} */
+    @Override
+    public void adapt(Composite composite) {
+        composite.addMouseListener(selectionMouseHandler);
+        super.adapt(composite);
+    }
+
+    /**
+     * <p>
+     * destroyElement
+     * </p>
+     *
+     * @param formElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     */
+    public void destroyElement(ICdmFormElement formElement) {
+        // return if element was not initialized
+        if (formElement == null) {
+            return;
+        }
+        // destroy selection arbitrator, if any
+        if (formElement instanceof ISelectableElement) {
             destroySelectionArbitrator(((ISelectableElement) formElement).getSelectionArbitrator());
-               }
-               // remove this element form its parents list of elements
-               // ICdmFormElement parentElement = formElement.getParentElement();
-               // if(parentElement != null){
-               // parentElement.removeElement(formElement);
-               // }
-               // call destroy on child elements recursively
-               for (ICdmFormElement childElement : formElement.getElements()) {
-                       destroyElement(childElement);
-               }
-               // dispose of the controls
-               for (Control control : formElement.getControls()) {
-                       // we added the layoutComposite of the parental element as the
-                       // layout composite to this formElement
-                       // but we do not want to destroy it.
-                       if (control.equals(formElement.getLayoutComposite())) {
-                               continue;
-                       } else {
-                               control.dispose();
-                               control = null;
-                       }
-               }
-       }
+        }
+        // remove this element form its parents list of elements
+        // ICdmFormElement parentElement = formElement.getParentElement();
+        // if(parentElement != null){
+        // parentElement.removeElement(formElement);
+        // }
+        // call destroy on child elements recursively
+        for (ICdmFormElement childElement : formElement.getElements()) {
+            destroyElement(childElement);
+        }
+        // dispose of the controls
+        for (Control control : formElement.getControls()) {
+            // we added the layoutComposite of the parental element as the
+            // layout composite to this formElement
+            // but we do not want to destroy it.
+            if (control.equals(formElement.getLayoutComposite())) {
+                continue;
+            } else {
+                control.dispose();
+                control = null;
+            }
+        }
+    }
 
-       /**
-        * <p>
-        * createEmptyCell
-        * </p>
-        *
-        * @param parent
-        *            a {@link org.eclipse.swt.widgets.Composite} object.
-        * @return a {@link org.eclipse.swt.widgets.Label} object.
-        */
-       public Label createEmptyCell(Composite parent) {
-               return this.createLabel(parent, null);
-       }
+    /**
+     * <p>
+     * createEmptyCell
+     * </p>
+     *
+     * @param parent
+     *            a {@link org.eclipse.swt.widgets.Composite} object.
+     * @return a {@link org.eclipse.swt.widgets.Label} object.
+     */
+    public Label createEmptyCell(Composite parent) {
+        return this.createLabel(parent, null);
+    }
 
-       /**
-        * <p>
-        * createMultilineTextWithLabel
-        * </p>
-        *
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param textHeight
-        *            a int.
-        * @param style
-        *            a int.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createMultilineTextWithLabel
+     * </p>
+     *
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param textHeight
+     *            a int.
+     * @param style
+     *            a int.
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
+     *         object.
+     */
     public TextWithLabelElement createMultilineTextWithLabel(ICdmFormElement parentElement, String labelString,
             int textHeight, int style) {
         TextWithLabelElement element = new TextWithLabelElement(this, parentElement, labelString, "", textHeight, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createMultiLanguageTextElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param multilanguageText
-        *            a {@link java.util.Map} object.
-        * @param textHeight
-        *            a int.
-        * @param style
-        *            a int.
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createMultiLanguageTextElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param multilanguageText
+     *            a {@link java.util.Map} object.
+     * @param textHeight
+     *            a int.
+     * @param style
+     *            a int.
+     * @return a
+     *         {@link eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement}
+     *         object.
+     */
     public MultilanguageTextElement createMultiLanguageTextElement(ICdmFormElement parentElement, String labelString,
             Map<Language, LanguageString> multilanguageText, int textHeight, int style) {
         MultilanguageTextElement element = new MultilanguageTextElement(this, parentElement, labelString,
                 multilanguageText, textHeight, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
     public KeyStatementElement createKeyStatementElement(ICdmFormElement parentElement, String labelString,
-                       KeyStatement keyStatement, int textHeight, int style) {
+            KeyStatement keyStatement, int textHeight, int style) {
         KeyStatementElement element = new KeyStatementElement(this, parentElement, labelString, keyStatement,
                 textHeight, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createTextWithLabelElement
-        * </p>
-        *
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param initialText
-        *            a {@link java.lang.String} object.
-        * @param style
-        *            a int.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createTextWithLabelElement
+     * </p>
+     *
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param initialText
+     *            a {@link java.lang.String} object.
+     * @param style
+     *            a int.
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
+     *         object.
+     */
     public TextWithLabelElement createTextWithLabelElement(ICdmFormElement parentElement, String labelString,
-                       String initialText, int style) {
+            String initialText, int style) {
         TextWithLabelElement element = new TextWithLabelElement(this, parentElement, labelString, initialText, null,
                 style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
     public UriWithLabelElement createUriWithLabelElement(ICdmFormElement parentElement, String labelString,
             URI initialUri, int style) {
         UriWithLabelElement element = new UriWithLabelElement(this, parentElement, labelString, initialUri, null, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * @param element
-        * @param string
-        * @param uri
-        * @param style
-        * @return
-        */
+    /**
+     * @param element
+     * @param string
+     * @param uri
+     * @param style
+     * @return
+     */
     public OpenUrlSelectorElement createOpenUrlSelectorElement(ICdmFormElement parentElement, String labelString,
-                       IOpenUrlEnabled openUrlEnabled, int style) {
+            IOpenUrlEnabled openUrlEnabled, int style) {
         OpenUrlSelectorElement element = new OpenUrlSelectorElement(this, parentElement, labelString, openUrlEnabled,
                 style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        *
-        * @param parentElement
-        * @param labelString
-        * @param conversationEnabled
-        * @param user
-        * @param style
-        * @return
-        */
+    /**
+     *
+     * @param parentElement
+     * @param labelString
+     * @param conversationEnabled
+     * @param user
+     * @param style
+     * @return
+     */
     public EditPasswordElement createEditPasswordElement(ICdmFormElement parentElement, String labelString,
-                       ConversationHolder conversation, User user, int style) {
+            ConversationHolder conversation, User user, int style) {
         EditPasswordElement element = new EditPasswordElement(this, parentElement, labelString, user, conversation);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createIntegerTextWithLabelElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param initialInteger
-        *            a {@link java.lang.Integer} object.
-        * @param style
-        *            a int.
+    /**
+     * <p>
+     * createIntegerTextWithLabelElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param initialInteger
+     *            a {@link java.lang.Integer} object.
+     * @param style
+     *            a int.
      * @return a
      *         {@link eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement}
-        *         object.
-        */
+     *         object.
+     */
        public NumberWithLabelElement createNumberTextWithLabelElement(
                        ICdmFormElement parentElement, String labelString,
                        Number initialNumber, int style) {
@@ -644,141 +662,140 @@ public class CdmFormFactory extends FormToolkit {
                return element;
        }
 
-
-       /**
-        * <p>
-        * createLanguageStringWithLabelElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param languageString
-        *            a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
-        * @param style
-        *            a int.
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement}
-        *         object.
-        */
-    public LanguageStringWithLabelElement createLanguageStringWithLabelElement(ICdmFormElement parentElement,
-            String labelString, LanguageString languageString, int style) {
-        LanguageStringWithLabelElement element = new LanguageStringWithLabelElement(this, parentElement, labelString,
-                languageString, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
-
-       /**
-        * <p>
-        * createLanguageStringWithLabelElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param languageString
-        *            a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
-        * @param height
-        *            a int.
-        * @param style
-        *            a int.
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createLanguageStringWithLabelElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param languageString
+     *            a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
+     * @param style
+     *            a int.
+     * @return a
+     *         {@link eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement}
+     *         object.
+     */
+    public LanguageStringWithLabelElement createLanguageStringWithLabelElement(ICdmFormElement parentElement,
+            String labelString, LanguageString languageString, int style) {
+        LanguageStringWithLabelElement element = new LanguageStringWithLabelElement(this, parentElement, labelString,
+                languageString, style);
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
+
+    /**
+     * <p>
+     * createLanguageStringWithLabelElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param languageString
+     *            a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
+     * @param height
+     *            a int.
+     * @param style
+     *            a int.
+     * @return a
+     *         {@link eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement}
+     *         object.
+     */
     public LanguageStringWithLabelElement createLanguageStringWithLabelElement(ICdmFormElement parentElement,
             String labelString, LanguageString languageString, int height, int style) {
         LanguageStringWithLabelElement element = new LanguageStringWithLabelElement(this, parentElement, labelString,
                 languageString, height, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createTextElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param initialText
-        *            a {@link java.lang.String} object.
-        * @param style
-        *            a int.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createTextElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param initialText
+     *            a {@link java.lang.String} object.
+     * @param style
+     *            a int.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
+     *         object.
+     */
     public TextWithLabelElement createTextElement(ICdmFormElement parentElement, String initialText, int style) {
         TextWithLabelElement element = new TextWithLabelElement(this, parentElement, null, initialText, null, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createKeyValueViewerElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param keyHeading
-        *            a {@link java.lang.String} object.
-        * @param valueHeading
-        *            a {@link java.lang.String} object.
-        * @param map
-        *            a {@link java.util.Map} object.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.KeyValueViewerElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createKeyValueViewerElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param keyHeading
+     *            a {@link java.lang.String} object.
+     * @param valueHeading
+     *            a {@link java.lang.String} object.
+     * @param map
+     *            a {@link java.util.Map} object.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.KeyValueViewerElement}
+     *         object.
+     */
     public KeyValueViewerElement createKeyValueViewerElement(ICdmFormElement parentElement, String keyHeading,
-                       String valueHeading, Map<Object, Object> map) {
+            String valueHeading, Map<Object, Object> map) {
         KeyValueViewerElement element = new KeyValueViewerElement(this, parentElement, keyHeading, valueHeading, map);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createTermComboElement
-        * </p>
-        *
-        * @param termComboType
-        *            a
-        *            {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.TermComboType}
-        *            object.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param selection
-        *            a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase}
-        *            object.
-        * @param style
-        *            a int.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.combo.TermComboElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createTermComboElement
+     * </p>
+     *
+     * @param termComboType
+     *            a
+     *            {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.TermComboType}
+     *            object.
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param selection
+     *            a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase}
+     *            object.
+     * @param style
+     *            a int.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.combo.TermComboElement}
+     *         object.
+     */
 
     public <T extends DefinedTermBase> TermComboElement<T> createTermComboElement(Class<T> termComboType,
             ICdmFormElement parentElement, String labelString, T selection, int style) {
         TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termComboType, labelString,
                 selection, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
        /**
         * <p>
@@ -815,245 +832,245 @@ public class CdmFormFactory extends FormToolkit {
                return element;
        }
 
-       /**
-        * <p>
-        * createEnumComboElement
-        * </p>
-        *
-        * @param enumComboType
-        *            a
-        *            {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EnumComboType}
-        *            object.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param style
-        *            a int.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.term.AbstractEnumComboElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createEnumComboElement
+     * </p>
+     *
+     * @param enumComboType
+     *            a
+     *            {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EnumComboType}
+     *            object.
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param style
+     *            a int.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.term.AbstractEnumComboElement}
+     *         object.
+     */
        public <T extends IEnumTerm<T>> EnumComboElement<T> createEnumComboElement(
                        Class<T> enumComboType, ICdmFormElement parentElement,
                        int style) {
-               EnumComboElement<T> element = new EnumComboElement<T>(this, parentElement, enumComboType, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        EnumComboElement<T> element = new EnumComboElement<T>(this, parentElement, enumComboType, style);
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createBrowserElement
-        * </p>
-        *
-        * @param imageUri
-        *            a {@link java.net.URI} object.
-        * @param style
-        *            a int.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
+    /**
+     * <p>
+     * createBrowserElement
+     * </p>
+     *
+     * @param imageUri
+     *            a {@link java.net.URI} object.
+     * @param style
+     *            a int.
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
      * @return a {@link eu.etaxonomy.taxeditor.ui.element.BrowserElement}
      *         object.
-        */
+     */
     public BrowserElement createBrowserElement(ICdmFormElement parentElement, URI imageUri, int style) {
         BrowserElement element = new BrowserElement(this, parentElement, imageUri, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createImageElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param imageUri
-        *            a {@link java.net.URI} object.
-        * @param style
-        *            a int.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.ImageElement} object.
-        */
+    /**
+     * <p>
+     * createImageElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param imageUri
+     *            a {@link java.net.URI} object.
+     * @param style
+     *            a int.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.ImageElement} object.
+     */
     public ImageElement createImageElement(ICdmFormElement parentElement, URI imageUri, int style) {
         ImageElement element = new ImageElement(this, parentElement, imageUri, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createTextActionElement
-        * </p>
-        *
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param initialText
-        *            a {@link java.lang.String} object.
-        * @param style
-        *            a int.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param buttonLabel
-        *            a {@link java.lang.String} object.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextActionElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createTextActionElement
+     * </p>
+     *
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param initialText
+     *            a {@link java.lang.String} object.
+     * @param style
+     *            a int.
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param buttonLabel
+     *            a {@link java.lang.String} object.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextActionElement}
+     *         object.
+     */
     public TextActionElement createTextActionElement(ICdmFormElement parentElement, String labelString,
-                       String buttonLabel, String initialText, int style) {
+            String buttonLabel, String initialText, int style) {
         TextActionElement element = new TextActionElement(this, parentElement, labelString, buttonLabel, initialText,
                 style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createCheckbox
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param label
-        *            a {@link java.lang.String} object.
-        * @param initialState
-        *            a boolean.
-        * @param style
-        *            a int.
+    /**
+     * <p>
+     * createCheckbox
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param label
+     *            a {@link java.lang.String} object.
+     * @param initialState
+     *            a boolean.
+     * @param style
+     *            a int.
      * @return a {@link eu.etaxonomy.taxeditor.ui.element.CheckboxElement}
      *         object.
-        */
+     */
     public CheckboxElement createCheckbox(ICdmFormElement parentElement, String label, boolean initialState, int style) {
         CheckboxElement element = new CheckboxElement(this, parentElement, label, initialState, style | orientation);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * Creates a section as a part of the form.
-        *
-        * @return the section widget
-        * @param section
+    /**
+     * Creates a section as a part of the form.
+     *
+     * @return the section widget
+     * @param section
      *            a
      *            {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
-        *            object.
-        */
-       public Section adapt(AbstractFormSection section) {
-               section.setMenu(section.getLayoutComposite().getMenu());
-               adapt(section, true, true);
+     *            object.
+     */
+    public Section adapt(AbstractFormSection section) {
+        section.setMenu(section.getLayoutComposite().getMenu());
+        adapt(section, true, true);
 
-               // handle focus and property change events for cdm use
-               section.addFocusListener(selectionFocusHandler);
-               section.setPropertyChangeListeners(propertyChangeListeners);
+        // handle focus and property change events for cdm use
+        section.addFocusListener(selectionFocusHandler);
+        section.setPropertyChangeListeners(propertyChangeListeners);
 
-               if (section.getToggle() != null) {
+        if (section.getToggle() != null) {
             section.getToggle().setHoverDecorationColor(getColors().getColor(IFormColors.TB_TOGGLE_HOVER));
             section.getToggle().setDecorationColor(getColors().getColor(IFormColors.TB_TOGGLE));
-               }
+        }
 
         section.setFont(boldFontHolder2.getBoldFont(section.getLayoutComposite().getFont()));
 
         if ((section.getStyle() & ExpandableComposite.TITLE_BAR) != 0
                 || (section.getStyle() & ExpandableComposite.SHORT_TITLE_BAR) != 0) {
-                       getColors().initializeSectionToolBarColors();
+            getColors().initializeSectionToolBarColors();
             section.setTitleBarBackground(getColors().getColor(IFormColors.TB_BG));
             section.setTitleBarBorderColor(getColors().getColor(IFormColors.TB_BORDER));
-               }
-               // call setTitleBarForeground regardless as it also sets the label color
+        }
+        // call setTitleBarForeground regardless as it also sets the label color
         section.setTitleBarForeground(getColors().getColor(IFormColors.TB_TOGGLE));
-               return section;
-       }
+        return section;
+    }
 
-       private class BoldFontHolder2 {
-               private Font normalFont;
+    private class BoldFontHolder2 {
+        private Font normalFont;
 
-               private Font boldFont;
+        private Font boldFont;
 
-               public BoldFontHolder2() {
-               }
+        public BoldFontHolder2() {
+        }
 
-               public Font getBoldFont(Font font) {
-                       createBoldFont(font);
-                       return boldFont;
-               }
+        public Font getBoldFont(Font font) {
+            createBoldFont(font);
+            return boldFont;
+        }
 
-               private void createBoldFont(Font font) {
-                       if (normalFont == null || !normalFont.equals(font)) {
-                               normalFont = font;
-                               dispose();
-                       }
-                       if (boldFont == null) {
+        private void createBoldFont(Font font) {
+            if (normalFont == null || !normalFont.equals(font)) {
+                normalFont = font;
+                dispose();
+            }
+            if (boldFont == null) {
                 boldFont = FormFonts.getInstance().getBoldFont(getColors().getDisplay(), normalFont);
-                       }
-               }
+            }
+        }
 
-               public void dispose() {
-                       if (boldFont != null) {
+        public void dispose() {
+            if (boldFont != null) {
                 FormFonts.getInstance().markFinished(boldFont, getColors().getDisplay());
-                               boldFont = null;
-                       }
-               }
-       }
+                boldFont = null;
+            }
+        }
+    }
 
-       /**
-        * <p>
-        * createToggleableTextField
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param initialText
-        *            a {@link java.lang.String} object.
-        * @param initialState
-        *            a boolean.
-        * @param style
-        *            a int.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createToggleableTextField
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param initialText
+     *            a {@link java.lang.String} object.
+     * @param initialState
+     *            a boolean.
+     * @param style
+     *            a int.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement}
+     *         object.
+     */
     public ToggleableTextElement createToggleableTextField(ICdmFormElement parentElement, String labelString,
-                       String initialText, boolean initialState, int style) {
+            String initialText, boolean initialState, int style) {
         ToggleableTextElement element = new ToggleableTextElement(this, parentElement, labelString, initialText,
                 initialState, style | orientation);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createTimePeriodElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param timePeriod
-        *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
-        * @param style
-        *            a int.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.TimePeriodElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createTimePeriodElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param timePeriod
+     *            a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
+     * @param style
+     *            a int.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.TimePeriodElement}
+     *         object.
+     */
     public TimePeriodElement createTimePeriodElement(ICdmFormElement parentElement, String labelString,
-                       TimePeriod timePeriod, int style) {
+            TimePeriod timePeriod, int style) {
         TimePeriodElement element = new TimePeriodElement(this, parentElement, labelString, timePeriod, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
        /**
         * <p>
@@ -1089,46 +1106,46 @@ public class CdmFormFactory extends FormToolkit {
                return element;
        }
 
-       /**
-        * <p>
-        * createPointElement
-        * </p>
-        *
-        * @param style
-        *            a int.
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param point
-        *            a {@link eu.etaxonomy.cdm.model.location.Point} object.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.PointElement} object.
-        */
+    /**
+     * <p>
+     * createPointElement
+     * </p>
+     *
+     * @param style
+     *            a int.
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param point
+     *            a {@link eu.etaxonomy.cdm.model.location.Point} object.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.PointElement} object.
+     */
     public PointElement createPointElement(ICdmFormElement parentElement, Point point, int style) {
         PointElement element = new PointElement(this, parentElement, point, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createDateDetailSection
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param style
-        *            a int.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.element.DateDetailSection}
-        *         object.
-        */
+    /**
+     * <p>
+     * createDateDetailSection
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param style
+     *            a int.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.element.DateDetailSection}
+     *         object.
+     */
     public DateDetailSection createDateDetailSection(ICdmFormElement parentElement, int style) {
         DateDetailSection section = new DateDetailSection(this, parentElement, style);
-               parentElement.addElement(section);
-               adapt(section);
-               return section;
-       }
+        parentElement.addElement(section);
+        adapt(section);
+        return section;
+    }
 
        /**
         * <p>
@@ -1150,238 +1167,244 @@ public class CdmFormFactory extends FormToolkit {
                return section;
        }
 
-       /**
-        * <p>
-        * createPartialElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param labelString
-        *            a {@link java.lang.String} object.
-        * @param partial
-        *            a {@link org.joda.time.Partial} object.
-        * @param style
-        *            a int.
+    /**
+     * <p>
+     * createPartialElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param labelString
+     *            a {@link java.lang.String} object.
+     * @param partial
+     *            a {@link org.joda.time.Partial} object.
+     * @param style
+     *            a int.
      * @return a {@link eu.etaxonomy.taxeditor.ui.element.PartialElement}
      *         object.
-        */
+     */
     public PartialElement createPartialElement(ICdmFormElement parentElement, String labelString, Partial partial,
             int style) {
         PartialElement element = new PartialElement(this, parentElement, labelString, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * addSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void addSelectionListener(SelectionListener listener) {
-               selectionListenerList.add(listener);
-       }
+    /**
+     * <p>
+     * addSelectionListener
+     * </p>
+     *
+     * @param listener
+     *            a {@link org.eclipse.swt.events.SelectionListener} object.
+     */
+    public void addSelectionListener(SelectionListener listener) {
+        selectionListenerList.add(listener);
+    }
 
-       /**
-        * <p>
-        * removeSelectionListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        */
-       public void removeSelectionListener(SelectionListener listener) {
-               if (listener == null) {
+    /**
+     * <p>
+     * removeSelectionListener
+     * </p>
+     *
+     * @param listener
+     *            a {@link org.eclipse.swt.events.SelectionListener} object.
+     */
+    public void removeSelectionListener(SelectionListener listener) {
+        if (listener == null) {
             AbstractUtility.error(this.getClass(),
                     "Tried to remove a selection listener from this factories listeners but was null", null);
-               } else {
-                       selectionListenerList.remove(listener);
-               }
-       }
+        } else {
+            selectionListenerList.remove(listener);
+        }
+    }
 
-       /**
-        * <p>
-        * addPropertyChangeListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.jface.util.IPropertyChangeListener}
-        *            object.
-        */
-       public void addPropertyChangeListener(IPropertyChangeListener listener) {
-               if(propertyChangeListeners.contains(listener)){
-                       return;
-               }
-               propertyChangeListeners.add(0, listener);
-       }
+    /**
+     * <p>
+     * addPropertyChangeListener
+     * </p>
+     *
+     * @param listener
+     *            a {@link org.eclipse.jface.util.IPropertyChangeListener}
+     *            object.
+     */
+    public void addPropertyChangeListener(IPropertyChangeListener listener) {
+        if (propertyChangeListeners.contains(listener)) {
+            return;
+        }
+        propertyChangeListeners.add(0, listener);
+    }
 
-       /**
-        * <p>
-        * removePropertyChangeListener
-        * </p>
-        *
-        * @param listener
-        *            a {@link org.eclipse.jface.util.IPropertyChangeListener}
-        *            object.
-        */
-       public void removePropertyChangeListener(IPropertyChangeListener listener) {
-               propertyChangeListeners.remove(listener);
-       }
+    /**
+     * <p>
+     * removePropertyChangeListener
+     * </p>
+     *
+     * @param listener
+     *            a {@link org.eclipse.jface.util.IPropertyChangeListener}
+     *            object.
+     */
+    public void removePropertyChangeListener(IPropertyChangeListener listener) {
+        propertyChangeListeners.remove(listener);
+    }
 
-       /**
-        * <p>
-        * createHorizontalSeparator
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param style
-        *            a int.
-        * @return a {@link org.eclipse.swt.widgets.Label} object.
-        */
+    /**
+     * @return the propertyChangeListeners
+     */
+    public List<IPropertyChangeListener> getPropertyChangeListeners() {
+        return propertyChangeListeners;
+    }
+
+    /**
+     * <p>
+     * createHorizontalSeparator
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param style
+     *            a int.
+     * @return a {@link org.eclipse.swt.widgets.Label} object.
+     */
     public Label createHorizontalSeparator(ICdmFormElement parentElement, int style) {
         Label separator = this.createSeparator(parentElement.getLayoutComposite(), SWT.HORIZONTAL | style);
-               separator.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
-               return separator;
-       }
+        separator.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+        return separator;
+    }
 
-       /**
-        * <p>
-        * createVersionElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param entity
-        *            a {@link eu.etaxonomy.cdm.model.common.VersionableEntity}
-        *            object.
-        * @param style
-        *            a int.
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.section.supplemental.VersionElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createVersionElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param entity
+     *            a {@link eu.etaxonomy.cdm.model.common.VersionableEntity}
+     *            object.
+     * @param style
+     *            a int.
+     * @return a
+     *         {@link eu.etaxonomy.taxeditor.ui.section.supplemental.VersionElement}
+     *         object.
+     */
     public VersionElement createVersionElement(ICdmFormElement parentElement, VersionableEntity entity, int style) {
         VersionElement element = new VersionElement(this, parentElement, entity, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * @param cdmBaseSection
-        * @param object
-        * @param style
-        * @return
-        */
+    /**
+     * @param cdmBaseSection
+     * @param object
+     * @param style
+     * @return
+     */
     public CdmBaseElement createCdmBaseElement(ICdmFormElement parentElement, CdmBase entity, int style) {
         CdmBaseElement element = new CdmBaseElement(this, parentElement, entity, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
-
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createVersionSection
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param style
-        *            a int.
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.section.supplemental.VersionSection}
-        *         object.
-        */
+    /**
+     * <p>
+     * createVersionSection
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param style
+     *            a int.
+     * @return a
+     *         {@link eu.etaxonomy.taxeditor.ui.section.supplemental.VersionSection}
+     *         object.
+     */
     public VersionSection createVersionSection(ICdmFormElement parentElement, int style) {
-               VersionSection section = new VersionSection(this, parentElement, style);
-               parentElement.addElement(section);
-               adapt(section);
-               return section;
-       }
+        VersionSection section = new VersionSection(this, parentElement, style);
+        parentElement.addElement(section);
+        adapt(section);
+        return section;
+    }
 
-       /**
-        * @param parent
-        * @param i
-        * @return
-        */
-       public CdmBaseSection createCdmBaseSection(ICdmFormElement parentElement, int style) {
-               CdmBaseSection section = new CdmBaseSection(this, parentElement, style);
-               parentElement.addElement(section);
-               adapt(section);
-               return section;
-       }
+    /**
+     * @param parent
+     * @param i
+     * @return
+     */
+    public CdmBaseSection createCdmBaseSection(ICdmFormElement parentElement, int style) {
+        CdmBaseSection section = new CdmBaseSection(this, parentElement, style);
+        parentElement.addElement(section);
+        adapt(section);
+        return section;
+    }
 
-       /**
-        * <p>
-        * createEmptyElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @return a {@link eu.etaxonomy.taxeditor.ui.section.EmptyElement} object.
-        */
-       public EmptyElement createEmptyElement(ICdmFormElement parentElement) {
+    /**
+     * <p>
+     * createEmptyElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @return a {@link eu.etaxonomy.taxeditor.ui.section.EmptyElement} object.
+     */
+    public EmptyElement createEmptyElement(ICdmFormElement parentElement) {
         EmptyElement element = new EmptyElement(this, parentElement, null, SWT.NULL);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /**
-        * <p>
-        * createHeadlineSection
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.section.supplemental.HeadlineSection}
-        *         object.
-        */
-       public HeadlineSection createHeadlineSection(ICdmFormElement parentElement) {
+    /**
+     * <p>
+     * createHeadlineSection
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @return a
+     *         {@link eu.etaxonomy.taxeditor.ui.section.supplemental.HeadlineSection}
+     *         object.
+     */
+    public HeadlineSection createHeadlineSection(ICdmFormElement parentElement) {
         HeadlineSection section = new HeadlineSection(this, parentElement, SWT.NULL);
-               parentElement.addElement(section);
-               adapt(section);
-               return section;
-       }
+        parentElement.addElement(section);
+        adapt(section);
+        return section;
+    }
 
-       /**
-        * <p>
-        * createParsingMessageElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param parserProblem
-        *            a {@link eu.etaxonomy.cdm.strategy.parser.ParserProblem}
-        *            object.
-        * @param style
-        *            a int.
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.section.taxon.ParsingMessageElement}
-        *         object.
-        */
+    /**
+     * <p>
+     * createParsingMessageElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param parserProblem
+     *            a {@link eu.etaxonomy.cdm.strategy.parser.ParserProblem}
+     *            object.
+     * @param style
+     *            a int.
+     * @return a
+     *         {@link eu.etaxonomy.taxeditor.ui.section.taxon.ParsingMessageElement}
+     *         object.
+     */
     public ParsingMessageElement createParsingMessageElement(ICdmFormElement parentElement,
             ParserProblem parserProblem, int style) {
         ParsingMessageElement element = new ParsingMessageElement(this, parentElement, parserProblem, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
     public AbstractFormSection createDefinedTermDetailSection(Class definedTermClass, ConversationHolder conversation,
             ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
@@ -1389,11 +1412,11 @@ public class CdmFormFactory extends FormToolkit {
         AbstractFormSection section = new DefinedTermDetailSection(this, definedTermClass, conversation, parentElement,
                 selectionProvider, style);
 
-               parentElement.addElement(section);
-               adapt(section);
-               return section;
+        parentElement.addElement(section);
+        adapt(section);
+        return section;
 
-       }
+    }
 
     /**
      * @param definedTermClass
@@ -1618,6 +1641,11 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
+    public GatheringEventDetailSection createGatheringSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+        GatheringEventDetailSection section = new GatheringEventDetailSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
 
     public NamedAreaDetailSection createNamedAreaDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
         NamedAreaDetailSection section = new NamedAreaDetailSection(this, conversation, parentElement, selectionProvider, style);
@@ -1631,28 +1659,10 @@ public class CdmFormFactory extends FormToolkit {
         return section;
     }
 
-    public DerivedUnitGeneralDetailSection createFOSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
-        DerivedUnitGeneralDetailSection section = new DerivedUnitGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
-        addAndAdaptSection(parentElement, section);
-        return section;
-               }
-
-    public GatheringEventDetailSection createGatheringSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
-        GatheringEventDetailSection section = new GatheringEventDetailSection(this, conversation, parentElement, selectionProvider, style);
-        addAndAdaptSection(parentElement, section);
-        return section;
-    }
-
-    public FieldUnitDetailSection createFODetailsSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
-        FieldUnitDetailSection section = new FieldUnitDetailSection(this, conversation, parentElement, selectionProvider, style);
-        addAndAdaptSection(parentElement, section);
-        return section;
-               }
-
     private void addAndAdaptSection(ICdmFormElement parentElement, AbstractFormSection<?> section) {
-               parentElement.addElement(section);
-               adapt(section);
-       }
+        parentElement.addElement(section);
+        adapt(section);
+    }
 
     //--------DetailElements------------
 
@@ -1843,34 +1853,36 @@ public class CdmFormFactory extends FormToolkit {
         return element;
     }
 
+
     public GatheringEventDetailElement createGatheringEventDetailElement(ICdmFormElement parentElement) {
         GatheringEventDetailElement element = new GatheringEventDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
         return element;
-               }
+    }
 
     public FieldUnitDetailElement createFieldUnitDetailElement(ICdmFormElement parentElement) {
         FieldUnitDetailElement element = new FieldUnitDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
         return element;
-               }
+    }
+
 
     public DerivedUnitBaseDetailElement createDerivedUnitBaseDetailElement(ICdmFormElement parentElement) {
         DerivedUnitBaseDetailElement element = new DerivedUnitBaseDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
-               return element;
-       }
+        return element;
+    }
 
     public DeterminationDetailElement createDeterminationDetailElement(ICdmFormElement parentElement) {
         DeterminationDetailElement element = new DeterminationDetailElement(this, parentElement);
         addAndAdaptElement(parentElement, element);
         return element;
-       }
+    }
 
-       /**
-        * @param parentElement
+    /**
+     * @param parentElement
      * @param element
-        */
+     */
     private void addAndAdaptElement(ICdmFormElement parentElement, AbstractCdmDetailElement<?> element) {
         adapt(element);
         parentElement.addElement(element);
@@ -2067,71 +2079,71 @@ public class CdmFormFactory extends FormToolkit {
         GroupsByUserDetailSection section = new GroupsByUserDetailSection(this, conversation, parentElement, style);
         addAndAdaptSection(parentElement, section);
         return section;
-               }
+    }
 
     public TaxonomicScopeSection createTaxonomicScopeSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
         TaxonomicScopeSection section = new TaxonomicScopeSection(this, conversation, parentElement, style);
         addAndAdaptSection(parentElement, section);
-               return section;
-       }
+        return section;
+    }
 
-       /**
-        * <p>
-        * createEntityCollectionElement
-        * </p>
-        *
-        * @param removeListener
-        *            a {@link org.eclipse.swt.events.SelectionListener} object.
-        * @param style
-        *            a int.
-        * @param parentElement
+    /**
+     * <p>
+     * createEntityCollectionElement
+     * </p>
+     *
+     * @param removeListener
+     *            a {@link org.eclipse.swt.events.SelectionListener} object.
+     * @param style
+     *            a int.
+     * @param parentElement
      *            a
      *            {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
-        *            object.
-        * @param versionableEntity
-        *            a {@link eu.etaxonomy.cdm.model.common.IVersionableEntity}
-        *            object.
-        * @param backgroundColor
-        *            a {@link org.eclipse.swt.graphics.Color} object.
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement}
-        *         object.
-        */
+     *            object.
+     * @param versionableEntity
+     *            a {@link eu.etaxonomy.cdm.model.common.IVersionableEntity}
+     *            object.
+     * @param backgroundColor
+     *            a {@link org.eclipse.swt.graphics.Color} object.
+     * @return a
+     *         {@link eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement}
+     *         object.
+     */
     public AbstractEntityCollectionElement createEntityCollectionElement(AbstractFormSection parentElement,
             Object versionableEntity, SelectionListener removeListener, Color backgroundColor, int style) {
-               AbstractEntityCollectionElement element = null;
+        AbstractEntityCollectionElement element = null;
 
-               Object entity = HibernateProxyHelper.deproxy(versionableEntity);
+        Object entity = HibernateProxyHelper.deproxy(versionableEntity);
 
-               if (entity instanceof Annotation) {
+        if (entity instanceof Annotation) {
             element = new AnnotationElement(this, parentElement, (Annotation) entity, removeListener, style);
-               } else if (entity instanceof Person) {
+        } else if (entity instanceof Person) {
             element = new TeamMemberElement(this, parentElement, (Person) entity, removeListener, style);
-               } else if (entity instanceof Credit) {
+        } else if (entity instanceof Credit) {
             element = new CreditElement(this, parentElement, (Credit) entity, removeListener, style);
-               } else if (entity instanceof Extension) {
+        } else if (entity instanceof Extension) {
             element = new ExtensionElement(this, parentElement, (Extension) entity, removeListener, style);
-               } else if (entity instanceof Marker) {
+        } else if (entity instanceof Marker) {
             element = new MarkerElement(this, parentElement, (Marker) entity, removeListener, style);
-               } else if (entity instanceof Media) {
+        } else if (entity instanceof Media) {
             element = new MediaElement(this, parentElement, (Media) entity, removeListener, style);
-               } else if (entity instanceof MediaRepresentation) {
+        } else if (entity instanceof MediaRepresentation) {
             element = new MediaRepresentationElement(this, parentElement, (MediaRepresentation) entity, removeListener,
                     style);
-               } else if (entity instanceof ImageFile) {
+        } else if (entity instanceof ImageFile) {
             element = new ImageFileElement(this, parentElement, (ImageFile) entity, removeListener, style);
-               } else if (entity instanceof MediaRepresentationPart){
+        } else if (entity instanceof MediaRepresentationPart) {
             element = new MediaRepresentationPartElement(this, parentElement, (MediaRepresentationPart) entity,
                     removeListener, style);
-               } else if (entity instanceof NomenclaturalStatus) {
+        } else if (entity instanceof NomenclaturalStatus) {
             element = new NomenclaturalStatusElement(this, parentElement, (NomenclaturalStatus) entity, removeListener,
                     style);
-               } else if (entity instanceof Rights) {
+        } else if (entity instanceof Rights) {
             element = new RightsElement(this, parentElement, (Rights) entity, removeListener, style);
         } else if (entity instanceof DescriptionElementSource) {
             element = new DescriptionElementSourceElement(this, parentElement, (DescriptionElementSource) entity,
-                                       removeListener, style);
-               } else if (entity instanceof IdentifiableSource) {
+                    removeListener, style);
+        } else if (entity instanceof IdentifiableSource) {
             element = new IdentifiableSourceElement(this, parentElement, (IdentifiableSource) entity, removeListener,
                     style);
                } else if (entity instanceof DefinedTerm) {
@@ -2156,24 +2168,24 @@ public class CdmFormFactory extends FormToolkit {
                                        break;
 
                        }
-               } else if (entity instanceof Reference) {
+        } else if (entity instanceof Reference) {
             element = new DescriptionSourceElement(this, parentElement, (Reference) entity, removeListener, style);
-               } else if (entity instanceof NameTypeDesignation) {
+        } else if (entity instanceof NameTypeDesignation) {
             element = new NameTypeDesignationElement(this, parentElement, (NameTypeDesignation) entity, removeListener,
                     style);
-               } else if (entity instanceof NameRelationship) {
+        } else if (entity instanceof NameRelationship) {
             element = new NameRelationshipDetailElement(this, parentElement, (NameRelationship) entity, removeListener,
                     style);
-               } else if (entity instanceof SpecimenTypeDesignation) {
+        } else if (entity instanceof SpecimenTypeDesignation) {
             element = new SpecimenTypeDesignationElement(this, parentElement, (SpecimenTypeDesignation) entity,
                     removeListener, style);
-               } else if (entity instanceof StateData) {
+        } else if (entity instanceof StateData) {
             element = new StateDataElement(this, parentElement, (StateData) entity, removeListener, style);
-               } else if (entity instanceof StatisticalMeasurementValue) {
+        } else if (entity instanceof StatisticalMeasurementValue) {
             element = new StatisticalMeasurementValueElement(this, parentElement, (StatisticalMeasurementValue) entity,
-                                       removeListener, style);
-               } else if (entity instanceof DerivedUnit) {
-                       switch(((DerivedUnit)entity).getRecordBasis()) {
+                    removeListener, style);
+        } else if (entity instanceof DerivedUnit) {
+               switch(((DerivedUnit)entity).getRecordBasis()) {
                                case LivingSpecimen:
                                case PreservedSpecimen:
                                case OtherSpecimen:
@@ -2191,202 +2203,315 @@ public class CdmFormFactory extends FormToolkit {
                                                                style);
                        }
 
-               } else if (entity instanceof NamedArea) {
+        } else if (entity instanceof NamedArea) {
             element = new NamedAreaDetailElement(this, parentElement, (NamedArea) entity, removeListener, style);
-               } else if (entity instanceof DeterminationEvent) {
-            element = new DeterminationEventDetailElement(this, parentElement, (DeterminationEvent) entity,
-                    removeListener, style);
-               } else if (entity instanceof User) {
+        } else if (entity instanceof DeterminationEvent) {
+            element = new DeterminationEventDetailElement(this, parentElement, (DeterminationEvent) entity, removeListener, style);
+        } else if (entity instanceof User) {
             element = new MemberDetailElement(this, parentElement, (User) entity, removeListener, style);
-               } else if (entity instanceof GrantedAuthority) {
+        } else if (entity instanceof GrantedAuthority) {
             element = new GrantedAuthorityCollectionElement(this, parentElement, (GrantedAuthorityImpl) entity,
                     removeListener, style);
-               } else if (entity instanceof Group) {
+        } else if (entity instanceof Group) {
             element = new GroupsByUserDetailElement(this, parentElement, (Group) entity, removeListener, style);
-               } else if (entity instanceof Taxon) {
+        } else if (entity instanceof Taxon) {
             element = new TaxonDetailElement(this, parentElement, (Taxon) entity, removeListener, style);
-               } else if (entity instanceof DescriptionElementBase) {
-                       // this is the special case for protologs, maybe we can do this
-                       // differently when API improves
-                       DescriptionElementBase descriptionElement = (DescriptionElementBase) entity;
-                       if (descriptionElement.getFeature().equals(Feature.PROTOLOGUE())) {
+        } else if (entity instanceof DescriptionElementBase) {
+            // this is the special case for protologs, maybe we can do this
+            // differently when API improves
+            DescriptionElementBase descriptionElement = (DescriptionElementBase) entity;
+            if (descriptionElement.getFeature().equals(Feature.PROTOLOGUE())) {
                 element = new ProtologueElement(this, parentElement, descriptionElement, removeListener, style);
-                       }
-               }
+            }
+        }
 
-               if (element == null) {
+        if (element == null) {
             AbstractUtility.errorDialog("No element for entity", this,
                     "Could not generate element for entity. Looks like the case is not handled already. Check implementation. Entity: "
-                                                                       + entity, null);
-
-               }
+                            + entity, null);
+        }
 
         else if (backgroundColor != null && !backgroundColor.isDisposed()) {
-                       element.setPersistentBackground(backgroundColor);
-               }
+            element.setPersistentBackground(backgroundColor);
+            adapt(element);
+            parentElement.addElement(element);
+        }
 
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        return element;
+    }
 
-       /**
-        * <p>
-        * Creates a selection element for the given type T.
-        * </p>
-        * <p>
-        *      <strong>Selection elements not handled by this method:</strong>
-        *      <ul>
+    public void createNamedAreaFieldController(AbstractFormSection parentElement, NamedArea namedArea, SelectionListener removeListener){
+//        Object entity = HibernateProxyHelper.deproxy(versionableEntity); TODO deproxy necessary??
+        NamedAreaFieldController element = new NamedAreaFieldController(this, parentElement, namedArea, removeListener, SWT.NONE);
+        adapt(element);
+        parentElement.addElement(element);
+    }
+
+    /**
+     * <p>
+     * Creates a selection element for the given type T.
+     * </p>
+     * <p>
+     * <strong>Selection elements not handled by this method:</strong>
+     * <ul>
      * <li>{@link TaxonNodeSelectionElement} see
      * {@link #createTaxonNodeSelectionElement(ConversationHolder, ICdmFormElement, String, TaxonNode, int, int)}
      * </li>
      * <li>{@link NomenclaturalAuthorTeamSelectionElement} see
      * {@link #createNomenclaturalAuthorTeamSelectionElement(ConversationHolder, ICdmFormElement, String, Team, int, int)}
      * </li>
-        *      </ul>
-        * </p>
-        *
-        * @param clazz
+     * </ul>
+     * </p>
+     *
+     * @param clazz
      *            a {@link Class} object of the type that you want the selection
      *            element to handle
-        * @param parentElement
+     * @param parentElement
      *            a {@link ICdmFormElement} object.
-        * @param labelString
-        *            a {@link String} object.
-        * @param selectionType
-        * @param selection
-        *            a {@link ICdmBase} object.
-        * @param style
-        *            a int.
-        * @param conversation
-        *            a {@link ConversationHolder} object.
+     * @param labelString
+     *            a {@link String} object.
+     * @param selectionType
+     * @param selection
+     *            a {@link ICdmBase} object.
+     * @param style
+     *            a int.
+     * @param conversation
+     *            a {@link ConversationHolder} object.
      * @return a {@link EntitySelectionElement} object.
-        */
+     */
     public <T extends ICdmBase> EntitySelectionElement<T> createSelectionElement(Class<T> clazz,
             ConversationHolder conversation, ICdmFormElement parentElement, String labelString, T selection, int mode,
             int style) {
         EntitySelectionElement<T> element = new EntitySelectionElement<T>(this, conversation, parentElement, clazz,
                 labelString, selection, mode, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
     public TaxonNodeSelectionElement createTaxonNodeSelectionElement(ConversationHolder conversation,
             ICdmFormElement parentElement, String labelString, TaxonNode selection, int mode, int style) {
         TaxonNodeSelectionElement element = new TaxonNodeSelectionElement(this, conversation, parentElement,
                 labelString, selection, mode, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       public NomenclaturalAuthorTeamSelectionElement createNomenclaturalAuthorTeamSelectionElement(
+    public NomenclaturalAuthorTeamSelectionElement createNomenclaturalAuthorTeamSelectionElement(
             ConversationHolder conversation, ICdmFormElement parentElement, String labelString, Team selection,
             int mode, int style) {
         NomenclaturalAuthorTeamSelectionElement element = new NomenclaturalAuthorTeamSelectionElement(this,
                 conversation, parentElement, labelString, selection, mode, style);
-               adapt(element);
-               parentElement.addElement(element);
-               return element;
-       }
-
+        adapt(element);
+        parentElement.addElement(element);
+        return element;
+    }
 
-       /** {@inheritDoc} */
-       public LabelElement createLabel(ICdmFormElement parentElement, String text) {
-               LabelElement labelElement = new LabelElement(this, parentElement, text);
-               adapt(labelElement);
-               parentElement.addElement(labelElement);
-               return labelElement;
-       }
+    /** {@inheritDoc} */
+    public LabelElement createLabel(ICdmFormElement parentElement, String text) {
+        LabelElement labelElement = new LabelElement(this, parentElement, text);
+        adapt(labelElement);
+        parentElement.addElement(labelElement);
+        return labelElement;
+    }
 
-       /**
-        * <p>
-        * Getter for the field <code>selectionProvider</code>.
-        * </p>
-        *
-        * @return a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
-        */
-       public ISelectionProvider getSelectionProvider() {
-               return selectionProvider;
-       }
+    /**
+     * <p>
+     * Getter for the field <code>selectionProvider</code>.
+     * </p>
+     *
+     * @return a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
+     */
+    public ISelectionProvider getSelectionProvider() {
+        return selectionProvider;
+    }
 
-       /**
-        * <p>
-        * createDetailedDescriptionDetailElement
-        * </p>
-        *
-        * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
-        *            object.
-        * @param entity
-        *            a
-        *            {@link eu.etaxonomy.cdm.model.description.DescriptionElementBase}
-        *            object.
-        * @param style
-        *            a int.
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.section.description.detail.AbstractDetailedDescriptionDetailElement}
-        *         object.
-        */
-       public AbstractDetailedDescriptionDetailElement createDetailedDescriptionDetailElement(
+    /**
+     * <p>
+     * createDetailedDescriptionDetailElement
+     * </p>
+     *
+     * @param parentElement
+     *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+     *            object.
+     * @param entity
+     *            a
+     *            {@link eu.etaxonomy.cdm.model.description.DescriptionElementBase}
+     *            object.
+     * @param style
+     *            a int.
+     * @return a
+     *         {@link eu.etaxonomy.taxeditor.ui.section.description.detail.AbstractDetailedDescriptionDetailElement}
+     *         object.
+     */
+    public AbstractDetailedDescriptionDetailElement createDetailedDescriptionDetailElement(
             ICdmFormElement parentElement, DescriptionElementBase entity, int style) {
-               AbstractDetailedDescriptionDetailElement detailedDescriptionElement = null;
+        AbstractDetailedDescriptionDetailElement detailedDescriptionElement = null;
 
-               if (entity instanceof CategoricalData) {
+        if (entity instanceof CategoricalData) {
             detailedDescriptionElement = new CategoricalDataDetailElement(this, parentElement,
                     (CategoricalData) entity, style);
-               } else if (entity instanceof CommonTaxonName) {
+        } else if (entity instanceof CommonTaxonName) {
             detailedDescriptionElement = new CommonNameDetailElement(this, parentElement, (CommonTaxonName) entity,
                     style);
-               } else if (entity instanceof Distribution) {
+        } else if (entity instanceof Distribution) {
             detailedDescriptionElement = new DistributionDetailElement(this, parentElement, (Distribution) entity,
                     style);
-               } else if (entity instanceof IndividualsAssociation) {
+        } else if (entity instanceof IndividualsAssociation) {
             detailedDescriptionElement = new IndividualsAssociationDetailElement(this, parentElement,
                     (IndividualsAssociation) entity, style);
-               } else if (entity instanceof QuantitativeData) {
+        } else if (entity instanceof QuantitativeData) {
             detailedDescriptionElement = new QuantitativeDataDetailElement(this, parentElement,
                     (QuantitativeData) entity, style);
-               } else if (entity instanceof TaxonInteraction) {
+        } else if (entity instanceof TaxonInteraction) {
             detailedDescriptionElement = new TaxonInteractionDetailElement(this, parentElement,
                     (TaxonInteraction) entity, style);
-               } else if (entity instanceof TextData) {
+        } else if (entity instanceof TextData) {
             detailedDescriptionElement = new TextDataDetailElement(this, parentElement, (TextData) entity, style);
-               } else {
+        } else {
             throw new IllegalStateException("There is no interface for the given description element");
-               }
-               adapt(detailedDescriptionElement);
-               parentElement.addElement(detailedDescriptionElement);
-               return detailedDescriptionElement;
+        }
+        adapt(detailedDescriptionElement);
+        parentElement.addElement(detailedDescriptionElement);
+        return detailedDescriptionElement;
 
-       }
+    }
 
-       /**
-        * Creates a styled text as a part of the form.
-        *
-        * @param parent
-        *            the text parent
-        * @param value
-        *            the text initial value
-        * @param style
-        *            the text style
-        * @return the text widget
-        */
-       public StyledText createStyledText(Composite parent, String value, int style) {
+    /**
+     * Creates a styled text as a part of the form.
+     *
+     * @param parent
+     *            the text parent
+     * @param value
+     *            the text initial value
+     * @param style
+     *            the text style
+     * @return the text widget
+     */
+    public StyledText createStyledText(Composite parent, String value, int style) {
         StyledText text = new StyledText(parent, getBorderStyle() | style | getOrientation());
         if (value != null) {
-                       text.setText(value);
+            text.setText(value);
         }
-               text.setForeground(getColors().getForeground());
-               text.setBackground(getColors().getBackground());
-               // text.addFocusListener(visibilityHandler);
-               return text;
-       }
+        text.setForeground(getColors().getForeground());
+        text.setBackground(getColors().getBackground());
+        // text.addFocusListener(visibilityHandler);
+        return text;
+    }
+
+
+
+    /**
+     * @param conversationHolder
+     * @param parent
+     * @param detailsViewer
+     * @param i
+     * @return
+     */
+    public FieldObservationGeneralSection createFieldObservationGeneralSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+        FieldObservationGeneralSection section = new FieldObservationGeneralSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+    /**
+     * @param conversationHolder
+     * @param parent
+     * @param detailsViewer
+     * @param i
+     * @return
+     */
+    public GatheringEventSection createGatheringEventSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+        GatheringEventSection section = new GatheringEventSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+    /**
+     * @param conversationHolder
+     * @param parent
+     * @param detailsViewer
+     * @param i
+     * @return
+     */
+    public FieldObservationDetailsSection createFieldObservationDetailsSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+        FieldObservationDetailsSection section = new FieldObservationDetailsSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
+    public SpecimenGeneralSection createSpecimenSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+        SpecimenGeneralSection section = new SpecimenGeneralSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
+    public SpecimenDetailsSection createSpecimenDetailsSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+        SpecimenDetailsSection section = new SpecimenDetailsSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
+    public DerivedUnitDetailsSection createDerivedUnitDetailsSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+        DerivedUnitDetailsSection section = new DerivedUnitDetailsSection(this, conversation, parentElement, selectionProvider, style);
+        addAndAdaptSection(parentElement, section);
+        return section;
+    }
+
+    public FieldObservationGeneralElementController createSpecimenGeneralElementController(ICdmFormElement parentElement){
+        return createFieldObservationGeneralElementController_internal(parentElement, true, false);
+    }
+
+    public SpecimenDetailsElementController createSpecimenDetailsElementController(ICdmFormElement parentElement){
+        SpecimenDetailsElement element = new SpecimenDetailsElement(parentElement.getLayoutComposite(), SWT.NONE);
+        element.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+        SpecimenDetailsElementController controller = new SpecimenDetailsElementController(element, this, parentElement);
+        addAndAdaptElement(parentElement, controller);
+        return controller;
+    }
+
+    public DerivedUnitDetailsElementController createDerivedUnitDetailsElementController(ICdmFormElement parentElement){
+        DerivedUnitDetailsElement element = new DerivedUnitDetailsElement(parentElement.getLayoutComposite(), SWT.NONE);
+        element.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+        DerivedUnitDetailsElementController controller = new DerivedUnitDetailsElementController(element, this, parentElement);
+        addAndAdaptElement(parentElement, controller);
+        return controller;
+    }
+
+    public FieldObservationGeneralElementController createSpecimenGeneralElementControllerWizard(ICdmFormElement parentElement){
+        return createFieldObservationGeneralElementController_internal(parentElement, true, true);
+    }
 
+    public FieldObservationGeneralElementController createFieldObservationGeneralElementControllerWizard(ICdmFormElement parentElement){
+        return createFieldObservationGeneralElementController_internal(parentElement, false, true);
+    }
 
+    public FieldObservationGeneralElementController createFieldObservationGeneralElementController(ICdmFormElement parentElement){
+        return createFieldObservationGeneralElementController_internal(parentElement, false, false);
+    }
 
+    private FieldObservationGeneralElementController createFieldObservationGeneralElementController_internal(ICdmFormElement parentElement, boolean isSpecimen, boolean isWizard){
+        FieldObservationGeneralElement element = new FieldObservationGeneralElement(parentElement.getLayoutComposite(), SWT.NONE);
+        element.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+        FieldObservationGeneralElementController controller = new FieldObservationGeneralElementController(element, this, parentElement, isSpecimen, isWizard);
+        addAndAdaptElement(parentElement, controller);
+        return controller;
+    }
 
+    public GatheringEventDetailsElementController createGatheringEventDetailsElementController(ICdmFormElement parentElement) {
+        GatheringEventDetailsElement element = new GatheringEventDetailsElement(parentElement.getLayoutComposite(), SWT.NONE);
+        element.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+        GatheringEventDetailsElementController controller = new GatheringEventDetailsElementController(element, this, parentElement);
+        adapt(controller);
+        parentElement.addElement(controller);
+        return controller;
+    }
 
+    public FieldObservationDetailsElementController createFieldObservationDetailsElementController(ICdmFormElement parentElement) {
+        FieldObservationDetailsElement element = new FieldObservationDetailsElement(parentElement.getLayoutComposite(), SWT.NONE);
+        element.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+        FieldObservationDetailsElementController controller = new FieldObservationDetailsElementController(element, this, parentElement);
+        addAndAdaptElement(parentElement, controller);
+        return controller;
+    }
 
 }
index 7863f78fd8731fff63782052d05289decf1df4d2..fdb7b36d4b92e5896829a6c311fa2b3f6467eb81 100644 (file)
@@ -18,6 +18,7 @@ import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>CheckboxElement class.</p>
index 992c3127d2bce41a5e5ac1333000dd3c5fad827c..01dba2a9c5f08f09fc98097eae86910fea91ccd3 100644 (file)
@@ -17,6 +17,7 @@ import org.joda.time.Partial;
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.common.TimePeriod;
 import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>
index 5e1651d2918cfb0acee23b0f50ee051dd1d65fb4..7e8e97badb2e6febdc0b5ab473fa6edb30d82292 100644 (file)
@@ -16,6 +16,7 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.forms.widgets.Section;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>
index 212b18d3f7a28b25069365a372a16a8dfa9580d9..f5a2eef889b036dd511eb5e74416f51f2e105824 100644 (file)
@@ -10,6 +10,7 @@
 
 package eu.etaxonomy.taxeditor.ui.element;
 
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 
 /**
index 92944ecead1facc71c809249b2e2664c1783b9af..6cd7677b4c1c944e18d32ca260baf149b03f0b8f 100644 (file)
@@ -33,6 +33,7 @@ import org.eclipse.ui.forms.widgets.TableWrapData;
 
 import eu.etaxonomy.cdm.common.UriUtils;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>ImageElement class.</p>
index f6f088ccd0c6fee0e7adfdfb72fbad64913d836b..44aa533d5169602936be9cc0d69f84a4d0169b03 100644 (file)
@@ -13,6 +13,7 @@ package eu.etaxonomy.taxeditor.ui.element;
 import org.eclipse.jface.util.PropertyChangeEvent;
 
 import eu.etaxonomy.cdm.model.description.KeyStatement;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * @author n.hoffmann
index ec76a288cd8171a2914dba23f3e40b6cc1e0e6fe..2fcfbdbed351fcfa8935d3488f318b527df358c6 100644 (file)
@@ -16,6 +16,8 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+
 
 /**
  * <p>KeyValueViewerElement class.</p>
index 1405ece32e5b942c09559304a4d409ce29416916..7f8b769e162c9ef40d39177802b6895cbd0d17b3 100644 (file)
@@ -14,6 +14,7 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>LabelElement class.</p>
index a9f326ccbe293a18da1f2f2b12cc70a5a8785c53..49328ded8e377a32245a42d7ac23f4b041bb4f35 100644 (file)
@@ -14,6 +14,7 @@ import org.eclipse.swt.events.ModifyEvent;
 
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>LanguageStringWithLabelElement class.</p>
index 7f4582fde58791d6aabe82160252edd647a5fc0f..723b795c49dd6cc0d27c27ac898d29f8cfbe520a 100644 (file)
@@ -13,6 +13,7 @@ package eu.etaxonomy.taxeditor.ui.element;
 import org.eclipse.jface.util.PropertyChangeEvent;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>
@@ -72,7 +73,6 @@ public class MinMaxTextSection extends AbstractFormSection<DerivedUnitFacade> {
                text_freeText = formFactory.createTextWithLabelElement(this,
                                "Freetext : ", getFreetext(), style);
 
-
                formFactory.addPropertyChangeListener(this);
        }
 
index b7ab20c35476cd8b3a141456596b19a3df32c544..2d300601254d5d2ea3d8c23042ba73ffae1c6cfa 100644 (file)
@@ -32,6 +32,7 @@ import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.translation.TranslationWizard;
 
index b8c8ed1d0e3c8cffd98eb8eab1dc6510bc9d4b18..4a9e649cb58a61c2a5aba2dbd7ae0f46e36d34ef 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -15,6 +15,7 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.widgets.Display;
 
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>NumberWithLabelElement class.</p>
@@ -27,7 +28,7 @@ public class NumberWithLabelElement extends TextWithLabelElement {
 
        private Float start;
        private Float end;
-       
+
        private NumberFormatException exception;
 
        /**
@@ -45,8 +46,8 @@ public class NumberWithLabelElement extends TextWithLabelElement {
                super(toolkit, parentElement, labelString, null, null, style);
                setNumber(initialNumber);
        }
-       
-       
+
+
        /**
         * <p>setNumber</p>
         *
@@ -55,7 +56,7 @@ public class NumberWithLabelElement extends TextWithLabelElement {
        public void setNumber(Number number) {
                super.setText(getStringRepresentation(number));
        }
-       
+
        /**
         * <p>getInteger</p>
         *
@@ -65,7 +66,7 @@ public class NumberWithLabelElement extends TextWithLabelElement {
                String text = super.getText().trim();
                return text.equals("") ? 0 : new Integer(text);
        }
-       
+
        /**
         * <p>getFloat</p>
         *
@@ -75,7 +76,7 @@ public class NumberWithLabelElement extends TextWithLabelElement {
                String text = super.getText();
                return new Float(text);
        }
-       
+
        /**
         * <p>getDouble</p>
         *
@@ -89,10 +90,10 @@ public class NumberWithLabelElement extends TextWithLabelElement {
        private String getStringRepresentation(Object number){
                if(number != null){
                        return number.toString();
-               }               
+               }
                return null;
        }
-       
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
         */
@@ -104,28 +105,28 @@ public class NumberWithLabelElement extends TextWithLabelElement {
                        text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
                        return;
                }
-               
+
                try{
-                       
+
                        Float number = Float.parseFloat(value);
-                       
+
                        if((start != null && number < start) || (end != null && number > end)){
                                throw new NumberFormatException("You entered a number that is not within the allowed bounds.");
                        }
-                       
+
                }catch(NumberFormatException e){
                        text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
                        firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
                        exception = e;
                        return;
                }
-               
+
                exception = null;
                text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
-               
+
                super.modifyText(event);
        }
-       
+
        /**
         * <p>setLimits</p>
         *
@@ -136,7 +137,7 @@ public class NumberWithLabelElement extends TextWithLabelElement {
        public void setLimits(int numberOfDigits, Integer start, Integer end){
                setLimits(numberOfDigits, start.floatValue(), end.floatValue());
        }
-       
+
        /**
         * <p>setLimits</p>
         *
@@ -149,7 +150,7 @@ public class NumberWithLabelElement extends TextWithLabelElement {
                this.start = start;
                this.end = end;
        }
-       
+
        /**
         * <p>Getter for the field <code>exception</code>.</p>
         *
index 72b26fcfcc05d890a115df9ca7732d737de9b565..852018d0a104146c1252e7cb147c5c14537f85b9 100644 (file)
@@ -16,6 +16,7 @@ import org.eclipse.swt.widgets.Label;
 import org.joda.time.Partial;
 
 import eu.etaxonomy.cdm.model.common.TimePeriod;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>PartialElement class.</p>
index 109cbafb565227f4b9ed23a992d9242958dde86b..30a9ce77d2e561c383f859c08b1f9da83acf4424 100644 (file)
@@ -17,6 +17,7 @@ import org.eclipse.jface.util.PropertyChangeEvent;
 import eu.etaxonomy.cdm.model.location.Point;
 import eu.etaxonomy.cdm.model.location.ReferenceSystem;
 import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 
 /**
index 9ac347446a917822c1a85b7b5af3dae912ce522e..c7c8d11431aa6861016cb78032d1d8b69f77f084 100644 (file)
@@ -13,6 +13,8 @@ package eu.etaxonomy.taxeditor.ui.element;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Composite;
 
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+
 
 /**
  * <p>RootElement class.</p>
index 3c2c784ee1d19becd11dd9717bc0b453766d26ba..8644a166f673f403c26ecf3893928ae3dcb78a6c 100644 (file)
@@ -26,6 +26,7 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Widget;
 
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 
 /**
index aadf8713ecf7f9d39922b558d6a607dc58415376..d2d84cc0e959f803cf878282bf14ec5b81aa0e4e 100644 (file)
@@ -14,6 +14,7 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>TextActionElement class.</p>
index 878788b3150d8c646ecffa2e7c863a67ca8a81c6..11bd12de6650ea47a89398bf1bf426134f9e99b3 100644 (file)
@@ -17,6 +17,7 @@ import org.eclipse.ui.forms.widgets.TableWrapData;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>
index 9f9cc50713bb826c4e68537cbf759c1e699fe08f..f27d5911295e48c8c53add956e526b3e03eadbe7 100644 (file)
@@ -16,6 +16,7 @@ import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.forms.widgets.Section;
 
 import eu.etaxonomy.cdm.model.common.TimePeriod;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * <p>
index e2b2fadb91c974b723885e201a787b370f1a3a94..e74e40ba31d91417ce516cd1c05587d3baeb9256 100644 (file)
@@ -29,6 +29,7 @@ import org.eclipse.swt.widgets.Text;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 
 /**
  * When the button is pressed, this textfield may be edited.
index f4307ea87a4572da4b8f8f6e1df83c973e184556..47e9b91351f6d3db4011eb9fe7b916cee0984041 100644 (file)
@@ -13,6 +13,8 @@ package eu.etaxonomy.taxeditor.ui.element;
 import java.net.URI;
 import java.net.URISyntaxException;
 
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+
 
 /**
  * @author n.hoffmann
index 638dda420f9931d9633eab05e8f8dd1e668c56af..e1cab9bef2730c53de590bf817d493323a527df6 100644 (file)
@@ -8,21 +8,20 @@
 */
 package eu.etaxonomy.taxeditor.ui.group.grantedauthority;
 
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseTrackAdapter;
 import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
 
 import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.Operation;
 
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseTrackAdapter;
-
 
 /**
  * Widget for editing {@link Operation} objects, consisting of 4 checkboxes for CREATE, UPDATE, READ, DELETE operations.
index cc4210f13d91fcc4fb711e6eb9cc183157042363..08a0faeaabd2a16962599a04abea6d80a5f0202a 100644 (file)
@@ -10,25 +10,23 @@ package eu.etaxonomy.taxeditor.ui.group.grantedauthority;
 
 import org.eclipse.nebula.widgets.compositetable.CompositeTable;
 import org.eclipse.nebula.widgets.compositetable.IRowContentProvider;
-
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DropTarget;
+import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
 import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
 
 import eu.etaxonomy.taxeditor.dnd.CdmAuthorityTableDropTargetListener;
 import eu.etaxonomy.taxeditor.dnd.transfer.TaxonNodeTransfer;
 
-import org.eclipse.swt.dnd.DropTarget;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.layout.GridData;
-
 /**
  * Composite class which consists of a {@link CompositeTable} built specifically
  * for creating / editing CDM Authority objects
index 10e025b7736aa495ce0fb6e71b83fc35c6f07854..cb910b32c9960407c9c3ae5f7c7b6c3c5b05f61a 100644 (file)
@@ -23,12 +23,12 @@ import org.eclipse.swt.widgets.Control;
 import org.springframework.security.core.GrantedAuthority;
 
 import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.Group;
-import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
 import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
+import eu.etaxonomy.cdm.model.common.Group;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
+import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
 
 
 
index 9d545f0e95d85c1ac17071d52a13367c8b3504b2..16068ddbf779e92cf55bf98ec12d85bbc4ba1477 100644 (file)
@@ -8,25 +8,23 @@
 */
 package eu.etaxonomy.taxeditor.ui.group.grantedauthority;
 
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
+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.Display;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.SWT;
-
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.layout.GridData;
+import org.eclipse.ui.forms.widgets.FormToolkit;
 
 import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
 import eu.etaxonomy.cdm.persistence.hibernate.permission.CdmAuthority;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 
-import org.eclipse.swt.events.MouseAdapter;
-import org.eclipse.swt.events.MouseEvent;
-
 
 /**
  * Row widget for editing a single CDM Authority
index a47133bc4b4faad2a8b13c08d46810b6b88f5294..ee844900a0bd91fa556c4a414674a5d0b9c20a9f 100644 (file)
@@ -8,16 +8,16 @@
 */
 package eu.etaxonomy.taxeditor.ui.group.grantedauthority;
 
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.forms.widgets.FormToolkit;
-import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.custom.CLabel;
+import org.eclipse.ui.forms.widgets.FormToolkit;
 
 /**
  * Table header widget for {@link CdmAuthorityComposite}
index c508919a6e1c2b12486f70706dca101a986644db..b9056d46dd3807d3aac0734aa08c78561d2b4825 100644 (file)
@@ -20,9 +20,9 @@ import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
index 2f91f4a5b91cb186f8988cb1c27d43e8820a67c8..b3a720b6aab187e5c823e133c6cf85bac2c2ac16 100644 (file)
@@ -21,9 +21,9 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 
 /**
index 1fa087abd51780e4163f5811e81201e4dc137635..1cb65f1115f2a241b7d14fe5daa02b979aa9929b 100644 (file)
@@ -21,9 +21,9 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.service.IUserService;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 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.section.AbstractCdmDetailElement;
index 4704d2b24f15e6283effeb2466a3e75cee169197..751f2f2c49dcd1edd8e2930966162037bb34e6b2 100644 (file)
@@ -22,12 +22,11 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
-import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
 
 /**
  * <p>
@@ -38,7 +37,7 @@ import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
  * @created Feb 26, 2010
  * @version 1.0
  */
-public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement implements IEntityElement<T>, IEnableableFormElement, IConversationEnabled {
+public abstract class AbstractCdmDetailElement<T> extends AbstractCdmFormElement implements ICdmDetailElement<T> {
 
        private T entity;
 
index ee222adad8914b47c7c1daafd4e324e88cfd723b..3d7efb919918129c259d8ffff6fd97bfecd453ec 100644 (file)
@@ -22,9 +22,9 @@ import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
 
@@ -39,7 +39,7 @@ import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
  */
 public abstract class AbstractCdmDetailSection<ENTITY> extends AbstractFormSection<ENTITY> implements IEnableableFormElement, IExpansionListener {
 
-       private AbstractCdmDetailElement<ENTITY> detailElement;
+       protected ICdmDetailElement<ENTITY> detailElement;
 
        /**
         * <p>
@@ -123,9 +123,9 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends AbstractFormSecti
            createControlsByType(formElement, null, style);
        }
 
-       protected abstract AbstractCdmDetailElement<ENTITY> createCdmDetailElement(AbstractCdmDetailSection<ENTITY> parentElement, int style);
+       protected abstract ICdmDetailElement<ENTITY> createCdmDetailElement(AbstractCdmDetailSection<ENTITY> parentElement, int style);
 
-       protected AbstractCdmDetailElement<ENTITY> createCdmDetailElementByType(AbstractCdmDetailSection<ENTITY> parentElement, Class<ENTITY> entityClass, int style){
+       protected ICdmDetailElement<ENTITY> createCdmDetailElementByType(AbstractCdmDetailSection<ENTITY> parentElement, Class<ENTITY> entityClass, int style){
            return createCdmDetailElement(parentElement, style);
        }
 
index ca1353b2c53d0de4301743261bc778221977301e..b6e1a416bfc039c687e6b8b9b193bdddf87efd71 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
  * 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.
  */
@@ -24,10 +24,10 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectable;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
@@ -36,7 +36,7 @@ import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
  * <p>
  * Abstract AbstractEntityCollectionElement class.
  * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Nov 16, 2009
  * @version 1.0
@@ -47,9 +47,9 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
 
        protected ENTITY entity;
 
-       private Composite container;
+       private final Composite container;
 
-       private Composite box;
+       private final Composite box;
 
        private Button button_remove;
 
@@ -59,7 +59,7 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
         * <p>
         * Constructor for AbstractEntityCollectionElement.
         * </p>
-        * 
+        *
         * @param style
         *            a int.
         * @param formFactory
@@ -129,7 +129,7 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
 
        /**
         * Init gets executed before any other setup of the section takes place
-        * 
+        *
         * Implement this if you want to configure the section
         */
        public void init() {
@@ -140,7 +140,7 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
         * <p>
         * Setter for the field <code>entity</code>.
         * </p>
-        * 
+        *
         * @param entity
         *            a ENTITY object.
         */
@@ -150,10 +150,11 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
         * <p>
         * Getter for the field <code>entity</code>.
         * </p>
-        * 
+        *
         * @return a ENTITY object.
         */
-       public ENTITY getEntity() {
+       @Override
+    public ENTITY getEntity() {
                return entity;
        }
 
@@ -161,7 +162,7 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
         * <p>
         * createControls
         * </p>
-        * 
+        *
         * @param element
         *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
         *            object.
@@ -173,7 +174,8 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
        /**
         * Mark <code>this</code> element as selected.
         */
-       public void setSelected(boolean selected) {
+       @Override
+    public void setSelected(boolean selected) {
 
                for (ICdmFormElement element : getElements()) {
                        if (element instanceof ISelectable) {
@@ -185,7 +187,7 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
         * .eclipse.jface.util.PropertyChangeEvent)
@@ -206,14 +208,15 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
         * <p>
         * handleEvent
         * </p>
-        * 
+        *
         * @param eventSource
         *            a {@link java.lang.Object} object.
         */
        public abstract void handleEvent(Object eventSource);
 
        /** {@inheritDoc} */
-       public void setBackground(Color color) {
+       @Override
+    public void setBackground(Color color) {
                backgroundColor = color;
                super.setBackground(color);
                box.setBackground(color);
@@ -222,15 +225,17 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
 
        /**
         * {@inheritDoc}
-        * 
+        *
         * React when selection occurs
         */
-       public void widgetSelected(SelectionEvent e) {
+       @Override
+    public void widgetSelected(SelectionEvent e) {
 
        }
 
        /** {@inheritDoc} */
-       public void widgetDefaultSelected(SelectionEvent e) {
+       @Override
+    public void widgetDefaultSelected(SelectionEvent e) {
        }
 
        /** {@inheritDoc} */
@@ -243,7 +248,7 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
         * <p>
         * Getter for the field <code>backgroundColor</code>.
         * </p>
-        * 
+        *
         * @return the backgroundColor
         */
        public Color getBackgroundColor() {
@@ -254,11 +259,12 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
         * <p>
         * getConversationHolder
         * </p>
-        * 
+        *
         * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
         *         object.
         */
-       public ConversationHolder getConversationHolder() {
+       @Override
+    public ConversationHolder getConversationHolder() {
                if (getParentElement() instanceof IConversationEnabled) {
                        return ((IConversationEnabled) getParentElement())
                                        .getConversationHolder();
@@ -268,6 +274,7 @@ public abstract class AbstractEntityCollectionElement<ENTITY> extends
        }
 
        /** {@inheritDoc} */
-       public void update(CdmDataChangeMap changeEvents) {
+       @Override
+    public void update(CdmDataChangeMap changeEvents) {
        }
 }
index ecc7c9107e8a6ed102df8893b5465e78a04a5525..ac94a5a830b07ce1861ffa76a2e4998efe2edcb3 100644 (file)
@@ -29,9 +29,9 @@ import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * This class visualizes an CDM entity of type ENTITY and additionally provides the functionality to add
@@ -279,6 +279,16 @@ public abstract class AbstractEntityCollectionSection<ENTITY, ELEMENT> extends A
                return PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOULD_EXPAND_SECTION_WHEN_DATA_AVAILABLE);
        }
 
+       /**
+        * Remove an element from the entities collection and update the section
+        *
+        * @param element a ELEMENT object.
+        */
+       public void removeElementAndUpdate(ELEMENT element) {
+               removeElement(element);
+               internalUpdateSection(true);
+       }
+
        /**
         * Get the specific collection of this entity
         *
index 838fd1c7762820204b2c29171ffc2d213f62d81f..0ef043a6b3b43e4e1001d03fa3713069c4feda74 100644 (file)
@@ -6,8 +6,8 @@ package eu.etaxonomy.taxeditor.ui.section;
 import java.util.Arrays;
 
 import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
 
 /**
index e06c2bc570a5a0751ceac1ad28ed20aeafe45e99..5cb1ecad3b3bf1252456638cf309fdaf53a4620c 100644 (file)
@@ -14,9 +14,9 @@ import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * <p>EmptyElement class.</p>
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/ICdmDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/ICdmDetailElement.java
new file mode 100644 (file)
index 0000000..20110e3
--- /dev/null
@@ -0,0 +1,25 @@
+// $Id$
+/**
+* Copyright (C) 2013 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;
+
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
+
+/**
+ * @author pplitzner
+ * @date 30.07.2013
+ *
+ */
+public interface ICdmDetailElement<T> extends IEntityElement<T>, IEnableableFormElement, IConversationEnabled{
+
+    public abstract void setEntity(T entity);
+
+}
index 22dd6221148381d0a1e8c43f202a598f9e9d8dc7..433c53ee74ba6f2eee032732a1b17ccb2f3cd289 100644 (file)
@@ -11,8 +11,8 @@
 package eu.etaxonomy.taxeditor.ui.section.agent;
 
 import eu.etaxonomy.cdm.model.agent.Institution;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
index 11e4a2d99af794295747a17584dc4f846b11d83e..1aebcdbb1f77214326f733dedbd431dbaee84b11 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.agent.Institution;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 5f4933cba4ef5653106741682ffa7cff0b7fa144..9e9dca42ad9e1966021b090d85e6cc9931d3256d 100644 (file)
@@ -12,9 +12,9 @@ package eu.etaxonomy.taxeditor.ui.section.agent;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.agent.Institution;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index 5199df5fce2e6f8abe1e0cf8fd48cbc11457ec8c..2107981584ec109f21ec210e634a4a9abc44e638 100644 (file)
@@ -16,9 +16,9 @@ import java.util.Collection;
 import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
 
index 7821e7a022f15efce0702bd700fceb240d782704..0337478c08489f715db41c28f1b6ea9aea23fcb2 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 51ab6ad03799fdf66dd1a567339f3e14664e2b5f..6979936a77eb83ea6ca53176c6f149364b3fa070 100644 (file)
@@ -14,9 +14,9 @@ import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index f338bc217ba0e62edc1a965b76c18327e838c651..a56cee9b9697268ff956eee06825fa49a4d53159 100644 (file)
@@ -15,9 +15,9 @@ import java.util.Arrays;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
index bacd6b548cd6c0302b89f23d542d7cb7710aab4b..f8b96bf4b258ee3ae397083bd0891f39fad60c97 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 103870d0e2bd364a6f444b2ded17adb72c6b8550..a14bd862eb7a6f6624f6b4e985f9ec27cd0c0970 100644 (file)
@@ -14,10 +14,10 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
index 5cc7743d878c0fefde03b0edff0217f862edf124..2b4e51eeee8434172e8a09fc4ac2972e5fec45c9 100644 (file)
@@ -15,8 +15,8 @@ import java.util.Collection;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 578d220b26eb28124b25f57d5de3464f09d6daec..73cd503df1ffa59df47d4aca033cf5250376054a 100644 (file)
@@ -17,8 +17,8 @@ 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.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 9016f92c6e2a4a41dba32c84e313d2fd2e35ac00..8097bfc966e808d92518a0a83977267ece0a53c0 100644 (file)
@@ -14,9 +14,9 @@ import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index b13cc94fcd5156c752b72a971458c50a7b47482f..1f5a0a1b6b9c0ba875f3570150bb04415ae9483b 100644 (file)
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
index 83eb7ee1543bc44d79ab2e0a10cba1e9e8f25091..32fa82b688189d72c43dd29656803dc5ae59acec 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 292916ba5399d68ef0a64cf66229bf2044bff306..c383b99cce76c807dae5e970fbac366a71223472 100644 (file)
@@ -12,9 +12,9 @@ package eu.etaxonomy.taxeditor.ui.section.classification;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.taxon.Classification;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * <p>
index a2555b03d841f4b4eb56d8b2a5003196a8d556ec..a7a8261a097d306b630599e9bce40dc0d58c7c4b 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
  * 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.
  */
@@ -19,9 +19,9 @@ import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.parser.ParseHandler;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
@@ -31,7 +31,7 @@ import eu.etaxonomy.taxeditor.ui.selection.TaxonNodeSelectionElement;
  * <p>
  * TaxonNodeDetailElement class.
  * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Sep 27, 2010
  * @version 1.0
@@ -64,7 +64,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
         * <p>
         * Constructor for TaxonNodeDetailElement.
         * </p>
-        * 
+        *
         * @param formFactory
         *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
         *            object.
@@ -79,7 +79,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
         * (eu.etaxonomy.taxeditor.forms.ICdmFormElement,
@@ -119,7 +119,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
         * .lang.Object)
@@ -158,7 +158,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
         * <p>
         * Getter for the field <code>classification</code>.
         * </p>
-        * 
+        *
         * @return the classification
         */
        public Classification getClassification() {
@@ -169,7 +169,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
         * <p>
         * isOpenInEditor
         * </p>
-        * 
+        *
         * @return the openInEditor
         */
        public boolean isOpenInEditor() {
@@ -180,7 +180,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
         * <p>
         * Getter for the field <code>parentTreeNode</code>.
         * </p>
-        * 
+        *
         * @return a {@link eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode} object.
         */
        public ITaxonTreeNode getParentTreeNode() {
@@ -191,7 +191,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
         * <p>
         * Getter for the field <code>taxon</code>.
         * </p>
-        * 
+        *
         * @return the taxon
         */
        public Taxon getTaxon() {
@@ -226,7 +226,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
                        selection_parentTaxonNode.setEntity((TaxonNode) parentTreeNode);
                        selection_parentTaxonNode.setClassification(classification);
                } else if(parentTreeNode == null){
-                       this.parentTreeNode = selection_classification.getEntity();                     
+                       this.parentTreeNode = selection_classification.getEntity();
                }
        }
 
@@ -270,7 +270,7 @@ public class TaxonNodeDetailElement extends AbstractCdmDetailElement<ITaxonTreeN
         * <p>
         * isComplete
         * </p>
-        * 
+        *
         * @return the complete
         */
        public boolean isComplete() {
index 0508372da8f9116d5969f55247edc163ecfced5b..4693709efb330a643d39d385ff9fffc5ffe61743 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index d78900f3b618bace776f2221ebfbb1d5407a24c1..54e48f30a07522ded244fa7e8f9d068e112a2afb 100644 (file)
@@ -15,9 +15,9 @@ import org.eclipse.jface.util.PropertyChangeEvent;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * <p>
index 8649289c443af64cd13d361536f0f9eb7a0fb2ba..b4fb2a30c1587a53ed564f4843a964a01d906e38 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.common;
 
 import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
index d9825324dff6423943b6b543588cd228aefa1152..e138c2b19e9d205d20f71c7b0238855cf5173a71 100644 (file)
@@ -13,8 +13,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index d1ccc47b6b5290583aa808adc57214aee95c307d..c038a1862969c119d70fc518aa0bdc764b1e836b 100644 (file)
@@ -14,9 +14,9 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
index 112927630fc5e6e808c8213d8d084e77407460e3..408b0bbe20e3f8726f8840077ac9ace734c0bb79 100644 (file)
@@ -18,9 +18,9 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.DerivedUnitSelectionDialog;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 3b7ccac5e9faf755501ca7dc44a0ff6e2ce5f15a..d79ad1f4eeef1bdda6bf597f09c8f01e7dad6824 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
index 5cf40dc83b3e5e65939178f357045eb172601438..8f6c36817434a634838ec61eb4713374b6d22dad 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 5591416ff5177d31814e37bdaafd3efeaf4affc0..84dc081d9c789d054c3c6d134aa3b4b3dfb00922 100644 (file)
@@ -11,8 +11,8 @@
 package eu.etaxonomy.taxeditor.ui.section.description;
 
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index 2fe95883904f4c6b43a56b3bf15e2627354f3666..6414310fd2de95d3a4a448a4cb610d00d7fcc5a8 100644 (file)
@@ -21,8 +21,8 @@ import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.description.operation.ChangeDescriptionElementType;
index 10608b3b000f88dc24ec6805e2e15b6e293981c1..5045ce9b5314ab6616ea0f573f1d593129346a96 100644 (file)
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index aff1fbea835495ffde973dd6c9cd5b5761e9d2bd..878a82a9110fe462d0e505a02e1ba9bec38ad321 100644 (file)
@@ -15,9 +15,9 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractOriginalSourceElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
index 13da781151f42c72c45e1d1da2d3640d347c6c60..14436683a1e0b3240b7bdbd678613c25a6d0b10c 100644 (file)
@@ -5,15 +5,12 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import java.util.Collection;
 
-
 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.description.DescriptionElementSource;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.OriginalSourceTypeSelectionDialog;
+import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index a258802012349a9d8207f57b41dda3037798321a..937449fd30f08cac03ccf91341b57ef619e8d471 100644 (file)
@@ -13,9 +13,9 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
index 7d3b5d613961f2b4a6d837082e3c35e961a1455f..1f3c1db1fdf6040a32563a60c598b6e3e6700440 100644 (file)
@@ -16,9 +16,9 @@ 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.description.DescriptionBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.OriginalSourceTypeSelectionDialog;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 4485eb50b14e14ab1b0605b766766cfb63f437ef..46aa7c86a9a6fd9c991e5a1d5e3ad5ac82c7365e 100644 (file)
@@ -13,9 +13,9 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 
 /**
index b8a69e0ae77995b478bd5cc78bf82c7309cb38e9..c4648506519ff16109674605d1e06cd093dbb677 100644 (file)
@@ -15,8 +15,8 @@ import java.util.Collection;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
 import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 04a0171b1b7d09d74d1626003dbcb9aff67498a5..fc7330b484ef9b7f0e848ea7400c4809c19089fb 100644 (file)
@@ -16,8 +16,8 @@ import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.media.MediaElement;
index efcef95e026df1c8327ffc86364b8007637a33b0..bd583af5169e748f2c5e4e82f09c2e3c567ed6ba 100644 (file)
@@ -12,12 +12,11 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 
 import org.eclipse.swt.events.SelectionListener;
 
-
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 
 /**
index 686da6260d15741a9040fe0b380f9122263f4c8e..8a33c59a23f3ff5568d5d612e9117b55cfa534cf 100644 (file)
@@ -16,8 +16,8 @@ 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.description.IModifiable;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index c010da5b1f49ba91221da0b7a312202da840df7f..5747110ba8b77ae6a3fb51851326d7cc078fd2d6 100644 (file)
@@ -26,8 +26,8 @@ import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
index ee928e4e381f1968d84b0145dbd06817ddc5772c..137a716ee05b3063eb31c692a37c42ff6fe19d0e 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index db8e4ea2b5bb1533cb25ad4c730655a7d9cc421f..08173c72a1c8afb3d85210068d4b91d626a30310 100644 (file)
@@ -13,10 +13,10 @@ package eu.etaxonomy.taxeditor.ui.section.description;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 
 /**
index 271687deaa8ea5ad3d192db003f657b4c0f434a5..81bb68a373a4b30d971fbfcf6696b46153329137 100644 (file)
@@ -16,8 +16,8 @@ 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.description.TaxonDescription;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 94ceb4e99e6d31c936f49cd593a1dff2ca6edea0..30a4c9808a1f4ffee0bd794cd47f3b29e794c50a 100644 (file)
@@ -17,10 +17,10 @@ import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.description.State;
 import eu.etaxonomy.cdm.model.description.StateData;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.section.AbstractEntityCollectionElement;
index 71a182699f1af7628e3f7175d52f3a304995925a..30e54353177ca10d97f93bc3f2adcb7dd5054551 100644 (file)
@@ -15,8 +15,8 @@ import java.util.Collection;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.CategoricalData;
 import eu.etaxonomy.cdm.model.description.StateData;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 012b6018092a2542ea7a04195b7e27c9153baec2..4e879088bef7d9c78cfaea83317129c70be833df 100644 (file)
@@ -15,10 +15,10 @@ import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
 import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
index 81fef0b58334108f451c32b3dd8d94760a277239..cef5b828bd07430f94d81a86af9293e8934588ff 100644 (file)
@@ -15,8 +15,8 @@ import java.util.Collection;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.QuantitativeData;
 import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 85c1461bbc4dce903f6b9b31d3abc7b517346dec..bbbdd768c2bde0cfff264786c4db60892d22994e 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -11,8 +11,8 @@
 package eu.etaxonomy.taxeditor.ui.section.description.detail;
 
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -23,7 +23,7 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
  * @version 1.0
  */
 public abstract class AbstractDetailedDescriptionDetailElement<T extends DescriptionElementBase> extends AbstractCdmDetailElement<T>{
-       
+
        /**
         * <p>Constructor for AbstractDetailedDescriptionDetailElement.</p>
         *
index 9f6ceb849e09d2c8ca3420c20dc0c11359300174..7f333ff83e5987f0f394bdc36da9c08fb1300a97 100644 (file)
@@ -6,9 +6,9 @@ package eu.etaxonomy.taxeditor.ui.section.description.detail;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.model.description.CategoricalData;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.section.description.StateDataSection;
 
index 2cf643d510af2f4d07e0bb3b4310d01d6a1bb954..63c815467dc1e36f96853607505fdefca8bef13d 100644 (file)
@@ -15,9 +15,9 @@ import org.eclipse.swt.SWT;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
 import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 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.selection.EntitySelectionElement;
 
index a4cb753439d963397c11fa6e2eb0a7fdc6d09da2..00b5ca0f599e02744518660d6827cefbd4a003f5 100644 (file)
@@ -13,9 +13,9 @@ package eu.etaxonomy.taxeditor.ui.section.description.detail;
 import eu.etaxonomy.cdm.model.description.Distribution;
 import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
 import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
index 0a3090c48838d3956574ce136a779c9a60f011b0..236e046e518a879ab0fc6a060f1bb20f39ca573a 100644 (file)
@@ -18,8 +18,8 @@ import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.selection.EntitySelectionElement;
 
index 1315a206d7b99cf3fa174b1c06c6f16b392add71..d0e0016aaca0cb3021a6a0a215b8a17f8c1b07e6 100644 (file)
@@ -7,9 +7,9 @@ import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.model.description.MeasurementUnit;
 import eu.etaxonomy.cdm.model.description.QuantitativeData;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 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.section.description.StatisticalMeasurementValueSection;
 
index 95221da5ed233016a069d58aac987d7b470c7c35..b54d55833478b313fc69c731d35402e6188500e7 100644 (file)
@@ -15,8 +15,8 @@ import org.eclipse.swt.SWT;
 import eu.etaxonomy.cdm.model.description.TaxonInteraction;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.selection.EntitySelectionElement;
 
index 9e4fcbac72a38cdc1ff22a3eac7a670e1d12c298..913677a4be9d83739b98a4fb376f9c841c81a7c9 100644 (file)
@@ -13,8 +13,8 @@ package eu.etaxonomy.taxeditor.ui.section.description.detail;
 import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.description.TextData;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement;
 
 /**
index e1110fb323656aab2ce2085ab0d4799d0afb81ed..df7a426c6627e591f788ffd0c439138354f5ffa5 100644 (file)
@@ -25,7 +25,7 @@ import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
 import eu.etaxonomy.cdm.model.description.QuantitativeData;
 import eu.etaxonomy.cdm.model.description.TaxonInteraction;
 import eu.etaxonomy.cdm.model.description.TextData;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
 
 /**
@@ -35,7 +35,7 @@ import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
  * @date 25.05.2010
  * @version $Id: $
  */
-public class ChangeDescriptionElementType extends AbstractPostOperation {
+public class ChangeDescriptionElementType extends AbstractPostTaxonOperation {
 
        private DescriptionElementBase sourceElement;
        private DescriptionElementBase destinationElement;
index 0de380453e83bc642e5c085801a73b997a572c02..c95e7b04eaaba61d2d0becc47acc5366d4a49bf4 100644 (file)
@@ -28,9 +28,9 @@ import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.BrowserElement;
 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.section.AbstractCdmDetailElement;
 
index 456fc997f3569aca86f576cd8a45d468261a8125..968a959f16bb3e0eb0a0f46181ddacb408768d9e 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index e0a6ffcababf54aab63cb7d5ef1c740b764ba06b..7efac85a8bf1710205fce5199c47feab4b0bf3bc 100644 (file)
 package eu.etaxonomy.taxeditor.ui.section.grantedAuthority;
 
 import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Color;
 
 import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
-import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
index e443d388c75ed9f5360869f732f695a032838a6c..4ed8b90023677febeb41320d1ccecc0cbc007fbc 100644 (file)
@@ -11,8 +11,8 @@
 package eu.etaxonomy.taxeditor.ui.section.grantedAuthority;
 
 import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
 
index da87734a8deafc1046442532dfc9d36975345262..6612eb65602bf7270d6b919e8597a58bbe3a3a34 100644 (file)
@@ -16,10 +16,9 @@ import org.springframework.security.core.GrantedAuthority;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.Group;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.GrantedAuthoritySelectionDialog;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 3fd5b3887f93fcbc7639bc8b83045f302dca68be..e61f7f09b73ee350303c463323ca20b92c56cf9d 100644 (file)
@@ -11,9 +11,9 @@ package eu.etaxonomy.taxeditor.ui.section.grantedAuthority;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index 02db4e6985bdcc0c1a0f39099d072d22a726bd04..4aa1178678e2e44b797f5cc30a32ad96b3455893 100644 (file)
@@ -11,8 +11,8 @@
 package eu.etaxonomy.taxeditor.ui.section.group;
 
 import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
 
index e5543bd3496daa996eeeceb3fc2b680b05f946a7..8b10edbc58b9f92c1e5965dbd64692742559cc86 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 15c4f491029dc95713ac20c8d6ae665e902c6239..bf9a702c9269b014fc17457fd5c96502937850ed 100644 (file)
@@ -12,9 +12,9 @@ package eu.etaxonomy.taxeditor.ui.section.group;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index 58a26303200cbe55c4496a38a6f39b2d5515b829..3f673cdd12779eaab0a28406475dc602ff761b93 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.group;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
index 1a828cb19fb054e659840644306709ea9ec9ce7f..99dbd19e6719ebe66f97313a3cc710b5ae36d618 100644 (file)
@@ -13,9 +13,9 @@ package eu.etaxonomy.taxeditor.ui.section.group;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
index da46215e4e0ac4351b8061488c4ae2ef82dfe031..90268b85fb363517edcaa573c848061d5533c49f 100644 (file)
@@ -15,9 +15,9 @@ import java.util.Collection;
 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.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.UserSelectionDialog;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 13e9035108738ce54ea04034e951069d8da06993..95a29a4a5221490347b500969b7960f79fdf7cf6 100644 (file)
@@ -8,8 +8,8 @@ import java.util.Collection;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.IIdentificationKey;
 import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 39aa11e690566c5d5159883e339073cbd25e1485..c87d90c01b928646f41a3d0d3924e5f6c5dabafd 100644 (file)
@@ -6,9 +6,9 @@ package eu.etaxonomy.taxeditor.ui.section.key;
 import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
 
 /**
index 68a5db7d82cd6091816507fb0948683c2274c639..f8634c4aaaa4a392c4a9b225b23d0dd895082047 100644 (file)
@@ -7,8 +7,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 97525567ad0f0da64d778389197808f96f107b0d..717c2894a8c3421a34d348850181532edacf83ef 100644 (file)
@@ -7,8 +7,8 @@ import eu.etaxonomy.cdm.model.description.Feature;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.KeyStatementElement;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
index 65c4d636c64fa269a0719d991b603160edb3ea03..bbc6c651ca38de102301aa6fd21b2369832ba0ce 100644 (file)
@@ -7,8 +7,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index a0c12f1ae9c5bf29bbd9361cb2698429dbead165..12131c8eccec5f8981507408bd2054a96348250c 100644 (file)
@@ -9,8 +9,8 @@ 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.description.PolytomousKey;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index bd732e883626de28a36240e9a8220ba17b53668c..29c5d089f9e901129306400cbe573e83479d2784 100644 (file)
@@ -15,9 +15,9 @@ import java.util.Collection;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonBaseSelectionDialog;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 098620fd70d003c00b96a7bc129492c53277f732..35246888462bd93e206bf244ef0186756713ebe9 100644 (file)
@@ -21,10 +21,10 @@ import org.eclipse.swt.events.SelectionListener;
 import eu.etaxonomy.cdm.common.media.ImageInfo;
 import eu.etaxonomy.cdm.model.media.ImageFile;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.ImageElement;
 import eu.etaxonomy.taxeditor.ui.element.KeyValueViewerElement;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
index 299bd27b45e895d7b76e029325358d71d8b6c07b..2def50a26617937cd7f2a38b4c50ad6407877ce3 100644 (file)
@@ -11,9 +11,9 @@ import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
index ae2bbb7ba0a70c702692fe1d528b43f653788c66..1f6e5b5e56226a9e13c6f997868a75565d2937db 100644 (file)
@@ -22,9 +22,9 @@ import eu.etaxonomy.cdm.model.media.ImageFile;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.section.AbstractEntityCollectionElement;
index a5ef673414987ed2965ce762c3d0cc092dd6459b..2f0908a601450d654298be45a440222553598491 100644 (file)
@@ -17,9 +17,9 @@ import org.apache.commons.lang.StringUtils;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LabelElement;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
index e191040b963d1c41a438d565c1da9e5d191e2b44..e336f4f544690f7a333605c22a61964586aa97af 100644 (file)
@@ -9,9 +9,9 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.media.ImageFile;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 33587e9f6851002582849488412bb0a6377c140f..852bf0c5859e61b4191c79eec0927199af7a2007 100644 (file)
@@ -15,8 +15,8 @@ import java.util.Collection;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index ab7011da484fa901eb6156ca430a4979d7a122a0..a2ba19fa7423c5fe35529f3740075b5108c6955a 100644 (file)
@@ -5,12 +5,11 @@ package eu.etaxonomy.taxeditor.ui.section.media;
 
 import java.util.Collection;
 
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
 import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 99506c5638abeec786b9fbfcb14547b0cc693133..2a397b9b15290ed5285c35aa14f8ddfb58d2023a 100644 (file)
@@ -13,10 +13,10 @@ package eu.etaxonomy.taxeditor.ui.section.name;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
 
 /**
index aa03fae0b12bb65b0dda4ea73c45597407929fbc..e1693f05f513bd5f3c8a1c1a72a140fdaf6717a9 100644 (file)
@@ -13,12 +13,11 @@ package eu.etaxonomy.taxeditor.ui.section.name;
 import java.util.Arrays;
 
 import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;
-import eu.etaxonomy.cdm.model.agent.Team;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.taxeditor.model.AuthorHelper;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
index 66c071ced89a6194752dcd6949672531c606bbdd..0a7ef1750e5f54fb8f8fa38bbd3545981b1f4225 100644 (file)
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
index 1dfab3c0fab21bdee4211abd386bc21fcbffbf53..4b9d7a746b6761e6fd1bd4ec544ac93803d1298d 100644 (file)
@@ -11,9 +11,9 @@
 package eu.etaxonomy.taxeditor.ui.section.name;
 
 import eu.etaxonomy.cdm.model.name.NonViralName;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.AbstractCdmDetailElement;
 
 /**
index ae1812feb33c3d6804ac019fd5d4c4541a5ec7ba..897f5a838a5b02aefadb4d79148a97e94bf5065e 100644 (file)
@@ -17,8 +17,8 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
index d13534adb4ddf93fbb3ea42fca43b8006560bdd1..99279ca673424483300ab7b6b82eba28cbc0aae0 100644 (file)
@@ -21,10 +21,10 @@ import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.Rank;
 import eu.etaxonomy.cdm.model.name.ZoologicalName;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
index 32315ed8d3fbf27442281994cfd28579413f141a..eaa0a774be68db4258526213a5af2de7e956bdf5 100644 (file)
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
index c0e1988f12835da72320f10db48eeb7127f2869e..2d40fd43ed0395257c0cecff463eb3835a8b1804 100644 (file)
@@ -17,10 +17,10 @@ import org.eclipse.swt.graphics.Color;
 import eu.etaxonomy.cdm.model.name.NameRelationship;
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractReferencedEntityElement;
index d28f45adc8a89cec3ce84862784a2c6195137460..d67a379fcaefac9935aa65c24009c53b5c6d8839 100644 (file)
@@ -22,8 +22,8 @@ import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
 
index 6d4c33854f93d5e7efa40c4ab40298dd14d2429b..e63a41aa606550c5d5c970021bf244e437ba0bfe 100644 (file)
@@ -16,11 +16,11 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 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.selection.EntitySelectionElement;
 
 /**
index 937f08a90fafd140fc32513cfdda4ab2671fc971..438f90da4f5c7f7c5c228d53c2ce49e8eac3b5df 100644 (file)
@@ -14,10 +14,10 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
 import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
index 643804afb8873baa99b588570ae7871111fef163..80b5cc3cbfe9049148d7d6bc24356218630a8e8c 100644 (file)
@@ -18,8 +18,8 @@ import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
 
index d4e17a472caef42b9a0a579f8b68cf870202d2fc..245e5e01d46470d418e4a41e406bb2884811cf99 100644 (file)
@@ -16,9 +16,9 @@ import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
 import eu.etaxonomy.cdm.model.name.NonViralName;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 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.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
index 654a025e439f8bffc0632401d0ddc8d70134bbac..2ee3b7241bcf1c5b9256f539503364330560c0c4 100644 (file)
@@ -22,9 +22,9 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
index de04f7c59b8da4de5f7428fa946fd819aae0db7d..e380662678801e788be7d5e9de5843ec1a7789f3 100644 (file)
@@ -12,9 +12,9 @@ package eu.etaxonomy.taxeditor.ui.section.name;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.name.NonViralName;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index ed29e2f45be45f923899faf0cf622916dcf1b44d..43a1a348ae49526df6088845950ca538bc5f5fad 100644 (file)
@@ -23,10 +23,10 @@ import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
 import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
index f9401eeee53caef77e05d91de846df7f47641399..d7cfc0601fa9b52572104959efcc8bba0b70da98 100644 (file)
@@ -23,8 +23,8 @@ import eu.etaxonomy.cdm.model.description.TextData;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
 
index 1376e0ba682c4975ccb47f5a8c814f0e56540aae..ed46ae652592ed2d9eab140281632ff891a8780a 100644 (file)
@@ -17,10 +17,10 @@ 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.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.selection.EntitySelectionElement;
 
index 7d280ec9598d9dd4502f8cecb86fe888089916df..aa9a7ebf3769bc848d5085acf6e77fb4fdc1d4ba 100644 (file)
@@ -25,8 +25,8 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
 
index 7fc9405420bb9b7974e3ad1b2902192ff1fb4456..ede380e341770096bb82e82996b48bfd11c50b55 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -13,8 +13,8 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 589764a84c9d11da23dc53dbcc73ce244755fc2b..e10f28e27b8139c2772d2438da3b6bd87ed9295e 100644 (file)
@@ -14,9 +14,9 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.EventBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.element.TimePeriodElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
index d1fc2a0ff8c614ae99c82e80801c336457a76e86..aa30aea549eb058df1a701281ff9a5a2e48a9906 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -12,23 +12,27 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import java.util.Collection;
 
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.NamedAreaSelectionDialog;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
- * <p>CollectingAreasDetailSection class.</p>
+ * <p>
+ * CollectingAreasDetailSection class.
+ * </p>
  *
  * @author n.hoffmann
  * @created Oct 14, 2010
  * @version 1.0
  */
-public class CollectingAreasDetailSection extends
-               AbstractEntityCollectionSection<DerivedUnitFacade, NamedArea> {
+public class CollectingAreasDetailSection extends AbstractEntityCollectionSection<DerivedUnitFacade, NamedArea> {
 
        /**
         * <p>Constructor for CollectingAreasDetailSection.</p>
@@ -59,7 +63,7 @@ public class CollectingAreasDetailSection extends
        @Override
        public NamedArea createNewElement() {
                NamedArea selection = NamedAreaSelectionDialog.select(getLayoutComposite().getShell(), getConversationHolder(), null);
-               
+
                return selection;
        }
 
@@ -99,4 +103,12 @@ public class CollectingAreasDetailSection extends
                return "Add a collecting area";
        }
 
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection#createElementComposite(java.lang.Object, org.eclipse.swt.events.SelectionListener, org.eclipse.swt.graphics.Color)
+        */
+       @Override
+       protected void createElementComposite(NamedArea element, SelectionListener removeListener, Color backgroundColor) {
+           formFactory.createNamedAreaFieldController(this, element, removeListener);
+       }
+
 }
index 1e7acca7c00f3fe720dd01bc608d086e89c21eab..f8d5e4b77820658c41c8e3dc713555d84ca21a07 100644 (file)
@@ -12,8 +12,8 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.element.ToggleableTextElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
index ba24188ba30f70087150c3f54ca1110a784a0d8a..bcdb62be9377d5ba901280fc4ab438895360e86d 100644 (file)
@@ -12,9 +12,9 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index 34f1cbbcc2b2a3b05c392f1ca94c658796673ee9..d2463cc2a6d146dd18a523b9cf0725e672f4f830 100644 (file)
@@ -24,8 +24,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
 import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * @author n.hoffmann
index 9778af4d957c47203e289528cdb4d83f7705c0df..4abbb14a7e820a2cc7088508b8e48baa35539a2d 100644 (file)
@@ -19,9 +19,9 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 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.section.AbstractCdmDetailElement;
index 4f74484327f15fad999d8b6b534d1e27018aeb01..6a7640334bb49549e58cadb710663043ad1bd137 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 69b53eb65dd7dca0e769676ad0a0a94edf4415a4..d3e0e8104138dde1a96fcb390e7966a064eada46 100644 (file)
@@ -12,9 +12,9 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitDetailsWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/DerivedUnitDetailsWizardPage.java
new file mode 100644 (file)
index 0000000..40c3e3e
--- /dev/null
@@ -0,0 +1,63 @@
+// $Id$
+/**
+ * Copyright (C) 2013 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.occurrence;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.DerivedUnitDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author pplitzner
+ * @date 02.09.2013
+ *
+ */
+public class DerivedUnitDetailsWizardPage extends AbstractCdmEntityWizardPage<DerivedUnitFacade> {
+
+    /**
+     * @param formFactory
+     * @param conversation
+     * @param entity
+     */
+    public DerivedUnitDetailsWizardPage(CdmFormFactory formFactory, ConversationHolder conversation, DerivedUnitFacade entity) {
+        super(formFactory, conversation, entity);
+        setTitle("Derived Unit Details");
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#checkComplete
+     * ()
+     */
+    @Override
+    protected void checkComplete() {
+        setPageComplete(true);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see
+     * eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement
+     * (eu.etaxonomy.taxeditor.forms.ICdmFormElement)
+     */
+    @Override
+    public AbstractCdmDetailElement<DerivedUnitFacade> createElement(ICdmFormElement rootElement) {
+        DerivedUnitDetailsElementController detailElement = formFactory.createDerivedUnitDetailsElementController(rootElement);
+        detailElement.setEntity(getEntity());
+        checkComplete();
+        return detailElement;
+    }
+}
index 39fb47ea3f37acc65941849b0dec919031b0ac3b..aa939d85e4d9dfdafb144ceb0775022ec27ea983 100644 (file)
@@ -17,8 +17,8 @@ import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeConfigurator;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
index 57713fb8407a19523bea8a97e70925b0fd4e0cdc..ad497f8413a7e3442c28bbbdac05d69a4566292d 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 2044fba398a6ffc9bc90e4f1da61d22b07183442..281918f9c56475d0168d10eb469ea75586ee2fea 100644 (file)
@@ -16,10 +16,9 @@ import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.occurrence.Collection;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.GatheringEventUnitElement;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.PointElement;
@@ -28,7 +27,6 @@ import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
 import eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
-import eu.etaxonomy.taxeditor.ui.element.MinMaxTextSection;
 
 /**
  * @author n.hoffmann
index 6b48d0796e3e2f732966c6e8f3170518214a58c0..0d4c60bdb562b3f3f75996000c3f73643f95fd5c 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
@@ -12,9 +12,9 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
@@ -22,14 +22,14 @@ import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
  * @created Dec 17, 2010
  * @version 1.0
  */
-public class GeneralWizardPage extends AbstractCdmEntityWizardPage<DerivedUnitFacade> {
+public class DerivedUnitGeneralWizardPage extends AbstractCdmEntityWizardPage<DerivedUnitFacade> {
 
        /**
         * @param formFactory
         * @param conversation
         * @param entity
         */
-       public GeneralWizardPage(CdmFormFactory formFactory,
+       public DerivedUnitGeneralWizardPage(CdmFormFactory formFactory,
                        ConversationHolder conversation, DerivedUnitFacade entity) {
                super(formFactory, conversation, entity);
                setTitle("General Specimen Data");
index ea4d184a0731542acc88c121967b88aedcd968c5..76c33b926105677f7579debe0d8254f1f9a0f7ae 100644 (file)
@@ -13,8 +13,8 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.section.AbstractCdmDetailElement;
 
index c2ae96f52ef0504d08be5275e2d622cf8f1b4a37..b235f3b71996931c685eaf499db429315f94a7f3 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 0b624b6c804b86b324b3c0bb3b883a181cc49896..73be3ccee31351ada4ff3b1c74728c1f41f202b8 100644 (file)
@@ -12,15 +12,14 @@ 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.occurrence.DeterminationEvent;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 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.selection.EntitySelectionElement;
 
 /**
index 89a0d0bde2e259ba7bc70df1a558896b5ffbfe3f..f8f75e67328c1ca3dd253fe7db6e3f2e2b972c49 100644 (file)
@@ -15,8 +15,8 @@ import java.util.Collection;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * @author n.hoffmann
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationDetailsWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationDetailsWizardPage.java
new file mode 100644 (file)
index 0000000..b327ee3
--- /dev/null
@@ -0,0 +1,58 @@
+// $Id$
+/**
+* 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.ui.section.occurrence;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author n.hoffmann
+ * @created Dec 15, 2010
+ * @version 1.0
+ */
+public class FieldObservationDetailsWizardPage extends AbstractCdmEntityWizardPage<DerivedUnitFacade> {
+
+       /**
+        * @param formFactory
+        * @param conversation
+        * @param entity
+        */
+       public FieldObservationDetailsWizardPage(CdmFormFactory formFactory,
+                       ConversationHolder conversation, DerivedUnitFacade entity) {
+               super(formFactory, conversation, entity);
+               setTitle("Field Observation Details");
+               setPageComplete(true);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#checkComplete()
+        */
+       @Override
+       protected void checkComplete() {
+               setPageComplete(true);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
+        */
+       @Override
+       public AbstractCdmDetailElement<DerivedUnitFacade> createElement(ICdmFormElement rootElement) {
+           FieldObservationDetailsElementController detailElement = formFactory.createFieldObservationDetailsElementController(rootElement);
+               detailElement.setEntity(getEntity());
+               return detailElement;
+       }
+
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationGeneralWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationGeneralWizardPage.java
new file mode 100644 (file)
index 0000000..271c4fb
--- /dev/null
@@ -0,0 +1,58 @@
+// $Id$
+/**
+* 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.ui.section.occurrence;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationGeneralElementController;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author n.hoffmann
+ * @created Dec 17, 2010
+ * @version 1.0
+ */
+public class FieldObservationGeneralWizardPage extends AbstractCdmEntityWizardPage<DerivedUnitFacade> {
+
+       /**
+        * @param formFactory
+        * @param conversation
+        * @param entity
+        */
+       public FieldObservationGeneralWizardPage(CdmFormFactory formFactory,
+                       ConversationHolder conversation, DerivedUnitFacade entity) {
+               super(formFactory, conversation, entity);
+               setTitle("Field Observation");
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#checkComplete()
+        */
+       @Override
+       protected void checkComplete() {
+               setPageComplete(true);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
+        */
+       @Override
+       public AbstractCdmDetailElement<DerivedUnitFacade> createElement(ICdmFormElement rootElement) {
+           FieldObservationGeneralElementController detailElement = formFactory.createFieldObservationGeneralElementControllerWizard(rootElement);
+               detailElement.setEntity(getEntity());
+               checkComplete();
+               return detailElement;
+       }
+
+}
index faa92f9b7df6be93f9112520209b93c1dd844691..6ee963ea175b87c1a64cfa2945aa3858a5d7bc32 100644 (file)
@@ -14,9 +14,9 @@ import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.model.common.DefinedTerm;
 import eu.etaxonomy.cdm.model.common.TermType;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
index f1f43d42b4ef3fc40b2e9a7b4dd5f353a756ee00..cfe0c3e28f265f81c1a075bddd2a16a8dd0ca16d 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 21d3d1e68d03a8abf9b0f0cf47b3f4734f70aed8..e2049f53103ac30938b8d9579337c36c8ee5e575 100644 (file)
@@ -14,9 +14,9 @@ import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.PointElement;
index 589f2cfc32abac96488ab4bba91fa8faf8ea54fd..9c9782f498b0683f3e7b78fe0200706fe145d1f2 100644 (file)
@@ -13,8 +13,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 780f94bccff7ab0128771a47a782164a1386dda7..e0844d083bf6933c3d9fe9eabd6a34cefaaa0fe1 100644 (file)
@@ -11,9 +11,9 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index 5d2624b7a1dcd82cb6dd201ff6033200ee001e8b..a36c9975b11722a5222d5aae42879e85516875c8 100644 (file)
@@ -12,9 +12,9 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index ec26283ecf36e608ed668e8cc7748421049776db..1b9cf9b88febc1392ad6207a3ca9bab6e21f362a 100644 (file)
@@ -13,14 +13,11 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 import org.eclipse.ui.forms.widgets.ExpandableComposite;
 
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
-import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.GatheringEventUnitElement;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.MinMaxTextSection;
-import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
index 44c86337ced629fe37cc2d9cfe7c1d8e52ea6510..d82747e296df55987b4aba14b687bc9e4891c676 100644 (file)
@@ -14,8 +14,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailsWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailsWizardPage.java
new file mode 100644 (file)
index 0000000..536f82b
--- /dev/null
@@ -0,0 +1,58 @@
+// $Id$
+/**
+* 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.ui.section.occurrence;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.GatheringEventDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author n.hoffmann
+ * @created Dec 15, 2010
+ * @version 1.0
+ */
+public class GatheringEventDetailsWizardPage extends AbstractCdmEntityWizardPage<DerivedUnitFacade> {
+
+       /**
+        * @param formFactory
+        * @param conversation
+        * @param entity
+        */
+       public GatheringEventDetailsWizardPage(CdmFormFactory formFactory,
+                       ConversationHolder conversation, DerivedUnitFacade entity) {
+               super(formFactory, conversation, entity);
+               setTitle("Gathering Event Details");
+               setPageComplete(true);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#checkComplete()
+        */
+       @Override
+       protected void checkComplete() {
+               setPageComplete(true);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
+        */
+       @Override
+       public AbstractCdmDetailElement<DerivedUnitFacade> createElement(ICdmFormElement rootElement) {
+           GatheringEventDetailsElementController detailElement = formFactory.createGatheringEventDetailsElementController(rootElement);
+               detailElement.setEntity(getEntity());
+               return detailElement;
+       }
+
+}
index bcfd178d4cc87a5e45145517faa9731f304a8efd..bacd432b9371349ee46403b92473e7cbbb61cd17 100644 (file)
@@ -12,9 +12,9 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index 021e68273a1e4a55b9d9ee22fb117bed846cbe8f..7a445851207c92064ba24bbcdd1ae5aa49b0eb78 100644 (file)
@@ -13,9 +13,9 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
index 501d000bac2073ec9965b0a81fd5cc58f1a968d0..c74cc9adc1760854930fcc44daa4a7aef553d245 100644 (file)
@@ -16,8 +16,8 @@ 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.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index d988706447a02cc4846337f8955129614743f91b..d78132b9a925d3b9e93fd30157ce57bea6be2283 100644 (file)
@@ -13,9 +13,9 @@ package eu.etaxonomy.taxeditor.ui.section.occurrence;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
index 7caf8bd4ce5a222857e23815911b7c1df32743b3..aee551083a841660c225503963ca4117cecd8ce1 100644 (file)
@@ -16,8 +16,8 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenDetailsWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenDetailsWizardPage.java
new file mode 100644 (file)
index 0000000..1dcd7c7
--- /dev/null
@@ -0,0 +1,56 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.occurrence;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.SpecimenDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author pplitzner
+ * @date 30.08.2013
+ *
+ */
+public class SpecimenDetailsWizardPage extends AbstractCdmEntityWizardPage<DerivedUnitFacade> {
+
+    /**
+     * @param formFactory
+     * @param conversation
+     * @param entity
+     */
+    public SpecimenDetailsWizardPage(CdmFormFactory formFactory,
+            ConversationHolder conversation, DerivedUnitFacade entity) {
+        super(formFactory, conversation, entity);
+        setTitle("Specimen Details");
+        setPageComplete(true);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#checkComplete()
+     */
+    @Override
+    protected void checkComplete() {
+        setPageComplete(true);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
+     */
+    @Override
+    public AbstractCdmDetailElement<DerivedUnitFacade> createElement(ICdmFormElement rootElement) {
+        SpecimenDetailsElementController detailElement = formFactory.createSpecimenDetailsElementController(rootElement);
+        detailElement.setEntity(getEntity());
+        return detailElement;
+    }
+}
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralWizardPage.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/SpecimenGeneralWizardPage.java
new file mode 100644 (file)
index 0000000..c33b784
--- /dev/null
@@ -0,0 +1,56 @@
+// $Id$
+/**
+* Copyright (C) 2013 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.occurrence;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationGeneralElementController;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author pplitzner
+ * @date 02.09.2013
+ *
+ */
+public class SpecimenGeneralWizardPage extends AbstractCdmEntityWizardPage<DerivedUnitFacade> {
+
+    /**
+     * @param formFactory
+     * @param conversation
+     * @param entity
+     */
+    public SpecimenGeneralWizardPage(CdmFormFactory formFactory,
+            ConversationHolder conversation, DerivedUnitFacade entity) {
+        super(formFactory, conversation, entity);
+        setTitle("Specimen");
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#checkComplete()
+     */
+    @Override
+    protected void checkComplete() {
+        setPageComplete(true);
+    }
+
+    /* (non-Javadoc)
+     * @see eu.etaxonomy.taxeditor.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.forms.ICdmFormElement)
+     */
+    @Override
+    public AbstractCdmDetailElement<DerivedUnitFacade> createElement(ICdmFormElement rootElement) {
+        FieldObservationGeneralElementController detailElement = formFactory.createSpecimenGeneralElementControllerWizard(rootElement);
+        detailElement.setEntity(getEntity());
+        checkComplete();
+        return detailElement;
+    }
+}
index 977e56d64c9a29b1f5972074356fa2243d183275..b97620569ea308eaea814b2ac03ed11e45ec1e73 100644 (file)
@@ -12,8 +12,8 @@ package eu.etaxonomy.taxeditor.ui.section.reference;
 
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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;
index 33cd1e7b9a856e4f6a77afc8ca726dea2c40ea40..d7756a1ee92ba561deb1f810d3e19969dc24fe59 100644 (file)
@@ -17,8 +17,8 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
index 5706de506a24193742ce81c2f697ff017bc3de8b..c468b2f43dab6dfa5728a22566b1765aa865e1be 100644 (file)
@@ -25,10 +25,10 @@ import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.AuthorHelper;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IErrorIntolerableElement;
 import eu.etaxonomy.taxeditor.ui.element.IExceptionHandler;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
index 6a8f53dbb14757c01163d7eade3a8e27e707f26d..9f0522b855fa129941af4ab9b6ed1ec2be7febd2 100644 (file)
@@ -18,8 +18,8 @@ import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
index a8bdfe4d0d4f5bdca50a1dc84334d12dbd361c83..3c34ff42d623bf56017a89ec1953f82f30b67a71 100644 (file)
@@ -14,10 +14,10 @@ import org.eclipse.swt.SWT;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IExceptionHandler;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
index 97d86685e6a348251f03466948ac1f2ffb0b2119..1d6c70e03bdf829550a595a615afe3441bd5c307 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * 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.
 */
@@ -14,11 +14,10 @@ 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.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 
 /**
@@ -49,20 +48,20 @@ public abstract class AbstractOriginalSourceElement<T extends OriginalSourceBase
                        int style) {
                super(formFactory, section, element, removeListener, style);
        }
-       
+
        /** {@inheritDoc} */
        @Override
        public void init() {
                super.init();
                setHasOriginalNameString(true);
        }
-       
+
        /** {@inheritDoc} */
        @Override
        public void createControls(ICdmFormElement formElement, int style) {
                combo_origsourcetype = formFactory
                                .createEnumComboElement(OriginalSourceType.class,
-                                               formElement, style);            
+                                               formElement, style);
                text_idInSource = formFactory.createTextWithLabelElement(formElement, "Id In Source", null, style);
                text_idNamespace = formFactory.createTextWithLabelElement(formElement, "ID Namespace", null, style);
                super.createControls(formElement, style);
index c77b5379e1ee2abed1c92d242b0a76eb25bc2a72..41636ffd10533307a4aa3d31c79d5fc9165a6124 100644 (file)
@@ -15,9 +15,9 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
index 760abcf48c6cd7fe5ba68beda8a3ad61eb2d5373..f64d119fa01c740af4d97d1a45decf504e7d454d 100644 (file)
@@ -7,10 +7,10 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.AnnotationType;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.AbstractEntityCollectionElement;
 
index 2a7fff5d2bdfde8d75d2ea6afdaa4cbf52779539..c71b12a394bb310453e4ad6c41fd9f4011cddef3 100644 (file)
@@ -11,8 +11,8 @@ import eu.etaxonomy.cdm.model.common.Annotation;
 import eu.etaxonomy.cdm.model.common.AnnotationType;
 import eu.etaxonomy.cdm.model.common.Language;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 6cc79a1bbb7575d6dce31f440fdf68179e1f1210..15d8867f6ca2b08c4a4629a9045d459f9293c0ef 100644 (file)
@@ -10,9 +10,9 @@
 package eu.etaxonomy.taxeditor.ui.section.supplemental;\r
 \r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;\r
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;\r
 \r
index a03089387b08cd5eab81116a1e6d11ebdde371ba..1f37e24e73dbf53ad59aaa90284b3d9d101cfa05 100644 (file)
@@ -10,9 +10,9 @@
 package eu.etaxonomy.taxeditor.ui.section.supplemental;\r
 \r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;\r
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
 \r
 /**\r
  * @author l.morris\r
index 28ad8a039b0e2eedd6dc5cec3c3dfc5784b95491..e819547d12b7db28baca521f6d6d9e48a01947cd 100644 (file)
@@ -7,9 +7,9 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.common.Credit;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
index 87738015ca12f384bc271a704d290a61ec6292a7..b512ed3f608f6fc0e7a3dcb6ca79cd6e80d6cef4 100644 (file)
@@ -5,12 +5,11 @@ package eu.etaxonomy.taxeditor.ui.section.supplemental;
 
 import java.util.Collection;
 
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.Credit;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 184aa6f75608348291bda195c8f48be3d3f7959d..84db702e99e9a40892aef9a48a95dee755c41e72 100644 (file)
@@ -8,10 +8,10 @@ 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.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.section.AbstractEntityCollectionElement;
index 92712b3d8ad81becaab073a90688d79c0b3e23f7..aff21c4a6e477e1f4b5d59ca5a3eb3efa5340ec1 100644 (file)
@@ -5,12 +5,11 @@ package eu.etaxonomy.taxeditor.ui.section.supplemental;
 
 import java.util.Collection;
 
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.Extension;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 22c5ce664e5698596803359ef15f8e42e3677e51..602138bc33b5f3b4a67fef78d3dc9f6df23092c2 100644 (file)
@@ -7,9 +7,9 @@ package eu.etaxonomy.taxeditor.ui.section.supplemental;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * <p>HeadlineSection class.</p>
index 4c381f8f6478d4b3034218ecb22b1a713dd7f96a..8d0bcd706de968d4eb81f4b5ce2000ae7a9a9a80 100644 (file)
@@ -6,10 +6,9 @@ package eu.etaxonomy.taxeditor.ui.section.supplemental;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * <p>IdentifiableSourceElement class.</p>
index 62b04b7e8f7eca49dad51a5494faba106f7c33da..aa50c31ea5b5b8e561f09a881421f88fc48aca77 100644 (file)
@@ -7,11 +7,11 @@ import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.Marker;
 import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 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.AbstractEntityCollectionElement;
 
 /**
index 3906eb36896989c3e65bdeb5ffe8d586fdb8dee5..ffc3f10a2b37db0062f764bb674006014e2962ba 100644 (file)
@@ -5,12 +5,11 @@ package eu.etaxonomy.taxeditor.ui.section.supplemental;
 
 import java.util.Collection;
 
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
 import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index e748ba816ffc983511412018aecdcc7f0d6c841a..49617ee1b92ce676ccd9d6995cbf3a1b259eee62 100644 (file)
@@ -8,10 +8,10 @@ import org.eclipse.swt.events.SelectionListener;
 import eu.etaxonomy.cdm.model.agent.AgentBase;
 import eu.etaxonomy.cdm.model.media.Rights;
 import eu.etaxonomy.cdm.model.media.RightsType;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 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.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
index 02d1b4eba00c7d75c31c947d7f93fb369624f6ba..98601a4850c1933ddeea7e795de7c38e57c99c94 100644 (file)
@@ -8,8 +8,8 @@ import java.util.Collection;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 8e644d609e016c13415200dee58e420fa4a9ef21..6b573f3c21d4844545846f9de0129a37e870ca7b 100644 (file)
@@ -10,8 +10,8 @@ import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
 import eu.etaxonomy.cdm.model.common.OriginalSourceType;
 import eu.etaxonomy.cdm.model.media.Media;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index 353a1dae300a6190e657c48567561b5244159ab1..7dce82ea49604e712acaa58d6f569d7109556aaf 100644 (file)
@@ -17,12 +17,11 @@ import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
-import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 
 /**
  * <p>VersionElement class.</p>
index 6e51fbe79913046ba7e281d09de1d52976c42fa7..c41b22ae1a1fe4c90224f095fea2079e2c6081fd 100644 (file)
@@ -11,9 +11,9 @@
 package eu.etaxonomy.taxeditor.ui.section.supplemental;
 
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * <p>VersionSection class.</p>
index ae5aa351493c99fcf0ec47cebe4ecf74280d7079..0647ab1cccd727d323a77499e7b7fddf9b034b9f 100644 (file)
@@ -19,9 +19,9 @@ import org.eclipse.swt.widgets.Label;
 
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * <p>ParsingMessageElement class.</p>
index bf989c41c3a3bbe6a703b7ddfea5845ad565a913..ab8400bcb039686d68beea9bd01b2d927683f13a 100644 (file)
@@ -19,8 +19,8 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
index 525d3ba3ff770f340f1f4562dd496fb69e94ee66..61da0e80171d78d380dc18b02b2fd0cae2a97f37 100644 (file)
@@ -18,9 +18,9 @@ import org.eclipse.swt.SWT;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
index e0a5d92eb6cfed6cc58c454d04f405c70ccd7cc7..db4259714f6f34019c6b8beff52a892616487092 100644 (file)
@@ -15,8 +15,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
index b28944f2a4d22b80d7559f0b62fcc7cfeca79e96..4331ba49b827071e31d015f7aabc43ae5518fad6 100644 (file)
@@ -13,9 +13,9 @@ package eu.etaxonomy.taxeditor.ui.section.taxon;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
index 7b04da49ee4a53311788e35f97fabc2f7aa40265..ddb0bf7904c32fb4ce0ad3d46cfbbd1734585c9e 100644 (file)
@@ -15,10 +15,10 @@ import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
 import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
index c787ad00d6c7ab31bd01226e64194ffe0c05381e..22fbdff0ddb58447bfdc6ba90a678a012ac44ed9 100644 (file)
@@ -13,8 +13,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index f611e6bb9b8b66dc02088693d16dff616feffbfa..47952767044f15c01c7180770e77f3c5cacf8433 100644 (file)
@@ -3,9 +3,9 @@ package eu.etaxonomy.taxeditor.ui.section.user;
 import org.eclipse.swt.events.SelectionListener;
 
 import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
index 75f83615adc1b7ccf7d2f26f9589c856d4b34484..7846a03d6add9c9a76c66577f6a9a959a4778dce 100644 (file)
@@ -8,9 +8,9 @@ import java.util.Collection;
 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.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.GroupSelectionDialog;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
 
 /**
index ad14db124aaa8cbd95178152583c78e3c9411297..438c860e4416d493cc32f1503a86fb51f7395efa 100644 (file)
@@ -6,9 +6,9 @@ package eu.etaxonomy.taxeditor.ui.section.user;
 import eu.etaxonomy.cdm.model.agent.Person;
 import eu.etaxonomy.cdm.model.common.User;
 import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 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.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
index a80b492c070a74a1f27225c8fbc7e20506714615..ca02496c09d95dcc07ffae6f5bf406a53f85f1cd 100644 (file)
@@ -10,8 +10,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
 
index 972b92dc637a70813541891d4cbd349d35f86717..3f358d271ce06e585fdaa2fc86052cb60f23446c 100644 (file)
@@ -5,9 +5,9 @@ package eu.etaxonomy.taxeditor.ui.section.user;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
 /**
index 9217a71d89af8f5b2854ee53df2ad55f671b88d0..d3e0f7fcb75d4b51395f0d1bf911671e89aa518d 100644 (file)
@@ -1,8 +1,8 @@
 /**\r
 * Copyright (C) 2011 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
 * http://www.e-taxonomy.eu\r
-* \r
+*\r
 * The contents of this file are subject to the Mozilla Public License Version 1.1\r
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
@@ -14,6 +14,7 @@ import java.util.List;
 import java.util.ListIterator;\r
 import java.util.Map;\r
 import java.util.Set;\r
+\r
 import org.apache.log4j.Logger;\r
 import org.eclipse.swt.events.SelectionEvent;\r
 import org.eclipse.swt.events.SelectionListener;\r
@@ -28,16 +29,16 @@ import eu.etaxonomy.cdm.model.description.StateData;
 import eu.etaxonomy.taxeditor.editor.UsageTermCollection;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
 import eu.etaxonomy.taxeditor.store.TermStore;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;\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
 \r
\r
+\r
 /**\r
  * The context manager mediates context start/stop and workbench shutdowns to all registered listeners.\r
  *\r
- * @author a.theys     \r
+ * @author a.theys\r
  * @created mar 13, 2012\r
  * @version 1.0\r
  */\r
@@ -72,14 +73,14 @@ public class UseRecordDetailElement extends
                combo_HumanGroup.addSelectionListener(this);\r
                combo_EthnicGroup = formFactory.createTermComboElement(DefinedTerm.class, this, UsageTermCollection.ethnicGroupLabel, null, style);\r
                combo_Country   = formFactory.createTermComboElement(DefinedTerm.class, this, UsageTermCollection.countryLabel, null, style);\r
-               \r
+\r
 \r
                List<State> termsUseCategory = setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false));\r
                combo_UseCategory.setTerms(termsUseCategory);\r
                combo_UseCategory.setSelection(stateSelection(UsageTermCollection.useCategoryVocabularyLabel));\r
-               \r
+\r
                List<State> termsSubCategory = setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false), combo_UseCategory.getSelection());\r
-               \r
+\r
                if (termsSubCategory != null) {\r
                        combo_UseSubCategory.setTerms(termsSubCategory);\r
                        combo_UseSubCategory.setSelection(stateSelection(UsageTermCollection.useSubCategoryVocabularyLabel));\r
@@ -88,19 +89,19 @@ public class UseRecordDetailElement extends
                else {\r
                        combo_UseSubCategory.setEnabled(false);\r
                }\r
-               \r
+\r
                List<DefinedTerm> plantPartsToAdd = setModifierComboTerms(TermStore.getTerms(DefinedTerm.class, null, false), UsageTermCollection.plantPartLabel);\r
                combo_PlantPart.setTerms(plantPartsToAdd);\r
                combo_PlantPart.setSelection(modifierSelection(UsageTermCollection.plantPartLabel));\r
-               \r
+\r
                List<DefinedTerm> countriesToAdd = setModifierComboTerms(TermStore.getTerms(DefinedTerm.class, null, false), UsageTermCollection.countryLabel);\r
                combo_Country.setTerms(countriesToAdd);\r
                combo_Country.setSelection(modifierSelection(UsageTermCollection.countryLabel));\r
-               \r
+\r
                List<DefinedTerm> humanGroupToAdd = setModifierComboTerms(TermStore.getTerms(DefinedTerm.class, null, false), UsageTermCollection.humanGroupLabel);\r
                combo_HumanGroup.setTerms(humanGroupToAdd);\r
                combo_HumanGroup.setSelection(modifierSelection(UsageTermCollection.humanGroupLabel));\r
-               \r
+\r
                List<DefinedTerm> ethnicGroupToAdd = setEthnicGroupComboTerms(TermStore.getTerms(DefinedTerm.class, null, false), combo_HumanGroup.getSelection());\r
                if (ethnicGroupToAdd != null) {\r
                        combo_EthnicGroup.setTerms(ethnicGroupToAdd);\r
@@ -128,9 +129,9 @@ public class UseRecordDetailElement extends
                        return null;\r
                }\r
                return null;\r
-               \r
+\r
        }\r
-       \r
+\r
        /**\r
         * Returns the selected state\r
         * @param comboCategory\r
@@ -146,16 +147,16 @@ public class UseRecordDetailElement extends
                                                        return statedata.getState();\r
                                                }\r
                                        }\r
-                               }                               \r
+                               }\r
                        }\r
                }\r
                else {\r
                        return null;\r
                }\r
                return null;\r
-               \r
+\r
        }\r
-       \r
+\r
        /**\r
         * This function sets the combo terms (Besides EthnicGroup\r
         * @param listOfTerms\r
@@ -173,10 +174,10 @@ public class UseRecordDetailElement extends
                                termsToAdd.add(term);\r
                        }\r
                }\r
-               \r
+\r
                return termsToAdd;\r
        }\r
-       \r
+\r
 \r
        /**\r
         * This function sets the Use Category combo term\r
@@ -208,7 +209,7 @@ public class UseRecordDetailElement extends
                        State selectedUseCategory) {\r
                List<State> termsToAdd = new ArrayList<State>();\r
                if (combo_UseCategory.getSelection() != null) {\r
-                       \r
+\r
                        for (State term : listOfTerms) {\r
                                if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(selectedUseCategory.getTitleCache()))) {\r
                                        termsToAdd.add(term);\r
@@ -216,7 +217,7 @@ public class UseRecordDetailElement extends
                                else if ((term.getVocabulary() !=null) && (term.getVocabulary().getTitleCache().equals(selectedUseCategory.getTitleCache()))) {\r
                                        termsToAdd.add(term);\r
                                }\r
-       \r
+\r
                        }\r
                }\r
                else if (!getEntity().getStateData().isEmpty()) {\r
@@ -230,21 +231,21 @@ public class UseRecordDetailElement extends
                                                                termsToAdd.add(term);\r
                                                        }\r
                                                }\r
-                                               \r
+\r
                                        }\r
                                }\r
                        }\r
-                       \r
+\r
                }\r
-                       \r
+\r
                else {\r
                        return null;\r
                }\r
 \r
                return termsToAdd;\r
        }\r
-       \r
-       \r
+\r
+\r
        /**\r
         * This function sets the EthnicGroup combo term\r
         * @param listOfTerms\r
@@ -256,7 +257,7 @@ public class UseRecordDetailElement extends
                List<DefinedTerm> termsToAdd = new ArrayList<DefinedTerm>();\r
                if (combo_HumanGroup.getSelection() != null) {\r
                        for (DefinedTerm term : listOfTerms) {\r
-       \r
+\r
                                if ((term.getPartOf() != null) && (term.getPartOf().getTitleCache().equals(selectedHumangroup.getTitleCache()))) {\r
                                        termsToAdd.add(term);\r
                                }\r
@@ -277,7 +278,7 @@ public class UseRecordDetailElement extends
                                                                        termsToAdd.add(modifier);\r
                                                                }\r
                                                        }\r
-                                                       \r
+\r
                                                }\r
                                        }\r
                                }\r
@@ -285,11 +286,11 @@ public class UseRecordDetailElement extends
                } else {\r
                        return null;\r
                }\r
-               \r
+\r
                return termsToAdd;\r
        }\r
 \r
-       \r
+\r
        /** {@inheritDoc} */\r
        @Override\r
        public void handleEvent(Object eventSource) {\r
@@ -304,7 +305,7 @@ public class UseRecordDetailElement extends
                                                        if(!useCategoryStateDataCheck.getState().getTitleCache().equals(combo_UseCategory.getSelection().getTitleCache())) {\r
                                                                isUseCategoryChanged = true;\r
                                                        }\r
-                                                       \r
+\r
                                                }\r
                                        }\r
                                        ListIterator<StateData> itrExistingStates = getEntity().getStateData().listIterator();\r
@@ -321,7 +322,7 @@ public class UseRecordDetailElement extends
                                                                        stateData.setState(combo_UseCategory.getSelection());\r
                                                                        stateData.putModifyingText(CdmStore.getDefaultLanguage(),UsageTermCollection.useCategoryVocabularyLabel);\r
                                                                        itrExistingStates.add(stateData);\r
-                                                                       \r
+\r
                                                                }\r
                                                        } else if (modifyingText.get(CdmStore.getDefaultLanguage()).getText().equals(UsageTermCollection.useSubCategoryVocabularyLabel) && isUseCategoryChanged == true) {\r
                                                                itrExistingStates.remove();\r
@@ -329,8 +330,8 @@ public class UseRecordDetailElement extends
                                                }\r
                                        }\r
                                }\r
-                               \r
-                               \r
+\r
+\r
                                if (isChanged == false) {\r
                                        StateData stateData = StateData\r
                                                        .NewInstance(combo_UseCategory.getSelection());\r
@@ -338,9 +339,9 @@ public class UseRecordDetailElement extends
                                        stateData.putModifyingText(CdmStore.getDefaultLanguage(), UsageTermCollection.useCategoryVocabularyLabel);\r
                                        getEntity().addStateData(stateData);\r
                                }\r
-                               \r
+\r
                                combo_UseSubCategory.setEnabled(true);\r
-       \r
+\r
                        }\r
                        else {\r
                                if (!getEntity().getStateData().isEmpty()) {\r
@@ -357,7 +358,7 @@ public class UseRecordDetailElement extends
                                }\r
                        }\r
                }\r
-                       \r
+\r
                if (eventSource == combo_UseSubCategory) {\r
                        if (combo_UseSubCategory.getSelection() != null) {\r
                                boolean isChanged = false;\r
@@ -381,7 +382,7 @@ public class UseRecordDetailElement extends
                                                }\r
                                        }\r
                                }\r
-                               \r
+\r
                                if (isChanged == false){\r
                                        StateData stateData = StateData\r
                                                        .NewInstance(combo_UseSubCategory.getSelection());\r
@@ -389,7 +390,7 @@ public class UseRecordDetailElement extends
                                        stateData.putModifyingText(CdmStore.getDefaultLanguage(), UsageTermCollection.useSubCategoryVocabularyLabel);\r
                                        getEntity().addStateData(stateData);\r
                                }\r
-       \r
+\r
                        } else {\r
                                if (!getEntity().getStateData().isEmpty()) {\r
                                        Iterator<StateData> itrStateData = getEntity().getStateData().iterator();\r
@@ -415,8 +416,8 @@ public class UseRecordDetailElement extends
                                        if(GetVocabularyType(modifier, UsageTermCollection.plantPartLabel)) {\r
                                                itrExistingModifiers.remove();\r
                                        }\r
-                                               \r
-                               }       \r
+\r
+                               }\r
                                DefinedTerm plantPart = combo_PlantPart.getSelection();\r
                                getEntity().addModifier(plantPart);\r
                        } else {\r
@@ -430,7 +431,7 @@ public class UseRecordDetailElement extends
                                                }\r
                                        }\r
                                }\r
-                               \r
+\r
                        }\r
                }\r
                if (eventSource == combo_Country) {\r
@@ -441,7 +442,7 @@ public class UseRecordDetailElement extends
                                        if(GetVocabularyType(modifier, UsageTermCollection.countryLabel)) {\r
                                                itrExistingModifiers.remove();\r
                                        }\r
-                                               \r
+\r
                                }\r
                                DefinedTerm country = combo_Country.getSelection();\r
                                getEntity().addModifier(country);\r
@@ -465,8 +466,8 @@ public class UseRecordDetailElement extends
                                        if(modToCheck.equals(combo_HumanGroup.getSelection()) && (GetVocabularyType(modToCheck, UsageTermCollection.humanGroupLabel))) {\r
                                                isHumanGroupChanged = false;\r
                                }\r
-                               \r
-                                       \r
+\r
+\r
                                }\r
                                Iterator<DefinedTerm> itrExistingModifiers = getEntity().getModifiers().iterator();\r
                                while (itrExistingModifiers.hasNext()) {\r
@@ -474,8 +475,8 @@ public class UseRecordDetailElement extends
                                        if((GetVocabularyType(modifier, UsageTermCollection.humanGroupLabel) || GetVocabularyType(modifier, UsageTermCollection.ethnicGroupLabel)) && isHumanGroupChanged) {\r
                                                itrExistingModifiers.remove();\r
                                        }\r
-                                               \r
-                               }       \r
+\r
+                               }\r
                                if(isHumanGroupChanged){\r
                                        DefinedTerm humanGroup = combo_HumanGroup.getSelection();\r
                                        getEntity().addModifier(humanGroup);\r
@@ -496,12 +497,12 @@ public class UseRecordDetailElement extends
                                \r
 //                             DefinedTerm emptyMod = DefinedTerm.NewInstance();\r
                                DefinedTerm emptyMod = null;\r
-                               \r
-                               \r
+\r
+\r
                                emptyListToResetComboBox.add(emptyMod);\r
                                combo_EthnicGroup.setTerms(emptyListToResetComboBox);\r
                                combo_EthnicGroup.setEnabled(false);\r
-                               \r
+\r
                        }\r
                }\r
                if (eventSource == combo_EthnicGroup) {\r
@@ -512,14 +513,14 @@ public class UseRecordDetailElement extends
                                                if(GetVocabularyType(modifier, combo_HumanGroup.getSelection().getTitleCache())) {\r
                                                        itrExistingModifiers.remove();\r
                                                }\r
-                                               \r
-                                       }       \r
+\r
+                                       }\r
                                        DefinedTerm ethnicGroup = combo_EthnicGroup.getSelection();\r
                                        getEntity().addModifier(ethnicGroup);\r
                        } else {\r
                                Set<DefinedTerm> modifiers = getEntity().getModifiers();\r
                                if(!modifiers.isEmpty()) {\r
-                                       \r
+\r
                                        Iterator<DefinedTerm> itr = modifiers.iterator();\r
                                        while (itr.hasNext()) {\r
                                                DefinedTerm currentMod = itr.next();\r
@@ -527,13 +528,13 @@ public class UseRecordDetailElement extends
                                                        itr.remove();\r
                                                }\r
                                        }\r
-                                       \r
+\r
                                }\r
                        }\r
                }\r
        }\r
-       \r
-       \r
+\r
+\r
 \r
        /**\r
         * This function Checks the vocabulary type\r
@@ -553,8 +554,8 @@ public class UseRecordDetailElement extends
                }\r
        return false;\r
        }\r
-       \r
-       \r
+\r
+\r
 \r
        /** {@inheritDoc} */\r
        @Override\r
@@ -571,11 +572,11 @@ public class UseRecordDetailElement extends
                                State selectedUseCategory = combo_UseCategory.getSelection();\r
                                if (selectedUseCategory != null) {\r
                                        combo_UseSubCategory.setTerms(setUseCategoryComboTerms(TermStore.getTerms(State.class, null, false),selectedUseCategory));\r
-                               \r
+\r
                                        if (!getEntity().getStateData().isEmpty()) {\r
                                                Iterator<StateData> itrExistingState = getEntity().getStateData().iterator();\r
                                                while(itrExistingState.hasNext()) {\r
-                                                       StateData existingStateData = (StateData) itrExistingState.next();\r
+                                                       StateData existingStateData = itrExistingState.next();\r
                                                        Map<Language, LanguageString> modifyingText = existingStateData.getModifyingText();\r
                                                        if (modifyingText.get(CdmStore.getDefaultLanguage()) != null) {\r
                                                                if (modifyingText.get(CdmStore.getDefaultLanguage())\r
@@ -602,7 +603,7 @@ public class UseRecordDetailElement extends
                                                        }\r
                                                }\r
                                        }\r
-                                       \r
+\r
                                }\r
                        }\r
                }\r
index 01b8ce6e5aa6cae218f36dcf69efd83a438d3327..fc6bd396099693db68fe0866f73d196c880e57c2 100644 (file)
@@ -13,8 +13,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\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
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;\r
 \r
index 04428ca910cde207a548951eb0f5d715908dd0e2..66df36da8433e91803090a783ffe107ffca27fb1 100644 (file)
@@ -14,8 +14,8 @@ import eu.etaxonomy.cdm.model.common.TermBase;
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.editor.definedterm.TermBasePropertyTester;\r
 import eu.etaxonomy.taxeditor.store.CdmStore;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\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
 import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;\r
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;\r
index f6b7aeda6f3787a89ef3b90afc19030842955c5c..7878c67965ec20380da982e21f458e642923a5cc 100644 (file)
@@ -11,8 +11,8 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 \r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
 \r
 /**\r
  * @author l.morris\r
index b7e482e6021c2c55b625433460e36ff9b0a6e329..f8006d17e7248d66ad42647c511de12737c89b75 100644 (file)
@@ -13,8 +13,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 \r
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\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
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;\r
 \r
index 441cd85b2601fb8ab25df012e1a97e68ac3b975d..78c0d19c31626d93f19c08524342789c939f0a5f 100644 (file)
@@ -10,9 +10,9 @@
 package eu.etaxonomy.taxeditor.ui.section.vocabulary;\r
 \r
 import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\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
 \r
 /**\r
  * @author l.morris\r
index 20eb288643c73e86bf59d32c5a509b3d97545eb6..d95886b74ee1b3aaf9a82eed4646116434b0ebbc 100644 (file)
@@ -12,13 +12,12 @@ package eu.etaxonomy.taxeditor.ui.section.vocabulary;
 import java.net.URISyntaxException;\r
 \r
 import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.common.Representation;\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
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;\r
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
 import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;\r
 \r
 /**\r
index 86082a69091da8672f363862ef07f576943f3f48..45a21807ce29560f041ba543d37bd31e28adf114 100644 (file)
@@ -13,8 +13,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 \r
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
 import eu.etaxonomy.cdm.model.location.NamedArea;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\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
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;\r
 \r
index 69daf2ba76b39f7046cad95a9767df3b09f11722..d1d015c0af51cee3009d39f9eb06823f47b7a787 100644 (file)
@@ -13,8 +13,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 \r
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
 import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\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
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;\r
 \r
index de79af502a287e9e5679af6010d2104a0e4c2515..17ecf9c1236f4491ccd58b9126d8710c0bd33d9e 100644 (file)
@@ -13,8 +13,8 @@ import java.net.URISyntaxException;
 \r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.taxeditor.store.StoreUtil;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\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
 \r
 /**\r
index 767ffb8fef3d93ff17677bd9dee7224373944fae..a5c2a370c788cd228921c96e26fb6bd688bd10a6 100644 (file)
@@ -13,8 +13,8 @@ import org.eclipse.jface.viewers.ISelectionProvider;
 \r
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;\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
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;\r
 \r
index c0ed01d690253cbbb46b285e000d5240fb53375c..a6c48e0b6db56c8a82b9823d7b9cd4256a680401 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
  * 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.
  */
@@ -40,7 +40,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectionWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventWizardPage;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.GeneralWizardPage;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceWizardPage;
 import eu.etaxonomy.taxeditor.ui.section.user.UserDetailWizardPage;
 
@@ -48,7 +48,7 @@ import eu.etaxonomy.taxeditor.ui.section.user.UserDetailWizardPage;
  * <p>
  * EditFromSelectionWizard class.
  * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Jun 1, 2010
  * @version 1.0
@@ -62,7 +62,7 @@ public class EditFromSelectionWizard extends Wizard implements
         * <p>
         * Constructor for EditFromSelectionWizard.
         * </p>
-        * 
+        *
         * @param selectionElement
         *            a
         *            {@link eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement}
@@ -107,7 +107,7 @@ public class EditFromSelectionWizard extends Wizard implements
                                throw new IllegalStateException();
                        }
 
-                       addPage(new GeneralWizardPage(formFactory,
+                       addPage(new DerivedUnitGeneralWizardPage(formFactory,
                                        selectionElement.getConversationHolder(), facade));
                        addPage(new GatheringEventWizardPage(formFactory,
                                        selectionElement.getConversationHolder(), facade));
@@ -124,19 +124,19 @@ public class EditFromSelectionWizard extends Wizard implements
                                        selectionElement.getConversationHolder(),
                                        (Institution) entity));
                } else if (entity instanceof User) {
-                       addPage(new UserDetailWizardPage(formFactory, 
-                                       selectionElement.getConversationHolder(), 
+                       addPage(new UserDetailWizardPage(formFactory,
+                                       selectionElement.getConversationHolder(),
                                        (User) entity));
                } else {
                        StoreUtil.warningDialog("Missing interface", this,
                                        "No detail element for current selection");
-               } 
+               }
 
        }
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see org.eclipse.jface.wizard.Wizard#performFinish()
         */
        /** {@inheritDoc} */
index ac75ba86b7a4caa422922aae28183125c2fb982c..aeb94bafd102d86ee8799fded2ff6dbddbe36298 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * 
+ *
  */
 package eu.etaxonomy.taxeditor.ui.selection;
 
@@ -26,15 +26,14 @@ import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.preference.Resources;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.SelectionDialogFactory;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
 import eu.etaxonomy.taxeditor.ui.element.ILabeledElement;
-import eu.etaxonomy.taxeditor.ui.element.ISelectable;
 import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
@@ -43,16 +42,14 @@ import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
  * <p>
  * Abstract AbstractSelectionElement class.
  * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Nov 17, 2009
  * @version 1.0
  * @param <T>
  */
 public class EntitySelectionElement<T extends ICdmBase> extends
-               AbstractCdmFormElement implements SelectionListener,
-               IEnableableFormElement, ISelectableElement, IEntityElement<T>,
-               ILabeledElement, IConversationEnabled, ISelectable {
+               AbstractCdmFormElement implements  SelectionListener, IEnableableFormElement, ISelectableElement, IEntityElement<T>, ILabeledElement, IConversationEnabled {
 
        /**
         * Bitmask for configuring functionality of selection element
@@ -90,7 +87,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
         * <p>
         * Constructor for AbstractSelectionElement.
         * </p>
-        * 
+        *
         * @param formFactory
         *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
         *            object.
@@ -122,7 +119,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
                this.isEditable = (mode & EDITABLE) == EDITABLE;
                this.isDeletable = (mode & DELETABLE) == DELETABLE;
                boolean isSelectable = (mode & SELECTABLE) == SELECTABLE;
-               
+
                this.labelString = labelString;
 
                this.conversation = conversation;
@@ -135,7 +132,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
 
                setEntity(entity);
        }
-       
+
        public EntitySelectionElement(CdmFormFactory formFactory,
                        ConversationHolder conversation, ICdmFormElement parentElement, Class<T> clazz,
                        String labelString, T entity, int mode, int style) {
@@ -177,7 +174,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
                button_selection.setImage(ImageResources
                                .getImage(ImageResources.BROWSE_ICON));
                button_selection.setToolTipText("Browse existing");
-               
+
                addControl(button_selection);
                button_selection.addSelectionListener(this);
 
@@ -202,14 +199,15 @@ public class EntitySelectionElement<T extends ICdmBase> extends
                }
        }
 
-       public void widgetSelected(SelectionEvent e) {
+       @Override
+    public void widgetSelected(SelectionEvent e) {
                T selection = SelectionDialogFactory.getSelectionFromDialog(clazz, getShell(), getConversationHolder(), getEntity());
                setSelectionInternal(selection);
        }
-       
+
        /**
         * Return the selected object
-        * 
+        *
         * @return a T object.
         */
        public T getSelection() {
@@ -218,7 +216,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
         */
@@ -235,7 +233,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
         * <p>
         * setSelectionInternal
         * </p>
-        * 
+        *
         * @param selection
         *            a T object.
         */
@@ -250,7 +248,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
         * <p>
         * Setter for the field <code>entity</code>.
         * </p>
-        * 
+        *
         * @param selection
         *            a T object.
         */
@@ -273,12 +271,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
                }
        }
 
-       /**
-        * <p>
-        * updateFromWizard
-        * </p>
-        */
-       protected void updateFromWizard() {
+    public void updateFromWizard() {
                updateElement();
                firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
        }
@@ -287,7 +280,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
         * <p>
         * getTitle
         * </p>
-        * 
+        *
         * @return a {@link java.lang.String} object.
         */
        protected String getTitle() {
@@ -311,14 +304,14 @@ public class EntitySelectionElement<T extends ICdmBase> extends
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see eu.etaxonomy.taxeditor.forms.IEntityElement#getEntity()
         */
        /**
         * <p>
         * Getter for the field <code>entity</code>.
         * </p>
-        * 
+        *
         * @return a T object.
         */
        @Override
@@ -328,7 +321,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see eu.etaxonomy.taxeditor.forms.section.cdmdetail.ISelectableElement#
         * getSelectionArbitrator()
         */
@@ -336,7 +329,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
         * <p>
         * Getter for the field <code>selectionArbitrator</code>.
         * </p>
-        * 
+        *
         * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
         *         object.
         */
@@ -347,10 +340,10 @@ public class EntitySelectionElement<T extends ICdmBase> extends
 
        /**
         * Convenient access to current shell
-        * 
+        *
         * @return a {@link org.eclipse.swt.widgets.Shell} object.
         */
-       protected Shell getShell() {
+    public Shell getShell() {
                return getLayoutComposite().getShell();
        }
 
@@ -409,7 +402,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
         * <p>
         * getConversationHolder
         * </p>
-        * 
+        *
         * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
         *         object.
         */
@@ -436,7 +429,7 @@ public class EntitySelectionElement<T extends ICdmBase> extends
         * <p>
         * Getter for the field <code>label</code>.
         * </p>
-        * 
+        *
         * @return a {@link java.lang.String} object.
         */
        @Override
index ca90432a5ff9621a29b9d5b84c2f8540327a760b..d516eaef4878ff6c68a6d81bf394258cdaea1e0d 100644 (file)
@@ -14,9 +14,9 @@ import org.eclipse.swt.events.SelectionEvent;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.NomenclaturalAuthorTeamSelectionDialog;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * <p>
index 150ed77d18673817b75d0b36d452b7097522a094..8d8d15dfa3e90b20e72a455df11599c0c363aaae 100644 (file)
@@ -15,9 +15,9 @@ import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.model.taxon.Classification;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 
 /**
  * @author n.hoffmann
index 0eb7c6c6ea9283a3be39515e4f70ec4604a49d69..2b89d66973747d8b86b09b27b1af93ccb17fa29e 100644 (file)
@@ -29,9 +29,9 @@ import eu.etaxonomy.cdm.model.common.LanguageString;
 import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
 import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement;
index 4d20a88ed1877135cf08c240b24408995cabaec7..9ab025086f14916cbfb2cf6c920ffa2ab0f64153 100644 (file)
@@ -86,10 +86,6 @@ public abstract class AbstractCdmViewPart extends ViewPart implements ISelection
                return selectionService.getSelection();
        }
 
-       private void createViewerComposite(Composite parent) {
-               viewerComposite = new SashForm(parent, SWT.HORIZONTAL);
-       }
-
        /**
         * <p>showEmptyPage</p>
         */
index 2443ae63eecef8cab2ecaf0e3c2610466aa4588f..495d4235239490b84ef804a62f9aa492a941466f 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
  * 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.
  */
@@ -23,7 +23,7 @@ import eu.etaxonomy.taxeditor.model.IElementHasDetails;
 import eu.etaxonomy.taxeditor.model.PolytomousKeyRelationship;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
 import eu.etaxonomy.taxeditor.ui.section.key.GeographicalScopeDetailSection;
@@ -36,7 +36,7 @@ import eu.etaxonomy.taxeditor.ui.section.occurrence.IDerivedUnitFacadeDetailSect
  * <p>
  * CdmSectionPart class.
  * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Feb 8, 2010
  * @version 1.0
@@ -50,7 +50,7 @@ public class CdmSectionPart<T> extends SectionPart implements
         * <p>
         * Constructor for CdmSectionPart.
         * </p>
-        * 
+        *
         * @param section
         *            a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
         *            object.
@@ -92,24 +92,24 @@ public class CdmSectionPart<T> extends SectionPart implements
                if (input instanceof PolytomousKeyRelationship) {
                        input = ((PolytomousKeyRelationship) input).getDestination();
                }
-               
-           if ((input instanceof PolytomousKeyNode) && 
-                   (formSection instanceof PolytomousKeyDetailSection || 
-                           formSection instanceof GeographicalScopeDetailSection || 
-                           formSection instanceof ScopeRestrictionSection || 
+
+           if ((input instanceof PolytomousKeyNode) &&
+                   (formSection instanceof PolytomousKeyDetailSection ||
+                           formSection instanceof GeographicalScopeDetailSection ||
+                           formSection instanceof ScopeRestrictionSection ||
                            formSection instanceof TaxonomicScopeSection)) {
                input = ((PolytomousKeyNode)input).getKey();
            }
-           
-               
+
+
                formSection.setEntity((T) input);
-               
+
                return true;
        }
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse
         * .jface.util.PropertyChangeEvent)
@@ -119,14 +119,14 @@ public class CdmSectionPart<T> extends SectionPart implements
        public void propertyChange(PropertyChangeEvent event) {
                if (event != null) {
 
-                       Object eventSource = event.getSource();                 
-                       
+                       Object eventSource = event.getSource();
+
                        if (formSection.equals(eventSource)){
                                markDirty();
                        }
                        if((
-                                               (eventSource instanceof AbstractCdmFormElement) 
-                                               && formSection.containsFormElement((AbstractCdmFormElement) eventSource))
+                                               (eventSource instanceof ICdmFormElement)
+                                               && formSection.containsFormElement((ICdmFormElement) eventSource))
                                                ) {
                                markDirty();
                        }
index 6300a9538b7aacf767200a7c4f92591503ec6e18..a5df6cd3159d2602b3820e4cd3fa70aa25a506df 100644 (file)
@@ -36,6 +36,7 @@ import eu.etaxonomy.cdm.model.description.DescriptionBase;
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
 import eu.etaxonomy.cdm.model.description.PolytomousKey;
 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
+import eu.etaxonomy.cdm.model.description.SpecimenDescription;
 import eu.etaxonomy.cdm.model.media.Media;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
@@ -202,24 +203,30 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                        createTeamOrPersonBaseDetailSection(rootElement);
 
         } else if (input instanceof DescriptionBase) {
-            Set<Marker> descriptionMarkers = ((DescriptionBase) input).getMarkers();
-            MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(
-                    UsageTermCollection.uuidUseMarkerType);
-                       Boolean isUseDescription = false;
-                       for (Marker marker : descriptionMarkers) {
-                               if (marker.getMarkerType().equals(useMarkertype)) {
-                                       isUseDescription = true;
-                               }
-                       }
-            if (((DescriptionBase) input).isImageGallery()) {
-                               createImageGallerySection(rootElement);
-
-                       } else if (isUseDescription) {
-                               createUseDescriptionSection(rootElement);
-                       } else {
-                               createDescriptionSection(rootElement);
-
-                       }
+            if(input instanceof SpecimenDescription){
+                //TODO: add more sections to DetailsView for SpecimenDescription
+                createSpecimenDescriptionSection(rootElement);
+            }
+            else{
+                Set<Marker> descriptionMarkers = ((DescriptionBase) input).getMarkers();
+                MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(
+                        UsageTermCollection.uuidUseMarkerType);
+                Boolean isUseDescription = false;
+                for (Marker marker : descriptionMarkers) {
+                    if (marker.getMarkerType().equals(useMarkertype)) {
+                        isUseDescription = true;
+                    }
+                }
+                if (((DescriptionBase) input).isImageGallery()) {
+                    createImageGallerySection(rootElement);
+
+                } else if (isUseDescription) {
+                    createUseDescriptionSection(rootElement);
+                } else {
+                    createDescriptionSection(rootElement);
+
+                }
+            }
         } else if (input instanceof DescriptionElementBase) {
             Set<Marker> descriptionMarkers = ((DescriptionElementBase) input).getInDescription().getMarkers();
             MarkerType useMarkertype = (MarkerType) CdmStore.getService(ITermService.class).find(
@@ -514,6 +521,17 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                addPart(scopeSection);
        }
 
+       /**
+        * createDescriptionSection
+        *
+        * @param parent
+        */
+       private void createSpecimenDescriptionSection(RootElement parent) {
+           destroySections();
+           DescriptionDetailSection descriptionDetailSection = formFactory.createDescriptionDetailSection(getConversationHolder(), parent, this, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+           addPart(descriptionDetailSection);
+       }
+
        /**
         * Creates the use Description section
      *
index 18e07cb06259da04554adc530ee428a345be4ce0..d64877ab3c51c99c61efe58f1422adba99a95164 100644 (file)
@@ -58,6 +58,10 @@ public class SupplementalDataViewPart extends AbstractCdmEditorViewPart {
                        return;
                }
 
+        if(part == this){
+            return;
+        }
+
         if(!(selection instanceof IStructuredSelection)){
             return;
         }
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/org/eclipse/wb/swt/ResourceManager.java b/eu.etaxonomy.taxeditor.store/src/main/java/org/eclipse/wb/swt/ResourceManager.java
new file mode 100644 (file)
index 0000000..2f940d8
--- /dev/null
@@ -0,0 +1,415 @@
+/*******************************************************************************\r
+ * Copyright (c) 2011 Google, Inc.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *    Google, Inc. - initial API and implementation\r
+ *******************************************************************************/\r
+package org.eclipse.wb.swt;
+
+import java.io.File;\r
+import java.io.InputStream;\r
+import java.lang.reflect.Constructor;\r
+import java.lang.reflect.Method;\r
+import java.net.MalformedURLException;\r
+import java.net.URL;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.Map;\r
+\r
+import org.eclipse.core.runtime.Platform;\r
+import org.eclipse.jface.resource.CompositeImageDescriptor;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.swt.graphics.Image;\r
+import org.eclipse.swt.graphics.Point;\r
+import org.eclipse.swt.graphics.Rectangle;\r
+import org.osgi.framework.Bundle;\r
+
+/**
+ * Utility class for managing OS resources associated with SWT/JFace controls such as colors, fonts, images,
+ * etc.
+ * 
+ * !!! IMPORTANT !!! Application code must explicitly invoke the <code>dispose()</code> method to release the
+ * operating system resources managed by cached objects when those objects and OS resources are no longer
+ * needed (e.g. on application shutdown)
+ * 
+ * This class may be freely distributed as part of any application or plugin.
+ * <p>
+ * 
+ * @author scheglov_ke
+ * @author Dan Rubel
+ */
+public class ResourceManager extends SWTResourceManager {
+       ////////////////////////////////////////////////////////////////////////////
+       //
+       // Image
+       //
+       ////////////////////////////////////////////////////////////////////////////
+       private static Map<ImageDescriptor, Image> m_descriptorImageMap = new HashMap<ImageDescriptor, Image>();
+       /**
+        * Returns an {@link ImageDescriptor} stored in the file at the specified path relative to the specified
+        * class.
+        * 
+        * @param clazz
+        *            the {@link Class} relative to which to find the image descriptor.
+        * @param path
+        *            the path to the image file.
+        * @return the {@link ImageDescriptor} stored in the file at the specified path.
+        */
+       public static ImageDescriptor getImageDescriptor(Class<?> clazz, String path) {
+               return ImageDescriptor.createFromFile(clazz, path);
+       }
+       /**
+        * Returns an {@link ImageDescriptor} stored in the file at the specified path.
+        * 
+        * @param path
+        *            the path to the image file.
+        * @return the {@link ImageDescriptor} stored in the file at the specified path.
+        */
+       public static ImageDescriptor getImageDescriptor(String path) {
+               try {
+                       return ImageDescriptor.createFromURL(new File(path).toURI().toURL());
+               } catch (MalformedURLException e) {
+                       return null;
+               }
+       }
+       /**
+        * Returns an {@link Image} based on the specified {@link ImageDescriptor}.
+        * 
+        * @param descriptor
+        *            the {@link ImageDescriptor} for the {@link Image}.
+        * @return the {@link Image} based on the specified {@link ImageDescriptor}.
+        */
+       public static Image getImage(ImageDescriptor descriptor) {
+               if (descriptor == null) {
+                       return null;
+               }
+               Image image = m_descriptorImageMap.get(descriptor);
+               if (image == null) {
+                       image = descriptor.createImage();
+                       m_descriptorImageMap.put(descriptor, image);
+               }
+               return image;
+       }
+       /**
+        * Maps images to decorated images.
+        */
+       @SuppressWarnings("unchecked")
+       private static Map<Image, Map<Image, Image>>[] m_decoratedImageMap = new Map[LAST_CORNER_KEY];
+       /**
+        * Returns an {@link Image} composed of a base image decorated by another image.
+        * 
+        * @param baseImage
+        *            the base {@link Image} that should be decorated.
+        * @param decorator
+        *            the {@link Image} to decorate the base image.
+        * @return {@link Image} The resulting decorated image.
+        */
+       public static Image decorateImage(Image baseImage, Image decorator) {
+               return decorateImage(baseImage, decorator, BOTTOM_RIGHT);
+       }
+       /**
+        * Returns an {@link Image} composed of a base image decorated by another image.
+        * 
+        * @param baseImage
+        *            the base {@link Image} that should be decorated.
+        * @param decorator
+        *            the {@link Image} to decorate the base image.
+        * @param corner
+        *            the corner to place decorator image.
+        * @return the resulting decorated {@link Image}.
+        */
+       public static Image decorateImage(final Image baseImage, final Image decorator, final int corner) {
+               if (corner <= 0 || corner >= LAST_CORNER_KEY) {
+                       throw new IllegalArgumentException("Wrong decorate corner");
+               }
+               Map<Image, Map<Image, Image>> cornerDecoratedImageMap = m_decoratedImageMap[corner];
+               if (cornerDecoratedImageMap == null) {
+                       cornerDecoratedImageMap = new HashMap<Image, Map<Image, Image>>();
+                       m_decoratedImageMap[corner] = cornerDecoratedImageMap;
+               }
+               Map<Image, Image> decoratedMap = cornerDecoratedImageMap.get(baseImage);
+               if (decoratedMap == null) {
+                       decoratedMap = new HashMap<Image, Image>();
+                       cornerDecoratedImageMap.put(baseImage, decoratedMap);
+               }
+               //
+               Image result = decoratedMap.get(decorator);
+               if (result == null) {
+                       final Rectangle bib = baseImage.getBounds();
+                       final Rectangle dib = decorator.getBounds();
+                       final Point baseImageSize = new Point(bib.width, bib.height);
+                       CompositeImageDescriptor compositImageDesc = new CompositeImageDescriptor() {
+                               @Override
+                               protected void drawCompositeImage(int width, int height) {
+                                       drawImage(baseImage.getImageData(), 0, 0);
+                                       if (corner == TOP_LEFT) {
+                                               drawImage(decorator.getImageData(), 0, 0);
+                                       } else if (corner == TOP_RIGHT) {
+                                               drawImage(decorator.getImageData(), bib.width - dib.width, 0);
+                                       } else if (corner == BOTTOM_LEFT) {
+                                               drawImage(decorator.getImageData(), 0, bib.height - dib.height);
+                                       } else if (corner == BOTTOM_RIGHT) {
+                                               drawImage(decorator.getImageData(), bib.width - dib.width, bib.height - dib.height);
+                                       }
+                               }
+                               @Override
+                               protected Point getSize() {
+                                       return baseImageSize;
+                               }
+                       };
+                       //
+                       result = compositImageDesc.createImage();
+                       decoratedMap.put(decorator, result);
+               }
+               return result;
+       }
+       /**
+        * Dispose all of the cached images.
+        */
+       public static void disposeImages() {
+               SWTResourceManager.disposeImages();
+               // dispose ImageDescriptor images
+               {
+                       for (Iterator<Image> I = m_descriptorImageMap.values().iterator(); I.hasNext();) {
+                               I.next().dispose();
+                       }
+                       m_descriptorImageMap.clear();
+               }
+               // dispose decorated images
+               for (int i = 0; i < m_decoratedImageMap.length; i++) {
+                       Map<Image, Map<Image, Image>> cornerDecoratedImageMap = m_decoratedImageMap[i];
+                       if (cornerDecoratedImageMap != null) {
+                               for (Map<Image, Image> decoratedMap : cornerDecoratedImageMap.values()) {
+                                       for (Image image : decoratedMap.values()) {
+                                               image.dispose();
+                                       }
+                                       decoratedMap.clear();
+                               }
+                               cornerDecoratedImageMap.clear();
+                       }
+               }
+               // dispose plugin images
+               {
+                       for (Iterator<Image> I = m_URLImageMap.values().iterator(); I.hasNext();) {
+                               I.next().dispose();
+                       }
+                       m_URLImageMap.clear();
+               }
+       }
+       ////////////////////////////////////////////////////////////////////////////
+       //
+       // Plugin images support
+       //
+       ////////////////////////////////////////////////////////////////////////////
+       /**
+        * Maps URL to images.
+        */
+       private static Map<String, Image> m_URLImageMap = new HashMap<String, Image>();
+       /**
+        * Provider for plugin resources, used by WindowBuilder at design time.
+        */
+       public interface PluginResourceProvider {
+               URL getEntry(String symbolicName, String path);
+       }
+       /**
+        * Instance of {@link PluginResourceProvider}, used by WindowBuilder at design time.
+        */
+       private static PluginResourceProvider m_designTimePluginResourceProvider = null;
+       /**
+        * Returns an {@link Image} based on a plugin and file path.
+        * 
+        * @param plugin
+        *            the plugin {@link Object} containing the image
+        * @param name
+        *            the path to the image within the plugin
+        * @return the {@link Image} stored in the file at the specified path
+        * 
+        * @deprecated Use {@link #getPluginImage(String, String)} instead.
+        */
+       @Deprecated
+       public static Image getPluginImage(Object plugin, String name) {
+               try {
+                       URL url = getPluginImageURL(plugin, name);
+                       if (url != null) {
+                               return getPluginImageFromUrl(url);
+                       }
+               } catch (Throwable e) {
+                       // Ignore any exceptions
+               }
+               return null;
+       }
+       /**
+        * Returns an {@link Image} based on a {@link Bundle} and resource entry path.
+        * 
+        * @param symbolicName
+        *            the symbolic name of the {@link Bundle}.
+        * @param path
+        *            the path of the resource entry.
+        * @return the {@link Image} stored in the file at the specified path.
+        */
+       public static Image getPluginImage(String symbolicName, String path) {
+               try {
+                       URL url = getPluginImageURL(symbolicName, path);
+                       if (url != null) {
+                               return getPluginImageFromUrl(url);
+                       }
+               } catch (Throwable e) {
+                       // Ignore any exceptions
+               }
+               return null;
+       }
+       /**
+        * Returns an {@link Image} based on given {@link URL}.
+        */
+       private static Image getPluginImageFromUrl(URL url) {
+               try {
+                       try {
+                               String key = url.toExternalForm();
+                               Image image = m_URLImageMap.get(key);
+                               if (image == null) {
+                                       InputStream stream = url.openStream();
+                                       try {
+                                               image = getImage(stream);
+                                               m_URLImageMap.put(key, image);
+                                       } finally {
+                                               stream.close();
+                                       }
+                               }
+                               return image;
+                       } catch (Throwable e) {
+                               // Ignore any exceptions
+                       }
+               } catch (Throwable e) {
+                       // Ignore any exceptions
+               }
+               return null;
+       }
+       /**
+        * Returns an {@link ImageDescriptor} based on a plugin and file path.
+        * 
+        * @param plugin
+        *            the plugin {@link Object} containing the image.
+        * @param name
+        *            the path to th eimage within the plugin.
+        * @return the {@link ImageDescriptor} stored in the file at the specified path.
+        * 
+        * @deprecated Use {@link #getPluginImageDescriptor(String, String)} instead.
+        */
+       @Deprecated
+       public static ImageDescriptor getPluginImageDescriptor(Object plugin, String name) {
+               try {
+                       try {
+                               URL url = getPluginImageURL(plugin, name);
+                               return ImageDescriptor.createFromURL(url);
+                       } catch (Throwable e) {
+                               // Ignore any exceptions
+                       }
+               } catch (Throwable e) {
+                       // Ignore any exceptions
+               }
+               return null;
+       }
+       /**
+        * Returns an {@link ImageDescriptor} based on a {@link Bundle} and resource entry path.
+        * 
+        * @param symbolicName
+        *            the symbolic name of the {@link Bundle}.
+        * @param path
+        *            the path of the resource entry.
+        * @return the {@link ImageDescriptor} based on a {@link Bundle} and resource entry path.
+        */
+       public static ImageDescriptor getPluginImageDescriptor(String symbolicName, String path) {
+               try {
+                       URL url = getPluginImageURL(symbolicName, path);
+                       if (url != null) {
+                               return ImageDescriptor.createFromURL(url);
+                       }
+               } catch (Throwable e) {
+                       // Ignore any exceptions
+               }
+               return null;
+       }
+       /**
+        * Returns an {@link URL} based on a {@link Bundle} and resource entry path.
+        */
+       private static URL getPluginImageURL(String symbolicName, String path) {
+               // try runtime plugins
+               {
+                       Bundle bundle = Platform.getBundle(symbolicName);
+                       if (bundle != null) {
+                               return bundle.getEntry(path);
+                       }
+               }
+               // try design time provider
+               if (m_designTimePluginResourceProvider != null) {
+                       return m_designTimePluginResourceProvider.getEntry(symbolicName, path);
+               }
+               // no such resource
+               return null;
+       }
+       /**
+        * Returns an {@link URL} based on a plugin and file path.
+        * 
+        * @param plugin
+        *            the plugin {@link Object} containing the file path.
+        * @param name
+        *            the file path.
+        * @return the {@link URL} representing the file at the specified path.
+        * @throws Exception
+        */
+       private static URL getPluginImageURL(Object plugin, String name) throws Exception {
+               // try to work with 'plugin' as with OSGI BundleContext
+               try {
+                       Class<?> BundleClass = Class.forName("org.osgi.framework.Bundle"); //$NON-NLS-1$
+                       Class<?> BundleContextClass = Class.forName("org.osgi.framework.BundleContext"); //$NON-NLS-1$
+                       if (BundleContextClass.isAssignableFrom(plugin.getClass())) {
+                               Method getBundleMethod = BundleContextClass.getMethod("getBundle", new Class[0]); //$NON-NLS-1$
+                               Object bundle = getBundleMethod.invoke(plugin, new Object[0]);
+                               //
+                               Class<?> PathClass = Class.forName("org.eclipse.core.runtime.Path"); //$NON-NLS-1$
+                               Constructor<?> pathConstructor = PathClass.getConstructor(new Class[]{String.class});
+                               Object path = pathConstructor.newInstance(new Object[]{name});
+                               //
+                               Class<?> IPathClass = Class.forName("org.eclipse.core.runtime.IPath"); //$NON-NLS-1$
+                               Class<?> PlatformClass = Class.forName("org.eclipse.core.runtime.Platform"); //$NON-NLS-1$
+                               Method findMethod = PlatformClass.getMethod("find", new Class[]{BundleClass, IPathClass}); //$NON-NLS-1$
+                               return (URL) findMethod.invoke(null, new Object[]{bundle, path});
+                       }
+               } catch (Throwable e) {
+                       // Ignore any exceptions
+               }
+               // else work with 'plugin' as with usual Eclipse plugin
+               {
+                       Class<?> PluginClass = Class.forName("org.eclipse.core.runtime.Plugin"); //$NON-NLS-1$
+                       if (PluginClass.isAssignableFrom(plugin.getClass())) {
+                               //
+                               Class<?> PathClass = Class.forName("org.eclipse.core.runtime.Path"); //$NON-NLS-1$
+                               Constructor<?> pathConstructor = PathClass.getConstructor(new Class[]{String.class});
+                               Object path = pathConstructor.newInstance(new Object[]{name});
+                               //
+                               Class<?> IPathClass = Class.forName("org.eclipse.core.runtime.IPath"); //$NON-NLS-1$
+                               Method findMethod = PluginClass.getMethod("find", new Class[]{IPathClass}); //$NON-NLS-1$
+                               return (URL) findMethod.invoke(plugin, new Object[]{path});
+                       }
+               }
+               return null;
+       }
+       ////////////////////////////////////////////////////////////////////////////
+       //
+       // General
+       //
+       ////////////////////////////////////////////////////////////////////////////
+       /**
+        * Dispose of cached objects and their underlying OS resources. This should only be called when the cached
+        * objects are no longer needed (e.g. on application shutdown).
+        */
+       public static void dispose() {
+               disposeColors();
+               disposeFonts();
+               disposeImages();
+       }
+}
\ No newline at end of file
diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/org/eclipse/wb/swt/SWTResourceManager.java b/eu.etaxonomy.taxeditor.store/src/main/java/org/eclipse/wb/swt/SWTResourceManager.java
new file mode 100644 (file)
index 0000000..429964e
--- /dev/null
@@ -0,0 +1,447 @@
+/*******************************************************************************\r
+ * Copyright (c) 2011 Google, Inc.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *    Google, Inc. - initial API and implementation\r
+ *******************************************************************************/\r
+package org.eclipse.wb.swt;
+
+import java.io.FileInputStream;\r
+import java.io.IOException;\r
+import java.io.InputStream;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.graphics.Color;\r
+import org.eclipse.swt.graphics.Cursor;\r
+import org.eclipse.swt.graphics.Font;\r
+import org.eclipse.swt.graphics.FontData;\r
+import org.eclipse.swt.graphics.GC;\r
+import org.eclipse.swt.graphics.Image;\r
+import org.eclipse.swt.graphics.ImageData;\r
+import org.eclipse.swt.graphics.RGB;\r
+import org.eclipse.swt.graphics.Rectangle;\r
+import org.eclipse.swt.widgets.Display;\r
+
+/**
+ * Utility class for managing OS resources associated with SWT controls such as colors, fonts, images, etc.
+ * <p>
+ * !!! IMPORTANT !!! Application code must explicitly invoke the <code>dispose()</code> method to release the
+ * operating system resources managed by cached objects when those objects and OS resources are no longer
+ * needed (e.g. on application shutdown)
+ * <p>
+ * This class may be freely distributed as part of any application or plugin.
+ * <p>
+ * @author scheglov_ke
+ * @author Dan Rubel
+ */
+public class SWTResourceManager {
+       ////////////////////////////////////////////////////////////////////////////
+       //
+       // Color
+       //
+       ////////////////////////////////////////////////////////////////////////////
+       private static Map<RGB, Color> m_colorMap = new HashMap<RGB, Color>();
+       /**
+        * Returns the system {@link Color} matching the specific ID.
+        * 
+        * @param systemColorID
+        *            the ID value for the color
+        * @return the system {@link Color} matching the specific ID
+        */
+       public static Color getColor(int systemColorID) {
+               Display display = Display.getCurrent();
+               return display.getSystemColor(systemColorID);
+       }
+       /**
+        * Returns a {@link Color} given its red, green and blue component values.
+        * 
+        * @param r
+        *            the red component of the color
+        * @param g
+        *            the green component of the color
+        * @param b
+        *            the blue component of the color
+        * @return the {@link Color} matching the given red, green and blue component values
+        */
+       public static Color getColor(int r, int g, int b) {
+               return getColor(new RGB(r, g, b));
+       }
+       /**
+        * Returns a {@link Color} given its RGB value.
+        * 
+        * @param rgb
+        *            the {@link RGB} value of the color
+        * @return the {@link Color} matching the RGB value
+        */
+       public static Color getColor(RGB rgb) {
+               Color color = m_colorMap.get(rgb);
+               if (color == null) {
+                       Display display = Display.getCurrent();
+                       color = new Color(display, rgb);
+                       m_colorMap.put(rgb, color);
+               }
+               return color;
+       }
+       /**
+        * Dispose of all the cached {@link Color}'s.
+        */
+       public static void disposeColors() {
+               for (Color color : m_colorMap.values()) {
+                       color.dispose();
+               }
+               m_colorMap.clear();
+       }
+       ////////////////////////////////////////////////////////////////////////////
+       //
+       // Image
+       //
+       ////////////////////////////////////////////////////////////////////////////
+       /**
+        * Maps image paths to images.
+        */
+       private static Map<String, Image> m_imageMap = new HashMap<String, Image>();
+       /**
+        * Returns an {@link Image} encoded by the specified {@link InputStream}.
+        * 
+        * @param stream
+        *            the {@link InputStream} encoding the image data
+        * @return the {@link Image} encoded by the specified input stream
+        */
+       protected static Image getImage(InputStream stream) throws IOException {
+               try {
+                       Display display = Display.getCurrent();
+                       ImageData data = new ImageData(stream);
+                       if (data.transparentPixel > 0) {
+                               return new Image(display, data, data.getTransparencyMask());
+                       }
+                       return new Image(display, data);
+               } finally {
+                       stream.close();
+               }
+       }
+       /**
+        * Returns an {@link Image} stored in the file at the specified path.
+        * 
+        * @param path
+        *            the path to the image file
+        * @return the {@link Image} stored in the file at the specified path
+        */
+       public static Image getImage(String path) {
+               Image image = m_imageMap.get(path);
+               if (image == null) {
+                       try {
+                               image = getImage(new FileInputStream(path));
+                               m_imageMap.put(path, image);
+                       } catch (Exception e) {
+                               image = getMissingImage();
+                               m_imageMap.put(path, image);
+                       }
+               }
+               return image;
+       }
+       /**
+        * Returns an {@link Image} stored in the file at the specified path relative to the specified class.
+        * 
+        * @param clazz
+        *            the {@link Class} relative to which to find the image
+        * @param path
+        *            the path to the image file, if starts with <code>'/'</code>
+        * @return the {@link Image} stored in the file at the specified path
+        */
+       public static Image getImage(Class<?> clazz, String path) {
+               String key = clazz.getName() + '|' + path;
+               Image image = m_imageMap.get(key);
+               if (image == null) {
+                       try {
+                               image = getImage(clazz.getResourceAsStream(path));
+                               m_imageMap.put(key, image);
+                       } catch (Exception e) {
+                               image = getMissingImage();
+                               m_imageMap.put(key, image);
+                       }
+               }
+               return image;
+       }
+       private static final int MISSING_IMAGE_SIZE = 10;
+       /**
+        * @return the small {@link Image} that can be used as placeholder for missing image.
+        */
+       private static Image getMissingImage() {
+               Image image = new Image(Display.getCurrent(), MISSING_IMAGE_SIZE, MISSING_IMAGE_SIZE);
+               //
+               GC gc = new GC(image);
+               gc.setBackground(getColor(SWT.COLOR_RED));
+               gc.fillRectangle(0, 0, MISSING_IMAGE_SIZE, MISSING_IMAGE_SIZE);
+               gc.dispose();
+               //
+               return image;
+       }
+       /**
+        * Style constant for placing decorator image in top left corner of base image.
+        */
+       public static final int TOP_LEFT = 1;
+       /**
+        * Style constant for placing decorator image in top right corner of base image.
+        */
+       public static final int TOP_RIGHT = 2;
+       /**
+        * Style constant for placing decorator image in bottom left corner of base image.
+        */
+       public static final int BOTTOM_LEFT = 3;
+       /**
+        * Style constant for placing decorator image in bottom right corner of base image.
+        */
+       public static final int BOTTOM_RIGHT = 4;
+       /**
+        * Internal value.
+        */
+       protected static final int LAST_CORNER_KEY = 5;
+       /**
+        * Maps images to decorated images.
+        */
+       @SuppressWarnings("unchecked")
+       private static Map<Image, Map<Image, Image>>[] m_decoratedImageMap = new Map[LAST_CORNER_KEY];
+       /**
+        * Returns an {@link Image} composed of a base image decorated by another image.
+        * 
+        * @param baseImage
+        *            the base {@link Image} that should be decorated
+        * @param decorator
+        *            the {@link Image} to decorate the base image
+        * @return {@link Image} The resulting decorated image
+        */
+       public static Image decorateImage(Image baseImage, Image decorator) {
+               return decorateImage(baseImage, decorator, BOTTOM_RIGHT);
+       }
+       /**
+        * Returns an {@link Image} composed of a base image decorated by another image.
+        * 
+        * @param baseImage
+        *            the base {@link Image} that should be decorated
+        * @param decorator
+        *            the {@link Image} to decorate the base image
+        * @param corner
+        *            the corner to place decorator image
+        * @return the resulting decorated {@link Image}
+        */
+       public static Image decorateImage(final Image baseImage, final Image decorator, final int corner) {
+               if (corner <= 0 || corner >= LAST_CORNER_KEY) {
+                       throw new IllegalArgumentException("Wrong decorate corner");
+               }
+               Map<Image, Map<Image, Image>> cornerDecoratedImageMap = m_decoratedImageMap[corner];
+               if (cornerDecoratedImageMap == null) {
+                       cornerDecoratedImageMap = new HashMap<Image, Map<Image, Image>>();
+                       m_decoratedImageMap[corner] = cornerDecoratedImageMap;
+               }
+               Map<Image, Image> decoratedMap = cornerDecoratedImageMap.get(baseImage);
+               if (decoratedMap == null) {
+                       decoratedMap = new HashMap<Image, Image>();
+                       cornerDecoratedImageMap.put(baseImage, decoratedMap);
+               }
+               //
+               Image result = decoratedMap.get(decorator);
+               if (result == null) {
+                       Rectangle bib = baseImage.getBounds();
+                       Rectangle dib = decorator.getBounds();
+                       //
+                       result = new Image(Display.getCurrent(), bib.width, bib.height);
+                       //
+                       GC gc = new GC(result);
+                       gc.drawImage(baseImage, 0, 0);
+                       if (corner == TOP_LEFT) {
+                               gc.drawImage(decorator, 0, 0);
+                       } else if (corner == TOP_RIGHT) {
+                               gc.drawImage(decorator, bib.width - dib.width, 0);
+                       } else if (corner == BOTTOM_LEFT) {
+                               gc.drawImage(decorator, 0, bib.height - dib.height);
+                       } else if (corner == BOTTOM_RIGHT) {
+                               gc.drawImage(decorator, bib.width - dib.width, bib.height - dib.height);
+                       }
+                       gc.dispose();
+                       //
+                       decoratedMap.put(decorator, result);
+               }
+               return result;
+       }
+       /**
+        * Dispose all of the cached {@link Image}'s.
+        */
+       public static void disposeImages() {
+               // dispose loaded images
+               {
+                       for (Image image : m_imageMap.values()) {
+                               image.dispose();
+                       }
+                       m_imageMap.clear();
+               }
+               // dispose decorated images
+               for (int i = 0; i < m_decoratedImageMap.length; i++) {
+                       Map<Image, Map<Image, Image>> cornerDecoratedImageMap = m_decoratedImageMap[i];
+                       if (cornerDecoratedImageMap != null) {
+                               for (Map<Image, Image> decoratedMap : cornerDecoratedImageMap.values()) {
+                                       for (Image image : decoratedMap.values()) {
+                                               image.dispose();
+                                       }
+                                       decoratedMap.clear();
+                               }
+                               cornerDecoratedImageMap.clear();
+                       }
+               }
+       }
+       ////////////////////////////////////////////////////////////////////////////
+       //
+       // Font
+       //
+       ////////////////////////////////////////////////////////////////////////////
+       /**
+        * Maps font names to fonts.
+        */
+       private static Map<String, Font> m_fontMap = new HashMap<String, Font>();
+       /**
+        * Maps fonts to their bold versions.
+        */
+       private static Map<Font, Font> m_fontToBoldFontMap = new HashMap<Font, Font>();
+       /**
+        * Returns a {@link Font} based on its name, height and style.
+        * 
+        * @param name
+        *            the name of the font
+        * @param height
+        *            the height of the font
+        * @param style
+        *            the style of the font
+        * @return {@link Font} The font matching the name, height and style
+        */
+       public static Font getFont(String name, int height, int style) {
+               return getFont(name, height, style, false, false);
+       }
+       /**
+        * Returns a {@link Font} based on its name, height and style. Windows-specific strikeout and underline
+        * flags are also supported.
+        * 
+        * @param name
+        *            the name of the font
+        * @param size
+        *            the size of the font
+        * @param style
+        *            the style of the font
+        * @param strikeout
+        *            the strikeout flag (warning: Windows only)
+        * @param underline
+        *            the underline flag (warning: Windows only)
+        * @return {@link Font} The font matching the name, height, style, strikeout and underline
+        */
+       public static Font getFont(String name, int size, int style, boolean strikeout, boolean underline) {
+               String fontName = name + '|' + size + '|' + style + '|' + strikeout + '|' + underline;
+               Font font = m_fontMap.get(fontName);
+               if (font == null) {
+                       FontData fontData = new FontData(name, size, style);
+                       if (strikeout || underline) {
+                               try {
+                                       Class<?> logFontClass = Class.forName("org.eclipse.swt.internal.win32.LOGFONT"); //$NON-NLS-1$
+                                       Object logFont = FontData.class.getField("data").get(fontData); //$NON-NLS-1$
+                                       if (logFont != null && logFontClass != null) {
+                                               if (strikeout) {
+                                                       logFontClass.getField("lfStrikeOut").set(logFont, Byte.valueOf((byte) 1)); //$NON-NLS-1$
+                                               }
+                                               if (underline) {
+                                                       logFontClass.getField("lfUnderline").set(logFont, Byte.valueOf((byte) 1)); //$NON-NLS-1$
+                                               }
+                                       }
+                               } catch (Throwable e) {
+                                       System.err.println("Unable to set underline or strikeout" + " (probably on a non-Windows platform). " + e); //$NON-NLS-1$ //$NON-NLS-2$
+                               }
+                       }
+                       font = new Font(Display.getCurrent(), fontData);
+                       m_fontMap.put(fontName, font);
+               }
+               return font;
+       }
+       /**
+        * Returns a bold version of the given {@link Font}.
+        * 
+        * @param baseFont
+        *            the {@link Font} for which a bold version is desired
+        * @return the bold version of the given {@link Font}
+        */
+       public static Font getBoldFont(Font baseFont) {
+               Font font = m_fontToBoldFontMap.get(baseFont);
+               if (font == null) {
+                       FontData fontDatas[] = baseFont.getFontData();
+                       FontData data = fontDatas[0];
+                       font = new Font(Display.getCurrent(), data.getName(), data.getHeight(), SWT.BOLD);
+                       m_fontToBoldFontMap.put(baseFont, font);
+               }
+               return font;
+       }
+       /**
+        * Dispose all of the cached {@link Font}'s.
+        */
+       public static void disposeFonts() {
+               // clear fonts
+               for (Font font : m_fontMap.values()) {
+                       font.dispose();
+               }
+               m_fontMap.clear();
+               // clear bold fonts
+               for (Font font : m_fontToBoldFontMap.values()) {
+                       font.dispose();
+               }
+               m_fontToBoldFontMap.clear();
+       }
+       ////////////////////////////////////////////////////////////////////////////
+       //
+       // Cursor
+       //
+       ////////////////////////////////////////////////////////////////////////////
+       /**
+        * Maps IDs to cursors.
+        */
+       private static Map<Integer, Cursor> m_idToCursorMap = new HashMap<Integer, Cursor>();
+       /**
+        * Returns the system cursor matching the specific ID.
+        * 
+        * @param id
+        *            int The ID value for the cursor
+        * @return Cursor The system cursor matching the specific ID
+        */
+       public static Cursor getCursor(int id) {
+               Integer key = Integer.valueOf(id);
+               Cursor cursor = m_idToCursorMap.get(key);
+               if (cursor == null) {
+                       cursor = new Cursor(Display.getDefault(), id);
+                       m_idToCursorMap.put(key, cursor);
+               }
+               return cursor;
+       }
+       /**
+        * Dispose all of the cached cursors.
+        */
+       public static void disposeCursors() {
+               for (Cursor cursor : m_idToCursorMap.values()) {
+                       cursor.dispose();
+               }
+               m_idToCursorMap.clear();
+       }
+       ////////////////////////////////////////////////////////////////////////////
+       //
+       // General
+       //
+       ////////////////////////////////////////////////////////////////////////////
+       /**
+        * Dispose of cached objects and their underlying OS resources. This should only be called when the cached
+        * objects are no longer needed (e.g. on application shutdown).
+        */
+       public static void dispose() {
+               disposeColors();
+               disposeImages();
+               disposeFonts();
+               disposeCursors();
+       }
+}
\ No newline at end of file