From 17ebf2db33c214b91fb3ec917a1622b0a9b534d2 Mon Sep 17 00:00:00 2001 From: Patric Plitzner Date: Tue, 17 Jun 2014 12:22:28 +0000 Subject: [PATCH] - added "Published in" parameter to MediaSpecimen DetailsView (#4239) --- .gitattributes | 4 +- .../ui/mvc/AbstractCdmComposite.java | 8 +-- .../taxeditor/ui/mvc/combo/EnumTermCombo.java | 2 +- ...{DateTimeElement.java => DateElement.java} | 28 +++++---- ...roller.java => DateElementController.java} | 57 +++++++++---------- .../mvc/element/TextWithLabelElementMVC.java | 2 +- .../MediaSpecimenGeneralDetailElement.java | 43 +++++++++----- .../derivateSearch/DerivateLabelProvider.java | 31 ++++++---- 8 files changed, 96 insertions(+), 79 deletions(-) rename eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/{DateTimeElement.java => DateElement.java} (75%) rename eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/{DateTimeController.java => DateElementController.java} (52%) diff --git a/.gitattributes b/.gitattributes index 0ecba3a21..0d04c6b37 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1397,8 +1397,8 @@ eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/Derived eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/GeographicPointElement.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermCombo.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermComboController.java -text -eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeController.java -text -eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeElement.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java -text +eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElementController.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElementMVC.java -text eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/interfaces/CdmCompositeController.java -text diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/AbstractCdmComposite.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/AbstractCdmComposite.java index c2767aeaf..d33ae2dea 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/AbstractCdmComposite.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/AbstractCdmComposite.java @@ -14,17 +14,17 @@ import org.eclipse.swt.widgets.Control; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; -import eu.etaxonomy.taxeditor.ui.mvc.interfaces.ICdmComposite; import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController; +import eu.etaxonomy.taxeditor.ui.mvc.interfaces.ICdmComposite; /** * @author pplitzner * @date 11.02.2014 * */ -public abstract class AbstractCdmComposite extends Composite implements ICdmComposite { +public abstract class AbstractCdmComposite extends Composite implements ICdmComposite { - protected CdmCompositeController controller; + protected T controller; /** * @param parent @@ -63,7 +63,7 @@ public abstract class AbstractCdmComposite extends Composite implements ICdmComp protected abstract void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement); @Override - public CdmCompositeController getController(){ + public T getController(){ return controller; } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermCombo.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermCombo.java index aba7b4bd6..5702fde37 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermCombo.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/combo/EnumTermCombo.java @@ -29,7 +29,7 @@ import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite; * @date 29.01.2014 * */ -public class EnumTermCombo extends AbstractCdmComposite { +public class EnumTermCombo extends AbstractCdmComposite { private final FormToolkit toolkit = new FormToolkit(Display.getCurrent()); private final Combo combo; diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java similarity index 75% rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeElement.java rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java index d1a6aa118..52edbe8a6 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElement.java @@ -13,11 +13,12 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.DateTime; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Text; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.TableWrapData; import org.eclipse.ui.forms.widgets.TableWrapLayout; +import org.joda.time.DateTime; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; @@ -28,18 +29,18 @@ import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite; * @date 16.06.2014 * */ -public class DateTimeElement extends AbstractCdmComposite { +public class DateElement extends AbstractCdmComposite { private final FormToolkit toolkit = new FormToolkit(Display.getCurrent()); - private final DateTime dateTime; - private final org.joda.time.DateTime initialDateTime; + private final DateTime initialDateTime; + private final Text textDate; /** * Create the composite. * @param parent * @param style */ - public DateTimeElement(Composite parent, org.joda.time.DateTime initialDateTime, int style) { + public DateElement(Composite parent, DateTime initialDateTime, int style) { super(parent, style); this.initialDateTime = initialDateTime; addDisposeListener(new DisposeListener() { @@ -58,18 +59,12 @@ public class DateTimeElement extends AbstractCdmComposite { tableWrapLayout.leftMargin = 0; tableWrapLayout.horizontalSpacing = 0; tableWrapLayout.bottomMargin = 0; - tableWrapLayout.numColumns = 1; setLayout(tableWrapLayout); } - dateTime = new DateTime(this, SWT.BORDER | SWT.DROP_DOWN); - dateTime.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1)); - toolkit.adapt(dateTime); - toolkit.paintBordersFor(dateTime); - } - - public DateTime getDateTime() { - return dateTime; + textDate = new Text(this, SWT.BORDER); + textDate.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1)); + toolkit.adapt(textDate, true, true); } /* (non-Javadoc) @@ -77,7 +72,10 @@ public class DateTimeElement extends AbstractCdmComposite { */ @Override protected void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement) { - controller = new DateTimeController(this, formFactory, parentElement, initialDateTime, SWT.NONE); + controller = new DateElementController(this, formFactory, parentElement, initialDateTime, SWT.NONE); formFactory.adapt(controller); } + public Text getTextDate() { + return textDate; + } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java similarity index 52% rename from eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeController.java rename to eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java index 0832aeb40..1533beca7 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeController.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateElementController.java @@ -9,16 +9,16 @@ */ package eu.etaxonomy.taxeditor.ui.mvc.element; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.widgets.DateTime; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.widgets.Text; +import org.joda.time.DateTime; import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement; -import eu.etaxonomy.taxeditor.ui.element.ISelectable; import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController; /** @@ -26,10 +26,10 @@ import eu.etaxonomy.taxeditor.ui.mvc.interfaces.CdmCompositeController; * @date 16.06.2014 * */ -public class DateTimeController extends AbstractCdmFormElement implements IEnableableFormElement, -ISelectable, CdmCompositeController, SelectionListener{ +public class DateElementController extends AbstractCdmFormElement implements IEnableableFormElement, CdmCompositeController, ModifyListener{ - private final DateTime dateTime; + private final Text textDate; + private DateTime dateTime; /** * @param dateTimeElement @@ -38,26 +38,32 @@ ISelectable, CdmCompositeController, SelectionListener{ * @param initialDateTime * @param none */ - public DateTimeController(DateTimeElement dateTimeElement, CdmFormFactory formFactory, ICdmFormElement parentElement, org.joda.time.DateTime initialDateTime, int none) { + public DateElementController(DateElement dateTimeElement, CdmFormFactory formFactory, ICdmFormElement parentElement, DateTime initialDateTime, int none) { super(formFactory, parentElement); - this.dateTime = dateTimeElement.getDateTime(); -// this.dateTime.setDate(initialDateTime.getYear(), initialDateTime.getMonthOfYear(), initialDateTime.getDayOfMonth()); - addControl(dateTime); - dateTime.addSelectionListener(this); + this.textDate = dateTimeElement.getTextDate(); + this.textDate.setText(initialDateTime!=null?initialDateTime.toString("yyyy-MM-dd"):""); + addControl(textDate); + textDate.addModifyListener(this); } /* (non-Javadoc) - * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent) + * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent) */ - /** {@inheritDoc} */ @Override - public void widgetSelected(SelectionEvent e) { - firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e)); + public void modifyText(ModifyEvent e) { + try { + String text = textDate.getText(); + DateTime parsedDateTime = DateTime.parse(text); + this.dateTime = parsedDateTime; + firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e)); + } catch (IllegalArgumentException iae) { + //nothing + } } - /** {@inheritDoc} */ - @Override - public void widgetDefaultSelected(SelectionEvent e) {} + public DateTime getDateTime(){ + return dateTime; + } /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.ui.element.IRelevantFormElement#setIrrelevant(boolean) @@ -68,21 +74,12 @@ ISelectable, CdmCompositeController, SelectionListener{ } - /* (non-Javadoc) - * @see eu.etaxonomy.taxeditor.ui.element.ISelectable#setSelected(boolean) - */ - @Override - public void setSelected(boolean selected) { - // TODO Auto-generated method stub - - } - /* (non-Javadoc) * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#setEnabled(boolean) */ @Override public void setEnabled(boolean enabled) { - dateTime.setEnabled(enabled); + textDate.setEnabled(enabled); } /* (non-Javadoc) @@ -90,7 +87,7 @@ ISelectable, CdmCompositeController, SelectionListener{ */ @Override public boolean isEnabled() { - return dateTime.isEnabled(); + return textDate.isEnabled(); } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElementMVC.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElementMVC.java index 155e71a65..4725bbb8b 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElementMVC.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/TextWithLabelElementMVC.java @@ -28,7 +28,7 @@ import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite; * @date 11.02.2014 * */ -public class TextWithLabelElementMVC extends AbstractCdmComposite { +public class TextWithLabelElementMVC extends AbstractCdmComposite { private final FormToolkit toolkit = new FormToolkit(Display.getCurrent()); private final Text text; diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java index 54f4b0789..c73b7d16f 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailElement.java @@ -22,15 +22,17 @@ import eu.etaxonomy.cdm.model.common.TermType; import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.cdm.model.occurrence.Collection; import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen; +import eu.etaxonomy.cdm.model.reference.Reference; import eu.etaxonomy.taxeditor.ui.combo.TermComboElement; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement; import eu.etaxonomy.taxeditor.ui.element.LayoutConstants; import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement; -import eu.etaxonomy.taxeditor.ui.mvc.element.DateTimeElement; +import eu.etaxonomy.taxeditor.ui.mvc.element.DateElement; import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement; import eu.etaxonomy.taxeditor.ui.section.media.MediaRepresentationSection; +import eu.etaxonomy.taxeditor.ui.section.supplemental.SourceSection; import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement; /** @@ -43,11 +45,11 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement< private TermComboElement comboKindOfUnit; private LanguageStringWithLabelElement textTitleLanguageString; private EntitySelectionElement selectionArtist; - private DateTimeElement date; + private DateElement date; private LanguageStringWithLabelElement textMethodLanguageString; private EntitySelectionElement selection_collection; private TextWithLabelElement text_accessionNumber; - private EntitySelectionElement selection_publishedIn; + private EntitySelectionElement selection_publishedIn; private MediaRepresentationSection mediaRepresentationSection; /** @@ -77,21 +79,25 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement< selectionArtist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Prepared by", media.getArtist(), EntitySelectionElement.ALL, style); Label label = new Label(getLayoutComposite(), style); - label.setText("Preparation Date"); - date = new DateTimeElement(formElement.getLayoutComposite(), entity.getMediaSpecimen().getMediaCreated(), style); + label.setText("Preparation Date (yyyy-mm-dd)"); +// label.setLayoutData(LayoutConstants.LEFT()); + date = new DateElement(formElement.getLayoutComposite(), entity.getMediaSpecimen().getMediaCreated(), style); date.initController(formFactory, formElement); + textMethodLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Method", media.getDescription(Language.DEFAULT()), style); selection_collection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style); text_accessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style); - IdentifiableSource publishedIn = null; - for(IdentifiableSource source:entity.getSources()){ + + //the first PrimaryMediaSource is used for storing the reference + Reference publishedIn = null; + for(IdentifiableSource source:media.getSources()){ if(source.getType()==OriginalSourceType.PrimaryMediaSource){ - publishedIn = source; + publishedIn = source.getCitation(); break; } } - selection_publishedIn = formFactory.createSelectionElement(IdentifiableSource.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style); + selection_publishedIn = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style); mediaRepresentationSection = formFactory.createMediaRepresentationSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE); mediaRepresentationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); @@ -117,10 +123,7 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement< media.putTitle(textTitleLanguageString.getLanguageString()); } else if(eventSource==date.getController()){ - int year = date.getDateTime().getYear(); - int month = date.getDateTime().getMonth(); - int day = date.getDateTime().getDay(); - DateTime dateTime = new DateTime(year, month, day, 0, 0); + DateTime dateTime = date.getController().getDateTime(); media.setMediaCreated(dateTime); } else if(eventSource==selectionArtist){ @@ -136,7 +139,19 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement< getEntity().setAccessionNumber(text_accessionNumber.getText()); } else if(eventSource==selection_publishedIn){ - getEntity().addSource(selection_publishedIn.getSelection()); + IdentifiableSource primaryMediaSource = null; + for(IdentifiableSource source:media.getSources()){ + if(source.getType()==OriginalSourceType.PrimaryMediaSource){ + primaryMediaSource = source; + } + } + if(primaryMediaSource==null){ + primaryMediaSource = IdentifiableSource.NewInstance(OriginalSourceType.PrimaryMediaSource); + media.addSource(primaryMediaSource); + } + else{ + primaryMediaSource.setCitation(selection_publishedIn.getSelection()); + } } } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java index 5eb06d06e..4842391de 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/derivateSearch/DerivateLabelProvider.java @@ -123,6 +123,23 @@ public class DerivateLabelProvider extends ColumnLabelProvider { } label += fieldUnit.getFieldNumber()!=null?fieldUnit.getFieldNumber():""; } + else if(element instanceof MediaSpecimen){ + MediaSpecimen mediaSpecimen = (MediaSpecimen)element; + label += mediaSpecimen.getMediaSpecimen().getTitle()!=null?mediaSpecimen.getMediaSpecimen().getTitle().getText()+", ":"[no motif]"; + label += mediaSpecimen.getMediaSpecimen().getArtist()!=null?mediaSpecimen.getMediaSpecimen().getArtist()+", ":""; + label += mediaSpecimen.getAccessionNumber()!=null?mediaSpecimen.getAccessionNumber()+", ":""; + Collection collection = mediaSpecimen.getCollection(); + if(collection!=null){ + label += collection.getName()!=null?collection.getName()+" ":""; + } + } + else if(element instanceof DnaSample + || (element instanceof DerivedUnit + && ((SpecimenOrObservationBase) element).getRecordBasis()==SpecimenOrObservationType.DnaSample)){ + //TODO implement + label += element.toString(); + + } else if(element instanceof DerivedUnit){ DerivedUnit derivedUnit = (DerivedUnit)element; if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){ @@ -143,21 +160,10 @@ public class DerivateLabelProvider extends ColumnLabelProvider { label += derivedUnit.getBarcode()!=null?derivedUnit.getBarcode():""; } else if(derivedUnit.getRecordBasis()==SpecimenOrObservationType.TissueSample){ + //TODO: implement // kindofTissue + SampleDesignation } } - else if(element instanceof MediaSpecimen){ - MediaSpecimen mediaSpecimen = (MediaSpecimen)element; - //TODO implement - label += "Motif?"; - } - else if(element instanceof DnaSample - || (element instanceof DerivedUnit - && ((SpecimenOrObservationBase) element).getRecordBasis()==SpecimenOrObservationType.DnaSample)){ - //TODO implement - label += element.toString(); - - } else if(element instanceof Sequence){ Sequence sequence = (Sequence)element; label += "SampleDesignation?"+", "; @@ -176,6 +182,7 @@ public class DerivateLabelProvider extends ColumnLabelProvider { if(label.isEmpty()){ label = element.toString(); } + //remove last comma else if(label.endsWith(", ")){ label = label.substring(0, label.length()-2); } -- 2.34.1