1 package net.sf.openrocket.gui.dialogs.preset;
3 import javax.swing.RowFilter;
4 import javax.swing.table.TableModel;
6 import net.sf.openrocket.unit.Value;
7 import net.sf.openrocket.util.MathUtil;
9 public class ComponentPresetRowFilter extends RowFilter<TableModel, Object> {
11 private final double value;
12 private final int column;
13 private final double epsilon;
15 ComponentPresetRowFilter(double value, int column) {
19 * Accept 5% difference, but at least 1mm.
21 this.epsilon = MathUtil.max(value * 0.05, 0.001);
25 public boolean include(RowFilter.Entry<? extends TableModel, ? extends Object> entry) {
26 Object o = entry.getValue(column);
27 if (o instanceof Value) {
29 return Math.abs(value - v.getValue()) < epsilon;
31 if (o instanceof Double) {
32 Double d = (Double) o;
33 return Math.abs(value - d) < epsilon;