Project

General

Profile

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

    
6
import java.time.ZonedDateTime;
7
import java.util.Map;
8

    
9
import org.eclipse.jface.action.IAction;
10
import org.eclipse.swt.events.SelectionAdapter;
11
import org.eclipse.swt.events.SelectionEvent;
12
import org.eclipse.swt.events.SelectionListener;
13

    
14
import org.eclipse.swt.widgets.Button;
15
import org.joda.time.DateTime;
16

    
17
import eu.etaxonomy.cdm.common.CdmUtils;
18
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
19
import eu.etaxonomy.cdm.model.agent.AgentBase;
20
import eu.etaxonomy.cdm.model.common.Language;
21
import eu.etaxonomy.cdm.model.common.LanguageString;
22
import eu.etaxonomy.cdm.model.media.Media;
23
import eu.etaxonomy.taxeditor.model.AbstractUtility;
24
import eu.etaxonomy.taxeditor.model.DateConverter;
25
import eu.etaxonomy.taxeditor.model.ImageResources;
26
import eu.etaxonomy.taxeditor.store.CdmStore;
27
import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
28
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
29
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
30
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
31
import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
32
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
33
import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
34
import eu.etaxonomy.taxeditor.ui.mvc.element.DateElement;
35
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
36
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
37
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
38

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

    
46
    private EntitySelectionElement<AgentBase> selection_artist;
47
    private LanguageStringWithLabelElement text_description;
48
    private LanguageStringWithLabelElement text_title;
49
    private MediaDetailElement mediaDetailElement;
50
    private DateElement mediaCreated;
51
    private SelectionArbitrator selectionArbitrator;
52

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

    
62

    
63
    }
64

    
65
    /** {@inheritDoc} */
66
    @Override
67
    public void createControls(ICdmFormElement element, int style) {
68
        final IAction switchAction = MediaViewSwitch.createSwitch(MediaMetaElement.this);
69
        Button btnToggleAdvancedMediaView = new Button(getBox(), style);
70
        btnToggleAdvancedMediaView.setToolTipText(switchAction.getText());
71
        btnToggleAdvancedMediaView.setImage(ImageResources.getImage(ImageResources.SWITCH_VIEW_TYPE));
72
        btnToggleAdvancedMediaView.addSelectionListener(new SelectionAdapter() {
73
            @Override
74
            public void widgetSelected(SelectionEvent e) {
75
                switchAction.run();
76
            }
77
        });
78
        text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
79
        selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style);
80
        addElement(selection_artist);
81
        DateTime mediaCreatedValue = null;
82
        if (getEntity().getMediaCreated() != null){
83
        	mediaCreatedValue =  getEntity().getMediaCreated();
84
        }
85
        mediaCreated = formFactory.createDateElement(element, "Media Created", mediaCreatedValue, style, false);
86
        addElement(mediaCreated.getController());
87
        text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style);
88
        
89
    
90
        
91
        
92
        mediaDetailElement = formFactory.createMediaDetailElement(element);
93
        addElement(mediaDetailElement);
94
    }
95

    
96
    /** {@inheritDoc} */
97
    @Override
98
    public void setEntity(Media element) {
99
        this.entity = element;
100
        mediaDetailElement.setEntity(element);
101

    
102
        selection_artist.setEntity(HibernateProxyHelper
103
                .deproxy(element.getArtist()));
104

    
105
        text_description.setLanguageString(element.getDescription(CdmStore
106
                .getDefaultLanguage()));
107
        if (CdmUtils.isBlank(text_description.getText())){
108
        	Map<Language, LanguageString> allDescriptions = element.getAllDescriptions();
109
        	if (!allDescriptions.isEmpty()){
110
        		text_description.setLanguageString(allDescriptions.get(Language.ENGLISH()));
111
        	}
112
        }
113

    
114
        LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
115

    
116
        if (title == null) {
117
            title = LanguageString.NewInstance(element.getTitleCache(), CdmStore.getDefaultLanguage());
118
        }
119

    
120
        text_title.setLanguageString(title);
121
     
122

    
123
    }
124

    
125
    @Override
126
    protected Media selectFromDialog() {
127

    
128
    	setEntity(MediaSelectionDialog.select(AbstractUtility.getShell(), null, null));
129
        return entity;
130
    }
131

    
132
    @Override
133
    public void toggleAdvancedMediaView(){
134
        mediaDetailElement.toggleAdvancedMediaView();
135
    }
136

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

    
155
    @Override
156
    public SelectionArbitrator getSelectionArbitrator() {
157
        return selectionArbitrator;
158
    }
159

    
160
}
(4-4/10)