Project

General

Profile

Download (10.1 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 org.apache.commons.lang.StringUtils;
12
import org.eclipse.swt.SWT;
13

    
14
import eu.etaxonomy.cdm.api.service.IVocabularyService;
15
import eu.etaxonomy.cdm.model.agent.AgentBase;
16
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
17
import eu.etaxonomy.cdm.model.common.Language;
18
import eu.etaxonomy.cdm.model.common.LanguageString;
19
import eu.etaxonomy.cdm.model.common.TimePeriod;
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.OriginalSourceType;
24
import eu.etaxonomy.cdm.model.reference.Reference;
25
import eu.etaxonomy.cdm.model.term.DefinedTerm;
26
import eu.etaxonomy.cdm.model.term.TermVocabulary;
27
import eu.etaxonomy.cdm.model.term.VocabularyEnum;
28
import eu.etaxonomy.taxeditor.store.CdmStore;
29
import eu.etaxonomy.taxeditor.ui.combo.term.TermComboElement;
30
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
31
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
32
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
33
import eu.etaxonomy.taxeditor.ui.element.LabelElement;
34
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
35
import eu.etaxonomy.taxeditor.ui.element.MultilanguageTextElement;
36
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
37
import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
38
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
39
import eu.etaxonomy.taxeditor.ui.section.media.ITogglableMediaElement;
40
import eu.etaxonomy.taxeditor.ui.section.media.MediaDetailElement;
41
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
42

    
43
/**
44
 * @author pplitzner
45
 * @date 16.12.2013
46
 */
47
public class MediaSpecimenGeneralDetailElement
48
        extends AbstractCdmDetailElement<MediaSpecimen>
49
        implements ITogglableMediaElement{
50

    
51
    private final TermVocabulary<?> mediaSpecimenVocabulary = CdmStore.getService(IVocabularyService.class).find(VocabularyEnum.MediaSpecimenKindOfUnit.getUuid());
52

    
53
    private TermComboElement<DefinedTerm> comboKindOfUnit;
54
    private LanguageStringWithLabelElement textTitleLanguageString;
55
    private MultilanguageTextElement text_description;
56
    private EntitySelectionElement<AgentBase> selectionArtist;
57
    private TimePeriodElement date;
58
    private LanguageStringWithLabelElement textMethodLanguageString;
59
    private EntitySelectionElement<Collection> selection_collection;
60
    private TextWithLabelElement text_accessionNumber;
61
    private EntitySelectionElement<Reference> selection_publishedIn;
62
    private TextWithLabelElement text_published_in_detail;
63
    private CheckboxElement checkIsPublish;
64

    
65
    private MediaDetailElement mediaDetailElement;
66

    
67
    public MediaSpecimenGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
68
        super(formFactory, formElement);
69
    }
70

    
71
    @Override
72
    protected void createControls(ICdmFormElement formElement, MediaSpecimen entity, int style) {
73

    
74
        Media media = entity == null ? null: entity.getMediaSpecimen();
75

    
76
        if(media==null){
77
            formFactory.createLabel(formElement, "No media attached to this MediaSpecimen!");
78
        }
79
        else{
80
            comboKindOfUnit = formFactory.createDefinedTermComboElement(mediaSpecimenVocabulary, formElement, "Kind of Media", entity.getKindOfUnit(), style);
81
            textTitleLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Subject", media.getTitle(CdmStore.getDefaultLanguage()), style);
82
            if (getEntity() != null && media.getAllDescriptions() != null && !media.getAllDescriptions().isEmpty() ) {
83
            	boolean textExists = false;
84
            	for (LanguageString lngStr: media.getAllDescriptions().values()) {
85
            		if (StringUtils.isNotBlank(lngStr.getText())) {
86
            			textExists = true;
87
            			break;
88
            		}
89
            	}
90
            	if (textExists) {
91
            		text_description = formFactory.createMultiLanguageTextElement(formElement, "Description", media.getAllDescriptions(), 50, SWT.WRAP);
92
            	}
93
            }
94

    
95
//            text_description = formFactory.createMultiLanguageTextElement(this, "Description", media.getAllDescriptions(), 200, SWT.WRAP);
96

    
97
            LabelElement label1 = formFactory.createLabel(formElement, "");
98

    
99
            selectionArtist = formFactory.createSelectionElement(AgentBase.class, //getConversationHolder(),
100
                    formElement, "Prepared by", media.getArtist(), EntitySelectionElement.ALL, style);
101
            TimePeriod mediaCreated = entity.getMediaSpecimen().getMediaCreated();
102

    
103
            date = formFactory.createTimePeriodElement(formElement, "Preparation Date", mediaCreated, style);
104
            textMethodLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Method", media.getDescription(Language.getDefaultLanguage()), style);
105
//            EmptyElement spacer = formFactory.createEmptyElement(formElement, ""); //$NON-NLS-1$
106
//            spacer.setBackground(getPersistentBackground());
107
            LabelElement label2 = formFactory.createLabel(formElement, "");
108

    
109
            selection_collection = formFactory.createSelectionElement(Collection.class,
110
                    formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style);
111
            text_accessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style);
112

    
113
            LabelElement label3 = formFactory.createLabel(formElement, "");
114
            //the first PrimaryMediaSource is used for storing the reference
115
            Reference publishedIn = null;
116
            String publishedInDetail = null;
117
            for(IdentifiableSource source:media.getSources()){
118
                if(source.getType()==OriginalSourceType.PrimaryMediaSource){
119
                    publishedIn = source.getCitation();
120
                    publishedInDetail = source.getCitationMicroReference();
121
                    break;
122
                }
123
            }
124
            selection_publishedIn = formFactory.createSelectionElement(Reference.class,
125
                    formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style);
126
            text_published_in_detail = formFactory.createTextWithLabelElement(formElement, "Published in Detail", publishedInDetail, style);
127
            LabelElement label4 = formFactory.createLabel(formElement, "");
128

    
129
            checkIsPublish = formFactory.createCheckbox(formElement, "Publish", entity.isPublish(), style);
130

    
131
            mediaDetailElement = formFactory.createMediaDetailElement(formElement);
132
            mediaDetailElement.setEntity(media);
133
        }
134
    }
135

    
136
    @Override
137
    public void handleEvent(Object eventSource) {
138
        Media media = getEntity().getMediaSpecimen();
139
        if(media==null){
140
            media = Media.NewInstance();
141
            getEntity().setMediaSpecimen(media);
142
        }
143
        if(eventSource==comboKindOfUnit){
144
            getEntity().setKindOfUnit(comboKindOfUnit.getSelection());
145
        }
146
        else if(eventSource==textTitleLanguageString){
147
            getEntity().getMediaSpecimen().putTitle(textTitleLanguageString.getLanguageString());
148
            getEntity().resetTitleCache();
149
        }
150
        else if(eventSource==date){
151
            TimePeriod dateTime = date.getTimePeriod();
152
            getEntity().getMediaSpecimen().setMediaCreated(dateTime);
153
            getEntity().resetTitleCache();
154
        }
155
        else if(eventSource==selectionArtist){
156
            getEntity().getMediaSpecimen().setArtist(selectionArtist.getSelection());
157
            getEntity().resetTitleCache();
158
        }
159
        else if(eventSource==textMethodLanguageString){
160
            media.putDescription(textMethodLanguageString.getLanguageString());
161
            getEntity().setMediaSpecimen(media);
162
        }
163
        else if (eventSource == selection_collection) {
164
            getEntity().setCollection(selection_collection.getSelection());
165
        }
166
        else if (eventSource == text_accessionNumber) {
167
            getEntity().setAccessionNumber(text_accessionNumber.getText());
168
        }
169
        else if(eventSource==selection_publishedIn){
170
            IdentifiableSource primaryMediaSource = null;
171
            for(IdentifiableSource source:media.getSources()){
172
                if(source.getType()==OriginalSourceType.PrimaryMediaSource){
173
                    primaryMediaSource = source;
174
                }
175
            }
176
            if(primaryMediaSource==null){
177
                primaryMediaSource = IdentifiableSource.NewInstance(OriginalSourceType.PrimaryMediaSource);
178
                media.addSource(primaryMediaSource);
179
            }
180
            else{
181
                primaryMediaSource.setCitation(selection_publishedIn.getSelection());
182
            }
183
        }
184
        else if(eventSource==text_published_in_detail){
185
            IdentifiableSource primaryMediaSource = null;
186
            for(IdentifiableSource source:media.getSources()){
187
                if(source.getType()==OriginalSourceType.PrimaryMediaSource){
188
                    primaryMediaSource = source;
189
                }
190
            }
191
            if(primaryMediaSource==null){
192
                primaryMediaSource = IdentifiableSource.NewInstance(OriginalSourceType.PrimaryMediaSource);
193
                media.addSource(primaryMediaSource);
194
            }
195
            else{
196
                primaryMediaSource.setCitationMicroReference(text_published_in_detail.getText());
197
            }
198
        }
199
        else if(eventSource==checkIsPublish){
200
            getEntity().setPublish(checkIsPublish.getSelection());
201
        }
202

    
203
    }
204

    
205
    @Override
206
    public void toggleAdvancedMediaView() {
207
        if(mediaDetailElement!=null){
208
            mediaDetailElement.toggleAdvancedMediaView();
209
        }
210
    }
211

    
212
    public boolean isAdvancedMediaView() {
213
        if(mediaDetailElement==null){
214
            return false;
215
        }
216
        return mediaDetailElement.isAdvancedMediaView();
217
    }
218

    
219
}
(1-1/2)