Merge commit 'ab43013b7e357b84b4abade0dba949668dfb2a0e' into develop
[jalview.git] / src / jalview / appletgui / AlignFrame.java
index 4473877..cdfed1d 100644 (file)
@@ -23,6 +23,7 @@ package jalview.appletgui;
 import jalview.analysis.AlignmentSorter;
 import jalview.api.AlignViewControllerGuiI;
 import jalview.api.AlignViewControllerI;
+import jalview.api.FeatureRenderer;
 import jalview.api.SequenceStructureBinding;
 import jalview.bin.JalviewLite;
 import jalview.commands.CommandI;
@@ -62,6 +63,7 @@ import jalview.schemes.TaylorColourScheme;
 import jalview.schemes.TurnColourScheme;
 import jalview.schemes.ZappoColourScheme;
 import jalview.structure.StructureSelectionManager;
+import jalview.structures.models.AAStructureBindingModel;
 import jalview.util.MessageManager;
 
 import java.awt.BorderLayout;
@@ -89,9 +91,10 @@ import java.awt.event.WindowEvent;
 import java.io.IOException;
 import java.net.URL;
 import java.net.URLEncoder;
-import java.util.Enumeration;
+import java.util.Arrays;
 import java.util.Hashtable;
 import java.util.List;
+import java.util.Map;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
@@ -285,7 +288,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 +304,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 +737,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)
@@ -1099,6 +1107,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     {
       new AnnotationColourChooser(viewport, alignPanel);
     }
+    else if (source == annotationColumnSelection)
+    {
+      new AnnotationColumnChooser(viewport, alignPanel);
+    }
     else if (source == sortPairwiseMenuItem)
     {
       sortPairwiseMenuItem_actionPerformed();
@@ -1191,11 +1203,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
   public String outputAnnotations(boolean displayTextbox)
   {
-    String annotation = new AnnotationFile().printAnnotations(
-            viewport.showAnnotation ? viewport.getAlignment()
-                    .getAlignmentAnnotation() : null, viewport
-                    .getAlignment().getGroups(), ((Alignment) viewport
-                    .getAlignment()).alignmentProperties);
+    String annotation = new AnnotationFile()
+            .printAnnotationsForView(viewport);
 
     if (displayTextbox)
     {
@@ -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;
   }
@@ -1278,7 +1280,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   {
     StringBuffer url = new StringBuffer(jalviewServletURL);
 
-    url.append("?open="
+    // allow servlet parameters to be passed in applet parameter
+    String firstSep = url.lastIndexOf("?") > url.lastIndexOf("/") ? "&"
+            : "?";
+    url.append(firstSep);
+
+    url.append("open="
             + appendProtocol(viewport.applet.getParameter("file")));
 
     if (viewport.applet.getParameter("features") != null)
@@ -1429,6 +1436,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   /**
    * TODO: JAL-1104
    */
+  @Override
   public void addHistoryItem(CommandI command)
   {
     if (command.getSize() > 0)
@@ -1687,11 +1695,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     {
       copiedHiddenColumns = new Vector();
       int hiddenOffset = viewport.getSelectionGroup().getStartRes();
-      for (int i = 0; i < viewport.getColumnSelection().getHiddenColumns()
-              .size(); i++)
+      for (int[] region : viewport.getColumnSelection().getHiddenColumns())
       {
-        int[] region = (int[]) viewport.getColumnSelection()
-                .getHiddenColumns().elementAt(i);
 
         copiedHiddenColumns.addElement(new int[]
         { region[0] - hiddenOffset, region[1] - hiddenOffset });
@@ -2271,7 +2276,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 +2301,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 +2325,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(Arrays.asList(groups), state);
       alignPanel.seqPanel.seqCanvas.repaint();
       if (alignPanel.overviewPanel != null)
       {
@@ -3257,6 +3277,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     annotationColour.setLabel(MessageManager
             .getString("action.by_annotation"));
     annotationColour.addActionListener(this);
+
+    annotationColumnSelection.setLabel("Select by Annotation");
+    annotationColumnSelection.addActionListener(this);
+
     invertSequenceMenuItem.setLabel(MessageManager
             .getString("action.invert_sequence_selection"));
     invertColSel.setLabel(MessageManager
@@ -3445,6 +3469,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     selectMenu.add(unGroup);
     selectMenu.add(grpsFromSelection);
     selectMenu.add(deleteGroups);
+    selectMenu.add(annotationColumnSelection);
 
   }
 
@@ -3459,6 +3484,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 
   MenuItem annotationColour = new MenuItem();
 
+  MenuItem annotationColumnSelection = new MenuItem();
+
   MenuItem invertColSel = new MenuItem();
 
   Menu menu1 = new Menu();
@@ -3615,7 +3642,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
         return null;
       }
     }
-    ExtJmol jmv = null;
+    AAStructureBindingModel jmv = null;
     // TODO: search for a jmv that involves viewer
     if (jmv == null)
     { // create a new viewer/jalview binding.