1 package org.simantics.views.swt.client.impl;
\r
3 import org.eclipse.jface.layout.GridDataFactory;
\r
4 import org.eclipse.jface.layout.GridLayoutFactory;
\r
5 import org.eclipse.swt.browser.Browser;
\r
6 import org.eclipse.swt.browser.LocationEvent;
\r
7 import org.eclipse.swt.browser.LocationListener;
\r
8 import org.eclipse.swt.widgets.Composite;
\r
9 import org.simantics.db.layer0.variable.Variable;
\r
10 import org.simantics.scl.runtime.function.Function1;
\r
11 import org.simantics.utils.datastructures.map.Tuple;
\r
12 import org.simantics.views.swt.client.base.SingleSWTViewNode;
\r
14 public class SWTBrowser extends SingleSWTViewNode<Browser> {
\r
16 private static final long serialVersionUID = -2704760050046054447L;
\r
18 public String document;
\r
19 public Variable variable;
\r
20 public Function1<Object, Boolean> locationChanging;
\r
22 private Tuple lastAppliedParametrization;
\r
25 public void reset() {
\r
27 lastAppliedParametrization = null;
\r
31 public void createControls(Composite parent) {
\r
33 GridDataFactory.fillDefaults().grab(true, true).applyTo(parent);
\r
34 GridLayoutFactory.fillDefaults().applyTo(parent);
\r
36 control = new Browser(parent, style);
\r
37 GridDataFactory.fillDefaults().grab(true, true).applyTo(control);
\r
39 control.addLocationListener(new LocationListener() {
\r
41 public void changing(LocationEvent event) {
\r
42 Function1<Object, Boolean> lc = locationChanging;
\r
47 public void changed(LocationEvent event) {
\r
55 public void synchronizeVariable(Variable variable) {
\r
59 public void synchronizeDocument(final String document) {
\r
61 if(document != null) {
\r
63 final Variable variable = SWTBrowser.this.variable;
\r
64 if (variable == null) {
\r
68 Tuple checkParam = new Tuple(document, variable);
\r
69 if (checkParam.equals(lastAppliedParametrization))
\r
72 lastAppliedParametrization = checkParam;
\r
74 final Browser control = this.control;
\r
75 if (control == null)
\r
77 control.setText(document);
\r