AT: commiting recent merge from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / reference / ReferenceDetailElement.java
index d66086f08fb70821c449aea8f04ec930ee15e970..cf7035e835fe603451779d3f07815447b5e30f9a 100644 (file)
@@ -17,28 +17,25 @@ import java.util.List;
 
 import org.eclipse.swt.SWT;
 
+import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.agent.Institution;
 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
 import eu.etaxonomy.cdm.model.reference.Reference;
 import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
 import eu.etaxonomy.cdm.model.reference.ReferenceType;
 import eu.etaxonomy.taxeditor.model.AuthorHelper;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
-import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.EnumComboType;
-import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.SelectionType;
-import eu.etaxonomy.taxeditor.ui.forms.CdmPropertyChangeEvent;
-import eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.forms.IErrorIntolerableElement;
-import eu.etaxonomy.taxeditor.ui.forms.IExceptionHandler;
-import eu.etaxonomy.taxeditor.ui.forms.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.forms.TimePeriodElement;
-import eu.etaxonomy.taxeditor.ui.forms.ToggleableTextElement;
-import eu.etaxonomy.taxeditor.ui.forms.UriWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.InstitutionSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
-import eu.etaxonomy.taxeditor.ui.term.ReferenceTypeComboElement;
+import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IErrorIntolerableElement;
+import eu.etaxonomy.taxeditor.ui.element.IExceptionHandler;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
+import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
 
 /**
  * <p>
@@ -49,11 +46,9 @@ import eu.etaxonomy.taxeditor.ui.term.ReferenceTypeComboElement;
  * @created Mar 2, 2010
  * @version 1.0
  */
-public class ReferenceDetailElement extends AbstractCdmDetailElement<Reference>
+public class ReferenceDetailElement extends AbstractIdentifiableEntityDetailElement<Reference>
                implements IErrorIntolerableElement, IExceptionHandler {
-
-       // property holder
-       private ToggleableTextElement toggleable_cache;
+       
        private TextWithLabelElement text_edition;
        private TextWithLabelElement text_editor;
        private TextWithLabelElement text_isbn;
@@ -68,13 +63,13 @@ public class ReferenceDetailElement extends AbstractCdmDetailElement<Reference>
        private TextWithLabelElement text_title;
        private TextWithLabelElement text_volume;
        private UriWithLabelElement text_uri;
-       private AgentSelectionElement selection_authorTeam;
+       private EntitySelectionElement<AgentBase> selection_authorTeam;
        private TimePeriodElement element_timePeriod;
-       private ReferenceSelectionElement selection_inReference;
-       private InstitutionSelectionElement selection_institution;
-       private ReferenceTypeComboElement combo_referenceType;
+       private EntitySelectionElement<Reference> selection_inReference;
+       private EntitySelectionElement<Institution> selection_institution;
+       private EnumComboElement<ReferenceType> combo_referenceType;
 
-       private ReferenceSelectionElement selection_inSeries;
+       private EntitySelectionElement<Reference> selection_inSeries;
 
        /**
         * <p>
@@ -82,10 +77,10 @@ public class ReferenceDetailElement extends AbstractCdmDetailElement<Reference>
         * </p>
         * 
         * @param cdmFormFactory
-        *            a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory}
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
         *            object.
         * @param formElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement}
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
         *            object.
         * @param style
         *            a int.
@@ -110,8 +105,7 @@ public class ReferenceDetailElement extends AbstractCdmDetailElement<Reference>
                                "Reference Cache", entity.getTitleCache(),
                                entity.isProtectedTitleCache(), style);
 
-               combo_referenceType = (ReferenceTypeComboElement) formFactory
-                               .createEnumComboElement(EnumComboType.REFERENCETYPE,
+               combo_referenceType = formFactory.createEnumComboElement(ReferenceType.class,
                                                formElement, style);
 
                combo_referenceType.setSelection(entity.getType());
@@ -121,11 +115,11 @@ public class ReferenceDetailElement extends AbstractCdmDetailElement<Reference>
                                "Title", entity.getTitle(), style);
 
                // author team
-               selection_authorTeam = (AgentSelectionElement) formFactory
-                               .createSelectionElement(SelectionType.AGENT,
+               selection_authorTeam = formFactory
+                               .createSelectionElement(AgentBase.class,
                                                getConversationHolder(), formElement, "Author",
                                                AuthorHelper.getAuthor(entity.getAuthorTeam()),
-                                               AgentSelectionElement.DEFAULT, style);
+                                               EntitySelectionElement.ALL, style);
 
                ReferenceType referenceType = entity.getType();
 
@@ -217,11 +211,11 @@ public class ReferenceDetailElement extends AbstractCdmDetailElement<Reference>
                }
 
                if (createInReferenceWidget) {
-                       selection_inReference = (ReferenceSelectionElement) formFactory
-                                       .createSelectionElement(SelectionType.REFERENCE,
+                       selection_inReference = formFactory
+                                       .createSelectionElement(Reference.class,
                                                        getConversationHolder(), element, label,
                                                        reference.getInReference(),
-                                                       ReferenceSelectionElement.DEFAULT, style);
+                                                       EntitySelectionElement.ALL, style);
                }
        }
 
@@ -280,20 +274,20 @@ public class ReferenceDetailElement extends AbstractCdmDetailElement<Reference>
 
                if (referenceType.equals(ReferenceType.Report)) {
                        // institution
-                       selection_institution = (InstitutionSelectionElement) formFactory
-                                       .createSelectionElement(SelectionType.INSTITUTION,
+                       selection_institution = formFactory
+                                       .createSelectionElement(Institution.class,
                                                        getConversationHolder(), element, "Institution",
                                                        reference.getInstitution(),
-                                                       InstitutionSelectionElement.DEFAULT, style);
+                                                       EntitySelectionElement.ALL, style);
                }
 
                if (referenceType.equals(ReferenceType.Thesis)) {
                        // school
-                       selection_institution = (InstitutionSelectionElement) formFactory
-                                       .createSelectionElement(SelectionType.INSTITUTION,
+                       selection_institution = formFactory
+                                       .createSelectionElement(Institution.class,
                                                        getConversationHolder(), element, "School",
                                                        reference.getSchool(),
-                                                       InstitutionSelectionElement.DEFAULT, style);
+                                                       EntitySelectionElement.ALL, style);
                }
 
                if (referenceType.equals(ReferenceType.Proceedings)) {
@@ -344,11 +338,11 @@ public class ReferenceDetailElement extends AbstractCdmDetailElement<Reference>
        private void createPrintedUnitControls(ICdmFormElement element,
                        ReferenceType referenceType, Reference reference, int style) {
                // in series
-               selection_inSeries = (ReferenceSelectionElement) formFactory
-                               .createSelectionElement(SelectionType.REFERENCE,
+               selection_inSeries = formFactory
+                               .createSelectionElement(Reference.class,
                                                getConversationHolder(), element, "In Series",
-                                               reference.getInSeries(),
-                                               ReferenceSelectionElement.DEFAULT, style);
+                                               (Reference) reference.getInSeries(),
+                                               EntitySelectionElement.ALL, style);
 
                // editor
                text_editor = formFactory.createTextWithLabelElement(element, "Editor",
@@ -385,7 +379,7 @@ public class ReferenceDetailElement extends AbstractCdmDetailElement<Reference>
        public void handleEvent(Object eventSource) {
                if (eventSource == combo_referenceType) {
                        getEntity().setType(combo_referenceType.getSelection());
-                       getParentElement().refresh();
+                       updateContent();
                } else if (eventSource == element_timePeriod) {
                        getEntity().setDatePublished(element_timePeriod.getTimePeriod());
                        clearException();
@@ -404,12 +398,7 @@ public class ReferenceDetailElement extends AbstractCdmDetailElement<Reference>
 
                // textfields
                else if (eventSource == toggleable_cache) {
-                       getEntity().setTitleCache(toggleable_cache.getText(),
-                                       toggleable_cache.getState());
-                       // setEnabled(! text_cache.getState(), Arrays.asList(new
-                       // Object[]{text_cache}));
-                       setIrrelevant(toggleable_cache.getState(),
-                                       Arrays.asList(new Object[] { toggleable_cache }));
+                       handleToggleableCacheField();
                } else if (eventSource == text_edition) {
                        getEntity().setEdition(text_edition.getText());
                } else if (eventSource == text_editor) {