featureGroup show/hide and newView methods for applet's javascript API
[jalview.git] / src / jalview / appletgui / AlignFrame.java
index af5a15d..85e4a1a 100755 (executable)
@@ -478,7 +478,7 @@ public class AlignFrame
       case KeyEvent.VK_T:
         if (evt.isControlDown())
         {
-          newView();
+          newView(null);
         }
         break;
 
@@ -687,7 +687,7 @@ public class AlignFrame
     }
     else if (source == newView)
     {
-      newView();
+      newView(null);
     }
     else if (source == showColumns)
     {
@@ -1774,8 +1774,12 @@ public class AlignFrame
   {
     new Finder(alignPanel);
   }
-
-  public void newView()
+  /**
+   * create a new view derived from the current view
+   * @param viewtitle
+   * @return frame for the new view
+   */
+  public AlignFrame newView(String viewtitle)
   {
     AlignmentI newal;
     if (viewport.hasHiddenRows)
@@ -1828,20 +1832,69 @@ public class AlignFrame
     }
 
     String title = new String(this.getTitle());
-    if (title.indexOf("(View") > -1)
+    if (viewtitle!=null)
     {
-      title = title.substring(0, title.indexOf("(View"));
+      title = viewtitle+" ( "+title+")";
+    } else {
+      if (title.indexOf("(View") > -1)
+      {
+        title = title.substring(0, title.indexOf("(View"));
+      }
+      title += "(View " + viewSize + ")";
     }
 
-    title += "(View " + viewSize + ")";
-
     newaf.setTitle(title.toString());
 
     newaf.viewport.historyList = viewport.historyList;
     newaf.viewport.redoList = viewport.redoList;
-
+    return newaf;
+  }
+  /**
+   * 
+   * @return list of feature groups on the view
+   */
+  public String[] getFeatureGroups()
+  {
+    FeatureRenderer fr = null;
+    if (alignPanel!=null && (fr=alignPanel.getFeatureRenderer())!=null)
+    {
+      return fr.getGroups();
+    }
+    return null;
+  }
+  /**
+   * get sequence feature groups that are hidden or shown
+   * @param visible true is visible
+   * @return list
+   */
+  public String[] getFeatureGroupsOfState(boolean visible)
+  {
+    FeatureRenderer fr = null;
+    if (alignPanel!=null && (fr=alignPanel.getFeatureRenderer())!=null)
+    {
+      return fr.getGroups(visible);
+    }
+    return null;
+  }
+  /**
+   * Change the display state for the given feature groups
+   * @param groups list of group strings
+   * @param state visible or invisible
+   */
+  public void setFeatureGroupState(String[] groups, boolean state) {
+    FeatureRenderer fr = null;
+    this.sequenceFeatures.setState(true);
+    viewport.showSequenceFeatures(true);
+    if (alignPanel!=null && (fr=alignPanel.getFeatureRenderer())!=null)
+    {
+      fr.setGroupState(groups, state);
+      alignPanel.seqPanel.seqCanvas.repaint();
+      if (alignPanel.overviewPanel != null)
+      {
+        alignPanel.overviewPanel.updateOverviewImage();
+      }
+    }
   }
-
   public void seqLimits_itemStateChanged()
   {
     viewport.setShowJVSuffix(seqLimits.getState());