Project

General

Profile

Download (3.14 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

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

    
12
import java.net.URI;
13

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

    
17
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
18
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
19
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
20
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
21
import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
22
import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
23
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
24

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

    
35
	protected UriWithLabelElement text_uri;
36
	protected NumberWithLabelElement text_size;
37

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

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

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

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

    
83
		    firePropertyChangeEvent(this);
84
		}
85
	}
86

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

    
98
}
(6-6/10)