- extracted super class from AbstractPostOperation (same name)
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / AbstractCdmDetailSection.java
index bb8514339623eb6d16d6129fc3f4c244c4bd26a6..3d7efb919918129c259d8ffff6fd97bfecd453ec 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
  * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
+ * European Distributed Institute of Taxonomy
  * http://www.e-taxonomy.eu
- * 
+ *
  * The contents of this file are subject to the Mozilla Public License Version 1.1
  * See LICENSE.TXT at the top of this package for the full license terms.
  */
@@ -17,46 +17,43 @@ 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;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
 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.forms.AbstractFormSection;
-import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.DetailType;
-import eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.forms.IEnableableFormElement;
-import eu.etaxonomy.taxeditor.ui.forms.ISelectableElement;
+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.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
 
 /**
- * <p>
- * Abstract AbstractCdmDetailSection class.
- * </p>
- * 
+ * This class visualizes an CDM entity of type ENTITY.
+ *
+ * @param <ENTITY> A CDM entity which should be visualized by this section.
+ *
  * @author n.hoffmann
  * @created Feb 26, 2010
  * @version 1.0
  */
-public abstract class AbstractCdmDetailSection<ENTITY> extends
-               AbstractFormSection<ENTITY> implements IEnableableFormElement,
-               IExpansionListener {
+public abstract class AbstractCdmDetailSection<ENTITY> extends AbstractFormSection<ENTITY> implements IEnableableFormElement, IExpansionListener {
 
-       protected AbstractCdmDetailElement<ENTITY> detailElement;
+       protected ICdmDetailElement<ENTITY> detailElement;
 
        /**
         * <p>
         * Constructor for AbstractCdmDetailSection.
         * </p>
-        * 
+        *
         * @param formFactory
-        *            a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory}
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
         *            object.
         * @param conversation
         *            a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
         *            object.
         * @param parentElement
-        *            a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement}
+        *            a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
         *            object.
         * @param selectionProvider
         *            a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
@@ -68,21 +65,53 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends
        public AbstractCdmDetailSection(CdmFormFactory formFactory,
                        ConversationHolder conversation, ICdmFormElement parentElement,
                        ISelectionProvider selectionProvider, int style) {
+           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,
-                               Section.CLIENT_INDENT | style);
+                               ExpandableComposite.CLIENT_INDENT | style);
 
-               setText(getHeading());
+        setText(getHeading());
 
-               addExpansionListener(this);
+        addExpansionListener(this);
 
-               createControls(this, SWT.NULL);
+        if(clazz==null){
+            createControls(this, style);
+        }
+        else{
+            createControlsByType(this, clazz, SWT.NULL);
+        }
        }
 
+       /**
+        * @param abstractCdmDetailSection
+        * @param definedTermClass
+        * @param null1
+        */
+       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);
+           }
+       }
+
+
        /**
         * <p>
         * createControls
         * </p>
-        * 
+        *
         * @param formElement
         *            a
         *            {@link eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection}
@@ -90,34 +119,21 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends
         * @param style
         *            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 = formFactory.createCdmDetailElement(getDetailType(),
-                               formElement, style);
+       protected void createControls(AbstractCdmDetailSection<ENTITY> formElement, int style) {
+           createControlsByType(formElement, null, style);
        }
 
-       /**
-        * <p>
-        * getDetailType
-        * </p>
-        * 
-        * @return a
-        *         {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.DetailType}
-        *         object.
-        */
-       protected abstract DetailType getDetailType();
+       protected abstract ICdmDetailElement<ENTITY> createCdmDetailElement(AbstractCdmDetailSection<ENTITY> parentElement, int style);
+
+       protected ICdmDetailElement<ENTITY> createCdmDetailElementByType(AbstractCdmDetailSection<ENTITY> parentElement, Class<ENTITY> entityClass, int style){
+           return createCdmDetailElement(parentElement, style);
+       }
 
        /**
         * <p>
         * getHeading
         * </p>
-        * 
+        *
         * @return the heading for this section
         */
        public abstract String getHeading();
@@ -137,7 +153,7 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends
 
        /*
         * (non-Javadoc)
-        * 
+        *
         * @see
         * eu.etaxonomy.taxeditor.forms.section.AbstractEditorFormSection#setBackground
         * (org.eclipse.swt.graphics.Color)
@@ -155,7 +171,7 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends
         * <p>
         * setEntity
         * </p>
-        * 
+        *
         * @param entity
         *            a ENTITY object.
         */
@@ -204,19 +220,22 @@ public abstract class AbstractCdmDetailSection<ENTITY> extends
        }
 
        /** {@inheritDoc} */
-       public void setIrrelevant(boolean irrelevant) {
+       @Override
+    public void setIrrelevant(boolean irrelevant) {
                if (detailElement != null) {
                        detailElement.setIrrelevant(irrelevant);
                }
        }
 
        /** {@inheritDoc} */
-       public void expansionStateChanging(ExpansionEvent e) {
+       @Override
+    public void expansionStateChanging(ExpansionEvent e) {
                // logger.warn("Expansion State Changing");
        }
 
        /** {@inheritDoc} */
-       public void expansionStateChanged(ExpansionEvent e) {
+       @Override
+    public void expansionStateChanged(ExpansionEvent e) {
                // logger.warn("Expansion State Changed");
        }
 }