import jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Enumeration;
import java.util.List;
import java.util.Vector;
Vector selected = new Vector();
// Vector of int [] {startCol, endCol}
- Vector hiddenColumns;
+ Vector<int[]> hiddenColumns;
/**
* Add a column to the selection
int hSize = hiddenColumns.size();
for (int i = 0; i < hSize; i++)
{
- int[] region = (int[]) hiddenColumns.elementAt(i);
+ int[] region = hiddenColumns.elementAt(i);
if (region[0] > start && start + change > region[1])
{
deletedHiddenColumns.add(region);
{
for (int i = 0; i < hiddenColumns.size(); i++)
{
- int[] region = (int[]) hiddenColumns.elementAt(i);
+ int[] region = hiddenColumns.elementAt(i);
if (region[0] >= start)
{
region[0] -= change;
}
/**
- * This Method is used to return all the HiddenColumn regions less than the
- * given index.
- *
- * @param end
- * int
- * @return Vector
+ * This Method is used to return all the HiddenColumn regions
+ * @return empty list or List of hidden column intervals
*/
- public Vector getHiddenColumns()
+ public List<int[]> getHiddenColumns()
{
- return hiddenColumns;
+ return hiddenColumns == null ? Arrays.asList(new int[]
+ {}) : hiddenColumns;
}
/**
{
for (int i = 0; i < hiddenColumns.size(); i++)
{
- int[] region = (int[]) hiddenColumns.elementAt(i);
+ int[] region = hiddenColumns.elementAt(i);
if (result >= region[0])
{
result += region[1] - region[0] + 1;
int[] region;
do
{
- region = (int[]) hiddenColumns.elementAt(index++);
+ region = hiddenColumns.elementAt(index++);
if (hiddenColumn > region[1])
{
result -= region[1] + 1 - region[0];
int gaps = 0;
do
{
- int[] region = (int[]) hiddenColumns.elementAt(index);
+ int[] region = hiddenColumns.elementAt(index);
if (hiddenRegion == 0)
{
return region[0];
int index = 0;
do
{
- int[] region = (int[]) hiddenColumns.elementAt(index);
+ int[] region = hiddenColumns.elementAt(index);
if (alPos < region[0])
{
return region[0];
int index = hiddenColumns.size() - 1;
do
{
- int[] region = (int[]) hiddenColumns.elementAt(index);
+ int[] region = hiddenColumns.elementAt(index);
if (alPos > region[1])
{
return region[1];
for (int i = 0; i < hiddenColumns.size(); i++)
{
- int[] region = (int[]) hiddenColumns.elementAt(i);
+ int[] region = hiddenColumns.elementAt(i);
if (start <= region[1] && end >= region[0])
{
hiddenColumns.removeElementAt(i);
{
for (int i = 0; i < hiddenColumns.size(); i++)
{
- int[] region = (int[]) hiddenColumns.elementAt(i);
+ int[] region = hiddenColumns.elementAt(i);
for (int j = region[0]; j < region[1] + 1; j++)
{
addElement(j);
{
for (int i = 0; i < hiddenColumns.size(); i++)
{
- int[] region = (int[]) hiddenColumns.elementAt(i);
+ int[] region = hiddenColumns.elementAt(i);
if (res == region[0])
{
for (int j = region[0]; j < region[1] + 1; j++)
{
for (int i = 0; i < hiddenColumns.size(); i++)
{
- int[] region = (int[]) hiddenColumns.elementAt(i);
+ int[] region = hiddenColumns.elementAt(i);
if (column >= region[0] && column <= region[1])
{
return false;
for (int i = 0, j = copy.hiddenColumns.size(); i < j; i++)
{
int[] rh, cp;
- rh = (int[]) copy.hiddenColumns.elementAt(i);
+ rh = copy.hiddenColumns.elementAt(i);
if (rh != null)
{
cp = new int[rh.length];
for (i = 0; i < iSize; i++)
{
StringBuffer visibleSeq = new StringBuffer();
- Vector regions = getHiddenColumns();
+ List<int[]> regions = getHiddenColumns();
int blockStart = start, blockEnd = end;
int[] region;
for (int j = 0; j < regions.size(); j++)
{
- region = (int[]) regions.elementAt(j);
+ region = regions.get(j);
hideStart = region[0];
hideEnd = region[1];
if (hiddenColumns != null && hiddenColumns.size() > 0)
{
Vector visiblecontigs = new Vector();
- Vector regions = getHiddenColumns();
+ List<int[]> regions = getHiddenColumns();
int vstart = start;
int[] region;
for (int j = 0; vstart < end && j < regions.size(); j++)
{
- region = (int[]) regions.elementAt(j);
+ region = regions.get(j);
hideStart = region[0];
hideEnd = region[1];
// then mangle the alignmentAnnotation annotation array
Vector annels = new Vector();
Annotation[] els = null;
- Vector regions = getHiddenColumns();
+ List<int[]> regions = getHiddenColumns();
int blockStart = start, blockEnd = end;
int[] region;
int hideStart, hideEnd, w = 0;
for (int j = 0; j < regions.size(); j++)
{
- region = (int[]) regions.elementAt(j);
+ region = regions.get(j);
hideStart = region[0];
hideEnd = region[1];
}
}
+ /**
+ *
+ * @return true if there are columns marked
+ */
+ public boolean hasSelectedColumns()
+ {
+ return (selected != null && selected.size() > 0);
+ }
+
+ /**
+ *
+ * @return true if there are columns hidden
+ */
+ public boolean hasHiddenColumns()
+ {
+ return hiddenColumns != null && hiddenColumns.size() > 0;
+ }
+
+ /**
+ *
+ * @return true if there are more than one set of columns hidden
+ */
+ public boolean hasManyHiddenColumns()
+ {
+ return hiddenColumns != null && hiddenColumns.size() > 1;
+ }
+
+ /**
+ * mark the columns corresponding to gap characters as hidden in the column
+ * selection
+ *
+ * @param sr
+ */
+ public void hideInsertionsFor(SequenceI sr)
+ {
+ List<int[]> inserts = sr.getInsertions();
+ for (int[] r : inserts)
+ {
+ hideColumns(r[0], r[1]);
+ }
+ }
+
public boolean filterAnnotations(Annotation[] annotations,
AnnotationFilterParameter filterParams)
{