Project

General

Profile

Download (5.68 KB) Statistics
| Branch: | Tag: | Revision:
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.net.URISyntaxException;
13
import java.util.List;
14
import java.util.Set;
15

    
16
import org.eclipse.swt.SWT;
17
import org.eclipse.swt.events.SelectionEvent;
18
import org.eclipse.swt.events.SelectionListener;
19
import org.eclipse.swt.widgets.Button;
20

    
21
import eu.etaxonomy.cdm.model.media.Media;
22
import eu.etaxonomy.cdm.model.media.MediaRepresentation;
23
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
24
import eu.etaxonomy.cdm.model.media.MediaUtils;
25
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
26
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
27
import eu.etaxonomy.taxeditor.preference.Resources;
28
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
29
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
30
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
31
import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
32
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
33

    
34
/**
35
 * @author pplitzner
36
 * @date 25.08.2014
37
 *
38
 */
39
public class MediaDetailElement extends AbstractCdmDetailElement<Media>{
40

    
41
    private UriWithLabelElement textUri;
42
    private MediaRepresentationSection section_mediaRepresentation;
43

    
44
    private Button checkBoxShowAdvancedView;
45
    private MediaRepresentationPart singleMediaRepresentationPart;
46
    private ICdmFormElement parentFormElement;
47
    private int style;
48

    
49
    /**
50
     * @param formFactory
51
     * @param formElement
52
     */
53
    public MediaDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
54
        super(formFactory, formElement);
55
    }
56

    
57
    /* (non-Javadoc)
58
     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#createControls(eu.etaxonomy.taxeditor.ui.element.ICdmFormElement, java.lang.Object, int)
59
     */
60
    @Override
61
    protected void createControls(ICdmFormElement formElement, Media entity, int style) {
62
        this.parentFormElement = formElement;
63
        this.style = style;
64
        checkBoxShowAdvancedView = formFactory.createButton(formElement.getLayoutComposite(), "Advanced Media View", SWT.CHECK | style);
65
        checkBoxShowAdvancedView.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
66
        checkBoxShowAdvancedView.addSelectionListener(new SelectionListener() {
67

    
68
            @Override
69
            public void widgetSelected(SelectionEvent e) {
70
                showAdvancedView(checkBoxShowAdvancedView.getSelection());
71
            }
72

    
73
            @Override
74
            public void widgetDefaultSelected(SelectionEvent e) {
75

    
76
            }
77
        });
78
    }
79

    
80
    /* (non-Javadoc)
81
     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#setEntity(java.lang.Object)
82
     */
83
    @Override
84
    public void setEntity(Media entity) {
85
        super.setEntity(entity);
86
        if(singleMediaRepresentationPart==null){
87
            singleMediaRepresentationPart = MediaUtils.initFirstMediaRepresentationPart(entity);
88
        }
89
        showAdvancedView(isAdvancedMediaView());
90

    
91
    }
92

    
93
    /* (non-Javadoc)
94
     * @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement#handleEvent(java.lang.Object)
95
     */
96
    @Override
97
    public void handleEvent(Object eventSource) {
98
        if(eventSource==textUri){
99
            textUri.setBackground(getPersistentBackground());
100
            try {
101
                singleMediaRepresentationPart.setUri(textUri.getUri());
102
            } catch (URISyntaxException e) {
103
                textUri.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
104
            }
105
        }
106
        else if(eventSource==checkBoxShowAdvancedView){
107
            showAdvancedView(checkBoxShowAdvancedView.getSelection());
108
        }
109
    }
110

    
111
    /**
112
     * @param showAdvancedView
113
     */
114
    private void showAdvancedView(boolean showAdvancedView) {
115
        if(showAdvancedView){
116
            if(textUri!=null){
117
                removeElementsAndControls(textUri);
118
            }
119
            section_mediaRepresentation = formFactory.createMediaRepresentationSection(getConversationHolder(), parentFormElement, style);
120
            section_mediaRepresentation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
121
            section_mediaRepresentation.setEntity(getEntity());
122
        }
123
        else{
124
            if(section_mediaRepresentation!=null){
125
                removeElementsAndControls(section_mediaRepresentation);
126
            }
127
            textUri = formFactory.createUriWithLabelElement(parentFormElement, "Media URI", null, style);
128
            textUri.setUri(singleMediaRepresentationPart.getUri());
129
            textUri.getLayoutComposite().layout();
130
        }
131
    }
132

    
133
    private boolean isAdvancedMediaView(){
134
        if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.SHOW_ADVANCED_MEDIA_SECTION)){
135
            checkBoxShowAdvancedView.setSelection(true);
136
            checkBoxShowAdvancedView.setEnabled(false);
137
            return true;
138
        }
139
        Set<MediaRepresentation> representations = getEntity().getRepresentations();
140
        if(representations.size()>1){
141
            checkBoxShowAdvancedView.setSelection(true);
142
            checkBoxShowAdvancedView.setEnabled(false);
143
            return true;
144
        }
145
        if(representations.size()==1){
146
            List<MediaRepresentationPart> parts = representations.iterator().next().getParts();
147
            if(parts.size()>1){
148
                checkBoxShowAdvancedView.setSelection(true);
149
                checkBoxShowAdvancedView.setEnabled(false);
150
                return true;
151
            }
152
        }
153
        return false;
154
    }
155

    
156

    
157
}
(2-2/8)