package com.hackerdude.swing.keymapper;
/*
=====================================================================
KeyStrokeField.java
Created by Claude Duguay
Copyright (c) 2000
=====================================================================
*/
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
public class KeyStrokeField extends JTextField
implements KeyListener
{
protected KeyStroke keyStroke;
public KeyStrokeField()
{
// No cut/paste inheritance.
getInputMap().setParent(null);
addKeyListener(this);
}
public static String formatKeyStroke(KeyStroke keyStroke)
{
if (keyStroke == null) return "";
int keyCode = keyStroke.getKeyCode();
int modifiers = keyStroke.getModifiers();
if (keyCode == KeyEvent.VK_SHIFT) keyCode = 0;
if (keyCode == KeyEvent.VK_CONTROL) keyCode = 0;
if (keyCode == KeyEvent.VK_ALT) keyCode = 0;
String key = keyCode == 0 ? "" : KeyEvent.getKeyText(keyCode);
String mods = KeyEvent.getKeyModifiersText(modifiers);
if (key.equalsIgnoreCase(mods)) mods = "";
if (keyCode == 0) mods = "";
if (mods.length() > 0) mods += "+";
return mods + key;
}
public KeyStroke getKeyStroke()
{
return keyStroke;
}
public void setKeyStroke(KeyStroke keyStroke)
{
this.keyStroke = keyStroke;
setText(formatKeyStroke(keyStroke));
}
public void keyTyped(KeyEvent event) {}
public void keyPressed(KeyEvent event)
{
keyStroke = KeyStroke.getKeyStrokeForEvent(event);
setText("");
}
public void keyReleased(KeyEvent event)
{
setText(formatKeyStroke(keyStroke));
}
}