67dd752ccbc37948b3f7ae09c575cb9408932704
[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.common.LanguageString;
11 import eu.etaxonomy.cdm.model.media.Media;
12 import eu.etaxonomy.taxeditor.model.AbstractUtility;
13 import eu.etaxonomy.taxeditor.store.CdmStore;
14 import eu.etaxonomy.taxeditor.ui.dialog.selection.MediaSelectionDialog;
15 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
16 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
17 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
18 import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
19 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
20 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
21 import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
22
23 /**
24 * @author n.hoffmann
25 * @created Nov 17, 2009
26 * @version 1.0
27 */
28 public class MediaMetaElement extends AbstractEntityCollectionElement<Media> implements ITogglableMediaElement{
29
30 private EntitySelectionElement<AgentBase> selection_artist;
31 private LanguageStringWithLabelElement text_description;
32 private LanguageStringWithLabelElement text_title;
33 private MediaDetailElement mediaDetailElement;
34
35 public MediaMetaElement(CdmFormFactory cdmFormFactory,
36 AbstractFormSection<?> formElement, Media element,
37 SelectionListener removeListener, boolean isChoosableEntity, int style) {
38 super(cdmFormFactory, formElement, element, removeListener, isChoosableEntity, null, style);
39 }
40
41 /** {@inheritDoc} */
42 @Override
43 public void createControls(ICdmFormElement element, int style) {
44
45 text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
46 selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style);
47 text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style);
48 mediaDetailElement = formFactory.createMediaDetailElement(element);
49 }
50
51 /** {@inheritDoc} */
52 @Override
53 public void setEntity(Media element) {
54 this.entity = element;
55 mediaDetailElement.setEntity(element);
56
57 selection_artist.setEntity((AgentBase<?>) HibernateProxyHelper
58 .deproxy(element.getArtist()));
59
60 text_description.setLanguageString(element.getDescription(CdmStore
61 .getDefaultLanguage()));
62
63 LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
64
65 if (title == null) {
66 title = LanguageString.NewInstance("", CdmStore.getDefaultLanguage());
67 }
68
69 text_title.setLanguageString(title);
70 }
71
72 @Override
73 protected Media selectFromDialog() {
74 return MediaSelectionDialog.select(AbstractUtility.getShell(), null, null);
75 }
76
77 @Override
78 public void toggleAdvancedMediaView(){
79 mediaDetailElement.toggleAdvancedMediaView();
80 }
81
82 /** {@inheritDoc} */
83 @Override
84 public void handleEvent(Object eventSource) {
85 if (eventSource == selection_artist) {
86 getEntity().setArtist(selection_artist.getSelection());
87 } else if (eventSource == text_description) {
88 getEntity().addDescription(text_description.getLanguageString());
89 } else if (eventSource == text_title) {
90 getEntity().putTitle(text_title.getLanguageString());
91 if (getParentElement() instanceof AbstractCdmDetailSection) {
92 ((AbstractCdmDetailSection<?>) getParentElement()).updateTitle();
93 }
94 }
95 }
96
97 }