- added missing parameters to MediaSpecimen DetailsView (#4239)
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / media / MediaSpecimenGeneralDetailElement.java
1 // $Id$
2 /**
3 * Copyright (C) 2013 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10 package eu.etaxonomy.taxeditor.ui.section.occurrence.media;
11
12 import org.eclipse.swt.widgets.Label;
13 import org.eclipse.ui.forms.widgets.ExpandableComposite;
14 import org.joda.time.DateTime;
15
16 import eu.etaxonomy.cdm.model.agent.AgentBase;
17 import eu.etaxonomy.cdm.model.common.DefinedTerm;
18 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
19 import eu.etaxonomy.cdm.model.common.Language;
20 import eu.etaxonomy.cdm.model.common.OriginalSourceType;
21 import eu.etaxonomy.cdm.model.common.TermType;
22 import eu.etaxonomy.cdm.model.media.Media;
23 import eu.etaxonomy.cdm.model.occurrence.Collection;
24 import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
25 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
26 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
27 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
28 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
29 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
30 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
31 import eu.etaxonomy.taxeditor.ui.mvc.element.DateTimeElement;
32 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
33 import eu.etaxonomy.taxeditor.ui.section.media.MediaRepresentationSection;
34 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
35
36 /**
37 * @author pplitzner
38 * @date 16.12.2013
39 *
40 */
41 public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<MediaSpecimen> {
42
43 private TermComboElement<DefinedTerm> comboKindOfUnit;
44 private LanguageStringWithLabelElement textTitleLanguageString;
45 private EntitySelectionElement<AgentBase> selectionArtist;
46 private DateTimeElement date;
47 private LanguageStringWithLabelElement textMethodLanguageString;
48 private EntitySelectionElement<Collection> selection_collection;
49 private TextWithLabelElement text_accessionNumber;
50 private EntitySelectionElement<IdentifiableSource> selection_publishedIn;
51
52 private MediaRepresentationSection mediaRepresentationSection;
53 /**
54 * @param formFactory
55 * @param formElement
56 */
57 public MediaSpecimenGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
58 super(formFactory, formElement);
59 }
60
61 /*
62 * (non-Javadoc)
63 *
64 * @see
65 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
66 * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
67 */
68 @Override
69 protected void createControls(ICdmFormElement formElement, MediaSpecimen entity, int style) {
70 Media media = entity.getMediaSpecimen();
71 if(media==null){
72 formFactory.createLabel(formElement, "No media attached to this MediaSpecimen!");
73 }
74 else{
75 comboKindOfUnit = formFactory.createDefinedTermComboElement(TermType.KindOfUnit, formElement, "Kind of Media", entity.getKindOfUnit(), style);
76 textTitleLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Motif", media.getTitle(), style);
77 selectionArtist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Prepared by", media.getArtist(), EntitySelectionElement.ALL, style);
78
79 Label label = new Label(getLayoutComposite(), style);
80 label.setText("Preparation Date");
81 date = new DateTimeElement(formElement.getLayoutComposite(), entity.getMediaSpecimen().getMediaCreated(), style);
82 date.initController(formFactory, formElement);
83
84 textMethodLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Method", media.getDescription(Language.DEFAULT()), style);
85 selection_collection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style);
86 text_accessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style);
87 IdentifiableSource publishedIn = null;
88 for(IdentifiableSource source:entity.getSources()){
89 if(source.getType()==OriginalSourceType.PrimaryMediaSource){
90 publishedIn = source;
91 break;
92 }
93 }
94 selection_publishedIn = formFactory.createSelectionElement(IdentifiableSource.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style);
95
96 mediaRepresentationSection = formFactory.createMediaRepresentationSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
97 mediaRepresentationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
98 mediaRepresentationSection.setEntity(media);
99 }
100 }
101
102 /*
103 * (non-Javadoc)
104 *
105 * @see
106 * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
107 * .lang.Object)
108 */
109 @Override
110 public void handleEvent(Object eventSource) {
111 Media media = getEntity().getMediaSpecimen();
112 if(media==null){
113 media = Media.NewInstance();
114 getEntity().setMediaSpecimen(media);
115 }
116 if(eventSource==textTitleLanguageString){
117 media.putTitle(textTitleLanguageString.getLanguageString());
118 }
119 else if(eventSource==date.getController()){
120 int year = date.getDateTime().getYear();
121 int month = date.getDateTime().getMonth();
122 int day = date.getDateTime().getDay();
123 DateTime dateTime = new DateTime(year, month, day, 0, 0);
124 media.setMediaCreated(dateTime);
125 }
126 else if(eventSource==selectionArtist){
127 media.setArtist(selectionArtist.getSelection());
128 }
129 else if(eventSource==textMethodLanguageString){
130 media.addDescription(textMethodLanguageString.getLanguageString());
131 }
132 else if (eventSource == selection_collection) {
133 getEntity().setCollection(selection_collection.getSelection());
134 }
135 else if (eventSource == text_accessionNumber) {
136 getEntity().setAccessionNumber(text_accessionNumber.getText());
137 }
138 else if(eventSource==selection_publishedIn){
139 getEntity().addSource(selection_publishedIn.getSelection());
140 }
141 }
142 }