This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 6163df796d4b38551018ee2c5df756555e3fec48 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Aug 14 12:32:30 2015 +0200 Correction du fond d'un renderer de boolean (refs #6710) --- .../src/main/java/fr/ird/observe/ui/UIHelper.java | 6 ++ .../table/ObserveBooleanTableCellRenderer.java | 78 ++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/UIHelper.java b/observe-swing/src/main/java/fr/ird/observe/ui/UIHelper.java index ab08ea9..38fef86 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/UIHelper.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/UIHelper.java @@ -23,6 +23,7 @@ package fr.ird.observe.ui; import fr.ird.observe.DecoratorService; import fr.ird.observe.ObserveContext; +import fr.ird.observe.ui.util.table.ObserveBooleanTableCellRenderer; import jaxx.runtime.FileChooserUtil; import jaxx.runtime.JAXXObject; import jaxx.runtime.SwingUtil; @@ -454,4 +455,9 @@ public class UIHelper extends SwingUtil { cellEditor.cancelCellEditing(); } } + + public static TableCellRenderer newBooleanTableCellRenderer( + TableCellRenderer renderer) { + return new ObserveBooleanTableCellRenderer(renderer); + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/util/table/ObserveBooleanTableCellRenderer.java b/observe-swing/src/main/java/fr/ird/observe/ui/util/table/ObserveBooleanTableCellRenderer.java new file mode 100644 index 0000000..ae8c7ad --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/util/table/ObserveBooleanTableCellRenderer.java @@ -0,0 +1,78 @@ +package fr.ird.observe.ui.util.table; + +import com.google.common.base.Predicate; + +import javax.swing.Icon; +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.table.TableCellRenderer; +import java.awt.Color; +import java.awt.Component; + +/** + * TODO A remonter dans JAXX. + * + * Created on 14/08/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0.1.1 + */ +public class ObserveBooleanTableCellRenderer extends JCheckBox implements TableCellRenderer { + + private static final long serialVersionUID = 1L; + + protected final TableCellRenderer defaultDelegate; + + 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); + } + }; + + public ObserveBooleanTableCellRenderer(TableCellRenderer delegate, Predicate<?> predicate) { + this(delegate, null, predicate); + } + + public ObserveBooleanTableCellRenderer(TableCellRenderer delegate) { + //super(new BorderLayout()); + this(delegate, DEFAULT_PREDICATE); + + } + + public ObserveBooleanTableCellRenderer(TableCellRenderer delegate, Icon icon, Predicate<?> predicate) { + this.defaultDelegate = delegate; + this.predicate = predicate; + setOpaque(true); + setBorderPainted(true); + setHorizontalAlignment(JLabel.CENTER); + setIcon(icon); + } + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + ((JComponent) defaultDelegate).setBackground(null); + JComponent render = (JComponent) defaultDelegate.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + if (isSelected) { + setForeground(table.getSelectionForeground()); + setBackground(table.getSelectionBackground()); + } else { + setForeground(render.getForeground()); + setBackground(render.getBackground()); + if (row % 2 == 0) { + setBackground(Color.WHITE); + } + } + + boolean selectCheckBox = predicate.apply(value); + setSelected(selectCheckBox); + + setBorder(render.getBorder()); + return this; + } +} \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.