Generalized UriWithLabelElement to use super class
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / section / media / MediaRepresentationPartElement.java
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.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 @Override
72 public void handleEvent(Object eventSource) {
73 if(eventSource == text_uri){
74 URI uri = text_uri.parseText();
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 }