Merge branch 'release/4.10.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.editor / src / main / java / eu / etaxonomy / taxeditor / editor / name / container / AbstractGroupedContainer.java
old mode 100644 (file)
new mode 100755 (executable)
index 2806b80..843ab21
@@ -1,8 +1,8 @@
 /**
  * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
+ * European Distributed Institute of Taxonomy
  * http://www.e-taxonomy.eu
- * 
+ *
  * The contents of this file are subject to the Mozilla Public License Version 1.1
  * See LICENSE.TXT at the top of this package for the full license terms.
  */
@@ -13,6 +13,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.commons.lang.StringUtils;
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.text.IDocument;
@@ -28,7 +29,6 @@ import org.eclipse.swt.events.ControlListener;
 import org.eclipse.swt.events.FocusAdapter;
 import org.eclipse.swt.events.FocusEvent;
 import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.MouseAdapter;
@@ -48,13 +48,15 @@ import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
 import eu.etaxonomy.cdm.common.CdmUtils;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.name.INonViralName;
 import eu.etaxonomy.cdm.model.name.NameRelationship;
-import eu.etaxonomy.cdm.model.name.NonViralName;
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.name.TaxonName;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
 import eu.etaxonomy.taxeditor.editor.CdmDataTransfer;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
 import eu.etaxonomy.taxeditor.editor.name.container.EditorAnnotation.EditorAnnotationType;
 import eu.etaxonomy.taxeditor.editor.name.dnd.NameEditorDragListener;
@@ -86,11 +88,10 @@ import eu.etaxonomy.taxeditor.preference.Resources;
  * The <code>IManagedForm</code> can also used for drawing borders by calling
  * the method <code>createBorderSupport()</code>.
  * </p>
- * 
+ *
  * @author p.ciardelli
  * @author n.hoffmann
  * @created 02.06.2008
- * @version 1.0
  */
 abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                IFormPart, IContainerConstants, IElementHasDetails {
@@ -123,7 +124,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * Constructor for AbstractGroupedContainer.
         * </p>
-        * 
+        *
         * @param editor
         *            a {@link eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor}
         *            object.
@@ -170,13 +171,14 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
        protected void createListener() {
                nameCompositeModifyListener = new ModifyListener() {
 
-                       public void modifyText(ModifyEvent e) {
+                       @Override
+            public void modifyText(ModifyEvent e) {
                                // mark the composite dirty
                                setDirty(true);
                                // parse the text
                                String text = nameViewer.getTextWidget().getText();
 
-                               NonViralName name = parseHandler.parse(text);
+                               TaxonName name = (TaxonName)parseHandler.parse(text);
                                getTaxonBase().setName(name);
                                getTaxonBase().setTitleCache((getTaxonBase().generateTitle()));
 
@@ -192,7 +194,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
                        /*
                         * (non-Javadoc)
-                        * 
+                        *
                         * @see
                         * org.eclipse.swt.events.FocusAdapter#focusLost(org.eclipse.swt
                         * .events.FocusEvent)
@@ -208,14 +210,14 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                addListener();
        }
 
-       private void addListener() {
+       protected void addListener() {
                getNameViewer().getTextWidget().addModifyListener(
                                nameCompositeModifyListener);
                getNameViewer().getTextWidget().addFocusListener(
                                nameCompositeFocusListener);
        }
 
-       private void removeListener() {
+       protected void removeListener() {
                getNameViewer().getTextWidget().removeModifyListener(
                                nameCompositeModifyListener);
                getNameViewer().getTextWidget().removeFocusListener(
@@ -231,7 +233,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * getEmptyTextPrompt
         * </p>
-        * 
+        *
         * @return a {@link java.lang.String} object.
         */
        protected String getEmptyTextPrompt() {
@@ -239,10 +241,10 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
        }
 
        /**
-        * 
+        *
         */
        private void showNameRelations() {
-               TaxonNameBase<?, ?> name = getName();
+               TaxonName name = getName();
                if (name == null) {
                        return;
                }
@@ -257,7 +259,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                }
                // for (NameRelationship nameRelation : nameRelations) {
                // String typeLabel = null;
-               // TaxonNameBase<?, ?> relatedName = null;
+               // TaxonName relatedName = null;
                //
                // if (name.equals(nameRelation.getFromName())) {
                // typeLabel = labelProvider.getNameRelationTypeLabel(
@@ -309,11 +311,11 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
        }
 
        /**
-        * 
+        *
         */
        public void showAnnotations() {
 
-               if (getName().hasProblem()) {
+               if (getName() != null && getName().hasProblem()) {
                        showParsingProblems();
                }
 
@@ -322,24 +324,29 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                                        .addAnnotation(
                                                        new EditorAnnotation(EditorAnnotationType.WARNING,
                                                                        0,
-                                                                       "This name may only be edited in the details view."));
+                                                                       Messages.AbstractGroupedContainer_EDIT_IN_DETAILS_VIEW));
                }
 
                if (isNameUsedMultipleTimes()) {
                        getNameViewer().addAnnotation(
                                        new EditorAnnotation(EditorAnnotationType.WARNING, 0,
-                                                       "This taxons name is used multiple times."));
+                                                       Messages.AbstractGroupedContainer_MULTIPLE_USE));
                }
 
        }
 
        /**
-        * 
+        *
         */
        private void showParsingProblems() {
                String text = getNameViewer().getTextWidget().getText();
 
-               List<ParserProblem> parsingProblems = getName().getParsingProblems();
+               TaxonName name = getName();
+               if (name == null){
+                       return;
+               }
+
+               List<ParserProblem> parsingProblems = name.getParsingProblems();
 
                for (ParserProblem problem : parsingProblems) {
                        getNameViewer().addAnnotation(new EditorAnnotation(problem),
@@ -350,7 +357,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
        private Position getParsingProblemPosition() {
                String text = getNameViewer().getTextWidget().getText();
 
-               if (getName().hasProblem() && text.length() > 0) {
+               if (getName() != null && getName().hasProblem() && text.length() > 0) {
                        int start = getName().getProblemStarts();
                        int length = getName().getProblemEnds() - start;
 
@@ -374,26 +381,27 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * handleSplitText
         * </p>
-        * 
+        *
         * @param text
         *            a {@link java.lang.String} object.
         */
        protected void handleSplitText(String text) {
                // Create a synonym in a new homotypic group using text as name
-               TaxonNameBase synonymName = ParseHandler
-                               .parseReferencedName(text, null);
+               TaxonName synonymName = TaxonName.castAndDeproxy(
+                               ParseHandler.parseReferencedName(text, null));
 
                EditorUtil.executeOperation(new CreateSynonymInNewGroupOperation(
-                               "New Heterotypic Synonym", getEditor().getUndoContext(),
+                               Messages.AbstractGroupedContainer_NEW_HETERO_SYNONYM, getEditor().getUndoContext(),
                                getEditor().getTaxon(), synonymName, getEditor()));
        }
 
        /**
         * Refreshes the display with latest data from the model.
-        * 
+        *
         * Note: Will not parse the text and not calculate errors!
         */
-       public void refresh() {
+       @Override
+    public void refresh() {
                // showNameRelations();
 
                String text = NameHelper.getDisplayNameWithRef(getTaxonBase());
@@ -421,7 +429,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
        }
 
        /**
-        * 
+        *
         */
        protected abstract void updateIcon();
 
@@ -435,21 +443,19 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
        protected abstract void updateNonEditableInfo();
 
        /**
-        * 
+        *
         */
-       private void enableFreeText() {
+       protected void enableFreeText() {
                setEnabled(isFreetextEditingAllowed());
        }
 
        /**
         * Checks whether the freetext should be editable based on specific empty
         * fields.
-        * 
+        *
         * @return
         */
        private boolean isFreetextEditingAllowed() {
-               NonViralName name = (NonViralName) HibernateProxyHelper
-                               .deproxy(getName());
                boolean enableFreetext = true;
 
                enableFreetext |= isNameUsedMultipleTimes();
@@ -459,40 +465,43 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
        }
 
        /**
-        * Checks whether there are more than one, non-orphaned taxon bases   
+        * Checks whether there are more than one, non-orphaned taxon bases
         * attached to the taxon name
-        * 
+        *
         * @return
         */
        private boolean isNameUsedMultipleTimes() {
-               
-               Set<TaxonBase> taxonBases = getName().getTaxonBases();
-               Iterator<TaxonBase> tbItr = taxonBases.iterator();
-               int nonOrphanedTaxonBaseCount = taxonBases.size();
-               
-               while(tbItr.hasNext()) {
-                       TaxonBase tb = tbItr.next(); 
-                       if(tb.isOrphaned()) {
-                               nonOrphanedTaxonBaseCount--;
+
+               TaxonName name = getName();
+               if (name != null){
+                       Set<TaxonBase> taxonBases = name.getTaxonBases();
+                       Iterator<TaxonBase> tbItr = taxonBases.iterator();
+                       int nonOrphanedTaxonBaseCount = taxonBases.size();
+       
+                       while(tbItr.hasNext()) {
+                               TaxonBase<?> tb = tbItr.next();
+                               if(tb.isOrphaned()) {
+                                       nonOrphanedTaxonBaseCount--;
+                               }
+                       }
+                       if(nonOrphanedTaxonBaseCount > 1) {
+                               return true;
                        }
-               }
-               if(nonOrphanedTaxonBaseCount > 1) {
-                       return true;
                }
                return false;
        }
 
        private boolean isNameParsable() {
-               TaxonNameBase name = getName();
+               TaxonName name = getName();
+               if (name == null){
+                       return false;
+               }
 
                boolean isParsable = true;
-               isParsable &= CdmUtils.isEmpty(name.getAppendedPhrase()); // taxonFieldsEmpty();
+               isParsable &= StringUtils.isBlank(name.getAppendedPhrase()); // taxonFieldsEmpty();
 
-               if (name instanceof NonViralName) {
-                       NonViralName nonViralName = (NonViralName) name;
-                       isParsable &= !nonViralName.isProtectedAuthorshipCache();
-                       isParsable &= !nonViralName.isProtectedNameCache();
-               }
+               isParsable &= !name.isProtectedAuthorshipCache();
+               isParsable &= !name.isProtectedNameCache();
 
                return isParsable;
        }
@@ -512,7 +521,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * getTaxonBase
         * </p>
-        * 
+        *
         * @return the taxonBase
         */
        public T getTaxonBase() {
@@ -523,12 +532,11 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * getName
         * </p>
-        * 
+        *
         * @return a {@link eu.etaxonomy.cdm.model.name.TaxonNameBase} object.
         */
-       public TaxonNameBase getName() {
-               return (TaxonNameBase) HibernateProxyHelper.deproxy(getTaxonBase()
-                               .getName());
+       public TaxonName getName() {
+               return CdmBase.deproxy(getTaxonBase().getName());
        }
 
        /**
@@ -546,7 +554,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                        // @Override
                        // protected IStatus run(IProgressMonitor monitor) {
                        //
-                       final NonViralName name = parseHandler
+                       final TaxonName name = (TaxonName)parseHandler
                                        .parseAndResolveDuplicates(unparsedNameString);
                        //
                        // Display.getDefault().asyncExec(new Runnable(){
@@ -573,14 +581,14 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * Getter for the field <code>group</code>.
         * </p>
-        * 
+        *
         * @return a
         *         {@link eu.etaxonomy.taxeditor.editor.name.container.AbstractGroup}
         *         object.
         */
        public AbstractGroup getGroup() {
                if (group == null) {
-                       throw new IllegalStateException("Group shall not be null.");
+                       throw new IllegalStateException("Group shall not be null."); //$NON-NLS-1$
                }
                return group;
        }
@@ -628,7 +636,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * Getter for the field <code>control</code>.
         * </p>
-        * 
+        *
         * @return a {@link org.eclipse.swt.widgets.Composite} object.
         */
        public Composite getControl() {
@@ -686,7 +694,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * setIcon
         * </p>
-        * 
+        *
         * @param icon
         *            a {@link org.eclipse.swt.graphics.Image} object.
         */
@@ -698,7 +706,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * setIndent
         * </p>
-        * 
+        *
         * @param indent
         *            a int.
         */
@@ -711,7 +719,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                        control.layout();
                } else {
                        new RuntimeException(
-                                       "Couldn't indent - composite's layout must be TableWrapLayout.");
+                                       "Couldn't indent - composite's layout must be TableWrapLayout."); //$NON-NLS-1$
                }
        }
 
@@ -728,7 +736,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * isSelected
         * </p>
-        * 
+        *
         * @return a boolean.
         */
        public boolean isSelected() {
@@ -739,7 +747,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * colorSelected
         * </p>
-        * 
+        *
         * @param mode
         *            a int.
         */
@@ -780,7 +788,8 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                Display display = Display.getCurrent();
                Runnable runnable = new Runnable() {
 
-                       public void run() {
+                       @Override
+            public void run() {
                                getEditor().getManagedForm().setInput(selection);
                        }
                };
@@ -792,7 +801,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * setBackground
         * </p>
-        * 
+        *
         * @param color
         *            a {@link org.eclipse.swt.graphics.Color} object.
         */
@@ -808,7 +817,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * org.eclipse.swt.widgets.Control#setFont(org.eclipse.swt.graphics.Font)
         */
@@ -816,7 +825,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * setFont
         * </p>
-        * 
+        *
         * @param font
         *            a {@link org.eclipse.swt.graphics.Font} object.
         */
@@ -828,14 +837,14 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * Getter for the field <code>nameViewer</code>.
         * </p>
-        * 
+        *
         * @return a {@link eu.etaxonomy.taxeditor.editor.name.container.NameViewer}
         *         object.
         */
        public NameViewer getNameViewer() {
                if (nameViewer == null) {
                        throw new RuntimeException(
-                                       "The Name Viewer is corrupt for Name Container: "
+                                       "The Name Viewer is corrupt for Name Container: " //$NON-NLS-1$
                                                        + getTaxonBase().getName().getTitleCache());
                }
                return nameViewer;
@@ -845,7 +854,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * If <code>textViewer</code> has already been set, it will show a
         * <code>prompt</code> along the lines of
         * "Click here to start entering data" when empty.
-        * 
+        *
         * @param prompt
         *            a {@link java.lang.String} object.
         */
@@ -858,14 +867,16 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
                setFocusListener(new FocusListener() {
 
-                       public void focusGained(FocusEvent e) {
+                       @Override
+            public void focusGained(FocusEvent e) {
                                if (document.get().equals(prompt)) {
                                        textControl.setFont(getViewerFont());
-                                       document.set("");
+                                       document.set(""); //$NON-NLS-1$
                                }
                        }
 
-                       public void focusLost(FocusEvent e) {
+                       @Override
+            public void focusLost(FocusEvent e) {
                                if (document.getLength() == 0) {
                                        initEmptyText();
                                }
@@ -885,7 +896,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * getViewerFont
         * </p>
-        * 
+        *
         * @return a {@link org.eclipse.swt.graphics.Font} object.
         */
        abstract protected Font getViewerFont();
@@ -907,7 +918,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * Setter for the field <code>focusListener</code>.
         * </p>
-        * 
+        *
         * @param focusListener
         *            a {@link org.eclipse.swt.events.FocusListener} object.
         */
@@ -923,7 +934,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * setDirty
         * </p>
-        * 
+        *
         * @param isDirty
         *            a boolean.
         */
@@ -938,10 +949,11 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * isDirty
         * </p>
-        * 
+        *
         * @return a boolean.
         */
-       public boolean isDirty() {
+       @Override
+    public boolean isDirty() {
                return isDirty;
        }
 
@@ -949,7 +961,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * setMenu
         * </p>
-        * 
+        *
         * @param menu
         *            a {@link org.eclipse.swt.widgets.Menu} object.
         */
@@ -965,7 +977,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * setDraggableControl
         * </p>
-        * 
+        *
         * @param controls
         *            an array of {@link org.eclipse.swt.widgets.Control} objects.
         */
@@ -977,7 +989,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * setIsDraggable
         * </p>
-        * 
+        *
         * @param draggable
         *            a boolean.
         */
@@ -987,7 +999,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
                        if (draggableControls == null) {
                                throw new NullPointerException(
-                                               "Draggable controls must be set to add draggability");
+                                               "Draggable controls must be set to add draggability"); //$NON-NLS-1$
                        }
 
                        Transfer[] types = new Transfer[] { CdmDataTransfer.getInstance() };
@@ -1036,7 +1048,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * nonEditableInfo is a label displayed underneath a GroupedComposite's
         * input field. For instance, NameComposites display things like name
         * relations, sec. references, etc. here.
-        * 
+        *
         * @param info
         *            the text to display in the label
         * @param append
@@ -1049,8 +1061,8 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                info = info.toUpperCase();
 
                if (append) {
-                       nonEditableText += ", " + info;
-                       nonEditableHoverText += "\n" + info;
+                       nonEditableText += ", " + info; //$NON-NLS-1$
+                       nonEditableHoverText += "\n" + info; //$NON-NLS-1$
                } else {
                        nonEditableText = info;
                        nonEditableHoverText = info;
@@ -1058,7 +1070,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
                if (nonEditableInfoLabel == null) {
                        nonEditableInfoLabel = getEditor().getToolkit().createLabel(
-                                       control, "");
+                                       control, ""); //$NON-NLS-1$
                        TableWrapData layoutData = new TableWrapData(
                                        TableWrapData.FILL_GRAB, TableWrapData.TOP);
                        // Set indent to viewer ruler's width
@@ -1092,10 +1104,11 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * Getter for the field <code>data</code>.
         * </p>
-        * 
+        *
         * @return a T object.
         */
-       public T getData() {
+       @Override
+    public T getData() {
                return data;
        }
 
@@ -1103,12 +1116,12 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * Setter for the field <code>data</code>.
         * </p>
-        * 
+        *
         * @param data
         *            a T object.
         */
        public void setData(T data) {
-               this.data = (T) HibernateProxyHelper.deproxy(data);
+               this.data = HibernateProxyHelper.deproxy(data);
        }
 
        /**
@@ -1123,21 +1136,10 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
                                AbstractGroupedContainer.this.handleSplitText(text);
                        }
 
-                       @Override
-                       public void keyPressed(KeyEvent e) {
-                               // TODO Auto-generated method stub
-                               
-                       }
-
-                       @Override
-                       public void keyReleased(KeyEvent e) {
-                               // TODO Auto-generated method stub
-                               
-                       }
                };
 
                getNameViewer().getTextWidget().addVerifyListener(lineBreakListener);
-               getNameViewer().getTextWidget().addKeyListener(lineBreakListener);
+
        }
 
        abstract class LabelEllipsisListener extends ControlAdapter {
@@ -1188,7 +1190,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
         * <p>
         * Setter for the field <code>group</code>.
         * </p>
-        * 
+        *
         * @param group
         *            a
         *            {@link eu.etaxonomy.taxeditor.editor.name.container.AbstractGroup}
@@ -1209,7 +1211,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm
         * )
@@ -1222,7 +1224,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see org.eclipse.ui.forms.IFormPart#dispose()
         */
        @Override
@@ -1235,7 +1237,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see org.eclipse.ui.forms.IFormPart#commit(boolean)
         */
        @Override
@@ -1247,7 +1249,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see org.eclipse.ui.forms.IFormPart#setFormInput(java.lang.Object)
         */
        @Override
@@ -1257,7 +1259,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see org.eclipse.ui.forms.IFormPart#setFocus()
         */
        @Override
@@ -1267,28 +1269,28 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> implements
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see org.eclipse.ui.forms.IFormPart#isStale()
         */
        @Override
        public boolean isStale() {
                return false;
        }
-       
+
        public void setDisabled(boolean disabled) {
                this.enabled = !disabled;
                setEnabled(enabled);
        }
-       
+
        public void setEnabled(boolean enabled) {
                this.enabled = enabled;
                Color color = enabled ? control.getForeground() : EditorUtil.getColor(Resources.COLOR_DISABLED_EDITOR);
-                               
+
                getNameViewer().getTextWidget().setEditable(enabled);
                getNameViewer().getTextWidget().setEnabled(enabled);
                getNameViewer().getTextWidget().setForeground(color);
        }
-       
+
        public boolean isEnabled(){
                return enabled;
        }