Project

General

Profile

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

    
6
import org.eclipse.jface.action.IAction;
7
import org.eclipse.swt.events.SelectionAdapter;
8
import org.eclipse.swt.events.SelectionEvent;
9
import org.eclipse.swt.events.SelectionListener;
10
import org.eclipse.swt.widgets.Button;
11

    
12
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
13
import eu.etaxonomy.cdm.model.agent.AgentBase;
14
import eu.etaxonomy.cdm.model.common.LanguageString;
15
import eu.etaxonomy.cdm.model.media.Media;
16
import eu.etaxonomy.taxeditor.model.AbstractUtility;
17
import eu.etaxonomy.taxeditor.model.ImageResources;
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.section.AbstractCdmDetailSection;
27
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
28
import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
29

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

    
37
    private EntitySelectionElement<AgentBase> selection_artist;
38
    private LanguageStringWithLabelElement text_description;
39
    private LanguageStringWithLabelElement text_title;
40
    private MediaDetailElement mediaDetailElement;
41
    private SelectionArbitrator selectionArbitrator;
42

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

    
53
    /** {@inheritDoc} */
54
    @Override
55
    public void createControls(ICdmFormElement element, int style) {
56
        final IAction switchAction = MediaViewSwitch.createSwitch(MediaMetaElement.this);
57
        Button btnToggleAdvancedMediaView = new Button(getBox(), style);
58
        btnToggleAdvancedMediaView.setToolTipText(switchAction.getText());
59
        btnToggleAdvancedMediaView.setImage(ImageResources.getImage(ImageResources.SWITCH_VIEW_TYPE));
60
        btnToggleAdvancedMediaView.addSelectionListener(new SelectionAdapter() {
61
            @Override
62
            public void widgetSelected(SelectionEvent e) {
63
                switchAction.run();
64
            }
65
        });
66
        text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
67
        selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style);
68
        text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style);
69
        mediaDetailElement = formFactory.createMediaDetailElement(element);
70
    }
71

    
72
    /** {@inheritDoc} */
73
    @Override
74
    public void setEntity(Media element) {
75
        this.entity = element;
76
        mediaDetailElement.setEntity(element);
77

    
78
        selection_artist.setEntity((AgentBase<?>) HibernateProxyHelper
79
                .deproxy(element.getArtist()));
80

    
81
        text_description.setLanguageString(element.getDescription(CdmStore
82
                .getDefaultLanguage()));
83

    
84
        LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
85

    
86
        if (title == null) {
87
            title = LanguageString.NewInstance("", CdmStore.getDefaultLanguage());
88
        }
89

    
90
        text_title.setLanguageString(title);
91
    }
92

    
93
    @Override
94
    protected Media selectFromDialog() {
95
        return MediaSelectionDialog.select(AbstractUtility.getShell(), null, null);
96
    }
97

    
98
    @Override
99
    public void toggleAdvancedMediaView(){
100
        mediaDetailElement.toggleAdvancedMediaView();
101
    }
102

    
103
    /** {@inheritDoc} */
104
    @Override
105
    public void handleEvent(Object eventSource) {
106
        if (eventSource == selection_artist) {
107
            getEntity().setArtist(selection_artist.getSelection());
108
        } else if (eventSource == text_description) {
109
            getEntity().addDescription(text_description.getLanguageString());
110
        } else if (eventSource == text_title) {
111
            getEntity().putTitle(text_title.getLanguageString());
112
            if (getParentElement() instanceof AbstractCdmDetailSection) {
113
                ((AbstractCdmDetailSection<?>) getParentElement()).updateTitle();
114
            }
115
        }
116
    }
117

    
118
    @Override
119
    public SelectionArbitrator getSelectionArbitrator() {
120
        return selectionArbitrator;
121
    }
122

    
123
}
(4-4/10)