eclipseprojects/eu.etaxonomy.taxeditor/icons/help_topic.gif -text
eclipseprojects/eu.etaxonomy.taxeditor/icons/heterosyn.gif -text
eclipseprojects/eu.etaxonomy.taxeditor/icons/heterosyn_no_bg.gif -text
+eclipseprojects/eu.etaxonomy.taxeditor/icons/heterosyn_original_no_bg.gif -text
eclipseprojects/eu.etaxonomy.taxeditor/icons/homonym.gif -text
eclipseprojects/eu.etaxonomy.taxeditor/icons/homonym_no_bg.gif -text
eclipseprojects/eu.etaxonomy.taxeditor/icons/homosyn.gif -text
eclipseprojects/eu.etaxonomy.taxeditor/icons/homosyn_no_bg.gif -text
+eclipseprojects/eu.etaxonomy.taxeditor/icons/homosyn_original_no_bg.gif -text
eclipseprojects/eu.etaxonomy.taxeditor/icons/impl_co.gif -text
eclipseprojects/eu.etaxonomy.taxeditor/icons/large_image.gif -text
eclipseprojects/eu.etaxonomy.taxeditor/icons/linkto_help.gif -text
eclipseprojects/eu.etaxonomy.taxeditor/splash.bmp -text
eclipseprojects/eu.etaxonomy.taxeditor/src/com/swtdesigner/ResourceManager.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/com/swtdesigner/SWTResourceManager.java -text
-eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/Activator.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/Application.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/ApplicationActionBarAdvisor.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/ApplicationWorkbenchAdvisor.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/ApplicationWorkbenchWindowAdvisor.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/FreetextPropertiesPerspective.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/SideBySidePerspective.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/TaxEditorPlugin.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionAddQuickName.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionAddSynonymToTaxon.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionDeleteTaxon.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/IParentDataAdapter.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/ISelectionWrapper.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/LineBreakListener.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/Messages.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/NameComposite.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/ParseListener.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/SimpleSelectionProvider.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/TaxonCompositeFactory.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/TesterooWritableSet.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/WarningAnnotation.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/messages.properties -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/AnnotationPropertySource.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/AnnotationsDialog.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/BotanicalNamePropertySource.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/CheckboxPropertyDescriptor.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/CollectionPropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/CustomSortPropertySheetEntry.java -text
+eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/MarkersPropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/NameRelationsPropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/NonViralNamePropertySource.java -text
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/PropertySheetContentProvider.java -text
Bundle-Name: EDIT Desktop Taxonomic Editor
Bundle-SymbolicName: eu.etaxonomy.taxeditor;singleton:=true
Bundle-Version: 1.0.0
-Bundle-Activator: eu.etaxonomy.taxeditor.Activator
+Bundle-Activator: eu.etaxonomy.taxeditor.TaxEditorPlugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.core.databinding,
+++ /dev/null
-package eu.etaxonomy.taxeditor;\r
-\r
-import java.net.URL;\r
-import java.util.ResourceBundle;\r
-import java.util.UUID;\r
-\r
-import org.apache.log4j.Logger;\r
-import org.eclipse.core.databinding.observable.list.WritableList;\r
-import org.eclipse.core.databinding.observable.set.WritableSet;\r
-import org.eclipse.core.runtime.IPath;\r
-import org.eclipse.core.runtime.Path;\r
-import org.eclipse.jface.resource.ImageDescriptor;\r
-import org.eclipse.jface.resource.ImageRegistry;\r
-import org.eclipse.swt.graphics.Image;\r
-import org.eclipse.ui.forms.FormColors;\r
-import org.eclipse.ui.plugin.AbstractUIPlugin;\r
-import org.osgi.framework.BundleContext;\r
-\r
-import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
-import eu.etaxonomy.cdm.database.DataSourceNotFoundException;\r
-import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
-import eu.etaxonomy.cdm.model.agent.Person;\r
-import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
-import eu.etaxonomy.cdm.model.common.init.TermNotFoundException;\r
-import eu.etaxonomy.cdm.model.name.BotanicalName;\r
-import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
-import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
-import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
-import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-\r
-/**\r
- * The activator class controls the plug-in life cycle\r
- */\r
-public class Activator extends AbstractUIPlugin {\r
- private static final Logger logger = Logger.getLogger(Activator.class);\r
-\r
- /**\r
- * The plug-in ID\r
- */\r
- public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.activator";\r
- /**\r
- * The shared instance\r
- */ \r
- private static Activator plugin;\r
- /**\r
- * The constructor\r
- */\r
- public Activator() {\r
- logger.fatal("Fatal");\r
- logger.error("Error");\r
- logger.debug("Debug");\r
- logger.info("Info");\r
- logger.warn("Warn");\r
- logger.trace("Trace");\r
- \r
- boolean initDatastore = false;\r
-// boolean initDatastore = true;\r
- if (initDatastore)\r
- initDatastore();\r
- else {\r
- DbSchemaValidation dbSchemaValidation = DbSchemaValidation.VALIDATE;\r
- try {\r
- cdmApp = CdmApplicationController.NewInstance(dbSchemaValidation);\r
- } catch (DataSourceNotFoundException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (TermNotFoundException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
- }\r
- \r
- }\r
-\r
- void initDatastore() {\r
- DbSchemaValidation dbSchemaValidation = DbSchemaValidation.CREATE;\r
- try {\r
- cdmApp = CdmApplicationController.NewInstance(dbSchemaValidation);\r
- } catch (DataSourceNotFoundException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- } catch (TermNotFoundException e) {\r
- // TODO Auto-generated catch block\r
- e.printStackTrace();\r
- }\r
-// cdmApp = new CdmApplicationController();\r
-// INameService nameService = cdmApp.getNameService();\r
- \r
- BotanicalName botanicalName = BotanicalName.NewInstance(Rank.GENUS());\r
- botanicalName.setTitleCache("Hieracium L.");\r
- botanicalName.setGenusOrUninomial("Hieracium");\r
-// botanicalName.setUninomial("Hieracium");\r
- botanicalName.setCombinationAuthorTeam(Person.NewInstance());\r
- botanicalName.getCombinationAuthorTeam().setNomenclaturalTitle("L.");\r
- Taxon genusTaxon = new Taxon();\r
- genusTaxon.setName(botanicalName);\r
- genusTaxon.setSec(null);\r
- \r
- BotanicalName botSpecies = BotanicalName.NewInstance(Rank.SPECIES());\r
- botSpecies.setTitleCache("Hieracium asturianum Pau");\r
- botSpecies.setGenusOrUninomial("Hieracium");\r
-// botSpecies.setUninomial("Hieracium");\r
- botSpecies.setSpecificEpithet("asturianum");\r
- botSpecies.setCombinationAuthorTeam(Person.NewInstance());\r
- botSpecies.getCombinationAuthorTeam().setNomenclaturalTitle("Pau");\r
- Taxon childTaxon = new Taxon();\r
- childTaxon.setName(botSpecies);\r
- childTaxon.setSec(null);\r
- childTaxon.setTaxonomicParent(genusTaxon, null, null);\r
-\r
- BotanicalName botSpecies2= BotanicalName.NewInstance(Rank.SPECIES());\r
- botSpecies2.setTitleCache("Hieracium wolffii Zahn");\r
- botSpecies2.setGenusOrUninomial("Hieracium");\r
-// botSpecies2.setUninomial("Hieracium");\r
- botSpecies2.setSpecificEpithet("wolffii");\r
- botSpecies2.setCombinationAuthorTeam(Person.NewInstance());\r
- botSpecies2.getCombinationAuthorTeam().setNomenclaturalTitle("Zahn");\r
- Taxon childTaxon2 = new Taxon();\r
- childTaxon2.setName(botSpecies2);\r
- childTaxon2.setSec(null);\r
- childTaxon2.setTaxonomicParent(genusTaxon, null, null);\r
- \r
- // Add some name relations to botSpecies2\r
- botSpecies2.addRelationshipFromName(botSpecies, NameRelationshipType.BASIONYM(), null);\r
- botSpecies2.addRelationshipToName(botSpecies, NameRelationshipType.REPLACED_SYNONYM(), null);\r
- logger.warn("Name relations created");\r
-// \r
-// // Add name status to botSpecies2\r
- botSpecies2.addStatus(NomenclaturalStatus.NewInstance(NomenclaturalStatusType.NOVUM()));\r
- logger.warn("Nom. status created");\r
- \r
- cdmApp.getTaxonService().saveTaxon(genusTaxon);\r
- \r
-// System.exit(-1); \r
- }\r
- \r
- /*\r
- * (non-Javadoc)\r
- * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)\r
- */\r
- public void start(BundleContext context) throws Exception {\r
- super.start(context);\r
- plugin = this;\r
- }\r
-\r
- /*\r
- * (non-Javadoc)\r
- * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)\r
- */\r
- public void stop(BundleContext context) throws Exception {\r
- plugin = null;\r
- super.stop(context);\r
- }\r
-\r
- /**\r
- * Returns the shared instance\r
- *\r
- * @return the shared instance\r
- */\r
- public static Activator getDefault() {\r
- return plugin;\r
- }\r
-\r
- /* ***************************************************************************************\r
- CDM SERVICES\r
- ************************************************************************************** */\r
- /**\r
- * All CDM services are called via the application controller\r
- */\r
- private CdmApplicationController cdmApp;\r
- \r
- public CdmApplicationController getCdmApp() {\r
- return cdmApp;\r
- }\r
-\r
- /* ***************************************************************************************\r
- OBSERVABLE LISTS\r
- ************************************************************************************** */\r
- /**\r
- * The dataset of taxa for this session\r
- */\r
- private WritableList observableTaxonTreeList = null;\r
- /**\r
- * Keeps track of which taxa have been opened for editing\r
- */\r
- private WritableList observableRecentNamesList = null;\r
- public WritableSet observableSynonymSet = null;\r
- private WritableList observableFavoritesList = null; \r
- public WritableList getObservableTaxonTreeList() {\r
- if (observableTaxonTreeList == null) {\r
- observableTaxonTreeList = new WritableList();\r
- ReferenceBase sec = cdmApp.getReferenceService().getReferenceByUuid(UUID.fromString("f3593c18-a8d2-4e51-bdad-0befbf8fb2d1"));\r
- observableTaxonTreeList.addAll(cdmApp.getTaxonService().getRootTaxa(sec));\r
- }\r
- return observableTaxonTreeList;\r
- }\r
- \r
- public WritableList getObservableRecentNamesList() {\r
- if (observableRecentNamesList == null) {\r
- observableRecentNamesList = new WritableList();\r
- }\r
- return observableRecentNamesList;\r
- }\r
-\r
-\r
- public WritableList getObservableFavoritesList() {\r
- if (observableFavoritesList == null) {\r
- observableFavoritesList = new WritableList();\r
- }\r
- return observableFavoritesList;\r
- } \r
- \r
- public WritableSet getObservableSynonymSet() {\r
- if (observableSynonymSet == null) {\r
- observableSynonymSet = new WritableSet();\r
- } \r
- return observableSynonymSet; \r
- }\r
- \r
- /* ***************************************************************************************\r
- IMAGE REGISTRY\r
- ************************************************************************************** */\r
- /**\r
- * Returns an image descriptor for the image file at the given\r
- * plug-in relative path\r
- *\r
- * @param path the path\r
- * @return the image descriptor\r
- */\r
- public static ImageDescriptor getImageDescriptor(String path) {\r
- return imageDescriptorFromPlugin(PLUGIN_ID, path);\r
- }\r
- \r
- public Image getImage(String key) {\r
- return getImageRegistry().get(key);\r
- }\r
- // Resource bundle.\r
- private ResourceBundle resourceBundle;\r
- private FormColors formColors;\r
- public static final String ACCEPTED_TAXON = "accepted";\r
- public static final String HOMOTYPIC_SYN = "homotypic_syn";\r
- public static final String HETEROTYPIC_SYN = "heterotypic_syn";\r
- public static final String MISAPPLIED_NAME = "misapplied";\r
- public static final String DB = "db";\r
- protected void initializeImageRegistry(ImageRegistry registry) {\r
- registerImage(registry, ACCEPTED_TAXON, "accepted_small.gif"); //$NON-NLS-1$\r
- registerImage(registry, HOMOTYPIC_SYN, "homosyn_no_bg.gif"); //$NON-NLS-1$\r
- registerImage(registry, HETEROTYPIC_SYN, "heterosyn_no_bg.gif"); //$NON-NLS-1$\r
- registerImage(registry, MISAPPLIED_NAME, "misapplied_no_bg.gif"); //$NON-NLS-1$\r
- registerImage(registry, DB, "db.gif"); //$NON-NLS-1$\r
- }\r
- private void registerImage(ImageRegistry registry, String key,\r
- String fileName) {\r
- try {\r
- IPath path = new Path("icons/" + fileName); //$NON-NLS-1$\r
- URL url = find(path);\r
- if (url!=null) {\r
- ImageDescriptor desc = ImageDescriptor.createFromURL(url);\r
- registry.put(key, desc);\r
- }\r
- } catch (Exception e) {\r
- }\r
- }\r
- \r
- /* ***************************************************************************************\r
- RANKS\r
- ************************************************************************************** */ \r
- OrderedTermVocabulary<Rank> rankVocabulary = null;\r
- \r
- public OrderedTermVocabulary<Rank> getRankVocabulary() {\r
- if (rankVocabulary == null) {\r
- rankVocabulary = cdmApp.getNameService().getRankVocabulary();\r
- }\r
- return rankVocabulary;\r
- }\r
-}
\ No newline at end of file
--- /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;\r
+\r
+import java.net.URL;\r
+import java.util.ResourceBundle;\r
+import java.util.Set;\r
+import java.util.UUID;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.databinding.observable.list.WritableList;\r
+import org.eclipse.core.databinding.observable.set.WritableSet;\r
+import org.eclipse.core.runtime.IPath;\r
+import org.eclipse.core.runtime.Path;\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.jface.resource.ImageRegistry;\r
+import org.eclipse.swt.graphics.Image;\r
+import org.eclipse.ui.forms.FormColors;\r
+import org.eclipse.ui.plugin.AbstractUIPlugin;\r
+import org.osgi.framework.BundleContext;\r
+\r
+import eu.etaxonomy.cdm.api.application.CdmApplicationController;\r
+import eu.etaxonomy.cdm.database.DataSourceNotFoundException;\r
+import eu.etaxonomy.cdm.database.DbSchemaValidation;\r
+import eu.etaxonomy.cdm.model.agent.Person;\r
+import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
+import eu.etaxonomy.cdm.model.common.init.TermNotFoundException;\r
+import eu.etaxonomy.cdm.model.name.BotanicalName;\r
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
+import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+\r
+/**\r
+ * The class controlling the plug-in life cycle.\r
+ * \r
+ * @author p.ciardelli\r
+ * @created 15.05.2008\r
+ * @version 1.0\r
+ */\r
+public class TaxEditorPlugin extends AbstractUIPlugin {\r
+ private static final Logger logger = Logger.getLogger(TaxEditorPlugin.class);\r
+\r
+ /**\r
+ * The plug-in ID\r
+ */\r
+ public static final String PLUGIN_ID = "eu.etaxonomy.taxeditor.plugin";\r
+ /**\r
+ * The shared instance\r
+ */ \r
+ private static TaxEditorPlugin plugin;\r
+ /**\r
+ * The constructor\r
+ */\r
+ public TaxEditorPlugin() {\r
+ logger.fatal("Fatal");\r
+ logger.error("Error");\r
+ logger.debug("Debug");\r
+ logger.info("Info");\r
+ logger.warn("Warn");\r
+ logger.trace("Trace");\r
+ \r
+ boolean initDatastore = false;\r
+// initDatastore = true;\r
+ if (initDatastore)\r
+ initDatastore();\r
+ else {\r
+ DbSchemaValidation dbSchemaValidation = DbSchemaValidation.VALIDATE;\r
+ try {\r
+ cdmApp = CdmApplicationController.NewInstance(dbSchemaValidation);\r
+ } catch (DataSourceNotFoundException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ } catch (TermNotFoundException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ \r
+ }\r
+\r
+ void initDatastore() {\r
+ DbSchemaValidation dbSchemaValidation = DbSchemaValidation.CREATE;\r
+ try {\r
+ cdmApp = CdmApplicationController.NewInstance(dbSchemaValidation);\r
+ } catch (DataSourceNotFoundException e) {\r
+ e.printStackTrace();\r
+ } catch (TermNotFoundException e) {\r
+ e.printStackTrace();\r
+ }\r
+ \r
+ boolean useSoraya = true;\r
+// useSoraya = false;\r
+ Taxon genusTaxon;\r
+ if (useSoraya) {\r
+ genusTaxon = getSorayasGenusTaxon();\r
+ } else {\r
+ \r
+ BotanicalName botanicalName = BotanicalName.NewInstance(Rank.GENUS());\r
+ botanicalName.setTitleCache("Hieracium L.");\r
+ botanicalName.setGenusOrUninomial("Hieracium");\r
+ botanicalName.setCombinationAuthorTeam(Person.NewInstance());\r
+ botanicalName.getCombinationAuthorTeam().setNomenclaturalTitle("L.");\r
+ genusTaxon = new Taxon();\r
+ genusTaxon.setName(botanicalName);\r
+ genusTaxon.setSec(null);\r
+ \r
+ BotanicalName botSpecies = BotanicalName.NewInstance(Rank.SPECIES());\r
+ botSpecies.setTitleCache("Hieracium asturianum Pau");\r
+ botSpecies.setGenusOrUninomial("Hieracium");\r
+ botSpecies.setSpecificEpithet("asturianum");\r
+ botSpecies.setCombinationAuthorTeam(Person.NewInstance());\r
+ botSpecies.getCombinationAuthorTeam().setNomenclaturalTitle("Pau");\r
+ Taxon childTaxon = new Taxon();\r
+ childTaxon.setName(botSpecies);\r
+ childTaxon.setSec(null);\r
+ childTaxon.setTaxonomicParent(genusTaxon, null, null);\r
+ \r
+ BotanicalName botSpecies2= BotanicalName.NewInstance(Rank.SPECIES());\r
+ botSpecies2.setTitleCache("Hieracium wolffii Zahn");\r
+ botSpecies2.setGenusOrUninomial("Hieracium");\r
+ botSpecies2.setSpecificEpithet("wolffii");\r
+ botSpecies2.setCombinationAuthorTeam(Person.NewInstance());\r
+ botSpecies2.getCombinationAuthorTeam().setNomenclaturalTitle("Zahn");\r
+ Taxon childTaxon2 = new Taxon();\r
+ childTaxon2.setName(botSpecies2);\r
+ childTaxon2.setSec(null);\r
+ childTaxon2.setTaxonomicParent(genusTaxon, null, null);\r
+ \r
+ // Add some name relations to botSpecies2\r
+ botSpecies2.addRelationshipFromName(botSpecies, NameRelationshipType.BASIONYM(), null);\r
+ botSpecies2.addRelationshipToName(botSpecies, NameRelationshipType.REPLACED_SYNONYM(), null);\r
+ logger.warn("Name relations created");\r
+ \r
+ // Add name status to botSpecies2\r
+ botSpecies2.addStatus(NomenclaturalStatus.NewInstance(NomenclaturalStatusType.NOVUM()));\r
+ logger.warn("Nom. status created");\r
+ }\r
+ \r
+ cdmApp.getTaxonService().saveTaxon(genusTaxon);\r
+ \r
+// System.exit(-1); \r
+ }\r
+ \r
+ /*\r
+ * (non-Javadoc)\r
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)\r
+ */\r
+ public void start(BundleContext context) throws Exception {\r
+ super.start(context);\r
+ plugin = this;\r
+ }\r
+\r
+ /*\r
+ * (non-Javadoc)\r
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)\r
+ */\r
+ public void stop(BundleContext context) throws Exception {\r
+ plugin = null;\r
+ super.stop(context);\r
+ }\r
+\r
+ /**\r
+ * Returns the shared instance\r
+ *\r
+ * @return the shared instance\r
+ */\r
+ public static TaxEditorPlugin getDefault() {\r
+ return plugin;\r
+ }\r
+\r
+ /* ***************************************************************************************\r
+ CDM SERVICES\r
+ ************************************************************************************** */\r
+ /**\r
+ * All CDM services are called via the application controller\r
+ */\r
+ private CdmApplicationController cdmApp;\r
+ \r
+ public CdmApplicationController getCdmApp() {\r
+ return cdmApp;\r
+ }\r
+\r
+ /* ***************************************************************************************\r
+ OBSERVABLE LISTS\r
+ ************************************************************************************** */\r
+ /**\r
+ * The dataset of taxa for this session\r
+ */\r
+ private WritableList observableTaxonTreeList = null;\r
+ /**\r
+ * Keeps track of which taxa have been opened for editing\r
+ */\r
+ private WritableList observableRecentNamesList = null;\r
+ public WritableSet observableSynonymSet = null;\r
+ private WritableList observableFavoritesList = null; \r
+ public WritableList getObservableTaxonTreeList() {\r
+ if (observableTaxonTreeList == null) {\r
+ observableTaxonTreeList = new WritableList();\r
+ ReferenceBase sec = cdmApp.getReferenceService().getReferenceByUuid(UUID.fromString("f3593c18-a8d2-4e51-bdad-0befbf8fb2d1"));\r
+ observableTaxonTreeList.addAll(cdmApp.getTaxonService().getRootTaxa(sec));\r
+ }\r
+ return observableTaxonTreeList;\r
+ }\r
+ \r
+ public WritableList getObservableRecentNamesList() {\r
+ if (observableRecentNamesList == null) {\r
+ observableRecentNamesList = new WritableList();\r
+ }\r
+ return observableRecentNamesList;\r
+ }\r
+\r
+\r
+ public WritableList getObservableFavoritesList() {\r
+ if (observableFavoritesList == null) {\r
+ observableFavoritesList = new WritableList();\r
+ }\r
+ return observableFavoritesList;\r
+ } \r
+ \r
+ public WritableSet getObservableSynonymSet() {\r
+ if (observableSynonymSet == null) {\r
+ observableSynonymSet = new WritableSet();\r
+ } \r
+ return observableSynonymSet; \r
+ }\r
+ \r
+ /* ***************************************************************************************\r
+ IMAGE REGISTRY\r
+ ************************************************************************************** */\r
+ /**\r
+ * Returns an image descriptor for the image file at the given\r
+ * plug-in relative path\r
+ *\r
+ * @param path the path\r
+ * @return the image descriptor\r
+ */\r
+ public static ImageDescriptor getImageDescriptor(String path) {\r
+ return imageDescriptorFromPlugin(PLUGIN_ID, path);\r
+ }\r
+ \r
+ public Image getImage(String key) {\r
+ return getImageRegistry().get(key);\r
+ }\r
+ // Resource bundle.\r
+ private ResourceBundle resourceBundle;\r
+ private FormColors formColors;\r
+ public static final String ACCEPTED_TAXON = "accepted";\r
+ public static final String HOMOTYPIC_SYN = "homotypic_syn";\r
+ public static final String HOMOTYPIC_SYN_ORIGINAL = "homotypic_syn_original";\r
+ public static final String HETEROTYPIC_SYN = "heterotypic_syn";\r
+ public static final String HETEROTYPIC_SYN_ORIGINAL = "heterotypic_syn_original";\r
+ public static final String MISAPPLIED_NAME = "misapplied";\r
+ public static final String AUTONYM = "autonym";\r
+ public static final String BASIONYM = "basionym";\r
+ public static final String DB = "db";\r
+ public static final String MOVE = "move";\r
+ \r
+ protected void initializeImageRegistry(ImageRegistry registry) {\r
+ registerImage(registry, ACCEPTED_TAXON, "accepted_small.gif"); //$NON-NLS-1$\r
+ registerImage(registry, HOMOTYPIC_SYN, "homosyn_no_bg.gif"); //$NON-NLS-1$\r
+ registerImage(registry, HOMOTYPIC_SYN_ORIGINAL, "homosyn_original_no_bg.gif"); //$NON-NLS-1$\r
+ registerImage(registry, HETEROTYPIC_SYN, "heterosyn_no_bg.gif"); //$NON-NLS-1$\r
+ registerImage(registry, HETEROTYPIC_SYN_ORIGINAL, "heterosyn_original_no_bg.gif"); //$NON-NLS-1$ \r
+ registerImage(registry, MISAPPLIED_NAME, "misapplied_no_bg.gif"); //$NON-NLS-1$\r
+ registerImage(registry, AUTONYM, "autonym_no_bg.gif"); //$NON-NLS-1$\r
+ registerImage(registry, BASIONYM, "basionym_no_bg.gif"); //$NON-NLS-1$\r
+ registerImage(registry, DB, "db.gif"); //$NON-NLS-1$\r
+ registerImage(registry, MOVE, "move_no_bg.gif"); //$NON-NLS-1$\r
+ }\r
+ private void registerImage(ImageRegistry registry, String key,\r
+ String fileName) {\r
+ try {\r
+ IPath path = new Path("icons/" + fileName); //$NON-NLS-1$\r
+ URL url = find(path);\r
+ if (url!=null) {\r
+ ImageDescriptor desc = ImageDescriptor.createFromURL(url);\r
+ registry.put(key, desc);\r
+ }\r
+ } catch (Exception e) {\r
+ }\r
+ }\r
+\r
+ /* ***************************************************************************************\r
+ TAXONOMIC CHILDREN\r
+ ************************************************************************************** */\r
+ public Set<Taxon> getTaxonomicChildren(Taxon taxon) {\r
+// return cdmApp.getTaxonService().getTaxonomicChildren(taxon);\r
+ return null;\r
+ }\r
+ \r
+ /* ***************************************************************************************\r
+ RANKS\r
+ ************************************************************************************** */ \r
+ OrderedTermVocabulary<Rank> rankVocabulary = null;\r
+ \r
+ public OrderedTermVocabulary<Rank> getRankVocabulary() {\r
+ if (rankVocabulary == null) {\r
+ rankVocabulary = cdmApp.getNameService().getRankVocabulary();\r
+ }\r
+ return rankVocabulary;\r
+ }\r
+ \r
+ /* ***************************************************************************************\r
+ NOMENCLATURAL STATUS\r
+ ************************************************************************************** */ \r
+ OrderedTermVocabulary<NomenclaturalStatusType> nomStatusVocabulary = null;\r
+ \r
+ public OrderedTermVocabulary<NomenclaturalStatusType> getNomStatusVocabulary() {\r
+ if (nomStatusVocabulary == null) {\r
+ nomStatusVocabulary = cdmApp.getNameService().getStatusTypeVocabulary();\r
+ }\r
+ return nomStatusVocabulary;\r
+ }\r
+ \r
+ /* ***************************************************************************************\r
+ NAME RELATIONS\r
+ ************************************************************************************** */ \r
+ OrderedTermVocabulary<NameRelationshipType> nameRelationshipTypeVocabulary = null;\r
+ \r
+ public OrderedTermVocabulary<NameRelationshipType> getNameRelationshipTypeVocabulary() {\r
+ if (nameRelationshipTypeVocabulary == null) {\r
+ nameRelationshipTypeVocabulary = cdmApp.getNameService().getNameRelationshipTypeVocabulary();\r
+ }\r
+ return nameRelationshipTypeVocabulary;\r
+ }\r
+ \r
+ \r
+ /* ***************************************************************************************\r
+ SORAYA DATA\r
+ ************************************************************************************** */\r
+ private Taxon getSorayasGenusTaxon() {\r
+ \r
+ String [] children = new String[] {"Heterospathe annectens H.E.Moore",\r
+ "Heterospathe arfakiana (Becc.) H.E.Moore",\r
+ "Heterospathe brevicaulis Fernando",\r
+ "Heterospathe cagayanensis Becc.",\r
+ "Heterospathe califrons Fernando, Palms 45: 118 (2001).", \r
+ "Heterospathe clemensiae (Burret) H.E.Moore",\r
+ "Heterospathe delicatula H.E.Moore",\r
+ "Heterospathe dransfieldii Fernando",\r
+ "Heterospathe elata Scheff.",\r
+ "Heterospathe elata var. elata.", \r
+ "Heterospathe elata var. guamensis Becc.",\r
+ "Heterospathe elata var. palauensis (Becc.) Becc.",\r
+ "Heterospathe elegans (Becc.) Becc.",\r
+ "Heterospathe elmeri Becc.",\r
+ "Heterospathe glabra (Burret) H.E.Moore",\r
+ "Heterospathe glauca (Scheff.) H.E.Moore",\r
+ "Heterospathe humilis Becc.",\r
+ "Heterospathe intermedia (Becc.) Fernando",\r
+ "Heterospathe kajewskii Burret",\r
+ "Heterospathe ledermanniana Becc.",\r
+ "Heterospathe lepidota H.E.Moore",\r
+ "Heterospathe longipes (H.E.Moore) Norup",\r
+ "Heterospathe macgregorii (Becc.) H.E.Moore",\r
+ "Heterospathe micrantha (Becc.) H.E.Moore", \r
+ "Heterospathe minor Burret",\r
+ "Heterospathe muelleriana (Becc.) Becc.",\r
+ "Heterospathe negrosensis Becc.",\r
+ "Heterospathe obriensis (Becc.) H.E.Moore",\r
+ "Heterospathe palauensis Becc.",\r
+ "Heterospathe parviflora Essig",\r
+ "Heterospathe philippinensis (Becc.) Becc.",\r
+// "Heterospathe phillipsii D.Fuller & Dowe", // <--------------\r
+ "Heterospathe pilosa (Burret) Burret",\r
+ "Heterospathe pisifera (Gaertn.) Burret",\r
+ "Heterospathe pulchra H.E.Moore",\r
+ "Heterospathe ramulosa Burret",\r
+ "Heterospathe salomonensis Becc.",\r
+ "Heterospathe scitula Fernando",\r
+ "Heterospathe sensisi Becc.",\r
+ "Heterospathe sibuyanensis Becc.",\r
+ "Heterospathe sphaerocarpa Burret",\r
+ "Heterospathe trispatha Fernando",\r
+ "Heterospathe uniformis Dowe",\r
+ "Heterospathe versteegiana Becc.",\r
+ "Heterospathe woodfordiana Becc."};\r
+\r
+ BotanicalName genusName = BotanicalName.PARSED_NAME("Heterospathe Scheff.");\r
+ \r
+ Taxon genusTaxon = new Taxon();\r
+ genusTaxon.setName(genusName);\r
+ genusTaxon.setSec(null);\r
+ \r
+ for (String child : children) {\r
+ BotanicalName speciesName = BotanicalName.PARSED_NAME(child);\r
+ \r
+ Taxon childTaxon = new Taxon();\r
+ childTaxon.setName(speciesName);\r
+ childTaxon.setSec(null);\r
+ childTaxon.setTaxonomicParent(genusTaxon, null, null);\r
+ \r
+ if (child.equals("Heterospathe elegans (Becc.) Becc.")) {\r
+ BotanicalName basionym = BotanicalName.PARSED_NAME("Barkerwebbia elegans Becc."); \r
+ speciesName.addRelationshipFromName(basionym, NameRelationshipType.BASIONYM(), null);\r
+ childTaxon.addHomotypicSynonymName(basionym);\r
+ }\r
+ \r
+ if (child.equals("Heterospathe humilis Becc.")) {\r
+ BotanicalName synonymName = BotanicalName.PARSED_NAME("Barkerwebbia humilis (Becc.) Becc. ex Martelli");\r
+ childTaxon.addHomotypicSynonymName(synonymName);\r
+ }\r
+ }\r
+\r
+ return genusTaxon;\r
+ }\r
+}
\ No newline at end of file
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.view.NameListView;\r
import eu.etaxonomy.taxeditor.view.TaxonomicTreeViewer;\r
\r
\r
// Add childTaxon to observable tree list, \r
// causing it to appear in the tree\r
- Activator.getDefault().getObservableTaxonTreeList().add(childTaxon);\r
+ TaxEditorPlugin.getDefault().getObservableTaxonTreeList().add(childTaxon);\r
\r
// Open new node\r
TaxonomicTreeViewer treeViewer = (TaxonomicTreeViewer) ((NameListView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().\r
+/**\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.controller;\r
\r
+import org.apache.log4j.Logger;\r
import org.eclipse.jface.action.Action;\r
\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.taxeditor.view.nameviewersupport.TesterooWritableSet;\r
+import eu.etaxonomy.taxeditor.view.propertysheetsupport.NonViralNamePropertySource;\r
\r
/**\r
* Add a new synonym to a taxon.\r
* \r
* @author p.ciardelli\r
+ * @created 06.05.2008\r
+ * @version 1.0\r
*\r
*/\r
public class ActionAddSynonymToTaxon extends Action {\r
+ private static final Logger logger = Logger\r
+ .getLogger(ActionAddSynonymToTaxon.class);\r
+ \r
Taxon taxon;\r
Synonym synonym;\r
\r
this.synonym = new Synonym();\r
\r
BotanicalName name = BotanicalName.PARSED_NAME(synonymNameCache);\r
- name.setHomotypicalGroup(new HomotypicalGroup());\r
+// name.setHomotypicalGroup(new HomotypicalGroup());\r
+ boolean homoGroupCreated = (name.getHomotypicalGroup() != null);\r
+ logger.warn("Homotypical group automatically created with new name? " + homoGroupCreated);\r
this.synonym.setName(name);\r
} \r
\r
}\r
\r
public void run() {\r
-// Activator.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
+// TaxEditorPlugin.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
}\r
}\r
import org.eclipse.jface.action.Action;\r
\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
/**\r
* Moves taxon in the taxonomic tree by assigning it a new parent\r
taxon.setTaxonomicParent(newParentTaxon, null, null);\r
\r
// Trigger re-draw in list by removing then adding taxon\r
- Activator.getDefault().getObservableTaxonTreeList().remove(taxon); \r
- Activator.getDefault().getObservableTaxonTreeList().add(taxon);\r
+ TaxEditorPlugin.getDefault().getObservableTaxonTreeList().remove(taxon); \r
+ TaxEditorPlugin.getDefault().getObservableTaxonTreeList().add(taxon);\r
\r
// Save the taxon to the CDM\r
- Activator.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
+ TaxEditorPlugin.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
}\r
}
\ No newline at end of file
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.view.MultiPageTaxonEditor;\r
import eu.etaxonomy.taxeditor.model.NameEditorInput;\r
import eu.etaxonomy.taxeditor.view.LeftPane;\r
// If this is a non-empty taxon being opened for the first time,\r
// add to recent names list \r
if (taxon.getName().getTitleCache() != null &&\r
- !Activator.getDefault().getObservableRecentNamesList().contains(taxon))\r
- Activator.getDefault().getObservableRecentNamesList().add(0, taxon);\r
+ !TaxEditorPlugin.getDefault().getObservableRecentNamesList().contains(taxon))\r
+ TaxEditorPlugin.getDefault().getObservableRecentNamesList().add(0, taxon);\r
\r
// If this taxon is not visible in the tree, open node\r
((TaxonomicTreeViewer) ((NameListView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().\r
\r
IEditorInput input = new NameEditorInput(taxon);\r
try {\r
- Activator.getDefault().getWorkbench().getActiveWorkbenchWindow().\r
+ TaxEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().\r
getActivePage().openEditor(input, MultiPageTaxonEditor.ID);\r
} catch (PartInitException e) {\r
// TODO Auto-generated catch block\r
import org.eclipse.jface.viewers.ISelection;\r
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
/**\r
* Convert an object to a structured selection, pass it to the\r
}\r
\r
public void run() {\r
- Activator.getDefault().getProvider().setSelection(this.selection);\r
+ TaxEditorPlugin.getDefault().getProvider().setSelection(this.selection);\r
}\r
}
\ No newline at end of file
import org.eclipse.jface.action.Action;\r
\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
/**\r
* Remove a Taxon from the tree without removing it from\r
public void run() {\r
\r
// Remove Taxon from taxon tree list\r
- Activator.getDefault().getObservableTaxonTreeList().remove(taxon);\r
+ TaxEditorPlugin.getDefault().getObservableTaxonTreeList().remove(taxon);\r
\r
taxon = null;\r
}\r
import org.eclipse.jface.action.Action;\r
\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
/**\r
* Commit any changes to this taxon to the CDM\r
// If this is a new taxon, add it to the recent names list;\r
// if it is already in the tree, remove then re-add it\r
// to force a re-sort\r
- if (!Activator.getDefault().getObservableTaxonTreeList().contains(taxon)) {\r
- Activator.getDefault().getObservableRecentNamesList().add(0, taxon);\r
+ if (!TaxEditorPlugin.getDefault().getObservableTaxonTreeList().contains(taxon)) {\r
+ TaxEditorPlugin.getDefault().getObservableRecentNamesList().add(0, taxon);\r
} else {\r
- Activator.getDefault().getObservableTaxonTreeList().remove(taxon);\r
+ TaxEditorPlugin.getDefault().getObservableTaxonTreeList().remove(taxon);\r
} \r
- Activator.getDefault().getObservableTaxonTreeList().add(taxon);\r
+ TaxEditorPlugin.getDefault().getObservableTaxonTreeList().add(taxon);\r
\r
// Save the taxon to the CDM\r
logger.warn("n Synonyms:" + taxon.getSynonyms().size());\r
- Activator.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
+ TaxEditorPlugin.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
\r
// Notify taxon listeners in case name has been updated \r
taxon.firePropertyChange("name", null, null);\r
+/**\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.model;\r
\r
import java.util.Set;\r
\r
+import org.apache.log4j.Logger;\r
import org.eclipse.core.databinding.observable.Realm;\r
import org.eclipse.core.databinding.observable.list.IListChangeListener;\r
import org.eclipse.core.databinding.observable.list.IObservableList;\r
import org.eclipse.swt.widgets.Display;\r
\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.view.TaxonomicTreeViewer;\r
\r
/**\r
* viewer type restrictions and private settings of variables and methods\r
* \r
* @author p.ciardelli\r
- *\r
+ * @created 14.05.2008\r
+ * @version 1.0\r
*/\r
public class NameTreeContentProvider extends ObservableListContentProvider \r
implements ITreeContentProvider {\r
+ private static final Logger logger = Logger.getLogger(NameTreeContentProvider.class);\r
\r
public Object[] getChildren(Object parentElement) {\r
- Set<Taxon> children = ((Taxon) parentElement).getTaxonomicChildren();\r
+ Taxon parentTaxon = (Taxon) parentElement;\r
+// Set<Taxon> children = TaxEditorPlugin.getDefault().getTaxonomicChildren(parentTaxon);\r
+ Set<Taxon> children = parentTaxon.getTaxonomicChildren();\r
+// for (Taxon childTaxon : children) {\r
+// observableList.add(childTaxon);\r
+// }\r
+ // TODO: suppress notify\r
observableList.addAll(children);\r
return children == null ? new Object[0] : children.toArray();\r
}\r
if (entry.isAddition()) {\r
\r
knownElements.add(entry.getElement());\r
- \r
+ \r
((TaxonomicTreeViewer) viewer).add(\r
((Taxon) entry.getElement()).getTaxonomicParent(), \r
entry.getElement());\r
if (observableList != null) {\r
observableList.removeListChangeListener(listener);\r
}\r
+ observableList = list; \r
+ observableList.addListChangeListener(listener);\r
\r
- knownElements.clear();\r
-\r
- observableList = list;\r
- \r
+ knownElements.clear(); \r
knownElements.addAll(list);\r
- \r
\r
- observableList.addListChangeListener(listener);\r
}\r
\r
/**\r
import org.eclipse.ui.forms.widgets.ScrolledForm;\r
import org.eclipse.ui.forms.widgets.Section;\r
\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
/**\r
* Responsible for the look and feel of freetext (master) - form (detail)\r
* view used when editing names / synonymy, concepts, features, etc.\r
haction.setChecked(true);\r
// haction.setToolTipText(Messages.getString("EditorMasterDetailsBlock.horizontal")); //$NON-NLS-1$\r
haction.setToolTipText("Align editing horizontally"); //$NON-NLS-1$\r
- haction.setImageDescriptor(Activator.getDefault().getImageRegistry().getDescriptor(Activator.IMG_HORIZONTAL));\r
+ haction.setImageDescriptor(TaxEditorPlugin.getDefault().getImageRegistry().getDescriptor(Activator.TaxEditorPlugin));\r
Action vaction = new Action("ver", Action.AS_RADIO_BUTTON) { //$NON-NLS-1$\r
public void run() {\r
sashForm.setOrientation(SWT.VERTICAL);\r
vaction.setChecked(false);\r
// vaction.setToolTipText(Messages.getString("EditorMasterDetailsBlock.vertical")); //$NON-NLS-1$\r
vaction.setToolTipText("Align editing vertically"); //$NON-NLS-1$\r
- vaction.setImageDescriptor(Activator.getDefault()\r
- .getImageRegistry().getDescriptor(Activator.IMG_VERTICAL));\r
+ vaction.setImageDescriptor(TaxEditorPlugin.getDefault()\r
+ .getImageRegistry().getDescriptor(Activator.TaxEditorPlugin));\r
form.getToolBarManager().add(haction);\r
form.getToolBarManager().add(vaction);\r
}\r
\r
import eu.etaxonomy.cdm.model.common.IOriginalSource;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.controller.ActionOpenNameEditor;\r
import eu.etaxonomy.taxeditor.controller.TaxonTransfer;\r
\r
});\r
\r
// Listens for new taxa opened for editing\r
- this.setInput(Activator.getDefault().getObservableFavoritesList());\r
+ this.setInput(TaxEditorPlugin.getDefault().getObservableFavoritesList());\r
\r
// On double click, open name editor\r
this.addDoubleClickListener(new IDoubleClickListener(){\r
public void drop(DropTargetEvent event) {\r
\r
// Add event to favorites list \r
- Activator.getDefault().getObservableFavoritesList().add(event.data);\r
+ TaxEditorPlugin.getDefault().getObservableFavoritesList().add(event.data);\r
}\r
});\r
}\r
+/**\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.view;\r
\r
import com.swtdesigner.ResourceManager;\r
import com.swtdesigner.SWTResourceManager;\r
\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
public class LeftPane extends ViewPart {\r
\r
lblDataSource.setFont(SWTResourceManager.getFont("Arial", 14, SWT.BOLD));\r
lblDataSource.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
lblDataSource.setAlignment(SWT.CENTER);\r
- lblDataSource.setText(" Euro+Med"); \r
+ lblDataSource.setText(" Palmweb"); \r
\r
Label lblDbImg = new Label(composite, SWT.NONE);\r
lblDbImg.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));\r
toolkit.adapt(lblDbImg, true, true);\r
lblDbImg.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
- lblDbImg.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/db.gif"));\r
+ lblDbImg.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/db.gif"));\r
\r
Menu menu = new Menu(lblDbImg);\r
lblDbImg.setMenu(menu);\r
lblDataSource2.setFont(SWTResourceManager.getFont("Arial", 8, SWT.NONE));\r
lblDataSource2.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
lblDataSource2.setAlignment(SWT.CENTER);\r
- lblDataSource2.setText(" mssql://128.14.101.12:80/europlusmed"); \r
+ lblDataSource2.setText(" mssql://128.14.101.12:80/palmweb"); \r
\r
} \r
\r
import org.eclipse.jface.viewers.IDoubleClickListener;\r
import org.eclipse.jface.viewers.StructuredSelection;\r
import org.eclipse.jface.viewers.TableViewer;\r
-import org.eclipse.jface.viewers.TreeViewer;\r
import org.eclipse.swt.SWT;\r
import org.eclipse.swt.events.FocusEvent;\r
import org.eclipse.swt.events.FocusListener;\r
import com.swtdesigner.SWTResourceManager;\r
\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
public class MoveDialogView extends Dialog {\r
\r
final GridData gd_youHaveChosenLabel = new GridData(SWT.LEFT, SWT.FILL, true, false, 2, 1);\r
// gd_youHaveChosenLabel.heightHint = 30;\r
youHaveChosenLabel.setLayoutData(gd_youHaveChosenLabel);\r
-// youHaveChosenLabel.setText("You have chosen to turn \"" + taxon.getName().getNameCache() +\r
-// "\" into a synonym. Please choose a new accepted name from one of the following options.");\r
- youHaveChosenLabel.setText("Choose a taxonomic parent for \"" + taxon.getName().getTitleCache() +\r
- "\"."); \r
+ youHaveChosenLabel.setText("You have chosen to turn \"" + taxon.getName().getNameCache() +\r
+ "\" into a synonym. Please choose a new accepted name from one of the following options.");\r
+// youHaveChosenLabel.setText("Choose a taxonomic parent for \"" + taxon.getName().getTitleCache() +\r
+// "\"."); \r
\r
final Group group_1 = new Group(container, SWT.NONE);\r
group_1.setLayout(new GridLayout());\r
searchButton.setLayoutData(new GridData());\r
searchButton.setText("Search");\r
\r
- final Composite composite_1 = new Composite(container, SWT.NONE);\r
- composite_1.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 2, 1));\r
- composite_1.setLayout(new FillLayout());\r
+// final Composite composite_1 = new Composite(container, SWT.NONE);\r
+// composite_1.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));\r
+// composite_1.setLayout(new FillLayout());\r
+//\r
+// new Label(composite_1, SWT.NONE).setText("Selected taxon: ");\r
+// selectedTaxonNameLabel = new Label(composite_1, SWT.NONE);\r
+// selectedTaxonNameLabel.setFont(SWTResourceManager.getFont("", 9, SWT.BOLD));\r
+// selectedTaxonNameLabel.setText("Heterospathe elegans subsp. versteegiana M.S.Trudgen && W.J.Baker");\r
+ \r
+ final Composite selectcomposite = new Composite(container, SWT.NONE);\r
+ selectcomposite.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));\r
+ selectcomposite.setLayout(new FillLayout());\r
\r
- new Label(composite_1, SWT.NONE).setText("Selected taxon: ");\r
+// final Label label = new Label(selectcomposite, SWT.RIGHT);\r
+// label.setText("Selected taxon: ");\r
\r
- selectedTaxonNameLabel = new Label(composite_1, SWT.RIGHT);\r
- selectedTaxonNameLabel.setFont(SWTResourceManager.getFont("", 9, SWT.BOLD));\r
- selectedTaxonNameLabel.setText("");\r
- new Label(container, SWT.NONE);\r
+ final Label label_1 = new Label(selectcomposite, SWT.RIGHT);\r
+ label_1.setText("Heterospathe elegans subsp. versteegiana M.S.Trudgen && W.J.Baker");\r
+ label_1.setFont(SWTResourceManager.getFont("", 9, SWT.BOLD));\r
+ \r
+// selectedTaxonNameLabel = new Label(composite_1, SWT.RIGHT);\r
+// selectedTaxonNameLabel.setFont(SWTResourceManager.getFont("", 9, SWT.BOLD));\r
+// selectedTaxonNameLabel.setText("Heterospathe elegans subsp. versteegiana M.S.Trudgen & W.J.Baker");\r
+// new Label(container, SWT.NONE);\r
\r
\r
//\r
}\r
protected void configureShell(Shell newShell) {\r
super.configureShell(newShell);\r
- newShell.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/edit_16x16.ico"));\r
- newShell.setText("Choose parent taxon for \"" + taxon.getName().getTitleCache() +\r
- "\"");\r
+ newShell.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/edit_16x16.ico"));\r
+// newShell.setText("Choose parent taxon for \"" + taxon.getName().getTitleCache() +\r
+// "\"");\r
+ newShell.setText("Choose an accepted name for \"" + taxon.getName().getTitleCache() +\r
+ "\""); \r
}\r
\r
class SelectButtonFocusListener implements FocusListener {\r
\r
protected void createFormContent(IManagedForm managedForm) {\r
\r
-// form.setBackgroundImage(Activator.getDefault().getImage(\r
-// Activator.IMG_FORM_BG));\r
+// form.setBackgroundImage(TaxEditorPlugin.getDefault().getImage(\r
+// TaxEditorPlugin.IMG_FORM_BG));\r
block.createContent(managedForm);\r
\r
createMasterContent(managedForm);\r
+/**\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.view;\r
\r
import java.beans.PropertyChangeEvent;\r
import org.apache.log4j.Logger;\r
import org.eclipse.core.runtime.IAdaptable;\r
import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.jface.dialogs.IMessageProvider;\r
import org.eclipse.jface.viewers.ISelectionProvider;\r
import org.eclipse.jface.viewers.StructuredSelection;\r
import org.eclipse.swt.SWT;\r
\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
+import eu.etaxonomy.cdm.model.name.NonViralName;\r
+import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.controller.WidgetTransfer;\r
import eu.etaxonomy.taxeditor.view.nameviewersupport.GroupComposite;\r
import eu.etaxonomy.taxeditor.view.nameviewersupport.NameComposite;\r
import eu.etaxonomy.taxeditor.view.propertysheetsupport.BotanicalNamePropertySource;\r
import eu.etaxonomy.taxeditor.view.propertysheetsupport.CustomSortPropertySheetEntry;\r
\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 15.05.2008\r
+ * @version 1.0\r
+ */\r
public class NameEditorView extends EditorPart implements IAdaptable {\r
- private static final Logger logger = Logger.getLogger(Activator.class);\r
+ private static final Logger logger = Logger.getLogger(TaxEditorPlugin.class);\r
\r
private Taxon taxon;\r
\r
@SuppressWarnings("unchecked")\r
public Object getAdapter(Class type) {\r
if (type == IPropertySheetPage.class) {\r
- PropertySheetPage page = new PropertySheetPage();\r
+ PropertySheetPage page = new PropertySheetPage() {\r
+ public void refresh() {\r
+ logger.warn("Refreshing property sheet page");\r
+ super.refresh();\r
+ }\r
+ };\r
\r
CustomSortPropertySheetEntry entry = new CustomSortPropertySheetEntry();\r
page.setRootEntry(entry);\r
+ page.refresh();\r
\r
return page;\r
}\r
\r
@Override\r
public boolean isDirty() {\r
-// return dirty;\r
- return true;\r
+ return dirty;\r
+// return true;\r
}\r
\r
@Override\r
\r
private ISelectionProvider provider;\r
private TaxonCompositeFactory taxonCompositeFactory;\r
- private Composite parent; \r
+ private Composite parent;\r
+\r
+ private IManagedForm managedForm;\r
+\r
+ private ScrolledForm scrolledForm; \r
\r
@Override\r
public void createPartControl(final Composite composite) {\r
\r
- // We use a managed form to make drawing and removal of borders easier\r
- IManagedForm managedForm = new ManagedForm(composite);\r
- ScrolledForm scrolledForm = managedForm.getForm();\r
+ managedForm = new ManagedForm(composite);\r
+ scrolledForm = managedForm.getForm();\r
parent = scrolledForm.getBody();\r
- \r
+ \r
parent.setLayout(new TableWrapLayout()); \r
parent.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
\r
GroupComposite homotypicComposite = \r
taxonCompositeFactory.createGroupComposite(parent, homotypicGroup); \r
\r
+ NameComposite nameCompositeWithWarning = null;\r
+ \r
// Add accepted taxon to the group\r
- taxonCompositeFactory.createAcceptedNameComposite(homotypicComposite, taxon);\r
+ NameComposite acceptedNameComposite = taxonCompositeFactory.createAcceptedNameComposite(homotypicComposite, taxon);\r
+ \r
+ warnIfNameConflictWithParent(acceptedNameComposite);\r
\r
IterableSynonymyList synonymyList = new IterableSynonymyList(taxon);\r
HomotypicalGroup lastHeterotypicGroup = null;\r
HomotypicalGroup currentHeterotypicGroup = null;\r
GroupComposite heterotypicGroupComposite = null;\r
GroupComposite misappliedNameGroupComposite = null;\r
+ \r
for (TaxonBase synonymOrMisName : synonymyList) {\r
if (synonymOrMisName instanceof Synonym) {\r
\r
taxonCompositeFactory.createHomotypicSynonymComposite(homotypicComposite, synonym);\r
\r
} else {\r
- // Create a new group composite?\r
+ \r
if (!currentHeterotypicGroup.equals(lastHeterotypicGroup)) {\r
+ \r
+ // Create a new group composite\r
heterotypicGroupComposite = \r
taxonCompositeFactory.createGroupComposite(parent, currentHeterotypicGroup); \r
lastHeterotypicGroup = currentHeterotypicGroup;\r
// ("TEST2", "Testeroo info", null, IMessageProvider.INFORMATION, nameComposite.getTextWidget());\r
}\r
\r
+ private NameComposite warnIfNameConflictWithParent(NameComposite nameComposite) {\r
+ \r
+ String message = null;\r
+ \r
+ if (nameComposite.getData() instanceof Taxon) {\r
+ taxon = (Taxon) nameComposite.getData();\r
+ Taxon parentTaxon = taxon.getTaxonomicParent();\r
+ \r
+ if (parentTaxon != null && taxon.getName() instanceof NonViralName \r
+ && parentTaxon.getName() instanceof NonViralName) {\r
+ NonViralName name = (NonViralName) taxon.getName();\r
+ NonViralName parentName = (NonViralName) parentTaxon.getName();\r
+ \r
+ Rank rank = name.getRank();\r
+ if (rank != null) {\r
+ if (rank.equals(Rank.SPECIES())) {\r
+ String genus = name.getGenusOrUninomial();\r
+ String parentGenus = parentName.getGenusOrUninomial();\r
+ \r
+ if (!parentGenus.equals(genus)) {\r
+ message = "Warning: taxon's genus does not match parent taxon's genus.";\r
+ }\r
+ }\r
+ \r
+ if (rank.equals(Rank.SUBSPECIES())) {\r
+ String specificEpithet = name.getSpecificEpithet();\r
+ String parentSpecificEpithet = parentName.getSpecificEpithet();\r
+ \r
+ if (!parentSpecificEpithet.equals(specificEpithet)) {\r
+ message = "Warning: taxon's specific epithet does not match parent taxon's specific epithet.";\r
+ }\r
+ }\r
+ }\r
+ \r
+ }\r
+ }\r
+ \r
+ if (message != null && nameComposite.getTextViewer() != null) {\r
+ managedForm.getMessageManager().addMessage\r
+ ("TEST2", message, null, IMessageProvider.WARNING, \r
+ nameComposite.getTextViewer().getTextWidget());\r
+ scrolledForm.setMessage(null, 0, null);\r
+ }\r
+ return nameComposite;\r
+ }\r
+\r
@Override\r
public void setFocus() {\r
// TODO Auto-generated method stub\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.controller.ActionDeleteTaxon;\r
import eu.etaxonomy.taxeditor.controller.ActionOpenNameEditor;\r
import eu.etaxonomy.taxeditor.controller.ActionOpenNewChildNameEditor;\r
\r
\r
final CoolBar coolBar = new CoolBar(parent, SWT.NONE);\r
- new CoolItem(coolBar, SWT.PUSH).setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/save_edit.gif"));\r
+ new CoolItem(coolBar, SWT.PUSH).setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/save_edit.gif"));\r
\r
final ToolBar toolBar = new ToolBar(parent, SWT.NONE);\r
// toolBar.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
\r
final ToolItem itemSave = new ToolItem(toolBar, SWT.PUSH);\r
itemSave.setToolTipText("Save taxon");\r
- itemSave.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/save_edit.gif"));\r
+ itemSave.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/save_edit.gif"));\r
itemSave.addSelectionListener(new SelectionListener() {\r
public void widgetDefaultSelected(SelectionEvent e) {\r
dirty = false;\r
}\r
});\r
\r
- itemMove.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/correction_change.gif"));\r
+ itemMove.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/correction_change.gif"));\r
\r
final ToolItem itemDelete = new ToolItem(toolBar, SWT.NONE);\r
itemDelete.setToolTipText("Delete taxon");\r
- itemDelete.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/delete_edit.gif"));\r
+ itemDelete.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/delete_edit.gif"));\r
itemDelete.addSelectionListener(new SelectionListener() {\r
\r
public void widgetDefaultSelected(SelectionEvent e) {\r
\r
final ToolItem itemAddRelationship = new ToolItem(toolBar, SWT.DROP_DOWN);\r
itemAddRelationship.setToolTipText("Add nom. or tax. relation to taxon"); \r
- itemAddRelationship.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/rel_no_bg.gif"));\r
+ itemAddRelationship.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/rel_no_bg.gif"));\r
\r
/*\r
* Create menu to add relations to the taxon\r
menuItem = new MenuItem(menuAddRel, SWT.NONE); \r
}\r
\r
- menuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + relImgs[i]));\r
+ menuItem.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/" + relImgs[i]));\r
menuItem.setText("Add " + relTypes[i]);\r
}\r
\r
new ToolItem(toolBar, SWT.SEPARATOR);\r
\r
final ToolItem itemAddTaxon = new ToolItem(toolBar, SWT.DROP_DOWN);\r
- itemAddTaxon.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/add_edit.gif"));\r
+ itemAddTaxon.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/add_edit.gif"));\r
itemAddTaxon.setToolTipText("Add new taxon");\r
\r
/*\r
public void widgetDefaultSelected(SelectionEvent e) { \r
}\r
public void widgetSelected(SelectionEvent e) {\r
- label.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + relImg)); \r
+ label.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/" + relImg)); \r
}\r
});\r
}\r
\r
private MenuItem createRelationMenuItem(Menu menu, String img, String text) {\r
final MenuItem menuItem = new MenuItem(menu, SWT.NONE);\r
- menuItem.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/" + img));\r
+ menuItem.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/" + img));\r
menuItem.setText(text);\r
return menuItem;\r
}\r
import com.swtdesigner.ResourceManager;\r
import com.swtdesigner.SWTResourceManager;\r
\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
/**\r
* @author p.ciardelli\r
lblDataSourceTitle.setFont(SWTResourceManager.getFont("Arial", 14, SWT.BOLD));\r
lblDataSourceTitle.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
lblDataSourceTitle.setAlignment(SWT.CENTER);\r
- lblDataSourceTitle.setText(" Euro+Med"); \r
+ lblDataSourceTitle.setText(" Palmweb"); \r
\r
final Label lblDbImg = new Label(composite, SWT.NONE);\r
lblDbImg.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));\r
lblDbImg.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
- lblDbImg.setImage(ResourceManager.getPluginImage(Activator.getDefault(), "icons/db.gif"));\r
- lblDbImg.setImage(Activator.getDefault().getImageRegistry().get(Activator.DB));\r
+ lblDbImg.setImage(ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/db.gif"));\r
+ lblDbImg.setImage(TaxEditorPlugin.getDefault().getImageRegistry().get(TaxEditorPlugin.DB));\r
\r
final Menu menu = new Menu(lblDbImg);\r
lblDbImg.setMenu(menu);\r
lblDataSource.setFont(SWTResourceManager.getFont("Arial", 8, SWT.NONE));\r
lblDataSource.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
lblDataSource.setAlignment(SWT.CENTER);\r
- lblDataSource.setText(" mssql://128.14.101.12:80/europlusmed");\r
+ lblDataSource.setText(" mssql://128.14.101.12:80/palmweb");\r
\r
createExpandBar();\r
top.setLayout(gridLayout);\r
\r
public void setShowError(boolean hasProblem) {\r
\r
+ hasProblem = false;\r
+ \r
String text = this.getTextWidget().getText();\r
\r
Iterator<Annotation> annotations = this.getAnnotationModel().getAnnotationIterator();\r
import org.eclipse.swt.widgets.Composite;\r
\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.controller.ActionOpenNameEditor;\r
\r
public class RecentNamesTableViewer extends TableViewer {\r
});\r
\r
// Listens for new taxa opened for editing\r
- this.setInput(Activator.getDefault().getObservableRecentNamesList());\r
+ this.setInput(TaxEditorPlugin.getDefault().getObservableRecentNamesList());\r
\r
// On double click, open name editor\r
this.addDoubleClickListener(new IDoubleClickListener(){\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.strategy.parser.TaxonNameParserBotanicalNameImpl;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
import eu.etaxonomy.taxeditor.controller.ActionAddQuickName;\r
import eu.etaxonomy.taxeditor.controller.ActionMoveTaxon;\r
import eu.etaxonomy.taxeditor.controller.ActionOpenNameEditor;\r
*/\r
public Image getColumnImage(Object element, int columnIndex) {\r
if (((Taxon) element).getName().getHasProblem())\r
- return ResourceManager.getPluginImage(Activator.getDefault(), "icons/warn_tsk.gif");\r
+ return ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/warn_tsk.gif");\r
return null;\r
}\r
/*\r
\r
// TaxonTreeList added to every time a node is opened with its\r
// children, or when a new taxon is added\r
- this.setInput(Activator.getDefault().getObservableTaxonTreeList());\r
+ this.setInput(TaxEditorPlugin.getDefault().getObservableTaxonTreeList());\r
\r
// Sort according to "getColumnText" above, i.e. by NameCache\r
this.setComparator(new ViewerComparator());\r
import com.swtdesigner.ResourceManager;\r
import com.swtdesigner.SWTResourceManager;\r
\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
public class UndoView extends ViewPart {\r
\r
\r
final TableItem newItemTableItem_7 = new TableItem(table, SWT.BORDER);\r
newItemTableItem_7.setText(new String[] {"Undo the last action"});\r
- newItemTableItem_7.setImage(0, ResourceManager.getPluginImage(Activator.getDefault(), "icons/undo.gif"));\r
+ newItemTableItem_7.setImage(0, ResourceManager.getPluginImage(TaxEditorPlugin.getDefault(), "icons/undo.gif"));\r
newItemTableItem_7.setText(1, "Deleted fact (Distribution) \"Brazilian (Northerly region)\" to \"Pilosella fuscoatra (Nägeli & Peter) Soják\"");\r
//\r
createActions();\r
+/**\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.view.nameviewersupport;\r
\r
import org.eclipse.swt.events.FocusEvent;\r
--- /dev/null
+package eu.etaxonomy.taxeditor.view.nameviewersupport;\r
+\r
+import java.util.MissingResourceException;\r
+import java.util.ResourceBundle;\r
+\r
+public class Messages {\r
+ private static final String BUNDLE_NAME = "eu.etaxonomy.taxeditor.view.nameviewersupport.messages"; //$NON-NLS-1$\r
+\r
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle\r
+ .getBundle(BUNDLE_NAME);\r
+\r
+ private Messages() {\r
+ }\r
+\r
+ public static String getString(String key) {\r
+ try {\r
+ return RESOURCE_BUNDLE.getString(key);\r
+ } catch (MissingResourceException e) {\r
+ return '!' + key + '!';\r
+ }\r
+ }\r
+}\r
package eu.etaxonomy.taxeditor.view.nameviewersupport;\r
\r
+import java.util.Set;\r
+\r
import org.eclipse.swt.SWT;\r
import org.eclipse.swt.graphics.Font;\r
import org.eclipse.swt.graphics.Image;\r
\r
import com.swtdesigner.SWTResourceManager;\r
\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.cdm.model.name.NameRelationship;\r
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
+import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
public class NameComposite extends EditableGroupedComposite {\r
\r
public static final int ACCEPTED_INDENT = 0;\r
public static final int SYNONYM_INDENT = 15;\r
- public static final int MISAPPLIEDNAME_INDENT = 5;\r
+ public static final int MISAPPLIEDNAME_INDENT = 15;\r
\r
public static final Font ACCEPTED_FONT = SWTResourceManager.getFont("Georgia", 12, SWT.NONE);\r
public static final Font SYNONYM_FONT = SWTResourceManager.getFont("Georgia", 10, SWT.NONE);\r
public static final Font MISAPPLIEDNAME_FONT = SWTResourceManager.getFont("Georgia", 10, SWT.NONE);;\r
\r
- public static final Image ACCEPTED_ICON = Activator.getDefault().getImageRegistry().get(Activator.ACCEPTED_TAXON);\r
- public static final Image HOMOTYPIC_SYNONYM_ICON = Activator.getDefault().getImageRegistry().get(Activator.HOMOTYPIC_SYN);\r
- public static final Image HETEROTYPIC_SYNONYM_ICON = Activator.getDefault().getImageRegistry().get(Activator.HETEROTYPIC_SYN);\r
- public static final Image MISAPPLIEDNAME_ICON = Activator.getDefault().getImageRegistry().get(Activator.MISAPPLIED_NAME);\r
+ public static final Image ACCEPTED_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(TaxEditorPlugin.ACCEPTED_TAXON);\r
+ public static final Image HOMOTYPIC_SYNONYM_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(TaxEditorPlugin.HOMOTYPIC_SYN);\r
+ public static final Image HOMOTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(TaxEditorPlugin.HOMOTYPIC_SYN_ORIGINAL);\r
+ public static final Image HETEROTYPIC_SYNONYM_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(TaxEditorPlugin.HETEROTYPIC_SYN);\r
+ public static final Image HETEROTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(TaxEditorPlugin.HETEROTYPIC_SYN_ORIGINAL);\r
+ public static final Image MISAPPLIEDNAME_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(TaxEditorPlugin.MISAPPLIED_NAME);\r
+ public static final Image AUTONYM_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(TaxEditorPlugin.AUTONYM);\r
+ public static final Image BASIONYM_ICON = TaxEditorPlugin.getDefault().getImageRegistry().get(TaxEditorPlugin.BASIONYM);\r
+ public static final Image MOVE = TaxEditorPlugin.getDefault().getImageRegistry().get(TaxEditorPlugin.MOVE);\r
\r
public NameComposite(Composite parent) {\r
super(parent);\r
+/**\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.view.nameviewersupport;\r
\r
import org.eclipse.core.runtime.ListenerList;\r
import org.eclipse.jface.viewers.ISelectionProvider;\r
import org.eclipse.jface.viewers.SelectionChangedEvent;\r
\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 16.05.2008\r
+ * @version 1.0\r
+ */\r
public class SimpleSelectionProvider implements ISelectionProvider {\r
\r
private ListenerList listeners = new ListenerList();\r
+/**\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.view.nameviewersupport;\r
\r
import org.apache.log4j.Logger;\r
import org.eclipse.swt.widgets.Composite;\r
import org.eclipse.swt.widgets.Menu;\r
import org.eclipse.swt.widgets.MenuItem;\r
+import org.eclipse.swt.widgets.Shell;\r
import org.eclipse.ui.forms.IManagedForm;\r
\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonBase;\r
import eu.etaxonomy.cdm.strategy.parser.TaxonNameParserBotanicalNameImpl;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
+import eu.etaxonomy.taxeditor.view.MoveDialogView;\r
import eu.etaxonomy.taxeditor.view.NameViewer;\r
import eu.etaxonomy.taxeditor.view.propertysheetsupport.BotanicalNamePropertySource;\r
\r
+/**\r
+ * @author p.ciardelli\r
+ * @created 15.05.2008\r
+ * @version 1.0\r
+ */\r
public class TaxonCompositeFactory {\r
private static final Logger logger = Logger.getLogger(TaxonCompositeFactory.class);\r
\r
\r
private Composite misappliedNameGroupComposite;\r
\r
- public GroupComposite createGroupComposite(Composite parent, HomotypicalGroup data) {\r
+ public GroupComposite createGroupComposite(Composite parent, Object data) {\r
final GroupComposite groupComposite = new GroupComposite(parent);\r
if (data != null) {\r
groupComposite.setData(data);\r
}\r
-// groupComposite.setDataDisposer(new IDataDisposer() {\r
-// @Override\r
-// public void disposeData() {\r
+ groupComposite.setDataDisposer(new IDataDisposer() {\r
+ @Override\r
+ public void disposeData() {\r
+ if (groupComposite.equals(misappliedNameGroupComposite)) {\r
+ misappliedNameGroupComposite = null;\r
+ }\r
// HomotypicalGroup data = (HomotypicalGroup) groupComposite.getData();\r
// taxon.getHeterotypicSynonymyGroups().remove(data);\r
-// }\r
-// });\r
+ }\r
+ });\r
createBorderSupport(groupComposite);\r
if (misappliedNameGroupComposite != null) {\r
groupComposite.moveAbove(misappliedNameGroupComposite);\r
nameComposite.setParentDataAdapter(new IParentDataAdapter() {\r
@Override\r
public void adaptParentData() {\r
+ TaxonBase data = (TaxonBase) nameComposite.getData();\r
Object parentData = nameComposite.getParent().getData();\r
if (nameComposite.getParent().equals(misappliedNameGroupComposite)) {\r
- createMisappliedNameComposite(nameComposite);\r
+ transformMisappliedNameComposite(nameComposite);\r
return;\r
}\r
if (parentData instanceof HomotypicalGroup) { \r
try {\r
- TaxonNameBase name = data.getName();\r
+ TaxonNameBase<TaxonNameBase> name = data.getName();\r
\r
- // Change name composite's homotypical group to its parent's ... \r
+ // Change name composite's homotypical group to its parent's ...\r
name.setHomotypicalGroup((HomotypicalGroup) parentData);\r
\r
// Delete synonym from taxon ...\r
}\r
nameComposite.setData(synonymRelation.getSynonym());\r
} catch (RuntimeException e) {\r
- logger.error("CDM update failed during adaptParentData.");\r
+ logger.error("CDM update failed during adaptParentData."); //$NON-NLS-1$\r
e.printStackTrace();\r
}\r
\r
// And set name composite's appearance to group synonymy type \r
if (parentData.equals(taxon.getHomotypicGroup())) {\r
- createHomotypicSynonymComposite(nameComposite);\r
+ transformHomotypicSynonymComposite(nameComposite);\r
} else {\r
- createHeterotypicSynonymComposite(nameComposite);\r
+ transformHeterotypicSynonymComposite(nameComposite);\r
}\r
}\r
}\r
TaxonNameBase<TaxonNameBase> taxonNameBase = ((TaxonBase) data).getName();\r
if (taxonNameBase instanceof BotanicalName) {\r
\r
+ BotanicalNamePropertySource propertySource = \r
+ new BotanicalNamePropertySource((BotanicalName) taxonNameBase);\r
selectionProvider.setSelection(\r
- new StructuredSelection(\r
- new BotanicalNamePropertySource((BotanicalName) taxonNameBase)));\r
+ new StructuredSelection(propertySource));\r
+// propertySource.addPropertyChangeListener(new PropertyChangeListener() {\r
+// @Override\r
+// public void propertyChange(PropertyChangeEvent evt) {\r
+// logger.warn("Name changed - updating selection");\r
+// TaxonNameBase taxonNameBase = (BotanicalName) nameComposite.getData();\r
+// selectionProvider.setSelection(\r
+// new StructuredSelection(\r
+// new BotanicalNamePropertySource((BotanicalName) taxonNameBase)));\r
+// } \r
+// });\r
+// taxonNameBase.addPropertyChangeListener(new PropertyChangeListener() {\r
+// @Override\r
+// public void propertyChange(PropertyChangeEvent evt) {\r
+// logger.warn("Name changed - updating selection");\r
+// TaxonNameBase taxonNameBase = (BotanicalName) nameComposite.getData();\r
+// selectionProvider.setSelection(\r
+// new StructuredSelection(\r
+// new BotanicalNamePropertySource((BotanicalName) taxonNameBase)));\r
+// }\r
+// \r
+// });\r
}\r
\r
}\r
\r
public NameComposite createAcceptedNameComposite(Composite parent, TaxonBase data) {\r
NameComposite nameComposite = createNameComposite(parent, data);\r
- return createAcceptedNameComposite(nameComposite);\r
+ \r
+ createAcceptedMenu(nameComposite);\r
+ \r
+ return transformAcceptedNameComposite(nameComposite);\r
}\r
\r
- public NameComposite createAcceptedNameComposite(NameComposite nameComposite) {\r
- nameComposite.setDraggable(false);\r
+ public NameComposite transformAcceptedNameComposite(NameComposite nameComposite) {\r
+// nameComposite.setDraggable(false);\r
+ nameComposite.setDraggable(true);\r
nameComposite.setIcon(NameComposite.ACCEPTED_ICON);\r
nameComposite.setFont(NameComposite.ACCEPTED_FONT);\r
nameComposite.setIndent(NameComposite.ACCEPTED_INDENT);\r
misappliedNameGroupComposite = parent;\r
}\r
NameComposite nameComposite = createNameComposite(parent, null);\r
- return createMisappliedNameComposite(nameComposite);\r
+ return transformMisappliedNameComposite(nameComposite);\r
}\r
- \r
- public NameComposite createMisappliedNameComposite(NameComposite nameComposite) {\r
+\r
+ public NameComposite transformMisappliedNameComposite(NameComposite nameComposite) {\r
nameComposite.setDraggable(true);\r
nameComposite.setIcon(NameComposite.MISAPPLIEDNAME_ICON);\r
nameComposite.setFont(NameComposite.MISAPPLIEDNAME_FONT);\r
nameComposite.setIndent(NameComposite.MISAPPLIEDNAME_INDENT);\r
+ \r
+ Menu menu = nameComposite.getMenu();\r
+ clearMenu(menu);\r
+ \r
return nameComposite;\r
- } \r
+ }\r
\r
public NameComposite createHomotypicSynonymComposite(Composite parent, TaxonBase data) {\r
NameComposite nameComposite = createSynonymComposite(parent, data);\r
- return createHomotypicSynonymComposite(nameComposite);\r
+ return transformHomotypicSynonymComposite(nameComposite);\r
}\r
\r
- public NameComposite createHomotypicSynonymComposite(NameComposite nameComposite) {\r
- nameComposite.setIcon(NameComposite.HOMOTYPIC_SYNONYM_ICON);\r
- return nameComposite;\r
+ public NameComposite transformHomotypicSynonymComposite(NameComposite nameComposite) {\r
+ if (nameComposite.getData() instanceof Synonym && \r
+ ((Synonym) nameComposite.getData()).getName().isOriginalCombination()) {\r
+ nameComposite.setIcon(NameComposite.HOMOTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON);\r
+ } else {\r
+ nameComposite.setIcon(NameComposite.HOMOTYPIC_SYNONYM_ICON); \r
+ }\r
+ return transformSynonymComposite(nameComposite);\r
}\r
\r
public NameComposite createHeterotypicSynonymComposite(Composite parent, TaxonBase data) {\r
NameComposite nameComposite = createSynonymComposite(parent, data);\r
- return createHeterotypicSynonymComposite(nameComposite);\r
+ return transformHeterotypicSynonymComposite(nameComposite);\r
}\r
\r
- public NameComposite createHeterotypicSynonymComposite(NameComposite nameComposite) {\r
- nameComposite.setIcon(NameComposite.HETEROTYPIC_SYNONYM_ICON);\r
- return nameComposite;\r
+ public NameComposite transformHeterotypicSynonymComposite(NameComposite nameComposite) {\r
+ if (nameComposite.getData() instanceof Synonym && \r
+ ((Synonym) nameComposite.getData()).getName().isOriginalCombination()) {\r
+ nameComposite.setIcon(NameComposite.HETEROTYPIC_SYNONYM_ORIGINAL_COMBINATION_ICON);\r
+ } else {\r
+ nameComposite.setIcon(NameComposite.HETEROTYPIC_SYNONYM_ICON);\r
+ }\r
+ return transformSynonymComposite(nameComposite);\r
}\r
\r
private NameComposite createSynonymComposite(Composite parent, TaxonBase data) {\r
- NameComposite nameComposite = createNameComposite(parent, data);\r
+ NameComposite nameComposite = createNameComposite(parent, data); \r
+ return transformSynonymComposite(nameComposite);\r
+ }\r
+ \r
+ private NameComposite transformSynonymComposite(NameComposite nameComposite) {\r
nameComposite.setDraggable(true);\r
nameComposite.setFont(NameComposite.SYNONYM_FONT);\r
nameComposite.setIndent(NameComposite.SYNONYM_INDENT);\r
createSynonymMenu(nameComposite);\r
\r
return nameComposite;\r
- }\r
+ } \r
\r
private Menu createSynonymMenu(final NameComposite nameComposite) {\r
\r
Menu menu = nameComposite.getMenu();\r
+ clearMenu(menu);\r
\r
MenuItem menuItem = new MenuItem(menu, SWT.NONE);\r
menuItem.setImage(NameComposite.MISAPPLIEDNAME_ICON);\r
- menuItem.setText("Change to misapplied name");\r
+ menuItem.setText(Messages.getString("TaxonCompositeFactory.1")); //$NON-NLS-1$\r
menuItem.addSelectionListener(new SelectionAdapter() {\r
@Override\r
public void widgetSelected(SelectionEvent e) {\r
\r
-// Object data = nameComposite.getData();\r
-// \r
-// if (data instanceof Synonym) {\r
-// Synonym synonym = (Synonym) data;\r
-// TaxonNameBase name = synonym.getName();\r
-// \r
-// // Delete synonym from taxon\r
-// taxon.removeSynonym(synonym);\r
-// synonym.setName(null);\r
-// \r
-// // Use name to create new taxon\r
-// Taxon toTaxon = Taxon.NewInstance(name, null);\r
-// taxon.addMisappliedName(toTaxon, null, null);\r
-// \r
-// }\r
+ // Actions performed:\r
+ // 1) Change name composite to mis name composite\r
+ // 2) Delete synonym, add mis name to taxon\r
+ // Objects used:\r
+ // nameComposite\r
+ // taxon\r
+ // TaxonCompositeFactory\r
+ \r
+ Object data = nameComposite.getData();\r
+ \r
+ if (data instanceof Synonym) {\r
+ Synonym synonym = (Synonym) data;\r
+ TaxonNameBase<TaxonNameBase> name = synonym.getName();\r
+ \r
+ // Delete synonym from taxon\r
+ taxon.removeSynonym(synonym);\r
+ synonym.setName(null);\r
+ \r
+ // Use name to create new taxon\r
+ Taxon toTaxon = Taxon.NewInstance(name, null);\r
+ taxon.addMisappliedName(toTaxon, null, null);\r
+ \r
+ // Set composite data with new taxon\r
+ nameComposite.setData(toTaxon);\r
+ }\r
\r
Composite groupComposite = nameComposite.getParent();\r
Composite groupParentComposite = groupComposite.getParent();\r
if (misappliedNameGroupComposite == null) {\r
misappliedNameGroupComposite = createGroupComposite(groupParentComposite, null); \r
}\r
- createMisappliedNameComposite(nameComposite).setParent(misappliedNameGroupComposite);\r
+ transformMisappliedNameComposite(nameComposite).setParent(misappliedNameGroupComposite);\r
} \r
});\r
+\r
+ MenuItem menuItem2 = new MenuItem(menu, SWT.NONE);\r
+ menuItem2.setImage(NameComposite.BASIONYM_ICON);\r
+ menuItem2.setText("Set as basionym");\r
+ menuItem2.addSelectionListener(new SelectionAdapter() {\r
+ @Override\r
+ public void widgetSelected(SelectionEvent e) {\r
+ \r
+ }\r
+ });\r
\r
return menu;\r
}\r
\r
+ private Menu createAcceptedMenu(final NameComposite nameComposite) {\r
+ \r
+ Menu menu = nameComposite.getMenu();\r
+ clearMenu(menu);\r
+ \r
+ MenuItem menuItem = new MenuItem(menu, SWT.NONE);\r
+ menuItem.setImage(NameComposite.AUTONYM_ICON);\r
+ menuItem.setText("Create autonym and subspecies"); //$NON-NLS-1$\r
+ menuItem.addSelectionListener(new SelectionAdapter() {\r
+ @Override\r
+ public void widgetSelected(SelectionEvent e) {\r
+ \r
+ }\r
+ });\r
+ \r
+ MenuItem menuItem2 = new MenuItem(menu, SWT.NONE);\r
+ menuItem2.setImage(NameComposite.MOVE);\r
+ menuItem2.setText("Change this taxon to a synonym"); //$NON-NLS-1$\r
+ menuItem2.addSelectionListener(new SelectionAdapter() {\r
+ @Override\r
+ public void widgetSelected(SelectionEvent e) {\r
+ Shell shell = TaxEditorPlugin.getDefault().getWorkbench().getDisplay().getShells()[0];\r
+ new MoveDialogView(shell); \r
+ MoveDialogView dialog = new MoveDialogView(shell);\r
+ dialog.open(taxon); \r
+ }\r
+ });\r
+ \r
+ return menu;\r
+ } \r
+ \r
private NameViewer createNameViewer(final NameComposite nameComposite, final TaxonBase data) {\r
final NameViewer nameViewer = new NameViewer(nameComposite);\r
\r
TaxonNameParserBotanicalNameImpl parser = TaxonNameParserBotanicalNameImpl.NewInstance();\r
BotanicalName name = parser.parseFullReference(text, null);\r
//BotanicalName.PARSED_NAME(text);\r
- \r
- \r
+ \r
SynonymRelationship synonymRelation = taxon.addHeterotypicSynonymName(name);\r
Synonym synonym = synonymRelation.getSynonym();\r
GroupComposite newGroupComposite = createGroupComposite(parent, synonym.getName().getHomotypicalGroup());\r
// TODO add warning that border support can't be added without a managed form \r
}\r
}\r
+ \r
+ private void clearMenu(Menu menu) {\r
+ for (MenuItem menuItem : menu.getItems()) {\r
+ menuItem.dispose();\r
+ }\r
+ }\r
}
\ No newline at end of file
--- /dev/null
+TaxonCompositeFactory.1=Change to misapplied name\r
--- /dev/null
+package eu.etaxonomy.taxeditor.view.propertysheetsupport;\r
+\r
+import java.util.HashSet;\r
+import java.util.Set;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.core.databinding.beans.BeansObservables;\r
+import org.eclipse.core.databinding.observable.list.WritableList;\r
+import org.eclipse.core.databinding.observable.map.IObservableMap;\r
+import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;\r
+import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;\r
+import org.eclipse.jface.viewers.TableViewer;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.MouseAdapter;\r
+import org.eclipse.swt.events.MouseEvent;\r
+import org.eclipse.swt.layout.FillLayout;\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.Label;\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.common.Annotation;\r
+\r
+public class AnnotationsDialog extends Dialog {\r
+ private Text text;\r
+ private Table table;\r
+ private static final Logger logger = Logger\r
+ .getLogger(AnnotationsDialog.class);\r
+ protected Object result;\r
+ protected Shell shell;\r
+ \r
+ private WritableList list = new WritableList();\r
+\r
+ /**\r
+ * Create the dialog\r
+ * @param parent\r
+ * @param style\r
+ */\r
+ public AnnotationsDialog(Shell parent, int style) {\r
+ super(parent, style);\r
+ }\r
+\r
+ /**\r
+ * Create the dialog\r
+ * @param parent\r
+ */\r
+ public AnnotationsDialog(Shell parent) {\r
+ this(parent, SWT.NONE);\r
+ }\r
+\r
+ public AnnotationsDialog(Shell parent, Set<Annotation> annotations) {\r
+ this(parent, SWT.NONE);\r
+ for (Annotation annotation : annotations) {\r
+ list.add(annotation);\r
+ }\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
+ shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);\r
+ shell.setLayout(new FillLayout());\r
+ shell.setSize(500, 375);\r
+ shell.setText("Annotations");\r
+ \r
+ final Composite composite = new Composite(shell, SWT.NONE);\r
+ final GridLayout gridLayout = new GridLayout();\r
+ gridLayout.numColumns = 3;\r
+ composite.setLayout(gridLayout);\r
+\r
+ text = new Text(composite, SWT.BORDER);\r
+ text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));\r
+\r
+ final Button addButton = new Button(composite, SWT.NONE);\r
+ addButton.setLayoutData(new GridData());\r
+ addButton.setText("Add");\r
+ addButton.addMouseListener(new MouseAdapter() {\r
+ @Override\r
+ public void mouseDown(MouseEvent e) {\r
+ Annotation annotation = Annotation.NewInstance(text.getText(), null);\r
+ list.add(annotation);\r
+ text.setText("");\r
+ }\r
+ });\r
+\r
+ final TableViewer tableViewer = new TableViewer(composite, SWT.BORDER);\r
+ table = tableViewer.getTable();\r
+ table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));\r
+ table.setLinesVisible(false);\r
+ table.setHeaderVisible(false);\r
+ new Label(composite, SWT.NONE);\r
+\r
+ ObservableListContentProvider providerList = new ObservableListContentProvider();\r
+ tableViewer.setContentProvider(providerList);\r
+ \r
+ IObservableMap[] providerMaps = BeansObservables.observeMaps(\r
+ providerList.getKnownElements(), Annotation.class, new String[]{"text"});\r
+ tableViewer.setLabelProvider(new ObservableMapLabelProvider(providerMaps));\r
+ tableViewer.setInput(list);\r
+\r
+ final Button cancelButton = new Button(composite, SWT.NONE);\r
+ cancelButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));\r
+ cancelButton.setText("Cancel");\r
+ cancelButton.addMouseListener(new MouseAdapter() {\r
+ @Override\r
+ public void mouseUp(MouseEvent e) {\r
+ shell.dispose();\r
+ }\r
+ });\r
+ \r
+ final Button okButton = new Button(composite, SWT.NONE);\r
+ final GridData gd_okButton = new GridData();\r
+ okButton.setLayoutData(gd_okButton);\r
+ okButton.setText("OK");\r
+ okButton.addMouseListener(new MouseAdapter() {\r
+ @Override\r
+ public void mouseUp(MouseEvent e) {\r
+ result = new HashSet(list);\r
+ shell.dispose();\r
+ }\r
+ });\r
+ }\r
+}
\ No newline at end of file
--- /dev/null
+package eu.etaxonomy.taxeditor.view.propertysheetsupport;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.jface.viewers.CellEditor;\r
+import org.eclipse.jface.viewers.CheckboxCellEditor;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.ui.views.properties.PropertyDescriptor;\r
+\r
+public class CheckboxPropertyDescriptor extends PropertyDescriptor {\r
+ private static final Logger logger = Logger\r
+ .getLogger(CheckboxPropertyDescriptor.class);\r
+ \r
+ public CheckboxPropertyDescriptor(Object id, String displayName) {\r
+ super(id, displayName);\r
+ }\r
+\r
+ /* (non-Javadoc)\r
+ * @see\r
+ org.eclipse.ui.views.properties.IPropertyDescriptor#createPropertyEditor(org.eclipse.swt.widgets.Composite)\r
+ */\r
+ public CellEditor createPropertyEditor(Composite parent) {\r
+ CellEditor editor = new CheckboxCellEditor(parent);\r
+ if (getValidator() != null) {\r
+ editor.setValidator(getValidator());\r
+ }\r
+ return editor;\r
+ }\r
+}\r
--- /dev/null
+\r
+package eu.etaxonomy.taxeditor.view.propertysheetsupport;\r
+\r
+import java.util.Collection;\r
+\r
+import org.apache.log4j.Logger;\r
+\r
+import eu.etaxonomy.cdm.model.common.Marker;\r
+import eu.etaxonomy.cdm.model.common.MarkerType;\r
+\r
+public class MarkersPropertySource extends CollectionPropertySource {\r
+ private static final Logger logger = Logger\r
+ .getLogger(MarkersPropertySource.class);\r
+\r
+\r
+ public MarkersPropertySource(Collection collection) {\r
+ super(collection);\r
+// logger.warn("Markers collection contains " + collection.size() + " elements.");\r
+ }\r
+\r
+ protected void addDescriptor(Object item) {\r
+ String itemDisplayName = getItemDisplayName(item);\r
+ descriptors.addElement(\r
+ new CheckboxPropertyDescriptor(item, itemDisplayName));\r
+ }\r
+ \r
+ @Override\r
+ protected String getItemDisplayName(Object item) {\r
+ String itemDisplayName = "";\r
+ if (item instanceof Marker) {\r
+ Marker marker = (Marker) item;\r
+ MarkerType markerType = marker.getMarkerType();\r
+ if (markerType != null) {\r
+ return markerType.getLabel();\r
+ }\r
+ }\r
+ return itemDisplayName;\r
+ }\r
+\r
+ @Override\r
+ public Object getPropertyValue(Object id) {\r
+ if (id instanceof Marker) {\r
+ Marker marker = (Marker) id;\r
+ if (marker.getFlag()) {\r
+ return Boolean.TRUE;\r
+ } else {\r
+ return Boolean.FALSE;\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public void setPropertyValue(Object id, Object value) {\r
+ if (id instanceof Marker && value instanceof Boolean) {\r
+ logger.warn("Updating marker values");\r
+ Marker marker = (Marker) id;\r
+ marker.setFlag((Boolean) value);\r
+ } else {\r
+ logger.warn("Marker update failed type checks"); \r
+ }\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ // "Markers" header has no value\r
+ return "";\r
+ }\r
+}
\ No newline at end of file
public Object getPropertyValue(Object id) {\r
if (id instanceof NameRelationship) {\r
TaxonNameBase<TaxonNameBase> relatedName;\r
+ String nameValue;\r
if (((NameRelationship) id).getFromName().equals(name)) {\r
relatedName = ((NameRelationship) id).getToName();\r
+ nameValue = "to " + relatedName.getTitleCache();\r
} else {\r
relatedName = ((NameRelationship) id).getFromName();\r
+ nameValue = relatedName.getTitleCache();\r
}\r
- return (relatedName.getTitleCache());\r
+ return nameValue;\r
}\r
return null;\r
}\r
+/**\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.view.propertysheetsupport;\r
\r
import java.beans.PropertyChangeEvent;\r
import java.beans.PropertyChangeListener;\r
+import java.beans.PropertyChangeSupport;\r
import java.util.ArrayList;\r
import java.util.Date;\r
import java.util.List;\r
import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.taxeditor.Activator;\r
+import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
\r
/**\r
* @author p.ciardelli\r
public class NonViralNamePropertySource implements IPropertySource {\r
private static final Logger logger = Logger\r
.getLogger(NonViralNamePropertySource.class);\r
+\r
+ // The name whose properties are being displayed\r
+ NonViralName name;\r
+ \r
+ PropertyChangeSupport propertyChangeSupport;\r
\r
// Property unique keys\r
public static final String P_ID_PARSED = "parsed";\r
public static final String P_ID_HOMOTYPICALGROUP = "homogroup";\r
public static final String P_ID_AUTHORSHIPCACHE = "authorshipcache";\r
public static final String P_ID_NAMERELATIONS = "namerelations";\r
+ public static final String P_ID_TYPE = "type";\r
public static final String P_ID_ANNOTATIONS = "annotations";\r
public static final String P_ID_NOMSTATUS = "nomstatus";\r
public static final String P_ID_UUID = "uuid"; \r
public static final String P_ID_MARKERS = "markers";\r
public static final String P_ID_CREATED = "created";\r
public static final String P_ID_CREATEDBY = "createdby";\r
-\r
+ public static final String P_ID_NOMENCLATURALCODE = "nomenclaturalcode";\r
+ public static final String P_ID_NOMENCLATURAL_REF = "nomenclaturalref";\r
+ public static final String P_ID_NOMENCLATURAL_MICROREF = "nomenclaturalmicroref";\r
+ \r
// Property display keys\r
// Note: for an explanation of the sorting prefixes ("04:"), \r
// @see eu.etaxonomy.taxeditor.view.propertysheetsupport.CustomSortPropertySheetEntry\r
public static final String P_PARSED = "00:Parsing Status";\r
- public static final String P_RANK = "08:Rank";\r
- public static final String P_TITLECACHE = "01:Title Cache";\r
- public static final String P_UNINOMIAL = "02:Uninomial";\r
- public static final String P_INFRAGENERICEP = "03:Infrageneric Epithet";\r
- public static final String P_SPECIESEP = "04:Specific Epithet";\r
- public static final String P_INFRASPECIFICEP = "05:Infraspecific Epithet";\r
- public static final String P_APPENDEDPHRASE = "07:Appended Phrase";\r
+ public static final String P_RANK = "02:Rank";\r
+ public static final String P_TITLECACHE = "03:Title Cache";\r
+ public static final String P_UNINOMIAL = "04:Uninomial";\r
+ public static final String P_INFRAGENERICEP = "05:Infrageneric Epithet";\r
+ public static final String P_SPECIESEP = "06:Specific Epithet";\r
+ public static final String P_INFRASPECIFICEP = "07:Infraspecific Epithet";\r
+ public static final String P_APPENDEDPHRASE = "09:Appended Phrase";\r
public static final String P_HOMOTYPICALGROUP = "09:Homotypical Group";\r
- public static final String P_AUTHORSHIPCACHE = "06:Authorship";\r
+ public static final String P_AUTHORSHIPCACHE = "08:Authorship";\r
public static final String P_NAMERELATIONS = "11:Name Relations";\r
- public static final String P_ANNOTATIONS = "10:Annotations";\r
- public static final String P_NOMSTATUS = "11:Nomenclatural Status";\r
- public static final String P_UUID = "11:UUID";\r
+ public static final String P_TYPE = "12:Type";\r
+ public static final String P_ANNOTATIONS = "14:Annotations";\r
+ public static final String P_NOMSTATUS = "10:Nomenclatural Status";\r
+ public static final String P_UUID = "01:UUID";\r
public static final String P_NUM_OF_BASES = "12:Number of Bases";\r
- public static final String P_MARKERS = "12:Markers";\r
- public static final String P_CREATED = "98:Created";\r
- public static final String P_CREATEDBY = "99:Created By"; \r
+ public static final String P_MARKERS = "13:Markers";\r
+ public static final String P_CREATED = "15:Created";\r
+ public static final String P_CREATEDBY = "16:Created By";\r
+ public static final String P_NOMENCLATURALCODE = "02:Nomenclatural Code";\r
+ public static final String P_NOMENCLATURAL_REF = "09:Nomenclatural Reference";\r
+ public static final String P_NOMENCLATURAL_MICROREF = "10:Nomenclatural Micro Reference";\r
\r
- OrderedTermVocabulary<Rank> rankVocabulary = Activator.getDefault().getRankVocabulary();\r
+ protected static final String[] TOP_LEVEL_PROPERTIES = new String[] {P_ID_PARSED, P_ID_RANK, P_ID_TITLECACHE, \r
+ P_ID_ANNOTATIONS, P_ID_NOMSTATUS, P_ID_NAMERELATIONS, P_ID_UUID, P_ID_NOMENCLATURAL_REF,\r
+ P_ID_TYPE, P_ID_CREATED, P_ID_CREATEDBY, P_ID_NOMENCLATURALCODE }; \r
+ \r
+ // ***********************************************************\r
+ // RANKS\r
+ // ***********************************************************\r
+ static OrderedTermVocabulary<Rank> rankVocabulary = TaxEditorPlugin.getDefault().getRankVocabulary();\r
static Rank[] ranks = null;\r
static String[] P_RANK_MENU = null;\r
private static void populateRanks() {\r
\r
// Get terms from rank vocabulary\r
List<Rank> ranksList = new ArrayList<Rank>();\r
- ranksList.addAll(Activator.getDefault().getRankVocabulary().getTerms());\r
- \r
+ ranksList.addAll(rankVocabulary.getTerms());\r
+ \r
// Populate ranks menu labels \r
List<String> ranksMenuList = new ArrayList<String>();\r
for (Rank rank : ranksList) {\r
\r
// Convert rank lists to array\r
ranks = ranksList.toArray(new Rank[ranksList.size()]);\r
- P_RANK_MENU = ranksMenuList.toArray(new String[ranksMenuList.size()]); \r
- \r
+ P_RANK_MENU = ranksMenuList.toArray(new String[ranksMenuList.size()]); \r
}\r
\r
- NonViralName name;\r
+ static String[] P_NOMENCLATURALCODE_MENU = new String[] { "ICBN", "ICZN" };\r
+\r
+ // ***********************************************************\r
+ // NOMENCLATURAL STATUS\r
+ // ***********************************************************\r
+// static OrderedTermVocabulary<NomenclaturalStatusType> nomStatusVocabulary = \r
+// TaxEditorPlugin.getDefault().getNomStatusVocabulary();\r
+// static NomenclaturalStatusType[] nomStatusTypes = null;\r
+// static String[] P_NOMSTATUS_MENU = null;\r
+// private static void populateNomStatusTypes() {\r
+// \r
+// // Get terms from nom status vocabulary\r
+// List<NomenclaturalStatusType> nomStatusTypesList = new ArrayList<NomenclaturalStatusType>();\r
+// nomStatusTypesList.addAll(TaxEditorPlugin.getDefault().getNomStatusVocabulary().getTerms());\r
+// \r
+//// // Populate nom status type menu labels \r
+// List<String> nomStatusTypesMenuList = new ArrayList<String>();\r
+// for (NomenclaturalStatusType nomStatusType : nomStatusTypesList) {\r
+// nomStatusTypesMenuList.add(nomStatusType.getLabel());\r
+// }\r
+// \r
+// // Add an empty element for "nothing selected" in the rank drop-down \r
+// nomStatusTypesList.add(0, null);\r
+// nomStatusTypesMenuList.add(0, "");\r
+// \r
+// // Convert rank lists to array\r
+// nomStatusTypes = nomStatusTypesList.toArray(new NomenclaturalStatusType[nomStatusTypesList.size()]);\r
+// P_NOMSTATUS_MENU = nomStatusTypesMenuList.toArray(new String[nomStatusTypesMenuList.size()]); \r
+// } \r
+ \r
+ // If this is a property with a parent, the parent's ID\r
private String parentid;\r
\r
protected Vector<PropertyDescriptor> descriptors = new Vector<PropertyDescriptor>();\r
* @param id\r
*/\r
private void addDescriptor(String id) {\r
+ name.getNomenclaturalMicroReference();\r
+ name.getNomenclaturalReference();\r
if (id.equals(P_ID_PARSED)) {\r
descriptors.addElement(\r
new PropertyDescriptor(P_ID_PARSED, P_PARSED));\r
descriptors.addElement(\r
new PropertyDescriptor(P_ID_NAMERELATIONS, P_NAMERELATIONS));\r
}\r
+ if (id.equals(P_ID_TYPE)) {\r
+ descriptors.addElement(\r
+ new PropertyDescriptor(P_ID_TYPE, P_TYPE));\r
+ }\r
if (id.equals(P_ID_ANNOTATIONS)) {\r
descriptors.addElement(\r
new PropertyDescriptor(P_ID_ANNOTATIONS, P_ANNOTATIONS) {\r
descriptors.addElement(\r
new PropertyDescriptor(P_ID_CREATEDBY, P_CREATEDBY));\r
}\r
+ if (id.equals(P_ID_NOMENCLATURALCODE)) {\r
+ descriptors.addElement(\r
+ new ComboBoxPropertyDescriptor(P_ID_NOMENCLATURALCODE, P_NOMENCLATURALCODE, P_NOMENCLATURALCODE_MENU));\r
+ }\r
+ if (id.equals(P_ID_NOMENCLATURAL_REF)) {\r
+ descriptors.addElement(\r
+ new TextPropertyDescriptor(P_ID_NOMENCLATURAL_REF, P_NOMENCLATURAL_REF));\r
+ }\r
+ if (id.equals(P_ID_NOMENCLATURAL_MICROREF)) {\r
+ descriptors.addElement(\r
+ new TextPropertyDescriptor(P_ID_NOMENCLATURAL_MICROREF,P_NOMENCLATURAL_MICROREF));\r
+ }\r
}\r
\r
private PropertyChangeListener taxonChangeListener = new PropertyChangeListener() {\r
* @param name\r
*/\r
public NonViralNamePropertySource(NonViralName name) {\r
- this(name, null, new String[] {P_ID_PARSED, P_ID_RANK, P_ID_TITLECACHE, \r
- P_ID_HOMOTYPICALGROUP, P_ID_ANNOTATIONS, P_ID_NOMSTATUS, P_ID_NAMERELATIONS, P_ID_UUID, \r
- P_ID_MARKERS, P_ID_NUM_OF_BASES, P_ID_CREATED, P_ID_CREATEDBY });\r
+ this(name, null, TOP_LEVEL_PROPERTIES);\r
}\r
\r
public NonViralNamePropertySource(NonViralName name, \r
String parentid, String[] keys) {\r
this.name = name;\r
this.parentid = parentid;\r
+ this.propertyChangeSupport = new PropertyChangeSupport(name);\r
for (String key : keys) {\r
addDescriptor(key);\r
addPropertyChangeListener(key);\r
}\r
if (id.equals(P_ID_TITLECACHE)) {\r
\r
- // The fields displayed under the title cache are dependent on rank.\r
-// List<String> nameFields = new ArrayList<String>();\r
-// nameFields.add(P_ID_UNINOMIAL);\r
-// nameFields.add(P_ID_SPECIESEP);\r
-// String[] nameFields = null;\r
-// if (name.isSupraGeneric() || name.isGenus()) { // Rank is higher than GENUS or equals GENUS\r
-// nameFields = new String[] {P_ID_UNINOMIAL, P_ID_AUTHORSHIPCACHE};\r
-// }\r
-// else if (name.isInfraGeneric()) { // lower than GENUS and higher than SPECIES\r
-// nameFields = new String[] {P_ID_UNINOMIAL, P_ID_INFRAGENERICEP, P_ID_AUTHORSHIPCACHE};\r
-// } \r
-// else if (name.isSpecies()) { // Rank equals SPECIES\r
-// nameFields = new String[] {P_ID_UNINOMIAL, P_ID_SPECIESEP, P_ID_AUTHORSHIPCACHE};\r
-// }\r
-// else if (name.isInfraSpecific()) { // Rank is lower than SPECIES\r
-// nameFields = new String[] {P_ID_UNINOMIAL, P_ID_SPECIESEP, P_ID_INFRASPECIFICEP, P_ID_AUTHORSHIPCACHE};\r
-// } else {\r
-// nameFields = new String[] {P_ID_UNINOMIAL, P_ID_SPECIESEP, P_ID_AUTHORSHIPCACHE};\r
-// }\r
- // TODO put this in a method to be extended by bot / zoo names\r
-\r
- return new NonViralNamePropertySource(name, P_ID_TITLECACHE, getNameFields());\r
+ // If the name has not been parsed, only show the title cache\r
+// if (name.getHasProblem()) {\r
+ if (name.getRank() == null) {\r
+ return subEmptyForNull(name.getTitleCache());\r
+ } else {\r
+ return new NonViralNamePropertySource(name, P_ID_TITLECACHE, getNameFields());\r
+ }\r
}\r
if (id.equals(P_ID_UNINOMIAL)) {\r
return subEmptyForNull(name.getGenusOrUninomial());\r
if (id.equals(P_ID_NAMERELATIONS)) {\r
return new NameRelationsPropertySource(name, name.getNameRelations());\r
}\r
+ // TODO Button to link to type module\r
+ if (id.equals(P_ID_TYPE)) {\r
+ return "";\r
+ }\r
if (id.equals(P_ID_UUID)) {\r
return subEmptyForNull(name.getUuid().toString());\r
}\r
return subEmptyForNull(name.getCreatedBy().generateTitle());\r
}\r
}\r
+ if (id.equals(P_ID_NOMENCLATURALCODE)) {\r
+ // TODO put in logic "if BotanicalName / ZoologicalName ..."\r
+ return 0;\r
+ }\r
+ if (id.equals(P_ID_NOMENCLATURAL_REF)) {\r
+ INomenclaturalReference nomenclaturalReference = (INomenclaturalReference) name.getNomenclaturalReference();\r
+ if (nomenclaturalReference == null) {\r
+ return "";\r
+ }\r
+ return subEmptyForNull(nomenclaturalReference.getNomenclaturalCitation());\r
+ }\r
+ if (id.equals(P_ID_NOMENCLATURAL_MICROREF)) {\r
+ return subEmptyForNull(name.getNomenclaturalMicroReference());\r
+ }\r
return null;\r
}\r
-\r
+ \r
+ /**\r
+ * The fields displayed under the title cache are dependent on rank.\r
+ * \r
+ * @return\r
+ */\r
private String[] getNameFields() {\r
+ \r
+ // An unparsed name has no name fields, only a cache\r
+// if (name.getHasProblem()) {\r
+ if (name.getRank() == null) {\r
+ return null;\r
+ }\r
+ \r
List<String> nameFields = new ArrayList<String>();\r
nameFields.add(P_ID_UNINOMIAL);\r
if (name.isSupraGeneric() || name.isGenus()) { // Rank is higher than GENUS or equals GENUS\r
*/\r
@Override\r
public void setPropertyValue(Object id, Object value) {\r
+ // TODO every time property value is set, refire property sheet\r
+ this.propertyChangeSupport.firePropertyChange(new PropertyChangeEvent(name, (String) id, null, value));\r
if (id.equals(P_ID_RANK)) {\r
int index = ((Integer) value).intValue();\r
name.setRank(ranks[index]);\r
if (id.equals(P_ID_MARKERS)) {\r
// TODO set markers\r
}\r
+ if (id.equals(P_ID_NOMENCLATURALCODE)) {\r
+ // TODO decide if this is editable at all, and if so, how to implement\r
+ }\r
+ if (id.equals(P_ID_NOMENCLATURAL_REF)) {\r
+ // TODO ask Andreas M. how best to set nom. ref\r
+ }\r
+ if (id.equals(P_ID_NOMENCLATURAL_MICROREF)) {\r
+ // TODO decide if this is editable at all, and if so, how to implement\r
+ }\r
}\r
\r
/** \r
return name.getTitleCache(); \r
return super.toString();\r
}\r
+ \r
+ public void addPropertyChangeListener(\r
+ PropertyChangeListener listener) {\r
+ this.propertyChangeSupport.addPropertyChangeListener(listener);\r
+ }\r
}
\ No newline at end of file