1 package org.simantics.views.swt.client.impl;
3 import org.eclipse.jface.viewers.StructuredSelection;
4 import org.eclipse.swt.custom.StyledText;
5 import org.eclipse.swt.events.SelectionEvent;
6 import org.eclipse.swt.events.SelectionListener;
7 import org.eclipse.swt.graphics.Point;
8 import org.eclipse.swt.widgets.Composite;
9 import org.simantics.views.ViewUtils;
10 import org.simantics.views.swt.client.base.SingleSWTViewNode;
12 public class SWTStyledText extends SingleSWTViewNode<StyledText> {
14 private static final long serialVersionUID = 7932335224632082902L;
17 public void createControls(Composite parent) {
19 control = new StyledText(parent, style);
20 control.setEnabled(false);
23 control.addSelectionListener(new SelectionListener() {
25 public void widgetSelected(SelectionEvent e) {
26 String selectionText = control.getSelectionText();
27 ViewUtils.setWorkbenchSelection(new StructuredSelection(selectionText));
30 public void widgetDefaultSelected(SelectionEvent e) {
38 public void synchronizeText(String text) {
40 // Try to keep the vertical scroll position of the text widget
41 int caretOffset = control.getCaretOffset();
42 int charCount = control.getCharCount();
43 int topIndex = control.getTopIndex();
44 int diff = text.length() - charCount;
45 control.setText(text);
46 caretOffset = Math.max(0, Math.min(caretOffset + diff, text.length()));
47 control.setTopIndex(topIndex);
48 control.setCaretOffset(caretOffset);
49 control.setEnabled(true);
52 control.setEnabled(false);
56 public String readText() {
57 return control.getText();
60 public Point readSelection() {
61 return control.getSelection();