r2340 - trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer
Author: sletellier Date: 2012-06-25 19:06:30 +0200 (Mon, 25 Jun 2012) New Revision: 2340 Url: http://nuiton.org/repositories/revision/jaxx/2340 Log: - Fix BooleanCellEditor display - Fix npe Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/BooleanCellEditor.java trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/BooleanCellEditor.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/BooleanCellEditor.java 2012-06-25 11:31:31 UTC (rev 2339) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/BooleanCellEditor.java 2012-06-25 17:06:30 UTC (rev 2340) @@ -24,7 +24,6 @@ */ package jaxx.runtime.swing.renderer; -import java.awt.Color; import java.awt.Component; import javax.swing.AbstractCellEditor; import javax.swing.Icon; @@ -34,6 +33,7 @@ import javax.swing.JTable; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; +import org.jdesktop.swingx.JXTable; /** * @author tchemit <chemit@codelutin.com> @@ -43,53 +43,41 @@ private static final long serialVersionUID = 1L; - protected TableCellRenderer defaultDelegate; + protected TableCellRenderer rendererDelegate; + protected TableCellEditor editorDelegate; - protected JCheckBox checkBox; + protected Icon icon; public BooleanCellEditor(TableCellRenderer delegate) { - //super(new BorderLayout()); - this.checkBox = new JCheckBox(); - checkBox.setHorizontalAlignment(JLabel.CENTER); - checkBox.setBorderPainted(true); - this.defaultDelegate = delegate; + this(delegate, null); } public BooleanCellEditor(TableCellRenderer delegate, Icon icon) { - //super(new BorderLayout()); - this.checkBox = new JCheckBox(icon); - checkBox.setHorizontalAlignment(JLabel.CENTER); - checkBox.setVerticalTextPosition(JLabel.TOP); - checkBox.setBorderPainted(true); - this.defaultDelegate = delegate; + this.rendererDelegate = delegate; + this.editorDelegate = new JXTable.BooleanEditor(); + this.icon = icon; } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { - JComponent render = (JComponent) defaultDelegate.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); - if (isSelected) { - checkBox.setForeground(table.getSelectionForeground()); - checkBox.setBackground(table.getSelectionBackground()); - } else { - checkBox.setForeground(render.getForeground()); - checkBox.setBackground(render.getBackground()); - //fixme make this works... and remove the test - if (row % 2 == 1) { - checkBox.setBackground(Color.WHITE); - } + JComponent rendered = (JComponent) rendererDelegate.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + if (rendered instanceof JCheckBox) { + JCheckBox checkBox = (JCheckBox)rendered; + checkBox.setHorizontalAlignment(JLabel.CENTER); + checkBox.setVerticalTextPosition(JLabel.TOP); + checkBox.setBorderPainted(true); + checkBox.setIcon(icon); } - checkBox.setSelected((value != null && (Boolean) value)); - checkBox.setBorder(render.getBorder()); - return checkBox; + return rendered; } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - return getTableCellRendererComponent(table, value, isSelected, true, row, column); + return editorDelegate.getTableCellEditorComponent(table, value, isSelected, row, column); } @Override public Object getCellEditorValue() { - return checkBox.isSelected(); + return editorDelegate.getCellEditorValue(); } } Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java 2012-06-25 11:31:31 UTC (rev 2339) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java 2012-06-25 17:06:30 UTC (rev 2340) @@ -65,7 +65,7 @@ if (value == null) { value = " "; } - if (!(value instanceof String)) { + if (!(value instanceof String) && decorator != null) { value = decorator.toString(value); } return delegate.getListCellRendererComponent(list,
participants (1)
-
sletellier@users.nuiton.org