Project

General

Profile

Download (5.92 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

    
13
import org.eclipse.swt.widgets.Button;
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.media.Media;
20
import eu.etaxonomy.taxeditor.model.AbstractUtility;
21
import eu.etaxonomy.taxeditor.model.ImageResources;
22
import eu.etaxonomy.taxeditor.store.CdmStore;
23
import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
24
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
25
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
26
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
27
import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
28
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
29
import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
30
import eu.etaxonomy.taxeditor.ui.mvc.element.DateElement;
31
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
32
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
33
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
34

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

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

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

    
58

    
59
    }
60

    
61
    /** {@inheritDoc} */
62
    @Override
63
    public void createControls(ICdmFormElement element, int style) {
64
        final IAction switchAction = MediaViewSwitch.createSwitch(MediaMetaElement.this);
65
        Button btnToggleAdvancedMediaView = new Button(getBox(), style);
66
        btnToggleAdvancedMediaView.setToolTipText(switchAction.getText());
67
        btnToggleAdvancedMediaView.setImage(ImageResources.getImage(ImageResources.SWITCH_VIEW_TYPE));
68
        btnToggleAdvancedMediaView.addSelectionListener(new SelectionAdapter() {
69
            @Override
70
            public void widgetSelected(SelectionEvent e) {
71
                switchAction.run();
72
            }
73
        });
74
        text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
75
        selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style);
76
        addElement(selection_artist);
77
        mediaCreated = formFactory.createDateElement(element, "Media Created", getEntity().getMediaCreated(), style);
78
        addElement(mediaCreated.getController());
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, null));
121
        return entity;
122
    }
123

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

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

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

    
152
}
(4-4/10)