including changes from cdmlib-print
[taxeditor.git] / taxeditor-editor / src / main / java / eu / etaxonomy / taxeditor / section / supplemental / MediaElement.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.section.supplemental;
5
6 import org.eclipse.swt.events.FocusAdapter;
7 import org.eclipse.swt.events.FocusEvent;
8 import org.eclipse.swt.events.SelectionListener;
9
10 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
11 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
12 import eu.etaxonomy.cdm.model.common.LanguageString;
13 import eu.etaxonomy.cdm.model.media.Media;
14 import eu.etaxonomy.taxeditor.forms.AbstractFormSection;
15 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
16 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
17 import eu.etaxonomy.taxeditor.forms.LanguageStringWithLabelElement;
18 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.EntityDetailType;
19 import eu.etaxonomy.taxeditor.forms.CdmFormFactory.SelectionType;
20 import eu.etaxonomy.taxeditor.forms.selection.AgentSelectionElement;
21 import eu.etaxonomy.taxeditor.section.AbstractCdmDetailSection;
22 import eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement;
23 import eu.etaxonomy.taxeditor.store.CdmStore;
24
25 /**
26 * <p>MediaElement class.</p>
27 *
28 * @author n.hoffmann
29 * @created Nov 17, 2009
30 * @version 1.0
31 */
32 public class MediaElement extends AbstractEntityCollectionElement<Media> {
33
34 private MediaRepresentationSection section_mediaRepresentation;
35 private AgentSelectionElement selection_artist;
36 private LanguageStringWithLabelElement text_description;
37 private LanguageStringWithLabelElement text_title;
38
39 /**
40 * <p>Constructor for MediaElement.</p>
41 *
42 * @param formElement a {@link eu.etaxonomy.taxeditor.forms.AbstractFormSection} object.
43 * @param element a {@link eu.etaxonomy.cdm.model.media.Media} object.
44 * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object.
45 * @param style a int.
46 * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.forms.CdmFormFactory} object.
47 */
48 public MediaElement(CdmFormFactory cdmFormFactory, AbstractFormSection formElement, Media element,
49 SelectionListener removeListener, int style) {
50 super(cdmFormFactory, formElement, element, removeListener, null, style);
51 }
52
53
54
55 /* (non-Javadoc)
56 * @see eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite#createControls(org.eclipse.swt.widgets.Composite, int)
57 */
58 /** {@inheritDoc} */
59 @Override
60 public void createControls(ICdmFormElement element, int style) {
61 text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
62 selection_artist = (AgentSelectionElement) formFactory.createSelectionElement(SelectionType.AGENT, getConversationHolder(), element, "Artist", null, style);
63 text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, style);
64 section_mediaRepresentation = (MediaRepresentationSection) formFactory.createEntityDetailSection(EntityDetailType.MEDIAREPRESENTATION, getConversationHolder(), element, style);
65 section_mediaRepresentation.setLayoutData(CdmFormFactory.FILL_HORIZONTALLY(2, 1));
66 }
67
68 /** {@inheritDoc} */
69 @Override
70 public void setEntity(Media element) {
71 this.entity = element;
72 section_mediaRepresentation.setEntity(element);
73 selection_artist.setEntity((TeamOrPersonBase)HibernateProxyHelper.deproxy(element.getArtist()));
74
75 text_description.setLanguageString(element.getDescription(CdmStore.getDefaultLanguage()));
76
77 LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
78
79 if(title == null){
80 title = LanguageString.NewInstance("", CdmStore.getDefaultLanguage());
81 }
82
83 text_title.setLanguageString(title);
84 }
85
86 /*
87 * (non-Javadoc)
88 * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent(java.lang.Object)
89 */
90 /** {@inheritDoc} */
91 @Override
92 public void handleEvent(Object eventSource) {
93 if(eventSource == selection_artist){
94 getEntity().setArtist(selection_artist.getSelection());
95 }
96 else if(eventSource == text_description){
97 getEntity().addDescription(text_description.getLanguageString());
98 }
99 else if(eventSource == text_title){
100 getEntity().addTitle(text_title.getLanguageString());
101 if(getParentElement() instanceof AbstractCdmDetailSection){
102 ((AbstractCdmDetailSection) getParentElement()).updateTitle();
103 }
104 }
105 }
106 }