r568 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment
Author: echatellier Date: 2014-08-18 14:22:27 +0200 (Mon, 18 Aug 2014) New Revision: 568 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/568 Log: Fix NPE with focus management Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java 2014-08-18 10:48:40 UTC (rev 567) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUIHandler.java 2014-08-18 12:22:27 UTC (rev 568) @@ -43,6 +43,8 @@ import org.jdesktop.swingx.decorator.HighlighterFactory; import java.awt.Component; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; @@ -229,15 +231,26 @@ } } - protected class AttachmentItemEditor extends AbstractCellEditor implements TableCellEditor { + protected class AttachmentItemEditor extends AbstractCellEditor implements TableCellEditor, ActionListener { protected AttachmentItem attachmentItem; public AttachmentItemEditor() { attachmentItem = new AttachmentItem(); attachmentItem.setHandler(AttachmentEditorUIHandler.this); + + // add action listener to stopCellEditing when a button is clicked + // this prevent strange NPE with focus change + attachmentItem.getOpenAttachmentButton().addActionListener(this); + attachmentItem.getEditAttachmentButton().addActionListener(this); } + @Override + public void actionPerformed(ActionEvent e) { + // stop cell editing when open or edit button is clicked + stopCellEditing(); + } + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { Attachment attachment = (Attachment) value; @@ -245,7 +258,7 @@ if (attachment != null) { JLabel label = attachmentItem.getAttachmentNameLabel(); - String actionIconName = Boolean.TRUE.equals(attachment.isAddedByUser()) ? "user" : "email"; + String actionIconName = attachment.isAddedByUser() ? "user" : "email"; Icon icon = SwingUtil.createActionIcon(actionIconName); label.setIcon(icon); } @@ -259,7 +272,6 @@ public Object getCellEditorValue() { return attachmentItem.getAttachment(); } - } }
participants (1)
-
echatellier@users.forge.codelutin.com