From 84a43ef01bba8f559bd575268622756b76a59ac1 Mon Sep 17 00:00:00 2001 From: "U-BGBM\\k.luther" Date: Wed, 2 Sep 2015 14:54:03 +0200 Subject: [PATCH 1/1] fixing #5150 --- eu.etaxonomy.taxeditor.editor/plugin.xml | 5 +- .../MoveDescriptionElementsHandler.java | 97 ++++++++++--------- .../selection/TaxonNodeSelectionDialog.java | 63 ++++++------ 3 files changed, 88 insertions(+), 77 deletions(-) diff --git a/eu.etaxonomy.taxeditor.editor/plugin.xml b/eu.etaxonomy.taxeditor.editor/plugin.xml index 4d30784b6..66def4730 100644 --- a/eu.etaxonomy.taxeditor.editor/plugin.xml +++ b/eu.etaxonomy.taxeditor.editor/plugin.xml @@ -685,7 +685,10 @@ - + + + elements = new ArrayList(); - + 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; } @@ -97,45 +95,51 @@ public class MoveDescriptionElementsHandler extends AbstractHandler implements I List excludeTaxa = new ArrayList(); 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; } @@ -145,11 +149,12 @@ public class MoveDescriptionElementsHandler extends AbstractHandler implements I /** {@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()); @@ -178,5 +183,5 @@ public class MoveDescriptionElementsHandler extends AbstractHandler implements I // TODO Auto-generated method stub return false; } - + } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionDialog.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionDialog.java index e2e864bce..a5a3ba167 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionDialog.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/TaxonNodeSelectionDialog.java @@ -1,5 +1,5 @@ /** - * + * */ package eu.etaxonomy.taxeditor.ui.dialog.selection; @@ -31,8 +31,8 @@ import eu.etaxonomy.taxeditor.store.CdmStore; * @author p.ciardelli * @version $Id: $ */ -public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog implements SelectionListener{ - +public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog implements SelectionListener{ + /** *

select

* @@ -44,7 +44,7 @@ public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelecti * @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object. */ public static TaxonNode select(Shell shell, ConversationHolder conversation, String title, List excludeTaxa, TaxonNode node, Classification classification) { - TaxonNodeSelectionDialog dialog = new TaxonNodeSelectionDialog(shell, + TaxonNodeSelectionDialog dialog = new TaxonNodeSelectionDialog(shell, conversation, title, excludeTaxa, @@ -57,8 +57,8 @@ public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelecti private Combo classificationSelectionCombo; private List classifications; - - private Classification selectedClassification; + + private Classification selectedClassification; /** *

Constructor for FilteredTaxonNodeSelectionDialog.

@@ -72,12 +72,12 @@ public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelecti */ protected TaxonNodeSelectionDialog(Shell shell, ConversationHolder conversation, String title, List 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; } @@ -92,36 +92,37 @@ public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelecti 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; } @@ -131,10 +132,10 @@ public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelecti if(taxonNode != null && taxonNode.getTaxon() != null){ return taxonNode.getTaxon().getTitleCache(); } - + return ""; } - + /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID) */ @@ -150,15 +151,15 @@ public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelecti /** {@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); } @@ -173,17 +174,19 @@ public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelecti 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) {} } -- 2.34.1