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