ref #6190 removing svn property place holder in first line of code - java files
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / occurrence / media / MediaSpecimenGeneralDetailElement.java
1 /**
2 * Copyright (C) 2013 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.taxeditor.ui.section.occurrence.media;
10
11 import org.joda.time.DateTime;
12
13 import eu.etaxonomy.cdm.api.service.IVocabularyService;
14 import eu.etaxonomy.cdm.model.agent.AgentBase;
15 import eu.etaxonomy.cdm.model.common.DefinedTerm;
16 import eu.etaxonomy.cdm.model.common.IdentifiableSource;
17 import eu.etaxonomy.cdm.model.common.Language;
18 import eu.etaxonomy.cdm.model.common.OriginalSourceType;
19 import eu.etaxonomy.cdm.model.common.TermVocabulary;
20 import eu.etaxonomy.cdm.model.common.VocabularyEnum;
21 import eu.etaxonomy.cdm.model.media.Media;
22 import eu.etaxonomy.cdm.model.occurrence.Collection;
23 import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
24 import eu.etaxonomy.cdm.model.reference.Reference;
25 import eu.etaxonomy.taxeditor.store.CdmStore;
26 import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
27 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
28 import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
29 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
30 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
31 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
32 import eu.etaxonomy.taxeditor.ui.mvc.element.DateElement;
33 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
34 import eu.etaxonomy.taxeditor.ui.section.media.ITogglableMediaElement;
35 import eu.etaxonomy.taxeditor.ui.section.media.MediaDetailElement;
36 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
37
38 /**
39 * @author pplitzner
40 * @date 16.12.2013
41 *
42 */
43 public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<MediaSpecimen> implements ITogglableMediaElement{
44
45 private final TermVocabulary mediaSpecimenVocabulary = CdmStore.getService(IVocabularyService.class).find(VocabularyEnum.MediaSpecimenKindOfUnit.getUuid());
46
47 private TermComboElement<DefinedTerm> comboKindOfUnit;
48 private LanguageStringWithLabelElement textTitleLanguageString;
49 private EntitySelectionElement<AgentBase> selectionArtist;
50 private DateElement date;
51 private LanguageStringWithLabelElement textMethodLanguageString;
52 private EntitySelectionElement<Collection> selection_collection;
53 private TextWithLabelElement text_accessionNumber;
54 private EntitySelectionElement<Reference> selection_publishedIn;
55 private CheckboxElement checkIsPublish;
56
57 private MediaDetailElement mediaDetailElement;
58 /**
59 * @param formFactory
60 * @param formElement
61 */
62 public MediaSpecimenGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
63 super(formFactory, formElement);
64 }
65
66 @Override
67 protected void createControls(ICdmFormElement formElement, MediaSpecimen entity, int style) {
68 Media media = entity.getMediaSpecimen();
69 if(media==null){
70 formFactory.createLabel(formElement, "No media attached to this MediaSpecimen!");
71 }
72 else{
73 comboKindOfUnit = formFactory.createDefinedTermComboElement(mediaSpecimenVocabulary, formElement, "Kind of Media", entity.getKindOfUnit(), style);
74 textTitleLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Motif", media.getTitle(), style);
75 selectionArtist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Prepared by", media.getArtist(), EntitySelectionElement.ALL, style);
76 date = formFactory.createDateElement(formElement, "Preparation Date", entity.getMediaSpecimen().getMediaCreated(), style);
77 textMethodLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Method", media.getDescription(Language.getDefaultLanguage()), style);
78 selection_collection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style);
79 text_accessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style);
80
81 //the first PrimaryMediaSource is used for storing the reference
82 Reference publishedIn = null;
83 for(IdentifiableSource source:media.getSources()){
84 if(source.getType()==OriginalSourceType.PrimaryMediaSource){
85 publishedIn = source.getCitation();
86 break;
87 }
88 }
89 selection_publishedIn = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style);
90 checkIsPublish = formFactory.createCheckbox(formElement, "Publish", entity.isPublish(), style);
91
92 mediaDetailElement = formFactory.createMediaDetailElement(formElement);
93 mediaDetailElement.setEntity(media);
94 }
95 }
96
97 @Override
98 public void handleEvent(Object eventSource) {
99 Media media = getEntity().getMediaSpecimen();
100 if(media==null){
101 media = Media.NewInstance();
102 getEntity().setMediaSpecimen(media);
103 }
104 if(eventSource==comboKindOfUnit){
105 getEntity().setKindOfUnit(comboKindOfUnit.getSelection());
106 }
107 else if(eventSource==textTitleLanguageString){
108 media.putTitle(textTitleLanguageString.getLanguageString());
109 }
110 else if(eventSource==date.getController()){
111 DateTime dateTime = date.getController().getDateTime();
112 media.setMediaCreated(dateTime);
113 }
114 else if(eventSource==selectionArtist){
115 media.setArtist(selectionArtist.getSelection());
116 }
117 else if(eventSource==textMethodLanguageString){
118 media.addDescription(textMethodLanguageString.getLanguageString());
119 }
120 else if (eventSource == selection_collection) {
121 getEntity().setCollection(selection_collection.getSelection());
122 }
123 else if (eventSource == text_accessionNumber) {
124 getEntity().setAccessionNumber(text_accessionNumber.getText());
125 }
126 else if(eventSource==selection_publishedIn){
127 IdentifiableSource primaryMediaSource = null;
128 for(IdentifiableSource source:media.getSources()){
129 if(source.getType()==OriginalSourceType.PrimaryMediaSource){
130 primaryMediaSource = source;
131 }
132 }
133 if(primaryMediaSource==null){
134 primaryMediaSource = IdentifiableSource.NewInstance(OriginalSourceType.PrimaryMediaSource);
135 media.addSource(primaryMediaSource);
136 }
137 else{
138 primaryMediaSource.setCitation(selection_publishedIn.getSelection());
139 }
140 }
141 else if(eventSource==checkIsPublish){
142 getEntity().setPublish(checkIsPublish.getSelection());
143 }
144 }
145
146 @Override
147 public void toggleAdvancedMediaView() {
148 if(mediaDetailElement!=null){
149 mediaDetailElement.toggleAdvancedMediaView();
150 }
151 }
152
153 public boolean isAdvancedMediaView() {
154 if(mediaDetailElement==null){
155 return false;
156 }
157 return mediaDetailElement.isAdvancedMediaView();
158 }
159
160 }