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