Project

General

Profile

Download (5.93 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.jface.action.IAction;
9
import org.eclipse.swt.events.SelectionAdapter;
10
import org.eclipse.swt.events.SelectionEvent;
11
import org.eclipse.swt.events.SelectionListener;
12
import org.eclipse.swt.widgets.Button;
13

    
14
import eu.etaxonomy.cdm.common.CdmUtils;
15
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
16
import eu.etaxonomy.cdm.model.agent.AgentBase;
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.taxeditor.model.AbstractUtility;
22
import eu.etaxonomy.taxeditor.model.ImageResources;
23
import eu.etaxonomy.taxeditor.store.CdmStore;
24
import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
25
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
26
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
27
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
28
import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
29
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
30
import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
31
import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
32
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
33
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
34
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
35

    
36
/**
37
 * @author n.hoffmann
38
 * @created Nov 17, 2009
39
 * @version 1.0
40
 */
41
public class MediaMetaElement extends AbstractEntityCollectionElement<Media> implements ISelectableElement, ITogglableMediaElement{
42

    
43
    private EntitySelectionElement<AgentBase> selection_artist;
44
    private LanguageStringWithLabelElement text_description;
45
    private LanguageStringWithLabelElement text_title;
46
    private MediaDetailElement mediaDetailElement;
47
    private TimePeriodElement mediaCreated;
48
    private SelectionArbitrator selectionArbitrator;
49

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

    
59

    
60
    }
61

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

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

    
84

    
85

    
86

    
87
        mediaDetailElement = formFactory.createMediaDetailElement(element);
88
        addElement(mediaDetailElement);
89
    }
90

    
91
    /** {@inheritDoc} */
92
    @Override
93
    public void setEntity(Media element) {
94
        this.entity = element;
95
        mediaDetailElement.setEntity(element);
96

    
97
        selection_artist.setEntity(HibernateProxyHelper
98
                .deproxy(element.getArtist()));
99

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

    
109
        LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
110

    
111
        if (title == null) {
112
            title = LanguageString.NewInstance(element.getTitleCache(), CdmStore.getDefaultLanguage());
113
        }
114

    
115
        text_title.setLanguageString(title);
116

    
117

    
118
    }
119

    
120
    @Override
121
    protected Media selectFromDialog() {
122

    
123
    	setEntity(MediaSelectionDialog.select(AbstractUtility.getShell(), //null,
124
    	        null));
125
        return entity;
126
    }
127

    
128
    @Override
129
    public void toggleAdvancedMediaView(){
130
        mediaDetailElement.toggleAdvancedMediaView();
131
    }
132

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

    
151
    @Override
152
    public SelectionArbitrator getSelectionArbitrator() {
153
        return selectionArbitrator;
154
    }
155

    
156
}
(4-4/10)