Merge branch 'JAL-1483_29dev' into develop
[jalview.git] / src / jalview / appletgui / AlignFrame.java
index ed64215..9fb91ed 100644 (file)
@@ -24,6 +24,7 @@ import jalview.analysis.AlignmentSorter;
 import jalview.api.AlignViewControllerGuiI;
 import jalview.api.AlignViewControllerI;
 import jalview.api.SequenceStructureBinding;
+import jalview.api.FeatureRenderer;
 import jalview.bin.JalviewLite;
 import jalview.commands.CommandI;
 import jalview.commands.EditCommand;
@@ -89,9 +90,12 @@ import java.awt.event.WindowEvent;
 import java.io.IOException;
 import java.net.URL;
 import java.net.URLEncoder;
+import java.util.Arrays;
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
@@ -285,7 +289,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     {
       featuresFile = new jalview.io.FeaturesFile(file, type)
               .parse(viewport.getAlignment(), alignPanel.seqPanel.seqCanvas
-                      .getFeatureRenderer().featureColours, featureLinks,
+                      .getFeatureRenderer().getFeatureColours(), featureLinks,
                       true, viewport.applet.getDefaultParameter(
                               "relaxedidmatch", false));
     } catch (Exception ex)
@@ -301,9 +305,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       }
       if (autoenabledisplay)
       {
-        viewport.showSequenceFeatures = true;
+        viewport.setShowSequenceFeatures(true);
         sequenceFeatures.setState(true);
       }
+      if (alignPanel.seqPanel.seqCanvas.fr != null)
+      {
+        // update the min/max ranges where necessary
+        alignPanel.seqPanel.seqCanvas.fr.findAllFeatures(true);
+      }
       if (viewport.featureSettings != null)
       {
         viewport.featureSettings.refreshTable();
@@ -729,7 +738,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     }
     else if (evt.getSource() == sequenceFeatures)
     {
-      viewport.showSequenceFeatures(sequenceFeatures.getState());
+      viewport.setShowSequenceFeatures(sequenceFeatures.getState());
       alignPanel.seqPanel.seqCanvas.repaint();
     }
     else if (evt.getSource() == conservationMenuItem)
@@ -1210,20 +1219,13 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     return annotation;
   }
 
-  private Hashtable getDisplayedFeatureCols()
+  private Map<String,Object> getDisplayedFeatureCols()
   {
     if (alignPanel.getFeatureRenderer() != null
-            && viewport.featuresDisplayed != null)
+            && viewport.getFeaturesDisplayed()!= null)
     {
-      FeatureRenderer fr = alignPanel.getFeatureRenderer();
-      Hashtable fcols = new Hashtable();
-      Enumeration en = viewport.featuresDisplayed.keys();
-      while (en.hasMoreElements())
-      {
-        Object col = en.nextElement();
-        fcols.put(col, fr.featureColours.get(col));
-      }
-      return fcols;
+      return alignPanel.getFeatureRenderer().getDisplayedFeatureCols();
+      
     }
     return null;
   }
@@ -1429,6 +1431,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   /**
    * TODO: JAL-1104
    */
+  @Override
   public void addHistoryItem(CommandI command)
   {
     if (command.getSize() > 0)
@@ -2271,7 +2274,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     if (alignPanel != null
             && (fr = alignPanel.getFeatureRenderer()) != null)
     {
-      return fr.getGroups();
+      List gps = fr.getFeatureGroups();
+      int p=0;
+      String[] _gps = new String[gps.size()];
+      for (Object gp:gps)
+      {
+        _gps[p++] = gp.toString();
+      }
+      return _gps;
     }
     return null;
   }
@@ -2289,7 +2299,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     if (alignPanel != null
             && (fr = alignPanel.getFeatureRenderer()) != null)
     {
-      return fr.getGroups(visible);
+      List gps = fr.getGroups(visible);
+      int p=0;
+      String[] _gps = new String[gps.size()];
+      for (Object gp:gps)
+      {
+        _gps[p++] = gp.toString();
+      }
+      return _gps;
     }
     return null;
   }
@@ -2306,11 +2323,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   {
     FeatureRenderer fr = null;
     this.sequenceFeatures.setState(true);
-    viewport.showSequenceFeatures(true);
+    viewport.setShowSequenceFeatures(true);
     if (alignPanel != null
             && (fr = alignPanel.getFeatureRenderer()) != null)
     {
-      fr.setGroupState(groups, state);
+      
+      fr.setGroupVisibility((List)Arrays.asList(groups), state);
       alignPanel.seqPanel.seqCanvas.repaint();
       if (alignPanel.overviewPanel != null)
       {