reintegrated model changes from branch 3.3-MC-SNAPSHOT
[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.apache.commons.lang.StringUtils;
17 import org.eclipse.swt.events.SelectionListener;
18
19 import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
20 import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
21 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
22 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
23 import eu.etaxonomy.taxeditor.ui.element.LabelElement;
24 import eu.etaxonomy.taxeditor.ui.element.NumberWithLabelElement;
25 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
26 import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
27
28 /**
29 * <p>Abstract AbstractMediaRepresentationPartElement class.</p>
30 *
31 * @author n.hoffmann
32 * @created Mar 24, 2010
33 * @version 1.0
34 */
35 public class MediaRepresentationPartElement<T extends MediaRepresentationPart> extends
36 AbstractEntityCollectionElement<T> {
37
38 protected TextWithLabelElement text_uri;
39 protected NumberWithLabelElement text_size;
40
41 protected LabelElement element_messages;
42
43 /**
44 * <p>Constructor for AbstractMediaRepresentationPartElement.</p>
45 *
46 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
47 * @param section a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection} object.
48 * @param element a T object.
49 * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object.
50 * @param style a int.
51 * @param <T> a T object.
52 */
53 public MediaRepresentationPartElement(CdmFormFactory formFactory,
54 AbstractFormSection section,
55 T element, SelectionListener removeListener,
56 int style) {
57 super(formFactory, section, element, removeListener, null, style);
58 }
59
60 /** {@inheritDoc} */
61 @Override
62 public void createControls(ICdmFormElement element, int style) {
63 text_uri = formFactory.createTextWithLabelElement(element, "URI", null, style);
64 text_size = formFactory.createNumberTextWithLabelElement(element, "Size", null, style);
65 text_size.setEnabled(false);
66
67 element_messages = formFactory.createLabel(element, "");
68 }
69
70 @Override
71 public void setEntity(T entity) {
72 this.entity = entity;
73 if(entity.getSize() != null){
74 text_size.setText(FileUtils.byteCountToDisplaySize(entity.getSize()));
75 }
76 if(entity.getUri() != null){
77 text_uri.setText(entity.getUri().toString());
78 }
79 element_messages.setText("We currrently do not know how to display this generic MediaRepresentationPart to you.");
80 }
81
82 @Override
83 public void handleEvent(Object eventSource) {
84 if(eventSource == text_uri){
85 try {
86 String uriString = text_uri.getText();
87 URI uri = StringUtils.isNotEmpty(uriString) ? new URI(uriString) : null;
88 getEntity().setUri(uri);
89 } catch (Exception e) {
90 handleException(e);
91 } finally {
92 firePropertyChangeEvent(this);
93 }
94 }
95 }
96
97 protected void handleException(Exception e) {
98 element_messages.setText(e.getMessage());
99 text_size.setText("");
100 }
101
102 }