From e30e9ca47a93e355e13b5ac27b885ac7c37af617 Mon Sep 17 00:00:00 2001
From: "p.ciardelli"
Date: Wed, 4 Mar 2009 13:03:15 +0000
Subject: [PATCH] Type module largely complete.
---
.../taxeditor/editor/MenuConstants.java | 12 ++---
.../name/ChangeConceptRelationOperation.java | 2 +-
.../name/TaxonBasePropertySource.java | 7 +++
.../type/TypeCollectionPropertySource.java | 52 ++++++-------------
.../ChooseTypeDesignationWizardPage.java | 21 +++-----
.../type/wizard/ListTypeWizardPage.java | 28 +++++-----
.../type/wizard/TypeDesignationWizard.java | 32 +++++++++++-
.../type/wizard/TypeListWizard.java | 35 ++++++++++++-
8 files changed, 115 insertions(+), 74 deletions(-)
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MenuConstants.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MenuConstants.java
index 129682681..085909c4c 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MenuConstants.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/MenuConstants.java
@@ -40,12 +40,12 @@ public class MenuConstants {
taxonEditorMenu.add(new Separator());
taxonEditorMenu.add(new CreateMisappliedNameAction());
-// MenuManager subMenu = new MenuManager("Create concept relation");
-// for (TaxonRelationshipType type :
-// CdmSessionDataRepository.getDefault().getConceptRelationshipTypes()) {
-// subMenu.add(new CreateConceptRelationAction(type));
-// }
-// taxonEditorMenu.add(subMenu);
+ MenuManager subMenu = new MenuManager("Create concept relation");
+ for (TaxonRelationshipType type :
+ CdmSessionDataRepository.getDefault().getConceptRelationshipTypes()) {
+ subMenu.add(new CreateConceptRelationAction(type));
+ }
+ taxonEditorMenu.add(subMenu);
taxonEditorMenu.add(new Separator());
taxonEditorMenu.add(new MoveTaxonDialogAction());
taxonEditorMenu.add(new ChangeTaxonToSynonymAction());
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeConceptRelationOperation.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeConceptRelationOperation.java
index e744ca487..a2d396379 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeConceptRelationOperation.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/operations/name/ChangeConceptRelationOperation.java
@@ -38,7 +38,7 @@ public class ChangeConceptRelationOperation extends AbstractEditorOperation {
IUndoContext undoContext, Taxon taxon, Taxon relatedTaxon, TaxonRelationshipType type) {
super(label, undoContext, taxon);
this.relatedTaxon = relatedTaxon;
- //this.oldRelationshipType = relatedTaxon.get
+// this.oldRelationshipType = relatedTaxon.get
this.newRelationshipType = type;
}
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/name/TaxonBasePropertySource.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/name/TaxonBasePropertySource.java
index 85f9e7c66..64fc6ebc7 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/name/TaxonBasePropertySource.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/name/TaxonBasePropertySource.java
@@ -29,6 +29,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;
import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;
import eu.etaxonomy.taxeditor.propertysheet.reference.ReferenceSearchDescriptor;
+import eu.etaxonomy.taxeditor.propertysheet.type.TypeCollectionPropertySource;
import eu.etaxonomy.taxeditor.propertysheet.type.TypePropertyDescriptor;
/**
@@ -157,6 +158,12 @@ public class TaxonBasePropertySource implements IPropertySource {
return secPropertySource;
}
+ if (id.equals(P_ID_TYPES)) {
+ if (taxon.getName() != null) {
+ return new TypeCollectionPropertySource(taxon.getName(), taxon.getName().getSpecimenTypeDesignations());
+ }
+ }
+
return null;
}
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/TypeCollectionPropertySource.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/TypeCollectionPropertySource.java
index 6f0183cab..ba0ebe620 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/TypeCollectionPropertySource.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/TypeCollectionPropertySource.java
@@ -14,8 +14,8 @@ import org.apache.log4j.Logger;
import eu.etaxonomy.cdm.model.name.NameRelationship;
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.name.ZoologicalName;
import eu.etaxonomy.taxeditor.controller.GlobalController;
import eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource;
@@ -24,60 +24,42 @@ public class TypeCollectionPropertySource extends CollectionPropertySource {
.getLogger(TypeCollectionPropertySource.class);
private TaxonNameBase name;
- private boolean isZoological = false;
public TypeCollectionPropertySource(TaxonNameBase name, Collection collection) {
super(collection);
this.name = name;
- if (name instanceof ZoologicalName) {
- isZoological = true;
- }
}
@Override
protected String getItemDisplayName(Object item) {
- String itemDisplayName = "";
+ String str = "";
- if (item instanceof NameRelationship) {
-
- NameRelationship nameRelation = (NameRelationship) item;
+ if (item instanceof SpecimenTypeDesignation) {
- if (nameRelation.getFromName() instanceof ZoologicalName &&
- nameRelation.getToName() instanceof ZoologicalName) {
- isZoological = true;
- }
+ SpecimenTypeDesignation typeDesignation = (SpecimenTypeDesignation) item;
- if (nameRelation.getType() != null) {
-
- NameRelationshipType type = nameRelation.getType();
- String label = GlobalController.getNameRelationLabelType(type);
- if (isZoological &&
- nameRelation.getType().equals(NameRelationshipType.BASIONYM())) {
- label = "original combination";
- }
- itemDisplayName = label;
- } else {
- itemDisplayName = "Relation has no type";
+ if (typeDesignation.getTypeStatus() != null) {
+ str = typeDesignation.getTypeStatus().getLabel();
}
}
- return itemDisplayName;
+ return str;
}
@Override
public Object getPropertyValue(Object id) {
- if (id instanceof NameRelationship) {
- TaxonNameBase relatedName;
- String nameValue;
- if (((NameRelationship) id).getFromName().equals(name)) {
- relatedName = ((NameRelationship) id).getToName();
- nameValue = relatedName.getTitleCache();
+ String str = "";
+
+ if (id instanceof SpecimenTypeDesignation) {
+
+ SpecimenTypeDesignation typeDesignation = (SpecimenTypeDesignation) id;
+
+ if (typeDesignation.getTypeSpecimen() != null) {
+ str = typeDesignation.getTypeSpecimen().getTitleCache();
} else {
- relatedName = ((NameRelationship) id).getFromName();
- nameValue = "to " + relatedName.getTitleCache();
+ str = "UNDEFINED";
}
- return nameValue;
}
- return null;
+ return str;
}
@Override
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ChooseTypeDesignationWizardPage.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ChooseTypeDesignationWizardPage.java
index 6544b905a..21e68d97d 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ChooseTypeDesignationWizardPage.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ChooseTypeDesignationWizardPage.java
@@ -27,7 +27,6 @@ import eu.etaxonomy.cdm.model.common.TermVocabulary;
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.name.TypeDesignationStatus;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
import eu.etaxonomy.cdm.model.occurrence.Specimen;
import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;
@@ -39,16 +38,15 @@ import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;
public class ChooseTypeDesignationWizardPage extends WizardPage {
private static Logger logger = Logger
.getLogger(ChooseTypeDesignationWizardPage.class);
-
+
+ private TaxonNameBase name;
private SpecimenTypeDesignation typeDesignation;
+
private CCombo statusCombo;
-
private Text txtDesignationType;
private TypeDesignationStatus[] typeStatusArray;
- private TaxonNameBase name;
-
/**
* @param typeDesignation
*/
@@ -91,7 +89,7 @@ public class ChooseTypeDesignationWizardPage extends WizardPage {
String label = typeStatus.getLabel();
typeStatusArray[i] = typeStatus;
- if (typeDesignation != null) {
+ if (typeDesignation != null && typeDesignation.getTypeStatus() != null) {
if (typeStatus.equals(typeDesignation.getTypeStatus())) {
selectedIndex = i;
}
@@ -151,13 +149,13 @@ public class ChooseTypeDesignationWizardPage extends WizardPage {
if (complete) {
TypeDesignationStatus status = typeStatusArray[statusCombo.getSelectionIndex()];
-// String specimenText = txtDesignationType.getText();
Specimen specimen;
if (typeDesignation == null || typeDesignation.getTypeSpecimen() == null) {
- specimen = Specimen.NewInstance();
+ specimen = Specimen.NewInstance();
+ typeDesignation.setTypeSpecimen(specimen);
} else {
- specimen = (Specimen) typeDesignation.getTypeSpecimen();
+ specimen = (Specimen) typeDesignation.getTypeSpecimen(); // Next version (or 3 or 4 version from now) - this or something like this will return specimen:
}
specimen.setTitleCache(txtDesignationType.getText());
@@ -165,11 +163,6 @@ public class ChooseTypeDesignationWizardPage extends WizardPage {
name.addSpecimenTypeDesignation(specimen, status, null, null, null, true, true);
} else {
typeDesignation.setTypeStatus(status);
-
-// if (typeDesignation.getTypeSpecimen() == null) {
-// typeDesignation.setTypeSpecimen(Specimen.NewInstance());
-// }
-// typeDesignation.getTypeSpecimen().setTitleCache(specimenText);
}
}
}
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ListTypeWizardPage.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ListTypeWizardPage.java
index 98386f6f5..6c2c20d45 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ListTypeWizardPage.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ListTypeWizardPage.java
@@ -51,12 +51,11 @@ public class ListTypeWizardPage extends WizardPage {
/**
* @param name
*/
- public ListTypeWizardPage(TaxonNameBase name) {
+ public ListTypeWizardPage(TaxonNameBase name, WritableList typeDesignationsList) {
super("");
this.name = name;
-// this.typeDesignationsList.addAll(name.getSpecimenTypeDesignations());
- createDesignationList();
+ this.typeDesignationsList = typeDesignationsList;
setTitle("Type designations for \""
+ CdmUtil.getDisplayName(name) + "\".");
@@ -69,7 +68,6 @@ public class ListTypeWizardPage extends WizardPage {
private Button btnRemove;
private Button btnEdit;
- private boolean isZoological = false;
private SpecimenTypeDesignation typeDesignation;
private TableViewer tableViewer;
@@ -84,6 +82,13 @@ public class ListTypeWizardPage extends WizardPage {
btnEdit = new Button(container, SWT.NONE);
btnEdit.setText("Edit ...");
+ btnEdit.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ if (getSelectedTypeDesignation() != null) {
+ createTypeDesignationWizard(getSelectedTypeDesignation());
+ }
+ }
+ });
btnRemove = new Button(container, SWT.NONE);
btnRemove.setText("Remove");
@@ -171,18 +176,17 @@ public class ListTypeWizardPage extends WizardPage {
}
private void createTypeDesignationWizard(SpecimenTypeDesignation typeDesignation) {
- Wizard wizard = new TypeDesignationWizard(typeDesignation, name);
+ Wizard wizard = new TypeDesignationWizard(typeDesignation, name, typeDesignationsList);
WizardDialog dialog = new WizardDialog(GlobalController.getShell(), wizard);
dialog.create();
- if (dialog.open() == Window.OK) {
- createDesignationList();
- }
+ dialog.open();
+// if (dialog.open() == Window.OK) ...
}
protected void setEnableTypeDesignationButtons(boolean enabled) {
btnRemove.setEnabled(enabled);
- btnEdit.setEnabled(false);
+ btnEdit.setEnabled(enabled);
}
private Image getTypeDesignationImage(SpecimenTypeDesignation typeDesignation) {
@@ -202,10 +206,4 @@ public class ListTypeWizardPage extends WizardPage {
return str;
}
-
- private void createDesignationList() {
- this.typeDesignationsList.clear();
- this.typeDesignationsList.addAll(name.getSpecimenTypeDesignations());
- }
-
}
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeDesignationWizard.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeDesignationWizard.java
index 1bd5f4893..f1dd411d2 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeDesignationWizard.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeDesignationWizard.java
@@ -10,6 +10,7 @@
package eu.etaxonomy.taxeditor.propertysheet.type.wizard;
import org.apache.log4j.Logger;
+import org.eclipse.core.databinding.observable.list.WritableList;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardPage;
@@ -22,20 +23,43 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
* @version 1.0
*/
public class TypeDesignationWizard extends Wizard {
+
private static Logger logger = Logger
.getLogger(TypeDesignationWizard.class);
private SpecimenTypeDesignation typeDesignation;
private TaxonNameBase name;
+ private WritableList typeDesignationsList;
+ public class TemporarySpecimenTypeDesignation extends
+ SpecimenTypeDesignation {
+ TemporarySpecimenTypeDesignation() {
+ super();
+ }
+ }
+
private WizardPage chooseNamePage;
/**
* @param typeDesignation
+ * @param typeDesignationsList
*/
- public TypeDesignationWizard(SpecimenTypeDesignation typeDesignation, TaxonNameBase name) {
- this.typeDesignation = typeDesignation;
+ public TypeDesignationWizard(SpecimenTypeDesignation typeDesignation, TaxonNameBase name, WritableList typeDesignationsList) {
+
this.name = name;
+ if (typeDesignation == null) {
+ createEmptyTypeDesignation();
+ } else {
+ this.typeDesignation = typeDesignation;
+ }
+ this.typeDesignationsList = typeDesignationsList;
+ }
+
+ /**
+ *
+ */
+ private void createEmptyTypeDesignation() {
+ typeDesignation = new TemporarySpecimenTypeDesignation();
}
/* (non-Javadoc)
@@ -54,6 +78,10 @@ public class TypeDesignationWizard extends Wizard {
chooseNamePage.setPageComplete(true);
+ // Remove then re-add in case any name editing has taken place
+ typeDesignationsList.remove(typeDesignation);
+ typeDesignationsList.add(typeDesignation);
+
return true;
}
}
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeListWizard.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeListWizard.java
index e1b42ab47..0eaaaf9fb 100644
--- a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeListWizard.java
+++ b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeListWizard.java
@@ -10,10 +10,13 @@
package eu.etaxonomy.taxeditor.propertysheet.type.wizard;
import org.apache.log4j.Logger;
+import org.eclipse.core.databinding.observable.list.WritableList;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.Wizard;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.occurrence.Specimen;
/**
* @author p.ciardelli
@@ -24,17 +27,23 @@ public class TypeListWizard extends Wizard {
private static Logger logger = Logger.getLogger(TypeListWizard.class);
private TaxonNameBase name;
+ private WritableList typeDesignationsList;
/**
* @param name
*/
public TypeListWizard(TaxonNameBase name) {
super();
+
this.name = name;
+ this.typeDesignationsList = new WritableList();
+ if (name != null) {
+ this.typeDesignationsList.addAll(name.getSpecimenTypeDesignations());
+ }
}
public void addPages(){
- IWizardPage chooseTypePage = new ListTypeWizardPage(name);
+ IWizardPage chooseTypePage = new ListTypeWizardPage(name, typeDesignationsList);
addPage(chooseTypePage);
}
@@ -43,6 +52,30 @@ public class TypeListWizard extends Wizard {
*/
@Override
public boolean performFinish() {
+
+ if (name != null) {
+
+ // Remove all designations
+ for (Object typeDesignation : name.getSpecimenTypeDesignations()) {
+ if (typeDesignation instanceof SpecimenTypeDesignation) {
+ name.removeTypeDesignation((SpecimenTypeDesignation) typeDesignation);
+ }
+ }
+
+ // Then re-add them from list
+ for (Object typeDesignation : typeDesignationsList) {
+ if (typeDesignation instanceof SpecimenTypeDesignation) {
+ name.addSpecimenTypeDesignation(
+ (Specimen) ((SpecimenTypeDesignation) typeDesignation).getTypeSpecimen(),
+ ((SpecimenTypeDesignation) typeDesignation).getTypeStatus(),
+ ((SpecimenTypeDesignation) typeDesignation).getCitation(),
+ ((SpecimenTypeDesignation) typeDesignation).getCitationMicroReference(),
+ ((SpecimenTypeDesignation) typeDesignation).getOriginalNameString(),
+ ((SpecimenTypeDesignation) typeDesignation).isNotDesignated(),
+ false);
+ }
+ }
+ }
return true;
}
}
--
2.34.1