merging in latest changes from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / element / BrowserElement.java
1 /**
2 *
3 */
4 package eu.etaxonomy.taxeditor.ui.element;
5
6 import java.net.URI;
7
8 import org.eclipse.swt.SWT;
9 import org.eclipse.swt.browser.Browser;
10 import org.eclipse.swt.events.ControlEvent;
11 import org.eclipse.swt.events.ControlListener;
12 import org.eclipse.swt.graphics.Rectangle;
13 import org.eclipse.ui.forms.widgets.TableWrapData;
14
15
16 /**
17 * <p>BrowserElement class.</p>
18 *
19 * @author n.hoffmann
20 * @version $Id: $
21 */
22 public class BrowserElement extends AbstractCdmFormElement implements ControlListener{
23
24 private Browser browser;
25
26 private String imageUriString;
27
28 /**
29 * <p>Constructor for BrowserElement.</p>
30 *
31 * @param style a int.
32 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
33 * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
34 * @param imageUri a {@link java.net.URI} object.
35 */
36 protected BrowserElement(CdmFormFactory formFactory, ICdmFormElement parentElement, URI imageUri, int style) {
37 super(formFactory, parentElement);
38 formFactory.createLabel(getLayoutComposite(), "");
39
40 browser = new Browser(getLayoutComposite(), SWT.NONE);
41 addControl(browser);
42
43 getLayoutComposite().setLayoutData(LayoutConstants.FILL());
44
45
46 layoutBrowser();
47
48 showBrowser();
49 browser.addControlListener(this);
50
51 this.setImageUri(imageUri);
52 }
53
54 /**
55 *
56 */
57 private void layoutBrowser() {
58 TableWrapData layoutData = LayoutConstants.FILL();
59 layoutData.heightHint = 1000;
60
61 browser.setLayoutData(layoutData);
62 }
63
64 /**
65 *
66 */
67 private void showBrowser() {
68
69 String html = "";
70 html = "<HTML><HEAD><TITLE></TITLE></HEAD><BODY marginwidth=0 marginheight=0 leftmargin=0 topmargin=0>";
71 html += "<img width=\"" + calculateWidth() + "\" src=\"" + getImageUriString() + "\" />";
72 html += "</BODY></HTML>";
73
74 browser.setText(html);
75 }
76
77 /**
78 * <p>calculateWidth</p>
79 *
80 * @return a int.
81 */
82 public int calculateWidth() {
83 Rectangle boundaries = browser.getBounds();
84 return boundaries.width;
85 }
86
87 /* (non-Javadoc)
88 * @see org.eclipse.swt.events.ControlListener#controlMoved(org.eclipse.swt.events.ControlEvent)
89 */
90 /** {@inheritDoc} */
91 public void controlMoved(ControlEvent e) {
92 showBrowser();
93 }
94
95 /* (non-Javadoc)
96 * @see org.eclipse.swt.events.ControlListener#controlResized(org.eclipse.swt.events.ControlEvent)
97 */
98 /** {@inheritDoc} */
99 public void controlResized(ControlEvent e) {
100 showBrowser();
101 }
102
103 /**
104 * <p>setImageUri</p>
105 *
106 * @param imageUri the imageUri to set
107 */
108 public void setImageUri(URI imageUri) {
109 setImageUriString(imageUri != null ? imageUri.toString() : "");
110 }
111
112 /**
113 * <p>Setter for the field <code>imageUriString</code>.</p>
114 *
115 * @param imageUriString a {@link java.lang.String} object.
116 */
117 public void setImageUriString(String imageUriString){
118 this.imageUriString = imageUriString;
119 showBrowser();
120 }
121
122 /**
123 * <p>Getter for the field <code>imageUriString</code>.</p>
124 *
125 * @return the imageUri
126 */
127 public String getImageUriString() {
128 return imageUriString;
129 }
130
131 }