]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/impl/SWTStyledText.java
Several Wiki documentation view improvements.
[simantics/platform.git] / bundles / org.simantics.views.swt.client / src / org / simantics / views / swt / client / impl / SWTStyledText.java
1 package org.simantics.views.swt.client.impl;\r
2 \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
11 \r
12 public class SWTStyledText extends SingleSWTViewNode<StyledText> {\r
13         \r
14         private static final long serialVersionUID = 7932335224632082902L;\r
15         \r
16         @Override\r
17         public void createControls(Composite parent) {\r
18                 \r
19                 control = new StyledText(parent, style);\r
20                 control.setEnabled(false);\r
21                 setProperties();\r
22                 \r
23                 control.addSelectionListener(new SelectionListener() {\r
24                         @Override\r
25                         public void widgetSelected(SelectionEvent e) {\r
26                                 String selectionText = control.getSelectionText();\r
27                                 ViewUtils.setWorkbenchSelection(new StructuredSelection(selectionText));\r
28                         }\r
29                         @Override\r
30                         public void widgetDefaultSelected(SelectionEvent e) {\r
31                                 widgetSelected(e);\r
32                         }\r
33                 });\r
34                 \r
35         }\r
36         \r
37         @Override\r
38         public void synchronizeText(String text) {\r
39                 if(text != null) {\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
50                 } else {\r
51                         control.setText("");\r
52                         control.setEnabled(false);\r
53                 }\r
54         }\r
55         \r
56         public String readText() {\r
57                 return control.getText();\r
58         }\r
59         \r
60         public Point readSelection() {\r
61                 return control.getSelection();\r
62         }\r
63 \r
64 }\r