fixes #2171, #2168
authorn.hoffmann <n.hoffmann@localhost>
Thu, 6 Jan 2011 10:07:48 +0000 (10:07 +0000)
committern.hoffmann <n.hoffmann@localhost>
Thu, 6 Jan 2011 10:07:48 +0000 (10:07 +0000)
33 files changed:
.gitattributes
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/dialogs/filteredSelection/AbstractFilteredCdmResourceSelectionDialog.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/AbstractGroupedContainer.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/AcceptedNameContainer.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/ContainerFactory.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/HomotypicalSynonymGroup.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/MisappliedGroup.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/NameViewer.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/TaxonNameEditor.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/detail/CdmSectionPart.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/detail/DetailsViewer.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/CdmFormFactory.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/PartialElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/forms/UriWithLabelElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/AbstractCdmDetailSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/ITaxonBaseDetailSection.java [moved from taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/ITaxonDetailSection.java with 64% similarity]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/description/DescriptionElementDetailSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/AuthorshipDetailSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/HybridDetailElement.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/HybridDetailSection.java [new file with mode: 0644]
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameDetailElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameDetailSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameRelationshipDetailElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameRelationshipDetailSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NomenclaturalStatusSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NonViralNameDetailElement.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NonViralNameDetailSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/ProtologueSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/TypeDesignationSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/reference/NomenclaturalReferenceDetailSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/reference/ReferenceDetailSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/taxon/ParsingMessagesSection.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/taxon/TaxonBaseDetailSection.java

index ed3535b797f17d474570680d6337d1de1d916a1a..871ad2801cde1d16d8833113b4be6e6111d92157 100644 (file)
@@ -575,7 +575,7 @@ taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/AbstractEntityColl
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/AbstractEntityCollectionSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/BulkEditorOpeningSelectionListener.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/EmptyElement.java -text
-taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/ITaxonDetailSection.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/ITaxonBaseDetailSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/agent/InstitutionDetailElement.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/agent/InstitutionDetailSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/agent/InstitutionWizardPage.java -text
@@ -637,6 +637,8 @@ taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/key/ScopeRestricti
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/AbstractTypeDesignationElement.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/AuthorshipDetailElement.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/AuthorshipDetailSection.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/HybridDetailElement.java -text
+taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/HybridDetailSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameDetailElement.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameDetailSection.java -text
 taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/NameRelationshipDetailElement.java -text
index ccee4cb07645904b0a32b7864af7c60dc4a43e66..fabe88956fe5958be7298f647b06f687a63e1141 100644 (file)
@@ -17,7 +17,6 @@ import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
-import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -47,6 +46,7 @@ import eu.etaxonomy.cdm.model.common.ICdmBase;
 import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
 import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.editor.newWizard.AbstractNewEntityWizard;
 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 
@@ -59,8 +59,6 @@ import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
  */
 public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmBase> extends
                FilteredItemsSelectionDialog implements IConversationEnabled {
-       private static final Logger logger = Logger
-                       .getLogger(AbstractFilteredCdmResourceSelectionDialog.class);
 
        private ConversationHolder conversation;
 
@@ -217,11 +215,6 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                                }else if(item instanceof String){
                                        text = (String) item;
                                }
-                               if (text != null) {
-                                       logger.debug(text + " " + matches(text));// + " " + model.size());
-                               } else {
-                                       logger.debug("null");
-                               }
                                return text != null ? matches(text) : false;
                        }
                        
@@ -257,7 +250,7 @@ public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmB
                                        progressMonitor.worked(1);
                                }
                        }else{
-                               logger.error("Model for Filtered Selection is null:" + this.getClass().getSimpleName());
+                               EditorUtil.warn(getClass(), "Model for Filtered Selection is null:" + this.getClass().getSimpleName());
                        }
                }
                finally {
index 69995ff8a5d70a03a1c26d4b9ba2b57f4431c623..b3c54bc67ae06669a1c41a3303b2a8c42852809d 100644 (file)
@@ -38,6 +38,8 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.forms.IFormPart;
+import org.eclipse.ui.forms.IManagedForm;
 import org.eclipse.ui.forms.widgets.TableWrapData;
 import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
@@ -82,7 +84,7 @@ import eu.etaxonomy.taxeditor.preference.Resources;
  * @created 02.06.2008
  * @version 1.0
  */
-abstract public class AbstractGroupedContainer<T extends TaxonBase> {  
+abstract public class AbstractGroupedContainer<T extends TaxonBase> implements IFormPart {     
        
        /**
         * 
@@ -157,23 +159,8 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
        
        private FocusListener nameCompositeFocusListener;
        private ModifyListener nameCompositeModifyListener;
-       
-       final Color not_editable_color = new Color(Display.getDefault(), 105, 114, 124);
-
-       /**
-        *  1st column: Return value expected from the last method mentioned in the object path (3rd column et seq.) to enable the freetext.
-        *  2nd column: The class the last method mentioned in the object path should be a member of. This should be null if there is no need to narrow this.
-        *  3rd column et seq.: The sequence of method names reflects the object path to the desired method starting from a member of TaxonBase.
-        */
-       private Object[][] enableFreetextFor = {
-                       {"", null, "getName", "getAppendedPhrase"},
-                       {false, null, "getName", "isProtectedAuthorshipCache"},
-                       {false, null, "getName", "isProtectedNameCache"},
-//                     {false, "eu.etaxonomy.cdm.model.agent.Team", "getName", "getCombinationAuthorTeam", "isProtectedNomenclaturalTitleCache"}
-       };
 
        
-       
        protected TaxonNameEditor editor;
        
        protected NameViewer nameViewer;
@@ -193,6 +180,8 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
        protected Composite control;
 
        private Color backgroundColor;
+       private boolean isDirty;
+       
        
        /**
         * <p>Constructor for AbstractGroupedContainer.</p>
@@ -243,7 +232,9 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
                                // mark the composite dirty
                                setDirty(true);
                                // parse the text
-                               NonViralName name = parseHandler.parse();
+                               String text = nameViewer.getTextWidget().getText();
+                               
+                               NonViralName name = parseHandler.parse(text);
                                getTaxonBase().setName(name);
                                getTaxonBase().setTitleCache((getTaxonBase().generateTitle()));
                                
@@ -415,123 +406,46 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
                        getNameViewer().getTextWidget().setEditable(false);
                        
                        // grey out text as a non-editable indicator
-                       getNameViewer().getTextWidget().setForeground(not_editable_color);
+                       getNameViewer().getTextWidget().setForeground(EditorUtil.getColor(Resources.COLOR_DISABLED_EDITOR));
                }
        }
+       
 
        /**
         * Checks whether the freetext should be editable based on specific empty fields.
         * @return
         */
        private boolean freetextEditingAllowed() {
+               NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(getName());
                boolean enableFreetext = true;
 
-               enableFreetext &= taxonFieldsEmpty();
-
+               enableFreetext &= isNameUsedMultipleTimes(name);
+               enableFreetext &= isNameParsable(name);
+               
+               if(!enableFreetext){
+                       getNameViewer().setShowNameNotParsableWarning(name);
+               }
+               
                return enableFreetext;
        }
-
-       /**
-        * Checks whether specific fields of specific type have specific values.
-        * This generic implementation can easily go completely nuts if enableFreetextFor was filled wrong.
-        * @return
-        */
-       private boolean taxonFieldsEmpty() {
-               boolean enableFreetext = true;
-
-               if (getTaxonBase() != null) {
-                       for (Object[] methodSequence : enableFreetextFor) {
-                               int sequenceCount = 0;
-                               Object taxonObject = HibernateProxyHelper.deproxy(getTaxonBase());
-                               Object referenceType = null;
-                               boolean useReference = false;
-                               Class<? extends CdmBase> referenceInstance = null;
-                               for (Object method : methodSequence) {
-                                       sequenceCount++;
-
-                                       if (sequenceCount == 1) {
-                                               referenceType = method;
-                                       } else if (sequenceCount == 2) {
-                                               try {
-                                                       if (method != null) {
-                                                               referenceInstance = (Class<? extends CdmBase>) Class.forName((String) method);
-                                                               useReference = true;
-                                                       } else {
-                                                               useReference = false;
-                                                       }
-                                               } catch (ClassNotFoundException e) {
-                                                       EditorUtil.error(getClass(), e);
-                                                       return false;
-                                               }
-                                       } else {
-                                               Method getter = null;
-                                               try {
-                                                       if (taxonObject != null) { // authorTeams can be null
-                                                               Class<? extends Object> clazz = taxonObject.getClass();
-                                                               boolean goOn = false;
-                                                               if (methodSequence.length == sequenceCount) {
-                                                                       if (useReference) {
-                                                                               if (referenceInstance.newInstance().isInstanceOf((Class<? extends CdmBase>) clazz)) {
-                                                                                       goOn = true;
-                                                                               } else {
-                                                                                       goOn = false;
-                                                                               }
-                                                                       } else {
-                                                                               goOn = true;
-                                                                       }
-                                                               } else {
-                                                                       goOn = true;
-                                                               }
-                                                               
-                                                               if (goOn) {
-                                                                       getter = clazz.getMethod((String)method, (Class<?>[])null);
-                                                                       taxonObject = HibernateProxyHelper.deproxy(getter.invoke(taxonObject, (Object[])null));
-                                                                       if (methodSequence.length == sequenceCount) {
-                                                                               enableFreetext &= isEqual(referenceType, taxonObject);
-//                                                                             if (!enableFreetext) {
-//                                                                                     logger.error("Freetext disabled for: " + taxonBase);
-//                                                                             }
-                                                                       }
-                                                               }
-                                                       }
-                                               } catch (Exception e) {
-                                                       EditorUtil.error(getClass(), e);
-                                                       return false;
-                                               }
-                                       }
-                               }
-                       }
-               } else {
-                       EditorUtil.error(getClass(), "TaxonBase is null. This should not happen.", null);
+       
+       private boolean isNameUsedMultipleTimes(NonViralName name){
+               if(name.getTaxonBases().size() != 1){
+                       getNameViewer().setShowMultipleNameUsageWarning(name);
                        return false;
                }
-
-               return enableFreetext;
+               return true;
        }
-
-       /**
-        * Checks whether two objects are equal. Only works for cases of interest.
-        * @param referenceType
-        * @param object
-        * @return
-        */
-       private boolean isEqual(Object referenceType, Object object) {
-               boolean equal = false;
-               if (referenceType instanceof Boolean) {
-                       if ((Boolean)referenceType.equals((Boolean)object)) {
-                               equal = true;
-                       } else {
-                               equal = false;
-                       }
-               } else {
-                       // This can only be a String in our cases so far. Needs reimplementation in case this is not always the case.
-                       if (referenceType.equals(CdmUtils.Nz((String)object))) {
-                               equal = true;
-                       } else {
-                               equal = false;
-                       }
-               }
-               return equal;
+       
+       private boolean isNameParsable(NonViralName name){
+               boolean isParsable = true; 
+               isParsable &= CdmUtils.isEmpty(name.getAppendedPhrase()); //taxonFieldsEmpty();
+               
+               isParsable &= ! name.isProtectedAuthorshipCache();
+               isParsable &= ! name.isProtectedNameCache();
+               
+               
+               return isParsable;
        }
 
        /**
@@ -539,7 +453,8 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
         */
        public void parseAndCalculateErrors(){
                removeListener();
-               parseHandler.parse();
+               String unparsedNameString = getNameViewer().getTextWidget().getText();
+               parseHandler.parse(unparsedNameString);
                addListener();
                calculateErrors();
        }
@@ -567,8 +482,32 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
         */
        public void persistName(){
                if(isDirty()){
-                       getTaxonBase().setName(parseHandler.parseAndResolveDuplicates());
-                       getTaxonBase().setTitleCache((getTaxonBase().generateTitle()));
+                       getNameViewer().getTextWidget().setEnabled(false);
+                       final String unparsedNameString = getNameViewer().getTextWidget().getText();
+//                     Job job = new Job("Persisting Name"){
+//
+//                             @Override
+//                             protected IStatus run(IProgressMonitor monitor) {
+//                                     
+                                       final NonViralName name = parseHandler.parseAndResolveDuplicates(unparsedNameString);
+//                                     
+//                                     Display.getDefault().asyncExec(new Runnable(){
+//                                             public void run() {
+                                                       getTaxonBase().setName(name);
+                                                       getTaxonBase().setTitleCache((getTaxonBase().generateTitle()));
+                                                       setDirty(false);
+                                                       getNameViewer().getTextWidget().setEnabled(true);                                                       
+//                                             };
+//                                     });
+//                                     
+//                                     
+//                                     return Status.OK_STATUS;
+//                             }
+//                             
+//                     };
+//                     
+//                     job.setPriority(Job.DECORATE);
+//                     job.schedule();
                }
        }
        
@@ -859,7 +798,10 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
         * @param isDirty a boolean.
         */
        public void setDirty(boolean isDirty) {
-               editor.getManagedForm().dirtyStateChanged();
+               if(isDirty){
+                       editor.getManagedForm().dirtyStateChanged();
+               }
+               this.isDirty = isDirty;
        }
        
        /**
@@ -868,7 +810,7 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
         * @return a boolean.
         */
        public boolean isDirty(){
-               return editor.getManagedForm().isDirty();
+               return isDirty;
        }
        
        /**
@@ -1088,4 +1030,65 @@ abstract public class AbstractGroupedContainer<T extends TaxonBase> {
        public void restoreColor() {
                setBackground(backgroundColor);
        }
+       
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.forms.IFormPart#initialize(org.eclipse.ui.forms.IManagedForm)
+        */
+       @Override
+       public void initialize(IManagedForm form) {
+               // TODO Auto-generated method stub
+               
+       }
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.forms.IFormPart#dispose()
+        */
+       @Override
+       public void dispose() {
+               // TODO Auto-generated method stub
+               
+       }
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.forms.IFormPart#commit(boolean)
+        */
+       @Override
+       public void commit(boolean onSave) {
+               if(isDirty()){
+                       persistName();
+               }
+       }
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.forms.IFormPart#setFormInput(java.lang.Object)
+        */
+       @Override
+       public boolean setFormInput(Object input) {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.forms.IFormPart#setFocus()
+        */
+       @Override
+       public void setFocus() {
+               getNameViewer().getControl().setFocus();
+       }
+
+
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.forms.IFormPart#isStale()
+        */
+       @Override
+       public boolean isStale() {
+               // TODO Auto-generated method stub
+               return false;
+       }
 } 
index e5a14f801c89d46c5c3aea0c8c2834e67ad6f800..0b88b75cc6ca7a9cd2e8fc0541d911457dfa7285 100644 (file)
@@ -10,6 +10,7 @@ package eu.etaxonomy.taxeditor.editor.name;
 
 import org.apache.log4j.Logger;
 import org.eclipse.swt.graphics.Font;
+import org.eclipse.ui.forms.IManagedForm;
 
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
@@ -62,4 +63,5 @@ public class AcceptedNameContainer extends AbstractGroupedContainer<Taxon> {
        protected void updateNonEditableInfo() {
                // not needed
        }
+
 }
index 33779a7e046afdd2cfc97a2d2bc76ce4ebe33ed6..e00ea728711bb93916e6082e5ebe6907f26d2b24 100644 (file)
@@ -73,14 +73,15 @@ public class ContainerFactory {
                        HomotypicalSynonymGroup homotypicalSynonymGroup = new HomotypicalSynonymGroup(taxonNameEditor, homotypicGroup);
                        taxonNameEditor.setHomotypicSynonymGroup(homotypicalSynonymGroup);
                        AcceptedNameContainer acceptedNameContainer = new AcceptedNameContainer(taxonNameEditor, homotypicalSynonymGroup);
+                       
                        taxonNameEditor.setAcceptedNameContainer(acceptedNameContainer);
                        for(Synonym synonym : homotypicSynonyms){
-                               createContainerFactoryMethod(SYNONYM, homotypicalSynonymGroup, synonym);
+                               createContainerFactoryMethod(SYNONYM, homotypicalSynonymGroup, synonym, taxonNameEditor);
                        }
                }
                // subsequent runs
                else{
-                       fillGroup(group, homotypicSynonyms, ACCEPTED);
+                       fillGroup(group, homotypicSynonyms, ACCEPTED, taxonNameEditor);
                }
        }
 
@@ -136,7 +137,7 @@ public class ContainerFactory {
                        taxonNameEditor.setMisapplicationsGroup(null);
                }else{
                        AbstractGroup group = getMisappliedGroup(taxonNameEditor);
-                       fillGroup(group, content, MISAPPLICATION);
+                       fillGroup(group, content, MISAPPLICATION, taxonNameEditor);
                }
        }
        
@@ -182,8 +183,9 @@ public class ContainerFactory {
         * @param group a {@link eu.etaxonomy.taxeditor.editor.name.AbstractGroup} object.
         * @param content a {@link java.util.List} object.
         * @param mode a int.
+        * @param taxonNameEditor 
         */
-       public void fillGroup(AbstractGroup group, List<? extends TaxonBase> content, int mode){
+       public void fillGroup(AbstractGroup group, List<? extends TaxonBase> content, int mode, TaxonNameEditor taxonNameEditor){
                if(content == null || (mode != ACCEPTED && content.size() == 0)){
                        return;
                }
@@ -210,7 +212,7 @@ public class ContainerFactory {
                        if(existingContainer != null){
                                group.add(existingContainer);
                        }else{
-                               createContainerFactoryMethod(mode == ACCEPTED ? SYNONYM : mode, group, taxonBase);
+                               createContainerFactoryMethod(mode == ACCEPTED ? SYNONYM : mode, group, taxonBase, taxonNameEditor);
                        }       
                }       
                        
@@ -228,20 +230,29 @@ public class ContainerFactory {
         * @param mode a int.
         * @param group a {@link eu.etaxonomy.taxeditor.editor.name.AbstractGroup} object.
         * @param taxonBase a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.
+        * @param taxonNameEditor 
         * @return a {@link eu.etaxonomy.taxeditor.editor.name.AbstractGroupedContainer} object.
         */
-       public AbstractGroupedContainer createContainerFactoryMethod(int mode, AbstractGroup group, TaxonBase taxonBase){
+       public AbstractGroupedContainer createContainerFactoryMethod(int mode, AbstractGroup group, TaxonBase taxonBase, TaxonNameEditor taxonNameEditor){
+               AbstractGroupedContainer container = null;
+               
                switch(mode){
                case ACCEPTED:
-                       return new AcceptedNameContainer(group.getNameEditor(), group);
+                       container =  new AcceptedNameContainer(group.getNameEditor(), group);
+                       break;
                case SYNONYM:
-                       return new SynonymContainer(group.getNameEditor(), group, (Synonym) taxonBase);
+                       container =  new SynonymContainer(group.getNameEditor(), group, (Synonym) taxonBase);
+                       break;
                case MISAPPLICATION:
-                       return new MisapplicationContainer(group.getNameEditor(), group, (Taxon) taxonBase);
+                       container =  new MisapplicationContainer(group.getNameEditor(), group, (Taxon) taxonBase);
+                       break;
                case CONCEPT:
-                       return null;
+                       container =  null;
                }
-               return null;
+               
+               taxonNameEditor.getManagedForm().addPart(container);
+               
+               return container;
        }
        
        /**
@@ -257,7 +268,7 @@ public class ContainerFactory {
                
                List<Synonym> heterotypicSynonyms = group.getGroup().getSynonymsInGroup(taxon.getSec());
                
-               fillGroup(group, heterotypicSynonyms, SYNONYM);
+               fillGroup(group, heterotypicSynonyms, SYNONYM, taxonNameEditor);
        }
        
        
index 356aec437b61c7ba63ba5a7b442043138291ba94..7a46d2ae61ab5359d252689bb3e7cf7c78f14f24 100644 (file)
@@ -50,7 +50,7 @@ public class HomotypicalSynonymGroup extends AbstractGroup {
        public void redraw() {
                List<Synonym> synonyms = getGroup().getSynonymsInGroup(getNameEditor().getTaxon().getSec());
                
-               ContainerFactory.getInstance().fillGroup(this, synonyms, ContainerFactory.SYNONYM);
+               ContainerFactory.getInstance().fillGroup(this, synonyms, ContainerFactory.SYNONYM, editor);
        }
 
        /**
index 2a1c92c2a8ced2ca9580738c7c9c70151d50b89e..332238ff96af3765e6ffecfe0e7f00534865f67a 100644 (file)
@@ -36,7 +36,7 @@ public class MisappliedGroup extends AbstractGroup<Taxon> {
        @Override
        public void redraw() {
                List<Taxon> misapplications = new ArrayList<Taxon>(editor.getTaxon().getMisappliedNames());
-               ContainerFactory.getInstance().fillGroup(this, misapplications, ContainerFactory.MISAPPLICATION);
+               ContainerFactory.getInstance().fillGroup(this, misapplications, ContainerFactory.MISAPPLICATION, editor);
        }
 
        /**
index 76d0f4f2c92917f2e367bb36b0aa2cb75847f2ee..ad3a5a6dc5215213121890cb138cfba834a1eeb2 100644 (file)
@@ -45,6 +45,7 @@ import org.eclipse.ui.operations.UndoActionHandler;
 import org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess;
 import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
 
+import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
@@ -274,7 +275,28 @@ public class NameViewer extends SourceViewer {
                }
        }
 
+       public void setShowMultipleNameUsageWarning(TaxonNameBase name){
+               if(name.getTaxonBases().size() > 1){
+                       String text = "This taxons name is used multiple times.";
                        
+                       this.getAnnotationModel().addAnnotation(
+                                       new EditorAnnotation(EditorAnnotation.WARNING_TYPE, 0, text),
+                                       new Position(0, 0));
+               }
+       }
+                       
+       /**
+        * @param name
+        */
+       public void setShowNameNotParsableWarning(NonViralName name) {
+               String text = "This name may only be edited in the details view.";
+               
+               this.getAnnotationModel().addAnnotation(
+                               new EditorAnnotation(EditorAnnotation.WARNING_TYPE, 0, text),
+                               new Position(0, 0));
+               
+       }
+       
        /**
         * <p>setText</p>
         *
@@ -407,5 +429,6 @@ public class NameViewer extends SourceViewer {
                        }
                }
        }
+
 }
 
index 9af90533767485a2e3cacd2a7d9dfaca14ad957c..bd2a164d9620bf5b95242fad72a32d63e209aad5 100644 (file)
@@ -173,6 +173,7 @@ public class TaxonNameEditor extends EditorPart implements IMultiPageTaxonEditor
        protected void createManagedForm(Composite composite) {
                                
                managedForm = new ManagedForm(composite) {
+                       
                        public void dirtyStateChanged() {
                                firePropertyChange(PROP_DIRTY);
                        }
@@ -227,10 +228,12 @@ public class TaxonNameEditor extends EditorPart implements IMultiPageTaxonEditor
                
                containerFactory.createConceptGroup(this);
                
-               for(AbstractGroupedContainer container : getGroupedContainers()){
-                       container.setMenu(getMenu());
-               }
+               // disabling for testing
+//             for(AbstractGroupedContainer container : getGroupedContainers()){
+//                     container.setMenu(getMenu());
+//             }
                // Redraw composite
+               
                managedForm.reflow(true);
        }
 
@@ -886,7 +889,7 @@ public class TaxonNameEditor extends EditorPart implements IMultiPageTaxonEditor
        /** {@inheritDoc} */
        public void partChanged(Integer eventType, IWorkbenchPartReference partRef) {
                if(! partRef.getPart(false).equals(editor)){
-                       getSelectedObject().colorSelected(AbstractGroupedContainer.SELECTED_NO_FOCUS);
+//                     getSelectedObject().colorSelected(AbstractGroupedContainer.SELECTED_NO_FOCUS);
                }
        }
 
index e01b39fa90fa9fce625f63e38a265623258918d1..238cbc920b7b1abee3d8c5c488b3f8f375032739 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.taxeditor.editor.name.AbstractGroupedContainer;
 import eu.etaxonomy.taxeditor.forms.AbstractFormSection;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 import eu.etaxonomy.taxeditor.section.occurrence.IDerivedUnitFacadeDetailSection;
 
 /**
@@ -54,8 +54,8 @@ public class CdmSectionPart<T> extends SectionPart implements IPropertyChangeLis
                if(input instanceof AbstractGroupedContainer){
                        input = ((AbstractGroupedContainer) input).getData();
                }
-               if((input instanceof TaxonBase) && (formSection instanceof ITaxonDetailSection)){
-                       ((ITaxonDetailSection) formSection).setTaxon((TaxonBase) input);
+               if((input instanceof TaxonBase) && (formSection instanceof ITaxonBaseDetailSection)){
+                       ((ITaxonBaseDetailSection) formSection).setTaxonBase((TaxonBase) input);
                        return true;
                }
                if((input instanceof DerivedUnitBase) && (formSection instanceof IDerivedUnitFacadeDetailSection)){
@@ -81,11 +81,10 @@ public class CdmSectionPart<T> extends SectionPart implements IPropertyChangeLis
                        
                        Object eventSource = event.getSource();
                        
-                       if(eventSource instanceof ICdmFormElement){
-                               if(formSection.containsFormElement((ICdmFormElement)eventSource)){
-                                       markDirty();
-                               }
-                       }       
+                       if(formSection.equals(eventSource) 
+                                       || (eventSource instanceof ICdmFormElement && formSection.containsFormElement((ICdmFormElement)eventSource))){
+                               markDirty();
+                       }
                }
        }
        
index c93895f5513dd8a622036f227861f511a2cf8753..bab79edf591d122258b21a1343003e31cdba6dc3 100644 (file)
@@ -55,6 +55,7 @@ import eu.etaxonomy.taxeditor.section.key.GeographicalScopeDetailSection;
 import eu.etaxonomy.taxeditor.section.key.PolytomousKeyDetailSection;
 import eu.etaxonomy.taxeditor.section.key.PolytomousKeyNodeDetailSection;
 import eu.etaxonomy.taxeditor.section.key.ScopeRestrictionSection;
+import eu.etaxonomy.taxeditor.section.name.HybridDetailSection;
 import eu.etaxonomy.taxeditor.section.name.NameRelationshipDetailSection;
 import eu.etaxonomy.taxeditor.section.name.NomenclaturalStatusSection;
 import eu.etaxonomy.taxeditor.section.name.NonViralNameDetailSection;
@@ -289,6 +290,11 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                
                formFactory.createHorizontalSeparator(parent, SWT.BORDER);
                
+               HybridDetailSection hybridDetailSection = (HybridDetailSection) 
+                       formFactory.createCdmDetailSection(DetailType.HYBRID, getConversationHolder(), parent, this, Section.TWISTIE);
+       
+               formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+               
                ParsingMessagesSection parsingMessagesSection = (ParsingMessagesSection) 
                        formFactory.createCdmDetailSection(DetailType.PARSINGMESSAGE, getConversationHolder(), parent, this, Section.EXPANDED);
                
@@ -300,8 +306,9 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                addPart(protologSection);               
                addPart(referenceDetailSection);
                addPart(typeDesignationSection);
-               addPart(parsingMessagesSection);
                addPart(nameRelationshipSection);
+               addPart(hybridDetailSection);
+               addPart(parsingMessagesSection);
        }
        
        private void createNameSections(RootElement parent) {
@@ -336,12 +343,18 @@ public class DetailsViewer extends AbstractCdmDataViewer {
                
                formFactory.createHorizontalSeparator(parent, SWT.BORDER);
                
+               HybridDetailSection hybridDetailSection = (HybridDetailSection) 
+                       formFactory.createCdmDetailSection(DetailType.HYBRID, getConversationHolder(), parent, this, Section.TWISTIE);
+               
+               formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+               
                addPart(nonViralNameSection);           
                addPart(nomenclaturalStatusSection);
                addPart(protologSection);               
                addPart(referenceDetailSection);
                addPart(typeDesignationSection);
                addPart(nameRelationshipSection);
+               addPart(hybridDetailSection);
        }
        
        private void createReferenceSections(RootElement parent) {
index 1f9560d16571b2d3c7f71b7359bb6bd15e386057..5d76b0d0cba79d577d53532437574c2f9f341825 100644 (file)
@@ -224,6 +224,8 @@ import eu.etaxonomy.taxeditor.section.key.PolytomousKeyNodeDetailSection;
 import eu.etaxonomy.taxeditor.section.key.ScopeRestrictionSection;
 import eu.etaxonomy.taxeditor.section.name.AuthorshipDetailElement;
 import eu.etaxonomy.taxeditor.section.name.AuthorshipDetailSection;
+import eu.etaxonomy.taxeditor.section.name.HybridDetailElement;
+import eu.etaxonomy.taxeditor.section.name.HybridDetailSection;
 import eu.etaxonomy.taxeditor.section.name.NameDetailElement;
 import eu.etaxonomy.taxeditor.section.name.NameDetailSection;
 import eu.etaxonomy.taxeditor.section.name.NameRelationshipDetailElement;
@@ -1280,7 +1282,8 @@ public class CdmFormFactory extends FormToolkit{
                POLYTOMOUS_KEY, 
                POLYTOMOUS_KEY_NODE, 
                INSTITUTION, 
-               DERIVED_UNIT_GENERAL
+               DERIVED_UNIT_GENERAL, 
+               HYBRID
        }
        
        /**
@@ -1372,6 +1375,9 @@ public class CdmFormFactory extends FormToolkit{
                case DERIVED_UNIT_GENERAL:
                        section = new GeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
                        break;
+               case HYBRID:
+                       section = new HybridDetailSection(this, conversation, parentElement, selectionProvider, style);
+                       break;
                }
                
                if(section == null){
@@ -1464,6 +1470,9 @@ public class CdmFormFactory extends FormToolkit{
                case DERIVED_UNIT_GENERAL:
                        element = new GeneralDetailElement(this, parentElement);
                        break;
+               case HYBRID:
+                       element = new HybridDetailElement(this, parentElement);
+                       break;
                }
                
                if(element == null){
index 4daea84ea4ca1e721fe2644aeb31c9715a6cdcb1..16ed9ab1cd6b6f2cc7c8d4989c507bbe51ea26f6 100644 (file)
@@ -68,9 +68,27 @@ public class PartialElement extends AbstractCdmFormElement implements SelectionL
                this.partial = partial;
                
                if(partial != null){
-                       composite_date.setDate(TimePeriod.getPartialValue(partial, TimePeriod.YEAR_TYPE), 
-                                       TimePeriod.getPartialValue(partial, TimePeriod.MONTH_TYPE), 
-                                       TimePeriod.getPartialValue(partial, TimePeriod.DAY_TYPE));
+                       int year = 0;
+                       int month = 1;
+                       int day = 1;
+                       try{
+                               year = partial.get(DateTimeFieldType.year());
+                       }catch(IllegalArgumentException e){
+                               
+                       }
+                       try{
+                               month = partial.get(DateTimeFieldType.monthOfYear());
+                       }catch(IllegalArgumentException e){
+                               
+                       }
+                       try{
+                               day = partial.get(DateTimeFieldType.dayOfMonth());
+                       }catch(IllegalArgumentException e){
+                               
+                       }
+                       
+                       
+                       composite_date.setDate(year, month, day);
                }
        }
 
index 2c19dd21d8d6d2113ffd6611962505c9aa86ea18..fad1db15438f0ee1980b04158ee2a210d8768e69 100644 (file)
@@ -31,14 +31,17 @@ public class UriWithLabelElement extends TextWithLabelElement {
        protected UriWithLabelElement(CdmFormFactory formFactory,
                        ICdmFormElement parentElement, String labelString,
                        URI initialUri, Integer textHeight, int style) {
-               super(formFactory, parentElement, labelString, initialUri.toString(), textHeight, style);
+               super(formFactory, parentElement, labelString, null, textHeight, style);
+               setUri(initialUri);
        }
        
        /**
         * 
         */
        public void setUri(URI uri) {
-               super.setText(uri.toString());
+               if(uri != null){
+                       super.setText(uri.toString());
+               }
        }
        
        public URI getUri() throws URISyntaxException{
index 4f9e342c1d14080e305f6ba697d188fb1e010ed3..ab8995e51c3f1421c9a4f3816db5605ccf286ae1 100644 (file)
 
 package eu.etaxonomy.taxeditor.section;
 
+import org.eclipse.jface.action.ToolBarManager;
 import org.eclipse.jface.viewers.ISelectionProvider;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.forms.events.ExpansionEvent;
 import org.eclipse.ui.forms.events.IExpansionListener;
 import org.eclipse.ui.forms.widgets.Section;
@@ -55,14 +57,15 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends AbstractFormSecti
        public AbstractCdmDetailSection(CdmFormFactory formFactory,
                        ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
                super(formFactory, conversation, parentElement, selectionProvider, Section.CLIENT_INDENT | style);
-               this.setText(getHeading());
                
-               this.addExpansionListener(this);
+               setText(getHeading());
+               
+               addExpansionListener(this);
                
                createControls(this, SWT.NULL);
        }
-       
-       
+
+
        /**
         * <p>createControls</p>
         *
@@ -136,6 +139,16 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends AbstractFormSecti
                         title = ": " + ((IdentifiableEntity) getEntity()).getTitleCache();
                }
                this.setText(getHeading() + title);
+               setTextClient(createToolbar());
+       }
+       
+
+       /**
+        * @return
+        */
+       protected Control createToolbar() {
+               ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
+               return toolBarManager.createControl(this);
        }
        
        /**
similarity index 64%
rename from taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/ITaxonDetailSection.java
rename to taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/ITaxonBaseDetailSection.java
index f0b3a67284df66397cba23429f025ff8d9935c6c..10e8e1106103a6d0950fa9d5f0f6ca7f803ac332 100644 (file)
@@ -8,13 +8,18 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
  * @author n.hoffmann
  * @version $Id: $
  */
-public interface ITaxonDetailSection{
+public interface ITaxonBaseDetailSection{
 
        /**
         * <p>setTaxon</p>
         *
         * @param taxon a {@link eu.etaxonomy.cdm.model.taxon.TaxonBase} object.
         */
-       public abstract void setTaxon(TaxonBase taxon);
+       public abstract void setTaxonBase(TaxonBase taxon);
 
+       /**
+        * 
+        * @return
+        */
+       public abstract TaxonBase getTaxonBase();
 }
index ae32e447512c2e2669032c2f9f69a6fb7d21cb15..8568473d3f5b8b112ad3df95fbcb390abfdd5ca7 100644 (file)
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.section.description;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.ToolBarManager;
 import org.eclipse.jface.viewers.ISelectionProvider;
@@ -38,9 +37,6 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 public class DescriptionElementDetailSection extends
                AbstractCdmDetailSection<DescriptionElementBase> {
        
-       private static final Logger logger = Logger
-                       .getLogger(DescriptionElementDetailSection.class);
-
        /**
         * <p>Constructor for DescriptionElementDetailSection.</p>
         *
@@ -56,7 +52,7 @@ public class DescriptionElementDetailSection extends
        }
        
        
-       private Control createToolbar() {
+       protected Control createToolbar() {
                if(! hasSpecificElement()){
                        return null;
                }
index 521802d7082a7ded76f9668fd164b44f529ac33d..6e605717b6faa8709f5079ea0541911322963956 100644 (file)
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.section.name;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
@@ -18,10 +17,10 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
-import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>AuthorshipDetailSection class.</p>
@@ -30,11 +29,9 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @created 05.06.2009
  * @version 1.0
  */
-public class AuthorshipDetailSection extends AbstractCdmDetailSection<NonViralName> implements ITaxonDetailSection {
-
-
-       private static final Logger logger = Logger.getLogger(AuthorshipDetailSection.class);
+public class AuthorshipDetailSection extends AbstractCdmDetailSection<NonViralName> implements ITaxonBaseDetailSection {
 
+       private TaxonBase taxonBase;
 
        /**
         * <p>Constructor for AuthorshipDetailSection.</p>
@@ -64,7 +61,8 @@ public class AuthorshipDetailSection extends AbstractCdmDetailSection<NonViralNa
        }
 
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase entity) {
+       public void setTaxonBase(TaxonBase entity) {
+               this.taxonBase = entity;
                NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(entity.getName());
                setEntity(name);
        }
@@ -84,5 +82,13 @@ public class AuthorshipDetailSection extends AbstractCdmDetailSection<NonViralNa
        protected DetailType getDetailType() {
                return DetailType.AUTHORSHIP;
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
        
 }
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/HybridDetailElement.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/HybridDetailElement.java
new file mode 100644 (file)
index 0000000..1192f70
--- /dev/null
@@ -0,0 +1,66 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.
+*/
+
+package eu.etaxonomy.taxeditor.section.name;
+
+import eu.etaxonomy.cdm.model.name.NonViralName;
+import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
+import eu.etaxonomy.taxeditor.forms.CheckboxElement;
+import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
+import eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement;
+
+/**
+ * @author n.hoffmann
+ * @created Jan 5, 2011
+ * @version 1.0
+ */
+public class HybridDetailElement extends AbstractCdmDetailElement<NonViralName> {
+
+       private CheckboxElement checkbox_monomHybrid;
+       private CheckboxElement checkbox_binomHybrid;
+       private CheckboxElement checkbox_trinomHybrid;
+       
+       /**
+        * @param formFactory
+        * @param formElement
+        */
+       public HybridDetailElement(CdmFormFactory formFactory,
+                       ICdmFormElement formElement) {
+               super(formFactory, formElement);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls(eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
+        */
+       @Override
+       protected void createControls(ICdmFormElement formElement, NonViralName entity,
+                       int style) {
+               checkbox_monomHybrid = formFactory.createCheckbox(formElement, "Monom Hybrid", entity.isMonomHybrid(), style);
+               checkbox_binomHybrid = formFactory.createCheckbox(formElement, "Binom Hybrid", entity.isBinomHybrid(), style);
+               checkbox_trinomHybrid = formFactory.createCheckbox(formElement, "Trinom Hybrid", entity.isTrinomHybrid(), style);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java.lang.Object)
+        */
+       @Override
+       public void handleEvent(Object eventSource) {
+               if(eventSource == checkbox_monomHybrid){
+                       getEntity().setMonomHybrid(checkbox_monomHybrid.getSelection());
+               }
+               else if(eventSource == checkbox_monomHybrid){
+                       getEntity().setBinomHybrid(checkbox_binomHybrid.getSelection());
+               }
+               else if(eventSource == checkbox_monomHybrid){
+                       getEntity().setTrinomHybrid(checkbox_trinomHybrid.getSelection());
+               }
+       }
+
+}
diff --git a/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/HybridDetailSection.java b/taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/section/name/HybridDetailSection.java
new file mode 100644 (file)
index 0000000..a4dd312
--- /dev/null
@@ -0,0 +1,92 @@
+// $Id$
+/**
+* Copyright (C) 2007 EDIT
+* 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.
+*/
+
+package eu.etaxonomy.taxeditor.section.name;
+
+import org.eclipse.jface.viewers.ISelectionProvider;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.name.NonViralName;
+import eu.etaxonomy.cdm.model.name.TaxonNameBase;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
+import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
+import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
+
+/**
+ * @author n.hoffmann
+ * @created Jan 5, 2011
+ * @version 1.0
+ */
+public class HybridDetailSection extends AbstractCdmDetailSection<TaxonNameBase> implements
+               ITaxonBaseDetailSection {
+
+       private TaxonBase taxonBase;
+
+       /**
+        * @param formFactory
+        * @param conversation
+        * @param parentElement
+        * @param selectionProvider
+        * @param style
+        */
+       public HybridDetailSection(CdmFormFactory formFactory,
+                       ConversationHolder conversation, ICdmFormElement parentElement,
+                       ISelectionProvider selectionProvider, int style) {
+               super(formFactory, conversation, parentElement, selectionProvider, style);
+       }
+
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection#setTaxonBase(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public void setTaxonBase(TaxonBase taxon) {
+               taxonBase = taxon;
+               NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(taxon.getName());
+               setEntity(name);
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection#getTaxonBase()
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection#getDetailType()
+        */
+       @Override
+       protected DetailType getDetailType() {
+               return DetailType.HYBRID;
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection#getHeading()
+        */
+       @Override
+       public String getHeading() {
+               return "Hybrid";
+       }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection#setSectionTitle()
+        */
+       @Override
+       protected void setSectionTitle() {
+               setText(getHeading());
+       }
+       
+}
index 6c04f27b8442b600cd64af461597068be9bafb7d..87c40bc4413a046dded19adb7f751dffd9ef29e1 100644 (file)
@@ -30,6 +30,7 @@ import eu.etaxonomy.taxeditor.forms.CheckboxElement;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.forms.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.forms.ISelectableElement;
+import eu.etaxonomy.taxeditor.forms.LabelElement;
 import eu.etaxonomy.taxeditor.forms.NumberWithLabelElement;
 import eu.etaxonomy.taxeditor.forms.SelectionArbitrator;
 import eu.etaxonomy.taxeditor.forms.TextWithLabelElement;
@@ -60,8 +61,6 @@ public class NameDetailElement extends AbstractCdmDetailElement<NonViralName> im
        private NumberWithLabelElement text_publicationYear;
        private NumberWithLabelElement text_originalPublicationYear;
        private int cursorPosition;
-       private ToggleableTextElement text_fullTitleCache;
-       private ToggleableTextElement text_titleCache;
        
        /**
         * <p>Constructor for NameDetailElement.</p>
@@ -95,6 +94,7 @@ public class NameDetailElement extends AbstractCdmDetailElement<NonViralName> im
                createSpecificNameParts(this, nonViralName, style);
                
                text_appendedPhrase = formFactory.createTextWithLabelElement(formElement, "Appended Phrase", nonViralName.getAppendedPhrase(), style);
+               
        }
 
        /**
index 7851b0cb74595f41fca95f36c5f3827ed963deac..48b836617700b950985803724c8fbe11eb7e7179 100644 (file)
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.section.name;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
@@ -18,10 +17,10 @@ import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
-import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>NameDetailSection class.</p>
@@ -30,12 +29,9 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @created 05.06.2009
  * @version 1.0
  */
-public class NameDetailSection extends AbstractCdmDetailSection<NonViralName> implements ITaxonDetailSection{
-
-
-       private static final Logger logger = Logger
-                       .getLogger(NameDetailSection.class);
+public class NameDetailSection extends AbstractCdmDetailSection<NonViralName> implements ITaxonBaseDetailSection{
 
+       private TaxonBase taxonBase;
 
        /**
         * <p>Constructor for NameDetailSection.</p>
@@ -52,7 +48,8 @@ public class NameDetailSection extends AbstractCdmDetailSection<NonViralName> im
        }
 
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase entity) {
+       public void setTaxonBase(TaxonBase entity) {
+               this.taxonBase = entity;
                NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(entity.getName());
                setEntity(name);
        }
@@ -80,5 +77,13 @@ public class NameDetailSection extends AbstractCdmDetailSection<NonViralName> im
                        this.setText(getHeading() + title);
                }
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
        
 }
index bc0dba95d7b1a1a8e74e74f7ba9cf5eee30fa880..88f1d6f3ba0fb15198a7b22c021f8f0f15e47dad 100644 (file)
 
 package eu.etaxonomy.taxeditor.section.name;
 
-import org.apache.log4j.Logger;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
 
 import eu.etaxonomy.cdm.model.name.NameRelationship;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.forms.AbstractFormSection;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
@@ -34,8 +34,6 @@ import eu.etaxonomy.taxeditor.section.supplemental.AbstractReferencedEntityEleme
  */
 public class NameRelationshipDetailElement extends AbstractReferencedEntityElement<NameRelationship>{
 
-       private static final Logger logger = Logger
-                       .getLogger(NameRelationshipDetailElement.class);
        private TextWithLabelElement text_ruleConsidered;
        private AbstractSelectionElement selection_toName;
        private NameRelationshipTypeComboElement combo_relationshipType;
@@ -87,7 +85,7 @@ public class NameRelationshipDetailElement extends AbstractReferencedEntityEleme
                        getEntity().setType(combo_relationshipType.getSelection());
                }
                else if(eventSource == selection_toName){
-                       logger.error("No API call available.");
+                       EditorUtil.error(getClass(), "No API call available.", null);
                }
                else if(eventSource == text_ruleConsidered){
                        getEntity().setRuleConsidered(text_ruleConsidered.getText());
index a59b37e38b881191648d94c0d2e203b5de989972..396179a382ec12fd5432dfa2a90e9a3a18483db1 100644 (file)
@@ -12,7 +12,6 @@ package eu.etaxonomy.taxeditor.section.name;
 
 import java.util.Collection;
 
-import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.jface.wizard.WizardDialog;
 
@@ -26,7 +25,7 @@ import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>NameRelationshipDetailSection class.</p>
@@ -35,11 +34,10 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @created Mar 18, 2010
  * @version 1.0
  */
-public class NameRelationshipDetailSection extends AbstractEntityCollectionSection<TaxonNameBase, NameRelationship> implements ITaxonDetailSection{
+public class NameRelationshipDetailSection extends AbstractEntityCollectionSection<TaxonNameBase, NameRelationship> implements ITaxonBaseDetailSection{
+
+       private TaxonBase taxonBase;
 
-       private static final Logger logger = Logger
-                               .getLogger(NameRelationshipDetailSection.class);
-       
        /**
         * <p>Constructor for NameRelationshipDetailSection.</p>
         *
@@ -104,8 +102,17 @@ public class NameRelationshipDetailSection extends AbstractEntityCollectionSecti
         * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#setTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
         */
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase taxon) { 
-               NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(taxon.getName());
+       public void setTaxonBase(TaxonBase entity) {
+               this.taxonBase = entity;
+               NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(entity.getName());
                setEntity(name);
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
 }
index 57331163b6bcfa5917ab385610d719f957d3ae37..fcd5d7ffca080e139018f046cf75d152478d09ac 100644 (file)
@@ -12,8 +12,6 @@ package eu.etaxonomy.taxeditor.section.name;
 
 import java.util.Collection;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
@@ -23,7 +21,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>NomenclaturalStatusSection class.</p>
@@ -32,12 +30,10 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @created Nov 5, 2009
  * @version 1.0
  */
-public class NomenclaturalStatusSection extends AbstractEntityCollectionSection<TaxonNameBase, NomenclaturalStatus> implements ITaxonDetailSection{
+public class NomenclaturalStatusSection extends AbstractEntityCollectionSection<TaxonNameBase, NomenclaturalStatus> implements ITaxonBaseDetailSection{
 
-       private static final Logger logger = Logger
-                       .getLogger(NomenclaturalStatusSection.class);
+       private TaxonBase taxonBase;
 
-       
        /**
         * <p>Constructor for NomenclaturalStatusSection.</p>
         *
@@ -88,9 +84,18 @@ public class NomenclaturalStatusSection extends AbstractEntityCollectionSection<
        }
 
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase taxon) {
-               NonViralName nonViralName = (NonViralName) HibernateProxyHelper.deproxy(taxon.getName());
+       public void setTaxonBase(TaxonBase entity) {
+               this.taxonBase = entity;
+               NonViralName nonViralName = (NonViralName) HibernateProxyHelper.deproxy(entity.getName());
                setEntity(nonViralName);
        }
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
 
 }
index 66bf5c8555eb50931e7884fbdbef9b0497012280..fe310970f5850cd5eee15e38be60f4d47102c7e6 100644 (file)
@@ -56,7 +56,8 @@ public class NonViralNameDetailElement extends AbstractCdmDetailElement<NonViral
        /** {@inheritDoc} */
        @Override
        protected void createControls(ICdmFormElement formElement,
-                       NonViralName entity, int style) {
+                       final NonViralName entity, int style) {
+               
                toggleable_cache = formFactory.createToggleableTextField(formElement, "Cache", entity.getTitleCache(), entity.isProtectedTitleCache() || entity.isProtectedFullTitleCache(), style);
                
                combo_nomenclaturalCode = (NomenclaturalCodeComboElement) formFactory.createEnumComboElement(EnumComboType.NOMENCLATURALCODE, formElement, style);
@@ -72,6 +73,7 @@ public class NonViralNameDetailElement extends AbstractCdmDetailElement<NonViral
                addElement(section_author);
        }
 
+       
        /** {@inheritDoc} */
        @Override
        protected void updateContent() {
index b196a3da7d4b9c46c25a45661bc0271a6d163c2b..c00472646f042b035b0d608423b1efe0d4c344ea 100644 (file)
 
 package eu.etaxonomy.taxeditor.section.name;
 
-import org.apache.log4j.Logger;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ToolBarManager;
 import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Control;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NonViralName;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
-import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.forms.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>NonViralNameDetailSection class.</p>
@@ -31,7 +36,9 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @version 1.0
  */
 public class NonViralNameDetailSection extends AbstractCdmDetailSection<NonViralName>
-               implements ITaxonDetailSection {
+               implements ITaxonBaseDetailSection {
+
+       private TaxonBase taxonBase;
 
        /**
         * <p>Constructor for NonViralNameDetailSection.</p>
@@ -47,6 +54,49 @@ public class NonViralNameDetailSection extends AbstractCdmDetailSection<NonViral
                super(formFactory, conversation, parentElement, selectionProvider, style);
        }
        
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection#createToolbar()
+        */
+       @Override
+       protected Control createToolbar() {
+               ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
+               
+               if(getEntity() != null && checkForMultipleNameUsages(getEntity())){
+               
+                       Action cloneAction = new Action("Clone", Action.AS_PUSH_BUTTON){
+                               public void run() {
+                                       boolean confirm = EditorUtil.confirmDialog("Confirm cloning", "Do you really want to clone the name?");
+                                       
+                                       if(confirm){
+                                               NonViralName clonedName;
+                                               clonedName = (NonViralName) getEntity().clone();
+                                               setEntity(clonedName);
+                                               taxonBase.setName(clonedName);
+                                               taxonBase.generateTitle();
+//                                             EditorUtil.getActiveMultiPageTaxonEditor().r
+                                               firePropertyChangeEvent(new CdmPropertyChangeEvent(NonViralNameDetailSection.this, null));
+                                       }
+                                       
+                               };
+                       };
+                       
+                       cloneAction.setToolTipText("Clone the name if you do not want to edit the shared instance");
+                       
+                       toolBarManager.add(cloneAction);
+               
+               }
+               return toolBarManager.createControl(this);
+       }
+       
+
+       /**
+        * @param nonViralName 
+        * 
+        */
+       private boolean checkForMultipleNameUsages(NonViralName nonViralName) {
+               return nonViralName.getTaxonBases().size() != 1;
+       }
+       
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection#getDetailType()
         */
@@ -69,8 +119,17 @@ public class NonViralNameDetailSection extends AbstractCdmDetailSection<NonViral
         * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#setTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
         */
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase taxon) {
+       public void setTaxonBase(TaxonBase taxon) {
+               taxonBase = taxon;
                NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(taxon.getName());
                setEntity(name);
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
 }
index 21d24631a4a8089624a65c7dfd0a14a0ad9815c2..7493b4ab28914686cd8849d1f544459c0478eb3a 100644 (file)
@@ -24,7 +24,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>ProtologueSection class.</p>
@@ -33,8 +33,10 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @created Nov 5, 2009
  * @version 1.0
  */
-public class ProtologueSection extends AbstractEntityCollectionSection<TaxonNameBase, DescriptionElementBase> implements ITaxonDetailSection{
+public class ProtologueSection extends AbstractEntityCollectionSection<TaxonNameBase, DescriptionElementBase> implements ITaxonBaseDetailSection{
        
+       private TaxonBase taxonBase;
+
        /**
         * <p>Constructor for ProtologueSection.</p>
         *
@@ -88,10 +90,9 @@ public class ProtologueSection extends AbstractEntityCollectionSection<TaxonName
        }
 
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase taxon) {
-               
-               NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(taxon.getName());
-               
+       public void setTaxonBase(TaxonBase entity) {
+               this.taxonBase = entity;
+               NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(entity.getName());
                setEntity(name);
        }
        
@@ -102,4 +103,12 @@ public class ProtologueSection extends AbstractEntityCollectionSection<TaxonName
                }
                return (TaxonNameDescription) name.getDescriptions().iterator().next();
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
 }
index 235a609815247082f1fbe7580348b2d6423f47ff..29992757bf4e008561036cb5be6d2e6a55189fd4 100644 (file)
@@ -12,8 +12,6 @@ package eu.etaxonomy.taxeditor.section.name;
 
 import java.util.Collection;
 
-import org.apache.log4j.Logger;
-
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
@@ -26,7 +24,7 @@ import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractEntityCollectionSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>TypeDesignationSection class.</p>
@@ -35,10 +33,9 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @created May 17, 2010
  * @version 1.0
  */
-public class TypeDesignationSection extends AbstractEntityCollectionSection<TaxonNameBase, TypeDesignationBase> implements ITaxonDetailSection {
+public class TypeDesignationSection extends AbstractEntityCollectionSection<TaxonNameBase, TypeDesignationBase> implements ITaxonBaseDetailSection {
 
-       private static final Logger logger = Logger
-                       .getLogger(TypeDesignationSection.class);
+       private TaxonBase taxonBase;
 
        /**
         * <p>Constructor for TypeDesignationSection.</p>
@@ -53,8 +50,6 @@ public class TypeDesignationSection extends AbstractEntityCollectionSection<Taxo
                super(formFactory, conversation, parentElement, "Type Designations", style);
        }
        
-       
-       
        /** {@inheritDoc} */
        @Override
        public void addElement(TypeDesignationBase element) {
@@ -100,8 +95,9 @@ public class TypeDesignationSection extends AbstractEntityCollectionSection<Taxo
         * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#setTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
         */
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase taxon) { 
-               NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(taxon.getName());
+       public void setTaxonBase(TaxonBase entity) {
+               this.taxonBase = entity;
+               NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(entity.getName());
                setEntity(name);
        }
        
@@ -109,4 +105,12 @@ public class TypeDesignationSection extends AbstractEntityCollectionSection<Taxo
                Rank rank = getEntity().getRank();
                return rank.isSpecies() || rank.isInfraSpecific();
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
 }
index 601a49e42ae9889b89798d69a997c2a25203caf2..aeaca2fcc453009ec6af5811819bb6cbd38d1cf5 100644 (file)
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.section.reference;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
@@ -19,10 +18,10 @@ import eu.etaxonomy.cdm.model.name.TaxonNameBase;
 import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
-import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>NomenclaturalReferenceDetailSection class.</p>
@@ -32,11 +31,9 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @version 1.0
  */
 public class NomenclaturalReferenceDetailSection extends
-               AbstractCdmDetailSection<TaxonNameBase>  implements ITaxonDetailSection{
+               AbstractCdmDetailSection<TaxonNameBase>  implements ITaxonBaseDetailSection{
 
-
-       private static final Logger logger = Logger
-                       .getLogger(NomenclaturalReferenceDetailSection.class);
+       private TaxonBase taxonBase;
 
        /**
         * <p>Constructor for NomenclaturalReferenceDetailSection.</p>
@@ -65,8 +62,9 @@ public class NomenclaturalReferenceDetailSection extends
        }
 
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase taxon) {
-               TaxonNameBase name = (TaxonNameBase) HibernateProxyHelper.deproxy(taxon.getName());
+       public void setTaxonBase(TaxonBase entity) {
+               this.taxonBase = entity;
+               TaxonNameBase name = (TaxonNameBase) HibernateProxyHelper.deproxy(entity.getName());
                setEntity(name);
        }
        
@@ -81,4 +79,12 @@ public class NomenclaturalReferenceDetailSection extends
                }       
                this.setText(getHeading() + title);
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
 }
index fd2c57884b68c58381746ce3e9a47281845d2b3b..4687b1b7fde65727f7acdd58ae8272bc763427c5 100644 (file)
@@ -10,7 +10,6 @@
 
 package eu.etaxonomy.taxeditor.section.reference;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
@@ -23,7 +22,7 @@ import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>ReferenceBaseDetailSection class.</p>
@@ -32,8 +31,10 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @created 05.06.2009
  * @version 1.0
  */
-public class ReferenceDetailSection extends AbstractCdmDetailSection<Reference> implements ITaxonDetailSection{
+public class ReferenceDetailSection extends AbstractCdmDetailSection<Reference> implements ITaxonBaseDetailSection{
        
+       private TaxonBase taxonBase;
+
        /**
         * <p>Constructor for ReferenceBaseDetailSection.</p>
         *
@@ -53,7 +54,8 @@ public class ReferenceDetailSection extends AbstractCdmDetailSection<Reference>
         * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#setTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
         */
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase entity) {
+       public void setTaxonBase(TaxonBase entity) {
+               this.taxonBase = entity;
                NonViralName name = (NonViralName) HibernateProxyHelper.deproxy(entity.getName());
                
                Reference reference = (Reference) HibernateProxyHelper.deproxy(name.getNomenclaturalReference());
@@ -83,5 +85,13 @@ public class ReferenceDetailSection extends AbstractCdmDetailSection<Reference>
                super.refresh();
                EditorUtil.refreshDetailsViewer();
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
        
 }
index d53d2368b84aaa1823a37a1ca72b8250877e214b..8df11424775d5f3c5732b009be3f6a2acbb0fd09 100644 (file)
@@ -23,7 +23,7 @@ import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>ParsingMessagesSection class.</p>
@@ -32,12 +32,13 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @created Mar 3, 2010
  * @version 1.0
  */
-public class ParsingMessagesSection extends AbstractCdmDetailSection<NonViralName> implements ITaxonDetailSection {
+public class ParsingMessagesSection extends AbstractCdmDetailSection<NonViralName> implements ITaxonBaseDetailSection {
 
        /** Constant <code>HEADING_SUCCESS=""</code> */
        public static final String HEADING_SUCCESS = "";
        /** Constant <code>HEADING_PROBLEM="The name has problems."</code> */
        public static final String HEADING_PROBLEM = "The name has problems.";
+       private TaxonBase taxonBase;
        
        /**
         * <p>Constructor for ParsingMessagesSection.</p>
@@ -60,8 +61,9 @@ public class ParsingMessagesSection extends AbstractCdmDetailSection<NonViralNam
        }
        
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase taxon) {
-               setEntity((NonViralName) HibernateProxyHelper.deproxy(taxon.getName()));
+       public void setTaxonBase(TaxonBase entity) {
+               this.taxonBase = entity;
+               setEntity((NonViralName) HibernateProxyHelper.deproxy(entity.getName()));
                destroyParsingProblemComposites();
                if(getEntity().hasProblem()){
                        displayParsingProblems();
@@ -95,4 +97,12 @@ public class ParsingMessagesSection extends AbstractCdmDetailSection<NonViralNam
        protected DetailType getDetailType() {
                return DetailType.PARSINGMESSAGE;
        }
+
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
 }
index 1c5f679c9b4afb198c3e66f8be1a47f5d0f24a48..c69a9fc6c089ba15a92050aaac98593268389db9 100644 (file)
 
 package eu.etaxonomy.taxeditor.section.taxon;
 
-import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.ISelectionProvider;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
-import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.DetailType;
+import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
-import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
+import eu.etaxonomy.taxeditor.section.ITaxonBaseDetailSection;
 
 /**
  * <p>TaxonBaseDetailSection class.</p>
@@ -29,11 +28,10 @@ import eu.etaxonomy.taxeditor.section.ITaxonDetailSection;
  * @created Nov 4, 2009
  * @version 1.0
  */
-public class TaxonBaseDetailSection extends AbstractCdmDetailSection<TaxonBase> implements ITaxonDetailSection{
+public class TaxonBaseDetailSection extends AbstractCdmDetailSection<TaxonBase> implements ITaxonBaseDetailSection{
+
+       private TaxonBase taxonBase;
 
-       private static final Logger logger = Logger
-                       .getLogger(TaxonBaseDetailSection.class);
-       
        /**
         * <p>Constructor for TaxonBaseDetailSection.</p>
         *
@@ -52,8 +50,9 @@ public class TaxonBaseDetailSection extends AbstractCdmDetailSection<TaxonBase>
         * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#setTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
         */
        /** {@inheritDoc} */
-       public void setTaxon(TaxonBase taxon) {
-               TaxonBase taxonBase = (TaxonBase) HibernateProxyHelper.deproxy(taxon); 
+       public void setTaxonBase(TaxonBase entity) {
+               this.taxonBase = entity;
+               TaxonBase taxonBase = (TaxonBase) HibernateProxyHelper.deproxy(entity); 
                setEntity(taxonBase);
        }
 
@@ -69,4 +68,12 @@ public class TaxonBaseDetailSection extends AbstractCdmDetailSection<TaxonBase>
                return DetailType.TAXONBASE;
        }
 
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.section.ITaxonDetailSection#getTaxon(eu.etaxonomy.cdm.model.taxon.TaxonBase)
+        */
+       @Override
+       public TaxonBase getTaxonBase() {
+               return taxonBase;
+       }
+
 }