package implementation.source.java.nodes; import java.awt.Font; import edu.umd.cs.piccolo.PNode; import edu.umd.cs.piccolo.event.PBasicInputEventHandler; import edu.umd.cs.piccolo.event.PInputEvent; import edu.umd.cs.piccolo.nodes.PText; public class TypingActionHandler extends PBasicInputEventHandler { final static int BACKSPACE = 8; final static int ARROW_LEFT = 37; final static int ARROW_RIGHT = 39; PText l; int caretIndex; public TypingActionHandler(PText label) { l = label; caretIndex = l.getText().length(); } public void mousePressed(PInputEvent e) { e.getInputManager().setKeyboardFocus(e.getPath()); } public void keyboardFocusGained(PInputEvent e) { l.setFont(new Font("SelectedText", Font.BOLD, l.getFont().getSize())); char newChar[] = {'|'}; l.setText(l.getText().concat(new String(newChar))); } public void keyboardFocusLost(PInputEvent e) { PNode node = l.getParent(); String text = l.getText(); l.setText(text.substring(0, text.length() == 0 ? 0 : text.length() - 1)); l.setFont(new Font("UnselectedText", 0, l.getFont().getSize())); l.setX(node.getX() + (node.getWidth() / 2) - (l.getWidth() / 2)); l.setY(node.getY() + (node.getHeight() / 2) - (l.getHeight() / 2)); } public void keyTyped(PInputEvent e) { if (e.getKeyChar() == BACKSPACE) { l.setText(l.getText().substring(0, l.getText().length() == 0 ? 0 : l.getText().length() - 2)); } else { l.setText(l.getText().substring(0, l.getText().length() == 0 ? 0 : l.getText().length() - 1)); char newChar[] = {e.getKeyChar()}; l.setText(l.getText().concat(new String(newChar))); //Integer i = new Integer(e.getKeyChar()); //l.setText(i.toString()); } char newChar[] = {'|'}; l.setText(l.getText().concat(new String(newChar))); } public void keyPressed(PInputEvent e) { if (e.getKeyCode() == ARROW_LEFT) { } else if (e.getKeyCode() == ARROW_RIGHT) { } //Integer i = new Integer(e.getKeyCode()); //l.setText(i.toString()); } }