X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Fgui%2Fdialogs%2Fpreset%2FComponentPresetRowFilter.java;h=7c66aa136d593b42cd6900f00769cbc6c9a1811b;hb=091345cb872e40e9e263c9b7accf2fee67c19aa5;hp=283ec027901fb91265fb01b89fab79c695434ac7;hpb=c35037f9328cdfd002ea99663a43d8bf635a4c9c;p=debian%2Fopenrocket diff --git a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetRowFilter.java b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetRowFilter.java index 283ec027..7c66aa13 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetRowFilter.java +++ b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetRowFilter.java @@ -4,31 +4,35 @@ 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 { private final double value; private final int column; - // I chose epsilon to be 0.005 units. Since this is mostly used diameters, it represents 5mm. - private final double epsilon = .005; + private final double epsilon; - ComponentPresetRowFilter( double value, int column ) { + 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 entry) { + public boolean include(RowFilter.Entry entry) { Object o = entry.getValue(column); - if ( o instanceof Value ) { - Value v = (Value)o; - return Math.abs( value - v.getValue() ) < epsilon; + if (o instanceof Value) { + Value v = (Value) o; + return Math.abs(value - v.getValue()) < epsilon; } - if ( o instanceof Double ) { + if (o instanceof Double) { Double d = (Double) o; - return Math.abs( value - d ) < epsilon; + return Math.abs(value - d) < epsilon; } return true; } - + }