From d4504f77e5eacff2e790f1448bab627c65fd4f37 Mon Sep 17 00:00:00 2001 From: "p.ciardelli" Date: Tue, 10 Jun 2008 16:15:05 +0000 Subject: [PATCH] --- .gitattributes | 4 + .../ui/AddBasionymCompositeAction.java | 16 +-- .../ui/ChangeCompositeToNewTaxonAction.java | 108 +++++++++++++++ .../DeleteMisappliedNameCompositeAction.java | 131 ++++++++++++++++++ .../ui/OpenNameRelationsListWizardAction.java | 64 +++++++++ .../ui/RemoveBasionymCompositeAction.java | 125 +++++++++++++++++ 6 files changed, 434 insertions(+), 14 deletions(-) create mode 100644 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/ChangeCompositeToNewTaxonAction.java create mode 100644 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/DeleteMisappliedNameCompositeAction.java create mode 100644 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenNameRelationsListWizardAction.java create mode 100644 eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/RemoveBasionymCompositeAction.java diff --git a/.gitattributes b/.gitattributes index 2f6fa14a1..9ee11d31e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -413,8 +413,12 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/De eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/TaxonActionFactory.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/AddBasionymCompositeAction.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/ChangeCompositeToMisappliedNameAction.java -text +eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/ChangeCompositeToNewTaxonAction.java -text +eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/DeleteMisappliedNameCompositeAction.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/DeleteSynonymCompositeAction.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenNameRelationWizardAction.java -text +eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenNameRelationsListWizardAction.java -text +eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/RemoveBasionymCompositeAction.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/CdmUtil.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/NameEditorInput.java -text eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/NameTreeContentProvider.java -text diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/AddBasionymCompositeAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/AddBasionymCompositeAction.java index 871d6e1be..8fd02f521 100644 --- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/AddBasionymCompositeAction.java +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/AddBasionymCompositeAction.java @@ -26,14 +26,11 @@ import org.eclipse.jface.util.PropertyChangeEvent; import eu.etaxonomy.cdm.model.name.TaxonNameBase; import eu.etaxonomy.cdm.model.taxon.Synonym; -import eu.etaxonomy.cdm.model.taxon.Taxon; import eu.etaxonomy.taxeditor.ITaxEditorConstants; import eu.etaxonomy.taxeditor.TaxEditorPlugin; import eu.etaxonomy.taxeditor.UiUtil; import eu.etaxonomy.taxeditor.actions.cdm.AddBasionymToGroupAction; -import eu.etaxonomy.taxeditor.model.CdmUtil; import eu.etaxonomy.taxeditor.view.nameviewersupport.NameComposite; -import eu.etaxonomy.taxeditor.view.nameviewersupport.TaxonCompositeFactory; /** * @author p.ciardelli @@ -51,7 +48,6 @@ public class AddBasionymCompositeAction extends Action { private TaxonNameBase basionymName; private NameComposite composite; - private TaxonCompositeFactory taxonCompositeFactory; private IUndoableOperation operation; private AddBasionymCompositeAction() { @@ -59,8 +55,7 @@ public class AddBasionymCompositeAction extends Action { setImageDescriptor(image); } - public AddBasionymCompositeAction(NameComposite composite, - TaxonCompositeFactory taxonCompositeFactory) { + public AddBasionymCompositeAction(NameComposite composite) { this(); if (composite.getData() instanceof Synonym) { @@ -72,7 +67,6 @@ public class AddBasionymCompositeAction extends Action { } this.composite = composite; - this.taxonCompositeFactory = taxonCompositeFactory; operation = new AddBasionymOperation(); } @@ -98,19 +92,13 @@ public class AddBasionymCompositeAction extends Action { @Override public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { - // Delete synonym from taxon Action action = new AddBasionymToGroupAction(basionymName); action.addPropertyChangeListener(new IPropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent event) { if (event.getProperty().equals( ITaxEditorConstants.BASIONYM)) { - Taxon taxon = taxonCompositeFactory.getTaxon(); - if (CdmUtil.isNameHomotypic(basionymName, taxon)) { - composite.setIcon(NameComposite.HOMOTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON); - } else { - composite.setIcon(NameComposite.HETEROTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON); - } + composite.transform(NameComposite.ADD_GROUP_BASIONYM); setEnabled(false); } } diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/ChangeCompositeToNewTaxonAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/ChangeCompositeToNewTaxonAction.java new file mode 100644 index 000000000..71de5e422 --- /dev/null +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/ChangeCompositeToNewTaxonAction.java @@ -0,0 +1,108 @@ +/** +* 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.actions.ui; + +import org.apache.log4j.Logger; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; + +import eu.etaxonomy.cdm.model.taxon.Synonym; +import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.taxeditor.ITaxEditorConstants; +import eu.etaxonomy.taxeditor.TaxEditorPlugin; +import eu.etaxonomy.taxeditor.actions.ActionOpenTaxonEditor; +import eu.etaxonomy.taxeditor.actions.ActionSaveTaxon; +import eu.etaxonomy.taxeditor.actions.UndoableAction; +import eu.etaxonomy.taxeditor.actions.cdm.ChangeSynonymToTaxonAction; +import eu.etaxonomy.taxeditor.view.nameviewersupport.NameComposite; + +/** + * @author p.ciardelli + * @created 09.06.2008 + * @version 1.0 + */ +public class ChangeCompositeToNewTaxonAction extends UndoableAction { + private static final Logger logger = Logger + .getLogger(ChangeCompositeToNewTaxonAction.class); + + private static String text = "Use synonym name to make a new taxon"; + private static ImageDescriptor image = TaxEditorPlugin.getDefault() + .getImageDescriptor(ITaxEditorConstants.SYNONYM_TO_TAXON_ICON); + + private NameComposite composite; + private Taxon taxon; + private Synonym synonym; + + public ChangeCompositeToNewTaxonAction(NameComposite composite, + Taxon taxon) { + super(text, image); + + this.composite = composite; + this.taxon = taxon; + + if (composite.getData() instanceof Synonym) { + this.synonym = (Synonym) composite.getData(); + } else { + throw new IllegalArgumentException( + "This action requires a composite with a Synonym in its data field."); + } + + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.actions.UndoableAction#executeOperation() + */ + @Override + protected IStatus executeOperation() { + Action action = new ChangeSynonymToTaxonAction(synonym); + action.addPropertyChangeListener(new IPropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(ITaxEditorConstants.TAXON)) { + if (event.getNewValue() instanceof Taxon) { + + // Delete synonym composite in old taxon + composite.dispose(); + + Taxon newTaxon = (Taxon) event.getNewValue(); +// TaxEditorPlugin.getDefault().addSessionTaxon(newTaxon); + + new ActionOpenTaxonEditor(newTaxon).run(); +// new ActionSaveTaxon(newTaxon).run(); + } + } + } + }); + action.run(); + return Status.OK_STATUS; + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.actions.UndoableAction#redoOperation() + */ + @Override + protected IStatus redoOperation() { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.actions.UndoableAction#undoOperation() + */ + @Override + protected IStatus undoOperation() { + // TODO Auto-generated method stub + return null; + } +} diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/DeleteMisappliedNameCompositeAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/DeleteMisappliedNameCompositeAction.java new file mode 100644 index 000000000..47aef2e48 --- /dev/null +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/DeleteMisappliedNameCompositeAction.java @@ -0,0 +1,131 @@ +/** + * 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.actions.ui; + +import org.apache.log4j.Logger; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.operations.AbstractOperation; +import org.eclipse.core.commands.operations.IOperationHistory; +import org.eclipse.core.commands.operations.IUndoContext; +import org.eclipse.core.commands.operations.IUndoableOperation; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; + +import eu.etaxonomy.cdm.model.taxon.Taxon; +import eu.etaxonomy.taxeditor.ITaxEditorConstants; +import eu.etaxonomy.taxeditor.TaxEditorPlugin; +import eu.etaxonomy.taxeditor.UiUtil; +import eu.etaxonomy.taxeditor.actions.cdm.DeleteMisappliedNameFromTaxonAction; +import eu.etaxonomy.taxeditor.view.nameviewersupport.NameComposite; +import eu.etaxonomy.taxeditor.view.nameviewersupport.TaxonCompositeFactory; + +/** + * @author p.ciardelli + * @created 04.06.2008 + * @version 1.0 + */ +public class DeleteMisappliedNameCompositeAction extends Action { + private static final Logger logger = Logger + .getLogger(DeleteMisappliedNameCompositeAction.class); + + private static String text = "Delete misapplied name from taxon"; + private ImageDescriptor image = TaxEditorPlugin.getDefault() + .getImageDescriptor(ITaxEditorConstants.ACTIVE_DELETE_ICON); + + private Taxon misappliedName; + + private Taxon taxon; + private NameComposite composite; + private TaxonCompositeFactory taxonCompositeFactory; + private IUndoableOperation operation; + + private DeleteMisappliedNameCompositeAction() { + super(text); + setImageDescriptor(image); + } + + public DeleteMisappliedNameCompositeAction(NameComposite composite, + TaxonCompositeFactory taxonCompositeFactory) { + this(); + + if (composite.getData() instanceof Taxon) { + this.misappliedName = (Taxon) composite.getData(); + } else { + throw new IllegalArgumentException( + "This action requires a composite with a Taxon in its data field."); + } + + this.taxon = taxonCompositeFactory.getTaxon(); + this.composite = composite; + this.taxonCompositeFactory = taxonCompositeFactory; + + operation = new DeleteSynonymOperation(); + } + + public void run() { + IOperationHistory operationHistory = UiUtil.getOperationHistory(); + IUndoContext undoContext = UiUtil.getWorkbenchUndoContext(); + operation.addContext(undoContext); + try { + operationHistory.execute(operation, null, null); + operationHistory.add(operation); + } catch (ExecutionException e) { + e.printStackTrace(); + } + } + + class DeleteSynonymOperation extends AbstractOperation { + + public DeleteSynonymOperation() { + super("'" + text + "'"); + } + + @Override + public IStatus execute(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // Delete synonym from taxon + Action action = new DeleteMisappliedNameFromTaxonAction(misappliedName, taxon); + action.addPropertyChangeListener(new IPropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals( + ITaxEditorConstants.MISAPPLIED_NAME)) { + // Delete namecomposite + // TODO: put this in taxonFactory? + composite.dispose(); + } + } + }); + action.run(); + + return Status.OK_STATUS; + } + + @Override + public IStatus redo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return Status.OK_STATUS; + } + + @Override + public IStatus undo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return Status.OK_STATUS; + } + } +} diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenNameRelationsListWizardAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenNameRelationsListWizardAction.java new file mode 100644 index 000000000..c1d3a14d4 --- /dev/null +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/OpenNameRelationsListWizardAction.java @@ -0,0 +1,64 @@ +/** + * 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.actions.ui; + +import org.apache.log4j.Logger; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardDialog; + +import eu.etaxonomy.cdm.model.name.TaxonNameBase; +import eu.etaxonomy.taxeditor.ITaxEditorConstants; +import eu.etaxonomy.taxeditor.TaxEditorPlugin; +import eu.etaxonomy.taxeditor.UiUtil; +import eu.etaxonomy.taxeditor.view.propertysheetsupport.namerelationswizard.NameRelationsListWizard; + +/** + * @author p.ciardelli + * @created 04.06.2008 + * @version 1.0 + */ +public class OpenNameRelationsListWizardAction extends Action { + private static final Logger logger = Logger + .getLogger(OpenNameRelationsListWizardAction.class); + + private static String text = "Create name relation ..."; + private ImageDescriptor image = TaxEditorPlugin.getDefault() + .getImageDescriptor(ITaxEditorConstants.ACTIVE_DELETE_ICON); +// private ImageDescriptor image = null; + public static final String ID = "eu.etaxonomy.taxeditor.actions.opennamerelationswizard"; //$NON-NLS-1$ + + private TaxonNameBase name; + + private OpenNameRelationsListWizardAction() { + super(text); + setImageDescriptor(image); + setId(ID); + } + + public OpenNameRelationsListWizardAction(TaxonNameBase name) { + this(); + + this.name = name; + } + + public void run() { + if (name == null) { + return; + } + Wizard wizard = new NameRelationsListWizard(name); + + // Instantiates the wizard container with the wizard and opens it + WizardDialog dialog = new WizardDialog(UiUtil.getShell(), wizard); + dialog.create(); + dialog.open(); + } +} \ No newline at end of file diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/RemoveBasionymCompositeAction.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/RemoveBasionymCompositeAction.java new file mode 100644 index 000000000..db5a0b2d9 --- /dev/null +++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/RemoveBasionymCompositeAction.java @@ -0,0 +1,125 @@ +/** + * 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.actions.ui; + +import org.apache.log4j.Logger; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.operations.AbstractOperation; +import org.eclipse.core.commands.operations.IOperationHistory; +import org.eclipse.core.commands.operations.IUndoContext; +import org.eclipse.core.commands.operations.IUndoableOperation; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; + +import eu.etaxonomy.cdm.model.name.TaxonNameBase; +import eu.etaxonomy.cdm.model.taxon.Synonym; +import eu.etaxonomy.taxeditor.ITaxEditorConstants; +import eu.etaxonomy.taxeditor.TaxEditorPlugin; +import eu.etaxonomy.taxeditor.UiUtil; +import eu.etaxonomy.taxeditor.actions.cdm.RemoveBasionymFromGroupAction; +import eu.etaxonomy.taxeditor.view.nameviewersupport.NameComposite; + +/** + * @author p.ciardelli + * @created 04.06.2008 + * @version 1.0 + */ +public class RemoveBasionymCompositeAction extends Action { + private static final Logger logger = Logger + .getLogger(RemoveBasionymCompositeAction.class); + + private static String text = "Remove as basionym for homotypical group"; + private ImageDescriptor image = TaxEditorPlugin.getDefault() + .getImageDescriptor(ITaxEditorConstants.BASIONYM_ICON); + + private TaxonNameBase basionymName; + + private NameComposite composite; + private IUndoableOperation operation; + + private RemoveBasionymCompositeAction() { + super(text); + setImageDescriptor(image); + } + + public RemoveBasionymCompositeAction(NameComposite composite) { + this(); + + if (composite.getData() instanceof Synonym) { + Synonym synonym = (Synonym) composite.getData(); + this.basionymName = synonym.getName(); + } else { + throw new IllegalArgumentException( + "This action requires a composite with a Synonym in its data field."); + } + + this.composite = composite; + + operation = new AddBasionymOperation(); + } + + public void run() { + IOperationHistory operationHistory = UiUtil.getOperationHistory(); + IUndoContext undoContext = UiUtil.getWorkbenchUndoContext(); + operation.addContext(undoContext); + try { + operationHistory.execute(operation, null, null); + operationHistory.add(operation); + } catch (ExecutionException e) { + e.printStackTrace(); + } + } + + class AddBasionymOperation extends AbstractOperation { + + public AddBasionymOperation() { + super("'" + text + "'"); + } + + @Override + public IStatus execute(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + Action action = new RemoveBasionymFromGroupAction(basionymName); + action.addPropertyChangeListener(new IPropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals( + ITaxEditorConstants.BASIONYM)) { + composite.transform(NameComposite.REMOVE_GROUP_BASIONYM); + setEnabled(false); + } + } + }); + action.run(); + + return Status.OK_STATUS; + } + + @Override + public IStatus redo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return Status.OK_STATUS; + } + + @Override + public IStatus undo(IProgressMonitor monitor, IAdaptable info) + throws ExecutionException { + // TODO Auto-generated method stub + return Status.OK_STATUS; + } + } +} -- 2.34.1