- extracted super class from AbstractPostOperation (same name)
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / AbstractCdmDetailSection.java
index 86dbf40e53f3f952c8e3e5a87f057dbf088b92a4..3d7efb919918129c259d8ffff6fd97bfecd453ec 100644 (file)
@@ -22,10 +22,9 @@ import org.eclipse.ui.forms.widgets.TableWrapLayout;
 
 import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
 import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
 import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
 
@@ -40,7 +39,7 @@ import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
  */
 public abstract class AbstractCdmDetailSection<ENTITY> extends AbstractFormSection<ENTITY> implements IEnableableFormElement, IExpansionListener {
 
-       protected AbstractCdmDetailElement<ENTITY> detailElement;
+       protected ICdmDetailElement<ENTITY> detailElement;
 
        /**
         * <p>
@@ -66,27 +65,26 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends AbstractFormSecti
        public AbstractCdmDetailSection(CdmFormFactory formFactory,
                        ConversationHolder conversation, ICdmFormElement parentElement,
                        ISelectionProvider selectionProvider, int style) {
-               super(formFactory, parentElement, selectionProvider,
-                               ExpandableComposite.CLIENT_INDENT | style);
-
-               setText(getHeading());
-
-               addExpansionListener(this);
-
-               createControls(this, SWT.NULL);
+           this(formFactory, null, conversation, parentElement, selectionProvider, style);
        }
 
+
        public AbstractCdmDetailSection(CdmFormFactory formFactory, Class<ENTITY> clazz,
                        ConversationHolder conversation, ICdmFormElement parentElement,
                        ISelectionProvider selectionProvider, int style) {
                super(formFactory, parentElement, selectionProvider,
                                ExpandableComposite.CLIENT_INDENT | style);
 
-               setText(getHeading());
+        setText(getHeading());
 
-               addExpansionListener(this);
+        addExpansionListener(this);
 
-               createControlsByType(this, clazz, SWT.NULL);
+        if(clazz==null){
+            createControls(this, style);
+        }
+        else{
+            createControlsByType(this, clazz, SWT.NULL);
+        }
        }
 
        /**
@@ -94,7 +92,18 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends AbstractFormSecti
         * @param definedTermClass
         * @param null1
         */
-       protected void createControlsByType(AbstractCdmDetailSection<ENTITY> abstractCdmDetailSection, Class<ENTITY> entityClass, int style) {
+       protected void createControlsByType(AbstractCdmDetailSection<ENTITY> formElement, Class<ENTITY> entityClass, int style) {
+           TableWrapLayout layout = (TableWrapLayout) getLayoutComposite().getLayout();
+           layout.topMargin = 10;
+           layout.numColumns = 2;
+
+           getLayoutComposite().setLayout(layout);
+           if(entityClass==null){
+               detailElement = createCdmDetailElement(formElement, style);
+           }
+           else{
+               detailElement = createCdmDetailElementByType(formElement, entityClass, style);
+           }
        }
 
 
@@ -111,29 +120,14 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends AbstractFormSecti
         *            a int.
         */
        protected void createControls(AbstractCdmDetailSection<ENTITY> formElement, int style) {
-        TableWrapLayout layout = (TableWrapLayout) getLayoutComposite().getLayout();
-               layout.topMargin = 10;
-               layout.numColumns = 2;
-
-               getLayoutComposite().setLayout(layout);
-               detailElement = createCdmDetailElement(formElement, style);
+           createControlsByType(formElement, null, style);
        }
 
-       //TODO: when all detail type enums are removed this can be abstract 
-       protected AbstractCdmDetailElement<ENTITY> createCdmDetailElement(AbstractCdmDetailSection<ENTITY> parentElement, int style){
-           return formFactory.createCdmDetailElement(getDetailType(), parentElement, style);
-       }
+       protected abstract ICdmDetailElement<ENTITY> createCdmDetailElement(AbstractCdmDetailSection<ENTITY> parentElement, int style);
 
-       /**
-        * <p>
-        * getDetailType
-        * </p>
-        *
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType}
-        *         object.
-        */
-       protected abstract DetailType getDetailType();
+       protected ICdmDetailElement<ENTITY> createCdmDetailElementByType(AbstractCdmDetailSection<ENTITY> parentElement, Class<ENTITY> entityClass, int style){
+           return createCdmDetailElement(parentElement, style);
+       }
 
        /**
         * <p>