r2342 - in trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing: . editor editor/cell
Author: sletellier Date: 2012-06-27 13:45:58 +0200 (Wed, 27 Jun 2012) New Revision: 2342 Url: http://nuiton.org/repositories/revision/jaxx/2342 Log: fixes #2145 : Add numberCellEditor using NumberEditor Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/DateCellEditor.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/FileCellEditor.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/NumberCellEditor.java Removed: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/DateCellEditor.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileCellEditor.java Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXWidgetUtil.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/NumberEditorHandler.java Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXWidgetUtil.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXWidgetUtil.java 2012-06-27 10:14:52 UTC (rev 2341) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/JAXXWidgetUtil.java 2012-06-27 11:45:58 UTC (rev 2342) @@ -26,8 +26,9 @@ import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.editor.DateCellEditor; -import jaxx.runtime.swing.editor.FileCellEditor; +import jaxx.runtime.swing.editor.cell.DateCellEditor; +import jaxx.runtime.swing.editor.cell.FileCellEditor; +import jaxx.runtime.swing.editor.cell.NumberCellEditor; import jaxx.runtime.swing.renderer.DateCellRenderer; /** @@ -50,4 +51,8 @@ public static TableCellEditor newFileTableCellEditor() { return new FileCellEditor(); } + + public static <E> NumberCellEditor<E> newNumberTableCellEditor(Class<E> type, boolean useSign) { + return new NumberCellEditor<E>(type, useSign); + } } Deleted: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/DateCellEditor.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/DateCellEditor.java 2012-06-27 10:14:52 UTC (rev 2341) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/DateCellEditor.java 2012-06-27 11:45:58 UTC (rev 2342) @@ -1,55 +0,0 @@ -/* - * #%L - * JAXX :: Widgets - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2008 - 2012 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ -package jaxx.runtime.swing.editor; - -import java.awt.Component; -import java.util.Date; -import javax.swing.AbstractCellEditor; -import javax.swing.JTable; -import javax.swing.table.TableCellEditor; -import jaxx.runtime.swing.JAXXDatePicker; - -/** - * @author sletellier <letellier@codelutin.com> - */ -public class DateCellEditor extends AbstractCellEditor - implements TableCellEditor { - - protected JAXXDatePicker datePicker; - - public DateCellEditor() { - datePicker = new JAXXDatePicker(); - } - - @Override - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - datePicker.setDate((Date) value); - return datePicker; - } - - @Override - public Object getCellEditorValue() { - return datePicker.getDate(); - } -} \ No newline at end of file Deleted: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileCellEditor.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileCellEditor.java 2012-06-27 10:14:52 UTC (rev 2341) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/FileCellEditor.java 2012-06-27 11:45:58 UTC (rev 2342) @@ -1,54 +0,0 @@ -/* - * #%L - * JAXX :: Widgets - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2008 - 2012 CodeLutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ -package jaxx.runtime.swing.editor; - -import java.awt.Component; -import java.io.File; -import javax.swing.AbstractCellEditor; -import javax.swing.JTable; -import javax.swing.table.TableCellEditor; - -/** - * @author sletellier <letellier@codelutin.com> - */ -public class FileCellEditor extends AbstractCellEditor - implements TableCellEditor { - - protected FileEditor fileEditor; - - public FileCellEditor() { - fileEditor = new FileEditor(); - } - - @Override - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - fileEditor.setSelectedFile((File)value); - return fileEditor; - } - - @Override - public Object getCellEditorValue() { - return fileEditor.getSelectedFile(); - } -} Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/NumberEditorHandler.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/NumberEditorHandler.java 2012-06-27 10:14:52 UTC (rev 2341) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/NumberEditorHandler.java 2012-06-27 11:45:58 UTC (rev 2342) @@ -160,7 +160,9 @@ // Determine si c'est un float Class<?> type = editor.getModelType(); if (editor.getModelType() == null) { - type = getGetter().getReturnType(); + if (editor.getBean() != null) { + type = getGetter().getReturnType(); + } } modelType = type; if (log.isDebugEnabled()) { @@ -171,8 +173,10 @@ // Initialise le model if (editor.getModel() == null) { - Number num = (Number) getGetter().invoke(editor.getBean()); - editor.setModel(num); + if (editor.getBean() != null) { + Number num = (Number) getGetter().invoke(editor.getBean()); + editor.setModel(num); + } } /*if (editor.getResetButton().getIcon() == null) { Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/DateCellEditor.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/DateCellEditor.java (rev 0) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/DateCellEditor.java 2012-06-27 11:45:58 UTC (rev 2342) @@ -0,0 +1,55 @@ +/* + * #%L + * JAXX :: Widgets + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2008 - 2012 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package jaxx.runtime.swing.editor.cell; + +import java.awt.Component; +import java.util.Date; +import javax.swing.AbstractCellEditor; +import javax.swing.JTable; +import javax.swing.table.TableCellEditor; +import jaxx.runtime.swing.JAXXDatePicker; + +/** + * @author sletellier <letellier@codelutin.com> + */ +public class DateCellEditor extends AbstractCellEditor + implements TableCellEditor { + + protected JAXXDatePicker datePicker; + + public DateCellEditor() { + datePicker = new JAXXDatePicker(); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + datePicker.setDate((Date) value); + return datePicker; + } + + @Override + public Object getCellEditorValue() { + return datePicker.getDate(); + } +} \ No newline at end of file Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/FileCellEditor.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/FileCellEditor.java (rev 0) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/FileCellEditor.java 2012-06-27 11:45:58 UTC (rev 2342) @@ -0,0 +1,55 @@ +/* + * #%L + * JAXX :: Widgets + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2008 - 2012 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package jaxx.runtime.swing.editor.cell; + +import java.awt.Component; +import java.io.File; +import javax.swing.AbstractCellEditor; +import javax.swing.JTable; +import javax.swing.table.TableCellEditor; +import jaxx.runtime.swing.editor.FileEditor; + +/** + * @author sletellier <letellier@codelutin.com> + */ +public class FileCellEditor extends AbstractCellEditor + implements TableCellEditor { + + protected FileEditor fileEditor; + + public FileCellEditor() { + fileEditor = new FileEditor(); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + fileEditor.setSelectedFile((File)value); + return fileEditor; + } + + @Override + public Object getCellEditorValue() { + return fileEditor.getSelectedFile(); + } +} Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/NumberCellEditor.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/NumberCellEditor.java (rev 0) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/cell/NumberCellEditor.java 2012-06-27 11:45:58 UTC (rev 2342) @@ -0,0 +1,86 @@ +package jaxx.runtime.swing.editor.cell; + +import java.awt.Component; +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; +import javax.swing.AbstractCellEditor; +import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.SwingUtilities; +import javax.swing.event.AncestorEvent; +import javax.swing.event.AncestorListener; +import javax.swing.table.TableCellEditor; +import jaxx.runtime.swing.editor.NumberEditor; + +/** + * @author sletellier <letellier@codelutin.com> + */ +public class NumberCellEditor<E extends Number> extends AbstractCellEditor + implements TableCellEditor, FocusListener, AncestorListener { + + private static final long serialVersionUID = 1L; + + protected final NumberEditor numberEditor; + + /** constructor */ + public NumberCellEditor(Class<E> type, boolean useSign) { + numberEditor = new NumberEditor(); + numberEditor.getTextField().setHorizontalAlignment(SwingConstants.RIGHT); + numberEditor.getTextField().setBorder(null); + numberEditor.getTextField().addFocusListener(this); + numberEditor.getTextField().addAncestorListener(this); + + numberEditor.setModelType(type); + + numberEditor.setUseSign(useSign); + numberEditor.init(); + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, + boolean isSelected, int row, int column) { + + // FIXME sletellier 20120105 : we dont need to set modelText + E bd = (E) value; + numberEditor.setModel(bd); + numberEditor.setModelText(String.valueOf(bd)); + return numberEditor; + } + + @Override + public E getCellEditorValue() { + return (E)numberEditor.getModel(); + } + + @Override + public void focusGained(FocusEvent e) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + numberEditor.getTextField().requestFocus(); + numberEditor.getTextField().selectAll(); + } + }); + } + + @Override + public void focusLost(FocusEvent e) { + } + + @Override + public void ancestorAdded(AncestorEvent event) { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + numberEditor.getTextField().requestFocus(); + numberEditor.getTextField().selectAll(); + } + }); + } + + @Override + public void ancestorRemoved(AncestorEvent event) { + } + + @Override + public void ancestorMoved(AncestorEvent event) { + } +}
participants (1)
-
sletellier@users.nuiton.org