annotate test/editortest/REPTextWithJTextArea.java @ 417:267f9748e826

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