Project

General

Profile

Download (3.13 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
* Copyright (C) 2007 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

    
11
package eu.etaxonomy.taxeditor.ui.section.media;
12

    
13
import java.net.URI;
14

    
15
import org.apache.commons.io.FileUtils;
16
import org.eclipse.swt.events.SelectionListener;
17

    
18
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
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.NumberWithLabelElement;
23
import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
24
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
25

    
26
/**
27
 * <p>Abstract AbstractMediaRepresentationPartElement class.</p>
28
 *
29
 * @author n.hoffmann
30
 * @created Mar 24, 2010
31
 * @version 1.0
32
 */
33
public class MediaRepresentationPartElement<T extends MediaRepresentationPart> extends
34
		AbstractEntityCollectionElement<T> {
35

    
36
	protected UriWithLabelElement text_uri;
37
	protected NumberWithLabelElement text_size;
38

    
39
	public MediaRepresentationPartElement(CdmFormFactory formFactory,
40
			AbstractFormSection section,
41
			T element, SelectionListener removeListener,
42
			int style) {
43
		super(formFactory, section, element, removeListener, null, style);
44
	}
45

    
46
	/** {@inheritDoc} */
47
	@Override
48
	public void createControls(ICdmFormElement element, int style) {
49
		text_uri = formFactory.createUriWithLabelElement(element, "URI", null, style);
50
		text_size = formFactory.createNumberTextWithLabelElement(element, "Size", null, style);
51
		text_size.setEnabled(false);
52
	}
53

    
54
	@Override
55
	public void setEntity(T entity) {
56
		this.entity = entity;
57
		if(entity.getSize() != null){
58
			text_size.setText(FileUtils.byteCountToDisplaySize(entity.getSize()));
59
		}
60
		if(entity.getUri() != null){
61
			text_uri.setUri(entity.getUri());
62
		} else {
63
            String uriBuffer = getParentMediaDetailElement().getUriBuffer();
64
            if(uriBuffer!=null){
65
                text_uri.setText(uriBuffer);
66
                text_uri.getUri();//just to update the error label
67
            }
68
        }
69
	}
70

    
71
	@Override
72
	public void handleEvent(Object eventSource) {
73
		if(eventSource == text_uri){
74
		    URI uri = text_uri.getUri();
75
		    getEntity().setUri(uri);
76
		    if(uri==null){
77
                //buffer URI if parsing error occurred
78
                MediaDetailElement parentMediaDetailElement = getParentMediaDetailElement();
79
                if(parentMediaDetailElement!=null){
80
                    parentMediaDetailElement.setUriBuffer(text_uri.getText());
81
                }
82
            }
83

    
84
		    firePropertyChangeEvent(this);
85
		}
86
	}
87

    
88
    protected MediaDetailElement getParentMediaDetailElement() {
89
        ICdmFormElement parentElement = getParentElement();
90
        while(parentElement!=null){
91
            parentElement = parentElement.getParentElement();
92
            if(parentElement instanceof MediaDetailElement){
93
                return (MediaDetailElement) parentElement;
94
            }
95
        }
96
        return null;
97
    }
98

    
99
}
(6-6/10)