import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionException;
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.store.CdmStore;
*/
public class TaxonAssociationDetailElement extends AbstractCdmDetailElement<DerivedUnitFacade> implements IDoubleClickListener{
-
private TableViewer associationsViewer;
- private TableViewer typeDesignationViewer;
public TaxonAssociationDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
super(formFactory, formElement);
//TODO add context menu for deleting associations
Collection<TaxonBase<?>> associatedTaxa = CdmStore.getService(IOccurrenceService.class).listAssociatedTaxa(entity.innerDerivedUnit(), null, null, null, null);
- Collection<SpecimenTypeDesignation> typeDesignations = CdmStore.getService(IOccurrenceService.class).listTypeDesignations(entity.innerDerivedUnit(), null, null, null, null);
if(!associatedTaxa.isEmpty()){
associationsViewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
label.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
}
- //TODO implement service method for this which is just used in the label provider
- Collection<TaxonBase<?>> typedTaxa = new HashSet<TaxonBase<?>>();
- for (SpecimenTypeDesignation specimenTypeDesignation : typeDesignations) {
- for (TaxonNameBase taxonNameBase : specimenTypeDesignation.getTypifiedNames()) {
- Set taxa = taxonNameBase.getTaxa();
- for (Object taxon : taxa) {
- if(taxon instanceof CdmBase && ((CdmBase)taxon).isInstanceOf(TaxonBase.class)){
- typedTaxa.add(HibernateProxyHelper.deproxy(taxon, TaxonBase.class));
- }
- }
- }
- }
- if(!typedTaxa.isEmpty()){
- Label typeLabel = formFactory.createLabel(getLayoutComposite(), "Type Designations");
- typeLabel.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-
- typeDesignationViewer = new TableViewer(getLayoutComposite(), SWT.FULL_SELECTION);
- typeDesignationViewer.getTable().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
- typeDesignationViewer.setContentProvider(new ArrayContentProvider());
- typeDesignationViewer.setInput(typedTaxa);
- typeDesignationViewer.addDoubleClickListener(this);
- }
}
/** {@inheritDoc} */