Project

General

Profile

Download (6.07 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
       
83
        mediaCreated = formFactory.createDateElement(element, "Media Created", getEntity().getMediaCreated(), style, false);
84
        addElement(mediaCreated.getController());
85
        text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style);
86
        
87
    
88
        
89
        
90
        mediaDetailElement = formFactory.createMediaDetailElement(element);
91
        addElement(mediaDetailElement);
92
    }
93

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

    
100
        selection_artist.setEntity(HibernateProxyHelper
101
                .deproxy(element.getArtist()));
102

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

    
112
        LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
113

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

    
118
        text_title.setLanguageString(title);
119
     
120

    
121
    }
122

    
123
    @Override
124
    protected Media selectFromDialog() {
125

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

    
130
    @Override
131
    public void toggleAdvancedMediaView(){
132
        mediaDetailElement.toggleAdvancedMediaView();
133
    }
134

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

    
153
    @Override
154
    public SelectionArbitrator getSelectionArbitrator() {
155
        return selectionArbitrator;
156
    }
157

    
158
}
(4-4/10)