annotate test/editortest/REPTextWithJTextArea.java @ 419:7ff127c8ad64

(no commit message)
author one
date Tue, 20 Jan 2009 18:39:02 +0900
parents 267f9748e826
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
417
267f9748e826 (no commit message)
one
parents:
diff changeset
1 package test.editortest;
267f9748e826 (no commit message)
one
parents:
diff changeset
2
267f9748e826 (no commit message)
one
parents:
diff changeset
3 import java.awt.event.ActionEvent;
267f9748e826 (no commit message)
one
parents:
diff changeset
4 import java.awt.event.ActionListener;
267f9748e826 (no commit message)
one
parents:
diff changeset
5 import java.util.LinkedList;
267f9748e826 (no commit message)
one
parents:
diff changeset
6 import java.util.List;
267f9748e826 (no commit message)
one
parents:
diff changeset
7
267f9748e826 (no commit message)
one
parents:
diff changeset
8 import javax.swing.JButton;
267f9748e826 (no commit message)
one
parents:
diff changeset
9 import javax.swing.JTextArea;
267f9748e826 (no commit message)
one
parents:
diff changeset
10 import javax.swing.JTextField;
267f9748e826 (no commit message)
one
parents:
diff changeset
11 import javax.swing.event.DocumentEvent;
267f9748e826 (no commit message)
one
parents:
diff changeset
12 import javax.swing.event.DocumentListener;
267f9748e826 (no commit message)
one
parents:
diff changeset
13 import javax.swing.text.BadLocationException;
267f9748e826 (no commit message)
one
parents:
diff changeset
14
419
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
15 import rep.REPCommand;
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
16
417
267f9748e826 (no commit message)
one
parents:
diff changeset
17 public class REPTextWithJTextArea implements REPText, DocumentListener, ActionListener {
267f9748e826 (no commit message)
one
parents:
diff changeset
18
267f9748e826 (no commit message)
one
parents:
diff changeset
19 private JTextArea textArea;
267f9748e826 (no commit message)
one
parents:
diff changeset
20 private String BR = System.getProperty("line.separator");
267f9748e826 (no commit message)
one
parents:
diff changeset
21 private LinkedList<REPTextListener> textListenerList = new LinkedList<REPTextListener>();
267f9748e826 (no commit message)
one
parents:
diff changeset
22 private JTextField lineField;
267f9748e826 (no commit message)
one
parents:
diff changeset
23 private JTextField textField;
267f9748e826 (no commit message)
one
parents:
diff changeset
24 private JButton deleteButton;
267f9748e826 (no commit message)
one
parents:
diff changeset
25 private JButton insertButton;
267f9748e826 (no commit message)
one
parents:
diff changeset
26
267f9748e826 (no commit message)
one
parents:
diff changeset
27 public REPTextWithJTextArea(JTextArea textArea, JTextField lineField, JTextField textField, JButton deleteButton, JButton insertButton) {
267f9748e826 (no commit message)
one
parents:
diff changeset
28 this.textArea = textArea;
267f9748e826 (no commit message)
one
parents:
diff changeset
29 this.lineField = lineField;
267f9748e826 (no commit message)
one
parents:
diff changeset
30 this.textField = textField;
267f9748e826 (no commit message)
one
parents:
diff changeset
31 this.deleteButton = deleteButton;
267f9748e826 (no commit message)
one
parents:
diff changeset
32 this.insertButton = insertButton;
267f9748e826 (no commit message)
one
parents:
diff changeset
33 textArea.getDocument().addDocumentListener(this);
267f9748e826 (no commit message)
one
parents:
diff changeset
34 textField.addActionListener(this);
267f9748e826 (no commit message)
one
parents:
diff changeset
35 deleteButton.addActionListener(this);
267f9748e826 (no commit message)
one
parents:
diff changeset
36 insertButton.addActionListener(this);
267f9748e826 (no commit message)
one
parents:
diff changeset
37 }
267f9748e826 (no commit message)
one
parents:
diff changeset
38
267f9748e826 (no commit message)
one
parents:
diff changeset
39 public String delete(int lineno) {
267f9748e826 (no commit message)
one
parents:
diff changeset
40 for(int i = size(); i <= lineno; i++){
267f9748e826 (no commit message)
one
parents:
diff changeset
41 increaseLine();
267f9748e826 (no commit message)
one
parents:
diff changeset
42 }
267f9748e826 (no commit message)
one
parents:
diff changeset
43
267f9748e826 (no commit message)
one
parents:
diff changeset
44 String del = getLineText(lineno);
267f9748e826 (no commit message)
one
parents:
diff changeset
45 try {
267f9748e826 (no commit message)
one
parents:
diff changeset
46 int start = textArea.getLineStartOffset(lineno);
267f9748e826 (no commit message)
one
parents:
diff changeset
47 int end = textArea.getLineEndOffset(lineno);
267f9748e826 (no commit message)
one
parents:
diff changeset
48 textArea.replaceRange("", start, end);
267f9748e826 (no commit message)
one
parents:
diff changeset
49 } catch (BadLocationException e) {
267f9748e826 (no commit message)
one
parents:
diff changeset
50 e.printStackTrace();
267f9748e826 (no commit message)
one
parents:
diff changeset
51 }
267f9748e826 (no commit message)
one
parents:
diff changeset
52 return del;
267f9748e826 (no commit message)
one
parents:
diff changeset
53 }
267f9748e826 (no commit message)
one
parents:
diff changeset
54
267f9748e826 (no commit message)
one
parents:
diff changeset
55 public void insert(int lineno, String text) {
267f9748e826 (no commit message)
one
parents:
diff changeset
56 for(int i = size(); i <= lineno; i++){
267f9748e826 (no commit message)
one
parents:
diff changeset
57 increaseLine();
267f9748e826 (no commit message)
one
parents:
diff changeset
58 }
267f9748e826 (no commit message)
one
parents:
diff changeset
59
267f9748e826 (no commit message)
one
parents:
diff changeset
60 String text2 = text + BR;
267f9748e826 (no commit message)
one
parents:
diff changeset
61 try {
267f9748e826 (no commit message)
one
parents:
diff changeset
62 int offset = textArea.getLineStartOffset(lineno);
267f9748e826 (no commit message)
one
parents:
diff changeset
63 textArea.insert(text2, offset);
267f9748e826 (no commit message)
one
parents:
diff changeset
64 } catch (BadLocationException e) {
267f9748e826 (no commit message)
one
parents:
diff changeset
65 e.printStackTrace();
267f9748e826 (no commit message)
one
parents:
diff changeset
66 }
267f9748e826 (no commit message)
one
parents:
diff changeset
67 }
267f9748e826 (no commit message)
one
parents:
diff changeset
68
267f9748e826 (no commit message)
one
parents:
diff changeset
69 private void increaseLine(){
267f9748e826 (no commit message)
one
parents:
diff changeset
70 textArea.append(BR);
267f9748e826 (no commit message)
one
parents:
diff changeset
71 }
267f9748e826 (no commit message)
one
parents:
diff changeset
72
267f9748e826 (no commit message)
one
parents:
diff changeset
73 private String getLineText(int lineno){
267f9748e826 (no commit message)
one
parents:
diff changeset
74 String text = null;
267f9748e826 (no commit message)
one
parents:
diff changeset
75 try {
267f9748e826 (no commit message)
one
parents:
diff changeset
76 int start = textArea.getLineStartOffset(lineno);
267f9748e826 (no commit message)
one
parents:
diff changeset
77 int end = textArea.getLineEndOffset(lineno);
267f9748e826 (no commit message)
one
parents:
diff changeset
78 text = textArea.getText(start, end-start);
267f9748e826 (no commit message)
one
parents:
diff changeset
79 String text2 = text.replace(BR, "");
267f9748e826 (no commit message)
one
parents:
diff changeset
80 text = text2;
267f9748e826 (no commit message)
one
parents:
diff changeset
81 } catch (BadLocationException e) {
267f9748e826 (no commit message)
one
parents:
diff changeset
82 e.printStackTrace();
267f9748e826 (no commit message)
one
parents:
diff changeset
83 }
267f9748e826 (no commit message)
one
parents:
diff changeset
84 return text;
267f9748e826 (no commit message)
one
parents:
diff changeset
85 }
267f9748e826 (no commit message)
one
parents:
diff changeset
86
267f9748e826 (no commit message)
one
parents:
diff changeset
87 public int size() {
267f9748e826 (no commit message)
one
parents:
diff changeset
88 return textArea.getLineCount();
267f9748e826 (no commit message)
one
parents:
diff changeset
89 }
267f9748e826 (no commit message)
one
parents:
diff changeset
90
267f9748e826 (no commit message)
one
parents:
diff changeset
91 public String get(int i) {
267f9748e826 (no commit message)
one
parents:
diff changeset
92 return getLineText(i);
267f9748e826 (no commit message)
one
parents:
diff changeset
93 }
267f9748e826 (no commit message)
one
parents:
diff changeset
94
267f9748e826 (no commit message)
one
parents:
diff changeset
95 public List<String> list() {
267f9748e826 (no commit message)
one
parents:
diff changeset
96 LinkedList<String> list = new LinkedList<String>();
267f9748e826 (no commit message)
one
parents:
diff changeset
97 for(int i = 0; i < size(); i++){
267f9748e826 (no commit message)
one
parents:
diff changeset
98 list.add(getLineText(i));
267f9748e826 (no commit message)
one
parents:
diff changeset
99 }
267f9748e826 (no commit message)
one
parents:
diff changeset
100 return list;
267f9748e826 (no commit message)
one
parents:
diff changeset
101 }
267f9748e826 (no commit message)
one
parents:
diff changeset
102
267f9748e826 (no commit message)
one
parents:
diff changeset
103 public void addTextListener(REPTextListener listener) {
267f9748e826 (no commit message)
one
parents:
diff changeset
104 textListenerList.add(listener);
267f9748e826 (no commit message)
one
parents:
diff changeset
105 }
267f9748e826 (no commit message)
one
parents:
diff changeset
106
267f9748e826 (no commit message)
one
parents:
diff changeset
107 public void changedUpdate(DocumentEvent e) {
267f9748e826 (no commit message)
one
parents:
diff changeset
108 Logger.print(e);
267f9748e826 (no commit message)
one
parents:
diff changeset
109 }
267f9748e826 (no commit message)
one
parents:
diff changeset
110
267f9748e826 (no commit message)
one
parents:
diff changeset
111 public void insertUpdate(DocumentEvent e) {
267f9748e826 (no commit message)
one
parents:
diff changeset
112 Logger.print(e);
267f9748e826 (no commit message)
one
parents:
diff changeset
113
267f9748e826 (no commit message)
one
parents:
diff changeset
114 }
267f9748e826 (no commit message)
one
parents:
diff changeset
115
267f9748e826 (no commit message)
one
parents:
diff changeset
116 public void removeUpdate(DocumentEvent e) {
267f9748e826 (no commit message)
one
parents:
diff changeset
117 Logger.print(e);
267f9748e826 (no commit message)
one
parents:
diff changeset
118 }
267f9748e826 (no commit message)
one
parents:
diff changeset
119
267f9748e826 (no commit message)
one
parents:
diff changeset
120 public void actionPerformed(ActionEvent e) {
267f9748e826 (no commit message)
one
parents:
diff changeset
121 if(e.getSource() == textField){
267f9748e826 (no commit message)
one
parents:
diff changeset
122 userInsert();
267f9748e826 (no commit message)
one
parents:
diff changeset
123 textField.setText("");
267f9748e826 (no commit message)
one
parents:
diff changeset
124 }else if(e.getSource() == deleteButton){
267f9748e826 (no commit message)
one
parents:
diff changeset
125 userDelete();
267f9748e826 (no commit message)
one
parents:
diff changeset
126 }else if(e.getSource() == insertButton){
267f9748e826 (no commit message)
one
parents:
diff changeset
127 userInsert();
267f9748e826 (no commit message)
one
parents:
diff changeset
128 }
267f9748e826 (no commit message)
one
parents:
diff changeset
129 }
267f9748e826 (no commit message)
one
parents:
diff changeset
130
267f9748e826 (no commit message)
one
parents:
diff changeset
131 private void userDelete() {
267f9748e826 (no commit message)
one
parents:
diff changeset
132 int lineno = 0;
267f9748e826 (no commit message)
one
parents:
diff changeset
133 try {
267f9748e826 (no commit message)
one
parents:
diff changeset
134 lineno = Integer.parseInt((lineField.getText()));
267f9748e826 (no commit message)
one
parents:
diff changeset
135 if(lineno < 0) lineno = 0;
267f9748e826 (no commit message)
one
parents:
diff changeset
136 }catch(NumberFormatException e){}
267f9748e826 (no commit message)
one
parents:
diff changeset
137
267f9748e826 (no commit message)
one
parents:
diff changeset
138 String del = delete(lineno);
267f9748e826 (no commit message)
one
parents:
diff changeset
139 for(REPTextListener listener : textListenerList){
267f9748e826 (no commit message)
one
parents:
diff changeset
140 listener.textDeleted(new REPTextEvent(lineno, del));
267f9748e826 (no commit message)
one
parents:
diff changeset
141 }
267f9748e826 (no commit message)
one
parents:
diff changeset
142 }
267f9748e826 (no commit message)
one
parents:
diff changeset
143
267f9748e826 (no commit message)
one
parents:
diff changeset
144 private void userInsert() {
267f9748e826 (no commit message)
one
parents:
diff changeset
145 int lineno;
267f9748e826 (no commit message)
one
parents:
diff changeset
146 try {
267f9748e826 (no commit message)
one
parents:
diff changeset
147 lineno = Integer.parseInt((lineField.getText()));
267f9748e826 (no commit message)
one
parents:
diff changeset
148 }catch(NumberFormatException e){
267f9748e826 (no commit message)
one
parents:
diff changeset
149 lineno = 0;
267f9748e826 (no commit message)
one
parents:
diff changeset
150 }
267f9748e826 (no commit message)
one
parents:
diff changeset
151 String text = textField.getText();
267f9748e826 (no commit message)
one
parents:
diff changeset
152 insert(lineno, text);
267f9748e826 (no commit message)
one
parents:
diff changeset
153 for(REPTextListener listener : textListenerList){
267f9748e826 (no commit message)
one
parents:
diff changeset
154 listener.textInserted(new REPTextEvent(lineno, text));
267f9748e826 (no commit message)
one
parents:
diff changeset
155 }
267f9748e826 (no commit message)
one
parents:
diff changeset
156 }
419
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
157
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
158 public void userInsert(REPCommand command) {
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
159 int lineno = command.lineno;
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
160 String text = command.string;
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
161 insert(lineno, text);
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
162 for(REPTextListener listener : textListenerList){
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
163 listener.textInserted(new REPTextEvent(lineno, text));
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
164 }
7ff127c8ad64 (no commit message)
one
parents: 417
diff changeset
165 }
417
267f9748e826 (no commit message)
one
parents:
diff changeset
166
267f9748e826 (no commit message)
one
parents:
diff changeset
167 }