KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > armedbear > j > ListRegistersMode


1 /*
2  * ListRegistersMode.java
3  *
4  * Copyright (C) 2002 Peter Graves
5  * $Id: ListRegistersMode.java,v 1.1.1.1 2002/09/24 16:08:12 piso Exp $
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20  */

21
22 package org.armedbear.j;
23
24 import java.awt.event.KeyEvent JavaDoc;
25
26 public class ListRegistersMode extends AbstractMode implements Constants, Mode
27 {
28     private static final ListRegistersMode mode = new ListRegistersMode();
29
30     private ListRegistersMode()
31     {
32         super(LIST_REGISTERS_MODE, LIST_REGISTERS_MODE_NAME);
33         setProperty(Property.SHOW_LINE_NUMBERS, false);
34         setProperty(Property.SHOW_CHANGE_MARKS, false);
35         setProperty(Property.HIGHLIGHT_MATCHING_BRACKET, false);
36         setProperty(Property.HIGHLIGHT_BRACKETS, false);
37     }
38
39     public static final ListRegistersMode getMode()
40     {
41         return mode;
42     }
43
44     public Formatter getFormatter(Buffer buffer)
45     {
46         return new ListRegistersFormatter(buffer);
47     }
48
49     protected void setKeyMapDefaults(KeyMap km)
50     {
51         km.mapKey(KeyEvent.VK_ENTER, 0, "ListRegistersMode._editRegister");
52         km.mapKey(KeyEvent.VK_ENTER, CTRL_MASK,
53             "ListRegistersMode._insertRegister");
54         km.mapKey(KeyEvent.VK_G, CTRL_MASK | SHIFT_MASK,
55             "ListRegistersMode._editRegister");
56         km.mapKey(KeyEvent.VK_DELETE, 0, "ListRegistersMode._clearRegister");
57         km.mapKey(KeyEvent.VK_UP, 0, "ListRegistersMode.registerUp");
58         km.mapKey(KeyEvent.VK_KP_UP, 0, "ListRegistersMode.registerUp");
59         km.mapKey(KeyEvent.VK_DOWN, 0, "ListRegistersMode.registerDown");
60         km.mapKey(KeyEvent.VK_KP_DOWN, 0, "ListRegistersMode.registerDown");
61     }
62
63     public static final void _editRegister()
64     {
65         final Editor editor = Editor.currentEditor();
66         if (editor.getDot() == null)
67             return;
68         final Buffer buffer = editor.getBuffer();
69         if (!(buffer instanceof ListRegistersBuffer))
70             return;
71         Line line = editor.getDotLine();
72         while (!(line instanceof ListRegistersLine)) {
73             line = line.previous();
74             if (line == null)
75                 return;
76         }
77         Debug.assertTrue(line instanceof ListRegistersLine);
78         String JavaDoc name = ((ListRegistersLine)line).getRegisterName();
79         if (name != null)
80             Registers.editRegister(name);
81     }
82
83     public static final void _insertRegister()
84     {
85         final Editor editor = Editor.currentEditor();
86         final Editor other = editor.getOtherEditor();
87         if (other == null)
88             return;
89         if (editor.getDot() == null)
90             return;
91         final Buffer buffer = editor.getBuffer();
92         if (!(buffer instanceof ListRegistersBuffer))
93             return;
94         Line line = editor.getDotLine();
95         while (!(line instanceof ListRegistersLine)) {
96             line = line.previous();
97             if (line == null)
98                 return;
99         }
100         Debug.assertTrue(line instanceof ListRegistersLine);
101         String JavaDoc name = ((ListRegistersLine)line).getRegisterName();
102         if (name != null) {
103             String JavaDoc text = Registers.getText(name);
104             if (text != null)
105                 other.paste(text);
106         }
107     }
108
109     public static final void _clearRegister()
110     {
111         final Editor editor = Editor.currentEditor();
112         if (editor.getDot() == null)
113             return;
114         final Buffer buffer = editor.getBuffer();
115         if (!(buffer instanceof ListRegistersBuffer))
116             return;
117         Line line = editor.getDotLine();
118         while (!(line instanceof ListRegistersLine)) {
119             line = line.previous();
120             if (line == null)
121                 return;
122         }
123         Debug.assertTrue(line instanceof ListRegistersLine);
124         String JavaDoc name = ((ListRegistersLine)line).getRegisterName();
125         if (name != null)
126             Registers.clearRegister(name);
127     }
128
129     public static void registerDown()
130     {
131         final Editor editor = Editor.currentEditor();
132         final Buffer buffer = editor.getBuffer();
133         if (buffer instanceof ListRegistersBuffer) {
134             for (Line line = editor.getDotLine().next(); line != null; line = line.next()) {
135                 if (line instanceof ListRegistersLine &&
136                     line.getText().startsWith("Register ")) {
137                     editor.moveDotTo(line, 0);
138                     break;
139                 }
140             }
141         }
142     }
143
144     public static void registerUp()
145     {
146         final Editor editor = Editor.currentEditor();
147         final Buffer buffer = editor.getBuffer();
148         if (buffer instanceof ListRegistersBuffer) {
149             for (Line line = editor.getDotLine().previous(); line != null; line = line.previous()) {
150                 if (line instanceof ListRegistersLine &&
151                     line.getText().startsWith("Register ")) {
152                     editor.moveDotTo(line, 0);
153                     break;
154                 }
155             }
156         }
157     }
158 }
159
Popular Tags