Merge branch 'develop' into features/JAL-2446NCList
[jalview.git] / src / jalview / appletgui / FeatureRenderer.java
index b9e92e2..435e78d 100644 (file)
@@ -53,6 +53,7 @@ import java.awt.event.MouseEvent;
 import java.awt.event.TextEvent;
 import java.awt.event.TextListener;
 import java.util.Hashtable;
+import java.util.List;
 
 /**
  * DOCUMENT ME!
@@ -182,8 +183,8 @@ public class FeatureRenderer extends
    * @param ap
    * @return
    */
-  boolean amendFeatures(final SequenceI[] sequences,
-          final SequenceFeature[] features, boolean create,
+  boolean amendFeatures(final List<SequenceI> sequences,
+          final List<SequenceFeature> features, boolean create,
           final AlignmentPanel ap)
   {
     final Panel bigPanel = new Panel(new BorderLayout());
@@ -223,22 +224,20 @@ public class FeatureRenderer extends
 
     // /////////////////////////////////////
     // /MULTIPLE FEATURES AT SELECTED RESIDUE
-    if (!create && features.length > 1)
+    if (!create && features.size() > 1)
     {
       panel = new Panel(new GridLayout(4, 1));
       tmp = new Panel();
       tmp.add(new Label("Select Feature: "));
       overlaps = new Choice();
-      for (int i = 0; i < features.length; i++)
+      for (SequenceFeature sf : features)
       {
-        String item = features[i].getType() + "/" + features[i].getBegin()
-                + "-" + features[i].getEnd();
-
-        if (features[i].getFeatureGroup() != null)
+        String item = sf.getType() + "/" + sf.getBegin() + "-"
+                + sf.getEnd();
+        if (sf.getFeatureGroup() != null)
         {
-          item += " (" + features[i].getFeatureGroup() + ")";
+          item += " (" + sf.getFeatureGroup() + ")";
         }
-
         overlaps.addItem(item);
       }
 
@@ -253,15 +252,16 @@ public class FeatureRenderer extends
           if (index != -1)
           {
             featureIndex = index;
-            name.setText(features[index].getType());
-            description.setText(features[index].getDescription());
-            group.setText(features[index].getFeatureGroup());
-            start.setText(features[index].getBegin() + "");
-            end.setText(features[index].getEnd() + "");
+            SequenceFeature sf = features.get(index);
+            name.setText(sf.getType());
+            description.setText(sf.getDescription());
+            group.setText(sf.getFeatureGroup());
+            start.setText(sf.getBegin() + "");
+            end.setText(sf.getEnd() + "");
 
             SearchResultsI highlight = new SearchResults();
-            highlight.addResult(sequences[0], features[index].getBegin(),
-                    features[index].getEnd());
+            highlight.addResult(sequences.get(0), sf.getBegin(),
+                    sf.getEnd());
 
             ap.seqPanel.seqCanvas.highlightSearchResults(highlight);
 
@@ -269,8 +269,8 @@ public class FeatureRenderer extends
           FeatureColourI col = getFeatureStyle(name.getText());
           if (col == null)
           {
-            Color generatedColour = ColorUtils
-                    .createColourFromName(name.getText());
+            Color generatedColour = ColorUtils.createColourFromName(name
+                    .getText());
             col = new FeatureColour(generatedColour);
           }
 
@@ -328,16 +328,17 @@ public class FeatureRenderer extends
      * if feature type has not been supplied by the caller
      * (e.g. for Amend, or create features from Find) 
      */
-    boolean useLastDefaults = features[0].getType() == null;
-    String featureType = useLastDefaults ? lastFeatureAdded : features[0]
+    SequenceFeature firstFeature = features.get(0);
+    boolean useLastDefaults = firstFeature.getType() == null;
+    String featureType = useLastDefaults ? lastFeatureAdded : firstFeature
             .getType();
     String featureGroup = useLastDefaults ? lastFeatureGroupAdded
-            : features[0].getFeatureGroup();
+            : firstFeature.getFeatureGroup();
 
     String title = create ? MessageManager
             .getString("label.create_new_sequence_features")
             : MessageManager.formatMessage("label.amend_delete_features",
-                    new String[] { sequences[0].getName() });
+                    new String[] { sequences.get(0).getName() });
 
     final JVDialog dialog = new JVDialog(ap.alignFrame, title, true, 385,
             240);
@@ -362,9 +363,9 @@ public class FeatureRenderer extends
       });
     }
 
-    start.setText(features[0].getBegin() + "");
-    end.setText(features[0].getEnd() + "");
-    description.setText(features[0].getDescription());
+    start.setText(firstFeature.getBegin() + "");
+    end.setText(firstFeature.getEnd() + "");
+    description.setText(firstFeature.getDescription());
     // lookup (or generate) the feature colour
     FeatureColourI fcol = getFeatureStyle(name.getText());
     // simply display the feature color in a box
@@ -406,7 +407,7 @@ public class FeatureRenderer extends
 
     if (!create)
     {
-      SequenceFeature sf = features[featureIndex];
+      SequenceFeature sf = features.get(featureIndex);
       if (dialog.accept)
       {
         if (!colourPanel.isGcol)
@@ -429,13 +430,13 @@ public class FeatureRenderer extends
          * replace the feature by deleting it and adding a new one
          * (to ensure integrity of SequenceFeatures data store)
          */
-        sequences[0].deleteFeature(sf);
+        sequences.get(0).deleteFeature(sf);
         SequenceFeature newSf = new SequenceFeature(sf, newBegin, newEnd,
                 enteredGroup, sf.getScore());
         newSf.setDescription(enteredDesc);
         ffile.parseDescriptionHTML(newSf, false);
         // amend features dialog only updates one sequence at a time
-        sequences[0].addSequenceFeature(newSf);
+        sequences.get(0).addSequenceFeature(newSf);
         boolean typeOrGroupChanged = (!featureType.equals(sf.type) || !featureGroup
                 .equals(sf.featureGroup));
 
@@ -447,7 +448,7 @@ public class FeatureRenderer extends
       }
       if (deleteFeature)
       {
-        sequences[0].deleteFeature(sf);
+        sequences.get(0).deleteFeature(sf);
         // ensure Feature Settings reflects removal of feature / group
         featuresAdded();
       }
@@ -459,13 +460,13 @@ public class FeatureRenderer extends
        */
       if (dialog.accept && name.getText().length() > 0)
       {
-        for (int i = 0; i < sequences.length; i++)
+        for (int i = 0; i < sequences.size(); i++)
         {
-          SequenceFeature sf = features[i];
+          SequenceFeature sf = features.get(i);
           SequenceFeature sf2 = new SequenceFeature(enteredType,
                   enteredDesc, sf.getBegin(), sf.getEnd(), enteredGroup);
           ffile.parseDescriptionHTML(sf2, false);
-          sequences[i].addSequenceFeature(sf2);
+          sequences.get(i).addSequenceFeature(sf2);
         }
 
         Color newColour = colourPanel.getBackground();