1 21 22 package org.armedbear.j; 23 24 import java.awt.event.FocusEvent ; 25 import java.awt.event.FocusListener ; 26 27 public final class AliasDialog extends AbstractDialog implements FocusListener 28 { 29 private final Editor editor; 30 private final HistoryTextField keyTextField; 31 private final HistoryTextField valueTextField; 32 33 public AliasDialog(Editor editor) 34 { 35 this(editor, null); 36 } 37 38 public AliasDialog(Editor editor, String key) 39 { 40 super(editor.getFrame(), "Alias", true); 41 this.editor = editor; 42 keyTextField = new HistoryTextField(20); 43 valueTextField = new HistoryTextField(20); 44 Label label = new Label("Key:"); 45 label.setDisplayedMnemonic('K'); 46 addLabelAndTextField(label, keyTextField); 47 addVerticalStrut(); 48 label = new Label("Value:"); 49 label.setDisplayedMnemonic('V'); 50 addLabelAndTextField(label, valueTextField); 51 addVerticalStrut(); 52 addOKCancel(); 53 pack(); 54 keyTextField.addFocusListener(this); 55 if (key != null) { 56 keyTextField.setText(key); 57 String value = editor.getAlias(key); 58 if (value != null) 59 valueTextField.setText(value); 60 valueTextField.requestFocus(); 61 } else 62 keyTextField.requestFocus(); 63 } 64 65 protected void ok() 66 { 67 dispose(); 68 String key = getKey(); 69 if (Aliases.isSystemAlias(key)) 70 MessageDialog.showMessageDialog(editor, "System aliases cannot be changed.", "Error"); 71 else { 72 String value = getValue(); 73 if (value.length() == 0) 74 editor.removeAlias(key); 75 else if (value.equals("here")) 76 editor.setAliasForBuffer(key, editor.getBuffer()); 77 else 78 editor.setAlias(key, value); 79 } 80 } 81 82 private final String getKey() 83 { 84 final String key = keyTextField.getText(); 85 return key != null ? key.trim() : ""; 86 } 87 88 private final String getValue() 89 { 90 final String value = valueTextField.getText(); 91 return value != null ? value.trim() : ""; 92 } 93 94 public void focusGained(FocusEvent e) 95 { 96 } 97 98 public void focusLost(FocusEvent e) 99 { 100 String value = editor.getAlias(getKey()); 101 if (value != null) 102 valueTextField.setText(value); 103 } 104 105 public static void alias() 106 { 107 final Editor editor = Editor.currentEditor(); 108 AliasDialog d = new AliasDialog(editor); 109 editor.centerDialog(d); 110 d.show(); 111 } 112 113 public static void alias(String args) 114 { 115 final Editor editor = Editor.currentEditor(); 116 args = args.trim(); 117 final FastStringBuffer sb = new FastStringBuffer(); 118 int i = 0; 119 for (; i < args.length(); i++) { 120 char c = args.charAt(i); 121 if (Character.isWhitespace(c)) 122 break; 123 else if (c == '=') 124 break; 125 else 126 sb.append(c); 127 } 128 if (sb.length() == 0) 129 return; 130 final String key = sb.toString(); 131 boolean seenEquals = false; 132 for (; i < args.length(); i++) { 133 char c = args.charAt(i); 134 if (Character.isWhitespace(c)) 135 continue; 136 if (c == '=' && !seenEquals) 137 seenEquals = true; 138 else 139 break; 140 } 141 sb.setLength(0); 142 for (; i < args.length(); i++) 143 sb.append(args.charAt(i)); 144 String value = sb.toString(); 145 if (value.length() == 0) { 146 if (seenEquals) { 147 if (Aliases.isSystemAlias(key)) 149 MessageDialog.showMessageDialog(editor, "System aliases cannot be changed.", "Error"); 150 else 151 editor.removeAlias(key); 152 } else { 153 AliasDialog d = new AliasDialog(editor, key); 154 editor.centerDialog(d); 155 d.show(); 156 } 157 } else { 158 if (Aliases.isSystemAlias(key)) 159 MessageDialog.showMessageDialog(editor, "System aliases cannot be changed.", "Error"); 160 else if (value.equals("here")) 161 editor.setAliasForBuffer(key, editor.getBuffer()); 162 else 163 editor.setAlias(key, value); 164 } 165 } 166 } 167 | Popular Tags |