1 21 22 package org.armedbear.j; 23 24 import java.awt.event.KeyEvent ; 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 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 name = ((ListRegistersLine)line).getRegisterName(); 102 if (name != null) { 103 String 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 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 |