Author: vsalaun Date: 2011-05-16 11:45:16 +0200 (Mon, 16 May 2011) New Revision: 3126 Url: http://chorem.org/repositories/revision/lima/3126 Log: #266 amelioration dans l'edition d'une date (selection automatique du texte) Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/celleditor/DateTableCellEditor.java Modified: trunk/lima-swing/src/main/java/org/chorem/lima/ui/celleditor/DateTableCellEditor.java =================================================================== --- trunk/lima-swing/src/main/java/org/chorem/lima/ui/celleditor/DateTableCellEditor.java 2011-05-14 11:46:09 UTC (rev 3125) +++ trunk/lima-swing/src/main/java/org/chorem/lima/ui/celleditor/DateTableCellEditor.java 2011-05-16 09:45:16 UTC (rev 3126) @@ -29,26 +29,40 @@ import org.jdesktop.swingx.JXDatePicker; import javax.swing.*; +import javax.swing.event.AncestorEvent; +import javax.swing.event.AncestorListener; import javax.swing.table.TableCellEditor; -import java.awt.*; + +import java.awt.Component; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; import java.awt.event.MouseEvent; + import java.util.Date; import java.util.EventObject; /** * @author ore */ -public class DateTableCellEditor extends AbstractCellEditor implements TableCellEditor { +public class DateTableCellEditor extends AbstractCellEditor + implements TableCellEditor, FocusListener, AncestorListener, KeyListener { private final JXDatePicker datePicker; private static final long serialVersionUID = 1L; private static DateTableCellEditor editor; + private boolean keyPressed; /** * constructor */ public DateTableCellEditor() { datePicker = new JXDatePicker(LimaContext.getContext().getConfig().getLocale()); + datePicker.getEditor().addFocusListener(this); + datePicker.getEditor().addAncestorListener(this); + datePicker.getEditor().addKeyListener(this); + keyPressed = false; } @Override @@ -75,4 +89,53 @@ } return editor; } + + /** + * Listeners + */ + public void focusGained(FocusEvent e) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + datePicker.getEditor().selectAll(); + } + }); + } + + public void focusLost(FocusEvent e) { + keyPressed = false; + } + + @Override + public void ancestorAdded(final AncestorEvent e) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + datePicker.requestFocus(); + } + }); + } + + @Override + public void ancestorRemoved(AncestorEvent e) { + } + + @Override + public void ancestorMoved(AncestorEvent e) { + } + + @Override + public void keyTyped(KeyEvent e) { + } + + @Override + public void keyPressed(KeyEvent e) { + } + + @Override + public void keyReleased(KeyEvent e) { + if (keyPressed == false) { + datePicker.getEditor().setText(String.valueOf(e.getKeyChar())); + keyPressed = true; + } + } + }