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
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<T extends CdmCompositeController> extends Composite implements ICdmComposite {
- protected CdmCompositeController controller;
+ protected T controller;
/**
* @param parent
protected abstract void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement);
@Override
- public CdmCompositeController getController(){
+ public T getController(){
return controller;
}
* @date 29.01.2014
*
*/
-public class EnumTermCombo extends AbstractCdmComposite {
+public class EnumTermCombo extends AbstractCdmComposite<EnumTermComboController> {
private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
private final Combo combo;
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;
* @date 16.06.2014
*
*/
-public class DateTimeElement extends AbstractCdmComposite {
+public class DateElement extends AbstractCdmComposite<DateElementController> {
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() {
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)
*/
@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;
+ }
}
*/
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;
/**
* @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
* @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)
}
- /* (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)
*/
@Override
public boolean isEnabled() {
- return dateTime.isEnabled();
+ return textDate.isEnabled();
}
}
* @date 11.02.2014
*
*/
-public class TextWithLabelElementMVC extends AbstractCdmComposite {
+public class TextWithLabelElementMVC extends AbstractCdmComposite<TextWithLabelElementController> {
private final FormToolkit toolkit = new FormToolkit(Display.getCurrent());
private final Text text;
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;
/**
private TermComboElement<DefinedTerm> comboKindOfUnit;
private LanguageStringWithLabelElement textTitleLanguageString;
private EntitySelectionElement<AgentBase> selectionArtist;
- private DateTimeElement date;
+ private DateElement date;
private LanguageStringWithLabelElement textMethodLanguageString;
private EntitySelectionElement<Collection> selection_collection;
private TextWithLabelElement text_accessionNumber;
- private EntitySelectionElement<IdentifiableSource> selection_publishedIn;
+ private EntitySelectionElement<Reference> selection_publishedIn;
private MediaRepresentationSection mediaRepresentationSection;
/**
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));
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){
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());
+ }
}
}
}
}
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){
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?"+", ";
if(label.isEmpty()){
label = element.toString();
}
+ //remove last comma
else if(label.endsWith(", ")){
label = label.substring(0, label.length()-2);
}