Project

General

Profile

Download (7.52 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.SWT;
9
import org.eclipse.swt.events.SelectionListener;
10
import org.eclipse.swt.widgets.Display;
11

    
12
import eu.etaxonomy.cdm.common.CdmUtils;
13
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
14
import eu.etaxonomy.cdm.model.agent.AgentBase;
15
import eu.etaxonomy.cdm.model.common.CdmBase;
16
import eu.etaxonomy.cdm.model.common.Language;
17
import eu.etaxonomy.cdm.model.common.LanguageString;
18
import eu.etaxonomy.cdm.model.common.TimePeriod;
19
import eu.etaxonomy.cdm.model.media.Media;
20
import eu.etaxonomy.taxeditor.model.AbstractUtility;
21
import eu.etaxonomy.taxeditor.store.CdmStore;
22
import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
23
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
24
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
25
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
26
import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
27
import eu.etaxonomy.taxeditor.ui.element.LabelElement;
28
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
29
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
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
 * @version 1.0
40
 */
41
public class MediaMetaElement extends AbstractEntityCollectionElement<Media> implements ISelectableElement, ITogglableMediaElement{
42

    
43
    private EntitySelectionElement<AgentBase> selection_artist;
44
    private LanguageStringWithLabelElement text_description;
45
    private LanguageStringWithLabelElement text_title;
46
    private MediaDetailElement mediaDetailElement;
47
    private TimePeriodElement mediaCreated;
48
    private SelectionArbitrator selectionArbitrator;
49
    private LabelElement warnForReferencedObjects;
50

    
51
    public MediaMetaElement(CdmFormFactory cdmFormFactory,
52
            AbstractFormSection<?> formElement, Media element,
53
            SelectionListener removeListener, int style) {
54
        super(cdmFormFactory, formElement, element, removeListener, null, style);
55
        //make element selectable
56
        if(cdmFormFactory.getSelectionProvider() != null){
57
            selectionArbitrator = cdmFormFactory.createSelectionArbitrator(this);
58
        }
59

    
60

    
61
    }
62

    
63
    /** {@inheritDoc} */
64
    @Override
65
    public void createControls(ICdmFormElement element, int style) {
66
//        final IAction switchAction = MediaViewSwitch.createSwitch(MediaMetaElement.this);
67
//        Button btnToggleAdvancedMediaView = new Button(getBox(), style);
68
//        btnToggleAdvancedMediaView.setToolTipText(switchAction.getText());
69
//        btnToggleAdvancedMediaView.setImage(ImageResources.getImage(ImageResources.SWITCH_VIEW_TYPE));
70
//        btnToggleAdvancedMediaView.addSelectionListener(new SelectionAdapter() {
71
//            @Override
72
//            public void widgetSelected(SelectionEvent e) {
73
//                switchAction.run();
74
//            }
75
//        });
76
        setWarnForReferencingObjects(element, 2);
77
        text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
78
        selection_artist = formFactory.createSelectionElement(AgentBase.class, //getConversationHolder(),
79
                element, "Artist", null, EntitySelectionElement.ALL, style);
80
        addElement(selection_artist);
81

    
82
        mediaCreated = formFactory.createTimePeriodElement(element, "Media Created", getEntity().getMediaCreated(), style);
83
        addElement(mediaCreated);
84
        text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style);
85

    
86

    
87

    
88

    
89
        mediaDetailElement = formFactory.createMediaDetailElement(element);
90
        addElement(mediaDetailElement);
91
    }
92

    
93
    /** {@inheritDoc} */
94
    @Override
95
    public void setEntity(Media element) {
96
        this.entity = element;
97
        mediaDetailElement.setEntity(element);
98

    
99
        selection_artist.setEntity(HibernateProxyHelper
100
                .deproxy(element.getArtist()));
101

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

    
111
        LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
112

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

    
117
        text_title.setLanguageString(title);
118

    
119

    
120
    }
121

    
122
    @Override
123
    protected Media selectFromDialog() {
124

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

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

    
135
    /** {@inheritDoc} */
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
            getEntity().addDescription(text_description.getLanguageString());
142
        } else if (eventSource == text_title) {
143
            getEntity().putTitle(text_title.getLanguageString());
144
            if (getParentElement() instanceof AbstractCdmDetailSection) {
145
                ((AbstractCdmDetailSection<?>) getParentElement()).updateTitle();
146
            }
147
        } else if (eventSource == mediaCreated){
148
        	TimePeriod date = mediaCreated.getTimePeriod();
149
        	getEntity().setMediaCreated(date);
150
        }
151
    }
152

    
153
    @Override
154
    public SelectionArbitrator getSelectionArbitrator() {
155
        return selectionArbitrator;
156
    }
157

    
158
    public void setWarnForReferencedObjects(LabelElement warnForReferencedObjects) {
159
        this.warnForReferencedObjects = warnForReferencedObjects;
160
    }
161

    
162
    public void setWarnForReferencingObjects(ICdmFormElement formElement, int defaultReferencingObjects){
163
        if (getEntity() instanceof CdmBase){
164
            CdmBase cdmBase = getEntity();
165
            if (cdmBase.getId() != 0){
166
                long referencingObjectsCount = CdmStore.getCommonService().getReferencingObjectsCount(cdmBase);
167

    
168
                if (referencingObjectsCount > defaultReferencingObjects){
169
                    setWarnForReferencedObjects(formFactory.createLabel(formElement, CdmUtils.Nz("The "+ cdmBase.getUserFriendlyTypeName()+" is referenced by more than one object, if you change it, it is changed for all these objects")));
170
                    warnForReferencedObjects.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
171
                    warnForReferencedObjects.setLayout(LayoutConstants.FILL(2, 3));
172
                    warnForReferencedObjects.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
173
                }
174
            }
175
        }
176
    }
177

    
178
    public void setWarnForReferencingObjects(ICdmFormElement formElement){
179
        setWarnForReferencingObjects(formElement, 1);
180
    }
181

    
182
    public void setWarnForReferencingObjectsVisible(boolean isVisible){
183
        if (warnForReferencedObjects != null){
184
            warnForReferencedObjects.setVisible(isVisible);
185
        }
186
    }
187

    
188
}
(4-4/10)