First versioned eu.etaxonomy.taxeditor
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor / src / eu / etaxonomy / taxeditor / prototype2 / view / nameviewersupport / NameDocumentListener.java
1 package eu.etaxonomy.taxeditor.prototype2.view.nameviewersupport;
2
3 import java.util.Scanner;
4
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;
13
14 import eu.etaxonomy.taxeditor.prototype2.view.NameEditorView;
15
16 /**
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.
20 *
21 * @author p.ciardelli
22 *
23 */
24 public class NameDocumentListener implements IDocumentListener {
25
26
27 /**
28 * the View on which createdRelatedName gets called in case of line breaks
29 */
30 private NameEditorView nameEditorView;
31 /**
32 * the Control after which any new related names are created
33 */
34 private Control control;
35 /**
36 * the Composite that is resized after any change
37 */
38 private Composite parent;
39
40 public NameDocumentListener(NameEditorView nameEditorView, Control control,
41 Composite parent) {
42 this.nameEditorView = nameEditorView;
43 this.control = control;
44 this.parent = parent;
45 }
46
47 public void documentAboutToBeChanged(DocumentEvent e) {
48
49 String text = e.getText();
50 System.out.println("b4: " + e.getText());
51
52 e.fText = "yo";
53 System.out.println("aft: " + e.getText());
54
55 // int length = e.getLength();
56 // int offset = e.getOffset();
57 // int docLength = e.getDocument().getLength(); // length of doc BEFORE insert
58 //
59 // if (text.contains(System.getProperty("line.separator"))) {
60 //
61 // if (offset < docLength) {
62 // remove text following insert from document,
63 // add to insert text
64 // try {
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();
70 // }
71 // }
72 //
73 //
74 //
75 // Scanner scanner = new Scanner( text );
76 // scanner.useDelimiter (System.getProperty("line.separator"));
77 //
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());
84 // else
85 // SText = nameEditorView.createRelatedName(SText, scanner.next()).
86 // getTextWidget();
87 // lastSText = SText;
88 // }
89 //
90 // SText.setFocus();
91 //
92 // // put cursor at EOL of last sourceviewer
93 // SText.setCaretOffset(SText.getText().length());
94 //
95 // }
96
97 }
98
99 public void documentChanged(DocumentEvent event) {
100
101 // System.out.println("Offset: " + event.getOffset());
102 // System.out.println("Get: " + event.getDocument().get());
103
104 String text = event.getDocument().get();
105
106 if (text.endsWith(System.getProperty("line.separator"))) {
107 event.getDocument().set(text.trim());
108 nameEditorView.createRelatedName(control,"help");
109 }
110 //
111 // int breakOffset = text.indexOf(System.getProperty("line.separator"));
112 // if (breakOffset > -1) {
113 // try {
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();
119 // }
120 // }
121
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"));
125 // try {
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();
131 // }
132 //// document.set(scanner.next());
133 //
134 // while (scanner.hasNext()) {
135 // System.out.println("Create new relname with: " + scanner.next());
136 // }
137 // }
138
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");
142
143 // parent.getParent().layout();
144 }
145 }