--- /dev/null
+// $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();
+ }
+
+}
--- /dev/null
+// $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);
+ }
+}
*/
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;
*/
public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<MediaSpecimen> {
+ private TermComboElement<DefinedTerm> comboKindOfUnit;
private LanguageStringWithLabelElement textTitleLanguageString;
private EntitySelectionElement<AgentBase> selectionArtist;
- private TimePeriodElement date;
- private LanguageStringWithLabelElement textDescriptionLanguageString;
+ private DateTimeElement date;
+ private LanguageStringWithLabelElement textMethodLanguageString;
+ private EntitySelectionElement<Collection> selection_collection;
+ private TextWithLabelElement text_accessionNumber;
+ private EntitySelectionElement<IdentifiableSource> selection_publishedIn;
private MediaRepresentationSection mediaRepresentationSection;
/**
*/
@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));
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());
}
}
}