/**\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
+ * 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.List;\r
-import java.util.ResourceBundle;\r
+import java.util.HashMap;\r
+import java.util.Locale;\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.FileLocator;\r
import org.eclipse.core.runtime.IPath;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.core.runtime.MultiStatus;\r
import org.eclipse.core.runtime.Path;\r
-import org.eclipse.jface.preference.IPreferenceStore;\r
-import org.eclipse.jface.preference.PreferenceConverter;\r
+import org.eclipse.core.runtime.Status;\r
+import org.eclipse.jface.dialogs.ErrorDialog;\r
+import org.eclipse.jface.resource.FontRegistry;\r
import org.eclipse.jface.resource.ImageDescriptor;\r
import org.eclipse.jface.resource.ImageRegistry;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.graphics.Color;\r
+import org.eclipse.swt.graphics.Font;\r
+import org.eclipse.swt.graphics.FontData;\r
import org.eclipse.swt.graphics.Image;\r
-import org.eclipse.ui.forms.FormColors;\r
+import org.eclipse.swt.widgets.Display;\r
+import org.eclipse.swt.widgets.Tree;\r
import org.eclipse.ui.plugin.AbstractUIPlugin;\r
+import org.eclipse.ui.views.properties.PropertySheetPage;\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.database.ICdmDataSource;\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.name.TaxonNameBase;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
-\r
+import eu.etaxonomy.taxeditor.controller.GlobalController;\r
+import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;\r
+import eu.etaxonomy.taxeditor.datasource.CdmTransactionController;\r
+import eu.etaxonomy.taxeditor.model.CdmSessionDataRepository;\r
/**\r
* The class controlling the plug-in life cycle.\r
+ * </p>\r
+ * <ul>\r
+ * <li>Initializes datastore as necessary.</li>\r
+ * <li>Initializes CDM application controller.</li>\r
+ * <li>Initializes default preferences.</li>\r
+ * <li>Stores registries for colors, fonts, images.</li>\r
+ * </ul>\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
+ private static final Logger logger = Logger\r
+ .getLogger(TaxEditorPlugin.class);\r
\r
/**\r
* The plug-in ID\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
+ private static TaxEditorPlugin plugin;\r
+\r
+// private DbSchemaValidation dbSchemaValidation = DbSchemaValidation.VALIDATE;\r
+ private DbSchemaValidation dbSchemaValidation = DbSchemaValidation.UPDATE;\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
+ * \r
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)\r
*/\r
public void start(BundleContext context) throws Exception {\r
+ \r
super.start(context);\r
plugin = this;\r
+ \r
+ // Check whether this is the first time the application has ever been run\r
+ checkInitialExecution();\r
+ \r
+ // Initialize application controller\r
+ initApplicationController();\r
+ \r
+ // Start a transaction\r
+ CdmTransactionController.startTransaction();\r
+ \r
+ // Forgot what this is ...\r
+ Locale locale = new Locale("en", "", "icbn");\r
+ Locale.setDefault(locale);\r
}\r
\r
+ \r
/*\r
* (non-Javadoc)\r
+ * \r
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)\r
*/\r
public void stop(BundleContext context) throws Exception {\r
+ CdmTransactionController.commitTransaction();\r
plugin = null;\r
super.stop(context);\r
+ \r
+ disposeColors();\r
}\r
-\r
+ \r
/**\r
* Returns the shared instance\r
- *\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
+ private void checkInitialExecution() {\r
+ \r
+ // Check in the prefs store whether the application (i.e. its default\r
+ // data source) has been initialized\r
+ boolean initialized = false;\r
+ if (getPreferenceStore().contains(ITaxEditorConstants.INITIALIZED)) {\r
+ initialized = getPreferenceStore().getBoolean(\r
+ ITaxEditorConstants.INITIALIZED);\r
+ }\r
\r
- public CdmApplicationController getCdmApp() {\r
- return cdmApp;\r
+ // If not ...\r
+ if (!initialized) {\r
+ \r
+ // ... set validation to CREATE\r
+ logger.warn("Initializing datastore");\r
+ dbSchemaValidation = DbSchemaValidation.CREATE;\r
+ \r
+ // ... and note in prefs that application has been initialized\r
+ getPreferenceStore().setValue(ITaxEditorConstants.INITIALIZED, true);\r
+ }\r
}\r
+ \r
+ /***************************************************************************\r
+ * CDM SERVICES\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
+ * All CDM services are called via the application controller\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
+ private CdmApplicationController applicationController;\r
+\r
+ private CdmApplicationController initApplicationController() {\r
+ \r
+ // Get the "current" - i.e. most recently used - data source\r
+ ICdmDataSource cdmDatasource = CdmDataSourceRepository.getDefault().\r
+ getCurrentDataSource();\r
+ \r
+ // Initialize the controller with the data source\r
+ try {\r
+ applicationController = CdmApplicationController.NewInstance(cdmDatasource, dbSchemaValidation);\r
+ } catch (DataSourceNotFoundException e) {\r
+ // TODO user-friendly failure here\r
+ e.printStackTrace();\r
+ } catch (TermNotFoundException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
}\r
- return observableTaxonTreeList;\r
+ \r
+ // Set application controller for objects that use it \r
+ CdmTransactionController.setApplicationController(applicationController);\r
+ CdmDataSourceRepository.getDefault().setCdmApplicationController(applicationController);\r
+ CdmSessionDataRepository.getDefault().setApplicationController(applicationController);\r
+ \r
+// // Terms have to be initialized explicitly as of now\r
+// logger.warn("MAC Workaround enabled!!");\r
+// DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();\r
+// vocabularyStore.initialize();\r
+ \r
+ return applicationController;\r
}\r
\r
- public WritableList getObservableRecentNamesList() {\r
- if (observableRecentNamesList == null) {\r
- observableRecentNamesList = new WritableList();\r
+ public CdmApplicationController getApplicationController() {\r
+ if (applicationController == null) {\r
+ throw new IllegalStateException("CdmApplicationController not yet set.");\r
}\r
- return observableRecentNamesList;\r
+ return applicationController;\r
}\r
\r
+ /***************************************************************************\r
+ * IMAGE REGISTRY\r
+ **************************************************************************/\r
+ public ImageDescriptor getImageDescriptor(String key) {\r
+ return getImageRegistry().getDescriptor(key);\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
+ public Image getImage(String key) {\r
+ return getImageRegistry().get(key);\r
}\r
- \r
- /* ***************************************************************************************\r
- IMAGE REGISTRY\r
- ************************************************************************************** */\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
+ * Gets an image for the given URL. Adds the image to the registry as needed.\r
+ * \r
+ * @param url\r
+ * @return\r
*/\r
- public static ImageDescriptor getImageDescriptor(String path) {\r
- return imageDescriptorFromPlugin(PLUGIN_ID, path);\r
+ public Image getImage(URL url) { \r
+ \r
+ String key = url.toString();\r
+ ImageRegistry registry = getImageRegistry();\r
+\r
+ Image image = registry.get(key);\r
+ \r
+ if (image == null) {\r
+ ImageDescriptor desc = ImageDescriptor.createFromURL(url);\r
+ \r
+// logger.warn(ImageDescriptor.getMissingImageDescriptor().getClass());\r
+// logger.warn(desc.getClass());\r
+// \r
+// if (ImageDescriptor.getMissingImageDescriptor().equals(desc)) {\r
+// logger.warn("img not found");\r
+// }\r
+ \r
+ registry.put(key, desc);\r
+ try {\r
+ image = registry.get(key);\r
+ } catch (Exception e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+ \r
+ return image;\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
protected void initializeImageRegistry(ImageRegistry registry) {\r
- registerImage(registry, ITaxEditorConstants.ACCEPTED_TAXON_ICON, "accepted_small.gif"); //$NON-NLS-1$\r
- registerImage(registry, ITaxEditorConstants.HOMOTYPIC_SYN_ICON, "homosyn_no_bg.gif"); //$NON-NLS-1$\r
- registerImage(registry, ITaxEditorConstants.HOMOTYPIC_SYN_ORIGINAL_ICON, "homosyn_original_no_bg.gif"); //$NON-NLS-1$\r
- registerImage(registry, ITaxEditorConstants.HETEROTYPIC_SYN_ICON, "heterosyn_no_bg.gif"); //$NON-NLS-1$\r
- registerImage(registry, ITaxEditorConstants.HETEROTYPIC_SYN_ORIGINAL_ICON, "heterosyn_original_no_bg.gif"); //$NON-NLS-1$ \r
- registerImage(registry, ITaxEditorConstants.MISAPPLIED_NAME_ICON, "misapplied_no_bg.gif"); //$NON-NLS-1$\r
- registerImage(registry, ITaxEditorConstants.AUTONYM_ICON, "autonym_no_bg.gif"); //$NON-NLS-1$\r
- registerImage(registry, ITaxEditorConstants.BASIONYM_ICON, "basionym_no_bg.gif"); //$NON-NLS-1$\r
- registerImage(registry, ITaxEditorConstants.DB_ICON, "db.gif"); //$NON-NLS-1$\r
- registerImage(registry, ITaxEditorConstants.MOVE_ICON, "move_no_bg.gif"); //$NON-NLS-1$\r
+ registerImage(registry, ITaxEditorConstants.EDIT_ICON, "edit_16x16.ico");\r
+ registerImage(registry, ITaxEditorConstants.WARNING_ICON,\r
+ "warn_tsk.gif");\r
+ registerImage(registry, ITaxEditorConstants.BLACK_SQUARE_ICON,\r
+ "accepted_small.gif");\r
+ registerImage(registry, ITaxEditorConstants.HOMOTYPIC_SYN_ICON,\r
+ "homosyn_no_bg.gif");\r
+ registerImage(registry,\r
+ ITaxEditorConstants.HOMOTYPIC_SYN_ORIGINAL_ICON,\r
+ "homosyn_original_no_bg.gif");\r
+ registerImage(registry, ITaxEditorConstants.HETEROTYPIC_SYN_ICON,\r
+ "heterosyn_no_bg.gif");\r
+ registerImage(registry,\r
+ ITaxEditorConstants.HETEROTYPIC_SYN_ORIGINAL_ICON,\r
+ "heterosyn_original_no_bg.gif");\r
+ registerImage(registry, ITaxEditorConstants.MISAPPLIED_NAME_ICON,\r
+ "misapplied_no_bg.gif");\r
+ registerImage(registry, ITaxEditorConstants.CONCEPT_ICON,\r
+ "concept_no_bg.gif");\r
+ registerImage(registry, ITaxEditorConstants.AUTONYM_ICON,\r
+ "autonym_no_bg.gif");\r
+ registerImage(registry, ITaxEditorConstants.BASIONYM_ICON,\r
+ "basionym_no_bg.gif");\r
+ registerImage(registry, ITaxEditorConstants.ORTHOGRAPHIC_VARIANT_ICON,\r
+ "orthovariant_no_bg.gif");\r
+ registerImage(registry, ITaxEditorConstants.DB_ICON, "db.gif");\r
+ registerImage(registry, ITaxEditorConstants.MOVE_ICON,\r
+ "correction_change.gif");\r
+ registerImage(registry, ITaxEditorConstants.ACTIVE_DELETE_ICON,\r
+ "delete_edit.gif");\r
+ registerImage(registry, ITaxEditorConstants.SYNONYM_TO_TAXON_ICON,\r
+ "change.gif");\r
+ registerImage(registry, ITaxEditorConstants.OPEN_TAXON_ICON, "open.gif");\r
+ registerImage(registry, ITaxEditorConstants.ADD_CHILD_TAXON_ICON,\r
+ "new_child.gif");\r
+ registerImage(registry,\r
+ ITaxEditorConstants.SWAP_SYNONYM_AND_TAXON_ICON, "swap2.gif");\r
+ registerImage(registry, ITaxEditorConstants.QUICK_ADD_ICON,\r
+ "quick_add.gif");\r
+ registerImage(registry, ITaxEditorConstants.TAXON_TO_SYNONYM_ICON,\r
+ "tax_to_syn.gif");\r
+ registerImage(registry, ITaxEditorConstants.ERROR_ANNOTATION_ICON,\r
+ "error_co.gif");\r
+ registerImage(registry, ITaxEditorConstants.EDIT_BITMAP_ICON,\r
+ "256color_16x16.bmp");\r
}\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
+ URL url = FileLocator.find(getBundle(), path, null);\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
+ /***************************************************************************\r
+ * FONT REGISTRY\r
+ **************************************************************************/\r
+ private FontRegistry fontRegistry;\r
+\r
+ private FontRegistry getFontRegistry() {\r
+ if (fontRegistry == null) {\r
+ fontRegistry = new FontRegistry(Display.getCurrent());\r
+\r
+ fontRegistry.put(ITaxEditorConstants.DATASOURCE_FONT,\r
+ new FontData[] { new FontData("Arial", 8, SWT.NONE) });\r
+ fontRegistry.put(ITaxEditorConstants.MENU_ITEM_ITALICS_FONT,\r
+ new FontData[] { new FontData("Arial", 9, SWT.ITALIC) });\r
+ fontRegistry.put(ITaxEditorConstants.ACCEPTED_TAXON_FONT,\r
+ new FontData[] { new FontData("Georgia", 12, SWT.NONE) });\r
+ fontRegistry.put(ITaxEditorConstants.SYNONYM_FONT,\r
+ new FontData[] { new FontData("Georgia", 10, SWT.NONE) });\r
+ fontRegistry.put(ITaxEditorConstants.MISAPPLIEDNAME_FONT,\r
+ new FontData[] { new FontData("Georgia", 10, SWT.NONE) });\r
+ fontRegistry.put(ITaxEditorConstants.CONCEPT_FONT,\r
+ new FontData[] { new FontData("Georgia", 10, SWT.NONE) });\r
+ fontRegistry.put(ITaxEditorConstants.CHOOSE_NAME_TEXT_FONT,\r
+ new FontData[] { new FontData("Arial", 12, SWT.BOLD) });\r
+ fontRegistry.put(ITaxEditorConstants.DEFAULT_PROMPT_FONT,\r
+ new FontData[] { new FontData("Georgia", 10, SWT.ITALIC) }); \r
+ }\r
+ return fontRegistry;\r
+ }\r
\r
- /* ***************************************************************************************\r
- PREFERENCES\r
- ************************************************************************************** */\r
- protected void initializeDefaultPreferences(IPreferenceStore store) {\r
- logger.warn("setting default");\r
- store.setDefault(ITaxEditorConstants.CODE_PREFERENCE, ITaxEditorConstants.DEFAULT_CODE_PREFERENCE);\r
+ public Font getFont(String key) {\r
+ return getFontRegistry().get(key);\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
+ * @param font\r
+ */\r
+ public Font italicizeFont(Font font) {\r
+ FontData fontData = font.getFontData()[0];\r
+ fontData.setStyle(fontData.getStyle() | SWT.ITALIC);\r
+ Font italFont = new Font(Display.getDefault(), fontData);\r
+ \r
+ int i = 0;\r
+ String fontName = "italic";\r
+ Set keySet = fontRegistry.getKeySet();\r
+ while (keySet.contains(fontName + i)) {\r
+ i++;\r
+ }\r
+ fontRegistry.put(fontName + i, italFont.getFontData());\r
+ \r
+ return italFont;\r
}\r
+\r
+ /***************************************************************************\r
+ * COLOR MAP\r
+ **************************************************************************/\r
+ private static HashMap<String, Color> colorRegistry;\r
\r
- /* ***************************************************************************************\r
- RANKS\r
- ************************************************************************************** */ \r
- OrderedTermVocabulary<Rank> rankVocabulary = null;\r
+ public Color getColor(String key) {\r
+ return getColorRegistry().get(key);\r
+ }\r
\r
- public OrderedTermVocabulary<Rank> getRankVocabulary() {\r
- if (rankVocabulary == null) {\r
- rankVocabulary = cdmApp.getNameService().getRankVocabulary();\r
+ private HashMap<String, Color> getColorRegistry() {\r
+ if (colorRegistry == null) {\r
+ colorRegistry = new HashMap<String, Color>();\r
+ \r
+ colorRegistry.put(ITaxEditorConstants.GROUP_GRAY_BKG_COLOR,\r
+ new Color(null, 240, 240, 240));\r
+ colorRegistry.put(ITaxEditorConstants.PROP_SHEET_RED,\r
+ new Color(null, 255, 0, 0)); \r
}\r
- return rankVocabulary;\r
+ return colorRegistry;\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
+ private void disposeColors() {\r
+ if (colorRegistry == null) {\r
+ return;\r
}\r
- return nomStatusVocabulary;\r
+ for (Color color : colorRegistry.values()) {\r
+ color.dispose();\r
+ }\r
+ colorRegistry.clear();\r
}\r
+\r
+ /***************************************************************************\r
+ * PROPERTY SHEET\r
+ **************************************************************************/\r
\r
- /* ***************************************************************************************\r
- NAME RELATIONS\r
- ************************************************************************************** */ \r
- OrderedTermVocabulary<NameRelationshipType> nameRelationshipTypeVocabulary = null;\r
+ private Tree propertySheetTree;\r
\r
- public OrderedTermVocabulary<NameRelationshipType> getNameRelationshipTypeVocabulary() {\r
- if (nameRelationshipTypeVocabulary == null) {\r
- nameRelationshipTypeVocabulary = cdmApp.getNameService().getNameRelationshipTypeVocabulary();\r
- }\r
- return nameRelationshipTypeVocabulary;\r
+ public void setPropertySheetTree(Tree tree) {\r
+ this.propertySheetTree = tree;\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
+ public Tree getPropertySheetTree() {\r
+ return propertySheetTree;\r
}\r
\r
- public List<TaxonNameBase> getNameByName(String searchText) {\r
- // TODO make sure last character is %\r
- return cdmApp.getNameService().getNamesByName(searchText);\r
+ private PropertySheetPage propertySheetPage;\r
+ \r
+ public void setPropertySheetPage(PropertySheetPage page) {\r
+ this.propertySheetPage = page;\r
+ }\r
+ \r
+ public PropertySheetPage getPropertySheetPage() {\r
+ return propertySheetPage;\r
}\r
-}
\ No newline at end of file
+}\r