Project

General

Profile

Download (7.13 KB) Statistics
| Branch: | Tag: | Revision:
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.cdm.model.reference.Reference;
26
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
27
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
28
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
29
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
30
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
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.MediaRepresentationSection;
35
import eu.etaxonomy.taxeditor.ui.section.supplemental.SourceSection;
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> {
44

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

    
54
    private MediaRepresentationSection mediaRepresentationSection;
55
    /**
56
     * @param formFactory
57
     * @param formElement
58
     */
59
    public MediaSpecimenGeneralDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
60
        super(formFactory, formElement);
61
    }
62

    
63
    /*
64
     * (non-Javadoc)
65
     *
66
     * @see
67
     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
68
     * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
69
     */
70
    @Override
71
    protected void createControls(ICdmFormElement formElement, MediaSpecimen entity, int style) {
72
        Media media = entity.getMediaSpecimen();
73
        if(media==null){
74
            formFactory.createLabel(formElement, "No media attached to this MediaSpecimen!");
75
        }
76
        else{
77
            comboKindOfUnit = formFactory.createDefinedTermComboElement(TermType.KindOfUnit, formElement, "Kind of Media", entity.getKindOfUnit(), style);
78
            textTitleLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Motif", media.getTitle(), style);
79
            selectionArtist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), formElement, "Prepared by", media.getArtist(), EntitySelectionElement.ALL, style);
80

    
81
            Label label = new Label(getLayoutComposite(), style);
82
            label.setText("Preparation Date (yyyy-mm-dd)");
83
//            label.setLayoutData(LayoutConstants.LEFT());
84
            date = new DateElement(formElement.getLayoutComposite(), entity.getMediaSpecimen().getMediaCreated(), style);
85
            date.initController(formFactory, formElement);
86

    
87

    
88
            textMethodLanguageString = formFactory.createLanguageStringWithLabelElement(formElement, "Method", media.getDescription(Language.DEFAULT()), style);
89
            selection_collection = formFactory.createSelectionElement(Collection.class, getConversationHolder(), formElement, "Collection", entity.getCollection(), EntitySelectionElement.ALL, style);
90
            text_accessionNumber = formFactory.createTextWithLabelElement(formElement, "Accession Number", entity.getAccessionNumber(), style);
91

    
92
            //the first PrimaryMediaSource is used for storing the reference
93
            Reference<?> publishedIn = null;
94
            for(IdentifiableSource source:media.getSources()){
95
                if(source.getType()==OriginalSourceType.PrimaryMediaSource){
96
                    publishedIn = source.getCitation();
97
                    break;
98
                }
99
            }
100
            selection_publishedIn = formFactory.createSelectionElement(Reference.class, getConversationHolder(), formElement, "Published in", publishedIn, EntitySelectionElement.ALL, style);
101

    
102
            mediaRepresentationSection = formFactory.createMediaRepresentationSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
103
            mediaRepresentationSection.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
104
            mediaRepresentationSection.setEntity(media);
105
        }
106
    }
107

    
108
    /*
109
     * (non-Javadoc)
110
     *
111
     * @see
112
     * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
113
     * .lang.Object)
114
     */
115
    @Override
116
    public void handleEvent(Object eventSource) {
117
        Media media = getEntity().getMediaSpecimen();
118
        if(media==null){
119
            media = Media.NewInstance();
120
            getEntity().setMediaSpecimen(media);
121
        }
122
        if(eventSource==textTitleLanguageString){
123
            media.putTitle(textTitleLanguageString.getLanguageString());
124
        }
125
        else if(eventSource==date.getController()){
126
            DateTime dateTime = date.getController().getDateTime();
127
            media.setMediaCreated(dateTime);
128
        }
129
        else if(eventSource==selectionArtist){
130
            media.setArtist(selectionArtist.getSelection());
131
        }
132
        else if(eventSource==textMethodLanguageString){
133
            media.addDescription(textMethodLanguageString.getLanguageString());
134
        }
135
        else if (eventSource == selection_collection) {
136
            getEntity().setCollection(selection_collection.getSelection());
137
        }
138
        else if (eventSource == text_accessionNumber) {
139
            getEntity().setAccessionNumber(text_accessionNumber.getText());
140
        }
141
        else if(eventSource==selection_publishedIn){
142
            IdentifiableSource primaryMediaSource = null;
143
            for(IdentifiableSource source:media.getSources()){
144
                if(source.getType()==OriginalSourceType.PrimaryMediaSource){
145
                    primaryMediaSource = source;
146
                }
147
            }
148
            if(primaryMediaSource==null){
149
                primaryMediaSource = IdentifiableSource.NewInstance(OriginalSourceType.PrimaryMediaSource);
150
                media.addSource(primaryMediaSource);
151
            }
152
            else{
153
                primaryMediaSource.setCitation(selection_publishedIn.getSelection());
154
            }
155
        }
156
    }
157
}
(3-3/6)