eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/preference/RankMenuPreferences.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/preference/TaxonomicPreferences.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/AbstractEditorPropertySheet.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/AnnotationPropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/AnnotationsDialog.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/AnnotationsPropertyDescriptor.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/TypeCollectionPropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/TypePropertyDescriptor.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/TypePropertySource.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ChooseTypeDesignationWizardPage.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ChooseNameTypeWizardPage.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ChooseSpecimenTypeWizardPage.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/ListTypeWizardPage.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/NameSearchDialog.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeDesignationWizard.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/propertysheet/type/wizard/TypeListWizard.java -text
import java.net.URL;\r
import java.util.HashMap;\r
import java.util.Locale;\r
+import java.util.Set;\r
\r
import org.apache.log4j.Logger;\r
import org.eclipse.core.runtime.FileLocator;\r
CdmDataSourceRepository.getDefault().setCdmApplicationController(applicationController);\r
CdmSessionDataRepository.getDefault().setApplicationController(applicationController);\r
\r
- // Terms have to be initialized explicitly as of now\r
- DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();\r
- vocabularyStore.initialize();\r
+// // Terms have to be initialized explicitly as of now\r
+// logger.warn("MAC Workaround enabled!!");\r
+// DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();\r
+// vocabularyStore.initialize();\r
\r
return applicationController;\r
}\r
fontRegistry.put(ITaxEditorConstants.CHOOSE_NAME_TEXT_FONT,\r
new FontData[] { new FontData("Arial", 12, SWT.BOLD) });\r
fontRegistry.put(ITaxEditorConstants.DEFAULT_PROMPT_FONT,\r
- new FontData[] { new FontData("Georgia", 10, SWT.ITALIC) });\r
+ new FontData[] { new FontData("Georgia", 10, SWT.ITALIC) }); \r
}\r
return fontRegistry;\r
}\r
return getFontRegistry().get(key);\r
}\r
\r
+ /**\r
+ * @param font\r
+ */\r
+ public Font italicizeFont(Font font) {\r
+ FontData fontData = font.getFontData()[0];\r
+ fontData.setStyle(fontData.getStyle() | SWT.ITALIC);\r
+ Font italFont = new Font(Display.getDefault(), fontData);\r
+ \r
+ int i = 0;\r
+ String fontName = "italic";\r
+ Set keySet = fontRegistry.getKeySet();\r
+ while (keySet.contains(fontName + i)) {\r
+ i++;\r
+ }\r
+ fontRegistry.put(fontName + i, italFont.getFontData());\r
+ \r
+ return italFont;\r
+ }\r
+\r
/***************************************************************************\r
* COLOR MAP\r
**************************************************************************/\r
import eu.etaxonomy.cdm.database.CdmDataSource;\r
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;\r
import eu.etaxonomy.cdm.database.DatabaseTypeEnum;\r
+import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
import eu.etaxonomy.cdm.database.ICdmDataSource;\r
import eu.etaxonomy.cdm.model.common.init.TermNotFoundException;\r
-import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.controller.EditorController;\r
-import eu.etaxonomy.taxeditor.controller.TreeController;\r
import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.controller.TreeController;\r
import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
-import eu.etaxonomy.taxeditor.model.CdmUtil;\r
\r
public class CdmDataSourceRepository implements ICdmDataSourceRepository {\r
private static final Logger logger = Logger\r
\r
try {\r
getCdmAppController().changeDataSource(dataSource);\r
+// getCdmAppController().changeDataSource(dataSource, DbSchemaValidation.CREATE);\r
} catch (TermNotFoundException e) {\r
// TODO Auto-generated catch block\r
e.printStackTrace();\r
\r
TaxonRelationshipType relationshipType = relationship.getType();\r
\r
+ if (relationship.getToTaxon() == null || relationship.getFromTaxon() == null) {\r
+ logger.warn("Could not create concept composite - related taxon is null");\r
+ return null;\r
+ }\r
+ \r
if (relationship.getToTaxon().equals(taxon)) {\r
return new ConceptComposite (parent, form, taxon, \r
relationship.getFromTaxon(), relationshipType, false);\r
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
import eu.etaxonomy.cdm.model.name.NameRelationship;\r
import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
}\r
return false;\r
}\r
+\r
+ /**\r
+ * @param name\r
+ * @return\r
+ */\r
+ public static boolean isNameSupraSpecific(TaxonNameBase name) {\r
+ \r
+ if (name == null || name.getRank() == null) {\r
+ return false;\r
+ }\r
+ \r
+ if (name.getRank().isHigher(Rank.SPECIES())) {\r
+// if (name.isInfraGeneric() || name.isSupraGeneric() || name.isGenus()) {\r
+ return true;\r
+ } else {\r
+ return false;\r
+ }\r
+ }\r
}\r
+++ /dev/null
-/**\r
-* Copyright (C) 2009 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\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
-\r
-package eu.etaxonomy.taxeditor.propertysheet;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.core.commands.operations.IUndoContext;\r
-import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.core.runtime.Status;\r
-import org.eclipse.ui.views.properties.IPropertySource;\r
-\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.controller.EditorController;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 09.02.2009\r
- * @version 1.0\r
- */\r
-abstract public class AbstractEditorPropertySheet implements IPropertySource {\r
- private static Logger logger = Logger\r
- .getLogger(AbstractEditorPropertySheet.class);\r
-\r
- /** \r
- * A reference to the taxon the concrete operation is working on \r
- */\r
- protected Taxon taxon;\r
- \r
- public AbstractEditorPropertySheet(Taxon taxon) {\r
- this.taxon = taxon;\r
- }\r
- \r
- /**\r
- * \r
- * @return\r
- */\r
- protected boolean redrawOpenEditor() { \r
- return EditorController.redraw(taxon);\r
- }\r
-}\r
package eu.etaxonomy.taxeditor.propertysheet;\r
\r
import org.apache.log4j.Logger;\r
+import org.eclipse.jface.viewers.CellEditor;\r
+import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.ui.views.properties.PropertySheetEntry;\r
\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
* <p>\r
* Also includes a lovely little hack to enable custom sorting:\r
* <p>\r
- * GetDisplayName is called by two methods from the PropertySheetViewer, which\r
+ * GetDisplayName() is called by two methods from the PropertySheetViewer, which\r
* <ul>\r
* <li>we are not allowed to set, and</li>\r
* <li>uses a comparator which sorts alphabetically.</li>\r
\r
// If this is the top level of the property sheet, redraw the freetext area\r
if (getParent() == null) {\r
- EditorController.redraw(taxon);\r
+ EditorController.redraw(taxon); // causing infinite loops?\r
}\r
}\r
-\r
}
\ No newline at end of file
import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
-import eu.etaxonomy.taxeditor.propertysheet.reference.ReferenceSearchDescriptor;\r
import eu.etaxonomy.taxeditor.propertysheet.type.TypeCollectionPropertySource;\r
import eu.etaxonomy.taxeditor.propertysheet.type.TypePropertyDescriptor;\r
\r
// Property display keys\r
public String P_TAXONNAME;\r
public static final String P_TAXONSEC = "01:Secundum";\r
- public static final String P_TYPES = "02:Name Types";\r
+ public String P_TYPES = "02:Specimen Types";\r
\r
\r
public TaxonBasePropertySource(TaxonBase taxon, String nameTitle) {\r
\r
this.P_TAXONNAME = "00:" + nameTitle;\r
\r
+ if (CdmUtil.isNameSupraSpecific(taxon.getName())) {\r
+ this.P_TYPES = "02:Name Types";\r
+ }\r
+ \r
addDescriptor(P_ID_TAXONNAME);\r
addDescriptor(P_ID_TAXONSEC);\r
addDescriptor(P_ID_TYPES); \r
new PropertyDescriptor(P_ID_TAXONNAME, P_TAXONNAME));\r
} \r
if (id.equals(P_ID_TAXONSEC)) {\r
- descriptors.addElement(new ReferenceSearchDescriptor(P_ID_TAXONSEC, P_TAXONSEC, IReferenceSearch.BIBREF) {\r
- protected void saveReference(ReferenceBase reference) {\r
- setPropertyValue(P_ID_TAXONSEC, reference);\r
- }\r
- });\r
+ descriptors.addElement(\r
+ new PropertyDescriptor(P_ID_TAXONSEC, P_TAXONSEC)); \r
}\r
if (id.equals(P_ID_TYPES)) {\r
descriptors.addElement(\r
- new TypePropertyDescriptor(P_ID_TYPES, P_TYPES, taxon.getName()) {\r
- protected void saveTypes(Set set) {\r
- setPropertyValue(P_ID_TYPES, set);\r
- }\r
- }\r
+ new TypePropertyDescriptor(P_ID_TYPES, P_TYPES, taxon.getName())\r
);\r
};\r
}\r
\r
if (id.equals(P_ID_TYPES)) {\r
if (taxon.getName() != null) {\r
- return new TypeCollectionPropertySource(taxon.getName(), taxon.getName().getSpecimenTypeDesignations());\r
+ TaxonNameBase name = taxon.getName();\r
+ \r
+ if (CdmUtil.isNameSupraSpecific(taxon.getName())) {\r
+ return new TypeCollectionPropertySource(name, name.getNameTypeDesignations());\r
+ } else {\r
+ return new TypeCollectionPropertySource(name, name.getSpecimenTypeDesignations());\r
+ }\r
}\r
}\r
\r
* @see org.eclipse.ui.views.properties.IPropertySource#setPropertyValue(java.lang.Object, java.lang.Object)\r
*/\r
public void setPropertyValue(Object id, Object value) {\r
- if (id.equals(P_ID_TAXONSEC)) {\r
- if (value instanceof ReferenceBase) {\r
- taxon.setSec((ReferenceBase) value);\r
- }\r
- }\r
}\r
}\r
descriptors.addElement(\r
new TextPropertyDescriptor(P_ID_YEAR, P_YEAR));\r
}\r
-// if (id.equals(P_ID_YEAR)) {\r
-//// TextPropertyDescriptor yearDescriptor = new TextPropertyDescriptor(P_ID_YEAR, P_YEAR) {\r
-//// public CellEditor createPropertyEditor(Composite parent) {\r
-//// CellEditor editor = new TextCellEditor(parent);\r
-//// \r
-//// // Colors cell yellow upon activation\r
-//// editor.getControl().setBackground(new Color(Display.getDefault(), WarningAnnotation.WARNING_RGB));\r
-//// \r
-//// if (getValidator() != null) {\r
-//// editor.setValidator(getValidator());\r
-//// }\r
-//// return editor;\r
-//// }\r
-//// };\r
-// \r
-// TextPropertyDescriptor yearDescriptor = new TextPropertyDescriptor(P_ID_YEAR, P_YEAR);\r
-// \r
-// // BibtexReference.setYear() takes a String, no need for validation\r
-// if (!(reference instanceof BibtexReference)) {\r
-// yearDescriptor.setValidator(new YearValidator());\r
-// }\r
-// descriptors.addElement(yearDescriptor); \r
-// }\r
\r
// Date published\r
if (id.equals(P_ID_DATEPUBLISHED)) {\r
return reference;\r
}\r
\r
- public String toString() {\r
- return CdmUtils.Nz(reference.getTitleCache());\r
- }\r
-\r
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);\r
\r
public void addPropertyChangeListener(\r
*/\r
package eu.etaxonomy.taxeditor.propertysheet.type;\r
\r
+import java.beans.PropertyChangeEvent;\r
+import java.beans.PropertyChangeListener;\r
import java.util.Collection;\r
\r
import org.apache.log4j.Logger;\r
+import org.eclipse.jface.viewers.CellEditor;\r
+import org.eclipse.jface.viewers.TextCellEditor;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.ui.views.properties.IPropertyDescriptor;\r
+import org.eclipse.ui.views.properties.IPropertySource;\r
+import org.eclipse.ui.views.properties.PropertyDescriptor;\r
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;\r
\r
-import eu.etaxonomy.cdm.model.name.NameRelationship;\r
-import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
+import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
+import eu.etaxonomy.cdm.model.reference.Generic;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
import eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.ReferencePropertySource;\r
\r
public class TypeCollectionPropertySource extends CollectionPropertySource {\r
private static final Logger logger = Logger\r
this.name = name;\r
}\r
\r
+ protected void addDescriptor(Object item) {\r
+ String itemDisplayName = getItemDisplayName(item);\r
+ \r
+ if (item instanceof NameTypeDesignation) {\r
+ descriptors.addElement(\r
+ new PropertyDescriptor(item, itemDisplayName));\r
+ } else {\r
+ \r
+ // TextPropertyDescriptor expects its value to be set w/ a String and throws\r
+ // an Assert exception when this is not the case, i.e. when it is passed an \r
+ // IPropertySource; hence, this override\r
+ descriptors.addElement(\r
+ new TextPropertyDescriptor(item, itemDisplayName) {\r
+ public CellEditor createPropertyEditor(Composite parent) {\r
+ CellEditor editor = new TextCellEditor(parent) {\r
+ protected void doSetValue(Object value) {\r
+ if (value instanceof String) {\r
+ super.doSetValue(value);\r
+ } else {\r
+ super.doSetValue(value.toString());\r
+ } \r
+ }\r
+ };\r
+ if (getValidator() != null) {\r
+ editor.setValidator(getValidator());\r
+ }\r
+ return editor;\r
+ }\r
+ });\r
+ }\r
+ }\r
+ \r
@Override\r
protected String getItemDisplayName(Object item) {\r
String str = "";\r
\r
if (typeDesignation.getTypeStatus() != null) {\r
str = typeDesignation.getTypeStatus().getLabel();\r
+ } else {\r
+ str = "UNDEFINED";\r
}\r
}\r
+\r
+ if (item instanceof NameTypeDesignation) {\r
+ \r
+ NameTypeDesignation typeDesignation = (NameTypeDesignation) item;\r
+ \r
+ if (typeDesignation.isLectoType()) {\r
+ str = "Lectotype";\r
+ } else {\r
+ str = "Type";\r
+ }\r
+ }\r
+ \r
return str;\r
}\r
\r
public Object getPropertyValue(Object id) {\r
String str = "";\r
\r
- if (id instanceof SpecimenTypeDesignation) {\r
+ if (id instanceof TypeDesignationBase) {\r
+ \r
+ final TypeDesignationBase typeDesignation = (TypeDesignationBase) id;\r
+ \r
+ return new IPropertySource() {\r
+\r
+ @Override\r
+ public Object getEditableValue() {\r
+ return this;\r
+ }\r
+\r
+ @Override\r
+ public IPropertyDescriptor[] getPropertyDescriptors() {\r
+ return new IPropertyDescriptor[]{\r
+ new PropertyDescriptor(\r
+ typeDesignation, "Citation")\r
+ };\r
+ }\r
+\r
+ @Override\r
+ public Object getPropertyValue(Object id) {\r
+ ReferenceBase reference = typeDesignation.getCitation();\r
+ if (reference == null) {\r
+ reference = Generic.NewInstance();\r
+ }\r
+ ReferencePropertySource referencePropertySource = new ReferencePropertySource(reference);\r
+ referencePropertySource.addPropertyChangeListener(new PropertyChangeListener() {\r
+ public void propertyChange(PropertyChangeEvent evt) {\r
+ if (evt.getNewValue() instanceof ReferenceBase) { \r
+ typeDesignation.setCitation((ReferenceBase) evt.getNewValue());\r
+ }\r
+ }\r
+ });\r
+ return referencePropertySource;\r
+ }\r
+\r
+ @Override\r
+ public boolean isPropertySet(Object id) {\r
+ return false;\r
+ }\r
+\r
+ @Override\r
+ public void resetPropertyValue(Object id) {}\r
+\r
+ @Override\r
+ public void setPropertyValue(Object id, Object value) {\r
+ }\r
+ \r
+ public String toString() {\r
+ if (typeDesignation instanceof SpecimenTypeDesignation) {\r
+ return ((SpecimenTypeDesignation) typeDesignation).getTypeSpecimen().getTitleCache();\r
+ }\r
+ \r
+ if (typeDesignation instanceof NameTypeDesignation) {\r
+ if (((NameTypeDesignation) typeDesignation).getTypeName() != null) {\r
+ return ((NameTypeDesignation) typeDesignation).getTypeName().getTitleCache();\r
+ }\r
+ }\r
+ \r
+ return null;\r
+ }\r
+ };\r
\r
+ }\r
+ return str;\r
+ } \r
+ \r
+ @Override\r
+ public void setPropertyValue(Object id, Object value) {\r
+ \r
+ if (id instanceof SpecimenTypeDesignation && value instanceof String) {\r
SpecimenTypeDesignation typeDesignation = (SpecimenTypeDesignation) id;\r
- \r
+ \r
if (typeDesignation.getTypeSpecimen() != null) {\r
- str = typeDesignation.getTypeSpecimen().getTitleCache();\r
+ typeDesignation.getTypeSpecimen().setTitleCache((String) value);\r
} else {\r
- str = "UNDEFINED";\r
+ logger.warn("'typeDesignation.getTypeSpecimen()' returned null.");\r
}\r
}\r
- return str;\r
- }\r
-\r
- @Override\r
- public void setPropertyValue(Object id, Object value) {\r
- // Fields not editable in property sheet view\r
}\r
\r
+ /* (non-Javadoc)\r
+ * @see eu.etaxonomy.taxeditor.propertysheet.CollectionPropertySource#toString()\r
+ */\r
@Override\r
public String toString() {\r
- // "Name Relations" header has no value\r
return "";\r
}\r
}
\ No newline at end of file
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
import eu.etaxonomy.taxeditor.propertysheet.type.wizard.TypeListWizard;\r
\r
/**\r
* @created 19.05.2008\r
* @version 1.0\r
*/\r
-abstract public class TypePropertyDescriptor extends PropertyDescriptor {\r
+public class TypePropertyDescriptor extends PropertyDescriptor {\r
private static final Logger logger = Logger\r
.getLogger(TypePropertyDescriptor.class);\r
\r
dialog.create();\r
dialog.open();\r
\r
- return new TypeCollectionPropertySource(name, name.getSpecimenTypeDesignations());\r
+ if (CdmUtil.isNameSupraSpecific(name)) {\r
+ return new TypeCollectionPropertySource(name, name.getNameTypeDesignations());\r
+ } else {\r
+ return new TypeCollectionPropertySource(name, name.getSpecimenTypeDesignations());\r
+ }\r
}\r
\r
};\r
}\r
return editor;\r
}\r
- \r
- abstract protected void saveTypes(Set set); \r
}\r
\r
protected Vector<PropertyDescriptor> descriptors = new Vector<PropertyDescriptor>();\r
\r
- public TypePropertySource(TaxonNameBase name) {\r
+ public TypePropertySource(TaxonNameBase name, String f) {\r
this.name = name;\r
\r
addDescriptor(P_ID_NAMETYPES);\r
--- /dev/null
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\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
+\r
+package eu.etaxonomy.taxeditor.propertysheet.type.wizard;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.databinding.observable.list.WritableList;\r
+import org.eclipse.core.runtime.Assert;\r
+import org.eclipse.jface.wizard.WizardPage;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.KeyAdapter;\r
+import org.eclipse.swt.events.KeyEvent;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.layout.GridData;\r
+import org.eclipse.swt.layout.GridLayout;\r
+import org.eclipse.swt.widgets.Button;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Dialog;\r
+import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Text;\r
+\r
+import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
+import eu.etaxonomy.cdm.model.reference.Generic;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.ReferenceSearchDialog;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 09.03.2009\r
+ * @version 1.0\r
+ */\r
+public class ChooseNameTypeWizardPage extends WizardPage {\r
+ private static Logger logger = Logger\r
+ .getLogger(ChooseNameTypeWizardPage.class);\r
+\r
+ private TaxonNameBase name; \r
+ private NameTypeDesignation typeDesignation;\r
+ private TaxonNameBase savedName;\r
+ \r
+ private ReferenceBase savedReference;\r
+ \r
+ private Text txtName;\r
+ private Button btnClearName;\r
+ private Text txtReference;\r
+ private Button btnClearReference;\r
+ private Button btnRejected;\r
+ private Button btnConserved;\r
+ private Button btnLecto;\r
+ private Button btnNotDesignated;\r
+\r
+ private WritableList typeDesignationsList;\r
+\r
+ /**\r
+ * @param typeDesignation\r
+ * @param name\r
+ * @param typeDesignationsList \r
+ */\r
+ public ChooseNameTypeWizardPage(TypeDesignationBase typeDesignation,\r
+ TaxonNameBase name, WritableList typeDesignationsList) {\r
+ super("");\r
+ \r
+ Assert.isTrue(typeDesignation == null || typeDesignation instanceof NameTypeDesignation);\r
+ \r
+ this.typeDesignation = (NameTypeDesignation) typeDesignation;\r
+ this.name = name;\r
+ this.typeDesignationsList = typeDesignationsList;\r
+ \r
+ setTitle("Create or edit type designation");\r
+ setDescription("Create or edit type designation for '" + name.getTitleCache() + "\".");\r
+ }\r
+ \r
+ \r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)\r
+ */\r
+ @Override\r
+ public void createControl(Composite parent) {\r
+ \r
+ // Create composite for popup dialog \r
+ Composite container = new Composite(parent, SWT.NULL);\r
+ container.setLayout(new GridLayout());\r
+ setControl(container);\r
+ \r
+ // Create name text\r
+ final Label lblName = new Label(container, SWT.NONE);\r
+ lblName.setText("Choose a name either by searching or entering it as free text:");\r
+ \r
+ // Create 3-columned composite for name\r
+ Composite nameComposite = new Composite(container, SWT.NULL);\r
+ nameComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ GridLayout gridLayout = new GridLayout();\r
+ gridLayout.numColumns = 3;\r
+ gridLayout.marginHeight = 0;\r
+ gridLayout.marginWidth = 0;\r
+ nameComposite.setLayout(gridLayout);\r
+ \r
+ // Create name input\r
+ txtName = new Text(nameComposite, SWT.BORDER);\r
+ txtName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ txtName.addKeyListener(new KeyAdapter() {\r
+ @Override\r
+ public void keyReleased(KeyEvent e) {\r
+ updatePage();\r
+ } \r
+ });\r
+ \r
+ // Create name search button\r
+ Button btnSearchName = new Button(nameComposite, SWT.NONE);\r
+ btnSearchName.setEnabled(true);\r
+ btnSearchName.setLayoutData(new GridData());\r
+ btnSearchName.setText("Search ...");\r
+ btnSearchName.addSelectionListener(new SelectionAdapter() {\r
+ \r
+ // Popup reference search\r
+ public void widgetSelected(SelectionEvent e) {\r
+ popupNameSearch();\r
+ }\r
+ });\r
+\r
+ // Create clear name button\r
+ btnClearName = new Button(nameComposite, SWT.NONE);\r
+ btnClearName.setEnabled(false);\r
+ btnClearName.setText("Clear");\r
+ btnClearName.addSelectionListener(new SelectionAdapter() {\r
+ \r
+ // Clear selected reference\r
+ public void widgetSelected(SelectionEvent e) {\r
+ clearName();\r
+ }\r
+ });\r
+\r
+ // Set text to name text if exists, disable ability to edit name\r
+ if (typeDesignation != null && typeDesignation.getTypeName() != null) {\r
+ \r
+ savedName = typeDesignation.getTypeName();\r
+ txtName.setText(savedName.getTitleCache());\r
+ txtName.setEditable(false);\r
+ \r
+ btnClearName.setEnabled(false);\r
+ btnSearchName.setEnabled(false);\r
+ }\r
+ \r
+ // Tell user when he is entering a new name\r
+ Label lblNewNameFeedback = new Label(container, SWT.NONE);\r
+ lblNewNameFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
+ lblNewNameFeedback.setFont(\r
+ TaxEditorPlugin.getDefault().italicizeFont(lblNewNameFeedback.getFont()));\r
+ lblNewNameFeedback.setText("Existing names can not be edited.");\r
+ \r
+ // Create 2-columned composite for name\r
+ Composite booleansComposite = new Composite(container, SWT.NULL);\r
+ booleansComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ GridLayout gridLayout2 = new GridLayout();\r
+ gridLayout2.numColumns = 2;\r
+ gridLayout2.marginHeight = 15;\r
+ gridLayout2.marginWidth = 0;\r
+ booleansComposite.setLayout(gridLayout2);\r
+ \r
+ btnRejected = new Button(booleansComposite, SWT.CHECK);\r
+ btnRejected.setText("Is rejected type");\r
+ btnRejected.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ \r
+ btnConserved = new Button(booleansComposite, SWT.CHECK);\r
+ btnConserved.setText("Is conserved type");\r
+ btnConserved.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ \r
+ btnLecto = new Button(booleansComposite, SWT.CHECK);\r
+ btnLecto.setText("Is lecto type");\r
+ btnLecto.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ \r
+ btnNotDesignated = new Button(booleansComposite, SWT.CHECK);\r
+ btnNotDesignated.setText("Is not designated");\r
+ btnNotDesignated.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ \r
+ // Set any boolean values\r
+ if (typeDesignation != null) {\r
+ if (typeDesignation.isRejectedType()) {\r
+ btnRejected.setSelection(true);\r
+ }\r
+ if (typeDesignation.isConservedType()) {\r
+ btnConserved.setSelection(true);\r
+ }\r
+ if (typeDesignation.isLectoType()) {\r
+ btnLecto.setSelection(true);\r
+ }\r
+ if (typeDesignation.isNotDesignated()) {\r
+ btnNotDesignated.setSelection(true);\r
+ }\r
+ }\r
+ \r
+ // Create reference text\r
+ final Label lblReference = new Label(container, SWT.NONE);\r
+ lblReference.setText("Choose a reference either by searching or entering it as free text:");\r
+ \r
+ // Create 3-columned composite for reference\r
+ Composite referenceComposite = new Composite(container, SWT.NULL);\r
+ referenceComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ GridLayout gridLayout3 = new GridLayout();\r
+ gridLayout3.numColumns = 3;\r
+ gridLayout3.marginHeight = 0;\r
+ gridLayout3.marginWidth = 0;\r
+ referenceComposite.setLayout(gridLayout3);\r
+ \r
+ // Create reference input\r
+ txtReference = new Text(referenceComposite, SWT.BORDER);\r
+ txtReference.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ \r
+ // Create reference search button\r
+ Button btnSearchReference = new Button(referenceComposite, SWT.NONE);\r
+ btnSearchReference.setEnabled(true);\r
+ btnSearchReference.setLayoutData(new GridData());\r
+ btnSearchReference.setText("Search ...");\r
+ btnSearchReference.addSelectionListener(new SelectionAdapter() {\r
+ \r
+ // Popup reference search\r
+ public void widgetSelected(SelectionEvent e) {\r
+ popupReferenceSearch();\r
+ }\r
+ });\r
+\r
+ // Create clear reference button\r
+ btnClearReference = new Button(referenceComposite, SWT.NONE);\r
+ btnClearReference.setEnabled(false);\r
+ btnClearReference.setText("Clear");\r
+ btnClearReference.addSelectionListener(new SelectionAdapter() {\r
+ \r
+ // Clear selected reference\r
+ public void widgetSelected(SelectionEvent e) {\r
+ clearReference();\r
+ }\r
+ });\r
+\r
+ // Set text to reference text if exists\r
+ if (typeDesignation != null && typeDesignation.getCitation() != null) {\r
+ \r
+ savedReference = typeDesignation.getCitation();\r
+ txtReference.setText(savedReference.getTitleCache());\r
+ txtReference.setEditable(false);\r
+ \r
+ btnClearReference.setEnabled(true);\r
+ }\r
+ \r
+ // Tell user when he is entering a new reference\r
+ Label lblNewRefFeedback = new Label(container, SWT.NONE);\r
+ lblNewRefFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
+ lblNewRefFeedback.setFont(\r
+ TaxEditorPlugin.getDefault().italicizeFont(lblNewRefFeedback.getFont()));\r
+ lblNewRefFeedback.setText("Existing references can only be edited in property sheet.");\r
+ }\r
+\r
+ /**\r
+ * \r
+ */\r
+ protected void popupNameSearch() {\r
+ Dialog dialog = new NameSearchDialog(getShell());\r
+ Object value = ((NameSearchDialog) dialog).open();\r
+ \r
+ if (value instanceof TaxonNameBase) {\r
+ setSavedName((TaxonNameBase) value);\r
+ updatePage();\r
+ }\r
+ }\r
+\r
+ protected void popupReferenceSearch() {\r
+ Dialog dialog = new ReferenceSearchDialog(getShell(), \r
+ IReferenceSearch.BIBREF);\r
+ Object value = ((ReferenceSearchDialog) dialog).open();\r
+ \r
+ if (value instanceof ReferenceBase) {\r
+ setSavedReference((ReferenceBase) value);\r
+ }\r
+ }\r
+ \r
+ /**\r
+ * @param value\r
+ */\r
+ private void setSavedName(TaxonNameBase savedName) {\r
+ \r
+ this.savedName = savedName;\r
+ \r
+ txtName.setText(savedName.getTitleCache());\r
+ txtName.setEditable(false);\r
+ \r
+ btnClearName.setEnabled(true);\r
+ }\r
+ \r
+ /**\r
+ * @param value\r
+ */\r
+ private void setSavedReference(ReferenceBase reference) {\r
+ \r
+ savedReference = reference;\r
+ \r
+ txtReference.setText(reference.getTitleCache());\r
+ txtReference.setEditable(false);\r
+ \r
+ btnClearReference.setEnabled(true);\r
+ }\r
+\r
+ /**\r
+ * \r
+ */\r
+ protected void clearName() {\r
+ savedName = null;\r
+ \r
+ txtName.setText("");\r
+ txtName.setEditable(true);\r
+ \r
+ btnClearName.setEnabled(false); \r
+ }\r
+ \r
+ /**\r
+ * \r
+ */\r
+ protected void clearReference() {\r
+ savedReference = null;\r
+ \r
+ txtReference.setText("");\r
+ txtReference.setEditable(true);\r
+ \r
+ btnClearReference.setEnabled(false); \r
+ }\r
+ \r
+ @Override\r
+ public boolean canFlipToNextPage() {\r
+ return isPageComplete();\r
+ }\r
+\r
+ public boolean isPageComplete() {\r
+ return (txtName.getText().length() > 0);\r
+ }\r
+ \r
+ private void updatePage() {\r
+ \r
+ getWizard().getContainer().updateButtons();\r
+ }\r
+ \r
+ public void setPageComplete(boolean complete) {\r
+ super.setPageComplete(complete);\r
+ \r
+ if (complete) {\r
+ \r
+ TaxonNameBase typeName = null;\r
+ if (savedName != null) {\r
+ typeName = savedName;\r
+ } else {\r
+ if (!txtName.getText().equals("")) {\r
+ typeName = PreferencesUtil.getInstanceOfPreferredNameClass();\r
+ typeName.setTitleCache(txtName.getText());\r
+ }\r
+ }\r
+ \r
+ ReferenceBase citation = null;\r
+ if (savedReference != null) {\r
+ citation = savedReference;\r
+ } else {\r
+ if (!txtReference.getText().equals("")) {\r
+ citation = Generic.NewInstance();\r
+ citation.setTitleCache(txtReference.getText());\r
+ }\r
+ }\r
+ \r
+ if (typeDesignation == null) {\r
+ typeDesignation = new TemporaryNameTypeDesignation(typeName, citation, null,\r
+ null, btnRejected.getSelection(), btnConserved.getSelection(), btnNotDesignated.getSelection());\r
+ typeDesignation.setLectoType(btnLecto.getSelection()); \r
+ } else {\r
+ typeDesignation.setRejectedType(btnRejected.getSelection());\r
+ typeDesignation.setConservedType(btnConserved.getSelection());\r
+ typeDesignation.setLectoType(btnLecto.getSelection());\r
+ typeDesignation.setNotDesignated(btnNotDesignated.getSelection());\r
+ typeDesignation.setCitation(citation);\r
+ }\r
+ \r
+ typeDesignationsList.remove(typeDesignation);\r
+ typeDesignationsList.add(typeDesignation);\r
+ }\r
+ }\r
+ \r
+ public class TemporaryNameTypeDesignation extends\r
+ NameTypeDesignation {\r
+ \r
+ /**\r
+ * @param typeName\r
+ * @param citation\r
+ * @param object\r
+ * @param object2\r
+ * @param selection\r
+ * @param selection2\r
+ * @param selection3\r
+ */\r
+// public TemporaryNameTypeDesignation() {\r
+// super(null, null, null, null, false, false, false);\r
+// setLectoType(false);\r
+// }\r
+ \r
+ public TemporaryNameTypeDesignation(TaxonNameBase typeName, ReferenceBase citation, String citationMicroReference,\r
+ String originalNameString, boolean isRejectedType, boolean isConservedType, boolean isNotDesignated) {\r
+ super(typeName, citation, citationMicroReference, originalNameString, \r
+ isRejectedType, isConservedType, isNotDesignated);\r
+ }\r
+ }\r
+}\r
--- /dev/null
+/**\r
+* Copyright (C) 2009 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\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
+\r
+package eu.etaxonomy.taxeditor.propertysheet.type.wizard;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.databinding.observable.list.WritableList;\r
+import org.eclipse.core.runtime.Assert;\r
+import org.eclipse.jface.wizard.WizardPage;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.custom.CCombo;\r
+import org.eclipse.swt.events.KeyAdapter;\r
+import org.eclipse.swt.events.KeyEvent;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.layout.GridData;\r
+import org.eclipse.swt.layout.GridLayout;\r
+import org.eclipse.swt.widgets.Button;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Dialog;\r
+import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Text;\r
+\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
+import eu.etaxonomy.cdm.model.name.TypeDesignationStatus;\r
+import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;\r
+import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
+import eu.etaxonomy.cdm.model.reference.Generic;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.IReferenceSearch;\r
+import eu.etaxonomy.taxeditor.propertysheet.reference.ReferenceSearchDialog;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 13.02.2009\r
+ * @version 1.0\r
+ */\r
+public class ChooseSpecimenTypeWizardPage extends WizardPage {\r
+ private static Logger logger = Logger\r
+ .getLogger(ChooseSpecimenTypeWizardPage.class);\r
+\r
+ private TaxonNameBase name; \r
+ private SpecimenTypeDesignation typeDesignation;\r
+ private WritableList typeDesignationsList;\r
+\r
+ private ReferenceBase savedReference;\r
+ \r
+ private CCombo statusCombo;\r
+ private Text txtDesignationType;\r
+ private TypeDesignationStatus[] typeStatusArray;\r
+ private Text txtReference;\r
+ private Button btnClearReference;\r
+\r
+\r
+ /**\r
+ * @param typeDesignation\r
+ * @param typeDesignationsList \r
+ */\r
+ public ChooseSpecimenTypeWizardPage(\r
+ TypeDesignationBase typeDesignation, TaxonNameBase name, WritableList typeDesignationsList) {\r
+ super("");\r
+ \r
+ Assert.isTrue(typeDesignation == null || typeDesignation instanceof SpecimenTypeDesignation,"");\r
+ \r
+ this.typeDesignation = (SpecimenTypeDesignation) typeDesignation;\r
+ this.name = name;\r
+ this.typeDesignationsList = typeDesignationsList;\r
+ \r
+ setTitle("Create or edit type designation");\r
+ setDescription("Create or edit type designation for '" + name.getTitleCache() + "\".");\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)\r
+ */\r
+ @Override\r
+ public void createControl(Composite parent) {\r
+ \r
+ // Create composite for popup dialog \r
+ Composite container = new Composite(parent, SWT.NULL);\r
+ container.setLayout(new GridLayout());\r
+ setControl(container);\r
+\r
+ // Create text\r
+ final Label lblChooseStatus = new Label(container, SWT.NONE);\r
+ lblChooseStatus.setText("Choose designation type status:");\r
+\r
+ // Create designation type status dropdown \r
+ statusCombo = new CCombo(container, SWT.BORDER);\r
+ statusCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ TermVocabulary<TypeDesignationStatus> typeStatusSet = CdmSessionDataRepository.getDefault().getTypeDesignationStatus();\r
+ typeStatusArray = new TypeDesignationStatus[CdmSessionDataRepository.getDefault().getTypeDesignationStatus().size()];\r
+ int i = 0;\r
+ int selectedIndex = -1;\r
+ for (TypeDesignationStatus typeStatus : \r
+ CdmSessionDataRepository.getDefault().getTypeDesignationStatus()) {\r
+ String label = typeStatus.getLabel();\r
+ typeStatusArray[i] = typeStatus;\r
+ \r
+ if (typeDesignation != null && typeDesignation.getTypeStatus() != null) {\r
+ if (typeStatus.equals(typeDesignation.getTypeStatus())) {\r
+ selectedIndex = i;\r
+ }\r
+ }\r
+ \r
+ i++;\r
+ statusCombo.add(label);\r
+ }\r
+ \r
+ // Set menu to type designation status if exists\r
+ statusCombo.select(selectedIndex);\r
+\r
+ statusCombo.addSelectionListener(new SelectionAdapter() {\r
+ @Override\r
+ public void widgetSelected(SelectionEvent e) {\r
+ updatePage();\r
+ }\r
+ });\r
+\r
+ // Create text\r
+ final Label lblEnterText = new Label(container, SWT.NONE);\r
+ lblEnterText.setText("Enter designation type text:");\r
+ \r
+ txtDesignationType = new Text(container, SWT.BORDER);\r
+ txtDesignationType.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
+ txtDesignationType.addKeyListener(new KeyAdapter() {\r
+ @Override\r
+ public void keyReleased(KeyEvent e) {\r
+ updatePage();\r
+ } \r
+ });\r
+ \r
+ // Set text to specimen text if exists\r
+ if (typeDesignation != null && typeDesignation.getTypeSpecimen() != null) {\r
+ txtDesignationType.setText(typeDesignation.getTypeSpecimen().getTitleCache());\r
+ }\r
+ \r
+ // Create reference text\r
+ final Label lblReference = new Label(container, SWT.NONE);\r
+ lblReference.setText("Choose a reference either by searching or entering it as free text:");\r
+ \r
+ // Create 3-columned composite for reference\r
+ Composite referenceComposite = new Composite(container, SWT.NULL);\r
+ referenceComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ GridLayout gridLayout = new GridLayout();\r
+ gridLayout.numColumns = 3;\r
+ gridLayout.marginHeight = 0;\r
+ gridLayout.marginWidth = 0;\r
+ referenceComposite.setLayout(gridLayout);\r
+ \r
+ // Create reference input\r
+ txtReference = new Text(referenceComposite, SWT.BORDER);\r
+ txtReference.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ \r
+ // Create reference search button\r
+ Button btnSearchReference = new Button(referenceComposite, SWT.NONE);\r
+ btnSearchReference.setEnabled(true);\r
+ btnSearchReference.setLayoutData(new GridData());\r
+ btnSearchReference.setText("Search ...");\r
+ btnSearchReference.addSelectionListener(new SelectionAdapter() {\r
+ \r
+ // Popup reference search\r
+ public void widgetSelected(SelectionEvent e) {\r
+ popupSearch();\r
+ }\r
+ });\r
+\r
+ // Create clear reference button\r
+ btnClearReference = new Button(referenceComposite, SWT.NONE);\r
+ btnClearReference.setEnabled(false);\r
+ btnClearReference.setText("Clear");\r
+ btnClearReference.addSelectionListener(new SelectionAdapter() {\r
+ \r
+ // Clear selected reference\r
+ public void widgetSelected(SelectionEvent e) {\r
+ clearReference();\r
+ }\r
+ });\r
+\r
+ // Set text to reference text if exists\r
+ if (typeDesignation != null && typeDesignation.getCitation() != null) {\r
+ \r
+ savedReference = typeDesignation.getCitation();\r
+ txtReference.setText(savedReference.getTitleCache());\r
+ txtReference.setEditable(false);\r
+ \r
+ btnClearReference.setEnabled(true);\r
+ }\r
+ \r
+ // Tell user when he is entering a new reference\r
+ Label lblNewRefFeedback = new Label(container, SWT.NONE);\r
+ lblNewRefFeedback.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
+ lblNewRefFeedback.setFont(\r
+ TaxEditorPlugin.getDefault().italicizeFont(lblNewRefFeedback.getFont()));\r
+ lblNewRefFeedback.setText("Existing references can only be edited in property sheet.");\r
+ }\r
+\r
+ /**\r
+ * \r
+ */\r
+ protected void popupSearch() {\r
+ Dialog dialog = new ReferenceSearchDialog(getShell(), \r
+ IReferenceSearch.BIBREF);\r
+ Object value = ((ReferenceSearchDialog) dialog).open();\r
+ \r
+ if (value instanceof ReferenceBase) {\r
+ setSavedReference((ReferenceBase) value);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * @param value\r
+ */\r
+ private void setSavedReference(ReferenceBase reference) {\r
+ \r
+ savedReference = reference;\r
+ \r
+ txtReference.setText(reference.getTitleCache());\r
+ txtReference.setEditable(false);\r
+ \r
+ btnClearReference.setEnabled(true);\r
+ }\r
+\r
+ /**\r
+ * \r
+ */\r
+ protected void clearReference() {\r
+ savedReference = null;\r
+ \r
+ txtReference.setText("");\r
+ txtReference.setEditable(true);\r
+ \r
+ btnClearReference.setEnabled(false); \r
+ }\r
+ \r
+ @Override\r
+ public boolean canFlipToNextPage() {\r
+ return isPageComplete();\r
+ }\r
+\r
+ public boolean isPageComplete() {\r
+ return (statusCombo.getSelectionIndex() > -1 \r
+ && txtDesignationType.getText().length() > 0);\r
+ }\r
+ \r
+ private void updatePage() {\r
+ \r
+ getWizard().getContainer().updateButtons();\r
+ }\r
+ \r
+ public void setPageComplete(boolean complete) {\r
+ super.setPageComplete(complete);\r
+ \r
+ if (complete) {\r
+ \r
+ ReferenceBase citation = null;\r
+ if (savedReference != null) {\r
+ citation = savedReference;\r
+ } else {\r
+ if (!txtReference.getText().equals("")) {\r
+ citation = Generic.NewInstance();\r
+ citation.setTitleCache(txtReference.getText());\r
+ }\r
+ }\r
+ \r
+ TypeDesignationStatus status = typeStatusArray[statusCombo.getSelectionIndex()];\r
+ \r
+ Specimen specimen;\r
+ if (typeDesignation == null || typeDesignation.getTypeSpecimen() == null) {\r
+ specimen = Specimen.NewInstance();\r
+ } else {\r
+ specimen = CdmBase.deproxy(typeDesignation.getTypeSpecimen(), Specimen.class);\r
+ }\r
+ specimen.setTitleCache(txtDesignationType.getText());\r
+ \r
+ if (typeDesignation == null) {\r
+ typeDesignation = new TemporarySpecimenTypeDesignation(specimen, status, \r
+ citation, null, null, true);\r
+ } else {\r
+ typeDesignation.setTypeSpecimen(specimen);\r
+ typeDesignation.setTypeStatus(status);\r
+ typeDesignation.setCitation(citation);\r
+ }\r
+ \r
+ typeDesignationsList.remove(typeDesignation);\r
+ typeDesignationsList.add(typeDesignation);\r
+ }\r
+ }\r
+ \r
+ public class TemporarySpecimenTypeDesignation extends\r
+ SpecimenTypeDesignation {\r
+ \r
+ TemporarySpecimenTypeDesignation(DerivedUnitBase specimen, TypeDesignationStatus status, ReferenceBase citation, String citationMicroReference, \r
+ String originalNameString, boolean isNotDesignated) {\r
+ super(specimen, status, citation, citationMicroReference, \r
+ originalNameString, isNotDesignated);\r
+ }\r
+ }\r
+}\r
+++ /dev/null
-/**\r
-* Copyright (C) 2009 EDIT\r
-* European Distributed Institute of Taxonomy \r
-* http://www.e-taxonomy.eu\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
-\r
-package eu.etaxonomy.taxeditor.propertysheet.type.wizard;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.jface.wizard.WizardPage;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.custom.CCombo;\r
-import org.eclipse.swt.events.KeyAdapter;\r
-import org.eclipse.swt.events.KeyEvent;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.swt.widgets.Text;\r
-\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
-import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.name.TypeDesignationStatus;\r
-import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
-import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
-\r
-/**\r
- * @author p.ciardelli\r
- * @created 13.02.2009\r
- * @version 1.0\r
- */\r
-public class ChooseTypeDesignationWizardPage extends WizardPage {\r
- private static Logger logger = Logger\r
- .getLogger(ChooseTypeDesignationWizardPage.class);\r
-\r
- private TaxonNameBase name; \r
- private SpecimenTypeDesignation typeDesignation;\r
- \r
- private CCombo statusCombo;\r
- private Text txtDesignationType;\r
-\r
- private TypeDesignationStatus[] typeStatusArray;\r
-\r
- /**\r
- * @param typeDesignation\r
- */\r
- public ChooseTypeDesignationWizardPage(\r
- SpecimenTypeDesignation typeDesignation, TaxonNameBase name) {\r
- super("");\r
- \r
- this.typeDesignation = typeDesignation;\r
- this.name = name;\r
- \r
- setTitle("Create or edit type designation");\r
- setDescription("Create or edit type designation for '" + name.getTitleCache() + "\".");\r
- }\r
-\r
- /* (non-Javadoc)\r
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)\r
- */\r
- @Override\r
- public void createControl(Composite parent) {\r
- \r
- // Create composite for popup dialog \r
- Composite container = new Composite(parent, SWT.NULL);\r
- final GridLayout gridLayout = new GridLayout();\r
- container.setLayout(gridLayout);\r
- setControl(container);\r
-\r
- // Create text\r
- final Label lblChooseStatus = new Label(container, SWT.NONE);\r
- lblChooseStatus.setText("Choose designation type status:");\r
-\r
- // Create designation type status dropdown \r
- statusCombo = new CCombo(container, SWT.BORDER);\r
- statusCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
- TermVocabulary<TypeDesignationStatus> typeStatusSet = CdmSessionDataRepository.getDefault().getTypeDesignationStatus();\r
- typeStatusArray = new TypeDesignationStatus[CdmSessionDataRepository.getDefault().getTypeDesignationStatus().size()];\r
- int i = 0;\r
- int selectedIndex = -1;\r
- for (TypeDesignationStatus typeStatus : \r
- CdmSessionDataRepository.getDefault().getTypeDesignationStatus()) {\r
- String label = typeStatus.getLabel();\r
- typeStatusArray[i] = typeStatus;\r
- \r
- if (typeDesignation != null && typeDesignation.getTypeStatus() != null) {\r
- if (typeStatus.equals(typeDesignation.getTypeStatus())) {\r
- selectedIndex = i;\r
- }\r
- }\r
- \r
- i++;\r
- statusCombo.add(label);\r
- }\r
- \r
- // Set menu to type designation status if exists\r
- statusCombo.select(selectedIndex);\r
-\r
- statusCombo.addSelectionListener(new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- updatePage();\r
- }\r
- });\r
-\r
- // Create text\r
- final Label lblEnterText = new Label(container, SWT.NONE);\r
- lblEnterText.setText("Enter designation type text:");\r
- \r
- txtDesignationType = new Text(container, SWT.BORDER);\r
- txtDesignationType.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
- txtDesignationType.addKeyListener(new KeyAdapter() {\r
- @Override\r
- public void keyReleased(KeyEvent e) {\r
- updatePage();\r
- } \r
- });\r
- \r
- // Set text to specimen text if exists\r
- if (typeDesignation != null && typeDesignation.getTypeSpecimen() != null) {\r
- txtDesignationType.setText(typeDesignation.getTypeSpecimen().getTitleCache());\r
- }\r
- }\r
-\r
- @Override\r
- public boolean canFlipToNextPage() {\r
- return isPageComplete();\r
- }\r
-\r
- public boolean isPageComplete() {\r
- return (statusCombo.getSelectionIndex() > -1 \r
- && txtDesignationType.getText().length() > 0);\r
- }\r
- \r
- private void updatePage() {\r
- \r
- getWizard().getContainer().updateButtons();\r
- }\r
- \r
- public void setPageComplete(boolean complete) {\r
- super.setPageComplete(complete);\r
- \r
- if (complete) {\r
- \r
- TypeDesignationStatus status = typeStatusArray[statusCombo.getSelectionIndex()];\r
- \r
- Specimen specimen;\r
- if (typeDesignation == null || typeDesignation.getTypeSpecimen() == null) {\r
- specimen = Specimen.NewInstance();\r
- typeDesignation.setTypeSpecimen(specimen);\r
- } else {\r
- specimen = (Specimen) typeDesignation.getTypeSpecimen(); // Next version (or 3 or 4 version from now) - this or something like this will return specimen: \r
- }\r
- specimen.setTitleCache(txtDesignationType.getText());\r
- \r
- if (typeDesignation == null) {\r
- name.addSpecimenTypeDesignation(specimen, status, null, null, null, true, true);\r
- } else {\r
- typeDesignation.setTypeStatus(status);\r
- }\r
- }\r
- }\r
-}\r
import org.eclipse.swt.widgets.Table;\r
import org.eclipse.swt.widgets.TableItem;\r
\r
+import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
import eu.etaxonomy.taxeditor.controller.GlobalController;\r
import eu.etaxonomy.taxeditor.model.CdmUtil;\r
\r
private Button btnRemove;\r
private Button btnEdit;\r
\r
- private SpecimenTypeDesignation typeDesignation;\r
+ private TypeDesignationBase typeDesignation;\r
private TableViewer tableViewer;\r
\r
\r
public void widgetSelected(SelectionEvent e) { \r
setEnableTypeDesignationButtons(true);\r
TableItem[] selectedItem = typeDesignationsTable.getSelection();\r
- if (e.item.getData() instanceof SpecimenTypeDesignation) {\r
- setSelectedTypeDesignation((SpecimenTypeDesignation) e.item.getData());\r
+ if (e.item.getData() instanceof TypeDesignationBase) {\r
+ setSelectedTypeDesignation((TypeDesignationBase) e.item.getData());\r
}\r
}\r
});\r
ObservableListContentProvider providerList = new ObservableListContentProvider();\r
tableViewer.setContentProvider(providerList);\r
\r
- IObservableMap[] providerMaps = BeansObservables.observeMaps(\r
- providerList.getKnownElements(), SpecimenTypeDesignation.class,\r
- new String[] { "typeSpecimen", "typeStatus" });\r
+ IObservableMap[] providerMaps;\r
+ if (CdmUtil.isNameSupraSpecific(name)) {\r
+ providerMaps = BeansObservables.observeMaps(\r
+ providerList.getKnownElements(), NameTypeDesignation.class,\r
+ new String[] { "typeName" });\r
+ } else {\r
+ providerMaps = BeansObservables.observeMaps(\r
+ providerList.getKnownElements(), SpecimenTypeDesignation.class,\r
+ new String[] { "typeSpecimen", "typeStatus" });\r
+ }\r
tableViewer.setLabelProvider(new ObservableMapLabelProvider(\r
providerMaps) {\r
public String getColumnText(Object element, int columnIndex) {\r
- if (element instanceof SpecimenTypeDesignation) {\r
- SpecimenTypeDesignation typeDesignation = (SpecimenTypeDesignation) element;\r
+ if (element instanceof TypeDesignationBase) {\r
+ TypeDesignationBase typeDesignation = (TypeDesignationBase) element;\r
return getTypeDesignationString(typeDesignation);\r
}\r
return "";\r
}\r
\r
public Image getColumnImage(Object element, int columnIndex) {\r
- if (element instanceof SpecimenTypeDesignation) {\r
- SpecimenTypeDesignation typeDesignation = (SpecimenTypeDesignation) element;\r
+ if (element instanceof TypeDesignationBase) {\r
+ TypeDesignationBase typeDesignation = (TypeDesignationBase) element;\r
return getTypeDesignationImage(typeDesignation);\r
}\r
return null;\r
public void doubleClick(DoubleClickEvent event) {\r
if (((StructuredSelection) event.getSelection())\r
.getFirstElement() instanceof SpecimenTypeDesignation) {\r
- SpecimenTypeDesignation typeDesignation = (SpecimenTypeDesignation) \r
+ TypeDesignationBase typeDesignation = (TypeDesignationBase) \r
((StructuredSelection) event.getSelection()).getFirstElement();\r
createTypeDesignationWizard(typeDesignation);\r
}\r
});\r
}\r
\r
- private void setSelectedTypeDesignation(SpecimenTypeDesignation typeDesignation) {\r
+ private void setSelectedTypeDesignation(TypeDesignationBase typeDesignation) {\r
this.typeDesignation = typeDesignation;\r
}\r
\r
- private SpecimenTypeDesignation getSelectedTypeDesignation() {\r
+ private TypeDesignationBase getSelectedTypeDesignation() {\r
return typeDesignation;\r
}\r
\r
- private void createTypeDesignationWizard(SpecimenTypeDesignation typeDesignation) {\r
+ private void createTypeDesignationWizard(TypeDesignationBase typeDesignation) {\r
Wizard wizard = new TypeDesignationWizard(typeDesignation, name, typeDesignationsList);\r
\r
WizardDialog dialog = new WizardDialog(GlobalController.getShell(), wizard);\r
btnEdit.setEnabled(enabled);\r
}\r
\r
- private Image getTypeDesignationImage(SpecimenTypeDesignation typeDesignation) {\r
+ private Image getTypeDesignationImage(TypeDesignationBase typeDesignation) {\r
return null;\r
}\r
\r
- private String getTypeDesignationString(SpecimenTypeDesignation typeDesignation) {\r
+ private String getTypeDesignationString(TypeDesignationBase typeDesignation) {\r
String str = "";\r
- if (typeDesignation.getTypeSpecimen() != null) {\r
- str += typeDesignation.getTypeSpecimen().getTitleCache();\r
- } else {\r
- str += "UNDEFINED";\r
+ \r
+ if (typeDesignation instanceof SpecimenTypeDesignation) {\r
+ if (((SpecimenTypeDesignation) typeDesignation).getTypeSpecimen() != null) {\r
+ str = ((SpecimenTypeDesignation) typeDesignation).getTypeSpecimen().getTitleCache();\r
+ } else {\r
+ str = "UNDEFINED";\r
+ }\r
+ if (((SpecimenTypeDesignation) typeDesignation).getTypeStatus() != null) {\r
+ str += " [" + ((SpecimenTypeDesignation) typeDesignation).getTypeStatus().getLabel() + "]";\r
+ }\r
}\r
- if (typeDesignation.getTypeStatus() != null) {\r
- str += " [" + typeDesignation.getTypeStatus().getLabel() + "]";\r
+ \r
+ if (typeDesignation instanceof NameTypeDesignation) {\r
+ if (((NameTypeDesignation) typeDesignation).getTypeName() != null) {\r
+ str = ((NameTypeDesignation) typeDesignation).getTypeName().getTitleCache();\r
+ }\r
+ \r
+ if (((NameTypeDesignation) typeDesignation).isLectoType()) {\r
+ str += " (Lectotype)";\r
+ }\r
}\r
\r
return str;\r
--- /dev/null
+/**\r
+* Copyright (C) 2007 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\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
+\r
+package eu.etaxonomy.taxeditor.propertysheet.type.wizard;\r
+\r
+import java.util.List;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.viewers.ArrayContentProvider;\r
+import org.eclipse.jface.viewers.LabelProvider;\r
+import org.eclipse.jface.viewers.TableViewer;\r
+import org.eclipse.jface.viewers.ViewerComparator;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.KeyAdapter;\r
+import org.eclipse.swt.events.KeyEvent;\r
+import org.eclipse.swt.events.MouseAdapter;\r
+import org.eclipse.swt.events.MouseEvent;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.layout.GridData;\r
+import org.eclipse.swt.layout.GridLayout;\r
+import org.eclipse.swt.widgets.Button;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Dialog;\r
+import org.eclipse.swt.widgets.Display;\r
+import org.eclipse.swt.widgets.Event;\r
+import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Listener;\r
+import org.eclipse.swt.widgets.Shell;\r
+import org.eclipse.swt.widgets.Table;\r
+import org.eclipse.swt.widgets.Text;\r
+\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 13.11.2008\r
+ * @version 1.0\r
+ */\r
+public class NameSearchDialog extends Dialog {\r
+ private static final Logger logger = Logger\r
+ .getLogger(NameSearchDialog.class);\r
+ \r
+ private Table resultsTable;\r
+ private Text searchTermText;\r
+ \r
+ protected Object result;\r
+ private Shell shell;\r
+ private Button okButton;\r
+ private TableViewer resultsTableViewer;\r
+ private TaxonNameBase selectedName;\r
+ \r
+ public NameSearchDialog(Shell parent) {\r
+ super(parent, SWT.NONE);\r
+ }\r
+ \r
+ /**\r
+ * Open the dialog\r
+ * @return the result\r
+ */\r
+ public Object open() {\r
+ createContents();\r
+ shell.open();\r
+ shell.layout();\r
+ Display display = getParent().getDisplay();\r
+ while (!shell.isDisposed()) {\r
+ if (!display.readAndDispatch())\r
+ display.sleep();\r
+ }\r
+ return result;\r
+ }\r
+ \r
+ /**\r
+ * Create contents of the dialog\r
+ */\r
+ protected void createContents() {\r
+ \r
+ // Create shell for popup dialog \r
+ shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);\r
+ shell.setLayout(new GridLayout());\r
+ shell.setSize(500, 375);\r
+ shell.setText("Search for a name in datasource");\r
+ \r
+ // Create composite for entire shell \r
+ final Composite composite = new Composite(shell, SWT.NONE);\r
+ composite.setLayout(new GridLayout());\r
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
+\r
+ // Create composite for search text, search term input, and "Search" button\r
+ final Composite searchComposite = new Composite(composite, SWT.NONE);\r
+ searchComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
+ final GridLayout gridLayout = new GridLayout();\r
+ gridLayout.numColumns = 2;\r
+ searchComposite.setLayout(gridLayout);\r
+\r
+ // Create search text\r
+ final Label label = new Label(searchComposite, SWT.NONE);\r
+ label.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));\r
+ label.setText("Enter a search term for a full name, using '*' as a wildcard.");\r
+\r
+ // Create input field for search term\r
+ searchTermText = new Text(searchComposite, SWT.BORDER | SWT.SINGLE);\r
+ final GridData gd_searchTermText = new GridData(SWT.FILL, SWT.CENTER, true, false);\r
+ searchTermText.setLayoutData(gd_searchTermText);\r
+ \r
+ // Listen for user hitting <CR> in input field\r
+ searchTermText.addKeyListener(new KeyAdapter() {\r
+ public void keyReleased(KeyEvent e) {\r
+ int key = e.keyCode;\r
+ if (key == SWT.CR) {\r
+ populateSearchResults();\r
+ }\r
+ }\r
+ });\r
+\r
+ // Create "Search" button\r
+ final Button searchButton = new Button(searchComposite, SWT.NONE);\r
+ searchButton.setLayoutData(new GridData());\r
+ searchButton.setText("Search");\r
+ searchButton.addMouseListener(new MouseAdapter() {\r
+ \r
+ // Populate search results resultsTable after clicking button\r
+ public void mouseUp(MouseEvent e) {\r
+ populateSearchResults();\r
+ }\r
+ });\r
+\r
+ // Create composite for results table\r
+ final Composite resultsComposite = new Composite(composite, SWT.NONE);\r
+ resultsComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
+ resultsComposite.setLayout(new GridLayout());\r
+\r
+ // Create results resultsTable\r
+ resultsTableViewer = new TableViewer(resultsComposite, SWT.BORDER);\r
+ resultsTable = resultsTableViewer.getTable();\r
+ resultsTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
+\r
+ // Set content provider of results resultsTable\r
+ resultsTableViewer.setContentProvider(new ArrayContentProvider());\r
+\r
+ // Set label provider for results resultsTable which shows ReferenceBase.getTitleCache()\r
+ resultsTableViewer.setLabelProvider(new LabelProvider() {\r
+ public String getText(Object element) {\r
+ if (element instanceof ReferenceBase) {\r
+ return ((ReferenceBase) element).getTitleCache();\r
+ }\r
+ return super.getText(element);\r
+ }\r
+ });\r
+ \r
+ // Sort results alphabetically\r
+ resultsTableViewer.setComparator(new ViewerComparator());\r
+ \r
+ // Listen for user selecting reference from results list\r
+ resultsTable.addSelectionListener(new SelectionAdapter() {\r
+ public void widgetSelected(SelectionEvent e) {\r
+ \r
+ Object data = e.item.getData();\r
+ \r
+ // Make sure selection is a ReferenceBase\r
+ if (data instanceof TaxonNameBase) {\r
+\r
+ setSelectedName((TaxonNameBase) data);\r
+ \r
+ // Enable "OK" button\r
+ okButton.setEnabled(true);\r
+ }\r
+ }\r
+ });\r
+ \r
+ // Double-clicking results entry submits selected reference\r
+ resultsTable.addListener(SWT.MouseDoubleClick, new Listener() {\r
+ public void handleEvent(Event event) {\r
+ submitResult();\r
+ }\r
+ });\r
+ \r
+ // Create composite for "OK" and "Cancel" buttons\r
+ final Composite okCancelComposite = new Composite(composite, SWT.NONE);\r
+ okCancelComposite.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));\r
+ final GridLayout gridLayout_1 = new GridLayout();\r
+ gridLayout_1.numColumns = 2;\r
+ okCancelComposite.setLayout(gridLayout_1);\r
+\r
+ // Create "Cancel" button\r
+ final Button cancelButton = new Button(okCancelComposite, SWT.NONE);\r
+ cancelButton.setText("Cancel");\r
+ \r
+ // Close dialog popup after clicking "Cancel" button\r
+ cancelButton.addMouseListener(new MouseAdapter() {\r
+ public void mouseUp(MouseEvent e) {\r
+ shell.dispose();\r
+ }\r
+ });\r
+\r
+ // Create "OK" button\r
+ okButton = new Button(okCancelComposite, SWT.NONE);\r
+ okButton.setEnabled(false);\r
+ final GridData gd_okButton = new GridData();\r
+ okButton.setLayoutData(gd_okButton);\r
+ okButton.setText("OK");\r
+ \r
+ // Submit result when "OK" button is clicked\r
+ okButton.addMouseListener(new MouseAdapter() {\r
+ public void mouseUp(MouseEvent e) {\r
+ submitResult();\r
+ }\r
+ });\r
+\r
+ }\r
+ \r
+ private void populateSearchResults() {\r
+ // Get search results\r
+ List resultsArray = CdmUtil.searchNameString(searchTermText.getText());\r
+ \r
+ // Tell user if there are no results\r
+ if (resultsArray.size() == 0) {\r
+ resultsArray.add("Query returned no results.");\r
+ }\r
+ \r
+ // Send results to results resultsTable\r
+ resultsTableViewer.setInput(resultsArray.toArray());\r
+ \r
+ // Disable OK button\r
+ okButton.setEnabled(false); \r
+ }\r
+ \r
+ /**\r
+ * Populate result and close dialog popup\r
+ */\r
+ private void submitResult() {\r
+ result = getSelectedName();\r
+ shell.dispose();\r
+ }\r
+ \r
+ private void setSelectedName(TaxonNameBase selectedName) {\r
+ this.selectedName = selectedName;\r
+ }\r
+ \r
+ private TaxonNameBase getSelectedName() {\r
+ return selectedName;\r
+ }\r
+}\r
import org.eclipse.jface.wizard.Wizard;\r
import org.eclipse.jface.wizard.WizardPage;\r
\r
-import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
\r
/**\r
* @author p.ciardelli\r
private static Logger logger = Logger\r
.getLogger(TypeDesignationWizard.class);\r
\r
- private SpecimenTypeDesignation typeDesignation;\r
+ private TypeDesignationBase typeDesignation;\r
private TaxonNameBase name;\r
private WritableList typeDesignationsList;\r
-\r
- public class TemporarySpecimenTypeDesignation extends\r
- SpecimenTypeDesignation {\r
- TemporarySpecimenTypeDesignation() {\r
- super();\r
- }\r
- }\r
\r
- private WizardPage chooseNamePage;\r
+ private WizardPage chooseTypePage;\r
\r
/**\r
* @param typeDesignation\r
* @param typeDesignationsList \r
*/\r
- public TypeDesignationWizard(SpecimenTypeDesignation typeDesignation, TaxonNameBase name, WritableList typeDesignationsList) {\r
+ public TypeDesignationWizard(TypeDesignationBase typeDesignation, TaxonNameBase name, WritableList typeDesignationsList) {\r
\r
this.name = name;\r
- if (typeDesignation == null) {\r
- createEmptyTypeDesignation();\r
- } else {\r
+// if (typeDesignation == null) {\r
+// createEmptyTypeDesignation();\r
+// } else {\r
this.typeDesignation = typeDesignation;\r
- }\r
+// }\r
this.typeDesignationsList = typeDesignationsList;\r
}\r
\r
/**\r
* \r
*/\r
- private void createEmptyTypeDesignation() {\r
- typeDesignation = new TemporarySpecimenTypeDesignation(); \r
- }\r
+// private void createEmptyTypeDesignation() {\r
+// if (CdmUtil.isNameSupraSpecific(name)) {\r
+// typeDesignation = new TemporaryNameTypeDesignation();\r
+// } else {\r
+// typeDesignation = new TemporarySpecimenTypeDesignation();\r
+// }\r
+// }\r
\r
/* (non-Javadoc)\r
* @see org.eclipse.jface.wizard.Wizard#addPages()\r
*/\r
public void addPages() {\r
- chooseNamePage = new ChooseTypeDesignationWizardPage(typeDesignation, name);\r
- addPage(chooseNamePage);\r
+ \r
+// if (typeDesignation instanceof SpecimenTypeDesignation) {\r
+// chooseTypePage = new ChooseSpecimenTypeWizardPage((SpecimenTypeDesignation) typeDesignation, name);\r
+// }\r
+// \r
+// if (typeDesignation instanceof NameTypeDesignation) {\r
+// chooseTypePage = new ChooseNameTypeWizardPage((NameTypeDesignation) typeDesignation, name);\r
+// }\r
+ \r
+// if (name.getRank().isHigher(Rank.SPECIES())) {\r
+ if (CdmUtil.isNameSupraSpecific(name)) {\r
+ chooseTypePage = new ChooseNameTypeWizardPage(typeDesignation, name, typeDesignationsList);\r
+ } else {\r
+ chooseTypePage = new ChooseSpecimenTypeWizardPage(typeDesignation, name, typeDesignationsList);\r
+ }\r
+ \r
+ addPage(chooseTypePage);\r
}\r
\r
/* (non-Javadoc)\r
@Override\r
public boolean performFinish() {\r
\r
- chooseNamePage.setPageComplete(true);\r
+ chooseTypePage.setPageComplete(true);\r
\r
// Remove then re-add in case any name editing has taken place\r
- typeDesignationsList.remove(typeDesignation);\r
- typeDesignationsList.add(typeDesignation);\r
+ \r
+// typeDesignationsList.remove(typeDesignation);\r
+// typeDesignationsList.add(typeDesignation);\r
\r
return true;\r
}\r
\r
package eu.etaxonomy.taxeditor.propertysheet.type.wizard;\r
\r
+import java.util.Set;\r
+\r
import org.apache.log4j.Logger;\r
import org.eclipse.core.databinding.observable.list.WritableList;\r
import org.eclipse.jface.wizard.IWizardPage;\r
import org.eclipse.jface.wizard.Wizard;\r
\r
+import eu.etaxonomy.cdm.model.common.CdmBase;\r
+import eu.etaxonomy.cdm.model.name.NameTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;\r
import eu.etaxonomy.cdm.model.occurrence.Specimen;\r
+import eu.etaxonomy.taxeditor.model.CdmUtil;\r
\r
/**\r
* @author p.ciardelli\r
this.name = name;\r
this.typeDesignationsList = new WritableList();\r
if (name != null) {\r
- this.typeDesignationsList.addAll(name.getSpecimenTypeDesignations());\r
+ if (CdmUtil.isNameSupraSpecific(name)) {\r
+ this.typeDesignationsList.addAll(name.getNameTypeDesignations()); \r
+ } else {\r
+ this.typeDesignationsList.addAll(name.getSpecimenTypeDesignations());\r
+ }\r
}\r
}\r
\r
\r
if (name != null) {\r
\r
- // Remove all designations\r
- for (Object typeDesignation : name.getSpecimenTypeDesignations()) {\r
- if (typeDesignation instanceof SpecimenTypeDesignation) {\r
- name.removeTypeDesignation((SpecimenTypeDesignation) typeDesignation);\r
+ // Remove name's designations\r
+ Set existingDesignations; \r
+ if (CdmUtil.isNameSupraSpecific(name)) {\r
+ existingDesignations = name.getNameTypeDesignations();\r
+ } else {\r
+ existingDesignations = name.getSpecimenTypeDesignations(); \r
+ }\r
+ \r
+ for (Object typeDesignation : existingDesignations) { \r
+ if (typeDesignation instanceof TypeDesignationBase) {\r
+ name.removeTypeDesignation((TypeDesignationBase) typeDesignation);\r
}\r
}\r
\r
// Then re-add them from list\r
for (Object typeDesignation : typeDesignationsList) {\r
if (typeDesignation instanceof SpecimenTypeDesignation) {\r
- name.addSpecimenTypeDesignation(\r
- (Specimen) ((SpecimenTypeDesignation) typeDesignation).getTypeSpecimen(),\r
- ((SpecimenTypeDesignation) typeDesignation).getTypeStatus(),\r
- ((SpecimenTypeDesignation) typeDesignation).getCitation(),\r
- ((SpecimenTypeDesignation) typeDesignation).getCitationMicroReference(),\r
- ((SpecimenTypeDesignation) typeDesignation).getOriginalNameString(),\r
- ((SpecimenTypeDesignation) typeDesignation).isNotDesignated(),\r
- false);\r
- } \r
+ \r
+ Specimen specimen = CdmBase.deproxy(((SpecimenTypeDesignation) typeDesignation).getTypeSpecimen(), Specimen.class);\r
+ \r
+ name.addSpecimenTypeDesignation( \r
+ specimen,\r
+ ((SpecimenTypeDesignation) typeDesignation).getTypeStatus(),\r
+ ((SpecimenTypeDesignation) typeDesignation).getCitation(),\r
+ ((SpecimenTypeDesignation) typeDesignation).getCitationMicroReference(),\r
+ ((SpecimenTypeDesignation) typeDesignation).getOriginalNameString(),\r
+ ((SpecimenTypeDesignation) typeDesignation).isNotDesignated(),\r
+ false);\r
+ }\r
+ \r
+ if (typeDesignation instanceof NameTypeDesignation) {\r
+ name.addNameTypeDesignation(\r
+ ((NameTypeDesignation) typeDesignation).getTypeName(), \r
+ ((NameTypeDesignation) typeDesignation).getCitation(), \r
+ ((NameTypeDesignation) typeDesignation).getCitationMicroReference(),\r
+ ((NameTypeDesignation) typeDesignation).getOriginalNameString(), \r
+ ((NameTypeDesignation) typeDesignation).isRejectedType(), \r
+ ((NameTypeDesignation) typeDesignation).isConservedType(), \r
+ ((NameTypeDesignation) typeDesignation).isLectoType(), \r
+ ((NameTypeDesignation) typeDesignation).isNotDesignated(), \r
+ false);\r
+ }\r
}\r
}\r
return true;\r