/**
- *
+ *
*/
package eu.etaxonomy.taxeditor.ui.element;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.forms.IFormColors;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
-import org.eclipse.ui.forms.widgets.TableWrapData;
-import org.eclipse.ui.forms.widgets.TableWrapLayout;
import org.eclipse.ui.internal.forms.widgets.FormFonts;
import org.joda.time.Partial;
import org.springframework.security.core.GrantedAuthority;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.agent.Institution;
import eu.etaxonomy.cdm.model.agent.Person;
import eu.etaxonomy.cdm.model.agent.Team;
-import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
import eu.etaxonomy.cdm.model.common.Annotation;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.Credit;
+import eu.etaxonomy.cdm.model.common.DefinedTerm;
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.DescriptionElementSource;
import eu.etaxonomy.cdm.model.common.Extension;
+import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
import eu.etaxonomy.cdm.model.common.Group;
-import eu.etaxonomy.cdm.model.common.IAnnotatableEntity;
import eu.etaxonomy.cdm.model.common.ICdmBase;
-import eu.etaxonomy.cdm.model.common.IDefinedTerm;
+import eu.etaxonomy.cdm.model.common.IEnumTerm;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.Marker;
+import eu.etaxonomy.cdm.model.common.TermType;
import eu.etaxonomy.cdm.model.common.TimePeriod;
import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.model.common.VersionableEntity;
import eu.etaxonomy.cdm.model.description.CategoricalData;
import eu.etaxonomy.cdm.model.description.CommonTaxonName;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
import eu.etaxonomy.cdm.model.description.Distribution;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
import eu.etaxonomy.cdm.model.description.KeyStatement;
-import eu.etaxonomy.cdm.model.description.Modifier;
-import eu.etaxonomy.cdm.model.description.PolytomousKey;
-import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
import eu.etaxonomy.cdm.model.description.QuantitativeData;
-import eu.etaxonomy.cdm.model.description.Scope;
import eu.etaxonomy.cdm.model.description.StateData;
import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
import eu.etaxonomy.cdm.model.description.TaxonInteraction;
import eu.etaxonomy.cdm.model.media.MediaRepresentation;
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
import eu.etaxonomy.cdm.model.media.Rights;
+import eu.etaxonomy.cdm.model.molecular.Sequence;
import eu.etaxonomy.cdm.model.name.NameRelationship;
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;
-import eu.etaxonomy.cdm.model.occurrence.Collection;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
-import eu.etaxonomy.cdm.model.occurrence.FieldObservation;
-import eu.etaxonomy.cdm.model.occurrence.Specimen;
import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.model.taxon.Classification;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
-import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.ui.campanula.basicFields.NamedAreaFieldController;
+import eu.etaxonomy.taxeditor.ui.campanula.compatibility.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationDetailsElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationDetailsSection;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationGeneralElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationGeneralElementController;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.FieldObservationGeneralSection;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.GatheringEventDetailsElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.GatheringEventDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.fieldObservation.GatheringEventSection;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.DerivedUnitDetailsElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.DerivedUnitDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.DerivedUnitDetailsSection;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.SpecimenDetailsElement;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.SpecimenDetailsElementController;
+import eu.etaxonomy.taxeditor.ui.campanula.detailViews.specimen.SpecimenGeneralSection;
import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
+import eu.etaxonomy.taxeditor.ui.element.MinMaxTextSection.UnitType;
import eu.etaxonomy.taxeditor.ui.openurl.IOpenUrlEnabled;
import eu.etaxonomy.taxeditor.ui.openurl.OpenUrlSelectorElement;
import eu.etaxonomy.taxeditor.ui.password.EditPasswordElement;
import eu.etaxonomy.taxeditor.ui.section.classification.ClassificationDetailSection;
import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeDetailElement;
import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.common.ReferenceEntityDetailElement;
import eu.etaxonomy.taxeditor.ui.section.common.ReferencedEntityDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.common.RefereneEntityDetailElement;
import eu.etaxonomy.taxeditor.ui.section.description.DerivedUnitElement;
import eu.etaxonomy.taxeditor.ui.section.description.DescribedSpecimenSection;
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionDetailElement;
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionElementSourceSection;
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionSourceElement;
import eu.etaxonomy.taxeditor.ui.section.description.DescriptionSourceSection;
+import eu.etaxonomy.taxeditor.ui.section.description.MediaDetailsSection;
import eu.etaxonomy.taxeditor.ui.section.description.ModifierElement;
import eu.etaxonomy.taxeditor.ui.section.description.ModifierSection;
import eu.etaxonomy.taxeditor.ui.section.description.NaturalLanguageDetailElement;
import eu.etaxonomy.taxeditor.ui.section.description.detail.TextDataDetailElement;
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailElement;
import eu.etaxonomy.taxeditor.ui.section.feature.FeatureDistributionDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.group.GrantedAuthorityDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.group.GrantedAuthorityDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityCollectionElement;
+import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.grantedAuthority.GrantedAuthorityDetailSection;
import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailElement;
import eu.etaxonomy.taxeditor.ui.section.group.GroupDetailSection;
import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailElement;
import eu.etaxonomy.taxeditor.ui.section.name.ProtologueSection;
import eu.etaxonomy.taxeditor.ui.section.name.SpecimenTypeDesignationElement;
import eu.etaxonomy.taxeditor.ui.section.name.TypeDesignationSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.AmplificationGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.ArtworkGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.ArtworkGeneralDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectingAreasDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.CollectionDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.CurrentDeterminationDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitBaseDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitFacadeDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitFacadeDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.DerivedUnitGeneralDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationEventDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.DeterminationHistoryDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldObservationDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldObservationDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.DnaSampleGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.DnaSampleGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldUnitGeneralDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.GeneralDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.GeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.LivingPlantPhotoGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.LivingPlantPhotoGeneralDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.NamedAreaDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.PreservedSpecimenCurrentDeterminationDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.PreservedSpecimenDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.PreservedSpecimenDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.PreservedSpecimenDeterminationDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.PreservedSpecimenDeterminationDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.PreservedSpecimenDeterminationHistoryDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.PreservedSpecimenGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.PreservedSpecimenGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.PreservedSpecimenSourceCollectionDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SequenceGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SequenceGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SequenceReferenceCollectionDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SequenceReferenceCollectionDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SingleReadGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SingleReadGeneralDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.SourceCollectionDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenCollectionDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenScanGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.SpecimenScanGeneralDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.TissueSampleGeneralDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.occurrence.TissueSampleGeneralDetailSection;
import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement;
import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailSection;
import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailElement;
import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection;
import eu.etaxonomy.taxeditor.ui.section.user.UserDetailElement;
import eu.etaxonomy.taxeditor.ui.section.user.UserDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.userecords.UseRecordDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.userecords.UseRecordDetailSection;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.DefinedTermDetailElement;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.DefinedTermDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.vocabulary.FeatureDetailElement;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailSection;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailElement;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermVocabularyDetailSection;
-import eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.AgentSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.ClassificationSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.CollectionSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.DerivedUnitBaseSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.FeatureSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.FeatureTreeSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.FieldObservationSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.GroupSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.InstitutionSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.NameSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
import eu.etaxonomy.taxeditor.ui.selection.NomenclaturalAuthorTeamSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.PersonSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.PolytomousKeyNodeSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.PolytomousKeySelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.ReferenceSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.SynonymSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonBaseSelectionElement;
import eu.etaxonomy.taxeditor.ui.selection.TaxonNodeSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.TaxonSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.TeamSelectionElement;
-import eu.etaxonomy.taxeditor.ui.selection.UserSelectionElement;
/**
* <p>
* CdmFormFactory class.
* </p>
- *
+ *
* @author n.hoffmann
* @created Feb 24, 2010
* @version 1.0
*/
public class CdmFormFactory extends FormToolkit {
- private BoldFontHolder2 boldFontHolder2;
- private MouseListener selectionMouseHandler;
- private FocusListener selectionFocusHandler;
-
- private final Set selectionListenerList = new HashSet();
-
- private final List<IPropertyChangeListener> propertyChangeListeners = new ArrayList<IPropertyChangeListener>();
-
- private final int orientation = Window.getDefaultOrientation();
- private ISelectionProvider selectionProvider;
-
- /**
- * <p>
- * LAYOUT
- * </p>
- *
- * @return a {@link org.eclipse.ui.forms.widgets.TableWrapLayout} object.
- */
- public static final TableWrapLayout LAYOUT() {
- return LAYOUT(1, false);
- }
-
- /**
- * <p>
- * LAYOUT
- * </p>
- *
- * @param columns
- * a int.
- * @param equalWidth
- * a boolean.
- * @return a {@link org.eclipse.ui.forms.widgets.TableWrapLayout} object.
- */
- public static final TableWrapLayout LAYOUT(int columns, boolean equalWidth) {
- TableWrapLayout layout = new TableWrapLayout();
- layout.topMargin = 0;
- layout.rightMargin = 0;
- layout.bottomMargin = 0;
- layout.leftMargin = 0;
- layout.numColumns = columns;
- layout.makeColumnsEqualWidth = equalWidth;
- layout.verticalSpacing = 0;
- layout.horizontalSpacing = 0;
- return layout;
- }
-
- /**
- * <p>
- * FILL
- * </p>
- *
- * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
- */
- public static final TableWrapData FILL() {
- return FILL(1, 1);
- }
-
- /**
- * <p>
- * FILL
- * </p>
- *
- * @param horizontalSpan
- * a int.
- * @param verticalSpan
- * a int.
- * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
- */
- public static final TableWrapData FILL(int horizontalSpan, int verticalSpan) {
- TableWrapData layoutData = new TableWrapData(TableWrapData.FILL_GRAB,
- TableWrapData.FILL_GRAB);
- layoutData.colspan = horizontalSpan;
- layoutData.rowspan = verticalSpan;
- return layoutData;
- }
-
- /**
- * <p>
- * LEFT
- * </p>
- *
- * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
- */
- public static final TableWrapData LEFT() {
- return new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP);
- }
-
- /**
- * <p>
- * RIGHT
- * </p>
- *
- * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
- */
- public static final TableWrapData RIGHT() {
- return new TableWrapData(TableWrapData.RIGHT, TableWrapData.TOP);
- }
-
- /**
- * <p>
- * FILL_HORIZONTALLY
- * </p>
- *
- * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
- */
- public static final TableWrapData FILL_HORIZONTALLY() {
- return FILL_HORIZONTALLY(1, 1);
- }
-
- /**
- * <p>
- * FILL_HORIZONTALLY
- * </p>
- *
- * @param horizontalSpan
- * a int.
- * @param verticalSpan
- * a int.
- * @return a {@link org.eclipse.ui.forms.widgets.TableWrapData} object.
- */
- public static final TableWrapData FILL_HORIZONTALLY(int horizontalSpan,
- int verticalSpan) {
- TableWrapData layoutData = new TableWrapData(TableWrapData.FILL_GRAB,
- TableWrapData.TOP);
- layoutData.colspan = horizontalSpan;
- layoutData.rowspan = verticalSpan;
- return layoutData;
- }
-
- /** Constant <code>EMPTY_SELECTION</code> */
- public static ISelection EMPTY_SELECTION = new ISelection() {
- @Override
- public boolean isEmpty() {
- return true;
- }
- };
-
- private class SelectionMouseHandler extends MouseAdapter {
- @Override
- public void mouseDown(MouseEvent e) {
- notifySelectionListeners(e);
- }
- }
-
- private class SelectionFocusHandler extends FocusAdapter {
- @Override
- public void focusGained(FocusEvent e) {
- notifySelectionListeners(e);
- }
- }
-
- private void notifySelectionListeners(TypedEvent e) {
- Event event = new Event();
- event.widget = e.widget;
- SelectionEvent selectionEvent = new SelectionEvent(event);
-
- for (Object listener : selectionListenerList) {
- ((SelectionListener) listener).widgetSelected(selectionEvent);
- }
- }
-
- /**
- * <p>
- * Constructor for CdmFormFactory.
- * </p>
- *
- * @param display
- * a {@link org.eclipse.swt.widgets.Display} object.
- * @param selectionProvider
- * a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
- */
- public CdmFormFactory(Display display, ISelectionProvider selectionProvider) {
- super(display);
- this.selectionProvider = selectionProvider;
- init();
- }
-
- /**
- * <p>
- * Constructor for CdmFormFactory.
- * </p>
- *
- * @param display
- * a {@link org.eclipse.swt.widgets.Display} object.
- */
- public CdmFormFactory(Display display) {
- super(display);
- init();
- }
-
- /**
- *
- */
- private void init() {
- boldFontHolder2 = new BoldFontHolder2();
- selectionMouseHandler = new SelectionMouseHandler();
- selectionFocusHandler = new SelectionFocusHandler();
- }
-
- /**
- * Creates an instance initialized with the correct selectionProvider
- *
- * Make sure to remove the instance when the entityComposite disposes via
- * destroySelectionArbitrator(..)
- *
- * @param entityElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.IEntityElement}
- * object.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
- * object.
- */
- public SelectionArbitrator createSelectionArbitrator(
- IEntityElement entityElement) {
- SelectionArbitrator selectionArbitrator = new SelectionArbitrator(
- entityElement);
- selectionArbitrator.addSelectionProvider(selectionProvider);
- selectionProvider.addSelectionChangedListener(selectionArbitrator);
- addSelectionListener(selectionArbitrator);
- return selectionArbitrator;
- }
-
- /**
- * <p>
- * destroySelectionArbitrator
- * </p>
- *
- * @param selectionArbitrator
- * a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
- * object.
- */
- public void destroySelectionArbitrator(
- SelectionArbitrator selectionArbitrator) {
- removeSelectionListener(selectionArbitrator);
- if (selectionProvider != null) {
- selectionProvider
- .removeSelectionChangedListener(selectionArbitrator);
- } else {
- StoreUtil
- .error(this.getClass(),
- "Tried to destroy a selection listener from this factories listeners but was null",
- null);
- }
- }
-
- /** {@inheritDoc} */
- @Override
- public void adapt(Composite composite) {
- composite.addMouseListener(selectionMouseHandler);
- super.adapt(composite);
- }
-
- /**
- * <p>
- * adapt
- * </p>
- *
- * @param formElement
- * a
- * {@link eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement}
- * object.
- */
- public void adapt(AbstractCdmFormElement formElement) {
- formElement.setPropertyChangeListeners(propertyChangeListeners);
- }
-
- /** {@inheritDoc} */
- @Override
- public void adapt(Control control, boolean trackFocus, boolean trackKeyboard) {
- if (trackFocus) {
- control.addFocusListener(selectionFocusHandler);
- }
- super.adapt(control, trackFocus, trackKeyboard);
- }
-
- /**
- * <p>
- * destroyElement
- * </p>
- *
- * @param formElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- */
- public void destroyElement(ICdmFormElement formElement) {
- // return if element was not initialized
- if (formElement == null) {
- return;
- }
- // destroy selection arbitrator, if any
- if (formElement instanceof ISelectableElement) {
- destroySelectionArbitrator(((ISelectableElement) formElement)
- .getSelectionArbitrator());
- }
- // remove this element form its parents list of elements
- // ICdmFormElement parentElement = formElement.getParentElement();
- // if(parentElement != null){
- // parentElement.removeElement(formElement);
- // }
- // call destroy on child elements recursively
- for (ICdmFormElement childElement : formElement.getElements()) {
- destroyElement(childElement);
- }
- // dispose of the controls
- for (Control control : formElement.getControls()) {
- // we added the layoutComposite of the parental element as the
- // layout composite to this formElement
- // but we do not want to destroy it.
- if (control.equals(formElement.getLayoutComposite())) {
- continue;
- } else {
- control.dispose();
- control = null;
- }
- }
- }
-
- /**
- * <p>
- * createEmptyCell
- * </p>
- *
- * @param parent
- * a {@link org.eclipse.swt.widgets.Composite} object.
- * @return a {@link org.eclipse.swt.widgets.Label} object.
- */
- public Label createEmptyCell(Composite parent) {
- return this.createLabel(parent, null);
- }
-
- /**
- * <p>
- * createMultilineTextWithLabel
- * </p>
- *
- * @param labelString
- * a {@link java.lang.String} object.
- * @param textHeight
- * a int.
- * @param style
- * a int.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
- * object.
- */
- public TextWithLabelElement createMultilineTextWithLabel(
- ICdmFormElement parentElement, String labelString, int textHeight,
- int style) {
- TextWithLabelElement element = new TextWithLabelElement(this,
- parentElement, labelString, "", textHeight, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createMultiLanguageTextElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param labelString
- * a {@link java.lang.String} object.
- * @param multilanguageText
- * a {@link java.util.Map} object.
- * @param textHeight
- * a int.
- * @param style
- * a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement}
- * object.
- */
- public MultilanguageTextElement createMultiLanguageTextElement(
- ICdmFormElement parentElement, String labelString,
- Map<Language, LanguageString> multilanguageText, int textHeight,
- int style) {
- MultilanguageTextElement element = new MultilanguageTextElement(this,
- parentElement, labelString, multilanguageText, textHeight,
- style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- public KeyStatementElement createKeyStatementElement(
- ICdmFormElement parentElement, String labelString,
- KeyStatement keyStatement, int textHeight, int style) {
- KeyStatementElement element = new KeyStatementElement(this,
- parentElement, labelString, keyStatement, textHeight, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createTextWithLabelElement
- * </p>
- *
- * @param labelString
- * a {@link java.lang.String} object.
- * @param initialText
- * a {@link java.lang.String} object.
- * @param style
- * a int.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
- * object.
- */
- public TextWithLabelElement createTextWithLabelElement(
- ICdmFormElement parentElement, String labelString,
- String initialText, int style) {
- TextWithLabelElement element = new TextWithLabelElement(this,
- parentElement, labelString, initialText, null, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- public UriWithLabelElement createUriWithLabelElement(
- ICdmFormElement parentElement, String labelString, URI initialUri,
- int style) {
- UriWithLabelElement element = new UriWithLabelElement(this,
- parentElement, labelString, initialUri, null, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * @param element
- * @param string
- * @param uri
- * @param style
- * @return
- */
- public OpenUrlSelectorElement createOpenUrlSelectorElement(
- ICdmFormElement parentElement, String labelString,
- IOpenUrlEnabled openUrlEnabled, int style) {
- OpenUrlSelectorElement element = new OpenUrlSelectorElement(this,
- parentElement, labelString, openUrlEnabled, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- *
- * @param parentElement
- * @param labelString
- * @param conversationEnabled
- * @param user
- * @param style
- * @return
- */
- public EditPasswordElement createEditPasswordElement(
- ICdmFormElement parentElement, String labelString,
- ConversationHolder conversation, User user, int style) {
- EditPasswordElement element = new EditPasswordElement(this,
- parentElement, labelString, user, conversation);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createIntegerTextWithLabelElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param labelString
- * a {@link java.lang.String} object.
- * @param initialInteger
- * a {@link java.lang.Integer} object.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement}
- * object.
- */
- public NumberWithLabelElement createIntegerTextWithLabelElement(
- ICdmFormElement parentElement, String labelString,
- Integer initialInteger, int style) {
- NumberWithLabelElement element = new NumberWithLabelElement(this,
- parentElement, labelString, initialInteger, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createFloatTextWithLabelElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param labelString
- * a {@link java.lang.String} object.
- * @param initialFloat
- * a float.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement}
- * object.
- */
- public NumberWithLabelElement createFloatTextWithLabelElement(
- ICdmFormElement parentElement, String labelString,
- float initialFloat, int style) {
- NumberWithLabelElement element = new NumberWithLabelElement(this,
- parentElement, labelString, initialFloat, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createLanguageStringWithLabelElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param labelString
- * a {@link java.lang.String} object.
- * @param languageString
- * a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
- * @param style
- * a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement}
- * object.
- */
- public LanguageStringWithLabelElement createLanguageStringWithLabelElement(
- ICdmFormElement parentElement, String labelString,
- LanguageString languageString, int style) {
- LanguageStringWithLabelElement element = new LanguageStringWithLabelElement(
- this, parentElement, labelString, languageString, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createLanguageStringWithLabelElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param labelString
- * a {@link java.lang.String} object.
- * @param languageString
- * a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
- * @param height
- * a int.
- * @param style
- * a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement}
- * object.
- */
- public LanguageStringWithLabelElement createLanguageStringWithLabelElement(
- ICdmFormElement parentElement, String labelString,
- LanguageString languageString, int height, int style) {
- LanguageStringWithLabelElement element = new LanguageStringWithLabelElement(
- this, parentElement, labelString, languageString, height, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createTextElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param initialText
- * a {@link java.lang.String} object.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
- * object.
- */
- public TextWithLabelElement createTextElement(
- ICdmFormElement parentElement, String initialText, int style) {
- TextWithLabelElement element = new TextWithLabelElement(this,
- parentElement, null, initialText, null, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createKeyValueViewerElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param keyHeading
- * a {@link java.lang.String} object.
- * @param valueHeading
- * a {@link java.lang.String} object.
- * @param map
- * a {@link java.util.Map} object.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.KeyValueViewerElement}
- * object.
- */
- public KeyValueViewerElement createKeyValueViewerElement(
- ICdmFormElement parentElement, String keyHeading,
- String valueHeading, Map<Object, Object> map) {
- KeyValueViewerElement element = new KeyValueViewerElement(this,
- parentElement, keyHeading, valueHeading, map);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createTermComboElement
- * </p>
- *
- * @param termComboType
- * a
- * {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.TermComboType}
- * object.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param labelString
- * a {@link java.lang.String} object.
- * @param selection
- * a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase}
- * object.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.combo.TermComboElement}
- * object.
- */
-
- public <T extends DefinedTermBase> TermComboElement<T> createTermComboElement(
- Class<T> termComboType, ICdmFormElement parentElement,
- String labelString, T selection, int style) {
- TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termComboType, labelString, selection, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createEnumComboElement
- * </p>
- *
- * @param enumComboType
- * a
- * {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EnumComboType}
- * object.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.term.AbstractEnumComboElement}
- * object.
- */
- public <T extends IDefinedTerm> EnumComboElement<T> createEnumComboElement(
- Class<T> enumComboType, ICdmFormElement parentElement,
- int style) {
- EnumComboElement<T> element = new EnumComboElement<T>(this, parentElement, enumComboType, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createBrowserElement
- * </p>
- *
- * @param imageUri
- * a {@link java.net.URI} object.
- * @param style
- * a int.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.BrowserElement} object.
- */
- public BrowserElement createBrowserElement(ICdmFormElement parentElement,
- URI imageUri, int style) {
- BrowserElement element = new BrowserElement(this, parentElement,
- imageUri, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createImageElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param imageUri
- * a {@link java.net.URI} object.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.ImageElement} object.
- */
- public ImageElement createImageElement(ICdmFormElement parentElement,
- URI imageUri, int style) {
- ImageElement element = new ImageElement(this, parentElement, imageUri,
- style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createTextActionElement
- * </p>
- *
- * @param labelString
- * a {@link java.lang.String} object.
- * @param initialText
- * a {@link java.lang.String} object.
- * @param style
- * a int.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param buttonLabel
- * a {@link java.lang.String} object.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextActionElement}
- * object.
- */
- public TextActionElement createTextActionElement(
- ICdmFormElement parentElement, String labelString,
- String buttonLabel, String initialText, int style) {
- TextActionElement element = new TextActionElement(this, parentElement,
- labelString, buttonLabel, initialText, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- *
- * @author n.hoffmann
- * @created Mar 5, 2010
- * @version 1.0
- */
- public static enum SelectionType {
- AGENT, INSTITUTION, NAME, REFERENCE, TAXON_BASE, TAXON, SYNONYM, TEAM, AUTHOR_TEAM, PERSON, DERIVED_UNIT, FIELD_OBSERVATION, FEATURE_TREE, CLASSIFICATION, TAXON_NODE, COLLECTION, FEATURE, POLYTOMOUS_KEY, POLYTOMOUS_KEY_NODE, USER, GROUP
- }
-
- /**
- * <p>
- * createCheckbox
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param label
- * a {@link java.lang.String} object.
- * @param initialState
- * a boolean.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.CheckboxElement} object.
- */
- public CheckboxElement createCheckbox(ICdmFormElement parentElement,
- String label, boolean initialState, int style) {
- CheckboxElement element = new CheckboxElement(this, parentElement,
- label, initialState, style | orientation);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * Creates a section as a part of the form.
- *
- * @return the section widget
- * @param section
- * a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
- * object.
- */
- public Section adapt(AbstractFormSection section) {
- section.setMenu(section.getLayoutComposite().getMenu());
- adapt(section, true, true);
-
- // handle focus and property change events for cdm use
- section.addFocusListener(selectionFocusHandler);
- section.setPropertyChangeListeners(propertyChangeListeners);
-
- if (section.getToggle() != null) {
- section.getToggle().setHoverDecorationColor(
- getColors().getColor(IFormColors.TB_TOGGLE_HOVER));
- section.getToggle().setDecorationColor(
- getColors().getColor(IFormColors.TB_TOGGLE));
- }
-
- section.setFont(boldFontHolder2.getBoldFont(section
- .getLayoutComposite().getFont()));
-
- if ((section.getStyle() & Section.TITLE_BAR) != 0
- || (section.getStyle() & Section.SHORT_TITLE_BAR) != 0) {
- getColors().initializeSectionToolBarColors();
- section.setTitleBarBackground(getColors().getColor(
- IFormColors.TB_BG));
- section.setTitleBarBorderColor(getColors().getColor(
- IFormColors.TB_BORDER));
- }
- // call setTitleBarForeground regardless as it also sets the label color
- section.setTitleBarForeground(getColors().getColor(
- IFormColors.TB_TOGGLE));
- return section;
- }
-
- private class BoldFontHolder2 {
- private Font normalFont;
-
- private Font boldFont;
-
- public BoldFontHolder2() {
- }
-
- public Font getBoldFont(Font font) {
- createBoldFont(font);
- return boldFont;
- }
-
- private void createBoldFont(Font font) {
- if (normalFont == null || !normalFont.equals(font)) {
- normalFont = font;
- dispose();
- }
- if (boldFont == null) {
- boldFont = FormFonts.getInstance().getBoldFont(
- getColors().getDisplay(), normalFont);
- }
- }
-
- public void dispose() {
- if (boldFont != null) {
- FormFonts.getInstance().markFinished(boldFont,
- getColors().getDisplay());
- boldFont = null;
- }
- }
- }
-
- /**
- * <p>
- * createToggleableTextField
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param labelString
- * a {@link java.lang.String} object.
- * @param initialText
- * a {@link java.lang.String} object.
- * @param initialState
- * a boolean.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement}
- * object.
- */
- public ToggleableTextElement createToggleableTextField(
- ICdmFormElement parentElement, String labelString,
- String initialText, boolean initialState, int style) {
- ToggleableTextElement element = new ToggleableTextElement(this,
- parentElement, labelString, initialText, initialState, style
- | orientation);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createTimePeriodElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param labelString
- * a {@link java.lang.String} object.
- * @param timePeriod
- * a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.TimePeriodElement}
- * object.
- */
- public TimePeriodElement createTimePeriodElement(
- ICdmFormElement parentElement, String labelString,
- TimePeriod timePeriod, int style) {
- TimePeriodElement element = new TimePeriodElement(this, parentElement,
- labelString, timePeriod, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createPointElement
- * </p>
- *
- * @param style
- * a int.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param point
- * a {@link eu.etaxonomy.cdm.model.location.Point} object.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.PointElement} object.
- */
- public PointElement createPointElement(ICdmFormElement parentElement,
- Point point, int style) {
- PointElement element = new PointElement(this, parentElement, point,
- style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createDateDetailSection
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.DateDetailSection}
- * object.
- */
- public DateDetailSection createDateDetailSection(
- ICdmFormElement parentElement, int style) {
- DateDetailSection section = new DateDetailSection(this, parentElement,
- style);
- parentElement.addElement(section);
- adapt(section);
- return section;
- }
-
- /**
- * <p>
- * createPartialElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param labelString
- * a {@link java.lang.String} object.
- * @param partial
- * a {@link org.joda.time.Partial} object.
- * @param style
- * a int.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.PartialElement} object.
- */
- public PartialElement createPartialElement(ICdmFormElement parentElement,
- String labelString, Partial partial, int style) {
- PartialElement element = new PartialElement(this, parentElement,
- labelString, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * addSelectionListener
- * </p>
- *
- * @param listener
- * a {@link org.eclipse.swt.events.SelectionListener} object.
- */
- public void addSelectionListener(SelectionListener listener) {
- selectionListenerList.add(listener);
- }
-
- /**
- * <p>
- * removeSelectionListener
- * </p>
- *
- * @param listener
- * a {@link org.eclipse.swt.events.SelectionListener} object.
- */
- public void removeSelectionListener(SelectionListener listener) {
- if (listener == null) {
- StoreUtil
- .error(this.getClass(),
- "Tried to remove a selection listener from this factories listeners but was null",
- null);
- } else {
- selectionListenerList.remove(listener);
- }
- }
-
- /**
- * <p>
- * addPropertyChangeListener
- * </p>
- *
- * @param listener
- * a {@link org.eclipse.jface.util.IPropertyChangeListener}
- * object.
- */
- public void addPropertyChangeListener(IPropertyChangeListener listener) {
- if(propertyChangeListeners.contains(listener)){
- return;
- }
- propertyChangeListeners.add(0, listener);
- }
-
- /**
- * <p>
- * removePropertyChangeListener
- * </p>
- *
- * @param listener
- * a {@link org.eclipse.jface.util.IPropertyChangeListener}
- * object.
- */
- public void removePropertyChangeListener(IPropertyChangeListener listener) {
- propertyChangeListeners.remove(listener);
- }
-
- /**
- * <p>
- * createHorizontalSeparator
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param style
- * a int.
- * @return a {@link org.eclipse.swt.widgets.Label} object.
- */
- public Label createHorizontalSeparator(ICdmFormElement parentElement,
- int style) {
- Label separator = this.createSeparator(
- parentElement.getLayoutComposite(), SWT.HORIZONTAL | style);
- separator.setLayoutData(FILL_HORIZONTALLY());
- return separator;
- }
-
- /**
- * <p>
- * createVersionElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param entity
- * a {@link eu.etaxonomy.cdm.model.common.VersionableEntity}
- * object.
- * @param style
- * a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.section.supplemental.VersionElement}
- * object.
- */
- public VersionElement createVersionElement(ICdmFormElement parentElement,
- VersionableEntity entity, int style) {
- VersionElement element = new VersionElement(this, parentElement,
- entity, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * @param cdmBaseSection
- * @param object
- * @param style
- * @return
- */
- public CdmBaseElement createCdmBaseElement(ICdmFormElement parentElement,
- CdmBase entity, int style) {
- CdmBaseElement element = new CdmBaseElement(this, parentElement,
- entity, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
-
- /**
- * <p>
- * createVersionSection
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param style
- * a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.section.supplemental.VersionSection}
- * object.
- */
- public VersionSection createVersionSection(ICdmFormElement parentElement,
- int style) {
- VersionSection section = new VersionSection(this, parentElement, style);
- parentElement.addElement(section);
- adapt(section);
- return section;
- }
-
- /**
- * @param parent
- * @param i
- * @return
- */
- public CdmBaseSection createCdmBaseSection(ICdmFormElement parentElement, int style) {
- CdmBaseSection section = new CdmBaseSection(this, parentElement, style);
- parentElement.addElement(section);
- adapt(section);
- return section;
- }
-
- /**
- * <p>
- * createEmptyElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @return a {@link eu.etaxonomy.taxeditor.ui.section.EmptyElement} object.
- */
- public EmptyElement createEmptyElement(ICdmFormElement parentElement) {
- EmptyElement element = new EmptyElement(this, parentElement, null,
- SWT.NULL);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createHeadlineSection
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.section.supplemental.HeadlineSection}
- * object.
- */
- public HeadlineSection createHeadlineSection(ICdmFormElement parentElement) {
- HeadlineSection section = new HeadlineSection(this, parentElement,
- SWT.NULL);
- parentElement.addElement(section);
- adapt(section);
- return section;
- }
-
- /**
- * <p>
- * createParsingMessageElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param parserProblem
- * a {@link eu.etaxonomy.cdm.strategy.parser.ParserProblem}
- * object.
- * @param style
- * a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.section.taxon.ParsingMessageElement}
- * object.
- */
- public ParsingMessageElement createParsingMessageElement(
- ICdmFormElement parentElement, ParserProblem parserProblem,
- int style) {
- ParsingMessageElement element = new ParsingMessageElement(this,
- parentElement, parserProblem, style);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- // SIMPLIFY
-
- /**
- *
- */
- public static enum DetailType {
- NONVIRALNAME,
- SCIENTIFICNAME,
- REFERENCEBASE,
- NOMENCLATURALREFERENCE,
- TAXONBASE,
- AUTHORSHIP,
- TEAM,
- PERSON,
- DESCRIPTION,
- DESCRIPTIONELEMENT,
- PARSINGMESSAGE,
- NAMERELATIONSHIP,
- TEAMORPERSONBASE,
- MEDIA,
- FIELD_OBSERVATION,
- DERIVED_UNIT_FACADE,
- GATHERING_EVENT,
- DERIVED_UNIT,
- NATURAL_LANGUAGE,
- FEATURE_DISTRIBUTION,
- CLASSIFICATION,
- TAXON_NODE,
- COLLECTION,
- POLYTOMOUS_KEY,
- POLYTOMOUS_KEY_NODE,
- INSTITUTION,
- DERIVED_UNIT_GENERAL,
- HYBRID,
- USER,
- GROUP,
- DETERMINATION,
- TAXON_RELATIONSHIP,
- REFERENCED_ENTITY,
- TERM_VOCABULARY,
- NAMED_AREA,
- NAMED_AREA_LEVEL
- }
-
- public AbstractFormSection createDefinedTermDetailSection(Class definedTermClass,
- ConversationHolder conversation, ICdmFormElement parentElement,
- ISelectionProvider selectionProvider, int style) {
-
- AbstractFormSection section = new DefinedTermDetailSection(this, definedTermClass, conversation, parentElement, selectionProvider, style);
-
- parentElement.addElement(section);
- adapt(section);
- return section;
-
- }
-
- /**
- * @param definedTermClass
- * @param formElement
- * @param style
- * @return
- */
- public AbstractCdmDetailElement createDefinedTermDetailElement(
- Class definedTermClass, AbstractCdmDetailSection parentElement,
- int style) {
- AbstractCdmDetailElement element = null;
-
- if (NamedArea.class.isAssignableFrom(definedTermClass)){
- element = new eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailElement(this, parentElement);
- }
- else {
- element = new DefinedTermDetailElement(this, parentElement);
- }
-
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createCdmDetailSection
- * </p>
- *
- * @param detailType
- * a
- * {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType}
- * object.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param selectionProvider
- * a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
- * @param style
- * a int.
- * @param conversation
- * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
- * object.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
- * object.
- */
- public AbstractFormSection createCdmDetailSection(DetailType detailType,
- ConversationHolder conversation, ICdmFormElement parentElement,
- ISelectionProvider selectionProvider, int style) {
- AbstractFormSection section = null;
-
- switch (detailType) {
- case SCIENTIFICNAME:
- section = new NameDetailSection(this, conversation, parentElement,
- selectionProvider, style);
- break;
- case REFERENCEBASE:
- section = new ReferenceDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case NOMENCLATURALREFERENCE:
- section = new NomenclaturalReferenceDetailSection(this,
- conversation, parentElement, selectionProvider, style);
- break;
- case TAXONBASE:
- section = new TaxonBaseDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case AUTHORSHIP:
- section = new AuthorshipDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case TEAMORPERSONBASE:
- section = new TeamOrPersonBaseDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case TEAM:
- section = new TeamDetailSection(this, conversation, parentElement,
- null, style);
- break;
- case PERSON:
- section = new PersonDetailSection(this, conversation,
- parentElement, null, style);
- break;
- case DESCRIPTION:
- section = new DescriptionDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case DESCRIPTIONELEMENT:
- section = new DescriptionElementDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case PARSINGMESSAGE:
- section = new ParsingMessagesSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case NONVIRALNAME:
- section = new NonViralNameDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case MEDIA:
- section = new eu.etaxonomy.taxeditor.ui.section.description.MediaDetailsSection(
- this, conversation, parentElement, selectionProvider, style);
- break;
- case DERIVED_UNIT_FACADE:
- section = new DerivedUnitFacadeDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case FIELD_OBSERVATION:
- section = new FieldObservationDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case GATHERING_EVENT:
- section = new GatheringEventDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case DERIVED_UNIT:
- section = new DerivedUnitBaseDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case NATURAL_LANGUAGE:
- section = new NaturalLanguageSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case FEATURE_DISTRIBUTION:
- section = new FeatureDistributionDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case CLASSIFICATION:
- section = new ClassificationDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case TAXON_NODE:
- section = new TaxonNodeDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case POLYTOMOUS_KEY:
- section = new PolytomousKeyDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case POLYTOMOUS_KEY_NODE:
- section = new PolytomousKeyNodeDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case INSTITUTION:
- section = new InstitutionDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case DERIVED_UNIT_GENERAL:
- section = new GeneralDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case HYBRID:
- section = new HybridDetailSection(this, conversation,
- parentElement, selectionProvider, style);
- break;
- case USER:
- section = new UserDetailSection(this, conversation, parentElement,
- selectionProvider, style);
- break;
- case GROUP:
- section = new GroupDetailSection(this, conversation, parentElement,
- selectionProvider, style);
- break;
- case DETERMINATION:
- section = new DeterminationDetailSection(this, conversation, parentElement,
- selectionProvider, style);
- break;
- case TAXON_RELATIONSHIP:
- section = new TaxonRelationshipDetailSection(this, conversation, parentElement,
- selectionProvider, style);
- break;
- case REFERENCED_ENTITY:
- section = new ReferencedEntityDetailSection(this, conversation, parentElement,
- selectionProvider, style);
- break;
- case TERM_VOCABULARY:
- section = new TermVocabularyDetailSection(this, conversation, parentElement,
- selectionProvider, style);
- break;
- case NAMED_AREA:
- section = new NamedAreaDetailSection(this, conversation, parentElement,
- selectionProvider, style);
- break;
- }
-
- if (section == null) {
- throw new RuntimeException(
- "You tried to create a cdm detail section that is not implemented yet.");
- }
-
- parentElement.addElement(section);
- adapt(section);
- return section;
- }
-
-
-
- /**
- * <p>
- * createCdmDetailElement
- * </p>
- *
- * @param detailType
- * a
- * {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.DetailType}
- * object.
- * @param style
- * a int.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement}
- * object.
- */
- public AbstractCdmDetailElement createCdmDetailElement(
- DetailType detailType, ICdmFormElement parentElement, int style) {
- AbstractCdmDetailElement element = null;
-
- switch (detailType) {
- case SCIENTIFICNAME:
- element = new NameDetailElement(this, parentElement, style);
- break;
- case REFERENCEBASE:
- element = new ReferenceDetailElement(this, parentElement, style);
- break;
- case NOMENCLATURALREFERENCE:
- element = new NomenclaturalReferenceDetailElement(this,
- parentElement, style);
- break;
- case TAXONBASE:
- element = new TaxonBaseDetailElement(this, parentElement, style);
- break;
- case AUTHORSHIP:
- element = new AuthorshipDetailElement(this, parentElement, style);
- break;
- case TEAM:
- element = new TeamDetailElement(this, parentElement, style);
- break;
- case PERSON:
- element = new PersonDetailElement(this, parentElement, style);
- break;
- case DESCRIPTION:
- element = new DescriptionDetailElement(this, parentElement, style);
- break;
- case DESCRIPTIONELEMENT:
- element = new DescriptionElementDetailElement(this, parentElement,
- style);
- break;
- case NONVIRALNAME:
- element = new NonViralNameDetailElement(this, parentElement);
- break;
- case DERIVED_UNIT_FACADE:
- element = new DerivedUnitFacadeDetailElement(this, parentElement);
- break;
- case FIELD_OBSERVATION:
- element = new FieldObservationDetailElement(this, parentElement);
- break;
- case GATHERING_EVENT:
- element = new GatheringEventDetailElement(this, parentElement);
- break;
- case DERIVED_UNIT:
- element = new DerivedUnitBaseDetailElement(this, parentElement);
- break;
- case NATURAL_LANGUAGE:
- element = new NaturalLanguageDetailElement(this, parentElement);
- break;
- case FEATURE_DISTRIBUTION:
- element = new FeatureDistributionDetailElement(this, parentElement);
- break;
- case CLASSIFICATION:
- element = new ClassificationDetailElement(this, parentElement);
- break;
- case TAXON_NODE:
- element = new TaxonNodeDetailElement(this, parentElement);
- break;
- case COLLECTION:
- element = new CollectionDetailElement(this, parentElement);
- break;
- case POLYTOMOUS_KEY:
- element = new PolytomousKeyDetailElement(this, parentElement);
- break;
- case POLYTOMOUS_KEY_NODE:
- element = new PolytomousKeyNodeDetailElement(this, parentElement);
- break;
- case INSTITUTION:
- element = new InstitutionDetailElement(this, parentElement);
- break;
- case DERIVED_UNIT_GENERAL:
- element = new GeneralDetailElement(this, parentElement);
- break;
- case HYBRID:
- element = new HybridDetailElement(this, parentElement);
- break;
- case USER:
- element = new UserDetailElement(this, parentElement);
- break;
- case GROUP:
- element = new GroupDetailElement(this, parentElement);
- break;
- case DETERMINATION:
- element = new DeterminationDetailElement(this, parentElement);
- break;
- case TAXON_RELATIONSHIP:
- element = new TaxonRelationshipDetailElement(this, parentElement);
- break;
- case REFERENCED_ENTITY:
- element = new RefereneEntityDetailElement(this, parentElement);
- break;
- case TERM_VOCABULARY:
- element = new TermVocabularyDetailElement(this, parentElement);
- break;
- case NAMED_AREA:
- element = new eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailElement(this, parentElement);
- break;
- case NAMED_AREA_LEVEL:
- element = new DefinedTermDetailElement<NamedAreaLevel>(this, parentElement);
- break;
- }
-
- if (element == null) {
- StoreUtil
- .error(this.getClass(),
- "Detail element was not created. Seems like the case was not implemented for the requested detail type: "
- + detailType, null);
- }
-
+ private BoldFontHolder2 boldFontHolder2;
+ private MouseListener selectionMouseHandler;
+ private FocusListener selectionFocusHandler;
+
+ private final Set<SelectionListener> selectionListenerList = new HashSet<SelectionListener>();
+
+ private final List<IPropertyChangeListener> propertyChangeListeners = new ArrayList<IPropertyChangeListener>();
+
+ private final int orientation = Window.getDefaultOrientation();
+ private ISelectionProvider selectionProvider;
+
+ /** Constant <code>EMPTY_SELECTION</code> */
+ public static ISelection EMPTY_SELECTION = new ISelection() {
+ @Override
+ public boolean isEmpty() {
+ return true;
+ }
+ };
+
+ /**
+ *
+ * @author n.hoffmann
+ * @date Jan 25, 2010
+ *
+ */
+ private class SelectionMouseHandler extends MouseAdapter {
+ @Override
+ public void mouseDown(MouseEvent e) {
+ notifySelectionListeners(e);
+ }
+ }
+
+ /**
+ *
+ * @author n.hoffmann
+ * @date Jan 25, 2010
+ *
+ */
+ private class SelectionFocusHandler extends FocusAdapter {
+ @Override
+ public void focusGained(FocusEvent e) {
+ notifySelectionListeners(e);
+ }
+ }
+
+ private void notifySelectionListeners(TypedEvent e) {
+ Event event = new Event();
+ event.widget = e.widget;
+ SelectionEvent selectionEvent = new SelectionEvent(event);
+
+ for (SelectionListener listener : selectionListenerList) {
+ listener.widgetSelected(selectionEvent);
+ }
+ }
+
+ /**
+ * <p>
+ * Constructor for CdmFormFactory.
+ * </p>
+ *
+ * @param display
+ * a {@link org.eclipse.swt.widgets.Display} object.
+ * @param selectionProvider
+ * a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
+ */
+ public CdmFormFactory(Display display, ISelectionProvider selectionProvider) {
+ super(display);
+ this.selectionProvider = selectionProvider;
+ init();
+ }
+
+ /**
+ * <p>
+ * Constructor for CdmFormFactory.
+ * </p>
+ *
+ * @param display
+ * a {@link org.eclipse.swt.widgets.Display} object.
+ */
+ public CdmFormFactory(Display display) {
+ super(display);
+ init();
+ }
+
+ /**
+ *
+ */
+ private void init() {
+ boldFontHolder2 = new BoldFontHolder2();
+ selectionMouseHandler = new SelectionMouseHandler();
+ selectionFocusHandler = new SelectionFocusHandler();
+ }
+
+ /**
+ * Creates an instance initialized with the correct selectionProvider
+ *
+ * Make sure to remove the instance when the entityComposite disposes via
+ * destroySelectionArbitrator(..)
+ *
+ * @param entityElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.IEntityElement}
+ * object.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
+ * object.
+ */
+ public SelectionArbitrator createSelectionArbitrator(IEntityElement entityElement) {
+ SelectionArbitrator selectionArbitrator = new SelectionArbitrator(entityElement);
+ selectionArbitrator.addSelectionProvider(selectionProvider);
+ selectionProvider.addSelectionChangedListener(selectionArbitrator);
+ addSelectionListener(selectionArbitrator);
+ return selectionArbitrator;
+ }
+
+ /**
+ * <p>
+ * destroySelectionArbitrator
+ * </p>
+ *
+ * @param selectionArbitrator
+ * a
+ * {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
+ * object.
+ */
+ public void destroySelectionArbitrator(SelectionArbitrator selectionArbitrator) {
+ removeSelectionListener(selectionArbitrator);
+ if (selectionProvider != null) {
+ selectionProvider.removeSelectionChangedListener(selectionArbitrator);
+ } else {
+ AbstractUtility.error(this.getClass(),
+ "Tried to destroy a selection listener from this factories listeners but was null", null);
+ }
+ }
+
+ /**
+ * <p>
+ * Adapts the {@link AbstractCdmFormElement}:<br>
+ * - sets the {@link IPropertyChangeListener}s handled by this class
+ * </p>
+ *
+ * @param formElement
+ * a
+ * {@link eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement}
+ * object.
+ */
+ public void adapt(AbstractCdmFormElement formElement) {
+ formElement.setPropertyChangeListeners(propertyChangeListeners);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void adapt(Control control, boolean trackFocus, boolean trackKeyboard) {
+ if (trackFocus) {
+ control.addFocusListener(selectionFocusHandler);
+ }
+ super.adapt(control, trackFocus, trackKeyboard);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void adapt(Composite composite) {
+ composite.addMouseListener(selectionMouseHandler);
+ super.adapt(composite);
+ }
+
+ /**
+ * <p>
+ * destroyElement
+ * </p>
+ *
+ * @param formElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ */
+ public void destroyElement(ICdmFormElement formElement) {
+ // return if element was not initialized
+ if (formElement == null) {
+ return;
+ }
+ // destroy selection arbitrator, if any
+ if (formElement instanceof ISelectableElement) {
+ destroySelectionArbitrator(((ISelectableElement) formElement).getSelectionArbitrator());
+ }
+ // remove this element form its parents list of elements
+ // ICdmFormElement parentElement = formElement.getParentElement();
+ // if(parentElement != null){
+ // parentElement.removeElement(formElement);
+ // }
+ // call destroy on child elements recursively
+ for (ICdmFormElement childElement : formElement.getElements()) {
+ destroyElement(childElement);
+ }
+ // dispose of the controls
+ for (Control control : formElement.getControls()) {
+ // we added the layoutComposite of the parental element as the
+ // layout composite to this formElement
+ // but we do not want to destroy it.
+ if (control.equals(formElement.getLayoutComposite())) {
+ continue;
+ } else {
+ control.dispose();
+ control = null;
+ }
+ }
+ }
+
+ /**
+ * <p>
+ * createEmptyCell
+ * </p>
+ *
+ * @param parent
+ * a {@link org.eclipse.swt.widgets.Composite} object.
+ * @return a {@link org.eclipse.swt.widgets.Label} object.
+ */
+ public Label createEmptyCell(Composite parent) {
+ return this.createLabel(parent, null);
+ }
+
+ /**
+ * <p>
+ * createMultilineTextWithLabel
+ * </p>
+ *
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param textHeight
+ * a int.
+ * @param style
+ * a int.
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
+ * object.
+ */
+ public TextWithLabelElement createMultilineTextWithLabel(ICdmFormElement parentElement, String labelString,
+ int textHeight, int style) {
+ TextWithLabelElement element = new TextWithLabelElement(this, parentElement, labelString, "", textHeight, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createMultiLanguageTextElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param multilanguageText
+ * a {@link java.util.Map} object.
+ * @param textHeight
+ * a int.
+ * @param style
+ * a int.
+ * @return a
+ * {@link eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement}
+ * object.
+ */
+ public MultilanguageTextElement createMultiLanguageTextElement(ICdmFormElement parentElement, String labelString,
+ Map<Language, LanguageString> multilanguageText, int textHeight, int style) {
+ MultilanguageTextElement element = new MultilanguageTextElement(this, parentElement, labelString,
+ multilanguageText, textHeight, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ public KeyStatementElement createKeyStatementElement(ICdmFormElement parentElement, String labelString,
+ KeyStatement keyStatement, int textHeight, int style) {
+ KeyStatementElement element = new KeyStatementElement(this, parentElement, labelString, keyStatement,
+ textHeight, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * Creates a text field with a label. The initial content will be the return value of the initalObject's {@link #toString()}
+ * method.<br>
+ * <b>Note</b>: if initialObject is <code>null</code> then an empty string is used.
+ * @param parentElement the parent container
+ * @param labelString the label name
+ * @param initialObject the object from which the <code>toString()</code> method is called
+ * @param style {@link SWT} style constant
+ * @return the created textfield with label
+ */
+ public TextWithLabelElement createTextWithLabelElement(ICdmFormElement parentElement, String labelString,
+ Object initialObject, int style) {
+ return createTextWithLabelElement(parentElement, labelString, initialObject==null?"":initialObject.toString(), style);
+ }
+
+ /**
+ * <p>
+ * createTextWithLabelElement
+ * </p>
+ *
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param initialText
+ * a {@link java.lang.String} object.
+ * @param style
+ * a int.
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
+ * object.
+ */
+ public TextWithLabelElement createTextWithLabelElement(ICdmFormElement parentElement, String labelString,
+ String initialText, int style) {
+ if(initialText==null){
+ initialText = "";
+ }
+
+ TextWithLabelElement element = new TextWithLabelElement(this, parentElement, labelString, initialText, null,
+ style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ public UriWithLabelElement createUriWithLabelElement(ICdmFormElement parentElement, String labelString,
+ URI initialUri, int style) {
+ UriWithLabelElement element = new UriWithLabelElement(this, parentElement, labelString, initialUri, null, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * @param element
+ * @param string
+ * @param uri
+ * @param style
+ * @return
+ */
+ public OpenUrlSelectorElement createOpenUrlSelectorElement(ICdmFormElement parentElement, String labelString,
+ IOpenUrlEnabled openUrlEnabled, int style) {
+ OpenUrlSelectorElement element = new OpenUrlSelectorElement(this, parentElement, labelString, openUrlEnabled,
+ style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ *
+ * @param parentElement
+ * @param labelString
+ * @param conversationEnabled
+ * @param user
+ * @param style
+ * @return
+ */
+ public EditPasswordElement createEditPasswordElement(ICdmFormElement parentElement, String labelString,
+ ConversationHolder conversation, User user, int style) {
+ EditPasswordElement element = new EditPasswordElement(this, parentElement, labelString, user, conversation);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createIntegerTextWithLabelElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param initialInteger
+ * a {@link java.lang.Integer} object.
+ * @param style
+ * a int.
+ * @return a
+ * {@link eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement}
+ * object.
+ */
+ public NumberWithLabelElement createNumberTextWithLabelElement(
+ ICdmFormElement parentElement, String labelString,
+ Number initialNumber, int style) {
+ NumberWithLabelElement element = new NumberWithLabelElement(this,
+ parentElement, labelString, initialNumber, style);
adapt(element);
parentElement.addElement(element);
return element;
}
- /**
- *
- * @author n.hoffmann
- * @created Mar 5, 2010
- * @version 1.0
- */
- public static enum EntityDetailType {
- TEAM,
- TEAMMEMBER,
- ANNOTATION,
- CREDIT,
- DESCRIPTIONELEMENTSOURCE,
- EXTENSION,
- MARKER,
- MEDIA,
- DESCRIPTIONELEMENTMEDIA,
- MEDIAREPRESENTATION,
- MEDIAREPRESENTATIONPART,
- MODIFIER,
- NOMENCLATURALSTATUS,
- NAME_RELATIONSHIP,
- PROTOLOG,
- RIGHTS,
- SOURCE,
- SCOPE,
- DESCRIPTIONSOURCE,
- TYPEDESIGNATION,
- STATE_DATA,
- STATISTICAL_MEASUREMENT_VALUE,
- DESCRIBED_SPECIMEN,
- COLLECTING_AREA,
- DETERMINATION_EVENT,
- SPECIMEN_COLLECTION,
- IDENTIFIABLE_SOURCE_COLLECTION,
- GEOGRAPHICAL_SCOPE,
- SCOPE_RESTRICTION,
- MEMBER,
- GRANTED_AUTHORITY,
- GROUPS_BY_USER,
- TAXONOMIC_SCOPE,
- DETERMINATION_CURRENT,
- DETERMINATION_HISTORY
- }
-
- /**
- * <p>
- * createEntityDetailSection
- * </p>
- *
- * @param entityDetailType
- * a
- * {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EntityDetailType}
- * object.
- * @param style
- * a int.
- * @param conversation
- * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
- * object.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @return a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
- * object.
- */
- public AbstractFormSection createEntityDetailSection(
- EntityDetailType entityDetailType, ConversationHolder conversation,
- ICdmFormElement parentElement, int style) {
- AbstractFormSection section = null;
-
- switch (entityDetailType) {
- case TEAM:
- section = new TeamDetailSection(this, conversation, parentElement,
- null, style);
- break;
- case TEAMMEMBER:
- section = new TeamMemberSection(this, conversation, parentElement,
- style);
- break;
- case ANNOTATION:
- section = new AnnotationSection(this, conversation, parentElement,
- style);
- break;
- case CREDIT:
- section = new CreditSection(this, conversation, parentElement,
- style);
- break;
- case DESCRIPTIONELEMENTSOURCE:
- section = new DescriptionElementSourceSection(this, conversation,
- parentElement, style);
- break;
- case EXTENSION:
- section = new ExtensionSection(this, conversation, parentElement,
- style);
- break;
- case MARKER:
- section = new MarkerSection(this, conversation, parentElement,
- style);
- break;
- case MEDIA:
- section = new MediaSection(this, conversation, parentElement, style);
- break;
- case DESCRIPTIONELEMENTMEDIA:
- section = new DescriptionElementMediaSection(this, conversation,
- parentElement, style);
- break;
- case MEDIAREPRESENTATION:
- section = new MediaRepresentationSection(this, conversation,
- parentElement, style);
- break;
- case MEDIAREPRESENTATIONPART:
- section = new MediaRepresentationPartSection(this, conversation,
- parentElement, style);
- break;
- case MODIFIER:
- section = new ModifierSection(this, conversation, parentElement,
- style);
- break;
- case NOMENCLATURALSTATUS:
- section = new NomenclaturalStatusSection(this, conversation,
- parentElement, style);
- break;
- case NAME_RELATIONSHIP:
- section = new NameRelationshipDetailSection(this, conversation,
- parentElement, style);
- break;
- case PROTOLOG:
- section = new ProtologueSection(this, conversation, parentElement,
- style);
- break;
- case RIGHTS:
- section = new RightsSection(this, conversation, parentElement,
- style);
- break;
- case SOURCE:
- section = new SourceSection(this, conversation, parentElement,
- style);
- break;
- case SCOPE:
- section = new ScopeSection(this, conversation, parentElement, style);
- break;
- case DESCRIPTIONSOURCE:
- section = new DescriptionSourceSection(this, conversation,
- parentElement, style);
- break;
- case TYPEDESIGNATION:
- section = new TypeDesignationSection(this, conversation,
- parentElement, style);
- break;
- case STATE_DATA:
- section = new StateDataSection(this, conversation, parentElement,
- style);
- break;
- case STATISTICAL_MEASUREMENT_VALUE:
- section = new StatisticalMeasurementValueSection(this,
- conversation, parentElement, style);
- break;
- case DESCRIBED_SPECIMEN:
- section = new DescribedSpecimenSection(this, conversation,
- parentElement, style);
- break;
- case COLLECTING_AREA:
- section = new CollectingAreasDetailSection(this, conversation,
- parentElement, style);
- break;
- case DETERMINATION_CURRENT:
- section = new CurrentDeterminationDetailSection(this, conversation,
- parentElement, style);
- break;
- case DETERMINATION_HISTORY:
- section = new DeterminationHistoryDetailSection(this, conversation,
- parentElement, style);
- break;
- case SPECIMEN_COLLECTION:
- section = new SpecimenCollectionDetailSection(this, conversation,
- parentElement, style);
- break;
- case IDENTIFIABLE_SOURCE_COLLECTION:
- section = new SourceCollectionDetailSection(this, conversation,
- parentElement, style);
- break;
- case GEOGRAPHICAL_SCOPE:
- section = new GeographicalScopeDetailSection(this, conversation,
- parentElement, style);
- break;
- case SCOPE_RESTRICTION:
- section = new ScopeRestrictionSection(this, conversation,
- parentElement, style);
- break;
- case MEMBER:
- section = new MemberDetailSection(this, conversation,
- parentElement, style);
- break;
- case GRANTED_AUTHORITY:
- section = new GrantedAuthorityDetailSection(this, conversation,
- parentElement, style);
- break;
- case GROUPS_BY_USER:
- section = new GroupsByUserDetailSection(this, conversation,
- parentElement, style);
- break;
- case TAXONOMIC_SCOPE:
- section = new TaxonomicScopeSection(this, conversation,
- parentElement, style);
- break;
- }
- parentElement.addElement(section);
- adapt(section);
- return section;
- }
-
- /**
- * <p>
- * createEntityCollectionElement
- * </p>
- *
- * @param removeListener
- * a {@link org.eclipse.swt.events.SelectionListener} object.
- * @param style
- * a int.
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
- * object.
- * @param versionableEntity
- * a {@link eu.etaxonomy.cdm.model.common.IVersionableEntity}
- * object.
- * @param backgroundColor
- * a {@link org.eclipse.swt.graphics.Color} object.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement}
- * object.
- */
- public AbstractEntityCollectionElement createEntityCollectionElement(
- AbstractFormSection parentElement, Object versionableEntity,
- SelectionListener removeListener, Color backgroundColor, int style) {
- AbstractEntityCollectionElement element = null;
-
- Object entity = HibernateProxyHelper.deproxy(versionableEntity);
-
- if (entity instanceof Annotation) {
- element = new AnnotationElement(this, parentElement,
- (Annotation) entity, removeListener, style);
- } else if (entity instanceof Person) {
- element = new TeamMemberElement(this, parentElement,
- (Person) entity, removeListener, style);
- } else if (entity instanceof Credit) {
- element = new CreditElement(this, parentElement, (Credit) entity,
- removeListener, style);
- } else if (entity instanceof Extension) {
- element = new ExtensionElement(this, parentElement,
- (Extension) entity, removeListener, style);
- } else if (entity instanceof Marker) {
- element = new MarkerElement(this, parentElement, (Marker) entity,
- removeListener, style);
- } else if (entity instanceof Media) {
- element = new MediaElement(this, parentElement, (Media) entity,
- removeListener, style);
- } else if (entity instanceof MediaRepresentation) {
- element = new MediaRepresentationElement(this, parentElement,
- (MediaRepresentation) entity, removeListener, style);
- } else if (entity instanceof ImageFile) {
- element = new ImageFileElement(this, parentElement,
- (ImageFile) entity, removeListener, style);
- } else if (entity instanceof MediaRepresentationPart){
- element = new MediaRepresentationPartElement(this, parentElement,
- (MediaRepresentationPart) entity, removeListener, style);
- } else if (entity instanceof NomenclaturalStatus) {
- element = new NomenclaturalStatusElement(this, parentElement,
- (NomenclaturalStatus) entity, removeListener, style);
- } else if (entity instanceof Rights) {
- element = new RightsElement(this, parentElement, (Rights) entity,
- removeListener, style);
- } else if (entity instanceof DescriptionElementSource) {
- element = new DescriptionElementSourceElement(this, parentElement,
- (DescriptionElementSource) entity, removeListener, style);
- } else if (entity instanceof IdentifiableSource) {
- element = new IdentifiableSourceElement(this, parentElement,
- (IdentifiableSource) entity, removeListener, style);
- } else if (entity instanceof Scope) {
- element = new ScopeElement(this, parentElement, (Scope) entity,
- removeListener, style);
- } else if (entity instanceof Modifier) {
- element = new ModifierElement(this, parentElement,
- (Modifier) entity, removeListener, style);
- } else if (entity instanceof Reference) {
- element = new DescriptionSourceElement(this, parentElement,
- (Reference) entity, removeListener, style);
- } else if (entity instanceof NameTypeDesignation) {
- element = new NameTypeDesignationElement(this, parentElement,
- (NameTypeDesignation) entity, removeListener, style);
- } else if (entity instanceof NameRelationship) {
- element = new NameRelationshipDetailElement(this, parentElement,
- (NameRelationship) entity, removeListener, style);
- } else if (entity instanceof SpecimenTypeDesignation) {
- element = new SpecimenTypeDesignationElement(this, parentElement,
- (SpecimenTypeDesignation) entity, removeListener, style);
- } else if (entity instanceof StateData) {
- element = new StateDataElement(this, parentElement,
- (StateData) entity, removeListener, style);
- } else if (entity instanceof StatisticalMeasurementValue) {
- element = new StatisticalMeasurementValueElement(this,
- parentElement, (StatisticalMeasurementValue) entity,
- removeListener, style);
- } else if (entity instanceof DerivedUnit) {
- element = new DerivedUnitElement(this, parentElement,
- (DerivedUnit) entity, removeListener, style);
- } else if (entity instanceof NamedArea) {
- element = new NamedAreaDetailElement(this, parentElement,
- (NamedArea) entity, removeListener, style);
- } else if (entity instanceof DeterminationEvent) {
- element = new DeterminationEventDetailElement(this, parentElement,
- (DeterminationEvent) entity, removeListener, style);
- } else if (entity instanceof Specimen) {
- element = new SpecimenCollectionDetailElement(this, parentElement,
- (Specimen) entity, removeListener, style);
- } else if (entity instanceof User) {
- element = new MemberDetailElement(this, parentElement,
- (User) entity, removeListener, style);
- } else if (entity instanceof GrantedAuthority) {
- element = new GrantedAuthorityDetailElement(this, parentElement,
- (GrantedAuthority) entity, removeListener, style);
- } else if (entity instanceof Group) {
- element = new GroupsByUserDetailElement(this, parentElement,
- (Group) entity, removeListener, style);
- } else if (entity instanceof Taxon) {
- element = new TaxonDetailElement(this, parentElement,
- (Taxon) entity, removeListener, style);
- } else if (entity instanceof DescriptionElementBase) {
- // this is the special case for protologs, maybe we can do this
- // differently when API improves
- DescriptionElementBase descriptionElement = (DescriptionElementBase) entity;
- if (descriptionElement.getFeature().equals(Feature.PROTOLOGUE())) {
- element = new ProtologueElement(this, parentElement,
- descriptionElement, removeListener, style);
- }
- }
-
- if (element == null) {
- StoreUtil
- .errorDialog(
- "No element for entity",
- this,
- "Could not generate element for entity. "
- + "Looks like the case is not handled already. Check implementation. Entity: "
- + entity, null);
-
- }
-
- if (backgroundColor != null && !backgroundColor.isDisposed()) {
- element.setPersistentBackground(backgroundColor);
- }
-
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
+ /**
+ * <p>
+ * createLanguageStringWithLabelElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param languageString
+ * a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
+ * @param style
+ * a int.
+ * @return a
+ * {@link eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement}
+ * object.
+ */
+ public LanguageStringWithLabelElement createLanguageStringWithLabelElement(ICdmFormElement parentElement,
+ String labelString, LanguageString languageString, int style) {
+ LanguageStringWithLabelElement element = new LanguageStringWithLabelElement(this, parentElement, labelString,
+ languageString, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createLanguageStringWithLabelElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param languageString
+ * a {@link eu.etaxonomy.cdm.model.common.LanguageString} object.
+ * @param height
+ * a int.
+ * @param style
+ * a int.
+ * @return a
+ * {@link eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement}
+ * object.
+ */
+ public LanguageStringWithLabelElement createLanguageStringWithLabelElement(ICdmFormElement parentElement,
+ String labelString, LanguageString languageString, int height, int style) {
+ LanguageStringWithLabelElement element = new LanguageStringWithLabelElement(this, parentElement, labelString,
+ languageString, height, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createTextElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param initialText
+ * a {@link java.lang.String} object.
+ * @param style
+ * a int.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement}
+ * object.
+ */
+ public TextWithLabelElement createTextElement(ICdmFormElement parentElement, String initialText, int style) {
+ TextWithLabelElement element = new TextWithLabelElement(this, parentElement, null, initialText, null, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createKeyValueViewerElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param keyHeading
+ * a {@link java.lang.String} object.
+ * @param valueHeading
+ * a {@link java.lang.String} object.
+ * @param map
+ * a {@link java.util.Map} object.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.KeyValueViewerElement}
+ * object.
+ */
+ public KeyValueViewerElement createKeyValueViewerElement(ICdmFormElement parentElement, String keyHeading,
+ String valueHeading, Map<Object, Object> map) {
+ KeyValueViewerElement element = new KeyValueViewerElement(this, parentElement, keyHeading, valueHeading, map);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createTermComboElement
+ * </p>
+ *
+ * @param termComboType
+ * a
+ * {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.TermComboType}
+ * object.
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param selection
+ * a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase}
+ * object.
+ * @param style
+ * a int.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.combo.TermComboElement}
+ * object.
+ */
+
+ public <T extends DefinedTermBase> TermComboElement<T> createTermComboElement(Class<T> termComboType,
+ ICdmFormElement parentElement, String labelString, T selection, int style) {
+ TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termComboType, labelString,
+ selection, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
/**
* <p>
- * createSelectionElement
+ * createTermComboElement
* </p>
- *
- * @param selectionType
+ *
+ * @param termComboType
* a
- * {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType}
+ * {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.TermComboType}
* object.
* @param parentElement
* a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
* object.
* @param labelString
* a {@link java.lang.String} object.
- * @param selectionType
* @param selection
- * a {@link eu.etaxonomy.cdm.model.common.IAnnotatableEntity}
+ * a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase}
* object.
* @param style
* a int.
- * @param conversation
- * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
- * object.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement}
+ * @return a {@link eu.etaxonomy.taxeditor.ui.combo.TermComboElement}
* object.
*/
- public AbstractSelectionElement createSelectionElement(
- SelectionType selectionType, ConversationHolder conversation,
- ICdmFormElement parentElement, String labelString,
- ICdmBase selection, int mode, int style) {
- AbstractSelectionElement element = null;
-
- IAnnotatableEntity entity = (IAnnotatableEntity) HibernateProxyHelper
- .deproxy(selection);
-
- switch (selectionType) {
- case AGENT:
- element = new AgentSelectionElement(this, conversation,
- parentElement, labelString, (TeamOrPersonBase) entity,
- mode, style);
- break;
- case PERSON:
- element = new PersonSelectionElement(this, conversation,
- parentElement, labelString, (Person) entity, mode, style);
- break;
- case TEAM:
- element = new TeamSelectionElement(this, conversation,
- parentElement, labelString, (Team) entity, mode, style);
- break;
- case AUTHOR_TEAM:
- element = new NomenclaturalAuthorTeamSelectionElement(this,
- conversation, parentElement, labelString, (Team) entity,
- mode, style);
- break;
- case INSTITUTION:
- element = new InstitutionSelectionElement(this, conversation,
- parentElement, labelString, (Institution) entity, mode,
- style);
- break;
- case NAME:
- element = new NameSelectionElement(this, conversation,
- parentElement, labelString, (TaxonNameBase) entity, mode,
- style);
- break;
- case REFERENCE:
- element = new ReferenceSelectionElement(this, conversation,
- parentElement, labelString, (Reference) entity, mode, style);
- break;
- case TAXON_BASE:
- element = new TaxonBaseSelectionElement(this, conversation,
- parentElement, labelString, (TaxonBase) entity, mode, style);
- break;
- case TAXON:
- element = new TaxonSelectionElement(this, conversation,
- parentElement, labelString, (Taxon) entity, mode, style);
- break;
- case SYNONYM:
- element = new SynonymSelectionElement(this, conversation,
- parentElement, labelString, (Synonym) entity, mode, style);
- break;
- case DERIVED_UNIT:
- element = new DerivedUnitBaseSelectionElement(this, conversation,
- parentElement, labelString, (DerivedUnitBase) entity, mode,
- style);
- break;
- case FIELD_OBSERVATION:
- element = new FieldObservationSelectionElement(this, conversation,
- parentElement, labelString, (FieldObservation) entity,
- mode, style);
- break;
- case FEATURE_TREE:
- element = new FeatureTreeSelectionElement(this, conversation,
- parentElement, labelString, (FeatureTree) entity, mode,
- style);
- break;
- case CLASSIFICATION:
- element = new ClassificationSelectionElement(this, conversation,
- parentElement, labelString, (Classification) entity, mode,
- style);
- break;
- case TAXON_NODE:
- element = new TaxonNodeSelectionElement(this, conversation,
- parentElement, labelString, (TaxonNode) entity, mode, style);
- break;
- case COLLECTION:
- element = new CollectionSelectionElement(this, conversation,
- parentElement, labelString, (Collection) entity, mode,
- style);
- break;
- case FEATURE:
- element = new FeatureSelectionElement(this, conversation,
- parentElement, labelString, (Feature) entity, mode, style);
- break;
- case POLYTOMOUS_KEY:
- element = new PolytomousKeySelectionElement(this, conversation,
- parentElement, labelString, (PolytomousKey) entity, mode,
- style);
- break;
- case POLYTOMOUS_KEY_NODE:
- element = new PolytomousKeyNodeSelectionElement(this, conversation,
- parentElement, labelString, (PolytomousKeyNode) entity,
- mode, style);
- break;
- case USER:
- element = new UserSelectionElement(this, conversation,
- parentElement, labelString, (User) entity, mode, style);
- break;
- case GROUP:
- element = new GroupSelectionElement(this, conversation,
- parentElement, labelString, (Group) entity, mode, style);
- break;
- default:
- new RuntimeException(
- "There is no selection composite for the desired selection type.");
- break;
- }
+ public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
+ TermType termType,
+ ICdmFormElement parentElement,
+ String labelString,
+ T selection,
+ int style) {
+ TermComboElement<T> element = new TermComboElement<T>(this, parentElement, termType, labelString, selection, style);
adapt(element);
parentElement.addElement(element);
return element;
}
+ /**
+ * <p>
+ * createEnumComboElement
+ * </p>
+ *
+ * @param enumComboType
+ * a
+ * {@link eu.eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.EnumComboType}
+ * object.
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param style
+ * a int.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.term.AbstractEnumComboElement}
+ * object.
+ */
+ public <T extends IEnumTerm<T>> EnumComboElement<T> createEnumComboElement(
+ Class<T> enumComboType, ICdmFormElement parentElement,
+ int style) {
+ EnumComboElement<T> element = new EnumComboElement<T>(this, parentElement, enumComboType, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createBrowserElement
+ * </p>
+ *
+ * @param imageUri
+ * a {@link java.net.URI} object.
+ * @param style
+ * a int.
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.BrowserElement}
+ * object.
+ */
+ public BrowserElement createBrowserElement(ICdmFormElement parentElement, URI imageUri, int style) {
+ BrowserElement element = new BrowserElement(this, parentElement, imageUri, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createImageElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param imageUri
+ * a {@link java.net.URI} object.
+ * @param style
+ * a int.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.ImageElement} object.
+ */
+ public ImageElement createImageElement(ICdmFormElement parentElement, URI imageUri, int style) {
+ ImageElement element = new ImageElement(this, parentElement, imageUri, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createTextActionElement
+ * </p>
+ *
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param initialText
+ * a {@link java.lang.String} object.
+ * @param style
+ * a int.
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param buttonLabel
+ * a {@link java.lang.String} object.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.TextActionElement}
+ * object.
+ */
+ public TextActionElement createTextActionElement(ICdmFormElement parentElement, String labelString,
+ String buttonLabel, String initialText, int style) {
+ TextActionElement element = new TextActionElement(this, parentElement, labelString, buttonLabel, initialText,
+ style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createCheckbox
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param label
+ * a {@link java.lang.String} object.
+ * @param initialState
+ * a boolean.
+ * @param style
+ * a int.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.CheckboxElement}
+ * object.
+ */
+ public CheckboxElement createCheckbox(ICdmFormElement parentElement, String label, boolean initialState, int style) {
+ CheckboxElement element = new CheckboxElement(this, parentElement, label, initialState, style | orientation);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * Creates a section as a part of the form.
+ *
+ * @return the section widget
+ * @param section
+ * a
+ * {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
+ * object.
+ */
+ public Section adapt(AbstractFormSection section) {
+ section.setMenu(section.getLayoutComposite().getMenu());
+ adapt(section, true, true);
+
+ // handle focus and property change events for cdm use
+ section.addFocusListener(selectionFocusHandler);
+ section.setPropertyChangeListeners(propertyChangeListeners);
+
+ if (section.getToggle() != null) {
+ section.getToggle().setHoverDecorationColor(getColors().getColor(IFormColors.TB_TOGGLE_HOVER));
+ section.getToggle().setDecorationColor(getColors().getColor(IFormColors.TB_TOGGLE));
+ }
+
+ section.setFont(boldFontHolder2.getBoldFont(section.getLayoutComposite().getFont()));
+
+ if ((section.getStyle() & ExpandableComposite.TITLE_BAR) != 0
+ || (section.getStyle() & ExpandableComposite.SHORT_TITLE_BAR) != 0) {
+ getColors().initializeSectionToolBarColors();
+ section.setTitleBarBackground(getColors().getColor(IFormColors.TB_BG));
+ section.setTitleBarBorderColor(getColors().getColor(IFormColors.TB_BORDER));
+ }
+ // call setTitleBarForeground regardless as it also sets the label color
+ section.setTitleBarForeground(getColors().getColor(IFormColors.TB_TOGGLE));
+ return section;
+ }
+
+ private class BoldFontHolder2 {
+ private Font normalFont;
+
+ private Font boldFont;
+
+ public BoldFontHolder2() {
+ }
+
+ public Font getBoldFont(Font font) {
+ createBoldFont(font);
+ return boldFont;
+ }
+
+ private void createBoldFont(Font font) {
+ if (normalFont == null || !normalFont.equals(font)) {
+ normalFont = font;
+ dispose();
+ }
+ if (boldFont == null) {
+ boldFont = FormFonts.getInstance().getBoldFont(getColors().getDisplay(), normalFont);
+ }
+ }
+
+ public void dispose() {
+ if (boldFont != null) {
+ FormFonts.getInstance().markFinished(boldFont, getColors().getDisplay());
+ boldFont = null;
+ }
+ }
+ }
+
+ /**
+ * <p>
+ * createToggleableTextField
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param initialText
+ * a {@link java.lang.String} object.
+ * @param initialState
+ * a boolean.
+ * @param style
+ * a int.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.ToggleableTextElement}
+ * object.
+ */
+ public ToggleableTextElement createToggleableTextField(ICdmFormElement parentElement, String labelString,
+ String initialText, boolean initialState, int style) {
+ ToggleableTextElement element = new ToggleableTextElement(this, parentElement, labelString, initialText,
+ initialState, style | orientation);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createTimePeriodElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param timePeriod
+ * a {@link eu.etaxonomy.cdm.model.common.TimePeriod} object.
+ * @param style
+ * a int.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.TimePeriodElement}
+ * object.
+ */
+ public TimePeriodElement createTimePeriodElement(ICdmFormElement parentElement, String labelString,
+ TimePeriod timePeriod, int style) {
+ TimePeriodElement element = new TimePeriodElement(this, parentElement, labelString, timePeriod, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
/**
* <p>
- * createNamedAreaSelectionElement
+ * createGatheringEventUnitElement
* </p>
- *
+ *
* @param parentElement
* a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
* object.
- * @param conversation
- * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
- * object.
* @param labelString
* a {@link java.lang.String} object.
- * @param selection
- * a {@link eu.etaxonomy.cdm.model.location.NamedArea} object.
+ * @param timePeriod
+ * a {@link eu.etaxonomy.cdm.model.common.GatheringEvent} object.
* @param style
* a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement}
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.GatheringEventUnitElement}
* object.
*/
- public NamedAreaSelectionElement createNamedAreaSelectionElement(
- ICdmFormElement parentElement, ConversationHolder conversation,
- String labelString, NamedArea selection, int style) {
- NamedAreaSelectionElement element = new NamedAreaSelectionElement(this,
- conversation, parentElement, labelString, selection,
- AbstractSelectionElement.NOTHING, style);
+ public GatheringEventUnitElement createGatheringEventUnitElement(
+ ICdmFormElement parentElement,
+ String labelString,
+ DerivedUnitFacade gatheringEvent,
+ MinMaxTextSection.UnitType unitType,
+ int style) {
+ GatheringEventUnitElement element = new GatheringEventUnitElement(this,
+ parentElement,
+ labelString,
+ gatheringEvent,
+ unitType,
+ style);
adapt(element);
parentElement.addElement(element);
return element;
}
- /** {@inheritDoc} */
- public LabelElement createLabel(ICdmFormElement parentElement, String text) {
- LabelElement labelElement = new LabelElement(this, parentElement, text);
- adapt(labelElement);
- parentElement.addElement(labelElement);
- return labelElement;
- }
-
- /**
- * <p>
- * Getter for the field <code>selectionProvider</code>.
- * </p>
- *
- * @return a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
- */
- public ISelectionProvider getSelectionProvider() {
- return selectionProvider;
- }
+ /**
+ * <p>
+ * createPointElement
+ * </p>
+ *
+ * @param style
+ * a int.
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param point
+ * a {@link eu.etaxonomy.cdm.model.location.Point} object.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.PointElement} object.
+ */
+ public PointElement createPointElement(ICdmFormElement parentElement, Point point, int style) {
+ PointElement element = new PointElement(this, parentElement, point, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createDateDetailSection
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param style
+ * a int.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.DateDetailSection}
+ * object.
+ */
+ public DateDetailSection createDateDetailSection(ICdmFormElement parentElement, int style) {
+ DateDetailSection section = new DateDetailSection(this, parentElement, style);
+ parentElement.addElement(section);
+ adapt(section);
+ return section;
+ }
/**
* <p>
- * createDetailedDescriptionDetailElement
+ * createDateDetailSection
* </p>
- *
+ *
* @param parentElement
* a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
* object.
- * @param entity
- * a
- * {@link eu.etaxonomy.cdm.model.description.DescriptionElementBase}
- * object.
* @param style
* a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.section.description.detail.AbstractDetailedDescriptionDetailElement}
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.MinMaxTextSection}
* object.
*/
- public AbstractDetailedDescriptionDetailElement createDetailedDescriptionDetailElement(
- ICdmFormElement parentElement, DescriptionElementBase entity,
- int style) {
- AbstractDetailedDescriptionDetailElement detailedDescriptionElement = null;
-
- if (entity instanceof CategoricalData) {
- detailedDescriptionElement = new CategoricalDataDetailElement(this,
- parentElement, (CategoricalData) entity, style);
- } else if (entity instanceof CommonTaxonName) {
- detailedDescriptionElement = new CommonNameDetailElement(this,
- parentElement, (CommonTaxonName) entity, style);
- } else if (entity instanceof Distribution) {
- detailedDescriptionElement = new DistributionDetailElement(this,
- parentElement, (Distribution) entity, style);
- } else if (entity instanceof IndividualsAssociation) {
- detailedDescriptionElement = new IndividualsAssociationDetailElement(
- this, parentElement, (IndividualsAssociation) entity, style);
- } else if (entity instanceof QuantitativeData) {
- detailedDescriptionElement = new QuantitativeDataDetailElement(
- this, parentElement, (QuantitativeData) entity, style);
- } else if (entity instanceof TaxonInteraction) {
- detailedDescriptionElement = new TaxonInteractionDetailElement(
- this, parentElement, (TaxonInteraction) entity, style);
- } else if (entity instanceof TextData) {
- detailedDescriptionElement = new TextDataDetailElement(this,
- parentElement, (TextData) entity, style);
- } else {
- throw new IllegalStateException(
- "There is no interface for the given description element");
- }
- adapt(detailedDescriptionElement);
- parentElement.addElement(detailedDescriptionElement);
- return detailedDescriptionElement;
-
- }
-
- /**
- * Creates a styled text as a part of the form.
- *
- * @param parent
- * the text parent
- * @param value
- * the text initial value
- * @param style
- * the text style
- * @return the text widget
- */
- public StyledText createStyledText(Composite parent, String value, int style) {
- StyledText text = new StyledText(parent, getBorderStyle() | style
- | getOrientation());
- if (value != null)
- text.setText(value);
- text.setForeground(getColors().getForeground());
- text.setBackground(getColors().getBackground());
- // text.addFocusListener(visibilityHandler);
- return text;
+ public MinMaxTextSection createMinMaxTextSection(ICdmFormElement parentElement, UnitType unitType, int style) {
+ MinMaxTextSection section = new MinMaxTextSection(this, parentElement, unitType, style);
+ parentElement.addElement(section);
+ adapt(section);
+ return section;
}
+ /**
+ * <p>
+ * createPartialElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param partial
+ * a {@link org.joda.time.Partial} object.
+ * @param style
+ * a int.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.PartialElement}
+ * object.
+ */
+ public PartialElement createPartialElement(ICdmFormElement parentElement, String labelString, Partial partial,
+ int style) {
+ PartialElement element = new PartialElement(this, parentElement, labelString, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * addSelectionListener
+ * </p>
+ *
+ * @param listener
+ * a {@link org.eclipse.swt.events.SelectionListener} object.
+ */
+ public void addSelectionListener(SelectionListener listener) {
+ selectionListenerList.add(listener);
+ }
+
+ /**
+ * <p>
+ * removeSelectionListener
+ * </p>
+ *
+ * @param listener
+ * a {@link org.eclipse.swt.events.SelectionListener} object.
+ */
+ public void removeSelectionListener(SelectionListener listener) {
+ if (listener == null) {
+ AbstractUtility.error(this.getClass(),
+ "Tried to remove a selection listener from this factories listeners but was null", null);
+ } else {
+ selectionListenerList.remove(listener);
+ }
+ }
+
+ /**
+ * <p>
+ * addPropertyChangeListener
+ * </p>
+ *
+ * @param listener
+ * a {@link org.eclipse.jface.util.IPropertyChangeListener}
+ * object.
+ */
+ public void addPropertyChangeListener(IPropertyChangeListener listener) {
+ if (propertyChangeListeners.contains(listener)) {
+ return;
+ }
+ propertyChangeListeners.add(0, listener);
+ }
+
+ /**
+ * <p>
+ * removePropertyChangeListener
+ * </p>
+ *
+ * @param listener
+ * a {@link org.eclipse.jface.util.IPropertyChangeListener}
+ * object.
+ */
+ public void removePropertyChangeListener(IPropertyChangeListener listener) {
+ propertyChangeListeners.remove(listener);
+ }
+
+ /**
+ * @return the propertyChangeListeners
+ */
+ public List<IPropertyChangeListener> getPropertyChangeListeners() {
+ return propertyChangeListeners;
+ }
+
+ /**
+ * <p>
+ * createHorizontalSeparator
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param style
+ * a int.
+ * @return a {@link org.eclipse.swt.widgets.Label} object.
+ */
+ public Label createHorizontalSeparator(ICdmFormElement parentElement, int style) {
+ Label separator = this.createSeparator(parentElement.getLayoutComposite(), SWT.HORIZONTAL | style);
+ separator.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+ return separator;
+ }
+
+ /**
+ * <p>
+ * createVersionElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param entity
+ * a {@link eu.etaxonomy.cdm.model.common.VersionableEntity}
+ * object.
+ * @param style
+ * a int.
+ * @return a
+ * {@link eu.etaxonomy.taxeditor.ui.section.supplemental.VersionElement}
+ * object.
+ */
+ public VersionElement createVersionElement(ICdmFormElement parentElement, VersionableEntity entity, int style) {
+ VersionElement element = new VersionElement(this, parentElement, entity, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * @param cdmBaseSection
+ * @param object
+ * @param style
+ * @return
+ */
+ public CdmBaseElement createCdmBaseElement(ICdmFormElement parentElement, CdmBase entity, int style) {
+ CdmBaseElement element = new CdmBaseElement(this, parentElement, entity, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createVersionSection
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param style
+ * a int.
+ * @return a
+ * {@link eu.etaxonomy.taxeditor.ui.section.supplemental.VersionSection}
+ * object.
+ */
+ public VersionSection createVersionSection(ICdmFormElement parentElement, int style) {
+ VersionSection section = new VersionSection(this, parentElement, style);
+ parentElement.addElement(section);
+ adapt(section);
+ return section;
+ }
+
+ /**
+ * @param parent
+ * @param i
+ * @return
+ */
+ public CdmBaseSection createCdmBaseSection(ICdmFormElement parentElement, int style) {
+ CdmBaseSection section = new CdmBaseSection(this, parentElement, style);
+ parentElement.addElement(section);
+ adapt(section);
+ return section;
+ }
+
+ /**
+ * <p>
+ * createEmptyElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @return a {@link eu.etaxonomy.taxeditor.ui.section.EmptyElement} object.
+ */
+ public EmptyElement createEmptyElement(ICdmFormElement parentElement) {
+ EmptyElement element = new EmptyElement(this, parentElement, null, SWT.NULL);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /**
+ * <p>
+ * createHeadlineSection
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @return a
+ * {@link eu.etaxonomy.taxeditor.ui.section.supplemental.HeadlineSection}
+ * object.
+ */
+ public HeadlineSection createHeadlineSection(ICdmFormElement parentElement) {
+ HeadlineSection section = new HeadlineSection(this, parentElement, SWT.NULL);
+ parentElement.addElement(section);
+ adapt(section);
+ return section;
+ }
+
+ /**
+ * <p>
+ * createParsingMessageElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param parserProblem
+ * a {@link eu.etaxonomy.cdm.strategy.parser.ParserProblem}
+ * object.
+ * @param style
+ * a int.
+ * @return a
+ * {@link eu.etaxonomy.taxeditor.ui.section.taxon.ParsingMessageElement}
+ * object.
+ */
+ public ParsingMessageElement createParsingMessageElement(ICdmFormElement parentElement,
+ ParserProblem parserProblem, int style) {
+ ParsingMessageElement element = new ParsingMessageElement(this, parentElement, parserProblem, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ public AbstractFormSection createDefinedTermDetailSection(Class definedTermClass, ConversationHolder conversation,
+ ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+
+ AbstractFormSection section = new DefinedTermDetailSection(this, definedTermClass, conversation, parentElement,
+ selectionProvider, style);
+
+ parentElement.addElement(section);
+ adapt(section);
+ return section;
+
+ }
+
+ /**
+ * @param definedTermClass
+ * @param formElement
+ * @param style
+ * @return
+ */
+ public AbstractCdmDetailElement createDefinedTermDetailElement(Class definedTermClass,
+ AbstractCdmDetailSection parentElement, int style) {
+ AbstractCdmDetailElement element = null;
+
+ if (NamedArea.class.isAssignableFrom(definedTermClass)) {
+ element = new eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailElement(this, parentElement);
+ } else if (definedTermClass.equals(Feature.class)) {
+ element = new FeatureDetailElement(this, parentElement);
+ } else {
+ element = new DefinedTermDetailElement(this, parentElement);
+ }
+
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+
+ //--------DetailSections---------
+ public NameDetailSection createNameDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ NameDetailSection section = new NameDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public ReferenceDetailSection createReferenceDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ ReferenceDetailSection section = new ReferenceDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public NomenclaturalReferenceDetailSection createNomenclaturalReferenceDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ NomenclaturalReferenceDetailSection section = new NomenclaturalReferenceDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public TaxonBaseDetailSection createTaxonBaseDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ TaxonBaseDetailSection section = new TaxonBaseDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public AuthorshipDetailSection createAuthorshipDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ AuthorshipDetailSection section = new AuthorshipDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public TeamOrPersonBaseDetailSection createTeamOrPersonBaseDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ TeamOrPersonBaseDetailSection section = new TeamOrPersonBaseDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public TeamDetailSection createTeamDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ TeamDetailSection section = new TeamDetailSection(this, conversation, parentElement, null, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public PersonDetailSection createPersonDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ PersonDetailSection section = new PersonDetailSection(this, conversation, parentElement, null, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DescriptionDetailSection createDescriptionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ DescriptionDetailSection section = new DescriptionDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DescriptionElementDetailSection createDescriptionElementDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ DescriptionElementDetailSection section = new DescriptionElementDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public ParsingMessagesSection createParsingMessagesSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ ParsingMessagesSection section = new ParsingMessagesSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public NonViralNameDetailSection createNonViralNameDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ NonViralNameDetailSection section = new NonViralNameDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public MediaDetailsSection createMediaDetailsSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ MediaDetailsSection section = new MediaDetailsSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DerivedUnitFacadeDetailSection createDerivedUnitFacadeDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ DerivedUnitFacadeDetailSection section = new DerivedUnitFacadeDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public FieldUnitDetailSection createFieldUnitDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ FieldUnitDetailSection section = new FieldUnitDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public GatheringEventDetailSection createGatheringEventDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ GatheringEventDetailSection section = new GatheringEventDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DerivedUnitBaseDetailSection createDerivedUnitBaseDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ DerivedUnitBaseDetailSection section = new DerivedUnitBaseDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public NaturalLanguageSection createNaturalLanguageSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ NaturalLanguageSection section = new NaturalLanguageSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public FeatureDistributionDetailSection createFeatureDistributionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ FeatureDistributionDetailSection section = new FeatureDistributionDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public ClassificationDetailSection createClassificationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ ClassificationDetailSection section = new ClassificationDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public TaxonNodeDetailSection createTaxonNodeDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ TaxonNodeDetailSection section = new TaxonNodeDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public PolytomousKeyDetailSection createPolytomousKeyDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ PolytomousKeyDetailSection section = new PolytomousKeyDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public PolytomousKeyNodeDetailSection createPolytomousKeyNodeDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ PolytomousKeyNodeDetailSection section = new PolytomousKeyNodeDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public InstitutionDetailSection createInstitutionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ InstitutionDetailSection section = new InstitutionDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public FieldUnitGeneralDetailSection createFieldUnitGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ FieldUnitGeneralDetailSection section = new FieldUnitGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DerivedUnitGeneralDetailSection createDerivedUnitGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ DerivedUnitGeneralDetailSection section = new DerivedUnitGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public PreservedSpecimenGeneralDetailSection createPreservedSpecimenGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ PreservedSpecimenGeneralDetailSection section = new PreservedSpecimenGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public TissueSampleGeneralDetailSection createTissueSampleGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ TissueSampleGeneralDetailSection section = new TissueSampleGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DnaSampleGeneralDetailSection createDnaSampleGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ DnaSampleGeneralDetailSection section = new DnaSampleGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public SequenceGeneralDetailSection createSequenceGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ SequenceGeneralDetailSection section = new SequenceGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public SequenceReferenceCollectionDetailSection createSequenceReferenceCollectionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ SequenceReferenceCollectionDetailSection section = new SequenceReferenceCollectionDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public SingleReadGeneralDetailSection createSingleReadGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ SingleReadGeneralDetailSection section = new SingleReadGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public AmplificationGeneralDetailSection createAmplificationGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ AmplificationGeneralDetailSection section = new AmplificationGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public SpecimenScanGeneralDetailSection createSpecimenScanGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ SpecimenScanGeneralDetailSection section = new SpecimenScanGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public LivingPlantPhotoGeneralDetailSection createLivingPlantPhotoGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ LivingPlantPhotoGeneralDetailSection section = new LivingPlantPhotoGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public ArtworkGeneralDetailSection createArtworkGeneralDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ ArtworkGeneralDetailSection section = new ArtworkGeneralDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public HybridDetailSection createHybridDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ HybridDetailSection section = new HybridDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public UserDetailSection createUserDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ UserDetailSection section = new UserDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public GroupDetailSection createGroupDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ GroupDetailSection section = new GroupDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DeterminationDetailSection createDeterminationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ DeterminationDetailSection section = new DeterminationDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public PreservedSpecimenDeterminationDetailSection createPreservedSpecimenDeterminationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ PreservedSpecimenDeterminationDetailSection section = new PreservedSpecimenDeterminationDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public TaxonRelationshipDetailSection createTaxonRelationshipDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ TaxonRelationshipDetailSection section = new TaxonRelationshipDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public ReferencedEntityDetailSection createReferencedEntityDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ ReferencedEntityDetailSection section = new ReferencedEntityDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public TermVocabularyDetailSection createTermVocabularyDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ TermVocabularyDetailSection section = new TermVocabularyDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public GatheringEventDetailSection createGatheringSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ GatheringEventDetailSection section = new GatheringEventDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public NamedAreaDetailSection createNamedAreaDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ NamedAreaDetailSection section = new NamedAreaDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public UseRecordDetailSection createUseRecordDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style){
+ UseRecordDetailSection section = new UseRecordDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ private void addAndAdaptSection(ICdmFormElement parentElement, AbstractFormSection<?> section) {
+ parentElement.addElement(section);
+ adapt(section);
+ }
+
+ //--------DetailElements------------
+
+ public UseRecordDetailElement createUseRecordDetailElement(ICdmFormElement parentElement){
+ UseRecordDetailElement element = new UseRecordDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public DefinedTermDetailElement<NamedAreaLevel> createNamedAreaLevelElement(ICdmFormElement parentElement){
+ DefinedTermDetailElement<NamedAreaLevel> element = new DefinedTermDetailElement<NamedAreaLevel>(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailElement createNamedAreaDetailElement(ICdmFormElement parentElement){
+ eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailElement element = new eu.etaxonomy.taxeditor.ui.section.vocabulary.NamedAreaDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public TermVocabularyDetailElement createTermVocabularyDetailElement(ICdmFormElement parentElement){
+ TermVocabularyDetailElement element = new TermVocabularyDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public ReferenceEntityDetailElement createReferenceEntityDetailElement(ICdmFormElement parentElement){
+ ReferenceEntityDetailElement element = new ReferenceEntityDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public TaxonRelationshipDetailElement createTaxonRelationshipDetailElement(ICdmFormElement parentElement){
+ TaxonRelationshipDetailElement element = new TaxonRelationshipDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public GrantedAuthorityDetailElement createGrantedAuthorityDetailElement(ICdmFormElement parentElement){
+ GrantedAuthorityDetailElement element = new GrantedAuthorityDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public GroupDetailElement createGroupDetailElement(ICdmFormElement parentElement){
+ GroupDetailElement element = new GroupDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public UserDetailElement createUserDetailElement(ICdmFormElement parentElement){
+ UserDetailElement element = new UserDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public HybridDetailElement createHybridDetailElement(ICdmFormElement parentElement){
+ HybridDetailElement element = new HybridDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public InstitutionDetailElement createInstitutionDetailElement(ICdmFormElement parentElement){
+ InstitutionDetailElement element = new InstitutionDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public PolytomousKeyNodeDetailElement createPolytomousKeyNodeDetailElement(ICdmFormElement parentElement){
+ PolytomousKeyNodeDetailElement element = new PolytomousKeyNodeDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public PolytomousKeyDetailElement createPolytomousKeyDetailElement(ICdmFormElement parentElement){
+ PolytomousKeyDetailElement element = new PolytomousKeyDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public CollectionDetailElement createCollectionDetailElement(ICdmFormElement parentElement){
+ CollectionDetailElement element = new CollectionDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public TaxonNodeDetailElement createTaxonNodeDetailElement(ICdmFormElement parentElement){
+ TaxonNodeDetailElement element = new TaxonNodeDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public ClassificationDetailElement createClassificationDetailElement(ICdmFormElement parentElement){
+ ClassificationDetailElement element = new ClassificationDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public FeatureDistributionDetailElement createFeatureDistributionDetailElement(ICdmFormElement parentElement){
+ FeatureDistributionDetailElement element = new FeatureDistributionDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public NaturalLanguageDetailElement createNaturalLanguageDetailElement(ICdmFormElement parentElement){
+ NaturalLanguageDetailElement element = new NaturalLanguageDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public DerivedUnitFacadeDetailElement createDerivedUnitFacadeDetailElement(ICdmFormElement parentElement){
+ DerivedUnitFacadeDetailElement element = new DerivedUnitFacadeDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public NonViralNameDetailElement createNonViralNameDetailElement(ICdmFormElement parentElement){
+ NonViralNameDetailElement element = new NonViralNameDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public DescriptionElementDetailElement createDescriptionElementDetailElement(ICdmFormElement parentElement, int style){
+ DescriptionElementDetailElement element = new DescriptionElementDetailElement(this, parentElement, style);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public DescriptionDetailElement createDescriptionDetailElement(ICdmFormElement parentElement, int style){
+ DescriptionDetailElement element = new DescriptionDetailElement(this, parentElement, style);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public PersonDetailElement createPersonDetailElement(ICdmFormElement parentElement, int style){
+ PersonDetailElement element = new PersonDetailElement(this, parentElement, style);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public TeamDetailElement createTeamDetailElement(ICdmFormElement parentElement, int style){
+ TeamDetailElement element = new TeamDetailElement(this, parentElement, style);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public AuthorshipDetailElement createAuthorshipDetailElement(ICdmFormElement parentElement, int style){
+ AuthorshipDetailElement element = new AuthorshipDetailElement(this, parentElement, style);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public TaxonBaseDetailElement createTaxonBaseDetailElement(ICdmFormElement parentElement, int style){
+ TaxonBaseDetailElement element = new TaxonBaseDetailElement(this, parentElement, style);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public NameDetailElement createNameDetailElement(ICdmFormElement parentElement, int style){
+ NameDetailElement element = new NameDetailElement(this, parentElement, style);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public ReferenceDetailElement createReferenceDetailElement(ICdmFormElement parentElement, int style){
+ ReferenceDetailElement element = new ReferenceDetailElement(this, parentElement, style);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public NomenclaturalReferenceDetailElement createNomenclaturalReferenceDetailElement(ICdmFormElement parentElement, int style){
+ NomenclaturalReferenceDetailElement element = new NomenclaturalReferenceDetailElement(this, parentElement, style);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+
+ public FieldUnitGeneralDetailElement createFieldUnitGeneralDetailElement(ICdmFormElement parentElement){
+ FieldUnitGeneralDetailElement element = new FieldUnitGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public DerivedUnitGeneralDetailElement createDerivedUnitGeneralDetailElement(ICdmFormElement parentElement){
+ DerivedUnitGeneralDetailElement element = new DerivedUnitGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public PreservedSpecimenGeneralDetailElement createPreservedSpecimenGeneralDetailElement(ICdmFormElement parentElement){
+ PreservedSpecimenGeneralDetailElement element = new PreservedSpecimenGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public TissueSampleGeneralDetailElement createTissueSampleGeneralDetailElement(ICdmFormElement parentElement){
+ TissueSampleGeneralDetailElement element = new TissueSampleGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public DnaSampleGeneralDetailElement createDnaSampleGeneralDetailElement(ICdmFormElement parentElement){
+ DnaSampleGeneralDetailElement element = new DnaSampleGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public SequenceGeneralDetailElement createSequenceGeneralDetailElement(ICdmFormElement parentElement){
+ SequenceGeneralDetailElement element = new SequenceGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public SingleReadGeneralDetailElement createSingleReadGeneralDetailElement(ICdmFormElement parentElement){
+ SingleReadGeneralDetailElement element = new SingleReadGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public AmplificationGeneralDetailElement createAmplificationGeneralDetailElement(ICdmFormElement parentElement){
+ AmplificationGeneralDetailElement element = new AmplificationGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public SpecimenScanGeneralDetailElement createSpecimenScanGeneralDetailElement(ICdmFormElement parentElement){
+ SpecimenScanGeneralDetailElement element = new SpecimenScanGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public LivingPlantPhotoGeneralDetailElement createLivingPlantPhotoGeneralDetailElement(ICdmFormElement parentElement){
+ LivingPlantPhotoGeneralDetailElement element = new LivingPlantPhotoGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public ArtworkGeneralDetailElement createArtworkGeneralDetailElement(ICdmFormElement parentElement){
+ ArtworkGeneralDetailElement element = new ArtworkGeneralDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+
+ public GatheringEventDetailElement createGatheringEventDetailElement(ICdmFormElement parentElement) {
+ GatheringEventDetailElement element = new GatheringEventDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public FieldUnitDetailElement createFieldUnitDetailElement(ICdmFormElement parentElement) {
+ FieldUnitDetailElement element = new FieldUnitDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+
+ public DerivedUnitBaseDetailElement createDerivedUnitBaseDetailElement(ICdmFormElement parentElement) {
+ DerivedUnitBaseDetailElement element = new DerivedUnitBaseDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public PreservedSpecimenDetailElement createPreservedSpecimenDetailElement(ICdmFormElement parentElement) {
+ PreservedSpecimenDetailElement element = new PreservedSpecimenDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public PreservedSpecimenDeterminationDetailElement createPreservedSpecimenDeterminationDetailElement(ICdmFormElement parentElement) {
+ PreservedSpecimenDeterminationDetailElement element = new PreservedSpecimenDeterminationDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ public DeterminationDetailElement createDeterminationDetailElement(ICdmFormElement parentElement) {
+ DeterminationDetailElement element = new DeterminationDetailElement(this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
+ /**
+ * @param parentElement
+ * @param element
+ */
+ private void addAndAdaptElement(ICdmFormElement parentElement, AbstractCdmDetailElement<?> element) {
+ adapt(element);
+ parentElement.addElement(element);
+ }
+
+ //--------EntityCollectionSection----------
+ public TeamMemberSection createTeamMemberSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ TeamMemberSection section = new TeamMemberSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public AnnotationSection createAnnotationSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ AnnotationSection section = new AnnotationSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public CreditSection createCreditSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ CreditSection section = new CreditSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DescriptionElementSourceSection createDescriptionElementSourceSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ DescriptionElementSourceSection section = new DescriptionElementSourceSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public ExtensionSection createExtensionSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ ExtensionSection section = new ExtensionSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public MarkerSection createMarkerSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ MarkerSection section = new MarkerSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public MediaSection createMediaSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ MediaSection section = new MediaSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DescriptionElementMediaSection createDescriptionElementMediaSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ DescriptionElementMediaSection section = new DescriptionElementMediaSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public MediaRepresentationSection createMediaRepresentationSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ MediaRepresentationSection section = new MediaRepresentationSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public MediaRepresentationPartSection createMediaRepresentationPartSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ MediaRepresentationPartSection section = new MediaRepresentationPartSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public ModifierSection createModifierSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ ModifierSection section = new ModifierSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public NomenclaturalStatusSection createNomenclaturalStatusSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ NomenclaturalStatusSection section = new NomenclaturalStatusSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public NameRelationshipDetailSection createNameRelationshipDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ NameRelationshipDetailSection section = new NameRelationshipDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public ProtologueSection createProtologueSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ ProtologueSection section = new ProtologueSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public RightsSection createRightsSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ RightsSection section = new RightsSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public SourceSection createSourceSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ SourceSection section = new SourceSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public ScopeSection createScopeSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ ScopeSection section = new ScopeSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DescriptionSourceSection createDescriptionSourceSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ DescriptionSourceSection section = new DescriptionSourceSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public TypeDesignationSection createTypeDesignationSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ TypeDesignationSection section = new TypeDesignationSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public StateDataSection createStateDataSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ StateDataSection section = new StateDataSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public StatisticalMeasurementValueSection createStatisticalMeasurementValueSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ StatisticalMeasurementValueSection section = new StatisticalMeasurementValueSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DescribedSpecimenSection createDescribedSpecimenSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ DescribedSpecimenSection section = new DescribedSpecimenSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public CollectingAreasDetailSection createCollectingAreasDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ CollectingAreasDetailSection section = new CollectingAreasDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public CurrentDeterminationDetailSection createCurrentDeterminationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ CurrentDeterminationDetailSection section = new CurrentDeterminationDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public PreservedSpecimenCurrentDeterminationDetailSection createPreservedSpecimenCurrentDeterminationDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ PreservedSpecimenCurrentDeterminationDetailSection section = new PreservedSpecimenCurrentDeterminationDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DeterminationHistoryDetailSection createDeterminationHistoryDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ DeterminationHistoryDetailSection section = new DeterminationHistoryDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public PreservedSpecimenDeterminationHistoryDetailSection createPreservedSpecimenDeterminationHistoryDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ PreservedSpecimenDeterminationHistoryDetailSection section = new PreservedSpecimenDeterminationHistoryDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public SpecimenCollectionDetailSection createSpecimenCollectionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ SpecimenCollectionDetailSection section = new SpecimenCollectionDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public PreservedSpecimenSourceCollectionDetailSection createPreservedSpecimenSourceCollectionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ PreservedSpecimenSourceCollectionDetailSection section = new PreservedSpecimenSourceCollectionDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public SourceCollectionDetailSection createSourceCollectionDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ SourceCollectionDetailSection section = new SourceCollectionDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public GeographicalScopeDetailSection createGeographicalScopeDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ GeographicalScopeDetailSection section = new GeographicalScopeDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public ScopeRestrictionSection createScopeRestrictionSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ ScopeRestrictionSection section = new ScopeRestrictionSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public MemberDetailSection createMemberDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ MemberDetailSection section = new MemberDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public GrantedAuthorityDetailSection createGrantedAuthorityDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ GrantedAuthorityDetailSection section = new GrantedAuthorityDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public GroupsByUserDetailSection createGroupsByUserDetailSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ GroupsByUserDetailSection section = new GroupsByUserDetailSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public TaxonomicScopeSection createTaxonomicScopeSection(ConversationHolder conversation, ICdmFormElement parentElement, int style){
+ TaxonomicScopeSection section = new TaxonomicScopeSection(this, conversation, parentElement, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ /**
+ * <p>
+ * createEntityCollectionElement
+ * </p>
+ *
+ * @param removeListener
+ * a {@link org.eclipse.swt.events.SelectionListener} object.
+ * @param style
+ * a int.
+ * @param parentElement
+ * a
+ * {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
+ * object.
+ * @param versionableEntity
+ * a {@link eu.etaxonomy.cdm.model.common.IVersionableEntity}
+ * object.
+ * @param backgroundColor
+ * a {@link org.eclipse.swt.graphics.Color} object.
+ * @return a
+ * {@link eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement}
+ * object.
+ */
+ public AbstractEntityCollectionElement createEntityCollectionElement(AbstractFormSection parentElement,
+ Object versionableEntity, SelectionListener removeListener, Color backgroundColor, int style) {
+ AbstractEntityCollectionElement element = null;
+
+ Object entity = HibernateProxyHelper.deproxy(versionableEntity);
+
+ if (entity instanceof Annotation) {
+ element = new AnnotationElement(this, parentElement, (Annotation) entity, removeListener, style);
+ } else if (entity instanceof Person) {
+ element = new TeamMemberElement(this, parentElement, (Person) entity, removeListener, style);
+ } else if (entity instanceof Credit) {
+ element = new CreditElement(this, parentElement, (Credit) entity, removeListener, style);
+ } else if (entity instanceof Extension) {
+ element = new ExtensionElement(this, parentElement, (Extension) entity, removeListener, style);
+ } else if (entity instanceof Marker) {
+ element = new MarkerElement(this, parentElement, (Marker) entity, removeListener, style);
+ } else if (entity instanceof Media) {
+ element = new MediaElement(this, parentElement, (Media) entity, removeListener, style);
+ } else if (entity instanceof MediaRepresentation) {
+ element = new MediaRepresentationElement(this, parentElement, (MediaRepresentation) entity, removeListener,
+ style);
+ } else if (entity instanceof ImageFile) {
+ element = new ImageFileElement(this, parentElement, (ImageFile) entity, removeListener, style);
+ } else if (entity instanceof MediaRepresentationPart) {
+ element = new MediaRepresentationPartElement(this, parentElement, (MediaRepresentationPart) entity,
+ removeListener, style);
+ } else if (entity instanceof NomenclaturalStatus) {
+ element = new NomenclaturalStatusElement(this, parentElement, (NomenclaturalStatus) entity, removeListener,
+ style);
+ } else if (entity instanceof Rights) {
+ element = new RightsElement(this, parentElement, (Rights) entity, removeListener, style);
+ } else if (entity instanceof DescriptionElementSource) {
+ element = new DescriptionElementSourceElement(this, parentElement, (DescriptionElementSource) entity,
+ removeListener, style);
+ } else if (entity instanceof IdentifiableSource) {
+ element = new IdentifiableSourceElement(this, parentElement, (IdentifiableSource) entity, removeListener,
+ style);
+ } else if (entity instanceof DefinedTerm) {
+ switch(((DefinedTerm)entity).getTermType()) {
+ case Scope:
+ element = new ScopeElement(this,
+ parentElement,
+ (DefinedTerm) entity,
+ removeListener,
+ style);
+ break;
+ case Modifier:
+ element = new ModifierElement(this,
+ parentElement,
+ (DefinedTerm) entity,
+ removeListener,
+ style);
+ break;
+ default:
+ //FIXME : Actually we should through an exception here
+ element = null;
+ break;
+ }
+ } else if (entity instanceof Reference) {
+ element = new DescriptionSourceElement(this, parentElement, (Reference) entity, removeListener, style);
+ } else if (entity instanceof NameTypeDesignation) {
+ element = new NameTypeDesignationElement(this, parentElement, (NameTypeDesignation) entity, removeListener,
+ style);
+ } else if (entity instanceof NameRelationship) {
+ element = new NameRelationshipDetailElement(this, parentElement, (NameRelationship) entity, removeListener,
+ style);
+ } else if (entity instanceof SpecimenTypeDesignation) {
+ element = new SpecimenTypeDesignationElement(this, parentElement, (SpecimenTypeDesignation) entity,
+ removeListener, style);
+ } else if (entity instanceof StateData) {
+ element = new StateDataElement(this, parentElement, (StateData) entity, removeListener, style);
+ } else if (entity instanceof StatisticalMeasurementValue) {
+ element = new StatisticalMeasurementValueElement(this, parentElement, (StatisticalMeasurementValue) entity,
+ removeListener, style);
+ } else if (entity instanceof DerivedUnit) {
+ switch(((DerivedUnit)entity).getRecordBasis()) {
+ case LivingSpecimen:
+ case PreservedSpecimen:
+ case OtherSpecimen:
+ element = new SpecimenCollectionDetailElement(this,
+ parentElement,
+ (DerivedUnit) entity,
+ removeListener,
+ style);
+ break;
+ default:
+ element = new DerivedUnitElement(this,
+ parentElement,
+ (DerivedUnit) entity,
+ removeListener,
+ style);
+ }
-
-
+ } else if (entity instanceof NamedArea) {
+ element = new NamedAreaDetailElement(this, parentElement, (NamedArea) entity, removeListener, style);
+ } else if (entity instanceof DeterminationEvent) {
+ element = new DeterminationEventDetailElement(this, parentElement, (DeterminationEvent) entity, removeListener, style);
+ } else if (entity instanceof User) {
+ element = new MemberDetailElement(this, parentElement, (User) entity, removeListener, style);
+ } else if (entity instanceof GrantedAuthority) {
+ element = new GrantedAuthorityCollectionElement(this, parentElement, (GrantedAuthorityImpl) entity,
+ removeListener, style);
+ } else if (entity instanceof Group) {
+ element = new GroupsByUserDetailElement(this, parentElement, (Group) entity, removeListener, style);
+ } else if (entity instanceof Taxon) {
+ element = new TaxonDetailElement(this, parentElement, (Taxon) entity, removeListener, style);
+ } else if (entity instanceof DescriptionElementBase) {
+ // this is the special case for protologs, maybe we can do this
+ // differently when API improves
+ DescriptionElementBase descriptionElement = (DescriptionElementBase) entity;
+ if (descriptionElement.getFeature().equals(Feature.PROTOLOGUE())) {
+ element = new ProtologueElement(this, parentElement, descriptionElement, removeListener, style);
+ }
+ } else if (entity instanceof Sequence) {
+ element = new SequenceReferenceCollectionDetailElement(this, parentElement, (Sequence) entity, removeListener, style);
+ }
+
+ if (element == null) {
+ AbstractUtility.errorDialog("No element for entity", this,
+ "Could not generate element for entity. Looks like the case is not handled already. Check implementation. Entity: "
+ + entity, null);
+ }
+
+ else if (backgroundColor != null && !backgroundColor.isDisposed()) {
+ element.setPersistentBackground(backgroundColor);
+ adapt(element);
+ parentElement.addElement(element);
+ }
+
+ return element;
+ }
+
+ public void createNamedAreaFieldController(AbstractFormSection parentElement, NamedArea namedArea, SelectionListener removeListener){
+// Object entity = HibernateProxyHelper.deproxy(versionableEntity); TODO deproxy necessary??
+ NamedAreaFieldController element = new NamedAreaFieldController(this, parentElement, namedArea, removeListener, SWT.NONE);
+ adapt(element);
+ parentElement.addElement(element);
+ }
+
+ /**
+ * <p>
+ * Creates a selection element for the given type T.
+ * </p>
+ * <p>
+ * <strong>Selection elements not handled by this method:</strong>
+ * <ul>
+ * <li>{@link TaxonNodeSelectionElement} see
+ * {@link #createTaxonNodeSelectionElement(ConversationHolder, ICdmFormElement, String, TaxonNode, int, int)}
+ * </li>
+ * <li>{@link NomenclaturalAuthorTeamSelectionElement} see
+ * {@link #createNomenclaturalAuthorTeamSelectionElement(ConversationHolder, ICdmFormElement, String, Team, int, int)}
+ * </li>
+ * </ul>
+ * </p>
+ *
+ * @param clazz
+ * a {@link Class} object of the type that you want the selection
+ * element to handle
+ * @param parentElement
+ * a {@link ICdmFormElement} object.
+ * @param labelString
+ * a {@link String} object.
+ * @param selectionType
+ * @param selection
+ * a {@link ICdmBase} object.
+ * @param style
+ * a int.
+ * @param conversation
+ * a {@link ConversationHolder} object.
+ * @return a {@link EntitySelectionElement} object.
+ */
+ public <T extends ICdmBase> EntitySelectionElement<T> createSelectionElement(Class<T> clazz,
+ ConversationHolder conversation, ICdmFormElement parentElement, String labelString, T selection, int mode,
+ int style) {
+ EntitySelectionElement<T> element = new EntitySelectionElement<T>(this, conversation, parentElement, clazz,
+ labelString, selection, mode, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ public TaxonNodeSelectionElement createTaxonNodeSelectionElement(ConversationHolder conversation,
+ ICdmFormElement parentElement, String labelString, TaxonNode selection, int mode, int style) {
+ TaxonNodeSelectionElement element = new TaxonNodeSelectionElement(this, conversation, parentElement,
+ labelString, selection, mode, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ public NomenclaturalAuthorTeamSelectionElement createNomenclaturalAuthorTeamSelectionElement(
+ ConversationHolder conversation, ICdmFormElement parentElement, String labelString, Team selection,
+ int mode, int style) {
+ NomenclaturalAuthorTeamSelectionElement element = new NomenclaturalAuthorTeamSelectionElement(this,
+ conversation, parentElement, labelString, selection, mode, style);
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
+ }
+
+ /** {@inheritDoc} */
+ public LabelElement createLabel(ICdmFormElement parentElement, String text) {
+ LabelElement labelElement = new LabelElement(this, parentElement, text);
+ adapt(labelElement);
+ parentElement.addElement(labelElement);
+ return labelElement;
+ }
+
+ /**
+ * <p>
+ * Getter for the field <code>selectionProvider</code>.
+ * </p>
+ *
+ * @return a {@link org.eclipse.jface.viewers.ISelectionProvider} object.
+ */
+ public ISelectionProvider getSelectionProvider() {
+ return selectionProvider;
+ }
+
+ /**
+ * <p>
+ * createDetailedDescriptionDetailElement
+ * </p>
+ *
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param entity
+ * a
+ * {@link eu.etaxonomy.cdm.model.description.DescriptionElementBase}
+ * object.
+ * @param style
+ * a int.
+ * @return a
+ * {@link eu.etaxonomy.taxeditor.ui.section.description.detail.AbstractDetailedDescriptionDetailElement}
+ * object.
+ */
+ public AbstractDetailedDescriptionDetailElement createDetailedDescriptionDetailElement(
+ ICdmFormElement parentElement, DescriptionElementBase entity, int style) {
+ AbstractDetailedDescriptionDetailElement detailedDescriptionElement = null;
+
+ if (entity instanceof CategoricalData) {
+ detailedDescriptionElement = new CategoricalDataDetailElement(this, parentElement,
+ (CategoricalData) entity, style);
+ } else if (entity instanceof CommonTaxonName) {
+ detailedDescriptionElement = new CommonNameDetailElement(this, parentElement, (CommonTaxonName) entity,
+ style);
+ } else if (entity instanceof Distribution) {
+ detailedDescriptionElement = new DistributionDetailElement(this, parentElement, (Distribution) entity,
+ style);
+ } else if (entity instanceof IndividualsAssociation) {
+ detailedDescriptionElement = new IndividualsAssociationDetailElement(this, parentElement,
+ (IndividualsAssociation) entity, style);
+ } else if (entity instanceof QuantitativeData) {
+ detailedDescriptionElement = new QuantitativeDataDetailElement(this, parentElement,
+ (QuantitativeData) entity, style);
+ } else if (entity instanceof TaxonInteraction) {
+ detailedDescriptionElement = new TaxonInteractionDetailElement(this, parentElement,
+ (TaxonInteraction) entity, style);
+ } else if (entity instanceof TextData) {
+ detailedDescriptionElement = new TextDataDetailElement(this, parentElement, (TextData) entity, style);
+ } else {
+ throw new IllegalStateException("There is no interface for the given description element");
+ }
+ adapt(detailedDescriptionElement);
+ parentElement.addElement(detailedDescriptionElement);
+ return detailedDescriptionElement;
+
+ }
+
+ /**
+ * Creates a styled text as a part of the form.
+ *
+ * @param parent
+ * the text parent
+ * @param value
+ * the text initial value
+ * @param style
+ * the text style
+ * @return the text widget
+ */
+ public StyledText createStyledText(Composite parent, String value, int style) {
+ StyledText text = new StyledText(parent, getBorderStyle() | style | getOrientation());
+ if (value != null) {
+ text.setText(value);
+ }
+ text.setForeground(getColors().getForeground());
+ text.setBackground(getColors().getBackground());
+ // text.addFocusListener(visibilityHandler);
+ return text;
+ }
+
+
+
+ /**
+ * @param conversationHolder
+ * @param parent
+ * @param detailsViewer
+ * @param i
+ * @return
+ */
+ public FieldObservationGeneralSection createFieldObservationGeneralSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+ FieldObservationGeneralSection section = new FieldObservationGeneralSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+ /**
+ * @param conversationHolder
+ * @param parent
+ * @param detailsViewer
+ * @param i
+ * @return
+ */
+ public GatheringEventSection createGatheringEventSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+ GatheringEventSection section = new GatheringEventSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+ /**
+ * @param conversationHolder
+ * @param parent
+ * @param detailsViewer
+ * @param i
+ * @return
+ */
+ public FieldObservationDetailsSection createFieldObservationDetailsSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+ FieldObservationDetailsSection section = new FieldObservationDetailsSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public SpecimenGeneralSection createSpecimenSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+ SpecimenGeneralSection section = new SpecimenGeneralSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public PreservedSpecimenDetailSection createPreservedSpecimenDetailsSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+ PreservedSpecimenDetailSection section = new PreservedSpecimenDetailSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public DerivedUnitDetailsSection createDerivedUnitDetailsSection(ConversationHolder conversation, ICdmFormElement parentElement, ISelectionProvider selectionProvider, int style) {
+ DerivedUnitDetailsSection section = new DerivedUnitDetailsSection(this, conversation, parentElement, selectionProvider, style);
+ addAndAdaptSection(parentElement, section);
+ return section;
+ }
+
+ public FieldObservationGeneralElementController createSpecimenGeneralElementController(ICdmFormElement parentElement){
+ return createFieldObservationGeneralElementController_internal(parentElement, true, false);
+ }
+
+ public SpecimenDetailsElementController createSpecimenDetailsElementController(ICdmFormElement parentElement){
+ SpecimenDetailsElement element = new SpecimenDetailsElement(parentElement.getLayoutComposite(), SWT.NONE);
+ element.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+ SpecimenDetailsElementController controller = new SpecimenDetailsElementController(element, this, parentElement);
+ addAndAdaptElement(parentElement, controller);
+ return controller;
+ }
+
+ public DerivedUnitDetailsElementController createDerivedUnitDetailsElementController(ICdmFormElement parentElement){
+ DerivedUnitDetailsElement element = new DerivedUnitDetailsElement(parentElement.getLayoutComposite(), SWT.NONE);
+ element.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+ DerivedUnitDetailsElementController controller = new DerivedUnitDetailsElementController(element, this, parentElement);
+ addAndAdaptElement(parentElement, controller);
+ return controller;
+ }
+
+ public FieldObservationGeneralElementController createSpecimenGeneralElementControllerWizard(ICdmFormElement parentElement){
+ return createFieldObservationGeneralElementController_internal(parentElement, true, true);
+ }
+
+ public FieldObservationGeneralElementController createFieldObservationGeneralElementControllerWizard(ICdmFormElement parentElement){
+ return createFieldObservationGeneralElementController_internal(parentElement, false, true);
+ }
+
+ public FieldObservationGeneralElementController createFieldObservationGeneralElementController(ICdmFormElement parentElement){
+ return createFieldObservationGeneralElementController_internal(parentElement, false, false);
+ }
+
+ private FieldObservationGeneralElementController createFieldObservationGeneralElementController_internal(ICdmFormElement parentElement, boolean isSpecimen, boolean isWizard){
+ FieldObservationGeneralElement element = new FieldObservationGeneralElement(parentElement.getLayoutComposite(), SWT.NONE);
+ element.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+ FieldObservationGeneralElementController controller = new FieldObservationGeneralElementController(element, this, parentElement, isSpecimen, isWizard);
+ addAndAdaptElement(parentElement, controller);
+ return controller;
+ }
+
+ public GatheringEventDetailsElementController createGatheringEventDetailsElementController(ICdmFormElement parentElement) {
+ GatheringEventDetailsElement element = new GatheringEventDetailsElement(parentElement.getLayoutComposite(), SWT.NONE);
+ element.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+ GatheringEventDetailsElementController controller = new GatheringEventDetailsElementController(element, this, parentElement);
+ adapt(controller);
+ parentElement.addElement(controller);
+ return controller;
+ }
+
+ public FieldObservationDetailsElementController createFieldObservationDetailsElementController(ICdmFormElement parentElement) {
+ FieldObservationDetailsElement element = new FieldObservationDetailsElement(parentElement.getLayoutComposite(), SWT.NONE);
+ element.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2,1));
+ FieldObservationDetailsElementController controller = new FieldObservationDetailsElementController(element, this, parentElement);
+ addAndAdaptElement(parentElement, controller);
+ return controller;
+ }
}