1 package eu
.etaxonomy
.taxeditor
.prototype2
.view
.nameviewersupport
;
3 import java
.util
.Scanner
;
5 import org
.eclipse
.jface
.text
.BadLocationException
;
6 import org
.eclipse
.jface
.text
.DocumentEvent
;
7 import org
.eclipse
.jface
.text
.IDocumentListener
;
8 import org
.eclipse
.swt
.custom
.StyledText
;
9 import org
.eclipse
.swt
.events
.ModifyEvent
;
10 import org
.eclipse
.swt
.events
.ModifyListener
;
11 import org
.eclipse
.swt
.widgets
.Composite
;
12 import org
.eclipse
.swt
.widgets
.Control
;
14 import eu
.etaxonomy
.taxeditor
.prototype2
.view
.NameEditorView
;
17 * This listener catches all line breaks other than carriage
18 * returns at end-of-line, and creates new name viewers,
19 * for instance, if user pastes a block of taxon information.
24 public class NameDocumentListener
implements IDocumentListener
{
28 * the View on which createdRelatedName gets called in case of line breaks
30 private NameEditorView nameEditorView
;
32 * the Control after which any new related names are created
34 private Control control
;
36 * the Composite that is resized after any change
38 private Composite parent
;
40 public NameDocumentListener(NameEditorView nameEditorView
, Control control
,
42 this.nameEditorView
= nameEditorView
;
43 this.control
= control
;
47 public void documentAboutToBeChanged(DocumentEvent e
) {
49 String text
= e
.getText();
50 System
.out
.println("b4: " + e
.getText());
53 System
.out
.println("aft: " + e
.getText());
55 // int length = e.getLength();
56 // int offset = e.getOffset();
57 // int docLength = e.getDocument().getLength(); // length of doc BEFORE insert
59 // if (text.contains(System.getProperty("line.separator"))) {
61 // if (offset < docLength) {
62 // remove text following insert from document,
65 // text += e.getDocument().get(offset, docLength - offset);
66 // e.getDocument().replace(offset, docLength - offset, "");
67 // } catch (BadLocationException e1) {
68 // System.out.println(e1.getMessage());
69 // e1.printStackTrace();
75 // Scanner scanner = new Scanner( text );
76 // scanner.useDelimiter (System.getProperty("line.separator"));
78 // StyledText SText = (StyledText) control;
79 // nameEditorView.createRelatedName(SText, "test");
80 // StyledText lastSText = null;
81 // while (scanner.hasNext()) {
82 // if (lastSText == null)
83 // e.getDocument().set(scanner.next());
85 // SText = nameEditorView.createRelatedName(SText, scanner.next()).
92 // // put cursor at EOL of last sourceviewer
93 // SText.setCaretOffset(SText.getText().length());
99 public void documentChanged(DocumentEvent event
) {
101 // System.out.println("Offset: " + event.getOffset());
102 // System.out.println("Get: " + event.getDocument().get());
104 String text
= event
.getDocument().get();
106 if (text
.endsWith(System
.getProperty("line.separator"))) {
107 event
.getDocument().set(text
.trim());
108 nameEditorView
.createRelatedName(control
,"help");
111 // int breakOffset = text.indexOf(System.getProperty("line.separator"));
112 // if (breakOffset > -1) {
114 // event.getDocument().replace(breakOffset, text.length() - breakOffset, "");
115 // } catch (BadLocationException e) {
116 // // TODO Auto-generated catch block
117 // System.out.println(e.getMessage());
118 // e.printStackTrace();
122 // if (event.getDocument().get().contains(System.getProperty("line.separator"))) {
123 // Scanner scanner = new Scanner(event.getDocument().get());
124 // scanner.useDelimiter (System.getProperty("line.separator"));
126 // event.getDocument().replace(
127 // 0, event.getDocument().get().length(), scanner.next());
128 // } catch (BadLocationException e) {
129 // // TODO Auto-generated catch block
130 // e.printStackTrace();
132 //// document.set(scanner.next());
134 // while (scanner.hasNext()) {
135 // System.out.println("Create new relname with: " + scanner.next());
139 // re-draw parent in case text controls need re-sizing -
140 // could also be the case if databinding has modified text
141 // nameEditorView.createRelatedName(control,"help");
143 // parent.getParent().layout();