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.UtilityMethods;
+import jalview.ext.treeviewer.LoadedTreeAssociationI;
+import jalview.ext.treeviewer.LoadedTreeSequenceAssociation;
+import jalview.ext.treeviewer.TreeBuilderI;
+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.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.io.parsers.PhylogenyParser;
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;
*/
public final class AptxInit
{
-
- private final static Configuration APTX_CONFIG = new Configuration(
- "_aptx_jalview_configuration_file", false, false, false);
+ public final static Configuration APTX_CONFIG = new Configuration(
+ "_aptx_jalview_configuration_file",
+ false, 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();
private final static NHXParser.TAXONOMY_EXTRACTION TAXONOMY_EXTRACTION = APTX_CONFIG
.getTaxonomyExtraction();
- private static Map<MainFrame, JalviewBinding> activeAptx = new HashMap<>();
- public static MainFrame createInstanceFromCalculation(
+
+
+ public static TreeFrameI createInstanceFromCalculation(
final TreeBuilder calculatedTree)
{
- ExternalTreeBuilderI<Phylogeny, PhylogenyNode> aptxTreeBuilder = new AptxTreeBuilder(
+ TreeBuilderI aptxTreeBuilder = new AptxTreeBuilder(
calculatedTree);
- Phylogeny aptxTree = aptxTreeBuilder.buildTree();
+ TreeI aptxTree = aptxTreeBuilder.buildTree();
- MainFrame aptxApp = createAptxFrame(aptxTree,
+ TreeFrameI aptxApp = createAptxFrame(aptxTree,
calculatedTree.getAvport(), null);
return aptxApp;
}
+
/**
* Refactored from Archaeopteryx.main
*
* @throws IOException
* @throws FileNotFoundException
*/
- public static MainFrame[] createInstancesFromFile(String filePath,
+ public static TreeFrameI[] createInstancesFromFile(
+ String filePath,
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(
+ final PhylogenyParser parser = ParserUtils
+ .createParserDependingOnFileType(
treeFile, VALIDATE_PHYLOXML_XSD);
if (parser instanceof NHXParser)
{
JvOptionPane.WARNING_MESSAGE );
}
}
- Phylogeny[] trees = PhylogenyMethods.readPhylogenies(parser, treeFile);
- MainFrame[] aptxFrames = new MainFrame[trees.length];
+ Phylogeny[] trees = PhylogenyMethods.readPhylogenies(parser,
+ treeFile);
+ aptxFrames = new TreeFrameI[trees.length];
for (int i = 0; i < trees.length; i++)
{
- Phylogeny tree = trees[i];
+ Phylogeny aptxPhylogeny = trees[i];
if (nhx_or_nexus && INTERNAL_NUMBERS_AS_CONFIDENCE)
{
- PhylogenyMethods.transferInternalNodeNamesToConfidence(tree, "");
+ PhylogenyMethods.transferInternalNodeNamesToConfidence(aptxPhylogeny,
+ "");
}
String treeTitle = treeFile.getName() + "[" + i + "]";
- tree.setName(treeTitle);
- aptxFrames[i] = createAptxFrame(tree, viewport, treeTitle);
+ aptxPhylogeny.setName(treeTitle);
+ aptxFrames[i] = createAptxFrame(aptxPhylogeny, viewport, treeTitle);
}
if (Desktop.instance != null)
{
Desktop.instance.stopLoading();
+ }
}
return aptxFrames;
}
- public static MainFrame[] createInstancesFromUrl(URL treeUrl,
+ public static TreeFrameI[] createInstancesFromUrl(URL treeUrl,
AlignmentViewport viewport)
throws FileNotFoundException, IOException, RuntimeException
{
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)
* @param viewport
* @return
*/
- public static MainFrame[] createInstancesFromDb(
+ public static TreeFrameI[] createInstancesFromDb(
PhylogeniesWebserviceClient treeDbClient, String identifier,
AlignmentViewport viewport)
{
URL url = null;
Phylogeny[] trees = null;
+ TreeFrameI[] aptxFrames = null;
if ((identifier != null) && (identifier.trim().length() > 0))
{
{ identifier }),
MessageManager.getString("label.invalid_url"),
JvOptionPane.ERROR_MESSAGE);
- return new MainFrame[0];
+ return new TreeFrameI[0];
}
identifier = id + "";
}
// _main_frame.getMainPanel().setWaitCursor();
// }
trees = ForesterUtil.readPhylogeniesFromUrl(url, parser);
+ aptxFrames = new TreeFrameI[trees.length];
} catch (final MalformedURLException e)
{
exception = true;
}
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 (treeDbClient.getName().equals(WebserviceUtil.TREE_FAM_NAME))
{
- phylogeny.setRerootable(false);
- phylogeny.setRooted(true);
+ aptxTree.setRerootable(false);
+ aptxTree.setRooted(true);
}
if (treeDbClient.getProcessingInstructions() != null)
{
try
{
- WebserviceUtil.processInstructions(treeDbClient, phylogeny);
+ WebserviceUtil.processInstructions(treeDbClient,
+ aptxTree);
} catch (final PhyloXmlDataFormatException e)
{
JvOptionPane.showInternalMessageDialog(Desktop.desktop,
{
try
{
- PhylogenyMethods.transferNodeNameToField(phylogeny,
+ PhylogenyMethods.transferNodeNameToField(aptxTree,
treeDbClient.getNodeField(), false);
} catch (final PhyloXmlDataFormatException e)
{
JvOptionPane.ERROR_MESSAGE);
}
}
- phylogeny.setIdentifier(
+ 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(" ", "_"));
}
- aptxApp.getMainPanel().getCurrentTreePanel()
+ aptxApp.getTreePanel()
.setTreeFile(new File(my_name_for_file));
- AptxUtil.lookAtSomeTreePropertiesForAptxControlSettings(
- phylogeny, aptxApp.getMainPanel().getControlPanel(),
- APTX_CONFIG);
- // _main_frame.getMainPanel().getControlPanel().showWhole();
+ // AptxUtil.lookAtSomeTreePropertiesForAptxControlSettings(
+ // aptxTree, aptxApp.getMainPanel().getControlPanel(),
+ // APTX_CONFIG);
+ aptxApp.getTreeControls().displayEntireTree();
- aptxApp.activateSaveAllIfNeeded();
+ aptxApp.checkMultipleTrees();
+ aptxFrames[i++] = aptxApp;
}
}
}
{
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;
}
- public static ExternalTreeViewerBindingI<?> bindNodesToJalviewSequences(
- final MainFrame aptxApp,
- final AlignmentViewport jalviewAlignViewport,
- final Map<SequenceI, PhylogenyNode> alignMappedToNodes,
- final Map<PhylogenyNode, SequenceI> nodesMappedToAlign)
+ protected static TreeFrameI createAptxFrame(
+ final Phylogeny aptxTree,
+ final AlignmentViewport jalviewAlignport, String treeTitle)
{
- JalviewBinding treeBinding = new JalviewBinding(aptxApp,
- jalviewAlignViewport,
- alignMappedToNodes, nodesMappedToAlign);
- activeAptx.put(aptxApp, treeBinding);
- return treeBinding;
- }
+ 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();
+ TreeViewerUtils.associateNodesWithJalviewSequences(aptxApp, jalviewAlignport,
+ bindAptxNodes.getAlignmentWithNodes(),
+ bindAptxNodes.getNodesWithAlignment());
+ TreeViewerUtils.addTreeViewFrameToJalview(aptxApp);
- public static MainFrame bindTreeViewFrameToJalview(
- final MainFrame aptxApp)
- {
- int width = 400;
- int height = 550;
- aptxApp.setMinimumSize(new Dimension(width, height));
- // aptxApp.setFont(Desktop.instance.getFont());
- // aptxApp.getMainPanel().setFont(Desktop.instance.getFont());
- String frameTitle = MessageManager.getString("label.aptx_title");
- File treeFile = aptxApp.getMainPanel().getCurrentTreePanel()
- .getTreeFile();
- if (treeFile != null)
- {
- frameTitle += MessageManager.formatMessage("label.aptx_title_append",
- new String[]
- { treeFile.getAbsolutePath() });
- }
- Desktop.addInternalFrame(aptxApp, frameTitle, true, width, height, true,
- true);
+ // 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;
}