KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * AliasDialog.java
3  *
4  * Copyright (C) 1998-2003 Peter Graves
5  * $Id: AliasDialog.java,v 1.2 2003/07/24 15:08:00 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.FocusEvent JavaDoc;
25 import java.awt.event.FocusListener JavaDoc;
26
27 public final class AliasDialog extends AbstractDialog implements FocusListener JavaDoc
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 JavaDoc 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 JavaDoc 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 JavaDoc key = getKey();
69         if (Aliases.isSystemAlias(key))
70             MessageDialog.showMessageDialog(editor, "System aliases cannot be changed.", "Error");
71         else {
72             String JavaDoc 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 JavaDoc getKey()
83     {
84         final String JavaDoc key = keyTextField.getText();
85         return key != null ? key.trim() : "";
86     }
87
88     private final String JavaDoc getValue()
89     {
90         final String JavaDoc value = valueTextField.getText();
91         return value != null ? value.trim() : "";
92     }
93
94     public void focusGained(FocusEvent JavaDoc e)
95     {
96     }
97
98     public void focusLost(FocusEvent JavaDoc e)
99     {
100         String JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc value = sb.toString();
145         if (value.length() == 0) {
146             if (seenEquals) {
147                 // Unset alias.
148
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