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