From aaed1c42f22fa1156da5184fab357159f28f09c2 Mon Sep 17 00:00:00 2001 From: Patric Plitzner Date: Tue, 17 Jun 2014 07:27:02 +0000 Subject: [PATCH] - added missing parameters to MediaSpecimen DetailsView (#4239) --- .gitattributes | 2 + .../ui/mvc/element/DateTimeController.java | 96 +++++++++++++++++++ .../ui/mvc/element/DateTimeElement.java | 83 ++++++++++++++++ .../MediaSpecimenGeneralDetailElement.java | 80 ++++++++++++---- 4 files changed, 240 insertions(+), 21 deletions(-) create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeController.java create mode 100644 eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeElement.java diff --git a/.gitattributes b/.gitattributes index 798918ab8..0ecba3a21 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1397,6 +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/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/element/DateTimeController.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeController.java new file mode 100644 index 000000000..0832aeb40 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeController.java @@ -0,0 +1,96 @@ +// $Id$ +/** +* Copyright (C) 2014 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ +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 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; + +/** + * @author pplitzner + * @date 16.06.2014 + * + */ +public class DateTimeController extends AbstractCdmFormElement implements IEnableableFormElement, +ISelectable, CdmCompositeController, SelectionListener{ + + private final DateTime dateTime; + + /** + * @param dateTimeElement + * @param formFactory + * @param parentElement + * @param initialDateTime + * @param none + */ + public DateTimeController(DateTimeElement dateTimeElement, CdmFormFactory formFactory, ICdmFormElement parentElement, org.joda.time.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); + } + + /* (non-Javadoc) + * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent) + */ + /** {@inheritDoc} */ + @Override + public void widgetSelected(SelectionEvent e) { + firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e)); + } + + /** {@inheritDoc} */ + @Override + public void widgetDefaultSelected(SelectionEvent e) {} + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.element.IRelevantFormElement#setIrrelevant(boolean) + */ + @Override + public void setIrrelevant(boolean irrelevant) { + // TODO Auto-generated method stub + + } + + /* (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); + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement#isEnabled() + */ + @Override + public boolean isEnabled() { + return dateTime.isEnabled(); + } + +} 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/DateTimeElement.java new file mode 100644 index 000000000..d1a6aa118 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/mvc/element/DateTimeElement.java @@ -0,0 +1,83 @@ +// $Id$ +/** +* Copyright (C) 2014 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ +package eu.etaxonomy.taxeditor.ui.mvc.element; + +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.ui.forms.widgets.FormToolkit; +import org.eclipse.ui.forms.widgets.TableWrapData; +import org.eclipse.ui.forms.widgets.TableWrapLayout; + +import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; +import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; +import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite; + +/** + * @author pplitzner + * @date 16.06.2014 + * + */ +public class DateTimeElement extends AbstractCdmComposite { + + private final FormToolkit toolkit = new FormToolkit(Display.getCurrent()); + private final DateTime dateTime; + private final org.joda.time.DateTime initialDateTime; + + /** + * Create the composite. + * @param parent + * @param style + */ + public DateTimeElement(Composite parent, org.joda.time.DateTime initialDateTime, int style) { + super(parent, style); + this.initialDateTime = initialDateTime; + addDisposeListener(new DisposeListener() { + @Override + public void widgetDisposed(DisposeEvent e) { + toolkit.dispose(); + } + }); + toolkit.adapt(this); + toolkit.paintBordersFor(this); + { + TableWrapLayout tableWrapLayout = new TableWrapLayout(); + tableWrapLayout.verticalSpacing = 0; + tableWrapLayout.topMargin = 0; + tableWrapLayout.rightMargin = 0; + 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; + } + + /* (non-Javadoc) + * @see eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite#initInternalController(eu.etaxonomy.taxeditor.ui.element.CdmFormFactory, eu.etaxonomy.taxeditor.ui.element.ICdmFormElement) + */ + @Override + protected void initInternalController(CdmFormFactory formFactory, ICdmFormElement parentElement) { + controller = new DateTimeController(this, formFactory, parentElement, initialDateTime, SWT.NONE); + formFactory.adapt(controller); + } +} 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 f145066b8..54f4b0789 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 @@ -9,18 +9,26 @@ */ package eu.etaxonomy.taxeditor.ui.section.occurrence.media; +import org.eclipse.swt.widgets.Label; import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.joda.time.DateTime; import eu.etaxonomy.cdm.model.agent.AgentBase; +import eu.etaxonomy.cdm.model.common.DefinedTerm; +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.OriginalSourceType; +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.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.TimePeriodElement; +import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement; +import eu.etaxonomy.taxeditor.ui.mvc.element.DateTimeElement; import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement; import eu.etaxonomy.taxeditor.ui.section.media.MediaRepresentationSection; import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement; @@ -32,10 +40,14 @@ import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement; */ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement { + private TermComboElement comboKindOfUnit; private LanguageStringWithLabelElement textTitleLanguageString; private EntitySelectionElement selectionArtist; - private TimePeriodElement date; - private LanguageStringWithLabelElement textDescriptionLanguageString; + private DateTimeElement date; + private LanguageStringWithLabelElement textMethodLanguageString; + private EntitySelectionElement selection_collection; + private TextWithLabelElement text_accessionNumber; + private EntitySelectionElement selection_publishedIn; private MediaRepresentationSection mediaRepresentationSection; /** @@ -55,24 +67,31 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement< */ @Override protected void createControls(ICdmFormElement formElement, MediaSpecimen entity, int style) { - LanguageString title; - AgentBase artist; - LanguageString description; - Media media = entity.getMediaSpecimen(); if(media==null){ formFactory.createLabel(formElement, "No media attached to this MediaSpecimen!"); - title = null; - artist = null; - description = null; } else{ - title = media.getTitle(); - artist = media.getArtist(); - description = media.getDescription(Language.DEFAULT()); - textTitleLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Title", title, style); - selectionArtist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Artist", artist, EntitySelectionElement.ALL, style); - textDescriptionLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Description", description, style); + comboKindOfUnit = formFactory.createDefinedTermComboElement(TermType.KindOfUnit, formElement, "Kind of Media", entity.getKindOfUnit(), style); + textTitleLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Motif", media.getTitle(), style); + 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); + 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()){ + if(source.getType()==OriginalSourceType.PrimaryMediaSource){ + publishedIn = source; + break; + } + } + selection_publishedIn = formFactory.createSelectionElement(IdentifiableSource.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style); mediaRepresentationSection = formFactory.createMediaRepresentationSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE); mediaRepresentationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1)); @@ -92,13 +111,32 @@ public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement< Media media = getEntity().getMediaSpecimen(); if(media==null){ media = Media.NewInstance(); + getEntity().setMediaSpecimen(media); } - - if(eventSource==selectionArtist){ + if(eventSource==textTitleLanguageString){ + 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); + media.setMediaCreated(dateTime); + } + else if(eventSource==selectionArtist){ media.setArtist(selectionArtist.getSelection()); } - else if(eventSource==textDescriptionLanguageString){ - media.addDescription(textDescriptionLanguageString.getLanguageString()); + else if(eventSource==textMethodLanguageString){ + media.addDescription(textMethodLanguageString.getLanguageString()); + } + else if (eventSource == selection_collection) { + getEntity().setCollection(selection_collection.getSelection()); + } + else if (eventSource == text_accessionNumber) { + getEntity().setAccessionNumber(text_accessionNumber.getText()); + } + else if(eventSource==selection_publishedIn){ + getEntity().addSource(selection_publishedIn.getSelection()); } } } -- 2.34.1