package de.cismet.beanmill;
import org.apache.log4j.Logger;
import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JDialog;
private static final transient Logger LOG = Logger.getLogger(
ChooseHotkeyDialog.class);
private int hotkey;
private String hkSubstitute;
private javax.swing.JLabel lblHotKey;
super(parent, null, true);
init();
}
super(parent, true);
init();
}
if (LOG.isDebugEnabled()) {
LOG.debug("init");
}
initComponents();
this.addKeyListener(new KeyListener() {
private boolean pressed;
private int pressedKey;
@Override
public void keyTyped(
final KeyEvent e) {
if (LOG.isDebugEnabled()) {
LOG.debug("typed key: " + e.getKeyChar());
}
pressed = false;
pressedKey = -1;
}
@Override
if (LOG.isDebugEnabled()) {
LOG.debug("pressed key: " + e.getKeyCode());
}
if (!pressed) {
pressedKey = e.getKeyCode();
pressed = true;
}
}
@Override
if (LOG.isDebugEnabled()) {
LOG.debug("released key: " + e.getKeyCode());
}
if (pressedKey == e.getKeyCode()) {
pressed = false;
setHotkey(e, false);
}
}
});
}
private void setHotkey(
final KeyEvent e,
final boolean typed) {
if (typed) {
if (LOG.isDebugEnabled()) {
LOG.debug("key was typed: " + e);
}
hotkey = e.getKeyChar();
hkSubstitute = String.valueOf(e.getKeyChar());
} else if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
if (LOG.isDebugEnabled()) {
LOG.debug("escape was used, will not be set as hotkey: " + e);
}
hotkey = -1;
hkSubstitute = null;
} else {
if (LOG.isDebugEnabled()) {
LOG.debug("special key was used: " + e);
}
hotkey = e.getKeyCode();
hkSubstitute = KeyEvent.getKeyText(hotkey);
}
setVisible(false);
}
if (LOG.isDebugEnabled()) {
LOG.debug("showHKDialog with parent " + parent);
}
final ChooseHotkeyDialog dialog = new ChooseHotkeyDialog(parent);
dialog.displayDialog();
return dialog;
}
if (LOG.isDebugEnabled()) {
LOG.debug("showHKDialog with parent " + parent);
}
final ChooseHotkeyDialog dialog = new ChooseHotkeyDialog(parent);
dialog.displayDialog();
return dialog;
}
return hotkey;
}
return hkSubstitute;
}
pack();
final Point parentLoc = getParent().getLocation();
final Dimension parentDim = getParent().getSize();
setLocation(parentLoc.x + (parentDim.width / 2) - (getWidth() / 2),
parentLoc.y
+ (parentDim.height / 2)
- (getHeight() / 2));
setVisible(true);
final Thread t = new Thread(new Runnable() {
@Override
try {
while (hotkey == 0) {
Thread.sleep(100);
}
} catch (final InterruptedException ex) {
LOG.error("thread was interrupted while sleeping", ex);
}
}
});
t.start();
try {
t.join();
} catch (final InterruptedException ex) {
LOG.error("thread was interrupted while joining", ex);
}
}
@SuppressWarnings("unchecked")
lblHotKey = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setMinimumSize(new java.awt.Dimension(200, 100));
setModal(true);
setResizable(false);
setUndecorated(true);
lblHotKey.setFont(new java.awt.Font("Lucida Grande", 0, 14));
lblHotKey.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblHotKey.setText(org.openide.util.NbBundle.getMessage(
ChooseHotkeyDialog.class,
"ChooseHotkeyDialog.lblHotKey.text"));
lblHotKey.setMinimumSize(new java.awt.Dimension(200, 100));
lblHotKey.setPreferredSize(new java.awt.Dimension(200, 100));
getContentPane().add(lblHotKey, java.awt.BorderLayout.CENTER);
pack();
}
}