Merge remote-tracking branch 'origin/develop' into bug/JAL-2491
[jalview.git] / src / jalview / gui / PopupMenu.java
index 660c651..09e3263 100644 (file)
@@ -31,8 +31,8 @@ import jalview.commands.EditCommand.Action;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
-import jalview.datamodel.ColumnSelection;
 import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.HiddenColumns;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceFeature;
@@ -55,6 +55,7 @@ import jalview.util.UrlLink;
 import java.awt.Color;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -1445,13 +1446,21 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
   {
     if (sequence != null)
     {
-      ColumnSelection cs = ap.av.getColumnSelection();
-      if (cs == null)
+      /* ColumnSelection cs = ap.av.getColumnSelection();
+       if (cs == null)
+       {
+         cs = new ColumnSelection();
+       }
+       cs.hideInsertionsFor(sequence);
+       ap.av.setColumnSelection(cs);*/
+
+      HiddenColumns hidden = ap.av.getAlignment().getHiddenColumns();
+      if (hidden == null)
       {
-        cs = new ColumnSelection();
+        hidden = new HiddenColumns();
       }
-      cs.hideInsertionsFor(sequence);
-      ap.av.setColumnSelection(cs);
+      hidden.hideInsertionsFor(sequence);
+      ap.av.getAlignment().setHiddenColumns(hidden);
     }
     refresh();
   }
@@ -1880,30 +1889,28 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
       return;
     }
 
-    int rsize = 0, gSize = sg.getSize();
-    SequenceI[] rseqs, seqs = new SequenceI[gSize];
-    SequenceFeature[] tfeatures, features = new SequenceFeature[gSize];
+    List<SequenceI> seqs = new ArrayList<SequenceI>();
+    List<SequenceFeature> features = new ArrayList<SequenceFeature>();
 
+    /*
+     * assemble dataset sequences, and template new sequence features,
+     * for the amend features dialog
+     */
+    int gSize = sg.getSize();
     for (int i = 0; i < gSize; i++)
     {
       int start = sg.getSequenceAt(i).findPosition(sg.getStartRes());
       int end = sg.findEndRes(sg.getSequenceAt(i));
       if (start <= end)
       {
-        seqs[rsize] = sg.getSequenceAt(i).getDatasetSequence();
-        features[rsize] = new SequenceFeature(null, null, null, start, end,
-                "Jalview");
-        rsize++;
+        seqs.add(sg.getSequenceAt(i).getDatasetSequence());
+        features.add(new SequenceFeature(null, null, null, start, end,
+                "Jalview"));
       }
     }
-    rseqs = new SequenceI[rsize];
-    tfeatures = new SequenceFeature[rsize];
-    System.arraycopy(seqs, 0, rseqs, 0, rsize);
-    System.arraycopy(features, 0, tfeatures, 0, rsize);
-    features = tfeatures;
-    seqs = rseqs;
+
     if (ap.getSeqPanel().seqCanvas.getFeatureRenderer().amendFeatures(seqs,
-            features, true, ap))
+            features, true, ap, null))
     {
       ap.alignFrame.setShowSeqFeatures(true);
       ap.highlightSearchResults(null);