Project

General

Profile

Download (6.17 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.swt.events.SelectionListener;
9

    
10
import eu.etaxonomy.cdm.common.CdmUtils;
11
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
12
import eu.etaxonomy.cdm.model.agent.AgentBase;
13
import eu.etaxonomy.cdm.model.common.Language;
14
import eu.etaxonomy.cdm.model.common.LanguageString;
15
import eu.etaxonomy.cdm.model.common.TimePeriod;
16
import eu.etaxonomy.cdm.model.media.Media;
17
import eu.etaxonomy.taxeditor.model.AbstractUtility;
18
import eu.etaxonomy.taxeditor.store.CdmStore;
19
import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
20
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
21
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
22
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
23
import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
24
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
25
import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
26
import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
27
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
28
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
29
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
30

    
31
/**
32
 * @author n.hoffmann
33
 * @created Nov 17, 2009
34
 * @version 1.0
35
 */
36
public class MediaMetaElement extends AbstractEntityCollectionElement<Media> implements ISelectableElement, ITogglableMediaElement{
37

    
38
    private EntitySelectionElement<AgentBase> selection_artist;
39
    private LanguageStringWithLabelElement text_description;
40
    private LanguageStringWithLabelElement text_title;
41
    private MediaDetailElement mediaDetailElement;
42
    private TimePeriodElement mediaCreated;
43
    private SelectionArbitrator selectionArbitrator;
44

    
45

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

    
55

    
56
    }
57

    
58
    /** {@inheritDoc} */
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

    
83

    
84
        mediaDetailElement = formFactory.createMediaDetailElement(element);
85

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

    
95
    /** {@inheritDoc} */
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
        LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
114

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

    
119
        text_title.setLanguageString(title);
120

    
121

    
122
    }
123

    
124
    @Override
125
    protected Media selectFromDialog() {
126

    
127
    	setEntity(MediaSelectionDialog.select(AbstractUtility.getShell(), //null,
128
    	        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){
150
        	TimePeriod date = mediaCreated.getTimePeriod();
151
        	getEntity().setMediaCreated(date);
152
        }
153
    }
154

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

    
160

    
161

    
162
}
(4-4/10)