changed output dir to classes
[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 * <p>
25 * MediaElement class.
26 * </p>
27 *
28 * @author n.hoffmann
29 * @created Nov 17, 2009
30 * @version 1.0
31 */
32 public class MediaMetaElement extends AbstractEntityCollectionElement<Media> {
33
34 private EntitySelectionElement<AgentBase> selection_artist;
35 private LanguageStringWithLabelElement text_description;
36 private LanguageStringWithLabelElement text_title;
37 private MediaDetailElement mediaDetailElement;
38
39 /**
40 * <p>
41 * Constructor for MediaElement.
42 * </p>
43 *
44 * @param formElement
45 * a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
46 * object.
47 * @param element
48 * a {@link eu.etaxonomy.cdm.model.media.Media} object.
49 * @param removeListener
50 * a {@link org.eclipse.swt.events.SelectionListener} object.
51 * @param style
52 * a int.
53 * @param cdmFormFactory
54 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
55 * object.
56 */
57 public MediaMetaElement(CdmFormFactory cdmFormFactory,
58 AbstractFormSection<?> formElement, Media element,
59 SelectionListener removeListener, boolean isChoosableEntity, int style) {
60 super(cdmFormFactory, formElement, element, removeListener, isChoosableEntity, null, style);
61 }
62
63 /*
64 * (non-Javadoc)
65 *
66 * @see
67 * eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite
68 * #createControls(org.eclipse.swt.widgets.Composite, int)
69 */
70 /** {@inheritDoc} */
71 @Override
72 public void createControls(ICdmFormElement element, int style) {
73
74 text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
75 selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style);
76 text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style);
77 mediaDetailElement = formFactory.createMediaDetailElement(element);
78 }
79
80 /** {@inheritDoc} */
81 @Override
82 public void setEntity(Media element) {
83 this.entity = element;
84 mediaDetailElement.setEntity(element);
85
86 selection_artist.setEntity((AgentBase<?>) HibernateProxyHelper
87 .deproxy(element.getArtist()));
88
89 text_description.setLanguageString(element.getDescription(CdmStore
90 .getDefaultLanguage()));
91
92 LanguageString title = element.getTitle(CdmStore.getDefaultLanguage());
93
94 if (title == null) {
95 title = LanguageString.NewInstance("", CdmStore.getDefaultLanguage());
96 }
97
98 text_title.setLanguageString(title);
99 }
100
101 /* (non-Javadoc)
102 * @see eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement#selectFromDialog()
103 */
104 @Override
105 protected Media selectFromDialog() {
106 return MediaSelectionDialog.select(AbstractUtility.getShell(), null, null);
107 }
108
109 public void toggleAdvancedMediaView(){
110 mediaDetailElement.toggleAdvancedMediaView();
111 }
112
113 /*
114 * (non-Javadoc)
115 *
116 * @see
117 * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent
118 * (java.lang.Object)
119 */
120 /** {@inheritDoc} */
121 @Override
122 public void handleEvent(Object eventSource) {
123 if (eventSource == selection_artist) {
124 getEntity().setArtist(selection_artist.getSelection());
125 } else if (eventSource == text_description) {
126 getEntity().addDescription(text_description.getLanguageString());
127 } else if (eventSource == text_title) {
128 getEntity().putTitle(text_title.getLanguageString());
129 if (getParentElement() instanceof AbstractCdmDetailSection) {
130 ((AbstractCdmDetailSection<?>) getParentElement()).updateTitle();
131 }
132 }
133 }
134
135 /**
136 * @return
137 */
138 public boolean isAdvancedMediaView() {
139 return mediaDetailElement.isAdvancedMediaView();
140 }
141 }