// $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.
*/
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.
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}
* @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();
/*
* (non-Javadoc)
- *
+ *
* @see
* eu.etaxonomy.taxeditor.forms.section.AbstractEditorFormSection#setBackground
* (org.eclipse.swt.graphics.Color)
* <p>
* setEntity
* </p>
- *
+ *
* @param entity
* a ENTITY object.
*/
}
/** {@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");
}
}