Project

General

Profile

Download (3.13 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
package eu.etaxonomy.taxeditor.ui.section.media;
10

    
11
import org.apache.commons.io.FileUtils;
12
import org.eclipse.swt.events.SelectionListener;
13

    
14
import eu.etaxonomy.cdm.common.URI;
15
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
16
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
17
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
18
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
19
import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
20
import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;
21
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
22

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

    
32
	protected UriWithLabelElement text_uri;
33
	protected NumberWithLabelElement text_size;
34

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

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

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

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

    
80
		    firePropertyChangeEvent(this);
81
		}
82
	}
83

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

    
95
}
(6-6/10)