JAL-2805 removed unused Aptx instance creation code
[jalview.git] / src / jalview / ext / archaeopteryx / AptxInit.java
index d76214e..9b89cea 100644 (file)
@@ -1,30 +1,27 @@
 package jalview.ext.archaeopteryx;
 
-import jalview.analysis.TreeBuilder;
-import jalview.datamodel.SequenceI;
-import jalview.ext.treeviewer.ExternalTreeBuilderI;
-import jalview.ext.treeviewer.ExternalTreeViewerBindingI;
+import jalview.ext.forester.io.UtilityMethods;
+import jalview.ext.treeviewer.LoadedTreeAssociationI;
+import jalview.ext.treeviewer.LoadedTreeSequenceAssociation;
+import jalview.ext.treeviewer.TreeFrameI;
+import jalview.ext.treeviewer.TreeI;
+import jalview.ext.treeviewer.TreeViewerUtils;
 import jalview.gui.Desktop;
 import jalview.gui.JvOptionPane;
 import jalview.util.MessageManager;
 import jalview.viewmodel.AlignmentViewport;
 
-import java.awt.Dimension;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
 
 import org.forester.archaeopteryx.AptxUtil;
-import org.forester.archaeopteryx.Archaeopteryx;
 import org.forester.archaeopteryx.Configuration;
-import org.forester.archaeopteryx.MainFrame;
 import org.forester.archaeopteryx.webservices.PhylogeniesWebserviceClient;
 import org.forester.archaeopteryx.webservices.WebserviceUtil;
-import org.forester.archaeopteryx.webservices.WebservicesManager;
 import org.forester.io.parsers.PhylogenyParser;
 import org.forester.io.parsers.nexus.NexusPhylogeniesParser;
 import org.forester.io.parsers.nhx.NHXParser;
@@ -34,7 +31,6 @@ import org.forester.io.parsers.tol.TolParser;
 import org.forester.io.parsers.util.ParserUtils;
 import org.forester.phylogeny.Phylogeny;
 import org.forester.phylogeny.PhylogenyMethods;
-import org.forester.phylogeny.PhylogenyNode;
 import org.forester.phylogeny.data.Identifier;
 import org.forester.util.ForesterUtil;
 
@@ -47,9 +43,19 @@ import org.forester.util.ForesterUtil;
  */
 public final class AptxInit
 {
+  public final static InputStream CONFIG_LOC = AptxInit.class
 
-  private final static Configuration APTX_CONFIG = new Configuration(
-          "_aptx_jalview_configuration_file", false, false, false);
+          .getResourceAsStream("/_aptx_jalview_configuration_file.txt");
+
+  public final static Configuration APTX_CONFIG = new Configuration(
+          CONFIG_LOC,
+          false, false);
+  // static
+  // {
+  // APTX_CONFIG.setBaseFontFamilyName(
+  // Desktop.instance.getFont().getFamily().replaceAll(" ", "_"));
+  // APTX_CONFIG.setBaseFontSize(Desktop.instance.getFont().getSize());
+  // }
 
   private final static boolean VALIDATE_PHYLOXML_XSD = APTX_CONFIG
           .isValidatePhyloXmlAgainstSchema();
@@ -66,22 +72,30 @@ public final class AptxInit
   private final static NHXParser.TAXONOMY_EXTRACTION TAXONOMY_EXTRACTION = APTX_CONFIG
           .getTaxonomyExtraction();
 
-  private static Map<MainFrame, JalviewBinding> activeAptx = new HashMap<>();
 
+  public static TreeFrameI createInstanceFromNhx(String treeTitle,
+          String nhxString, AlignmentViewport viewport)
+          throws IOException
+  {
+    if (Desktop.instance != null)
+    {
+      Desktop.instance.startLoading(treeTitle);
+    }
 
+    Phylogeny aptxPhylogeny = Phylogeny
+            .createInstanceFromNhxString(nhxString);
+    aptxPhylogeny.setName(treeTitle);
 
-  public static MainFrame createInstanceFromCalculation(
-          final TreeBuilder calculatedTree)
-  {
-    ExternalTreeBuilderI<Phylogeny, PhylogenyNode> aptxTreeBuilder = new AptxTreeBuilder(
-            calculatedTree);
+    TreeFrameI aptxFrame = createAptxFrame(aptxPhylogeny, viewport,
+            treeTitle);
 
-    Phylogeny aptxTree = aptxTreeBuilder.buildTree();
+    if (Desktop.instance != null)
+    {
+      Desktop.instance.stopLoading();
+    }
+
+    return aptxFrame;
 
-    MainFrame aptxApp = createAptxFrame(aptxTree,
-            calculatedTree.getAvport(), null);
-            
-    return aptxApp;
   }
 
   /**
@@ -93,71 +107,85 @@ public final class AptxInit
    * @throws IOException
    * @throws FileNotFoundException
    */
-  public static MainFrame[] createInstancesFromFile(String filePath,
+  public static TreeFrameI[] createInstancesFromFile(File treeFile,
           AlignmentViewport viewport)
           throws FileNotFoundException, IOException
   {
-    File treeFile = new File(filePath);
-    final String err = ForesterUtil.isReadableFile(treeFile);
-    if (!ForesterUtil.isEmpty(err))
+    TreeFrameI[] aptxFrames = null;
+    if (UtilityMethods.canForesterReadFile(treeFile))
     {
-      JvOptionPane.showMessageDialog(Desktop.desktop, err,
-              MessageManager.getString("label.problem_reading_tree_file"),
-              JvOptionPane.WARNING_MESSAGE);
-    }
-
-    if (Desktop.instance != null)
-    {
-      Desktop.instance.startLoading(filePath);
-    }
-    boolean nhx_or_nexus = false;
-    final PhylogenyParser parser = ParserUtils.createParserDependingOnFileType(
-            treeFile, VALIDATE_PHYLOXML_XSD);
-    if (parser instanceof NHXParser)
-    {
-      nhx_or_nexus = true;
-      final NHXParser nhx = (NHXParser) parser;
-      nhx.setReplaceUnderscores(REPLACE_NHX_UNDERSCORES);
-      nhx.setIgnoreQuotes(false);
-      nhx.setTaxonomyExtraction(TAXONOMY_EXTRACTION);
-    }
-    else if (parser instanceof NexusPhylogeniesParser)
-    {
-      nhx_or_nexus = true;
-      final NexusPhylogeniesParser nex = (NexusPhylogeniesParser) parser;
-      nex.setReplaceUnderscores(REPLACE_NHX_UNDERSCORES);
-      nex.setIgnoreQuotes(false);
-    }
-//    else if (p instanceof PhyloXmlParser)
-//    {
-//      MainFrameApplication.warnIfNotPhyloXmlValidation(APTX_CONFIG);
-//    }
-    Phylogeny[] trees = PhylogenyMethods.readPhylogenies(parser, treeFile);
-    MainFrame[] aptxFrames = new MainFrame[trees.length];
 
+      if (Desktop.instance != null)
+      {
+        Desktop.instance.startLoading(treeFile.getCanonicalPath());
+      }
+      boolean nhx_or_nexus = false;
+      final PhylogenyParser parser = ParserUtils
+              .createParserDependingOnFileType(treeFile,
+                      VALIDATE_PHYLOXML_XSD);
+      if (parser instanceof NHXParser)
+      {
+        nhx_or_nexus = true;
+        final NHXParser nhx = (NHXParser) parser;
+        nhx.setReplaceUnderscores(REPLACE_NHX_UNDERSCORES);
+        nhx.setIgnoreQuotes(false);
+        nhx.setTaxonomyExtraction(TAXONOMY_EXTRACTION);
+      }
+      else if (parser instanceof NexusPhylogeniesParser)
+      {
+        nhx_or_nexus = true;
+        final NexusPhylogeniesParser nex = (NexusPhylogeniesParser) parser;
+        nex.setReplaceUnderscores(REPLACE_NHX_UNDERSCORES);
+        nex.setIgnoreQuotes(false);
+      }
+      else if (parser instanceof PhyloXmlParser)
+      {
+        if (VALIDATE_PHYLOXML_XSD == false)
+        {
+          JvOptionPane.showInternalMessageDialog(Desktop.desktop,
+                  MessageManager.getString("error.phyloxml_validation"),
+                  MessageManager.getString("label.file_open_error"),
+                  JvOptionPane.WARNING_MESSAGE);
+        }
+      }
+      Phylogeny[] trees = PhylogenyMethods.readPhylogenies(parser,
+              treeFile);
+      aptxFrames = new TreeFrameI[trees.length];
 
-    for (int i = 0; i < trees.length; i++)
+      for (int i = 0; i < trees.length; i++)
       {
-      Phylogeny tree = trees[i];
+        Phylogeny aptxPhylogeny = trees[i];
 
-      if (nhx_or_nexus && INTERNAL_NUMBERS_AS_CONFIDENCE)
+        if (nhx_or_nexus && INTERNAL_NUMBERS_AS_CONFIDENCE)
+        {
+          PhylogenyMethods
+                  .transferInternalNodeNamesToConfidence(aptxPhylogeny, "");
+        }
+        String treeTitle = treeFile.getName() + "[" + i + "]";
+        aptxPhylogeny.setName(treeTitle);
+        aptxFrames[i] = createAptxFrame(aptxPhylogeny, viewport, treeTitle);
+
+      }
+      if (Desktop.instance != null)
       {
-        PhylogenyMethods.transferInternalNodeNamesToConfidence(tree, "");
+        Desktop.instance.stopLoading();
       }
-      String treeTitle = treeFile.getName() + "[" + i + "]";
-      tree.setName(treeTitle);
-      aptxFrames[i] = createAptxFrame(tree, viewport, treeTitle);
-
-    }
-    if (Desktop.instance != null)
-    {
-      Desktop.instance.stopLoading();
     }
     return aptxFrames;
-    }
+  }
+
 
+  public static TreeFrameI[] createInstancesFromFile(
+          String filePath,
+          AlignmentViewport viewport)
+          throws FileNotFoundException, IOException
+  {
+    File treeFile = new File(filePath);
+    return createInstancesFromFile(treeFile, viewport);
+
+    }
 
-  public static MainFrame[] createInstancesFromUrl(URL treeUrl,
+  public static TreeFrameI[] createInstancesFromUrl(URL treeUrl,
           AlignmentViewport viewport)
           throws FileNotFoundException, IOException, RuntimeException
   {
@@ -172,11 +200,11 @@ public final class AptxInit
              REPLACE_NHX_UNDERSCORES, INTERNAL_NUMBERS_AS_CONFIDENCE,
             TAXONOMY_EXTRACTION, MIDPOINT_REROOT);
 
-    MainFrame[] aptxFrames = new MainFrame[trees.length];
+    TreeFrameI[] aptxFrames = new TreeFrameI[trees.length];
     for (int i = 0; i < trees.length; i++)
     {
-      Phylogeny tree = trees[i];
-      aptxFrames[i] = createAptxFrame(tree, viewport, treeTitle);
+      Phylogeny aptxTree = trees[i];
+      aptxFrames[i] = createAptxFrame(aptxTree, viewport, treeTitle);
     }
 
     if (Desktop.instance != null)
@@ -195,21 +223,14 @@ public final class AptxInit
    * @param viewport
    * @return
    */
-  public static MainFrame[] createInstancesFromDb(int databaseIndex,
+  public static TreeFrameI[] createInstancesFromDb(
+          PhylogeniesWebserviceClient treeDbClient, String identifier,
           AlignmentViewport viewport)
   {
 
     URL url = null;
     Phylogeny[] trees = null;
-    final WebservicesManager webservices_manager = WebservicesManager
-            .getInstance();
-    final PhylogeniesWebserviceClient client = webservices_manager
-            .getAvailablePhylogeniesWebserviceClient(databaseIndex);
-    String identifier = JvOptionPane.showInternalInputDialog(
-            Desktop.desktop,
-            client.getInstructions() + "\n(Reference: "
-                    + client.getReference() + ")",
-            client.getDescription(), JvOptionPane.QUESTION_MESSAGE);
+    TreeFrameI[] aptxFrames = null;
 
     if ((identifier != null) && (identifier.trim().length() > 0))
     {
@@ -219,7 +240,7 @@ public final class AptxInit
       }
 
       identifier = identifier.trim();
-      if (client.isQueryInteger())
+      if (treeDbClient.isQueryInteger())
       {
         identifier = identifier.replaceAll("^\\D+", "");
 
@@ -230,21 +251,24 @@ public final class AptxInit
         } catch (final NumberFormatException e)
         {
           JvOptionPane.showInternalMessageDialog(Desktop.desktop,
-                  "Identifier is expected to be a number",
-                  "Can not open URL", JvOptionPane.ERROR_MESSAGE);
-          return new MainFrame[0];
+                  MessageManager.formatMessage(
+                          "error.database_id_has_letters", new String[]
+                          { identifier }),
+                  MessageManager.getString("label.invalid_url"),
+                  JvOptionPane.ERROR_MESSAGE);
+          return new TreeFrameI[0];
         }
         identifier = id + "";
       }
       boolean exception = false;
       try
       {
-        String url_str = client.getUrl();
+        String url_str = treeDbClient.getUrl();
         url_str = url_str.replaceFirst(
                 PhylogeniesWebserviceClient.QUERY_PLACEHOLDER, identifier);
         url = new URL(url_str);
         PhylogenyParser parser = null;
-        switch (client.getReturnFormat())
+        switch (treeDbClient.getReturnFormat())
         {
         case TOL_XML_RESPONSE:
           parser = new TolParser();
@@ -298,7 +322,7 @@ public final class AptxInit
           break;
         default:
           throw new IllegalArgumentException(
-                  "unknown format: " + client.getReturnFormat());
+                  "unknown format: " + treeDbClient.getReturnFormat());
         }
         //
         // if (_main_frame.getMainPanel().getCurrentTreePanel() != null)
@@ -310,30 +334,37 @@ public final class AptxInit
         // _main_frame.getMainPanel().setWaitCursor();
         // }
         trees = ForesterUtil.readPhylogeniesFromUrl(url, parser);
+        aptxFrames = new TreeFrameI[trees.length];
       } catch (final MalformedURLException e)
       {
         exception = true;
         JvOptionPane.showInternalMessageDialog(Desktop.desktop,
-                "Malformed URL: " + url + "\n" + e.getLocalizedMessage(),
-                "Malformed URL", JvOptionPane.ERROR_MESSAGE);
+                MessageManager.formatMessage(
+                        "exception.unable_to_launch_url", new String[]
+                        { url.toString() }),
+                MessageManager.getString("label.invalid_url"),
+                JvOptionPane.ERROR_MESSAGE);
+        System.err.println(e.getLocalizedMessage());
       } catch (final IOException e)
       {
         exception = true;
         JvOptionPane.showInternalMessageDialog(Desktop.desktop,
                 "Could not read from " + url + "\n"
                         + e.getLocalizedMessage(),
-                "Failed to read tree from " + client.getName() + " for "
+                "Failed to read tree from " + treeDbClient.getName() + " for "
                         + identifier,
                 JvOptionPane.ERROR_MESSAGE);
+        System.err.println(e.getLocalizedMessage());
       } catch (final NumberFormatException e)
       {
         exception = true;
         JvOptionPane.showInternalMessageDialog(Desktop.desktop,
                 "Could not read from " + url + "\n"
                         + e.getLocalizedMessage(),
-                "Failed to read tree from " + client.getName() + " for "
+                "Failed to read tree from " + treeDbClient.getName() + " for "
                         + identifier,
                 JvOptionPane.ERROR_MESSAGE);
+        System.err.println(e.getLocalizedMessage());
       } catch (final Exception e)
       {
         exception = true;
@@ -341,33 +372,26 @@ public final class AptxInit
         JvOptionPane.showInternalMessageDialog(Desktop.desktop,
                 e.getLocalizedMessage(), "Unexpected Exception",
                 JvOptionPane.ERROR_MESSAGE);
-      } finally
-      {
-        // if (_main_frame.getCurrentTreePanel() != null)
-        // {
-        // _main_frame.getCurrentTreePanel().setArrowCursor();
-        // }
-        // else
-        // {
-        // _main_frame.getMainPanel().setArrowCursor();
-        // }
+        System.err.println(e.getLocalizedMessage());
       }
       if ((trees != null) && (trees.length > 0))
       {
-        for (final Phylogeny phylogeny : trees)
+        int i = 0;
+        for (final Phylogeny aptxTree : trees)
         {
-          if (!phylogeny.isEmpty())
+          if (!aptxTree.isEmpty())
           {
-            if (client.getName().equals(WebserviceUtil.TREE_FAM_NAME))
+            if (treeDbClient.getName().equals(WebserviceUtil.TREE_FAM_NAME))
             {
-              phylogeny.setRerootable(false);
-              phylogeny.setRooted(true);
+              aptxTree.setRerootable(false);
+              aptxTree.setRooted(true);
             }
-            if (client.getProcessingInstructions() != null)
+            if (treeDbClient.getProcessingInstructions() != null)
             {
               try
               {
-                WebserviceUtil.processInstructions(client, phylogeny);
+                WebserviceUtil.processInstructions(treeDbClient,
+                        aptxTree);
               } catch (final PhyloXmlDataFormatException e)
               {
                 JvOptionPane.showInternalMessageDialog(Desktop.desktop,
@@ -375,12 +399,12 @@ public final class AptxInit
                         JvOptionPane.ERROR_MESSAGE);
               }
             }
-            if (client.getNodeField() != null)
+            if (treeDbClient.getNodeField() != null)
             {
               try
               {
-                PhylogenyMethods.transferNodeNameToField(phylogeny,
-                        client.getNodeField(), false);
+                PhylogenyMethods.transferNodeNameToField(aptxTree,
+                        treeDbClient.getNodeField(), false);
               } catch (final PhyloXmlDataFormatException e)
               {
                 JvOptionPane.showInternalMessageDialog(Desktop.desktop,
@@ -388,48 +412,51 @@ public final class AptxInit
                         JvOptionPane.ERROR_MESSAGE);
               }
             }
-            phylogeny.setIdentifier(
-                    new Identifier(identifier, client.getName()));
+            aptxTree.setIdentifier(
+                    new Identifier(identifier, treeDbClient.getName()));
             // _main_frame.getJMenuBar().remove(_main_frame.getHelpMenu());
-            // _main_frame.getMenuBarOfMainFrame()
+            // _main_frame.getMenuBarOfExternalTreeFrameI()
             // .add(_main_frame.getHelpMenu());
-            // _main_frame.getMainPanel().addPhylogenyInNewTab(phylogeny,
+            // _main_frame.getMainPanel().addExternalTreeIInNewTab(ExternalTreeI,
             // _main_frame.getConfiguration(),
             // new File(url.getFile()).getName(), url.toString());
 
-            MainFrame aptxApp = createAptxFrame(phylogeny, viewport,
+
+            TreeFrameI aptxApp = createAptxFrame(aptxTree,
+                    viewport,
                     url.getFile());
             String my_name_for_file = "";
-            if (!ForesterUtil.isEmpty(phylogeny.getName()))
+            if (!ForesterUtil.isEmpty(aptxTree.getName()))
             {
-              my_name_for_file = new String(phylogeny.getName())
+              my_name_for_file = new String(aptxTree.getName())
                       .replaceAll(" ", "_");
             }
-            else if (phylogeny.getIdentifier() != null)
+            else if (aptxTree.getIdentifier() != null)
             {
               final StringBuffer sb = new StringBuffer();
               if (!ForesterUtil
-                      .isEmpty(phylogeny.getIdentifier().getProvider()))
+                      .isEmpty(aptxTree.getIdentifier().getProvider()))
               {
-                sb.append(phylogeny.getIdentifier().getProvider());
+                sb.append(aptxTree.getIdentifier().getProvider());
                 sb.append("_");
               }
-              sb.append(phylogeny.getIdentifier().getValue());
+              sb.append(aptxTree.getIdentifier().getValue());
               my_name_for_file = new String(
                       sb.toString().replaceAll(" ", "_"));
             }
-            // _main_frame.getMainPanel().getCurrentTreePanel()
-            // .setTreeFile(new File(my_name_for_file));
-            AptxUtil.lookAtSomeTreePropertiesForAptxControlSettings(
-                    phylogeny, aptxApp.getMainPanel().getControlPanel(),
-                    APTX_CONFIG);
-            // _main_frame.getMainPanel().getControlPanel().showWhole();
-
-            aptxApp.activateSaveAllIfNeeded();
+            aptxApp.getTreePanel()
+                    .setTreeFile(new File(my_name_for_file));
+            // AptxUtil.lookAtSomeTreePropertiesForAptxControlSettings(
+            // aptxTree, aptxApp.getMainPanel().getControlPanel(),
+            // APTX_CONFIG);
+            aptxApp.getTreeControls().displayEntireTree();
+
+            aptxApp.checkMultipleTrees();
+            aptxFrames[i++] = aptxApp;
           }
         }
       }
-      else if (!exception)
+      else if (!exception) // ..what?
       {
         JvOptionPane.showMessageDialog(null,
                 ForesterUtil.wordWrap(
@@ -449,85 +476,86 @@ public final class AptxInit
         {
           // Not important if this fails, do nothing.
         }
-        // _main_frame.getContentPane().repaint();
       }
     }
 
-    System.gc();
-
 
     if (Desktop.instance != null)
     {
       Desktop.instance.stopLoading();
     }
-    return null;
+    return aptxFrames;
 
 
   }
 
 
 
-
-
-  public static MainFrame createAptxFrame(
-          final Phylogeny aptxTree,
-          final AlignmentViewport jalviewAlignport, String treeTitle)
+  public static TreeFrameI createAptxFrame(TreeI aptxTree,
+          AlignmentViewport jalviewAlignport, String treeTitle)
   {
-    MainFrame aptxApp = Archaeopteryx.createApplication(aptxTree,
-            APTX_CONFIG, treeTitle);
-
-    LoadedTreeSequenceAssociation bindAptxNodes = new LoadedTreeSequenceAssociation(
-            jalviewAlignport.getAlignment().getSequencesArray(), aptxTree);
+    validateConfig(APTX_CONFIG);
+    TreeFrameI aptxApp = aptxTree
+            .createTreeViewerFromTree(treeTitle);
+    TreeI jalviewTree = aptxApp.getTree();
+    LoadedTreeAssociationI bindAptxNodes = new LoadedTreeSequenceAssociation(
+            jalviewAlignport.getAlignment().getSequencesArray(),
+            jalviewTree);
     bindAptxNodes.associateLeavesToSequences();
 
-    bindNodesToJalviewSequences(aptxApp, jalviewAlignport,
+    TreeViewerUtils.associateNodesWithJalviewSequences(aptxApp, jalviewAlignport,
             bindAptxNodes.getAlignmentWithNodes(),
             bindAptxNodes.getNodesWithAlignment());
-    bindTreeViewFrameToJalview(aptxApp);
+    TreeViewerUtils.addTreeViewFrameToJalview(aptxApp);
 
+    // adaptAptxGui(aptxApp); //moved to AptxFrame
     return aptxApp;
   }
 
-  // private static void addPartitioningSlider(MainFrame aptxFrame)
-  // {
-  // JSlider slider = new JSlider();
-  //
-  //
-  // }
 
-  public static ExternalTreeViewerBindingI<?> bindNodesToJalviewSequences(
-          final MainFrame aptxApp,
-          final AlignmentViewport jalviewAlignViewport,
-          final Map<SequenceI, PhylogenyNode> alignMappedToNodes,
-          final Map<PhylogenyNode, SequenceI> nodesMappedToAlign)
-  {
-    JalviewBinding treeBinding = new JalviewBinding(aptxApp,
-            jalviewAlignViewport,
-            alignMappedToNodes, nodesMappedToAlign);
-    activeAptx.put(aptxApp, treeBinding);
-    return treeBinding;
-  }
-
-
-  public static MainFrame bindTreeViewFrameToJalview(
-          final MainFrame aptxApp)
+  protected static TreeFrameI createAptxFrame(
+          final Phylogeny aptxTree,
+          final AlignmentViewport jalviewAlignport, String treeTitle)
   {
-    int width = 400;
-    int height = 550;
-    aptxApp.setMinimumSize(new Dimension(width, height));
-    // aptxApp.setFont(Desktop.instance.getFont());
-    // aptxApp.getMainPanel().setFont(Desktop.instance.getFont());
+    validateConfig(APTX_CONFIG);
+    TreeFrameI aptxApp = new AptxFrame(aptxTree, APTX_CONFIG,
+            treeTitle);
+    TreeI jalviewTree = aptxApp.getTree();
+    LoadedTreeAssociationI bindAptxNodes = new LoadedTreeSequenceAssociation(
+            jalviewAlignport.getAlignment().getSequencesArray(),
+            jalviewTree);
+    bindAptxNodes.associateLeavesToSequences();
 
-    Desktop.addInternalFrame(aptxApp, "Archaeopteryx Tree View", true,
-            width, height, true, true);
+    TreeViewerUtils.associateNodesWithJalviewSequences(aptxApp, jalviewAlignport,
+            bindAptxNodes.getAlignmentWithNodes(),
+            bindAptxNodes.getNodesWithAlignment());
+    TreeViewerUtils.addTreeViewFrameToJalview(aptxApp);
 
+    // adaptAptxGui(aptxApp); //moved to AptxFrame
     return aptxApp;
-
   }
 
-  public static Map<MainFrame, JalviewBinding> getAllAptxFrames()
+
+  private static boolean validateConfig(Configuration aptxConfig)
   {
-    return activeAptx;
+    if (aptxConfig == null || aptxConfig.isCouldReadConfigFile() == false)
+    {
+      int keepGoing = JvOptionPane.showConfirmDialog(Desktop.desktop,
+              MessageManager.getString("label.aptx_config_not_found"),
+              MessageManager.formatMessage("label.couldnt_locate",
+                      new String[]
+                      { "_aptx_jalview_configuration_file" }),
+              JvOptionPane.YES_NO_CANCEL_OPTION);
+
+      if (keepGoing == JvOptionPane.CANCEL_OPTION
+              || keepGoing == JvOptionPane.CLOSED_OPTION
+              || keepGoing == JvOptionPane.NO_OPTION)
+      {
+        return false;
+      }
+
+    }
+    return true;
   }