Removed fixme and settled on .001 for epsilon.
[debian/openrocket] / core / src / net / sf / openrocket / gui / dialogs / preset / ComponentPresetRowFilter.java
1 package net.sf.openrocket.gui.dialogs.preset;
2
3 import javax.swing.RowFilter;
4 import javax.swing.table.TableModel;
5
6 import net.sf.openrocket.unit.Value;
7
8 public class ComponentPresetRowFilter extends RowFilter<TableModel, Object> {
9         
10         private final double value;
11         private final int column;
12         // I chose epsilon to be 0.001 units.  Since this is mostly used with lengths, it represents
13         // 1 mm.
14         private final double epsilon = .001;
15         
16         ComponentPresetRowFilter( double value, int column ) {
17                 this.value = value;
18                 this.column = column;
19         }
20
21         @Override
22         public boolean include( RowFilter.Entry<? extends TableModel, ? extends Object> entry) {
23                 Object o = entry.getValue(column);
24                 if ( o instanceof Value ) {
25                         Value v = (Value)o;
26                         return Math.abs( value - v.getValue() ) < epsilon;
27                 }
28                 if ( o instanceof Double ) {
29                         Double d = (Double) o;
30                         return Math.abs( value - d ) < epsilon;
31                 }
32                 return true;
33         }
34
35 }