create changelog entry
[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 import net.sf.openrocket.util.MathUtil;
8
9 public class ComponentPresetRowFilter extends RowFilter<TableModel, Object> {
10         
11         private final double value;
12         private final int column;
13         private final double epsilon;
14         
15         ComponentPresetRowFilter(double value, int column) {
16                 this.value = value;
17                 this.column = column;
18                 /*
19                  * Accept 5% difference, but at least 1mm.
20                  */
21                 this.epsilon = MathUtil.max(value * 0.05, 0.001);
22         }
23         
24         @Override
25         public boolean include(RowFilter.Entry<? extends TableModel, ? extends Object> entry) {
26                 Object o = entry.getValue(column);
27                 if (o instanceof Value) {
28                         Value v = (Value) o;
29                         return Math.abs(value - v.getValue()) < epsilon;
30                 }
31                 if (o instanceof Double) {
32                         Double d = (Double) o;
33                         return Math.abs(value - d) < epsilon;
34                 }
35                 return true;
36         }
37         
38 }