3 |
3 |
*/
|
4 |
4 |
package eu.etaxonomy.taxeditor.ui.section.media;
|
5 |
5 |
|
6 |
|
import java.net.URI;
|
7 |
6 |
import java.net.URISyntaxException;
|
8 |
7 |
import java.util.List;
|
9 |
8 |
import java.util.Set;
|
10 |
9 |
|
|
10 |
import org.eclipse.swt.SWT;
|
|
11 |
import org.eclipse.swt.events.SelectionAdapter;
|
|
12 |
import org.eclipse.swt.events.SelectionEvent;
|
11 |
13 |
import org.eclipse.swt.events.SelectionListener;
|
|
14 |
import org.eclipse.swt.layout.FormAttachment;
|
|
15 |
import org.eclipse.swt.layout.FormData;
|
|
16 |
import org.eclipse.swt.layout.FormLayout;
|
|
17 |
import org.eclipse.swt.widgets.Button;
|
|
18 |
import org.eclipse.swt.widgets.Composite;
|
|
19 |
import org.eclipse.swt.widgets.Display;
|
|
20 |
import org.eclipse.swt.widgets.Shell;
|
12 |
21 |
|
13 |
22 |
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
|
14 |
23 |
import eu.etaxonomy.cdm.model.agent.AgentBase;
|
... | ... | |
17 |
26 |
import eu.etaxonomy.cdm.model.media.Media;
|
18 |
27 |
import eu.etaxonomy.cdm.model.media.MediaRepresentation;
|
19 |
28 |
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
|
|
29 |
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
|
|
30 |
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
|
20 |
31 |
import eu.etaxonomy.taxeditor.preference.Resources;
|
21 |
32 |
import eu.etaxonomy.taxeditor.store.CdmStore;
|
22 |
33 |
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
|
23 |
34 |
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
|
|
35 |
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
|
24 |
36 |
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
|
25 |
37 |
import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
|
|
38 |
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
|
26 |
39 |
import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
|
27 |
40 |
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
|
28 |
41 |
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
|
... | ... | |
39 |
52 |
*/
|
40 |
53 |
public class MediaElement extends AbstractEntityCollectionElement<Media> {
|
41 |
54 |
|
42 |
|
// private MediaRepresentationSection section_mediaRepresentation;
|
43 |
55 |
private EntitySelectionElement<AgentBase> selection_artist;
|
44 |
56 |
private LanguageStringWithLabelElement text_description;
|
45 |
57 |
private LanguageStringWithLabelElement text_title;
|
46 |
58 |
private UriWithLabelElement textUri;
|
|
59 |
private MediaRepresentationSection section_mediaRepresentation;
|
|
60 |
|
|
61 |
private CheckboxElement checkBoxShowAdvancedView;
|
|
62 |
private MediaRepresentationPart singleMediaRepresentationPart;
|
|
63 |
private boolean isAdvancedMediaView;
|
|
64 |
private ICdmFormElement parentFormElement;
|
|
65 |
private int style;
|
47 |
66 |
|
48 |
67 |
/**
|
49 |
68 |
* <p>
|
... | ... | |
79 |
98 |
/** {@inheritDoc} */
|
80 |
99 |
@Override
|
81 |
100 |
public void createControls(ICdmFormElement element, int style) {
|
|
101 |
this.parentFormElement = element;
|
|
102 |
this.style = style;
|
82 |
103 |
text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style);
|
83 |
104 |
selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style);
|
84 |
105 |
text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, style);
|
85 |
|
textUri = formFactory.createUriWithLabelElement(element, "Media URI", null, style);
|
86 |
|
// section_mediaRepresentation = formFactory.createMediaRepresentationSection(getConversationHolder(), element, style);
|
87 |
|
// section_mediaRepresentation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
|
88 |
|
}
|
89 |
|
|
90 |
|
private MediaRepresentationPart getFirstMediaRepresentationPart() {
|
91 |
|
Set<MediaRepresentation> representations = entity.getRepresentations();
|
92 |
|
if(representations.size()==1){
|
93 |
|
List<MediaRepresentationPart> parts = representations.iterator().next().getParts();
|
94 |
|
if(parts.size()==1){
|
95 |
|
return parts.iterator().next();
|
96 |
|
}
|
97 |
|
}
|
98 |
|
return null;
|
|
106 |
checkBoxShowAdvancedView = formFactory.createCheckbox(element, "Show Advance Media View", false, style);
|
|
107 |
textUri = formFactory.createUriWithLabelElement(parentFormElement, "Media URI", null, style);
|
|
108 |
section_mediaRepresentation = formFactory.createMediaRepresentationSection(getConversationHolder(), parentFormElement, style);
|
|
109 |
section_mediaRepresentation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
|
99 |
110 |
}
|
100 |
111 |
|
101 |
112 |
/** {@inheritDoc} */
|
102 |
113 |
@Override
|
103 |
114 |
public void setEntity(Media element) {
|
104 |
115 |
this.entity = element;
|
105 |
|
// section_mediaRepresentation.setEntity(element);
|
|
116 |
initRepresentationMode();
|
|
117 |
showAdvancedView(isAdvancedMediaView);
|
|
118 |
|
106 |
119 |
selection_artist.setEntity((TeamOrPersonBase) HibernateProxyHelper
|
107 |
120 |
.deproxy(element.getArtist()));
|
108 |
121 |
|
... | ... | |
118 |
131 |
|
119 |
132 |
text_title.setLanguageString(title);
|
120 |
133 |
|
121 |
|
MediaRepresentationPart firstMediaRepresentationPart = getFirstMediaRepresentationPart();
|
122 |
|
if(firstMediaRepresentationPart!=null){
|
123 |
|
textUri.setUri(firstMediaRepresentationPart.getUri());
|
124 |
|
}
|
|
134 |
|
125 |
135 |
}
|
126 |
136 |
|
127 |
137 |
/*
|
... | ... | |
144 |
154 |
((AbstractCdmDetailSection) getParentElement()).updateTitle();
|
145 |
155 |
}
|
146 |
156 |
}
|
147 |
|
else if (eventSource == textUri){
|
|
157 |
else if(eventSource==textUri){
|
148 |
158 |
textUri.setBackground(getPersistentBackground());
|
149 |
|
MediaRepresentationPart firstMediaRepresentationPart = getFirstMediaRepresentationPart();
|
150 |
|
URI uri;
|
151 |
159 |
try {
|
152 |
|
uri = textUri.getUri();
|
153 |
|
if(firstMediaRepresentationPart!=null){
|
154 |
|
firstMediaRepresentationPart.setUri(uri);
|
|
160 |
singleMediaRepresentationPart.setUri(textUri.getUri());
|
|
161 |
} catch (URISyntaxException e) {
|
|
162 |
textUri.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
|
|
163 |
}
|
|
164 |
}
|
|
165 |
else if(eventSource==checkBoxShowAdvancedView){
|
|
166 |
showAdvancedView(checkBoxShowAdvancedView.getSelection());
|
|
167 |
}
|
|
168 |
}
|
|
169 |
|
|
170 |
/**
|
|
171 |
* @param showAdvancedView
|
|
172 |
*/
|
|
173 |
private void showAdvancedView(boolean showAdvancedView) {
|
|
174 |
// removeElements();
|
|
175 |
// text_title = formFactory.createLanguageStringWithLabelElement(parentFormElement, "Title", null, style);
|
|
176 |
// selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), parentFormElement, "Artist", null, EntitySelectionElement.ALL, style);
|
|
177 |
// text_description = formFactory.createLanguageStringWithLabelElement(parentFormElement, "Description", null, 100, style);
|
|
178 |
// checkBoxShowAdvancedView = formFactory.createCheckbox(parentFormElement, "Show Advance Media View", false, style);
|
|
179 |
if(showAdvancedView){
|
|
180 |
// removeElement(textUri);
|
|
181 |
// removeControl(textUri.getMainControl());
|
|
182 |
section_mediaRepresentation.setVisible(true);
|
|
183 |
textUri.setVisible(false);
|
|
184 |
section_mediaRepresentation.setEntity(getEntity());
|
|
185 |
}
|
|
186 |
else{
|
|
187 |
// removeElement(section_mediaRepresentation);
|
|
188 |
// removeControl(section_mediaRepresentation);
|
|
189 |
section_mediaRepresentation.setVisible(false);
|
|
190 |
textUri.setVisible(true);
|
|
191 |
textUri.setUri(getMediaRepresentationPart(getEntity()).getUri());
|
|
192 |
}
|
|
193 |
// parentFormElement.getLayoutComposite().layout();
|
|
194 |
// getParentElement().getLayoutComposite().layout();
|
|
195 |
}
|
|
196 |
|
|
197 |
private void initRepresentationMode(){
|
|
198 |
if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_ADVANCED_MEDIA_SECTION)){
|
|
199 |
isAdvancedMediaView = true;
|
|
200 |
return;
|
|
201 |
}
|
|
202 |
Set<MediaRepresentation> representations = entity.getRepresentations();
|
|
203 |
if(representations.size()>1){
|
|
204 |
isAdvancedMediaView = true;
|
|
205 |
return;
|
|
206 |
}
|
|
207 |
if(representations.size()==1){
|
|
208 |
List<MediaRepresentationPart> parts = representations.iterator().next().getParts();
|
|
209 |
if(parts.size()>1){
|
|
210 |
isAdvancedMediaView = true;
|
|
211 |
return;
|
|
212 |
}
|
|
213 |
}
|
|
214 |
isAdvancedMediaView = false;
|
|
215 |
}
|
|
216 |
|
|
217 |
private MediaRepresentationPart getMediaRepresentationPart(Media media) {
|
|
218 |
if(singleMediaRepresentationPart==null){
|
|
219 |
Set<MediaRepresentation> representations = media.getRepresentations();
|
|
220 |
if(representations!=null && representations.size()>0){
|
|
221 |
MediaRepresentation mediaRepresentation = representations.iterator().next();
|
|
222 |
List<MediaRepresentationPart> parts = mediaRepresentation.getParts();
|
|
223 |
if(parts!=null && parts.size()>0){
|
|
224 |
singleMediaRepresentationPart = parts.iterator().next();
|
155 |
225 |
}
|
156 |
226 |
else{
|
157 |
|
Set<MediaRepresentation> representations = getEntity().getRepresentations();
|
158 |
|
if(representations.size()>=1){
|
159 |
|
representations.iterator().next().addRepresentationPart(MediaRepresentationPart.NewInstance(uri, null));
|
160 |
|
}
|
161 |
|
else{
|
162 |
|
MediaRepresentation mediaRepresentation = MediaRepresentation.NewInstance();
|
163 |
|
mediaRepresentation.addRepresentationPart(MediaRepresentationPart.NewInstance(uri, null));
|
164 |
|
getEntity().addRepresentation(mediaRepresentation);
|
165 |
|
}
|
|
227 |
singleMediaRepresentationPart = MediaRepresentationPart.NewInstance(null, null);
|
|
228 |
mediaRepresentation.addRepresentationPart(singleMediaRepresentationPart);
|
166 |
229 |
}
|
167 |
|
} catch (URISyntaxException e) {
|
168 |
|
textUri.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
|
|
230 |
}
|
|
231 |
else{
|
|
232 |
singleMediaRepresentationPart = MediaRepresentationPart.NewInstance(null, null);
|
|
233 |
|
|
234 |
MediaRepresentation mediaRepresentation = MediaRepresentation.NewInstance();
|
|
235 |
mediaRepresentation.addRepresentationPart(singleMediaRepresentationPart);
|
|
236 |
media.addRepresentation(mediaRepresentation);
|
169 |
237 |
}
|
170 |
238 |
}
|
|
239 |
return singleMediaRepresentationPart;
|
171 |
240 |
}
|
|
241 |
|
172 |
242 |
}
|