Project

General

Profile

Download (5.78 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.taxeditor.ui.section.media;
5

    
6
import java.util.Map;
7

    
8
import org.eclipse.swt.events.SelectionListener;
9

    
10
import eu.etaxonomy.cdm.common.CdmUtils;
11
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
12
import eu.etaxonomy.cdm.model.agent.AgentBase;
13
import eu.etaxonomy.cdm.model.common.Language;
14
import eu.etaxonomy.cdm.model.common.LanguageString;
15
import eu.etaxonomy.cdm.model.common.TimePeriod;
16
import eu.etaxonomy.cdm.model.media.Media;
17
import eu.etaxonomy.taxeditor.model.AbstractUtility;
18
import eu.etaxonomy.taxeditor.store.CdmStore;
19
import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
20
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
21
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
22
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
23
import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
24
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
25
import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
26
import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
27
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
28
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
29
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
30

    
31
/**
32
 * @author n.hoffmann
33
 * @created Nov 17, 2009
34
 * @version 1.0
35
 */
36
public class MediaMetaElement extends AbstractEntityCollectionElement<Media> implements ISelectableElement, ITogglableMediaElement{
37

    
38
    private EntitySelectionElement<AgentBase> selection_artist;
39
    private LanguageStringWithLabelElement text_description;
40
    private LanguageStringWithLabelElement text_title;
41
    private MediaDetailElement mediaDetailElement;
42
    private TimePeriodElement mediaCreated;
43
    private SelectionArbitrator selectionArbitrator;
44

    
45

    
46
    public MediaMetaElement(CdmFormFactory cdmFormFactory,
47
            AbstractFormSection<?> formElement, Media element,
48
            SelectionListener removeListener, int style) {
49
        super(cdmFormFactory, formElement, element, removeListener, null, style);
50
        //make element selectable
51
        if(cdmFormFactory.getSelectionProvider() != null){
52
            selectionArbitrator = cdmFormFactory.createSelectionArbitrator(this);
53
        }
54

    
55

    
56
    }
57

    
58
    /** {@inheritDoc} */
59
    @Override
60
    public void createControls(ICdmFormElement element, int style) {
61
//        final IAction switchAction = MediaViewSwitch.createSwitch(MediaMetaElement.this);
62
//        Button btnToggleAdvancedMediaView = new Button(getBox(), style);
63
//        btnToggleAdvancedMediaView.setToolTipText(switchAction.getText());
64
//        btnToggleAdvancedMediaView.setImage(ImageResources.getImage(ImageResources.SWITCH_VIEW_TYPE));
65
//        btnToggleAdvancedMediaView.addSelectionListener(new SelectionAdapter() {
66
//            @Override
67
//            public void widgetSelected(SelectionEvent e) {
68
//                switchAction.run();
69
//            }
70
//        });
71
        setWarnForReferencingObjects(element, 2);
72
        text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
73
        selection_artist = formFactory.createSelectionElement(AgentBase.class, //getConversationHolder(),
74
                element, "Artist", null, EntitySelectionElement.ALL, style);
75
        addElement(selection_artist);
76

    
77
        mediaCreated = formFactory.createTimePeriodElement(element, "Media Created", getEntity().getMediaCreated(), style);
78
        addElement(mediaCreated);
79
        text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style);
80

    
81

    
82

    
83

    
84
        mediaDetailElement = formFactory.createMediaDetailElement(element);
85
        addElement(mediaDetailElement);
86
    }
87

    
88
    /** {@inheritDoc} */
89
    @Override
90
    public void setEntity(Media element) {
91
        this.entity = element;
92
        mediaDetailElement.setEntity(element);
93

    
94
        selection_artist.setEntity(HibernateProxyHelper
95
                .deproxy(element.getArtist()));
96

    
97
        text_description.setLanguageString(element.getDescription(CdmStore
98
                .getDefaultLanguage()));
99
        if (CdmUtils.isBlank(text_description.getText())){
100
        	Map<Language, LanguageString> allDescriptions = element.getAllDescriptions();
101
        	if (!allDescriptions.isEmpty()){
102
        		text_description.setLanguageString(allDescriptions.get(Language.ENGLISH()));
103
        	}
104
        }
105

    
106
        LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
107

    
108
        if (title == null) {
109
            title = LanguageString.NewInstance(element.getTitleCache(), CdmStore.getDefaultLanguage());
110
        }
111

    
112
        text_title.setLanguageString(title);
113

    
114

    
115
    }
116

    
117
    @Override
118
    protected Media selectFromDialog() {
119

    
120
    	setEntity(MediaSelectionDialog.select(AbstractUtility.getShell(), //null,
121
    	        null));
122
        return entity;
123
    }
124

    
125
    @Override
126
    public void toggleAdvancedMediaView(){
127
        mediaDetailElement.toggleAdvancedMediaView();
128
    }
129

    
130
    /** {@inheritDoc} */
131
   @Override
132
    public void handleEvent(Object eventSource) {
133
        if (eventSource == selection_artist) {
134
            getEntity().setArtist(selection_artist.getSelection());
135
        } else if (eventSource == text_description) {
136
            getEntity().addDescription(text_description.getLanguageString());
137
        } else if (eventSource == text_title) {
138
            getEntity().putTitle(text_title.getLanguageString());
139
            if (getParentElement() instanceof AbstractCdmDetailSection) {
140
                ((AbstractCdmDetailSection<?>) getParentElement()).updateTitle();
141
            }
142
        } else if (eventSource == mediaCreated){
143
        	TimePeriod date = mediaCreated.getTimePeriod();
144
        	getEntity().setMediaCreated(date);
145
        }
146
    }
147

    
148
    @Override
149
    public SelectionArbitrator getSelectionArbitrator() {
150
        return selectionArbitrator;
151
    }
152

    
153

    
154

    
155
}
(4-4/10)