import org.eclipse.ui.forms.IFormColors;
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.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.DescriptionElementSource;
import eu.etaxonomy.cdm.model.common.Extension;
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.IdentifiableSource;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
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.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.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>
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
}
};
+ /**
+ *
+ * @author n.hoffmann
+ * @date Jan 25, 2010
+ *
+ */
private class SelectionMouseHandler extends MouseAdapter {
@Override
public void mouseDown(MouseEvent e) {
}
}
+ /**
+ *
+ * @author n.hoffmann
+ * @date Jan 25, 2010
+ *
+ */
private class SelectionFocusHandler extends FocusAdapter {
@Override
public void focusGained(FocusEvent e) {
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
int style) {
Label separator = this.createSeparator(
parentElement.getLayoutComposite(), SWT.HORIZONTAL | style);
- separator.setLayoutData(FILL_HORIZONTALLY());
+ separator.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
return separator;
}
/**
* <p>
- * createSelectionElement
+ * 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 selectionType
- * a
- * {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory.SelectionType}
- * object.
+ * @param clazz
+ * a {@link Class} object of the type that you want the selection element to handle
* @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * a {@link ICdmFormElement}
* object.
* @param labelString
- * a {@link java.lang.String} object.
+ * a {@link String} object.
* @param selectionType
* @param selection
- * a {@link eu.etaxonomy.cdm.model.common.IAnnotatableEntity}
- * object.
+ * a {@link ICdmBase} object.
* @param style
* a int.
* @param conversation
- * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
- * object.
+ * a {@link ConversationHolder} object.
* @return a
- * {@link eu.etaxonomy.taxeditor.ui.selection.AbstractSelectionElement}
+ * {@link EntitySelectionElement}
* object.
*/
- public AbstractSelectionElement createSelectionElement(
- SelectionType selectionType, ConversationHolder conversation,
+ public <T extends ICdmBase> EntitySelectionElement<T> createSelectionElement(
+ Class<T> clazz, 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;
- }
-
+ 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;
}
-
- /**
- * <p>
- * createNamedAreaSelectionElement
- * </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 style
- * a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.selection.NamedAreaSelectionElement}
- * 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 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);