This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository jaxx. See https://gitlab.nuiton.org/nuiton/jaxx.git commit 4a421ab40e4b48a68801abe36aa2216a6b22bd74 Author: Tony CHEMIT <dev@tchemit.fr> Date: Sat Dec 31 18:00:06 2016 +0100 improve code using generic on java components (JComboBox, JList) --- .../jaxx/runtime/swing/editor/EnumEditor.java | 24 +++++++++++++--------- .../swing/model/JaxxFilterableComboBoxModel.java | 4 ++-- .../swing/renderer/BooleanCellRenderer.java | 7 +++---- .../swing/renderer/DecoratorListCellRenderer.java | 16 +++++++-------- .../runtime/swing/renderer/EnumEditorRenderer.java | 14 +++++++------ .../FilteredDecoratorListCellRenderer.java | 14 ++++++------- .../jaxx/widgets/select/BeanComboBoxHandler.java | 2 +- .../jaxx/widgets/select/BeanDoubleListHandler.java | 6 +++--- .../select/BeanFilterableComboBoxHandler.java | 2 +- .../jaxx/widgets/select/BeanListHeaderHandler.java | 2 +- .../select/FilterableDoubleListHandler.java | 2 +- 11 files changed, 49 insertions(+), 44 deletions(-) diff --git a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/editor/EnumEditor.java b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/editor/EnumEditor.java index 0830297..6575c3d 100644 --- a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/editor/EnumEditor.java +++ b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/editor/EnumEditor.java @@ -43,8 +43,8 @@ package org.nuiton.jaxx.runtime.swing.editor; import org.nuiton.util.ReflectUtil; import javax.swing.JComboBox; +import java.lang.reflect.Array; import java.util.EnumSet; -import java.util.Iterator; /** * Une éditeur d'enum. @@ -53,7 +53,7 @@ import java.util.Iterator; * @author Tony Chemit - dev@tchemit.fr * @since 1.6.0 */ -public class EnumEditor<E extends Enum<E>> extends JComboBox { +public class EnumEditor<E extends Enum<E>> extends JComboBox<E> { private static final long serialVersionUID = 2L; @@ -123,18 +123,22 @@ public class EnumEditor<E extends Enum<E>> extends JComboBox { return type; } - protected static <E extends Enum<E>> Object[] buildModel(Class<E> type) { + protected static <E extends Enum<E>> E[] buildModel(Class<E> type) { Class<E> enumClass = ReflectUtil.getEnumClass(type); - EnumSet<E> result = EnumSet.allOf(enumClass); - return result.toArray(new Object[result.size()]); + EnumSet<E> all = EnumSet.allOf(enumClass); + E[] result = (E[]) Array.newInstance(type, all.size()); + System.arraycopy(all.toArray(), 0, result, 0, all.size()); + return result; } - protected static <E extends Enum<E>> Object[] buildModel(Class<E> type, - int maxOrdinal) { + protected static <E extends Enum<E>> E[] buildModel(Class<E> type, + int maxOrdinal) { Class<E> enumClass = ReflectUtil.getEnumClass(type); - EnumSet<E> result = EnumSet.allOf(enumClass); - result.removeIf(e -> e.ordinal() > maxOrdinal); - return result.toArray(new Object[result.size()]); + EnumSet<E> all = EnumSet.allOf(enumClass); + all.removeIf(e -> e.ordinal() > maxOrdinal); + E[] result = (E[]) Array.newInstance(type, all.size()); + System.arraycopy(all.toArray(), 0, result, 0, all.size()); + return result; } } diff --git a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/model/JaxxFilterableComboBoxModel.java b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/model/JaxxFilterableComboBoxModel.java index 113a731..09a79d5 100644 --- a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/model/JaxxFilterableComboBoxModel.java +++ b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/model/JaxxFilterableComboBoxModel.java @@ -22,7 +22,6 @@ package org.nuiton.jaxx.runtime.swing.model; * #L% */ -import java.util.function.Predicate; import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -32,6 +31,7 @@ import org.nuiton.decorator.JXPathDecorator; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.function.Predicate; import java.util.regex.Pattern; /** @@ -210,7 +210,7 @@ public class JaxxFilterableComboBoxModel<E> extends JaxxDefaultComboBoxModel<E> for (E element : delegate) { boolean addElement = true; for (Predicate<E> filter : filters) { - addElement &= filter.apply(element); + addElement &= filter.test(element); } String decoratedElement; if (decorator != null) { diff --git a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/BooleanCellRenderer.java b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/BooleanCellRenderer.java index ef30fb4..6720ef2 100644 --- a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/BooleanCellRenderer.java +++ b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/BooleanCellRenderer.java @@ -21,8 +21,6 @@ */ package org.nuiton.jaxx.runtime.swing.renderer; -import java.util.function.Predicate; - import javax.swing.Icon; import javax.swing.JCheckBox; import javax.swing.JComponent; @@ -32,6 +30,7 @@ import javax.swing.JTable; import javax.swing.table.TableCellRenderer; import java.awt.Color; import java.awt.Component; +import java.util.function.Predicate; /** * @author Tony Chemit - dev@tchemit.fr @@ -47,7 +46,7 @@ public class BooleanCellRenderer extends JPanel implements TableCellRenderer { private final Predicate predicate; - private static final Predicate<Object> DEFAULT_PREDICATE = input -> (input != null && (Boolean) input); + private static final Predicate<?> DEFAULT_PREDICATE = input -> (input != null && (Boolean) input); public BooleanCellRenderer(TableCellRenderer delegate, Predicate<?> predicate) { this(delegate, new JCheckBox(), predicate); @@ -94,7 +93,7 @@ public class BooleanCellRenderer extends JPanel implements TableCellRenderer { } } - boolean selectCheckBox = predicate.apply(value); + boolean selectCheckBox = predicate.test(value); checkBox.setSelected(selectCheckBox); setBorder(render.getBorder()); diff --git a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java index 885206e..344c067 100644 --- a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java +++ b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/DecoratorListCellRenderer.java @@ -35,20 +35,20 @@ import java.awt.Component; * @author Tony Chemit - dev@tchemit.fr * @since 1.7.2 */ -public class DecoratorListCellRenderer implements ListCellRenderer { +public class DecoratorListCellRenderer<O> implements ListCellRenderer<O> { /** Delegate cell renderer */ - protected final ListCellRenderer delegate; + protected final ListCellRenderer<O> delegate; /** Decorator to produce text to render */ - protected final Decorator<?> decorator; + protected final Decorator<O> decorator; - public DecoratorListCellRenderer(Decorator<?> decorator) { - this(new DefaultListCellRenderer(), decorator); + public DecoratorListCellRenderer(Decorator<O> decorator) { + this((ListCellRenderer<O>) new DefaultListCellRenderer(), decorator); } - public DecoratorListCellRenderer(ListCellRenderer delegate, - Decorator<?> decorator) { + public DecoratorListCellRenderer(ListCellRenderer<O> delegate, + Decorator<O> decorator) { this.delegate = delegate; this.decorator = decorator; } @@ -61,7 +61,7 @@ public class DecoratorListCellRenderer implements ListCellRenderer { boolean cellHasFocus) { value = decorateValue(value, index); return delegate.getListCellRendererComponent(list, - value, + (O) value, index, isSelected, cellHasFocus diff --git a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/EnumEditorRenderer.java b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/EnumEditorRenderer.java index 2734a38..9e4373c 100644 --- a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/EnumEditorRenderer.java +++ b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/EnumEditorRenderer.java @@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableMap; import javax.swing.DefaultListCellRenderer; import javax.swing.JList; +import javax.swing.ListCellRenderer; import java.awt.Component; /** @@ -33,21 +34,22 @@ import java.awt.Component; * * @author Tony Chemit - dev@tchemit.fr */ -public class EnumEditorRenderer<E extends Enum<E>> extends DefaultListCellRenderer { - private static final long serialVersionUID = 1L; +public class EnumEditorRenderer<E extends Enum<E>> implements ListCellRenderer<E> { private final ImmutableMap<E, String> labels; + private final DefaultListCellRenderer delegate = new DefaultListCellRenderer(); + public EnumEditorRenderer(ImmutableMap<E, String> labels) { this.labels = labels; } @Override - public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - + public Component getListCellRendererComponent(JList<? extends E> list, E value, int index, boolean isSelected, boolean cellHasFocus) { + String realValue = null; if (value != null) { - value = labels.get(value); + realValue = labels.get(value); } - return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + return delegate.getListCellRendererComponent(list, realValue, index, isSelected, cellHasFocus); } } diff --git a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/FilteredDecoratorListCellRenderer.java b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/FilteredDecoratorListCellRenderer.java index cf12490..0a97c28 100644 --- a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/FilteredDecoratorListCellRenderer.java +++ b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/renderer/FilteredDecoratorListCellRenderer.java @@ -38,7 +38,7 @@ import java.util.regex.Pattern; * @author Kevin Morin - morin@codelutin.com * @since 2.5.11 */ -public class FilteredDecoratorListCellRenderer extends DecoratorListCellRenderer { +public class FilteredDecoratorListCellRenderer<O> extends DecoratorListCellRenderer<O> { /** text to highlight */ protected String filterText; @@ -47,17 +47,17 @@ public class FilteredDecoratorListCellRenderer extends DecoratorListCellRenderer protected boolean highlightFilterText = false; - public FilteredDecoratorListCellRenderer(Decorator<?> decorator) { + public FilteredDecoratorListCellRenderer(Decorator<O> decorator) { super(decorator); } - public FilteredDecoratorListCellRenderer(ListCellRenderer delegate, - Decorator<?> decorator) { + public FilteredDecoratorListCellRenderer(ListCellRenderer<O> delegate, + Decorator<O> decorator) { super(delegate, decorator); } - public FilteredDecoratorListCellRenderer(ListCellRenderer delegate, - Decorator<?> decorator, + public FilteredDecoratorListCellRenderer(ListCellRenderer<O> delegate, + Decorator<O> decorator, boolean highlightFilterText) { super(delegate, decorator); this.highlightFilterText = highlightFilterText; @@ -114,7 +114,7 @@ public class FilteredDecoratorListCellRenderer extends DecoratorListCellRenderer } } return delegate.getListCellRendererComponent(list, - stringValue, + (O) stringValue, index, isSelected, cellHasFocus diff --git a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBoxHandler.java b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBoxHandler.java index 9f8a3ac..f8744d3 100644 --- a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBoxHandler.java +++ b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBoxHandler.java @@ -135,7 +135,7 @@ public class BeanComboBoxHandler<O> implements PropertyChangeListener { JComboBox<O> combobox = ui.getCombobox(); // init combobox renderer base on given decorator - combobox.setRenderer(new DecoratorListCellRenderer(this.decorator)); + combobox.setRenderer(new DecoratorListCellRenderer<>(this.decorator)); combobox.addPopupMenuListener(new PopupMenuListener() { private O selectedItem; diff --git a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanDoubleListHandler.java b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanDoubleListHandler.java index 9dae02b..8eb1452 100644 --- a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanDoubleListHandler.java +++ b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanDoubleListHandler.java @@ -141,8 +141,8 @@ public class BeanDoubleListHandler<O> implements PropertyChangeListener { uiModel.addCanRemoveItemsPredicate(o -> !o.isEmpty()); - FilteredDecoratorListCellRenderer universeListCellRenderer - = new FilteredDecoratorListCellRenderer(this.decorator); + FilteredDecoratorListCellRenderer<O> universeListCellRenderer + = new FilteredDecoratorListCellRenderer<>(this.decorator); universeList.setCellRenderer(universeListCellRenderer); if (decorator2 != null) { @@ -150,7 +150,7 @@ public class BeanDoubleListHandler<O> implements PropertyChangeListener { } else { decorator2 = this.decorator; } - selectedList.setCellRenderer(new DecoratorListCellRenderer(decorator2)); + selectedList.setCellRenderer(new DecoratorListCellRenderer<>(decorator2)); // When universe list selection model changed, update the add button enabled property universeList.getSelectionModel().addListSelectionListener(e -> { diff --git a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanFilterableComboBoxHandler.java b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanFilterableComboBoxHandler.java index a8d1feb..fab3c5b 100644 --- a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanFilterableComboBoxHandler.java +++ b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanFilterableComboBoxHandler.java @@ -261,7 +261,7 @@ public class BeanFilterableComboBoxHandler<O> implements PropertyChangeListener }); // init combobox renderer base on given decorator - combobox.setRenderer(new DecoratorListCellRenderer(this.decorator)); + combobox.setRenderer(new DecoratorListCellRenderer<>(this.decorator)); ((JaxxFilterableComboBoxModel<O>) combobox.getModel()).setDecorator(this.decorator); combobox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); combobox.addItemListener(e -> { diff --git a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanListHeaderHandler.java b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanListHeaderHandler.java index 6675733..f8f6466 100644 --- a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanListHeaderHandler.java +++ b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanListHeaderHandler.java @@ -110,7 +110,7 @@ public class BeanListHeaderHandler<O> implements PropertyChangeListener { this.decorator = BeanUIUtil.createDecorator(decorator); // init combobox renderer base on given decorator - ui.getList().setCellRenderer(new DecoratorListCellRenderer(this.decorator)); + ui.getList().setCellRenderer(new DecoratorListCellRenderer<>(this.decorator)); // build popup popupHandler.preparePopup(ui.getSelectedToolTipText(), diff --git a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/FilterableDoubleListHandler.java b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/FilterableDoubleListHandler.java index a787184..afb8333 100644 --- a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/FilterableDoubleListHandler.java +++ b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/FilterableDoubleListHandler.java @@ -392,7 +392,7 @@ public class FilterableDoubleListHandler<O extends Serializable> implements UIHa } else { decorator2 = this.decorator; } - selectedList.setCellRenderer(new DecoratorListCellRenderer(decorator2)); + selectedList.setCellRenderer(new DecoratorListCellRenderer<>(decorator2)); // When selected list selection model changed, update the add button enabled property -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.