Project

General

Profile

Download (7.05 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.SWT;
14
import org.eclipse.swt.events.SelectionListener;
15

    
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.MultilanguageTextElement;
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 MultilanguageTextElement text_description;
44
    private MultilanguageTextElement 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.createMultiLanguageTextElement(element, "Title", null, 50, style);
73
//        text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
74
        selection_artist = formFactory.createSelectionElement(AgentBase.class, //getConversationHolder(),
75
                element, "Artist", null, EntitySelectionElement.ALL, style);
76
        addElement(selection_artist);
77

    
78
        mediaCreated = formFactory.createTimePeriodElement(element, "Media Created", getEntity().getMediaCreated(), style);
79
        addElement(mediaCreated);
80
        text_description = formFactory.createMultiLanguageTextElement(this, "Description", null, 200, SWT.WRAP);
81

    
82

    
83
        mediaDetailElement = formFactory.createMediaDetailElement(element);
84

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

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

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

    
105
        text_description.setMultilanguageText(element.getAllDescriptions());
106

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

    
114
        createTitle();
115
    }
116

    
117
    public void createTitle() {
118
       LanguageString title = this.entity.getTitle(CdmStore.getDefaultLanguage());
119
       Map<Language, LanguageString> languageStrings = entity.getAllTitles();
120
       if (title == null || title.getText().contains("empty media")) {
121
           entity.getAllTitles().remove(title);
122
           title = LanguageString.NewInstance(entity.getTitleCache(), CdmStore.getDefaultLanguage());
123
           if (!title.getText().contains("empty media")){
124
               languageStrings.put(CdmStore.getDefaultLanguage(), title);
125
           }
126
       }
127
       text_title.setMultilanguageText(languageStrings);
128
    }
129

    
130
    @Override
131
    protected Media selectFromDialog() {
132

    
133
    	setEntity(MediaSelectionDialog.select(AbstractUtility.getShell(), //null,
134
    	        null));
135
        return entity;
136
    }
137

    
138
    @Override
139
    public void toggleAdvancedMediaView(){
140
        mediaDetailElement.toggleAdvancedMediaView();
141
    }
142

    
143
   @Override
144
    public void handleEvent(Object eventSource) {
145
        if (eventSource == selection_artist) {
146
            getEntity().setArtist(selection_artist.getSelection());
147
        } else if (eventSource == text_description) {
148
            text_description.getMultilanguageText().values()
149
            .forEach(languageString -> getEntity().addDescription(languageString));
150
        } else if (eventSource == text_title) {
151
            text_title.getMultilanguageText().values()
152
            .forEach(languageString -> getEntity().putTitle(languageString));
153
            if (getParentElement() instanceof AbstractCdmDetailSection) {
154
                ((AbstractCdmDetailSection<?>) getParentElement()).updateTitle();
155
            }
156
        } else if (eventSource == mediaCreated){
157
        	TimePeriod date = mediaCreated.getTimePeriod();
158
        	getEntity().setMediaCreated(date);
159
        }
160
    }
161

    
162
    @Override
163
    public SelectionArbitrator getSelectionArbitrator() {
164
        return selectionArbitrator;
165
    }
166

    
167
    public MediaDetailElement getMediaDetailElement(){
168
        return mediaDetailElement;
169
    }
170
}
(4-4/10)