Project

General

Profile

Download (6.29 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

    
62
        setWarnForReferencingObjects(element, 2);
63
        text_title = formFactory.createMultiLanguageTextElement(element, "Title", getEntity().getAllTitles(), 50, style);
64

    
65
        selection_artist = formFactory.createSelectionElement(AgentBase.class,
66
                element, "Artist", null, EntitySelectionElement.ALL, style);
67
        addElement(selection_artist);
68

    
69
        mediaCreated = formFactory.createTimePeriodElement(element, "Media Created", getEntity().getMediaCreated(), style);
70
        addElement(mediaCreated);
71

    
72
      	text_description = formFactory.createMultiLanguageTextElement(element, "Description", null, 50, SWT.WRAP);
73

    
74

    
75

    
76
        mediaDetailElement = formFactory.createMediaDetailElement(element);
77

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

    
93
    @Override
94
    public void setEntity(Media element) {
95
        this.entity = element;
96
        if (mediaDetailElement != null){
97
	        mediaDetailElement.setEntity(element);
98
	
99
	        selection_artist.setEntity(HibernateProxyHelper
100
	                .deproxy(element.getArtist()));
101
	
102
	        if (text_description != null) {
103
	        	text_description.setMultilanguageText(element.getAllDescriptions());
104
	        }
105
	        createTitle();
106
        }
107
    }
108

    
109
    public void createTitle() {
110
//       LanguageString title = this.entity.getTitle(CdmStore.getDefaultLanguage());
111
//       Map<Language, LanguageString> languageStrings = entity.getAllTitles();
112
//       if (title == null || title.getText().contains("empty media")) {
113
//           entity.getAllTitles().remove(title);
114
//           title = LanguageString.NewInstance(entity.getTitleCache(), CdmStore.getDefaultLanguage());
115
//           
116
//           if (!title.getText().contains("empty media")){
117
//               languageStrings.put(CdmStore.getDefaultLanguage(), title);
118
//           }
119
//       }
120
       text_title.setMultilanguageText(this.entity.getAllTitles());
121
    }
122

    
123
    @Override
124
    protected Media selectFromDialog() {
125

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

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

    
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
            text_description.getMultilanguageText().values()
142
            .forEach(languageString -> getEntity().putDescription(languageString));
143
        } else if (eventSource == text_title) {
144
            text_title.getMultilanguageText().values()
145
            .forEach(languageString -> getEntity().putTitle(languageString));
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
    public MediaDetailElement getMediaDetailElement(){
161
        return mediaDetailElement;
162
    }
163
}
(4-4/10)