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
.ui
.section
.media
;
13 import java
.io
.IOException
;
15 import java
.net
.URISyntaxException
;
17 import org
.apache
.commons
.io
.FileUtils
;
18 import org
.apache
.commons
.lang
.StringUtils
;
19 import org
.eclipse
.swt
.events
.SelectionListener
;
21 import eu
.etaxonomy
.cdm
.api
.service
.IMediaService
;
22 import eu
.etaxonomy
.cdm
.common
.media
.ImageInfo
;
23 import eu
.etaxonomy
.cdm
.model
.media
.ImageFile
;
24 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
25 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
26 import eu
.etaxonomy
.taxeditor
.ui
.forms
.AbstractFormSection
;
27 import eu
.etaxonomy
.taxeditor
.ui
.forms
.CdmFormFactory
;
28 import eu
.etaxonomy
.taxeditor
.ui
.forms
.CdmPropertyChangeEvent
;
29 import eu
.etaxonomy
.taxeditor
.ui
.forms
.ICdmFormElement
;
30 import eu
.etaxonomy
.taxeditor
.ui
.forms
.ImageElement
;
31 import eu
.etaxonomy
.taxeditor
.ui
.forms
.KeyValueViewerElement
;
32 import eu
.etaxonomy
.taxeditor
.ui
.forms
.NumberWithLabelElement
;
33 import eu
.etaxonomy
.taxeditor
.ui
.section
.supplemental
.AbstractMediaRepresentationPartElement
;
36 * <p>ImageFileElement class.</p>
39 * @created Mar 26, 2010
42 public class ImageFileElement
extends AbstractMediaRepresentationPartElement
<ImageFile
> {
44 private NumberWithLabelElement text_height
;
45 private NumberWithLabelElement text_width
;
46 private KeyValueViewerElement element_keyValue
;
47 private ImageElement element_image
;
50 * <p>Constructor for ImageFileElement.</p>
52 * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory} object.
53 * @param section a {@link eu.etaxonomy.taxeditor.ui.forms.AbstractFormSection} object.
54 * @param element a {@link eu.etaxonomy.cdm.model.media.ImageFile} object.
55 * @param removeListener a {@link org.eclipse.swt.events.SelectionListener} object.
58 public ImageFileElement(CdmFormFactory cdmFormFactory
,
59 AbstractFormSection section
, ImageFile element
,
60 SelectionListener removeListener
, int style
) {
61 super(cdmFormFactory
, section
, element
, removeListener
, style
);
66 public void createControls(ICdmFormElement formElement
, int style
) {
67 super.createControls(formElement
, style
);
69 text_height
= formFactory
.createIntegerTextWithLabelElement(formElement
, "Height", null, style
);
70 text_height
.setEnabled(false);
71 text_width
= formFactory
.createIntegerTextWithLabelElement(formElement
, "Width", null, style
);
72 text_width
.setEnabled(false);
73 element_image
= formFactory
.createImageElement(formElement
, null, style
);
75 element_keyValue
= formFactory
.createKeyValueViewerElement(formElement
, "Key", "Value", null);
80 public void setEntity(ImageFile entity
) {
82 if(entity
.getUri() != null){
83 text_uri
.setText(entity
.getUri().toString());
85 if(entity
.getSize() != null){
86 text_size
.setText(FileUtils
.byteCountToDisplaySize(entity
.getSize()));
88 text_height
.setInteger(entity
.getHeight());
89 text_width
.setInteger(entity
.getWidth());
91 showImage(entity
.getUri());
94 private void showImage(URI uri
){
100 Integer size
= CdmStore
.getService(IMediaService
.class).getImageSize(uri
, 10000);
103 text_size
.setText(FileUtils
.byteCountToDisplaySize(size
));
104 getEntity().setSize(size
);
110 ImageInfo imageInfo
= ImageInfo
.NewInstanceWithMetaData(uri
, 10000);
112 text_height
.setInteger(imageInfo
.getHeight());
113 getEntity().setHeight(imageInfo
.getHeight());
115 text_width
.setInteger(imageInfo
.getWidth());
116 getEntity().setWidth(imageInfo
.getWidth());
117 element_keyValue
.setInput(imageInfo
.getMetaData());
119 element_image
.setImageUri(uri
);
121 element_image
.loadImage(new Runnable(){
123 StoreUtil
.reflowDetailsViewer();
124 StoreUtil
.reflowSupplementalViewer();
128 } catch (IOException e
) {
129 StoreUtil
.error(getClass(), e
);
131 } catch (Exception e
) {
132 StoreUtil
.error(getClass(), "Image could not be shown: ", e
);
138 * @see eu.etaxonomy.taxeditor.section.AbstractEntityCollectionElement#handleEvent(java.lang.Object)
142 public void handleEvent(Object eventSource
) {
143 if(eventSource
== text_uri
){
145 String uriString
= text_uri
.getText();
146 URI uri
= StringUtils
.isNotEmpty(uriString
) ?
new URI(uriString
) : null;
147 getEntity().setUri(uri
);
149 showImage(getEntity().getUri());
151 firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
152 } catch (URISyntaxException e
) {
153 StoreUtil
.warningDialog("Could not parse URI", getClass(), e
.getMessage());