e05ed4064260e68d770df99dec3a5c11e950a8bd
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / media / MediaDetailElement.java
1 // $Id$
2 /**
3 * Copyright (C) 2014 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10 package eu.etaxonomy.taxeditor.ui.section.media;
11
12 import java.util.List;
13 import java.util.Set;
14
15 import eu.etaxonomy.cdm.model.media.Media;
16 import eu.etaxonomy.cdm.model.media.MediaRepresentation;
17 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
18 import eu.etaxonomy.cdm.model.media.MediaUtils;
19 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
20 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
21 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
22 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
23 import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
24 import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
25 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
26
27 /**
28 * @author pplitzner
29 * @date 25.08.2014
30 *
31 */
32 public class MediaDetailElement extends AbstractCdmDetailElement<Media>{
33
34 private UriWithLabelElement textUri;
35 private MediaRepresentationSection section_mediaRepresentation;
36
37 private boolean isAdvancedMediaView;
38 private MediaRepresentationPart singleMediaRepresentationPart;
39 private ICdmFormElement parentFormElement;
40 private int style;
41
42 public MediaDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
43 super(formFactory, formElement);
44 }
45
46 @Override
47 protected void createControls(ICdmFormElement formElement, Media entity, int style) {
48 this.parentFormElement = formElement;
49 this.style = style;
50 }
51
52 @Override
53 public void setEntity(Media entity) {
54 super.setEntity(entity);
55 if(singleMediaRepresentationPart==null){
56 singleMediaRepresentationPart = MediaUtils.initFirstMediaRepresentationPart(entity, true);
57 }
58 initIsAdvancedMediaView();
59 showAdvancedView();
60 }
61
62 @Override
63 public void handleEvent(Object eventSource){
64 if(eventSource==textUri){
65 textUri.setBackground(getPersistentBackground());
66 singleMediaRepresentationPart.setUri(textUri.getUri());
67 }
68 }
69
70 public void toggleAdvancedMediaView(){
71 isAdvancedMediaView = !isAdvancedMediaView;
72 showAdvancedView();
73 reflowParentScrolledForm(true);
74 }
75
76 private void showAdvancedView() {
77 if(isAdvancedMediaView){
78 if(textUri!=null){
79 removeElementsAndControls(textUri);
80 }
81 section_mediaRepresentation = formFactory.createMediaRepresentationSection(getConversationHolder(), parentFormElement, style);
82 section_mediaRepresentation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
83 section_mediaRepresentation.setEntity(getEntity());
84 }
85 else{
86 if(section_mediaRepresentation!=null){
87 removeElementsAndControls(section_mediaRepresentation);
88 }
89 textUri = formFactory.createUriWithLabelElement(parentFormElement, "Media URI", null, style);
90 textUri.setUri(singleMediaRepresentationPart.getUri());
91 textUri.getLayoutComposite().layout();
92 }
93 }
94
95 private void initIsAdvancedMediaView(){
96 if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_ADVANCED_MEDIA_SECTION)){
97 isAdvancedMediaView = true;
98 return;
99 }
100 Set<MediaRepresentation> representations = getEntity().getRepresentations();
101 if(representations.size()>1){
102 isAdvancedMediaView = true;
103 return;
104 }
105 if(representations.size()==1){
106 List<MediaRepresentationPart> parts = representations.iterator().next().getParts();
107 if(parts.size()>1){
108 isAdvancedMediaView = true;
109 return;
110 }
111 }
112 isAdvancedMediaView = false;
113 }
114
115 public boolean isAdvancedMediaView() {
116 return isAdvancedMediaView;
117 }
118
119 }