Project

General

Profile

Download (6.21 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
import org.joda.time.DateTimeZone;
17

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

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

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

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

    
63

    
64
    }
65

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

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

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

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

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

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

    
121
        text_title.setLanguageString(title);
122
     
123

    
124
    }
125

    
126
    @Override
127
    protected Media selectFromDialog() {
128

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

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

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

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

    
161
}
(4-4/10)