3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
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.
11 package eu
.etaxonomy
.taxeditor
.section
.supplemental
;
13 import java
.io
.IOException
;
15 import java
.net
.URISyntaxException
;
17 import org
.apache
.commons
.io
.FileUtils
;
18 import org
.eclipse
.swt
.events
.SelectionListener
;
20 import eu
.etaxonomy
.cdm
.api
.service
.IMediaService
;
21 import eu
.etaxonomy
.cdm
.common
.mediaMetaData
.ImageMetaData
;
22 import eu
.etaxonomy
.cdm
.model
.media
.ImageFile
;
23 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
24 import eu
.etaxonomy
.taxeditor
.forms
.AbstractFormSection
;
25 import eu
.etaxonomy
.taxeditor
.forms
.CdmFormFactory
;
26 import eu
.etaxonomy
.taxeditor
.forms
.ICdmFormElement
;
27 import eu
.etaxonomy
.taxeditor
.forms
.ImageElement
;
28 import eu
.etaxonomy
.taxeditor
.forms
.KeyValueViewerElement
;
29 import eu
.etaxonomy
.taxeditor
.forms
.NumberWithLabelElement
;
30 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
33 * <p>ImageFileElement class.</p>
36 * @created Mar 26, 2010
39 public class ImageFileElement
extends AbstractMediaRepresentationPartElement
<ImageFile
> {
41 private NumberWithLabelElement text_height
;
42 private NumberWithLabelElement text_width
;
43 private KeyValueViewerElement element_keyValue
;
44 private ImageElement element_image
;
47 * <p>Constructor for ImageFileElement.</p>
49 * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.forms.CdmFormFactory} object.
50 * @param section a {@link eu.etaxonomy.taxeditor.forms.AbstractFormSection} object.
51 * @param element a {@link eu.etaxonomy.cdm.model.media.ImageFile} object.
52 * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object.
55 public ImageFileElement(CdmFormFactory cdmFormFactory
,
56 AbstractFormSection section
, ImageFile element
,
57 SelectionListener removeListener
, int style
) {
58 super(cdmFormFactory
, section
, element
, removeListener
, style
);
63 public void createControls(ICdmFormElement formElement
, int style
) {
64 super.createControls(formElement
, style
);
66 text_height
= formFactory
.createIntegerTextWithLabelElement(formElement
, "Height", null, style
);
67 text_height
.setEnabled(false);
68 text_width
= formFactory
.createIntegerTextWithLabelElement(formElement
, "Width", null, style
);
69 text_width
.setEnabled(false);
70 element_image
= formFactory
.createImageElement(formElement
, null, style
);
72 element_keyValue
= formFactory
.createKeyValueViewerElement(formElement
, "Key", "Value", null);
77 public void setEntity(ImageFile entity
) {
79 if(entity
.getUri() != null){
80 text_uri
.setText(entity
.getUri().toString());
82 if(entity
.getSize() != null){
83 text_size
.setText(FileUtils
.byteCountToDisplaySize(entity
.getSize()));
85 text_height
.setInteger(entity
.getHeight());
86 text_width
.setInteger(entity
.getWidth());
88 showImage(entity
.getUri());
91 private void showImage(URI uri
){
97 Integer size
= CdmStore
.getService(IMediaService
.class).getImageSize(uri
, 10000);
100 text_size
.setText(FileUtils
.byteCountToDisplaySize(size
));
101 getEntity().setSize(size
);
105 ImageMetaData imageInfo
;
108 imageInfo
= CdmStore
.getService(IMediaService
.class).getImageInfo(uri
, 10000);
110 text_height
.setInteger(imageInfo
.getHeight());
111 getEntity().setHeight(imageInfo
.getHeight());
113 text_width
.setInteger(imageInfo
.getWidth());
114 getEntity().setWidth(imageInfo
.getWidth());
115 element_keyValue
.setInput(imageInfo
.getMetaData());
117 element_image
.setImageUri(uri
);
119 element_image
.loadImage(new Runnable(){
121 EditorUtil
.reflowDetailsViewer();
122 EditorUtil
.reflowSupplementalViewer();
126 } catch (IOException e
) {
127 EditorUtil
.error(getClass(), e
);
129 } catch (Exception e
) {
130 EditorUtil
.error(getClass(), "Image could not be shown: ", e
);
136 * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent(java.lang.Object)
140 public void handleEvent(Object eventSource
) {
141 if(eventSource
== text_uri
){
143 getEntity().setUri(new URI(text_uri
.getText()));
144 } catch (URISyntaxException e
) {
145 EditorUtil
.warningDialog("Could not parse URI", getClass(), e
.getMessage());
147 showImage(getEntity().getUri());