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