Project

General

Profile

Download (3.22 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
		if (entity != null){
49
			setEntity(entity);
50
		}
51
	}
52

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

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

    
85
		    firePropertyChangeEvent(this);
86
		}
87
	}
88

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

    
100
}
(6-6/10)