added a readme file
[taxeditor.git] / taxeditor-editor / src / main / java / eu / etaxonomy / taxeditor / section / supplemental / ImageFileElement.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.section.supplemental;
12
13 import java.io.IOException;
14 import java.net.URI;
15 import java.net.URISyntaxException;
16
17 import org.apache.commons.io.FileUtils;
18 import org.eclipse.swt.events.SelectionListener;
19
20 import eu.etaxonomy.cdm.common.mediaMetaData.ImageMetaData;
21 import eu.etaxonomy.cdm.model.media.ImageFile;
22 import eu.etaxonomy.taxeditor.editor.EditorUtil;
23 import eu.etaxonomy.taxeditor.forms.AbstractFormSection;
24 import eu.etaxonomy.taxeditor.forms.CdmFormFactory;
25 import eu.etaxonomy.taxeditor.forms.ICdmFormElement;
26 import eu.etaxonomy.taxeditor.forms.ImageElement;
27 import eu.etaxonomy.taxeditor.forms.KeyValueViewerElement;
28 import eu.etaxonomy.taxeditor.forms.NumberWithLabelElement;
29 import eu.etaxonomy.taxeditor.store.CdmStore;
30
31 /**
32 * <p>ImageFileElement class.</p>
33 *
34 * @author n.hoffmann
35 * @created Mar 26, 2010
36 * @version 1.0
37 */
38 public class ImageFileElement extends AbstractMediaRepresentationPartElement<ImageFile> {
39
40 private NumberWithLabelElement text_height;
41 private NumberWithLabelElement text_width;
42 private KeyValueViewerElement element_keyValue;
43 private ImageElement element_image;
44
45 /**
46 * <p>Constructor for ImageFileElement.</p>
47 *
48 * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.forms.CdmFormFactory} object.
49 * @param section a {@link eu.etaxonomy.taxeditor.forms.AbstractFormSection} object.
50 * @param element a {@link eu.etaxonomy.cdm.model.media.ImageFile} object.
51 * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object.
52 * @param style a int.
53 */
54 public ImageFileElement(CdmFormFactory cdmFormFactory,
55 AbstractFormSection section, ImageFile element,
56 SelectionListener removeListener, int style) {
57 super(cdmFormFactory, section, element, removeListener, style);
58 }
59
60 /** {@inheritDoc} */
61 @Override
62 public void createControls(ICdmFormElement formElement, int style) {
63 super.createControls(formElement, style);
64
65 text_height = formFactory.createIntegerTextWithLabelElement(formElement, "Height", null, style);
66 text_height.setEnabled(false);
67 text_width = formFactory.createIntegerTextWithLabelElement(formElement, "Width", null, style);
68 text_width.setEnabled(false);
69 element_image = formFactory.createImageElement(formElement, null, style);
70
71 element_keyValue = formFactory.createKeyValueViewerElement(formElement, "Key", "Value", null);
72 }
73
74 /** {@inheritDoc} */
75 @Override
76 public void setEntity(ImageFile entity) {
77 this.entity = entity;
78 if(entity.getUri() != null){
79 text_uri.setText(entity.getUri().toString());
80 }
81 if(entity.getSize() != null){
82 text_size.setText(FileUtils.byteCountToDisplaySize(entity.getSize()));
83 }
84 text_height.setInteger(entity.getHeight());
85 text_width.setInteger(entity.getWidth());
86
87 showImage(entity.getUri());
88 }
89
90 private void showImage(URI uri){
91 if(uri == null){
92 return;
93 }
94 try {
95
96 Integer size = CdmStore.getMediaService().getImageSize(uri, 10000);
97
98 if(size != null){
99 text_size.setText(FileUtils.byteCountToDisplaySize(size));
100 getEntity().setSize(size);
101 }
102
103
104 ImageMetaData imageInfo;
105 try {
106
107 imageInfo = CdmStore.getMediaService().getImageInfo(uri, 10000);
108
109 text_height.setInteger(imageInfo.getHeight());
110 getEntity().setHeight(imageInfo.getHeight());
111
112 text_width.setInteger(imageInfo.getWidth());
113 getEntity().setWidth(imageInfo.getWidth());
114 element_keyValue.setInput(imageInfo.getMetaData());
115
116 element_image.setImageUri(uri);
117
118 } catch (IOException e) {
119 EditorUtil.error(getClass(), e);
120 }
121 } catch (Exception e) {
122 EditorUtil.error(getClass(), "Image could not be shown: ", e);
123 }
124 }
125
126 /*
127 * (non-Javadoc)
128 * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent(java.lang.Object)
129 */
130 /** {@inheritDoc} */
131 @Override
132 public void handleEvent(Object eventSource) {
133 if(eventSource == text_uri){
134 try {
135 getEntity().setUri(new URI(text_uri.getText()));
136 } catch (URISyntaxException e) {
137 EditorUtil.warningDialog("Could not parse URI", getClass(), e.getMessage());
138 }
139 showImage(getEntity().getUri());
140 }
141 }
142 }