4 package eu
.etaxonomy
.taxeditor
.ui
.section
.media
;
6 import java
.net
.URISyntaxException
;
10 import org
.eclipse
.swt
.events
.SelectionListener
;
12 import eu
.etaxonomy
.cdm
.hibernate
.HibernateProxyHelper
;
13 import eu
.etaxonomy
.cdm
.model
.agent
.AgentBase
;
14 import eu
.etaxonomy
.cdm
.model
.agent
.TeamOrPersonBase
;
15 import eu
.etaxonomy
.cdm
.model
.common
.LanguageString
;
16 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
17 import eu
.etaxonomy
.cdm
.model
.media
.MediaRepresentation
;
18 import eu
.etaxonomy
.cdm
.model
.media
.MediaRepresentationPart
;
19 import eu
.etaxonomy
.cdm
.model
.media
.MediaUtils
;
20 import eu
.etaxonomy
.taxeditor
.preference
.IPreferenceKeys
;
21 import eu
.etaxonomy
.taxeditor
.preference
.PreferencesUtil
;
22 import eu
.etaxonomy
.taxeditor
.preference
.Resources
;
23 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
24 import eu
.etaxonomy
.taxeditor
.ui
.element
.AbstractFormSection
;
25 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
26 import eu
.etaxonomy
.taxeditor
.ui
.element
.CheckboxElement
;
27 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
28 import eu
.etaxonomy
.taxeditor
.ui
.element
.LanguageStringWithLabelElement
;
29 import eu
.etaxonomy
.taxeditor
.ui
.element
.LayoutConstants
;
30 import eu
.etaxonomy
.taxeditor
.ui
.element
.UriWithLabelElement
;
31 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractCdmDetailSection
;
32 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractEntityCollectionElement
;
33 import eu
.etaxonomy
.taxeditor
.ui
.selection
.EntitySelectionElement
;
41 * @created Nov 17, 2009
44 public class MediaElement
extends AbstractEntityCollectionElement
<Media
> {
46 private EntitySelectionElement
<AgentBase
> selection_artist
;
47 private LanguageStringWithLabelElement text_description
;
48 private LanguageStringWithLabelElement text_title
;
49 private UriWithLabelElement textUri
;
50 private MediaRepresentationSection section_mediaRepresentation
;
52 private CheckboxElement checkBoxShowAdvancedView
;
53 private MediaRepresentationPart singleMediaRepresentationPart
;
54 private ICdmFormElement parentFormElement
;
59 * Constructor for MediaElement.
63 * a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection}
66 * a {@link eu.etaxonomy.cdm.model.media.Media} object.
67 * @param removeListener
68 * a {@link org.eclipse.swt.events.SelectionListener} object.
71 * @param cdmFormFactory
72 * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
75 public MediaElement(CdmFormFactory cdmFormFactory
,
76 AbstractFormSection
<?
> formElement
, Media element
,
77 SelectionListener removeListener
, int style
) {
78 super(cdmFormFactory
, formElement
, element
, removeListener
, null, style
);
85 * eu.etaxonomy.taxeditor.forms.entitysections.AbstractEntitySetElementComposite
86 * #createControls(org.eclipse.swt.widgets.Composite, int)
90 public void createControls(ICdmFormElement element
, int style
) {
91 this.parentFormElement
= element
;
93 text_title
= formFactory
.createLanguageStringWithLabelElement(element
, "Title", null, style
);
94 selection_artist
= formFactory
.createSelectionElement(AgentBase
.class, getConversationHolder(), element
, "Artist", null, EntitySelectionElement
.ALL
, style
);
95 text_description
= formFactory
.createLanguageStringWithLabelElement(element
, "Description", null, 100, style
);
96 checkBoxShowAdvancedView
= formFactory
.createCheckbox(element
, "Advanced Media View", false, style
);
101 public void setEntity(Media element
) {
102 this.entity
= element
;
103 if(singleMediaRepresentationPart
==null){
104 singleMediaRepresentationPart
= MediaUtils
.initFirstMediaRepresentationPart(element
);
106 showAdvancedView(isAdvancedMediaView());
108 selection_artist
.setEntity((TeamOrPersonBase
<?
>) HibernateProxyHelper
109 .deproxy(element
.getArtist()));
111 text_description
.setLanguageString(element
.getDescription(CdmStore
112 .getDefaultLanguage()));
114 LanguageString title
= element
.getTitle(CdmStore
.getDefaultLanguage());
117 title
= LanguageString
.NewInstance("", CdmStore
.getDefaultLanguage());
120 text_title
.setLanguageString(title
);
127 * eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent
132 public void handleEvent(Object eventSource
) {
133 if (eventSource
== selection_artist
) {
134 getEntity().setArtist(selection_artist
.getSelection());
135 } else if (eventSource
== text_description
) {
136 getEntity().addDescription(text_description
.getLanguageString());
137 } else if (eventSource
== text_title
) {
138 getEntity().putTitle(text_title
.getLanguageString());
139 if (getParentElement() instanceof AbstractCdmDetailSection
) {
140 ((AbstractCdmDetailSection
<?
>) getParentElement()).updateTitle();
143 else if(eventSource
==textUri
){
144 textUri
.setBackground(getPersistentBackground());
146 singleMediaRepresentationPart
.setUri(textUri
.getUri());
147 } catch (URISyntaxException e
) {
148 textUri
.setBackground(getColor(Resources
.COLOR_PARSE_ERROR
));
151 else if(eventSource
==checkBoxShowAdvancedView
){
152 showAdvancedView(checkBoxShowAdvancedView
.getSelection());
157 * @param showAdvancedView
159 private void showAdvancedView(boolean showAdvancedView
) {
160 if(showAdvancedView
){
162 removeElementsAndControls(textUri
);
164 section_mediaRepresentation
= formFactory
.createMediaRepresentationSection(getConversationHolder(), parentFormElement
, style
);
165 section_mediaRepresentation
.setLayoutData(LayoutConstants
.FILL_HORIZONTALLY(2, 1));
166 section_mediaRepresentation
.setEntity(getEntity());
169 if(section_mediaRepresentation
!=null){
170 removeElementsAndControls(section_mediaRepresentation
);
172 textUri
= formFactory
.createUriWithLabelElement(parentFormElement
, "Media URI", null, style
);
173 textUri
.setUri(singleMediaRepresentationPart
.getUri());
174 textUri
.getLayoutComposite().layout();
178 private boolean isAdvancedMediaView(){
179 if(PreferencesUtil
.getPreferenceStore().getBoolean(IPreferenceKeys
.SHOW_ADVANCED_MEDIA_SECTION
)){
182 Set
<MediaRepresentation
> representations
= entity
.getRepresentations();
183 if(representations
.size()>1){
186 if(representations
.size()==1){
187 List
<MediaRepresentationPart
> parts
= representations
.iterator().next().getParts();