Fixed #1070 - Display ICZN author labels in property sheet and preferences
authorp.ciardelli <p.ciardelli@localhost>
Thu, 17 Sep 2009 15:35:34 +0000 (15:35 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Thu, 17 Sep 2009 15:35:34 +0000 (15:35 +0000)
.gitattributes
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/DefaultLabelStrategy.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/ILabelImageStrategy.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/LabelImageProvider.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/ZoologicalNameLabelStrategy.java [new file with mode: 0644]
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/NameRelationshipTypeMenuPreferences.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/store/VocabularyStore.java

index 82b1d45d82905cf4af4726585f1053c00fee3d7c..2f1380b9fccf332184f9dffb030843b56ac49a05 100644 (file)
@@ -1060,6 +1060,10 @@ taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/JaxbImportWizard.java -t
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/NomenclaturalCodeWizardPage.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/TcsExportWizard.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/TcsImportWizard.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/DefaultLabelStrategy.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/ILabelImageStrategy.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/LabelImageProvider.java -text
+taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/ZoologicalNameLabelStrategy.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractDataChangeBehaviour.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java -text
 taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/model/CommonHelper.java -text
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/DefaultLabelStrategy.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/DefaultLabelStrategy.java
new file mode 100644 (file)
index 0000000..91853dd
--- /dev/null
@@ -0,0 +1,75 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.taxeditor.labels;\r
+\r
+import java.util.SortedSet;\r
+\r
+import org.eclipse.swt.graphics.Image;\r
+\r
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
+import eu.etaxonomy.taxeditor.model.ImageResources;\r
+import eu.etaxonomy.taxeditor.store.VocabularyStore;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class DefaultLabelStrategy implements ILabelImageStrategy {\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.editor.labels.IEditorLabelStrategy#getNameRelationTypeLabel(eu.etaxonomy.cdm.model.name.NameRelationshipType)\r
+        */\r
+       public String getNameRelationTypeLabel(NameRelationshipType type) {\r
+               SortedSet<NameRelationshipType> vocab = \r
+                       VocabularyStore.getNameRelationshipTypes();\r
+       \r
+               for (NameRelationshipType type1 : vocab) {\r
+                       if (type1.equals(type)) {\r
+                               return type1.getLabel();\r
+                       }\r
+               }\r
+               return "";\r
+       }\r
+               \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.editor.labels.IEditorLabelStrategy#getNameRelationInverseTypeLabel(eu.etaxonomy.cdm.model.name.NameRelationshipType)\r
+        */\r
+       public String getNameRelationTypeInverseLabel(NameRelationshipType type) {\r
+               \r
+               SortedSet<NameRelationshipType> vocab = \r
+                       VocabularyStore.getNameRelationshipTypes();\r
+\r
+               for (NameRelationshipType type1 : vocab) {\r
+                       if (type1.equals(type)) {\r
+                               return type1.getInverseLabel();\r
+                       }\r
+               }\r
+               return "";\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.editor.labels.ILabelImageStrategy#getNameRelationImage(eu.etaxonomy.cdm.model.name.NameRelationship)\r
+        */\r
+       public Image getNameRelationTypeImage(NameRelationshipType type) {\r
+               if (NameRelationshipType.BASIONYM().equals(type)) {\r
+                       return ImageResources.getImage(\r
+                                       ImageResources.BASIONYM_ICON);\r
+               }\r
+               if (NameRelationshipType.ORTHOGRAPHIC_VARIANT().equals(type)) {\r
+                       return ImageResources.getImage(\r
+                                       ImageResources.ORTHOGRAPHIC_VARIANT_ICON);\r
+               }\r
+               return null;\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.labels.ILabelImageStrategy#getNameRelationDescription(eu.etaxonomy.cdm.model.name.NameRelationshipType)\r
+        */\r
+       public String getNameRelationTypeDescription(NameRelationshipType type) {\r
+               if (NameRelationshipType.BASIONYM().equals(type)) {\r
+                       return "Basionym";\r
+               }\r
+               return type.getDescription();\r
+       }\r
+}
\ No newline at end of file
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/ILabelImageStrategy.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/ILabelImageStrategy.java
new file mode 100644 (file)
index 0000000..8229acc
--- /dev/null
@@ -0,0 +1,23 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.taxeditor.labels;\r
+\r
+import org.eclipse.swt.graphics.Image;\r
+\r
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public interface ILabelImageStrategy {\r
+\r
+       String getNameRelationTypeLabel(NameRelationshipType type);\r
+       \r
+       String getNameRelationTypeInverseLabel(NameRelationshipType type);\r
+       \r
+       Image getNameRelationTypeImage(NameRelationshipType type);\r
+       \r
+       String getNameRelationTypeDescription(NameRelationshipType type);\r
+}\r
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/LabelImageProvider.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/LabelImageProvider.java
new file mode 100644 (file)
index 0000000..6539adc
--- /dev/null
@@ -0,0 +1,71 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.taxeditor.labels;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.swt.graphics.Image;\r
+\r
+import eu.etaxonomy.cdm.model.name.NameRelationship;\r
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
+import eu.etaxonomy.cdm.model.name.NomenclaturalCode;\r
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;\r
+\r
+/**\r
+ * Returns labels and images that are dependent on a nomenclatural\r
+ * code using a code-specific ILabelImageStrategy.\r
+ * \r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class LabelImageProvider implements ILabelImageStrategy {\r
+       private static final Logger logger = Logger.getLogger(LabelImageProvider.class);\r
+\r
+       private ILabelImageStrategy strategy;\r
+\r
+       public static ILabelImageStrategy getLabelStrategy(TaxonNameBase name) {\r
+               if (name == null) {\r
+                       if (PreferencesUtil.getPreferredNomenclaturalCode().\r
+                                       equals(NomenclaturalCode.ICZN)) {\r
+                               return new ZoologicalNameLabelStrategy();\r
+                       }\r
+               } else if (name.getNomenclaturalCode() != null &&\r
+                               name.getNomenclaturalCode().equals(NomenclaturalCode.ICZN)) {\r
+                       return new ZoologicalNameLabelStrategy();\r
+               }\r
+               return new DefaultLabelStrategy();\r
+       }\r
+\r
+       public LabelImageProvider(ILabelImageStrategy strategy) {\r
+               this.strategy = strategy;\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.editor.labels.IEditorLabelStrategy#getNameRelationTypeLabel(eu.etaxonomy.cdm.model.name.NameRelationshipType)\r
+        */\r
+       public String getNameRelationTypeLabel(NameRelationshipType type) {\r
+               return strategy.getNameRelationTypeLabel(type);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.editor.labels.IEditorLabelStrategy#getNameRelationInverseTypeLabel(eu.etaxonomy.cdm.model.name.NameRelationshipType)\r
+        */\r
+       public String getNameRelationTypeInverseLabel(NameRelationshipType type) {\r
+               return strategy.getNameRelationTypeInverseLabel(type);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.editor.labels.ILabelImageStrategy#getNameRelationImage(eu.etaxonomy.cdm.model.name.NameRelationship)\r
+        */\r
+       public Image getNameRelationTypeImage(NameRelationshipType type) {\r
+               return strategy.getNameRelationTypeImage(type);\r
+       }\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.labels.ILabelImageStrategy#getNameRelationDescription(eu.etaxonomy.cdm.model.name.NameRelationshipType)\r
+        */\r
+       public String getNameRelationTypeDescription(NameRelationshipType type) {\r
+               return strategy.getNameRelationTypeDescription(type);\r
+       }\r
+}\r
diff --git a/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/ZoologicalNameLabelStrategy.java b/taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/labels/ZoologicalNameLabelStrategy.java
new file mode 100644 (file)
index 0000000..b6bad4c
--- /dev/null
@@ -0,0 +1,44 @@
+/**\r
+ * \r
+ */\r
+package eu.etaxonomy.taxeditor.labels;\r
+\r
+import org.apache.log4j.Logger;\r
+import org.eclipse.swt.graphics.Image;\r
+\r
+import eu.etaxonomy.cdm.model.name.NameRelationshipType;\r
+\r
+/**\r
+ * @author p.ciardelli\r
+ *\r
+ */\r
+public class ZoologicalNameLabelStrategy extends DefaultLabelStrategy {\r
+       private static final Logger logger = Logger.getLogger(ZoologicalNameLabelStrategy.class);\r
+\r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.editor.labels.IEditorLabelStrategy#getNameRelationTypeLabel(eu.etaxonomy.cdm.model.name.NameRelationshipType)\r
+        */\r
+       public String getNameRelationTypeLabel(NameRelationshipType type) {\r
+               if (type.equals(NameRelationshipType.BASIONYM())) {\r
+                       return "original combination for";\r
+               }\r
+               return super.getNameRelationTypeLabel(type);\r
+       }\r
+       \r
+       public Image getNameRelationTypeImage(NameRelationshipType type) {\r
+               if (NameRelationshipType.BASIONYM().equals(type)) {\r
+                       return null;\r
+               }\r
+               return super.getNameRelationTypeImage(type);\r
+       }\r
+       \r
+       /* (non-Javadoc)\r
+        * @see eu.etaxonomy.taxeditor.labels.ILabelImageStrategy#getNameRelationDescription(eu.etaxonomy.cdm.model.name.NameRelationshipType)\r
+        */\r
+       public String getNameRelationTypeDescription(NameRelationshipType type) {\r
+               if (NameRelationshipType.BASIONYM().equals(type)) {\r
+                       return "Original Combination";\r
+               }\r
+               return super.getNameRelationTypeDescription(type);\r
+       }\r
+}\r
index a4a0df234a1126ccde3e215d5819f05c459885ab..656cf07b41644eca971bc83f4bb13e3caf1b8b67 100644 (file)
 
 package eu.etaxonomy.taxeditor.preference;
 
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
 import eu.etaxonomy.cdm.model.name.NameRelationshipType;
+import eu.etaxonomy.taxeditor.labels.ILabelImageStrategy;
+import eu.etaxonomy.taxeditor.labels.LabelImageProvider;
 import eu.etaxonomy.taxeditor.store.VocabularyStore;
 
 /**
@@ -27,6 +33,51 @@ public class NameRelationshipTypeMenuPreferences extends
                                "Name relationship types", 
                                "Configure name relationship types",
                                false);
+       }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#createContents(org.eclipse.swt.widgets.Composite)
+        */
+       @Override
+       public Control createContents(Composite parent) {
+               Control container = super.createContents(parent);
+               getTableViewer().setLabelProvider(new NameRelationLabelProvider());
+               return container;
+       }
+       
+       public class NameRelationLabelProvider extends MenuPreferenceLabelProvider {
+
+               private LabelImageProvider labelProvider;
+
+               public NameRelationLabelProvider() {
+                       super();
+                       
+                       ILabelImageStrategy strategy = LabelImageProvider.getLabelStrategy(
+                                                       PreferencesUtil.getPreferredNomenclaturalCode().getNewTaxonNameInstance(null));
+                       this.labelProvider = new LabelImageProvider(strategy);
+               }
+               
+               /* (non-Javadoc)
+                * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences.MenuPreferenceLabelProvider#getColumnImage(java.lang.Object, int)
+                */
+               @Override
+               public Image getColumnImage(Object element, int columnIndex) {
+                       // The preference page looked lame with images 
+//                     if (element instanceof NameRelationshipType) {
+//                             return labelProvider.getNameRelationImage((NameRelationshipType) element);
+//                     }
+                       return super.getColumnImage(element, columnIndex);
+               }
                
+               /* (non-Javadoc)
+                * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences.MenuPreferenceLabelProvider#getColumnText(java.lang.Object, int)
+                */
+               @Override
+               public String getColumnText(Object element, int columnIndex) {
+                       if (element instanceof NameRelationshipType) {
+                               return labelProvider.getNameRelationTypeLabel((NameRelationshipType) element);
+                       }
+                       return super.getColumnText(element, columnIndex);
+               }
        }
 }
index 0ffc0755b08e30dc10a911b7f9be65b34f859707..08c6ba21e31ada1f3fbaf19b79d0ca76b292da43 100644 (file)
@@ -18,6 +18,7 @@ import org.eclipse.jface.preference.IPreferenceStore;
 \r
 import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;\r
 import eu.etaxonomy.cdm.api.service.config.impl.TaxonServiceConfiguratorImpl;\r
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
 import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.ExtensionType;\r
 import eu.etaxonomy.cdm.model.common.ICdmBase;\r
@@ -181,9 +182,15 @@ public class PreferencesUtil {
         * @return\r
         */\r
        private static String getPreferenceKey(ICdmBase cdmBase) {\r
-               return cdmBase.getClass().getName()\r
+               cdmBase = (ICdmBase) HibernateProxyHelper.deproxy(cdmBase);\r
+               \r
+               String key = cdmBase.getClass().getName()\r
                                . concat(".")\r
                                . concat(cdmBase.getUuid().toString());\r
+               if (key.contains("javassist")) {\r
+                       logger.info("proxy");\r
+               }\r
+               return key;\r
        }\r
 \r
        /**\r
@@ -193,9 +200,14 @@ public class PreferencesUtil {
         * @return\r
         */\r
        private static String getPreferenceKey(IDefinedTerm definedTerm) {\r
-               return definedTerm.getClass().getName()\r
+               definedTerm = (IDefinedTerm) HibernateProxyHelper.deproxy(definedTerm);\r
+               String key = definedTerm.getClass().getName()\r
                                . concat(".")\r
                                . concat(definedTerm.getUuid().toString());\r
+               if (key.contains("javassist")) {\r
+                       logger.info("proxy");\r
+               }\r
+               return key;\r
        }\r
        \r
        /**\r
index 28dfec1dc80e6b73475ebb8c939c9ff6096e8187..ad0c41d9881df3c5d78321294f6c5b683137c6dd 100644 (file)
@@ -128,6 +128,7 @@ public class VocabularyStore {
         */
        public static SortedSet<Feature> getFeatures() {
                SortedSet features = getDefault().getTermVocabulary(VocabularyEnum.Feature).getTermsOrderedByLabels(getDefaultLanguage());
+               features.remove(Feature.IMAGE());
                return features;
 
        }