This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository jaxx. See http://git.nuiton.org/jaxx.git commit 13a6581dde15969d9cf2ecb686be3169faf86335 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Nov 29 14:27:06 2014 +0100 fixes #3583: Pass a predicate to BooleanCellRenderer --- .../src/main/java/jaxx/runtime/SwingUtil.java | 6 +++ .../swing/renderer/BooleanCellRenderer.java | 46 +++++++++++++++++----- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java b/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java index a9911a6..3168bbe 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/SwingUtil.java @@ -21,6 +21,7 @@ */ package jaxx.runtime; +import com.google.common.base.Predicate; import jaxx.runtime.swing.Item; import jaxx.runtime.swing.JAXXComboBox; import jaxx.runtime.swing.editor.BooleanCellEditor; @@ -1032,6 +1033,11 @@ public class SwingUtil extends JAXXUtil { return new BooleanCellRenderer(renderer); } + public static TableCellRenderer newBooleanTableCellRenderer( + TableCellRenderer renderer, Predicate<?> predicate) { + return new BooleanCellRenderer(renderer, predicate); + } + public static TableCellRenderer newBooleanTableCellEditorAndRenderer( TableCellRenderer renderer) { return new BooleanCellEditor(renderer); diff --git a/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/BooleanCellRenderer.java b/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/BooleanCellRenderer.java index d35759c..e62383e 100644 --- a/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/BooleanCellRenderer.java +++ b/jaxx-runtime/src/main/java/jaxx/runtime/swing/renderer/BooleanCellRenderer.java @@ -21,6 +21,8 @@ */ package jaxx.runtime.swing.renderer; +import com.google.common.base.Predicate; + import javax.swing.Icon; import javax.swing.JCheckBox; import javax.swing.JComponent; @@ -39,25 +41,46 @@ public class BooleanCellRenderer extends JPanel implements TableCellRenderer { private static final long serialVersionUID = 1L; - protected TableCellRenderer defaultDelegate; + protected final TableCellRenderer defaultDelegate; + + protected final JCheckBox checkBox; + + private final Predicate predicate; + + private static final Predicate<Object> DEFAULT_PREDICATE = new Predicate<Object>() { + @Override + public boolean apply(Object input) { + return (input != null && (Boolean) input); + } + }; - protected JCheckBox checkBox; + public BooleanCellRenderer(TableCellRenderer delegate, Predicate<?> predicate) { + this(delegate, new JCheckBox(), predicate); + } public BooleanCellRenderer(TableCellRenderer delegate) { //super(new BorderLayout()); - this.checkBox = new JCheckBox(); - checkBox.setHorizontalAlignment(JLabel.CENTER); - checkBox.setBorderPainted(true); - this.defaultDelegate = delegate; + this(delegate, DEFAULT_PREDICATE); + + } + + public BooleanCellRenderer(TableCellRenderer delegate, Icon icon, Predicate<?> predicate) { + this(delegate, new JCheckBox(icon), predicate); } public BooleanCellRenderer(TableCellRenderer delegate, Icon icon) { //super(new BorderLayout()); - this.checkBox = new JCheckBox(icon); - checkBox.setHorizontalAlignment(JLabel.CENTER); + this(delegate, icon, DEFAULT_PREDICATE); checkBox.setVerticalTextPosition(JLabel.TOP); - checkBox.setBorderPainted(true); + + } + + public BooleanCellRenderer(TableCellRenderer delegate, JCheckBox checkBox, Predicate<?> predicate) { this.defaultDelegate = delegate; + this.predicate = predicate; + this.checkBox = checkBox; + this.checkBox.setBorderPainted(true); + this.checkBox.setHorizontalAlignment(JLabel.CENTER); } @Override @@ -75,7 +98,10 @@ public class BooleanCellRenderer extends JPanel implements TableCellRenderer { setBackground(Color.WHITE); } } - checkBox.setSelected((value != null && (Boolean) value)); + + boolean selectCheckBox = predicate.apply(value); + checkBox.setSelected(selectCheckBox); + setBorder(render.getBorder()); return checkBox; } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.