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
.editor
.images
;
14 import java
.net
.URISyntaxException
;
16 import org
.eclipse
.swt
.SWT
;
17 import org
.eclipse
.swt
.events
.FocusAdapter
;
18 import org
.eclipse
.swt
.events
.FocusEvent
;
19 import org
.eclipse
.swt
.events
.PaintEvent
;
20 import org
.eclipse
.swt
.events
.PaintListener
;
21 import org
.eclipse
.swt
.graphics
.Color
;
22 import org
.eclipse
.swt
.graphics
.Font
;
23 import org
.eclipse
.swt
.graphics
.Image
;
24 import org
.eclipse
.swt
.widgets
.Canvas
;
25 import org
.eclipse
.ui
.forms
.widgets
.TableWrapData
;
26 import org
.eclipse
.ui
.views
.properties
.IPropertySource
;
28 import eu
.etaxonomy
.cdm
.model
.media
.ImageFile
;
29 import eu
.etaxonomy
.taxeditor
.editor
.CompositeBorderDecorator
;
30 import eu
.etaxonomy
.taxeditor
.editor
.GroupComposite
;
31 import eu
.etaxonomy
.taxeditor
.editor
.GroupedComposite
;
32 import eu
.etaxonomy
.taxeditor
.editor
.name
.AcceptedNameComposite
;
33 import eu
.etaxonomy
.taxeditor
.propertysheet
.images
.ImagePropertySource
;
34 import eu
.etaxonomy
.taxeditor
.store
.model
.ImageResources
;
41 public class ImageComposite
extends GroupedComposite
{
43 protected Image image
;
45 private Canvas canvas
;
47 private FocusAdapter focusListener
;
49 private ImageFile imageFile
;
52 * @param groupComposite
57 public ImageComposite(TaxonImageEditor editor
, GroupComposite groupComposite
, ImageFile imageFile
) {
58 super(editor
, groupComposite
);
62 this.imageFile
= imageFile
;
64 setIsDraggable(false);
65 // setIcon(AcceptedNameComposite.ACCEPTED_ICON);
66 setIndent(AcceptedNameComposite
.ACCEPTED_INDENT
);
68 createImage(imageFile
);
70 this.setMenu(editor
.getMenu());
72 createBorderSupport();
76 protected void createControl() {
77 super.createControl();
79 Color groupBackgroundColor
= getDisplay().getSystemColor(SWT
.COLOR_WHITE
);
80 setBackground(groupBackgroundColor
);
86 private void createImage(ImageFile imageFile
) {
90 // TODO ImageFile.getUri should return a URI
92 uri
= new URI(imageFile
.getUri());
93 } catch (URISyntaxException e1
) {
94 // TODO this should never happen
99 image
= ImageResources
.getImage(uri
);
101 // Not optimal - why should getting composite to size to img be so obtuse?!
102 // canvas = new Canvas(this, SWT.NO_REDRAW_RESIZE);
103 canvas
= new Canvas(this, SWT
.NONE
);
105 TableWrapData layoutData
= new TableWrapData(TableWrapData
.LEFT
, TableWrapData
.TOP
);
106 layoutData
.heightHint
= image
.getBounds().height
;
107 canvas
.setLayoutData(layoutData
);
109 canvas
.addPaintListener (new PaintListener () {
110 public void paintControl (PaintEvent e
) {
112 canvas
.setBounds(image
.getBounds());
113 e
.gc
.drawImage (image
, 0, 0);
118 canvas
.setBounds(image
.getBounds());
120 focusListener
= new FocusAdapter() {
121 public void focusGained(FocusEvent e
) {
125 canvas
.addFocusListener(focusListener
);
130 * @see eu.etaxonomy.taxeditor.editor.GroupedComposite#getViewerFont()
133 protected Font
getViewerFont() {
138 * @see eu.etaxonomy.taxeditor.editor.IHasPropertySource#getPropertySource()
140 public IPropertySource
getPropertySource() {
141 return new ImagePropertySource(getTaxon(), imageFile
);
144 public void createBorderSupport() {
146 CompositeBorderDecorator borderDecorator
= new CompositeBorderDecorator(
147 canvas
, managedForm
);
148 setBorderDecorator(borderDecorator
);
149 borderDecorator
.setLoseFocus(false);
150 this.addFocusListener(borderDecorator
);
154 public void dispose () {
157 if (getBorderDecorator() != null) {
158 this.removeFocusListener(getBorderDecorator());