* @return true if the range on the matrix specified by ci intersects with selected columns in the ContactListI's reference frame.
*/
- boolean intersects(contactInterval ci,ColumnSelection columnSelection, HiddenColumns hiddenColumns, boolean visibleOnly) {
+ boolean intersects(contactInterval ci, ColumnSelection columnSelection,
+ HiddenColumns hiddenColumns, boolean visibleOnly)
+ {
boolean rowsel = false;
- final int[] mappedRange = contacts.getMappedPositionsFor(ci.cStart, ci.cEnd);
- if (mappedRange==null)
+ final int[] mappedRange = contacts.getMappedPositionsFor(ci.cStart,
+ ci.cEnd);
+ if (mappedRange == null)
{
return false;
}
- boolean containsHidden=false;
- if (visibleOnly && hiddenColumns!=null && hiddenColumns.hasHiddenColumns())
+ for (int p = 0; p < mappedRange.length && !rowsel; p += 2)
{
- // TODO: turn into function on hiddenColumns and create test !!
- Iterator<int[]> viscont = hiddenColumns
- .getVisContigsIterator(mappedRange[0], mappedRange[1], false);
- containsHidden = !viscont.hasNext();
- if (!containsHidden)
+ boolean containsHidden = false;
+ if (visibleOnly && hiddenColumns != null
+ && hiddenColumns.hasHiddenColumns())
{
- for (int[] interval=viscont.next();viscont.hasNext();
- rowsel |= columnSelection.intersects(interval[0],interval[1]))
- ;
+ // TODO: turn into function on hiddenColumns and create test !!
+ Iterator<int[]> viscont = hiddenColumns.getVisContigsIterator(
+ mappedRange[p], mappedRange[p + 1], false);
+ containsHidden = !viscont.hasNext();
+ if (!containsHidden)
+ {
+ for (int[] interval = viscont.next(); viscont
+ .hasNext(); rowsel |= columnSelection
+ .intersects(interval[p], interval[p + 1]))
+ ;
+ }
}
- }
- else
- {
- // if containsHidden is true mappedRange is not visible
- if (containsHidden)
+ else
{
- rowsel = columnSelection.intersects(mappedRange[0], mappedRange[1]);
+ rowsel = columnSelection.intersects(mappedRange[p],
+ mappedRange[p + 1]);
}
}
return rowsel;