Project

General

Profile

Download (6.58 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * Copyright (C) 2007 EDIT
3
 * European Distributed Institute of Taxonomy
4
 * http://www.e-taxonomy.eu
5
 *
6
 * The contents of this file are subject to the Mozilla Public License Version 1.1
7
 * See LICENSE.TXT at the top of this package for the full license terms.
8
 */
9
package eu.etaxonomy.taxeditor.ui.section.media;
10

    
11
import java.util.Map;
12

    
13
import org.eclipse.swt.events.SelectionListener;
14

    
15
import eu.etaxonomy.cdm.common.CdmUtils;
16
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
17
import eu.etaxonomy.cdm.model.agent.AgentBase;
18
import eu.etaxonomy.cdm.model.common.Language;
19
import eu.etaxonomy.cdm.model.common.LanguageString;
20
import eu.etaxonomy.cdm.model.common.TimePeriod;
21
import eu.etaxonomy.cdm.model.media.Media;
22
import eu.etaxonomy.taxeditor.model.AbstractUtility;
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
 */
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 TimePeriodElement 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
    @Override
60
    public void createControls(ICdmFormElement element, int style) {
61
//        final IAction switchAction = MediaViewSwitch.createSwitch(MediaMetaElement.this);
62
//        Button btnToggleAdvancedMediaView = new Button(getBox(), style);
63
//        btnToggleAdvancedMediaView.setToolTipText(switchAction.getText());
64
//        btnToggleAdvancedMediaView.setImage(ImageResources.getImage(ImageResources.SWITCH_VIEW_TYPE));
65
//        btnToggleAdvancedMediaView.addSelectionListener(new SelectionAdapter() {
66
//            @Override
67
//            public void widgetSelected(SelectionEvent e) {
68
//                switchAction.run();
69
//            }
70
//        });
71
        setWarnForReferencingObjects(element, 2);
72
        text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
73
        selection_artist = formFactory.createSelectionElement(AgentBase.class, //getConversationHolder(),
74
                element, "Artist", null, EntitySelectionElement.ALL, style);
75
        addElement(selection_artist);
76

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

    
81

    
82
        mediaDetailElement = formFactory.createMediaDetailElement(element);
83

    
84
        ICdmFormElement grandGrandParent = getParentElement().getParentElement().getParentElement();
85
        Class<?> clazz = null;
86
        if (grandGrandParent != null){
87
            clazz = grandGrandParent.getClass();
88
        }
89
        //TODO: find a nicer solution
90
        if (grandGrandParent != null && clazz != null && clazz.getName().equals("eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage$WizardPageRootElement")){
91
            mediaDetailElement.setShowImage(false);
92
        }
93
        addElement(mediaDetailElement);
94
    }
95

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

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

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

    
113
        createTitle();
114
    }
115

    
116
    public void createTitle() {
117
        LanguageString title = this.entity.getTitle(CdmStore.getDefaultLanguage());
118

    
119
        if (title == null) {
120
            title = LanguageString.NewInstance(entity.getTitleCache(), CdmStore.getDefaultLanguage());
121
        }
122

    
123
        text_title.setLanguageString(title);
124
    }
125

    
126
    @Override
127
    protected Media selectFromDialog() {
128

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

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

    
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){
151
        	TimePeriod date = mediaCreated.getTimePeriod();
152
        	getEntity().setMediaCreated(date);
153
        }
154
    }
155

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

    
161
    public MediaDetailElement getMediaDetailElement(){
162
        return mediaDetailElement;
163
    }
164
}
(4-4/10)