// $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.
*/
import org.eclipse.ui.handlers.HandlerUtil;
import eu.etaxonomy.cdm.api.service.IDescriptionService;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.Annotation;
import eu.etaxonomy.cdm.model.common.AnnotationType;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.MultiPageTaxonEditor;
import eu.etaxonomy.taxeditor.editor.Page;
import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
-import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionElementsOperation;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonBaseSelectionDialog;
import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
-
+
// ConversationHolder conversation = CdmStore.createConversation();
editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME);
ISelection selection = HandlerUtil.getCurrentSelection(event);
-
+ Taxon actualTaxon= null;
if(selection instanceof IStructuredSelection){
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-
+
List<DescriptionElementBase> elements = new ArrayList<DescriptionElementBase>();
-
+
for(Object element : structuredSelection.toArray()){
if(element instanceof DescriptionElementBase){
UUID uuid = ((DescriptionElementBase) element).getUuid();
-
+
elements.add(CdmStore.getService(IDescriptionService.class).loadDescriptionElement(uuid, null));
} else if(element instanceof FeatureNodeContainer){
for(DescriptionElementBase de : ((FeatureNodeContainer)element).getDescriptionElements()){
elements.add(
- (DescriptionElementBase)CdmStore.getService(IDescriptionService.class).loadDescriptionElement(de.getUuid(), null)
+ CdmStore.getService(IDescriptionService.class).loadDescriptionElement(de.getUuid(), null)
);
}
}
}
-
+
if(elements.size() == 0){
return null;
}
List<UUID> excludeTaxa = new ArrayList<UUID>();
if (description.isInstanceOf(TaxonDescription.class)){
TaxonDescription taxonDescription = HibernateProxyHelper.deproxy(description, TaxonDescription.class);
- Taxon actualTaxon = taxonDescription.getTaxon();
+ actualTaxon = taxonDescription.getTaxon();
excludeTaxa.add(actualTaxon.getUuid());
}
-
-
+ Classification classification = null;
+ if (actualTaxon != null){
+ if (!actualTaxon.getTaxonNodes().isEmpty() && actualTaxon.getTaxonNodes().size() ==1){
+ classification = actualTaxon.getTaxonNodes().iterator().next().getClassification();
+ }
+ }
TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event),
editor.getConversationHolder(),
"Choose the accepted taxon",
excludeTaxa,
- null,
- null);
- Taxon targetTaxon = newAcceptedTaxonNode.getTaxon();
-
- if(targetTaxon == null){
- // canceled
- return null;
- }
- newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
- TaxonDescription targetDescription = TaxonDescription.NewInstance(targetTaxon);
- String moveMessage = String.format("Elements moved from %s", EditorUtil.getActiveMultiPageTaxonEditor().getTaxon());
- targetDescription.setTitleCache(moveMessage, true);
- Annotation annotation = Annotation.NewInstance(moveMessage, Language.getDefaultLanguage());
- annotation.setAnnotationType(AnnotationType.TECHNICAL());
- targetDescription.addAnnotation(annotation);
-
- try {
- AbstractPostOperation operation = new MoveDescriptionElementsOperation(
- event.getCommand().getName(), EditorUtil.getUndoContext(),
- targetDescription, elements, false, this);
-
- EditorUtil.executeOperation(operation);
-
- //CdmStore.getService(ITaxonService.class).saveOrUpdate(targetTaxon);
-
- } catch (NotDefinedException e) {
- MessagingUtils.error(getClass(), e);
+ null,classification
+ );
+ if (newAcceptedTaxonNode != null){
+ Taxon targetTaxon = newAcceptedTaxonNode.getTaxon();
+
+ if(targetTaxon == null){
+ // canceled
+ return null;
+ }
+ newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
+ TaxonDescription targetDescription = TaxonDescription.NewInstance(targetTaxon);
+ String moveMessage = String.format("Elements moved from %s", EditorUtil.getActiveMultiPageTaxonEditor().getTaxon());
+ targetDescription.setTitleCache(moveMessage, true);
+ Annotation annotation = Annotation.NewInstance(moveMessage, Language.getDefaultLanguage());
+ annotation.setAnnotationType(AnnotationType.TECHNICAL());
+ targetDescription.addAnnotation(annotation);
+
+ try {
+ AbstractPostOperation operation = new MoveDescriptionElementsOperation(
+ event.getCommand().getName(), EditorUtil.getUndoContext(),
+ targetDescription, elements, false, this);
+
+ EditorUtil.executeOperation(operation);
+
+ //CdmStore.getService(ITaxonService.class).saveOrUpdate(targetTaxon);
+
+ } catch (NotDefinedException e) {
+ MessagingUtils.error(getClass(), e);
+ }
}
}
-
+
return null;
}
/** {@inheritDoc} */
@Override
public boolean postOperation(CdmBase objectAffectedByOperation) {
-
+
editor.getConversationHolder().bind();
editor.getConversationHolder().commit(true);
Display.getDefault().asyncExec(new Runnable(){
-
+
+ @Override
public void run() {
//AbstractUtility.close(editor.getMultiPageTaxonEditor());
// TODO Auto-generated method stub
return false;
}
-
+
}
/**
- *
+ *
*/
package eu.etaxonomy.taxeditor.ui.dialog.selection;
* @author p.ciardelli
* @version $Id: $
*/
-public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog<TaxonNode> implements SelectionListener{
-
+public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog<TaxonNode> implements SelectionListener{
+
/**
* <p>select</p>
*
* @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
*/
public static TaxonNode select(Shell shell, ConversationHolder conversation, String title, List<UUID> excludeTaxa, TaxonNode node, Classification classification) {
- TaxonNodeSelectionDialog dialog = new TaxonNodeSelectionDialog(shell,
+ TaxonNodeSelectionDialog dialog = new TaxonNodeSelectionDialog(shell,
conversation,
title,
excludeTaxa,
private Combo classificationSelectionCombo;
private List<Classification> classifications;
-
- private Classification selectedClassification;
+
+ private Classification selectedClassification;
/**
* <p>Constructor for FilteredTaxonNodeSelectionDialog.</p>
*/
protected TaxonNodeSelectionDialog(Shell shell, ConversationHolder conversation, String title, List<UUID> excludeTaxa, boolean multi, TaxonNode node, Classification classification) {
super(shell, conversation, title, multi, TaxonNodeSelectionDialog.class.getCanonicalName(), node);
-
+
ILabelProvider labelProvider = new FilteredCdmResourceLabelProvider();
setListLabelProvider(labelProvider);
setDetailsLabelProvider(labelProvider);
-
+
if(classification != null){
selectedClassification = classification;
}
protected Control createExtendedContentArea(Composite parent) {
return createClassificationSelectionCombo(parent);
}
-
+
/*
* currently disabled tree selection composite
*/
private Control createClassificationSelectionCombo(Composite parent){
// classifications = CdmStore.getTaxonTreeService().list(null, null, null, null, null);
-
+
Composite classificationSelection = new Composite(parent, SWT.NULL);
classificationSelection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-
+
GridLayout layout = new GridLayout();
classificationSelection.setLayout(layout);
-
+
Label label = new Label(classificationSelection, SWT.NULL);
// TODO not working is not really true but leave it here to remind everyone that this is under construction
- label.setText("Select Classification (experimental)");
+ label.setText("Select Classification");
classificationSelectionCombo = new Combo(classificationSelection, SWT.BORDER | SWT.READ_ONLY);
classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
-
+
for(Classification tree : classifications){
classificationSelectionCombo.add(tree.getName().getText(), classifications.indexOf(tree));
+
}
-
+
classificationSelectionCombo.select(classifications.indexOf(selectedClassification));
-
+
// TODO remember last selection
classificationSelectionCombo.addSelectionListener(this);
-
-
-
+
+
+
return classificationSelection;
}
if(taxonNode != null && taxonNode.getTaxon() != null){
return taxonNode.getTaxon().getTitleCache();
}
-
+
return "";
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)
*/
/** {@inheritDoc} */
@Override
protected void initModel() {
- // default to first tree
- // TODO this will be problematic and can only be seen as workaround
-
-
+ // default to first tree
+ // TODO this will be problematic and can only be seen as workaround
+
+
if(classifications == null){
classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null);
selectedClassification = classifications.iterator().next();
}
-
+
model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification);
}
protected String getNewWizardLinkText() {
return null;
}
-
+
/** {@inheritDoc} */
- public void widgetSelected(SelectionEvent e) {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex());
-
+
// refresh();
setPattern(null);
}
/** {@inheritDoc} */
- public void widgetDefaultSelected(SelectionEvent e) {}
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {}
}