Checking in more work on "eu.etaxonomy.taxeditor.editor.description", testing upgrade...
authorp.ciardelli <p.ciardelli@localhost>
Tue, 16 Sep 2008 09:06:50 +0000 (09:06 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Tue, 16 Sep 2008 09:06:50 +0000 (09:06 +0000)
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/ui/description/AddDescriptionElementCompositeAction.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/EmptyTextViewerPrompt.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/ParseListener.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionElementComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/DescriptionLabelComposite.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/description/TaxonDescriptionEditorView.java
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/editor/name/NameComposite.java

index 2e5304efe1ff38329fdcfbf786982115e53d004a..0b66d3c6ddae9f08ca6d0660725e92025a5e1319 100644 (file)
@@ -119,7 +119,8 @@ public class AddDescriptionElementCompositeAction extends Action {
                        // Look for a FeatureGroupComposite containing the current Feature\r
                        FeatureGroupComposite featureGroupComposite = null;\r
                        for (Control child : taxonDescriptionComposite.getChildren()) {\r
-                               if (child.getData().equals(feature) && child instanceof FeatureGroupComposite) {\r
+                               if (child instanceof FeatureGroupComposite && child.getData() != null\r
+                                               && child.getData().equals(feature)) {\r
                                        featureGroupComposite = (FeatureGroupComposite) child;\r
                                        break;\r
                                }\r
@@ -135,7 +136,7 @@ public class AddDescriptionElementCompositeAction extends Action {
                        descriptionElement = new TextData(feature);\r
                        taxonDescription.addElement(descriptionElement);\r
                        descriptionElementComposite = new DescriptionElementComposite(\r
-                                       featureGroupComposite, managedForm, null, descriptionElement);\r
+                                       featureGroupComposite, managedForm, descriptionElement);\r
                        \r
                        return Status.OK_STATUS;\r
                }\r
index d6721db69a95c5700277b6154423c3d95e58e088..2b18ed7a67f4b122f7d22850ba183e0367583b93 100644 (file)
@@ -71,6 +71,8 @@ public class EmptyTextViewerPrompt implements IDocumentListener {
         * and shows it if the cursor is elsewhere.  \r
         */\r
        private void createPrompt() {\r
+               \r
+               textControl.setFont(promptFont);\r
                document.set(prompt);\r
 \r
                focusListener = new FocusListener() {\r
index bcce500292c76a178456b3a58915dff9ad269a65..1829bcd24f648fb9024ffd291cb9ef97689ea6d7 100644 (file)
@@ -1,10 +1,28 @@
+/**\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
 package eu.etaxonomy.taxeditor.editor;\r
 \r
+import org.apache.log4j.Logger;\r
 import org.eclipse.swt.custom.StyledText;\r
 import org.eclipse.swt.events.ModifyEvent;\r
 import org.eclipse.swt.events.ModifyListener;\r
 \r
+/**\r
+ * Passes modified text to the method <code>parse</code>. \r
+ * \r
+ * @author p.ciardelli\r
+ * @created 02.06.2008\r
+ * @version 1.0\r
+ */\r
 public abstract class ParseListener implements ModifyListener {\r
+       private static final Logger logger = Logger\r
+                       .getLogger(ParseListener.class);\r
 \r
        public void modifyText(ModifyEvent e) {\r
                StyledText widget = (StyledText) e.widget;\r
@@ -13,5 +31,4 @@ public abstract class ParseListener implements ModifyListener {
        }\r
        \r
        abstract public void parse(String text);\r
-       \r
 }\r
index 90328280c0d140c7e3e3008592b090b3b08d10c5..0d068d7b4ed020cf2baab5b9f60c1c15b727ef38 100644 (file)
 package eu.etaxonomy.taxeditor.editor.description;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.jface.action.Action;\r
-import org.eclipse.swt.events.FocusAdapter;\r
-import org.eclipse.swt.events.FocusEvent;\r
+import org.eclipse.jface.text.Document;\r
+import org.eclipse.jface.text.source.SourceViewer;\r
+import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.graphics.Font;\r
 import org.eclipse.swt.graphics.Image;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.ui.forms.IManagedForm;\r
+import org.eclipse.ui.forms.widgets.TableWrapData;\r
 \r
+import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.LanguageString;\r
+import eu.etaxonomy.cdm.model.common.MultilanguageText;\r
 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
-import eu.etaxonomy.cdm.model.taxon.Taxon;\r
 import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
-import eu.etaxonomy.taxeditor.actions.ui.description.DeleteElementCompositeAction;\r
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
 import eu.etaxonomy.taxeditor.editor.EditorGroupedComposite;\r
-import eu.etaxonomy.taxeditor.editor.LineBreakListener;\r
 import eu.etaxonomy.taxeditor.editor.LineWrapSupport;\r
-import eu.etaxonomy.taxeditor.editor.name.NameViewer;\r
+import eu.etaxonomy.taxeditor.editor.ParseListener;\r
 \r
 /**\r
  * @author p.ciardelli\r
@@ -38,9 +41,8 @@ public class DescriptionElementComposite extends EditorGroupedComposite {
        private static final Logger logger = Logger.getLogger(DescriptionElementComposite.class);\r
 \r
        /**\r
-        * ************ COMPOSITE TYPES TEST ************\r
+        * ************ COMPOSITE TYPES ************\r
         */\r
-       public String compositeType;\r
        public static final String TEXT_DATA = "text_data";\r
        public static final String COMMON_TAXON_NAME = "common_taxon_name";\r
        public static final String DISTRIBUTION = "distribution";\r
@@ -53,8 +55,8 @@ public class DescriptionElementComposite extends EditorGroupedComposite {
        /**\r
         * ************ FONTS ************\r
         */\r
-//     public static final Font ACCEPTED_FONT = TaxEditorPlugin.getDefault()\r
-//                     .getFont(ITaxEditorConstants.ACCEPTED_TAXON_FONT);\r
+       public static final Font ELEMENT_FONT = TaxEditorPlugin.getDefault()\r
+                       .getFont(ITaxEditorConstants.SYNONYM_FONT);\r
 \r
        /**\r
         * ************ ICONS ************\r
@@ -72,27 +74,29 @@ public class DescriptionElementComposite extends EditorGroupedComposite {
         */\r
        public Action CHANGE_TAXON_TO_SYNONYM_ACTION;\r
 \r
+//     private DescriptionElementBase element;\r
+\r
        private static final String EMPTY_NAME_PROMPT = "Click to add descriptive element text";\r
 \r
        /**\r
-        * The constructor for a DescriptionElementComposite. Takes a parent Composite on which to\r
-        * create itself, and an IManagedForm for Composite life cycle methods, i.e.\r
-        * drawing borders, creating other Composites, creating line wrap support,\r
-        * etc.\r
+        * The constructor for a <code>DescriptionElementComposite</code>. Takes a parent \r
+        * <code>Composite</code> on which to create itself, and an <code>IManagedForm</code> for \r
+        * <code>Composite</code> life cycle methods, i.e. drawing borders, creating other \r
+        * <code>Composite</code>s, creating line wrap support, etc.\r
         * \r
         * @param parent\r
         * @param managedForm\r
         */\r
        public DescriptionElementComposite(Composite parent, IManagedForm managedForm, \r
-                       String compositeType, Object data) {\r
+                       DescriptionElementBase element) {\r
                super(parent, managedForm);\r
-\r
-               createNameViewer();\r
+               \r
+               createTextViewer();\r
                createBorderSupport();\r
                createLineWrapSupport();\r
 \r
-               setData(data);\r
-               transform(compositeType);\r
+               setData(element);\r
+               transform(null);\r
                \r
                createEmptyViewerPrompt(EMPTY_NAME_PROMPT);\r
                setFocus();\r
@@ -109,12 +113,13 @@ public class DescriptionElementComposite extends EditorGroupedComposite {
         * @param transformation\r
         */\r
        public void transform(String transformation) {\r
-\r
+               setDraggable(true);\r
+               setFont(ELEMENT_FONT);\r
                setIcon(BLACK_SQUARE_ICON);\r
+               \r
                createMenu();\r
 \r
-               setDirty(true);\r
-               managedForm.getForm().layout();\r
+//             managedForm.getForm().layout();\r
        }\r
 \r
        /**\r
@@ -125,59 +130,91 @@ public class DescriptionElementComposite extends EditorGroupedComposite {
         */\r
        public void setData(Object data) {\r
                super.setData(data);\r
-               if (data instanceof DescriptionElementBase) {\r
-\r
-                       String text = "";\r
-//                     ((DescriptionElementBase) data).getFeature();\r
-                       getTextViewer().getTextWidget().setText(text);\r
+               \r
+               Assert.isTrue((data instanceof DescriptionElementBase), \r
+                               "DescriptionElementComposite's data field must contain a DescriptionElementBase object");       \r
+               \r
+               DescriptionElementBase element = (DescriptionElementBase) data;\r
+\r
+               MultilanguageText multilanguageText = element.getModifyingText();\r
+               String text = "";\r
+               if (multilanguageText == null) {\r
+//                     multilanguageText = MultilanguageText.NewInstance();\r
+//                     LanguageString languageString = LanguageString.NewInstance("", Language.DEFAULT()); \r
+//                     multilanguageText.add(languageString);\r
+                       // \r
+                       element.addModifyingText("", Language.DEFAULT());\r
+                       // TODO change DescriptionElementBase ...\r
+                       /*\r
+                       public MultilanguageText getModifyingText(){\r
+                               return this.modifyingText;\r
+                       }\r
+                       protected void setModifyingText(MultilanguageText modifyingText){\r
+                               this.modifyingText = modifyingText;\r
+                       }\r
+                       public LanguageString addModifyingText(LanguageString description){\r
+                               return this.modifyingText.add(description);\r
+                       }\r
+                       public LanguageString addModifyingText(String text, Language language){\r
+                               return this.modifyingText.put(language, LanguageString.NewInstance(text, language));\r
+                       }\r
+                       public LanguageString removeModifyingText(Language language){\r
+                               return this.modifyingText.remove(language);\r
+                       }\r
 \r
-                       if (getTextViewer() instanceof NameViewer) {\r
-                               ((NameViewer) getTextViewer()).setCursorToEOL();\r
+                       ---------------------->\r
 \r
+                       public MultilanguageText getModifyingText(){\r
+                               if (this.modifyingText == null) {\r
+                                       this.modifyingText = MultilanguageText.NewInstance();\r
+                               }\r
+                               return this.modifyingText;\r
+                       }\r
+                       protected void setModifyingText(MultilanguageText modifyingText){\r
+                               this.modifyingText = modifyingText;\r
                        }\r
+                       public LanguageString addModifyingText(LanguageString description){\r
+                               return getModifyingText().add(description);\r
+                       }\r
+                       public LanguageString addModifyingText(String text, Language language){\r
+                               return getModifyingText().put(language, LanguageString.NewInstance(text, language));\r
+                       }\r
+                       public LanguageString removeModifyingText(Language language){\r
+                               return getModifyingText().remove(language);\r
+                       }\r
+                        */\r
+               } else {\r
+                       multilanguageText.getText(Language.DEFAULT());  \r
                }\r
+               \r
+               getTextViewer().getTextWidget().setText(text);\r
        }\r
 \r
-       private NameViewer createNameViewer() {\r
-               final NameViewer nameViewer = new NameViewer(this);\r
\r
-               nameViewer.setLineBreakListener(new LineBreakListener() {\r
-\r
-                       @Override\r
-                       public void handleSplitText(String text) {\r
-\r
-                               // Line breaks are allowed in DescriptionElements\r
-\r
-                       }\r
-\r
-               });\r
-               /*\r
-               nameViewer.setParseListener(new ParseListener() {\r
+       private void createTextViewer() {\r
+               this.textViewer = new SourceViewer(this, null, SWT.WRAP | SWT.MULTI | SWT.RESIZE);\r
+               this.textViewer.setDocument(new Document(""));\r
+               this.textViewer.getTextWidget().setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));\r
+               this.textViewer.getTextWidget().addModifyListener(new ParseListener() {\r
 \r
                        @Override\r
                        public void parse(String text) {\r
-\r
-                               TaxonBase taxonBase = (TaxonBase) getData();\r
-\r
-                               NonViralName nonViralName = (NonViralName) taxonBase.getName();\r
-                               if (nonViralName != null) {\r
-                                       CdmUtil.parseFullName(nonViralName, text, null, true);\r
-                                       nameViewer.setShowError(nonViralName.getHasProblem());\r
+                               Assert.isTrue((getData() instanceof DescriptionElementBase), \r
+                                               "DescriptionElementComposite's data field must contain a DescriptionElementBase object");\r
+                               \r
+                               DescriptionElementBase element = (DescriptionElementBase) getData();\r
+                               MultilanguageText multilanguageText = element.getModifyingText();\r
+                               if (multilanguageText == null) {\r
+                                       element.addModifyingText(text, Language.DEFAULT());\r
+                               } else {\r
+                                       multilanguageText.add(LanguageString.NewInstance(text, Language.DEFAULT()));\r
                                }\r
-\r
+//                             LanguageString languageString = LanguageString.NewInstance(text, Language.DEFAULT());\r
+//                             multilanguageText.add(languageString);\r
+                               \r
                                setDirty(true);\r
                        }\r
+                       \r
                });\r
-               */\r
-\r
-               nameViewer.getTextWidget().addFocusListener(new FocusAdapter() {\r
-                       public void focusGained(FocusEvent e) {\r
-                               setFocus();\r
-                       }\r
-               });\r
-\r
-               this.textViewer = nameViewer;\r
-               return nameViewer;\r
        }\r
 \r
        private void createMenu() {\r
@@ -189,42 +226,5 @@ public class DescriptionElementComposite extends EditorGroupedComposite {
 //             contextMenu.addAction(deleteElementAction);\r
                \r
                // Add new text \r
-       }\r
-       \r
-       \r
-       public boolean setParent(Composite parent) {\r
-\r
-               return super.setParent(parent);\r
-//             if (super.setParent(parent)) {\r
-//\r
-//                     // Has this been moved to the misapplied names group?\r
-//                     if (parent.getData(ITaxEditorConstants.MISAPPLIED_NAME) != null) {\r
-//                             new ChangeCompositeToMisappliedNameAction(this, managedForm)\r
-//                                             .run();\r
-//                     }\r
-//\r
-//                     // Has this been moved to a HomotypicalGroup?\r
-//                     if (parent.getData() instanceof HomotypicalGroup) {\r
-//                             new AdaptCompositeToGroupAction(this,\r
-//                                             (EditorGroupComposite) parent).run();\r
-//                     }\r
-//                     return true;\r
-//\r
-//             }\r
-//             return false;\r
-       }\r
-\r
-       private Taxon getTaxon() {\r
-               Composite parent = getParent();\r
-               Composite grandParent = parent.getParent();\r
-               if (grandParent != null) {\r
-                       Object parentData = grandParent.getData();\r
-                       if (parentData instanceof Taxon) {\r
-                               return (Taxon) parentData;\r
-                       }\r
-               }\r
-               throw new IllegalArgumentException(\r
-                               "The parent of the DescriptionElementComposite's parent does not have a Taxon in its data field as required.");\r
-       }\r
-       \r
+       }       \r
 }
\ No newline at end of file
index 907da926ccb76cf5a847b31cfac690dd033132c5..f56d7c89511aa7df628c6907ee346795570cfdcf 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.taxeditor.editor.description;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.jface.action.Action;\r
 import org.eclipse.jface.action.MenuManager;\r
 import org.eclipse.jface.text.Document;\r
@@ -30,6 +31,7 @@ import eu.etaxonomy.taxeditor.TaxEditorPlugin;
 import eu.etaxonomy.taxeditor.actions.ui.description.AddDescriptionElementCompositeAction;\r
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
 import eu.etaxonomy.taxeditor.editor.EditorGroupedComposite;\r
+import eu.etaxonomy.taxeditor.editor.ParseListener;\r
 \r
 /**\r
  * Composite for editing a description's label / Title Cache information\r
@@ -55,10 +57,12 @@ public class DescriptionLabelComposite extends EditorGroupedComposite {
                        .getImage(ITaxEditorConstants.BLACK_SQUARE_ICON);       \r
        \r
        private static final String EMPTY_NAME_PROMPT = "Click to add description label";\r
+\r
+//     private TaxonDescription taxonDescription;\r
        \r
        public DescriptionLabelComposite(Composite parent, IManagedForm managedForm, TaxonDescription taxonDescription) {\r
                super(parent, managedForm);\r
-\r
+               \r
                createLabelViewer();\r
                createBorderSupport();\r
                createLineWrapSupport();\r
@@ -79,16 +83,23 @@ public class DescriptionLabelComposite extends EditorGroupedComposite {
                createMenu();\r
        }       \r
        \r
+       public void setData(Object data) {\r
+               super.setData(data);\r
+               \r
+               Assert.isTrue((data instanceof TaxonDescription), \r
+                               "DescriptionLabelComposite's data field must contain a TaxonDescription object");\r
+\r
+//             this.taxonDescription = (TaxonDescription) data; \r
+               \r
+               String label = ((TaxonDescription) data).getTitleCache();\r
+               getTextViewer().getTextWidget().setText(label);\r
+       }\r
+       \r
        private void createMenu() {\r
                ContextMenu contextMenu = createContextMenu();\r
                \r
                MenuManager menuManager = new MenuManager("Add description element");\r
                \r
-//             if (!(this.getParent() instanceof TaxonDescriptionComposite)) {\r
-//                     throw new ClassCastException(\r
-//                             "The DescriptionLabelComposite's parent is not a TaxonDescriptionComposite as expected.");\r
-//             }\r
-//             TaxonDescriptionComposite parentComposite = (TaxonDescriptionComposite) this.getParent();\r
                Composite parentComposite = this.getParent();\r
                                \r
                IDescriptionService descriptionService = TaxEditorPlugin.getDefault().getDescriptionService();\r
@@ -102,8 +113,20 @@ public class DescriptionLabelComposite extends EditorGroupedComposite {
 \r
        private void createLabelViewer() {              \r
                this.textViewer = new SourceViewer(this, null, SWT.WRAP | SWT.MULTI | SWT.RESIZE);\r
-               this.textViewer.setDocument(new Document("Test me"));\r
+               this.textViewer.setDocument(new Document(""));\r
                this.textViewer.getTextWidget().setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));\r
+               this.textViewer.getTextWidget().addModifyListener(new ParseListener() {\r
+\r
+                       @Override\r
+                       public void parse(String text) {\r
+                               Assert.isTrue((getData() instanceof TaxonDescription), \r
+                                               "DescriptionLabelComposite's data field must contain a TaxonDescription object");\r
+                               \r
+                               ((TaxonDescription) getData()).setTitleCache(text);\r
+                               setDirty(true);\r
+                       }\r
+                       \r
+               });\r
        }\r
 \r
 }\r
index b05b52438a6685d7c5335b357dda0e7a4fa6ae99..8ff65be5ee535f720e36dadad97ded4ab513f20a 100644 (file)
@@ -77,7 +77,9 @@ public class TaxonDescriptionEditorView extends AbstractTaxonEditorView {
                \r
                // If the Taxon has no descriptions, give it an empty one to display\r
                if (descriptions == null || descriptions.size() == 0) {\r
-                       descriptions.add(TaxonDescription.NewInstance(taxon));  \r
+                       TaxonDescription description = TaxonDescription.NewInstance(taxon);\r
+                       description.setTitleCache("");\r
+                       descriptions.add(description);  \r
                }\r
                \r
                // Iterate through taxon's descriptions\r
@@ -118,7 +120,7 @@ public class TaxonDescriptionEditorView extends AbstractTaxonEditorView {
                                \r
                                for (DescriptionElementBase element : features.get(feature)) {\r
                                        new DescriptionElementComposite(\r
-                                                       featureComposite, managedForm, null, element);\r
+                                                       featureComposite, managedForm, element);\r
                                }\r
                        }\r
                }\r
index 39530fa2d454d7f89bec1a99d979e852b8477392..bc9330e686310dc89802583d75da4a763aaf7003 100644 (file)
@@ -10,6 +10,7 @@
 package eu.etaxonomy.taxeditor.editor.name;\r
 \r
 import org.apache.log4j.Logger;\r
+import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.jface.action.Action;\r
 import org.eclipse.jface.util.IPropertyChangeListener;\r
 import org.eclipse.swt.events.FocusAdapter;\r
@@ -42,7 +43,6 @@ import eu.etaxonomy.taxeditor.actions.ui.RemoveBasionymCompositeAction;
 import eu.etaxonomy.taxeditor.editor.ContextMenu;\r
 import eu.etaxonomy.taxeditor.editor.EditorGroupComposite;\r
 import eu.etaxonomy.taxeditor.editor.EditorGroupedComposite;\r
-import eu.etaxonomy.taxeditor.editor.EmptyTextViewerPrompt;\r
 import eu.etaxonomy.taxeditor.editor.LineBreakListener;\r
 import eu.etaxonomy.taxeditor.editor.ParseListener;\r
 import eu.etaxonomy.taxeditor.model.CdmUtil;\r
@@ -235,27 +235,29 @@ public class NameComposite extends EditorGroupedComposite {
 \r
        /**\r
         * Override of Composite.setData() which passes data along to\r
-        * DescriptionElementComposite's TextViewer where appropriate.\r
+        * <code>NameComposite</code>'s <code>TextViewer</code> where appropriate.\r
         * \r
         * @see org.eclipse.swt.widgets.Widget#setData(java.lang.Object)\r
         */\r
        public void setData(Object data) {\r
                super.setData(data);\r
-               if (data instanceof TaxonBase) {\r
-\r
-                       String text = CdmUtil.getDisplayName((TaxonBase) data);\r
-                       getTextViewer().getTextWidget().setText(text);\r
+               \r
+               Assert.isTrue((data instanceof TaxonBase), \r
+                               "NameComposite's data field must contain a TaxonBase object");\r
+               \r
+               String text = CdmUtil.getDisplayName((TaxonBase) data);\r
+               getTextViewer().getTextWidget().setText(text);\r
 \r
-                       if (getTextViewer() instanceof NameViewer) {\r
-                               ((NameViewer) getTextViewer()).setCursorToEOL();\r
+               if (getTextViewer() instanceof NameViewer) {\r
+                       ((NameViewer) getTextViewer()).setCursorToEOL();\r
 \r
-                               if (((TaxonBase) data).getName() != null) {\r
-                                       boolean hasProblem = ((TaxonBase) data).getName()\r
-                                                       .getHasProblem();\r
-                                       ((NameViewer) getTextViewer()).setShowError(hasProblem);\r
-                               }\r
+                       if (((TaxonBase) data).getName() != null) {\r
+                               boolean hasProblem = ((TaxonBase) data).getName()\r
+                                               .getHasProblem();\r
+                               ((NameViewer) getTextViewer()).setShowError(hasProblem);\r
                        }\r
                }\r
+               \r
        }\r
 \r
        /* (non-Javadoc)\r
@@ -263,8 +265,8 @@ public class NameComposite extends EditorGroupedComposite {
         */\r
        protected void setSelection() {\r
                if (getData() instanceof TaxonBase) {\r
-                       TaxonNameBase taxonBaseName = ((TaxonBase) getData()).getName();\r
-                       managedForm.setInput(taxonBaseName);\r
+                       TaxonNameBase taxonNameBase = ((TaxonBase) getData()).getName();\r
+                       managedForm.setInput(taxonNameBase);\r
                } else {\r
                        super.setSelection();\r
                }\r