Project

General

Profile

Download (7.47 KB) Statistics
| Branch: | Tag: | Revision:
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 eu.etaxonomy.cdm.api.service.IVocabularyService;
12
import eu.etaxonomy.cdm.model.agent.AgentBase;
13
import eu.etaxonomy.cdm.model.term.DefinedTerm;
14
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
15
import eu.etaxonomy.cdm.model.common.Language;
16
import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
17
import eu.etaxonomy.cdm.model.term.TermVocabulary;
18
import eu.etaxonomy.cdm.model.common.TimePeriod;
19
import eu.etaxonomy.cdm.model.term.VocabularyEnum;
20
import eu.etaxonomy.cdm.model.media.Media;
21
import eu.etaxonomy.cdm.model.occurrence.Collection;
22
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
23
import eu.etaxonomy.cdm.model.reference.Reference;
24
import eu.etaxonomy.taxeditor.store.CdmStore;
25
import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
26
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
27
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
28
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
29
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
30
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
31
import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
32
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
33
import eu.etaxonomy.taxeditor.ui.section.media.ITogglableMediaElement;
34
import eu.etaxonomy.taxeditor.ui.section.media.MediaDetailElement;
35
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
36

    
37
/**
38
 * @author pplitzner
39
 * @date 16.12.2013
40
 *
41
 */
42
public class MediaSpecimenGeneralDetailElement extends AbstractCdmDetailElement<MediaSpecimen> implements ITogglableMediaElement{
43

    
44
    private final TermVocabulary mediaSpecimenVocabulary = CdmStore.getService(IVocabularyService.class).find(VocabularyEnum.MediaSpecimenKindOfUnit.getUuid());
45

    
46
    private TermComboElement<DefinedTerm> comboKindOfUnit;
47
    private LanguageStringWithLabelElement textTitleLanguageString;
48
    private EntitySelectionElement<AgentBase> selectionArtist;
49
    private TimePeriodElement date;
50
    private LanguageStringWithLabelElement textMethodLanguageString;
51
    private EntitySelectionElement<Collection> selection_collection;
52
    private TextWithLabelElement text_accessionNumber;
53
    private EntitySelectionElement<Reference> selection_publishedIn;
54
    private CheckboxElement checkIsPublish;
55

    
56
    private MediaDetailElement mediaDetailElement;
57
    /**
58
     * @param formFactory
59
     * @param formElement
60
     */
61
    public MediaSpecimenGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
62
        super(formFactory, formElement);
63
    }
64

    
65
    @Override
66
    protected void createControls(ICdmFormElement formElement, MediaSpecimen entity, int style) {
67
        Media media = entity.getMediaSpecimen();
68
        if(media==null){
69
            formFactory.createLabel(formElement, "No media attached to this MediaSpecimen!");
70
        }
71
        else{
72
            comboKindOfUnit = formFactory.createDefinedTermComboElement(mediaSpecimenVocabulary, formElement, "Kind of Media", entity.getKindOfUnit(), style);
73
            textTitleLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Motif", media.getTitle(), style);
74
            selectionArtist = formFactory.createSelectionElement(AgentBase.class, //getConversationHolder(),
75
                    formElement, "Prepared by", media.getArtist(), EntitySelectionElement.ALL, style);
76
            TimePeriod mediaCreated = entity.getMediaSpecimen().getMediaCreated();
77

    
78
            date = formFactory.createTimePeriodElement(formElement, "Preparation Date", mediaCreated, style);
79
            textMethodLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Method", media.getDescription(Language.getDefaultLanguage()), style);
80
            selection_collection = formFactory.createSelectionElement(Collection.class,// getConversationHolder(),
81
                    formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style);
82
            text_accessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style);
83

    
84
            //the first PrimaryMediaSource is used for storing the reference
85
            Reference publishedIn = null;
86
            for(IdentifiableSource source:media.getSources()){
87
                if(source.getType()==OriginalSourceType.PrimaryMediaSource){
88
                    publishedIn = source.getCitation();
89
                    break;
90
                }
91
            }
92
            selection_publishedIn = formFactory.createSelectionElement(Reference.class, //getConversationHolder(),
93
                    formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style);
94
            checkIsPublish = formFactory.createCheckbox(formElement, "Publish", entity.isPublish(), style);
95

    
96
            mediaDetailElement = formFactory.createMediaDetailElement(formElement);
97
            mediaDetailElement.setEntity(media);
98
        }
99
    }
100

    
101
    @Override
102
    public void handleEvent(Object eventSource) {
103
        Media media = getEntity().getMediaSpecimen();
104
        if(media==null){
105
            media = Media.NewInstance();
106
            getEntity().setMediaSpecimen(media);
107
        }
108
        if(eventSource==comboKindOfUnit){
109
            getEntity().setKindOfUnit(comboKindOfUnit.getSelection());
110
        }
111
        else if(eventSource==textTitleLanguageString){
112
            media.putTitle(textTitleLanguageString.getLanguageString());
113
        }
114
        else if(eventSource==date){
115
            TimePeriod dateTime = date.getTimePeriod();
116
            media.setMediaCreated(dateTime);
117
        }
118
        else if(eventSource==selectionArtist){
119
            media.setArtist(selectionArtist.getSelection());
120
        }
121
        else if(eventSource==textMethodLanguageString){
122
            media.addDescription(textMethodLanguageString.getLanguageString());
123
        }
124
        else if (eventSource == selection_collection) {
125
            getEntity().setCollection(selection_collection.getSelection());
126
        }
127
        else if (eventSource == text_accessionNumber) {
128
            getEntity().setAccessionNumber(text_accessionNumber.getText());
129
        }
130
        else if(eventSource==selection_publishedIn){
131
            IdentifiableSource primaryMediaSource = null;
132
            for(IdentifiableSource source:media.getSources()){
133
                if(source.getType()==OriginalSourceType.PrimaryMediaSource){
134
                    primaryMediaSource = source;
135
                }
136
            }
137
            if(primaryMediaSource==null){
138
                primaryMediaSource = IdentifiableSource.NewInstance(OriginalSourceType.PrimaryMediaSource);
139
                media.addSource(primaryMediaSource);
140
            }
141
            else{
142
                primaryMediaSource.setCitation(selection_publishedIn.getSelection());
143
            }
144
        }
145
        else if(eventSource==checkIsPublish){
146
            getEntity().setPublish(checkIsPublish.getSelection());
147
        }
148
    }
149

    
150
    @Override
151
    public void toggleAdvancedMediaView() {
152
        if(mediaDetailElement!=null){
153
            mediaDetailElement.toggleAdvancedMediaView();
154
        }
155
    }
156

    
157
    public boolean isAdvancedMediaView() {
158
        if(mediaDetailElement==null){
159
            return false;
160
        }
161
        return mediaDetailElement.isAdvancedMediaView();
162
    }
163

    
164
}
(1-1/2)