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