.
authorp.ciardelli <p.ciardelli@localhost>
Mon, 19 May 2008 08:16:55 +0000 (08:16 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Mon, 19 May 2008 08:16:55 +0000 (08:16 +0000)
40 files changed:
.gitattributes
eclipseprojects/eu.etaxonomy.taxeditor/META-INF/MANIFEST.MF
eclipseprojects/eu.etaxonomy.taxeditor/icons/heterosyn_no_bg.gif
eclipseprojects/eu.etaxonomy.taxeditor/icons/heterosyn_original_no_bg.gif [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/icons/homosyn_original_no_bg.gif [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/Activator.java [deleted file]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/TaxEditorPlugin.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionAddQuickName.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionAddSynonymToTaxon.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionDeleteTaxon.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionMoveTaxon.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionOpenNameEditor.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionPopulatePropertySheet.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionRemoveTaxonFromTree.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/controller/ActionSaveTaxon.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/model/NameTreeContentProvider.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/EditorMasterDetailsBlock.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/FavoritesTableViewer.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/IterableSynonymyList.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/LeftPane.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/MoveDialogView.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/NameEditorPage.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/NameEditorView.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/NameEditorViewOld.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/NameListView.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/NameViewer.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/RecentNamesTableViewer.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/TaxonomicTreeViewer.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/UndoView.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/CompositeBorderDecorator.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/Messages.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/NameComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/SimpleSelectionProvider.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/TaxonCompositeFactory.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/messages.properties [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/AnnotationsDialog.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/CheckboxPropertyDescriptor.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/MarkersPropertySource.java [new file with mode: 0644]
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/NameRelationsPropertySource.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/NonViralNamePropertySource.java

index beaf4ceb66ffedc3a7dc1722d3099e8ec268e13b..7b72046d25d1f7dc85bd980e5f8b0d14c9034c70 100644 (file)
@@ -337,10 +337,12 @@ eclipseprojects/eu.etaxonomy.taxeditor/icons/form_banner.gif -text
 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
@@ -369,13 +371,13 @@ eclipseprojects/eu.etaxonomy.taxeditor/plugin.xml -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
@@ -422,16 +424,21 @@ eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewe
 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
index defa538a69761ecfb07ec1dac86493172b10bae1..37d3eaddd751aa0f3016ab06e691b8a3c6d506a5 100644 (file)
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
 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,
index 02a6d3811540500b0f46a264b44a107eb4bb9078..85e9b1d7548b8b10a77d570b1bf033ea2fcf5c9a 100644 (file)
Binary files a/eclipseprojects/eu.etaxonomy.taxeditor/icons/heterosyn_no_bg.gif and b/eclipseprojects/eu.etaxonomy.taxeditor/icons/heterosyn_no_bg.gif differ
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/icons/heterosyn_original_no_bg.gif b/eclipseprojects/eu.etaxonomy.taxeditor/icons/heterosyn_original_no_bg.gif
new file mode 100644 (file)
index 0000000..02a6d38
Binary files /dev/null and b/eclipseprojects/eu.etaxonomy.taxeditor/icons/heterosyn_original_no_bg.gif differ
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/icons/homosyn_original_no_bg.gif b/eclipseprojects/eu.etaxonomy.taxeditor/icons/homosyn_original_no_bg.gif
new file mode 100644 (file)
index 0000000..8d21d86
Binary files /dev/null and b/eclipseprojects/eu.etaxonomy.taxeditor/icons/homosyn_original_no_bg.gif differ
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/Activator.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/Activator.java
deleted file mode 100644 (file)
index d4e6c84..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-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
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/TaxEditorPlugin.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/TaxEditorPlugin.java
new file mode 100644 (file)
index 0000000..a450a08
--- /dev/null
@@ -0,0 +1,419 @@
+/**\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
index 80923bf08d97a358dfecd096fec9d5c6816fc2f8..625cb54e173cf701dda6209c18bb8c0713f35384 100644 (file)
@@ -6,7 +6,7 @@ import org.eclipse.ui.PlatformUI;
 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
@@ -37,7 +37,7 @@ public class ActionAddQuickName extends Action {
                \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
index 20197b4288adec0a20733fa14320fb3433008857..003274ed5ce5e7cd90c7daa77932f08d8985ccc6 100644 (file)
@@ -1,5 +1,15 @@
+/**\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
@@ -9,14 +19,20 @@ import eu.etaxonomy.cdm.model.taxon.Synonym;
 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
@@ -31,7 +47,9 @@ public class ActionAddSynonymToTaxon extends Action {
                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
index f5eb1bd15500a1a102a64a1067965d2078d7969b..07a30387e5c78e073bba895473ff0d5a4b30dd12 100644 (file)
@@ -18,6 +18,6 @@ public class ActionDeleteTaxon extends Action {
        }\r
        \r
        public void run() {\r
-//             Activator.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
+//             TaxEditorPlugin.getDefault().getCdmApp().getTaxonService().saveTaxon(taxon);\r
        }\r
 }\r
index 8303314928cc30f03ad48060ab554ab444a8859e..85283abdc23db92e92d3d08033f0de3c63141e44 100644 (file)
@@ -3,7 +3,7 @@ package eu.etaxonomy.taxeditor.controller;
 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
@@ -27,10 +27,10 @@ public class ActionMoveTaxon extends Action {
                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
index 2cf2c76e6889c60f66cc2f6343738d52bc5b65f5..f57dcd07c3b83dd6145fa396ec6b81ff9e9b1a2a 100644 (file)
@@ -8,7 +8,7 @@ import org.eclipse.ui.PlatformUI;
 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
@@ -48,8 +48,8 @@ public class ActionOpenNameEditor extends Action {
                // 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
@@ -57,7 +57,7 @@ public class ActionOpenNameEditor extends Action {
                \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
index 14acd9b7eb7163442cca8d302f58c0cad14d6a7d..d43dfb0fe42687573cbecf74b81b38bbec149f4c 100644 (file)
@@ -4,7 +4,7 @@ import org.eclipse.jface.action.Action;
 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
@@ -22,6 +22,6 @@ public class ActionPopulatePropertySheet extends Action {
        }\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
index 13b3b435a513bcb20285119d5ca9fb3ab1f8e7cc..12fdc04094a486b84c749d60ae2acb56b2924e39 100644 (file)
@@ -3,7 +3,7 @@ package eu.etaxonomy.taxeditor.controller;
 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
@@ -23,7 +23,7 @@ public class ActionRemoveTaxonFromTree extends Action {
        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
index 241876abcd45dda780a8f5dfc8680856bb3b608f..676f7ded58548389957b146e19109f3f1e979f6f 100644 (file)
@@ -4,7 +4,7 @@ import org.apache.log4j.Logger;
 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
@@ -26,16 +26,16 @@ public class ActionSaveTaxon extends Action {
                // 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
index 76b3c1b7aec74a8caabacc4778d7116143a38ec0..1ee2c0f07c0c04143c4671d721bf253c6f87feab 100644 (file)
@@ -1,7 +1,17 @@
+/**\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
@@ -18,6 +28,7 @@ import org.eclipse.jface.viewers.Viewer;
 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
@@ -26,13 +37,21 @@ import eu.etaxonomy.taxeditor.view.TaxonomicTreeViewer;
  *  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
@@ -61,7 +80,7 @@ public class NameTreeContentProvider extends ObservableListContentProvider
                                if (entry.isAddition()) {\r
                                        \r
                                        knownElements.add(entry.getElement());\r
-               \r
+                                                       \r
                                        ((TaxonomicTreeViewer) viewer).add(\r
                                                        ((Taxon) entry.getElement()).getTaxonomicParent(), \r
                                                        entry.getElement());\r
@@ -119,15 +138,12 @@ public class NameTreeContentProvider extends ObservableListContentProvider
                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
index 3d7c29c81bcb52aeb2c427c69f49cce912158d44..b88f2d6d652bb84868398943eb16ea3db2960b7a 100644 (file)
@@ -14,7 +14,7 @@ import org.eclipse.ui.forms.widgets.FormToolkit;
 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
@@ -84,7 +84,7 @@ public class EditorMasterDetailsBlock extends MasterDetailsBlock {
                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
@@ -94,8 +94,8 @@ public class EditorMasterDetailsBlock extends MasterDetailsBlock {
                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
index d2e5e8945aa4bd30b492d0be83062e5d5fa2940b..558b97a1e0de211ae966d8331bd29df7db828b8d 100644 (file)
@@ -19,7 +19,7 @@ import org.eclipse.swt.widgets.Composite;
 \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
@@ -54,7 +54,7 @@ public class FavoritesTableViewer extends TableViewer {
                });\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
@@ -82,7 +82,7 @@ public class FavoritesTableViewer extends TableViewer {
                        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
index 44011d1dbace1f5404bc390e8f258d65336a04b4..30c204fc99b61abdc1c53bc196b230f7e1e21ee2 100644 (file)
@@ -1,3 +1,11 @@
+/**\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
index 788fe75e74eb488a609d7496e4b63a3439587d76..e3126aa6b4ff38b6a4607cf8344d2f9a9c1901c7 100644 (file)
@@ -41,7 +41,7 @@ import org.eclipse.ui.part.ViewPart;
 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
@@ -112,13 +112,13 @@ public class LeftPane extends ViewPart {
                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
@@ -143,7 +143,7 @@ public class LeftPane extends ViewPart {
                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
index 8d0d68cae7475d08a550133f3a15fbbd5c37a408..5c1d71dd9f174059b5a17fd225f1df3f176a7221 100644 (file)
@@ -9,7 +9,6 @@ import org.eclipse.jface.viewers.DoubleClickEvent;
 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
@@ -31,7 +30,7 @@ import com.swtdesigner.ResourceManager;
 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
@@ -70,10 +69,10 @@ public class MoveDialogView extends Dialog {
                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
@@ -141,16 +140,30 @@ public class MoveDialogView extends Dialog {
                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
@@ -204,9 +217,11 @@ public class MoveDialogView extends Dialog {
        }\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
index d72109716128c0132ba85f903c1122e2aa81daad..2d49312313b96d57c7eca5ed30fa8b992b1c16d3 100644 (file)
@@ -44,8 +44,8 @@ public class NameEditorPage extends FormPage {
 \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
index 3bf615be8ae03e616c6b09dc37be9aa822c2e9de..b4b22888cd44f44e34596af965ed026d6777f0db 100644 (file)
@@ -1,3 +1,12 @@
+/**\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
@@ -6,6 +15,7 @@ import java.beans.PropertyChangeListener;
 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
@@ -29,10 +39,12 @@ import org.eclipse.ui.views.properties.PropertySheetPage;
 \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
@@ -41,8 +53,13 @@ import eu.etaxonomy.taxeditor.view.nameviewersupport.TaxonCompositeFactory;
 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
@@ -104,10 +121,16 @@ public class NameEditorView extends EditorPart implements IAdaptable {
        @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
@@ -116,8 +139,8 @@ public class NameEditorView extends EditorPart implements IAdaptable {
        \r
        @Override\r
        public boolean isDirty() {\r
-//             return dirty;\r
-               return true;\r
+               return dirty;\r
+//             return true;\r
        }\r
 \r
        @Override\r
@@ -128,16 +151,19 @@ public class NameEditorView extends EditorPart implements IAdaptable {
 \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
@@ -149,14 +175,19 @@ public class NameEditorView extends EditorPart implements IAdaptable {
                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
@@ -168,8 +199,10 @@ public class NameEditorView extends EditorPart implements IAdaptable {
                                        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
@@ -218,6 +251,52 @@ public class NameEditorView extends EditorPart implements IAdaptable {
 //             ("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
index 5cde0895ba4427195495715e5b865a406160eced..3fb2f9dbd270618bad42a22ea3f5e6c4ce1bdcc7 100644 (file)
@@ -53,7 +53,7 @@ import eu.etaxonomy.cdm.model.name.Rank;
 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
@@ -149,14 +149,14 @@ public class NameEditorViewOld extends EditorPart {
                \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
@@ -195,11 +195,11 @@ public class NameEditorViewOld extends EditorPart {
                        }\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
@@ -215,7 +215,7 @@ public class NameEditorViewOld extends EditorPart {
 \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
@@ -239,14 +239,14 @@ public class NameEditorViewOld extends EditorPart {
                                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
@@ -489,7 +489,7 @@ public class NameEditorViewOld extends EditorPart {
                                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
@@ -497,7 +497,7 @@ public class NameEditorViewOld extends EditorPart {
        \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
index 51411173abdd4ad282c2923c319e73312261326f..faafb799c9a813547cc0fb6da086421794a20ff1 100644 (file)
@@ -25,7 +25,7 @@ import org.eclipse.ui.part.ViewPart;
 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
@@ -76,13 +76,13 @@ public class NameListView extends ViewPart {
                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
@@ -109,7 +109,7 @@ public class NameListView extends ViewPart {
                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
index 5c7e86f4de7f7df29b69d2960ce901d90fbbf8b6..62daaa1a28d8d925eea74f28ad2416b5ad483860 100644 (file)
@@ -62,6 +62,8 @@ public class NameViewer extends SourceViewer {
 \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
index f6e4942b0debfc9f05344e9e97229fc5df502e7d..f4d5a932e20a36b7e27c4922a00d71d651996ce1 100644 (file)
@@ -13,7 +13,7 @@ import org.eclipse.swt.layout.GridData;
 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
@@ -45,7 +45,7 @@ public class RecentNamesTableViewer extends TableViewer {
                });\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
index f7a070ba7773e282c2684f1fc3554ffbfc1dd178..124e66d93ffcda033cbb4cd6e14038078c9d4894 100644 (file)
@@ -51,7 +51,7 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 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
@@ -394,7 +394,7 @@ public class TaxonomicTreeViewer extends TreeViewer {
                         */\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
@@ -412,7 +412,7 @@ public class TaxonomicTreeViewer extends TreeViewer {
                \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
index 4a138e1ca834f4f6fda9e2f47e01ebe36ce081f9..bf2341282c5e64fcf9c7006cebfccde3bc915029 100644 (file)
@@ -29,7 +29,7 @@ import org.eclipse.ui.part.ViewPart;
 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
@@ -79,7 +79,7 @@ public class UndoView extends ViewPart {
 \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
index 09de9781a2fa569546883598727aa5661fce1aec..abf6cb11129ad8da8f031b9a2b0676156e02509d 100644 (file)
@@ -1,3 +1,12 @@
+/**\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
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/Messages.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/Messages.java
new file mode 100644 (file)
index 0000000..1c16f65
--- /dev/null
@@ -0,0 +1,22 @@
+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
index 621f2ba6e065df71b275a19e3fb30c431bfe712f..d256dbfadbba6edd166a9604d2b7ef66668e5438 100644 (file)
@@ -1,5 +1,7 @@
 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
@@ -7,22 +9,30 @@ import org.eclipse.swt.widgets.Composite;
 \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
index eb73ee8d62b65a03976b0c5358a33cb36f639d41..9bbe6590c6c51a3d2da764c0f148e6ef19ecb770 100644 (file)
@@ -1,3 +1,12 @@
+/**\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
@@ -6,6 +15,11 @@ import org.eclipse.jface.viewers.ISelectionChangedListener;
 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
index eedf29fb257220a4418d5622844559a0ad919d64..bed407be5a0a55a0bfcd2a46b8f8409a444fba6e 100644 (file)
@@ -1,3 +1,12 @@
+/**\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
@@ -12,6 +21,7 @@ import org.eclipse.swt.events.SelectionEvent;
 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
@@ -22,9 +32,16 @@ import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
 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
@@ -43,18 +60,21 @@ public class TaxonCompositeFactory {
 \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
@@ -73,16 +93,17 @@ public class TaxonCompositeFactory {
                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
@@ -101,15 +122,15 @@ public class TaxonCompositeFactory {
                                                }\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
@@ -125,9 +146,31 @@ public class TaxonCompositeFactory {
                                        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
@@ -139,11 +182,15 @@ public class TaxonCompositeFactory {
        \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
@@ -155,39 +202,57 @@ public class TaxonCompositeFactory {
                        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
@@ -195,34 +260,45 @@ public class TaxonCompositeFactory {
                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
@@ -230,13 +306,54 @@ public class TaxonCompositeFactory {
                                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
@@ -256,8 +373,7 @@ public class TaxonCompositeFactory {
                                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
@@ -308,4 +424,10 @@ public class TaxonCompositeFactory {
                        // 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
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/messages.properties b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/nameviewersupport/messages.properties
new file mode 100644 (file)
index 0000000..92df44d
--- /dev/null
@@ -0,0 +1 @@
+TaxonCompositeFactory.1=Change to misapplied name\r
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/AnnotationsDialog.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/AnnotationsDialog.java
new file mode 100644 (file)
index 0000000..fd14b2e
--- /dev/null
@@ -0,0 +1,146 @@
+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
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/CheckboxPropertyDescriptor.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/CheckboxPropertyDescriptor.java
new file mode 100644 (file)
index 0000000..44a2c6c
--- /dev/null
@@ -0,0 +1,28 @@
+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
diff --git a/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/MarkersPropertySource.java b/eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/view/propertysheetsupport/MarkersPropertySource.java
new file mode 100644 (file)
index 0000000..4e09a60
--- /dev/null
@@ -0,0 +1,69 @@
+\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
index 723a097837b41e01505eaa2bf71475bb2c7ed12d..e8c2028919e7f82cd81ffe918f0815db0af015f6 100644 (file)
@@ -38,12 +38,15 @@ public class NameRelationsPropertySource extends CollectionPropertySource {
        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
index e9e00d9964551e42e485d67fa102c95bd553f9cd..75cfe19022b9450268c669941aec467eb87fb752 100644 (file)
@@ -1,8 +1,17 @@
+/**\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
@@ -25,7 +34,9 @@ import eu.etaxonomy.cdm.model.common.Annotation;
 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
@@ -35,6 +46,11 @@ import eu.etaxonomy.taxeditor.Activator;
 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
@@ -48,6 +64,7 @@ public class NonViralNamePropertySource implements IPropertySource {
        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
@@ -55,38 +72,52 @@ public class NonViralNamePropertySource implements IPropertySource {
        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
@@ -99,11 +130,40 @@ public class NonViralNamePropertySource implements IPropertySource {
                \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
@@ -125,6 +185,8 @@ public class NonViralNamePropertySource implements IPropertySource {
         * @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
@@ -172,6 +234,10 @@ public class NonViralNamePropertySource implements IPropertySource {
                        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
@@ -222,6 +288,18 @@ public class NonViralNamePropertySource implements IPropertySource {
                        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
@@ -248,15 +326,14 @@ public class NonViralNamePropertySource implements IPropertySource {
         * @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
@@ -291,28 +368,13 @@ public class NonViralNamePropertySource implements IPropertySource {
         }\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
@@ -344,6 +406,10 @@ public class NonViralNamePropertySource implements IPropertySource {
         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
@@ -367,10 +433,36 @@ public class NonViralNamePropertySource implements IPropertySource {
                        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
@@ -425,6 +517,8 @@ public class NonViralNamePropertySource implements IPropertySource {
         */\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
@@ -467,6 +561,15 @@ public class NonViralNamePropertySource implements IPropertySource {
         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
@@ -481,4 +584,9 @@ public class NonViralNamePropertySource implements IPropertySource {
                        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