Merge branch 'develop' into features/JAL-845splitPaneMergeDevelop
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 5 Mar 2015 13:50:58 +0000 (13:50 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 5 Mar 2015 13:50:58 +0000 (13:50 +0000)
Conflicts:
src/jalview/datamodel/SequenceGroup.java

1  2 
src/jalview/datamodel/ColumnSelection.java
src/jalview/datamodel/SequenceGroup.java
src/jalview/datamodel/SequenceI.java
src/jalview/util/ShiftList.java

@@@ -25,8 -25,8 +25,7 @@@ import jalview.viewmodel.annotationfilt
  import jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField;
  
  import java.util.ArrayList;
 -import java.util.Arrays;
 -import java.util.Enumeration;
 +import java.util.Collections;
- import java.util.Enumeration;
  import java.util.List;
  import java.util.Vector;
  
@@@ -35,7 -35,7 +34,7 @@@
   */
  public class ColumnSelection
  {
--  Vector selected = new Vector();
++  Vector<Integer> selected = new Vector<Integer>();
  
    // Vector of int [] {startCol, endCol}
    Vector<int[]> hiddenColumns;
@@@ -64,7 -64,7 +63,7 @@@
    }
  
    /**
--   * removes col from selection
++   * Removes value 'col' from the selection (not the col'th item)
     * 
     * @param col
     *          index of column to be removed
@@@ -75,6 -75,6 +74,8 @@@
  
      if (selected.contains(colInt))
      {
++      // if this ever changes to List.remove(), ensure Integer not int argument
++      // as List.remove(int i) removes the i'th item which is wrong
        selected.removeElement(colInt);
      }
    }
     */
    public int columnAt(int i)
    {
--    return ((Integer) selected.elementAt(i)).intValue();
++    return selected.elementAt(i).intValue();
    }
  
    /**
  
        if (temp >= start)
        {
++        // if this ever changes to List.set(), swap parameter order!!
          selected.setElementAt(new Integer(temp - change), i);
        }
      }
  
        if (temp >= start)
        {
++        // if this ever changes to List.set(), swap parameter order!!
          selected.setElementAt(new Integer(temp - change), i);
        }
      }
    {
      if (shiftrecord != null)
      {
-       List<int[]> shifts = shiftrecord.getShifts();
 -      Vector shifts = shiftrecord.shifts;
++      final List<int[]> shifts = shiftrecord.getShifts();
        if (shifts != null && shifts.size() > 0)
        {
          int shifted = 0;
     * @param intervals
     * @return
     */
-   private boolean pruneIntervalVector(List<int[]> shifts, Vector intervals)
 -  private boolean pruneIntervalVector(Vector deletions, Vector intervals)
++  private boolean pruneIntervalVector(final List<int[]> shifts,
++          Vector<int[]> intervals)
    {
      boolean pruned = false;
 -    int i = 0, j = intervals.size() - 1, s = 0, t = deletions.size() - 1;
 -    int hr[] = (int[]) intervals.elementAt(i);
 -    int sr[] = (int[]) deletions.elementAt(s);
 +    int i = 0, j = intervals.size() - 1, s = 0, t = shifts.size() - 1;
-     int hr[] = (int[]) intervals.elementAt(i);
++    int hr[] = intervals.elementAt(i);
 +    int sr[] = shifts.get(s);
      while (i <= j && s <= t)
      {
        boolean trailinghn = hr[1] >= sr[0];
        {
          if (i < j)
          {
--          hr = (int[]) intervals.elementAt(++i);
++          hr = intervals.elementAt(++i);
          }
          else
          {
            j--;
            if (i <= j)
            {
--            hr = (int[]) intervals.elementAt(i);
++            hr = intervals.elementAt(i);
            }
            continue;
          }
      // operations.
    }
  
-   private boolean pruneColumnList(List<int[]> shifts, Vector list)
 -  private boolean pruneColumnList(Vector deletion, Vector list)
++  private boolean pruneColumnList(final List<int[]> shifts,
++          Vector<Integer> list)
    {
 -    int s = 0, t = deletion.size();
 -    int[] sr = (int[]) list.elementAt(s++);
 +    int s = 0, t = shifts.size();
 +    int[] sr = shifts.get(s++);
      boolean pruned = false;
      int i = 0, j = list.size();
      while (i < j && s <= t)
      {
--      int c = ((Integer) list.elementAt(i++)).intValue();
++      int c = list.elementAt(i++).intValue();
        if (sr[0] <= c)
        {
          if (sr[1] + sr[0] >= c)
    {
      if (deletions != null)
      {
-       List<int[]> shifts = deletions.getShifts();
 -      Vector shifts = deletions.shifts;
++      final List<int[]> shifts = deletions.getShifts();
        if (shifts != null && shifts.size() > 0)
        {
          // delete any intervals intersecting.
    {
      if (hiddenColumns == null)
      {
--      hiddenColumns = new Vector();
++      hiddenColumns = new Vector<int[]>();
      }
  
      boolean added = false;
      {
        if (copy.selected != null)
        {
--        selected = new Vector();
++        selected = new Vector<Integer>();
          for (int i = 0, j = copy.selected.size(); i < j; i++)
          {
            selected.addElement(copy.selected.elementAt(i));
        }
        if (copy.hiddenColumns != null)
        {
--        hiddenColumns = new Vector(copy.hiddenColumns.size());
++        hiddenColumns = new Vector<int[]>(copy.hiddenColumns.size());
          for (int i = 0, j = copy.hiddenColumns.size(); i < j; i++)
          {
            int[] rh, cp;
    {
      if (hiddenColumns != null && hiddenColumns.size() > 0)
      {
--      Vector visiblecontigs = new Vector();
++      List<int[]> visiblecontigs = new ArrayList<int[]>();
        List<int[]> regions = getHiddenColumns();
  
        int vstart = start;
          }
          if (hideStart > vstart)
          {
--          visiblecontigs.addElement(new int[]
++          visiblecontigs.add(new int[]
            { vstart, hideStart - 1 });
          }
          vstart = hideEnd + 1;
  
        if (vstart < end)
        {
--        visiblecontigs.addElement(new int[]
++        visiblecontigs.add(new int[]
          { vstart, end - 1 });
        }
        int[] vcontigs = new int[visiblecontigs.size() * 2];
        for (int i = 0, j = visiblecontigs.size(); i < j; i++)
        {
--        int[] vc = (int[]) visiblecontigs.elementAt(i);
--        visiblecontigs.setElementAt(null, i);
++        int[] vc = visiblecontigs.get(i);
++        visiblecontigs.set(i, null);
          vcontigs[i * 2] = vc[0];
          vcontigs[i * 2 + 1] = vc[1];
        }
--      visiblecontigs.removeAllElements();
++      visiblecontigs.clear();
        return vcontigs;
      }
      else
      if (hiddenColumns != null && hiddenColumns.size() > 0)
      {
        // then mangle the alignmentAnnotation annotation array
--      Vector annels = new Vector();
++      Vector<Annotation []> annels = new Vector<Annotation []>();
        Annotation[] els = null;
        List<int[]> regions = getHiddenColumns();
        int blockStart = start, blockEnd = end;
        {
          return;
        }
--      Enumeration e = annels.elements();
++
        alignmentAnnotation.annotations = new Annotation[w];
        w = 0;
--      while (e.hasMoreElements())
++
++        for (Annotation [] chnk : annels)
        {
--        Annotation[] chnk = (Annotation[]) e.nextElement();
          System.arraycopy(chnk, 0, alignmentAnnotation.annotations, w,
                  chnk.length);
          w += chnk.length;
    {
      if (colsel != null && colsel.size() > 0)
      {
--      Enumeration e = colsel.getSelected().elements();
--      while (e.hasMoreElements())
++      for (Integer col : colsel.getSelected())
        {
--        Object eo = e.nextElement();
--        if (hiddenColumns != null && isVisible(((Integer) eo).intValue()))
++        if (hiddenColumns != null && isVisible(col.intValue()))
          {
--          if (!selected.contains(eo))
++          if (!selected.contains(col))
            {
--            selected.addElement(eo);
++            selected.addElement(col);
            }
          }
        }
     */
    public void setElementsFrom(ColumnSelection colsel)
    {
--    selected = new Vector();
++    selected = new Vector<Integer>();
      if (colsel.selected != null && colsel.selected.size() > 0)
      {
        if (hiddenColumns != null && hiddenColumns.size() > 0)
        {
          // only select visible columns in this columns selection
--        selected = new Vector();
          addElementsFrom(colsel);
        }
        else
        {
          // add everything regardless
--        Enumeration en = colsel.selected.elements();
--        while (en.hasMoreElements())
++        for (Integer col : colsel.getSelected())
          {
--          selected.addElement(en.nextElement());
++          addElement(col);
          }
        }
      }
@@@ -1307,12 -1295,12 +1295,15 @@@ public class SequenceGroup implements A
      return false;
    }
  
 +  /**
 +   * Remove all sequences from the group (leaving other properties unchanged).
 +   */
    public void clear()
    {
-     sequences.clear();
+     synchronized (sequences)
+     {
+       sequences.clear();
+     }
    }
  
    private AnnotatedCollectionI context;
Simple merge
@@@ -47,20 -46,21 +47,23 @@@ public class ShiftLis
     */
    public void addShift(int pos, int shift)
    {
--    int sidx = 0;
--    int[] rshift = null;
-     while (sidx < shifts.size() && (rshift = shifts.get(sidx))[0] < pos)
-     {
-       sidx++;
-     }
-     if (sidx == shifts.size())
 -    while (sidx < shifts.size()
 -            && (rshift = (int[]) shifts.elementAt(sidx))[0] < pos)
 -    {
 -      sidx++;
 -    }
 -    if (sidx == shifts.size())
++    synchronized (shifts)
      {
-       shifts.add(sidx, new int[]
-       { pos, shift });
-     }
-     else
-     {
-       rshift[1] += shift;
 -      shifts.insertElementAt(new int[]
 -      { pos, shift }, sidx);
 -    }
 -    else
 -    {
 -      rshift[1] += shift;
++      int sidx = 0;
++      int[] rshift = null;
++      while (sidx < shifts.size() && (rshift = shifts.get(sidx))[0] < pos)
++      {
++        sidx++;
++      }
++      if (sidx == shifts.size())
++      {
++        shifts.add(sidx, new int[]
++        { pos, shift });
++      }
++      else
++      {
++        rshift[1] += shift;
++      }
      }
    }
  
@@@ -91,9 -91,9 +94,9 @@@
    /**
     * clear all shifts
     */
--  public void clear()
++  public synchronized void clear()
    {
 -    shifts.removeAllElements();
 +    shifts.clear();
    }
  
    /**
    public ShiftList getInverse()
    {
      ShiftList inverse = new ShiftList();
--    if (shifts != null)
++    synchronized (shifts)
      {
--      for (int i = 0, j = shifts.size(); i < j; i++)
++      if (shifts != null)
        {
-         int[] sh = shifts.get(i);
-         if (sh != null)
 -        int[] sh = (int[]) shifts.elementAt(i);
 -        if (sh != null)
++        for (int[] sh : shifts)
          {
-           inverse.shifts.add(new int[]
-           { sh[0], -sh[1] });
 -          inverse.shifts.addElement(new int[]
 -          { sh[0], -sh[1] });
++          if (sh != null)
++          {
++            inverse.shifts.add(new int[]
++            { sh[0], -sh[1] });
++          }
          }
        }
      }