(JAL-965) new api methods to allow features to be loaded without automatically enabli...
[jalview.git] / src / jalview / appletgui / AlignFrame.java
index d2b04f9..5790bc3 100644 (file)
@@ -1,6 +1,6 @@
 /*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)\r
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle\r
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)\r
+ * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle\r
  * \r
  * This file is part of Jalview.\r
  * \r
@@ -161,14 +161,26 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   }\r
 \r
   /**\r
-   * DOCUMENT ME!\r
+   * Load a features file onto the alignment\r
    * \r
-   * @param String\r
-   *          DOCUMENT ME!\r
+   * @param file file URL, content, or other resolvable path\r
+   * @param type is protocol for accessing data referred to by file\r
    */\r
 \r
   public void parseFeaturesFile(String file, String type)\r
   {\r
+    parseFeaturesFile(file, type, true);\r
+  }\r
+  \r
+  /**\r
+   * Load a features file onto the alignment\r
+   * \r
+   * @param file file URL, content, or other resolvable path\r
+   * @param type is protocol for accessing data referred to by file\r
+   * @param autoenabledisplay when true, display features flag will be automatically enabled if features are loaded\r
+   */\r
+  public void parseFeaturesFile(String file, String type, boolean autoenabledisplay)\r
+  {    \r
     Hashtable featureLinks = new Hashtable();\r
     boolean featuresFile = false;\r
     try\r
@@ -188,8 +200,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
       {\r
         alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureLinks = featureLinks;\r
       }\r
-      viewport.showSequenceFeatures = true;\r
-      sequenceFeatures.setState(true);\r
+      if (autoenabledisplay)\r
+      {\r
+        viewport.showSequenceFeatures = true;\r
+        sequenceFeatures.setState(true);\r
+      }\r
       if (viewport.featureSettings != null)\r
       {\r
         viewport.featureSettings.refreshTable();\r
@@ -601,6 +616,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     {\r
       viewport.autocalculateConsensus = autoCalculate.getState();\r
     }\r
+    else if (evt.getSource() == sortByTree)\r
+    {\r
+      viewport.sortByTree = sortByTree.getState();\r
+    }\r
     else if (evt.getSource() == this.centreColumnLabelFlag)\r
     {\r
       centreColumnLabelFlag_stateChanged();\r
@@ -1032,7 +1051,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 \r
   private Hashtable getDisplayedFeatureCols()\r
   {\r
-    if (alignPanel.getFeatureRenderer() != null)\r
+    if (alignPanel.getFeatureRenderer() != null && viewport.featuresDisplayed!=null)\r
     {\r
       FeatureRenderer fr = alignPanel.getFeatureRenderer();\r
       Hashtable fcols = new Hashtable();\r
@@ -1065,12 +1084,25 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
 \r
     if (displayTextbox)\r
     {\r
-      CutAndPasteTransfer cap = new CutAndPasteTransfer(false, this);\r
+      boolean frimport=false;\r
+      if (features==null || features.equals("No Features Visible"))\r
+      {\r
+        features = "# No features visible - paste some and import them here.";\r
+        frimport=true;\r
+      }\r
+      \r
+      CutAndPasteTransfer cap = new CutAndPasteTransfer(frimport, this);\r
+      if (frimport)\r
+      {\r
+        cap.setAnnotationImport();\r
+      }\r
       Frame frame = new Frame();\r
       frame.add(cap);\r
       jalview.bin.JalviewLite.addFrame(frame, "Features", 600, 500);\r
-\r
       cap.setText(features);\r
+    } else {\r
+      if (features==null)\r
+        features = "";\r
     }\r
 \r
     return features;\r
@@ -2538,7 +2570,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
         sortByTree(treePanel, title); // treePanel.getTitle());\r
       }\r
     });\r
-\r
+    \r
     treePanel.addWindowListener(new WindowAdapter()\r
     {\r
       public void windowOpened(WindowEvent e)\r
@@ -2572,6 +2604,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     alignPanel.paintAlignment(true);\r
     return true;\r
   }\r
+\r
   protected void documentation_actionPerformed()\r
   {\r
     alignPanel.av.applet.openJalviewHelpUrl();\r
@@ -2805,6 +2838,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   CheckboxMenuItem autoCalculate = new CheckboxMenuItem(\r
           "Autocalculate Consensus", true);\r
 \r
+  CheckboxMenuItem sortByTree = new CheckboxMenuItem(\r
+          "Sort Alignment With New Tree", true);\r
+\r
   Menu sortByTreeMenu = new Menu();\r
 \r
   Menu sort = new Menu();\r
@@ -3000,6 +3036,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     sort.setLabel("Sort");\r
     calculate.setLabel("Calculate Tree");\r
     autoCalculate.addItemListener(this);\r
+    sortByTree.addItemListener(this);\r
     inputText.setLabel("Input from textbox");\r
     inputText.addActionListener(this);\r
     centreColumnLabelFlag.setLabel("Centre column labels");\r
@@ -3144,6 +3181,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     calculateMenu.add(pairwiseAlignmentMenuItem);\r
     calculateMenu.add(PCAMenuItem);\r
     calculateMenu.add(autoCalculate);\r
+    calculateMenu.add(sortByTree);\r
     this.add(statusBar, BorderLayout.SOUTH);\r
     pasteMenu.add(pasteNew);\r
     pasteMenu.add(pasteThis);\r