package net.sf.openrocket.gui.dialogs.preset; import javax.swing.RowFilter; import javax.swing.table.TableModel; import net.sf.openrocket.unit.Value; import net.sf.openrocket.util.MathUtil; public class ComponentPresetRowFilter extends RowFilter<TableModel, Object> { private final double value; private final int column; private final double epsilon; ComponentPresetRowFilter(double value, int column) { this.value = value; this.column = column; /* * Accept 5% difference, but at least 1mm. */ this.epsilon = MathUtil.max(value * 0.05, 0.001); } @Override public boolean include(RowFilter.Entry<? extends TableModel, ? extends Object> entry) { Object o = entry.getValue(column); if (o instanceof Value) { Value v = (Value) o; return Math.abs(value - v.getValue()) < epsilon; } if (o instanceof Double) { Double d = (Double) o; return Math.abs(value - d) < epsilon; } return true; } }