PageRenderTime 38ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 0ms

/src/mpv5/utils/renderer/TableCellEditorForDate.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 99 lines | 76 code | 15 blank | 8 comment | 6 complexity | dbccb352550a0c5045bb87fa266740ca MD5 | raw file
Possible License(s): LGPL-3.0, Apache-2.0, GPL-3.0, GPL-2.0, AGPL-3.0, JSON, BSD-3-Clause
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package mpv5.utils.renderer;
  6. import java.awt.event.MouseEvent;
  7. import java.util.Date;
  8. import java.util.EventObject;
  9. import javax.swing.DefaultCellEditor;
  10. import javax.swing.JTable;
  11. import javax.swing.JTextField;
  12. import javax.swing.SwingConstants;
  13. import javax.swing.SwingUtilities;
  14. import javax.swing.event.DocumentListener;
  15. import mpv5.ui.dialogs.MiniCalendarDialog;
  16. import mpv5.utils.models.MPTableModel;
  17. /**
  18. *
  19. * @author Jan Hahnisch
  20. */
  21. public class TableCellEditorForDate extends DefaultCellEditor {
  22. private static final long serialVersionUID = 1L;
  23. private final JTable tbl;
  24. private static JTextField tf = new JTextField();
  25. public TableCellEditorForDate(JTable tbl) {
  26. super(tf);
  27. this.tbl = tbl;
  28. }
  29. @Override
  30. public boolean isCellEditable(EventObject anEvent) {
  31. boolean isEditable = super.isCellEditable(anEvent);
  32. if (isEditable && anEvent instanceof MouseEvent) {
  33. delegate = new DatePickerDelegate(this, tf);
  34. } else {
  35. return false;
  36. }
  37. return isEditable;
  38. }
  39. public void setEditorTo(int i) {
  40. setClickCountToStart(1);
  41. tbl.getColumnModel().getColumn(i).setCellEditor(this);
  42. }
  43. class DatePickerDelegate extends EditorDelegate {
  44. private static final long serialVersionUID = 1L;
  45. TableCellEditorForDate cellEditor;
  46. MiniCalendarDialog datePicker;
  47. JTextField textField;
  48. DatePickerDelegate(final TableCellEditorForDate cellEditor, JTextField tf) {
  49. this.cellEditor = cellEditor;
  50. this.textField = tf;
  51. textField.getDocument().addDocumentListener(new DocumentListener() {
  52. public void insertUpdate(javax.swing.event.DocumentEvent e) {
  53. fireStopped();
  54. }
  55. public void removeUpdate(javax.swing.event.DocumentEvent e) {
  56. fireStopped();
  57. }
  58. public void changedUpdate(javax.swing.event.DocumentEvent e) {
  59. fireStopped();
  60. }
  61. });
  62. datePicker = new MiniCalendarDialog(textField, true);
  63. datePicker.setLocation(tbl.getLocationOnScreen());
  64. }
  65. @Override
  66. public void setValue(Object value) {
  67. if (value == null) {
  68. datePicker.setDate(new Date());
  69. } else {
  70. datePicker.setDate((Date) value);
  71. }
  72. datePicker.setDate((Date) value);
  73. datePicker.setVisible(true);
  74. }
  75. @Override
  76. public Object getCellEditorValue() {
  77. return datePicker.getDate();
  78. }
  79. public void fireStopped() {
  80. this.cellEditor.stopCellEditing();
  81. fireEditingStopped(); // Make the renderer reappear
  82. }
  83. }
  84. }