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