Mercurial > hg > jslab
diff src/samer/core_/util/swing/CommandField.java @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/samer/core_/util/swing/CommandField.java Tue Jan 17 17:50:20 2012 +0000 @@ -0,0 +1,56 @@ +/* + * CommandField.java + * + * Copyright (c) 2000, Samer Abdallah, King's College London. + * All rights reserved. + * + * This software is provided AS iS and WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +package samer.core.util.swing; +import samer.core.*; +import java.awt.*; +import java.awt.event.*; +import java.io.*; +import javax.swing.*; + +public class CommandField extends JTextField +{ + public CommandField(int w) + { + super(w); + + setBackground( X.color(Shell.datum("swing.input.console.background"), Color.white)); + setForeground( X.color(Shell.datum("swing.input.console.foreground"), Color.black)); + Font font=X.font(Shell.datum("swing.input.console.font"),null); + if (font!=null) setFont(font); + addActionListener(h); + addKeyListener(h); + } + + static Handler h = new Handler(); + static class Handler extends KeyAdapter implements ActionListener, java.io.Serializable + { + String last; + + public void actionPerformed(ActionEvent e) { + Object o = e.getSource(); + JTextField tc = ((JTextField)o); + last=tc.getText(); + Shell.print("> "+last); + Shell.interpret(new StringReader(last)); + tc.setText(""); + } + + public void keyPressed(KeyEvent e) { + if (e.getKeyCode()==KeyEvent.VK_UP) { + Object o = e.getSource(); + JTextField tc = ((JTextField)o); + tc.setText(last); + } + } + } +} +