click_to: get_ext_descendents_data display
# Default click-to option (any of the above if set to "display")
-default_click_to: display_node_data
+default_click_to: select_nodes
display_color: node_box 0x000000
display_color: collapsed 0x000000
display_color: matching_a 0xCC6600
-display_color: matching_b 0x0000CC
-display_color: matching_a_and_b 0xCC70CC
+display_color: matching_b 0xCC70CC
+display_color: matching_a_and_b 0x0000CC
display_color: duplication 0xFF00FF
display_color: speciation 0xFFFF00
display_color: duplication_or_specation 0xFFAA20
-Subproject commit b977efb66f2d0b539bd433e80762737925035edc
+Subproject commit eb22dac14771c467104f57362e3a624d0140f897
--- /dev/null
+package jalview.ext.archaeopteryx;
+
+import jalview.ext.treeviewer.ExternalTreeViewerI;
+
+import org.forester.archaeopteryx.MainFrame;
+
+public class Aptx implements ExternalTreeViewerI
+{
+ private final MainFrame aptxApp;
+
+ public Aptx(MainFrame aptx)
+ {
+ aptxApp = aptx;
+
+
+ }
+}
* @author kjvanderheide
*
*/
-public final class ArchaeopteryxInit
+public final class AptxInit
{
/**
* Test method, should generally not be used as it does not bind the tree to
public static MainFrame createInstance(
final TreeBuilder calculatedTree) // very dense method, to be split up
{
- ExternalTreeBuilderI<Phylogeny, PhylogenyNode> aptxTreeBuilder = new ArchaeopteryxTreeBuilder(
+ ExternalTreeBuilderI<Phylogeny, PhylogenyNode> aptxTreeBuilder = new AptxTreeBuilder(
calculatedTree);
Phylogeny aptxTree = aptxTreeBuilder.buildTree();
int width = 400;
int height = 550;
aptxApp.setMinimumSize(new Dimension(width, height));
+ // aptxApp.setFont(Desktop.instance.getFont());
+ // aptxApp.getMainPanel().setFont(Desktop.instance.getFont());
Desktop.addInternalFrame(aptxApp, "Archaeopteryx Tree View", true,
width, height, true, true);
* @author kjvanderheide
*
*/
-public class ArchaeopteryxTreeBuilder
+public class AptxTreeBuilder
implements ExternalTreeBuilderI<Phylogeny, PhylogenyNode>
{
protected final SequenceI[] sequences;
private final Map<PhylogenyNode, SequenceI> nodesWithAlignment;
- public ArchaeopteryxTreeBuilder(final TreeBuilder calculatedTree)
+ public AptxTreeBuilder(final TreeBuilder calculatedTree)
{
jalviewTree = calculatedTree;
sequences = jalviewTree.getSequences();
--- /dev/null
+package jalview.ext.archaeopteryx;
+
+import jalview.ext.treeviewer.ExternalTreePanelI;
+
+public class AptxTreePanel implements ExternalTreePanelI
+{
+ private final org.forester.archaeopteryx.TreePanel treeView;
+
+ public AptxTreePanel(org.forester.archaeopteryx.TreePanel aptxTreePanel)
+ {
+ treeView = aptxTreePanel;
+
+ }
+}
@Override
public void showMatchingChildSequences(final PhylogenyNode parentNode)
{
- final List<PhylogenyNode> childNodes = PhylogenyMethods
+ List<PhylogenyNode> childNodes = PhylogenyMethods
.getAllDescendants(parentNode);
- // final BranchColor branchColor = new BranchColor();
for (PhylogenyNode childNode : childNodes)
{
+
SequenceI matchingSequence = nodesBoundToSequences.get(childNode);
if (matchingSequence != null)
{
{
this.parentAvport = parentAvport;
}
-
+ // av.setCurrentTree(tree);
+ //
+ // /*
+ // * isPopupTrigger is set for mousePressed (Mac)
+ // * or mouseReleased (Windows)
+ // */
+ // if (e.isPopupTrigger())
+ // {
+ // if (highlightNode != null)
+ // {
+ // chooseSubtreeColour();
+ // }
+ // return;
+ // }
+ //
+ // /*
+ // * defer right-click handling on Windows to
+ // * mouseClicked; note isRightMouseButton
+ // * also matches Cmd-click on Mac which should do
+ // * nothing here
+ // */
+ // if (SwingUtilities.isRightMouseButton(e))
+ // {
+ // return;
+ // }
+ //
+ // int x = e.getX();
+ // int y = e.getY();
+ //
+ // Object ob = findElement(x, y);
+ //
+ // if (ob instanceof SequenceI)
+ // {
+ // treeSelectionChanged((Sequence) ob);
+ // PaintRefresher.Refresh(tp, ap.av.getSequenceSetId());
+ // repaint();
+ // av.sendSelection();
+ // return;
+ // }
+ // else if (!(ob instanceof SequenceNode))
+ // {
+ // // Find threshold
+ // if (tree.getMaxHeight() != 0)
+ // {
+ // threshold = (float) (x - offx)
+ // / (float) (getWidth() - labelLength - (2 * offx));
+ //
+ // List<SequenceNode> groups = tree.groupNodes(threshold);
+ // setColor(tree.getTopNode(), Color.black);
+ //
+ // AlignmentPanel[] aps = getAssociatedPanels();
+ //
+ // // TODO push calls below into a single AlignViewportI method?
+ // // see also AlignViewController.deleteGroups
+ // for (int a = 0; a < aps.length; a++)
+ // {
+ // aps[a].av.setSelectionGroup(null);
+ // aps[a].av.getAlignment().deleteAllGroups();
+ // aps[a].av.clearSequenceColours();
+ // if (aps[a].av.getCodingComplement() != null)
+ // {
+ // aps[a].av.getCodingComplement().setSelectionGroup(null);
+ // aps[a].av.getCodingComplement().getAlignment()
+ // .deleteAllGroups();
+ // aps[a].av.getCodingComplement().clearSequenceColours();
+ // }
+ // }
+ // colourGroups(groups);
+ // }
+ //
+ // PaintRefresher.Refresh(tp, ap.av.getSequenceSetId());
+ // repaint();
+ // }
}
}
+
+
public Map<SequenceI, PhylogenyNode> getAlignmentWithNodes()
{
return alignmentWithNodes;
package jalview.ext.forester.io;
+import jalview.ext.archaeopteryx.AptxInit;
import jalview.ext.archaeopteryx.JalviewBinding;
import jalview.ext.archaeopteryx.LoadedTreeAssociation;
-import jalview.ext.archaeopteryx.ArchaeopteryxInit;
import jalview.ext.treeviewer.ExternalTreeParserI;
import jalview.gui.Desktop;
import jalview.gui.JvOptionPane;
}
@Override
- public MainFrame loadTree(AlignmentViewport viewport)
+ public MainFrame loadTreeFile(AlignmentViewport viewport)
{
String[] AptxArgs = new String[] { "-c",
"_aptx_jalview_configuration_file", filePath };
aptx.getMainPanel().getCurrentTreePanel().getPhylogeny());
bindAptxNodes.associateLeavesToSequences();
+
new JalviewBinding(aptx, viewport, bindAptxNodes.getAlignmentWithNodes(),
bindAptxNodes.getNodesWithAlignment());
- ArchaeopteryxInit.bindFrameToJalview(aptx);
+ AptxInit.bindFrameToJalview(aptx);
return aptx;
}
+ //
+ // void readPhylogeniesFromURL() {
+ // URL url = null;
+ // Phylogeny[] phys = null;
+ // final String message = "Please enter a complete URL, for example
+ // \"http://purl.org/phylo/treebase/phylows/study/TB2:S15480?format=nexus\"";
+ // final String url_string = JOptionPane
+ // .showInputDialog( this,
+ // message,
+ // "Use URL/webservice to obtain a phylogeny",
+ // JOptionPane.QUESTION_MESSAGE );
+ // boolean nhx_or_nexus = false;
+ // if ( ( url_string != null ) && ( url_string.length() > 0 ) ) {
+ // try {
+ // url = new URL( url_string );
+ // PhylogenyParser parser = null;
+ // if ( url.getHost().toLowerCase().indexOf( "tolweb" ) >= 0 ) {
+ // parser = new TolParser();
+ // }
+ // else {
+ // parser = ParserUtils
+ // .createParserDependingOnUrlContents( url,
+ // getConfiguration().isValidatePhyloXmlAgainstSchema() );
+ // }
+ // if ( parser instanceof NexusPhylogeniesParser ) {
+ // nhx_or_nexus = true;
+ // }
+ // else if ( parser instanceof NHXParser ) {
+ // nhx_or_nexus = true;
+ // }
+ // if ( _mainpanel.getCurrentTreePanel() != null ) {
+ // _mainpanel.getCurrentTreePanel().setWaitCursor();
+ // }
+ // else {
+ // _mainpanel.setWaitCursor();
+ // }
+ // final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance();
+ // phys = factory.create( url.openStream(), parser );
+ // }
+ // catch ( final MalformedURLException e ) {
+ // JOptionPane.showMessageDialog( this,
+ // "Malformed URL: " + url + "\n" + e.getLocalizedMessage(),
+ // "Malformed URL",
+ // JOptionPane.ERROR_MESSAGE );
+ // }
+ // catch ( final IOException e ) {
+ // JOptionPane.showMessageDialog( this,
+ // "Could not read from " + url + "\n"
+ // + ForesterUtil.wordWrap( e.getLocalizedMessage(), 80 ),
+ // "Failed to read URL",
+ // JOptionPane.ERROR_MESSAGE );
+ // }
+ // catch ( final Exception e ) {
+ // JOptionPane.showMessageDialog( this,
+ // ForesterUtil.wordWrap( e.getLocalizedMessage(), 80 ),
+ // "Unexpected Exception",
+ // JOptionPane.ERROR_MESSAGE );
+ // }
+ // finally {
+ // if ( _mainpanel.getCurrentTreePanel() != null ) {
+ // _mainpanel.getCurrentTreePanel().setArrowCursor();
+ // }
+ // else {
+ // _mainpanel.setArrowCursor();
+ // }
+ // }
+ // if ( ( phys != null ) && ( phys.length > 0 ) ) {
+ // if ( nhx_or_nexus &&
+ // getOptions().isInternalNumberAreConfidenceForNhParsing() ) {
+ // for( final Phylogeny phy : phys ) {
+ // PhylogenyMethods.transferInternalNodeNamesToConfidence( phy, "" );
+ // }
+ // }
+ // AptxUtil.addPhylogeniesToTabs( phys,
+ // new File( url.getFile() ).getName(),
+ // new File( url.getFile() ).toString(),
+ // getConfiguration(),
+ // getMainPanel() );
+ // _mainpanel.getControlPanel().showWhole();
+ // }
+ // }
+ // activateSaveAllIfNeeded();
+ // System.gc();
+ // }
}
*/
public interface ExternalTreeParserI<F extends JInternalFrame>
{
- public F loadTree(AlignmentViewport viewport);
+ public F loadTreeFile(AlignmentViewport viewport);
}
--- /dev/null
+package jalview.ext.treeviewer;
+
+public interface ExternalTreeViewerI
+{
+
+}
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
-import jalview.ext.forester.io.TreeParser;
import jalview.ext.forester.io.SupportedTreeFileFilter;
+import jalview.ext.forester.io.TreeParser;
import jalview.ext.treeviewer.ExternalTreeParserI;
import jalview.gui.ColourMenuHelper.ColourChangeListener;
import jalview.gui.ViewSelectionMenu.ViewSetProvider;
{
ExternalTreeParserI<?> treeParser = new TreeParser(
filePath);
- treeParser.loadTree(viewport);
+ treeParser.loadTreeFile(viewport);
}
}
+ @Override
+ protected void loadTreeUrlItem_actionPerformed(ActionEvent e)
+ {
+
+ }
+
+ @Override
+ protected void loadTreeDbItem_actionPerformed(ActionEvent e)
+ {
+
+ }
+
public TreePanel showNewickTree(NewickFile nf, String treeTitle)
{
return showNewickTree(nf, treeTitle, 600, 500, 4, 5);
import jalview.api.analysis.ScoreModelI;
import jalview.api.analysis.SimilarityParamsI;
import jalview.datamodel.SequenceGroup;
-import jalview.ext.archaeopteryx.ArchaeopteryxInit;
+import jalview.ext.archaeopteryx.AptxInit;
import jalview.util.MessageManager;
import java.awt.BorderLayout;
substitutionMatrix, params);
TreeBuilder calculatedTree = treeCalculator.makeTree(af.getViewport());
- ArchaeopteryxInit.createInstance(calculatedTree);
+ AptxInit.createInstance(calculatedTree);
TreeModel tree = new TreeModel(calculatedTree);
openTreePanel(tree, treeAlgo, substitutionMatrix);
private boolean showAutoCalculatedAbove = false;
- private Map<KeyStroke, JMenuItem> accelerators = new HashMap<KeyStroke, JMenuItem>();
+ private Map<KeyStroke, JMenuItem> accelerators = new HashMap<>();
private SplitContainerI splitFrame;
}
});
- JMenuItem loadTreeMenuItem = new JMenuItem(
- MessageManager.getString("label.load_associated_tree"));
- loadTreeMenuItem.setActionCommand(
- MessageManager.getString("label.load_tree_for_sequence_set"));
- loadTreeMenuItem.addActionListener(new ActionListener()
+ JMenuItem loadTreeFile = new JMenuItem(
+ MessageManager.getString("label.from_file"));
+ // loadTreeMenuItem.setActionCommand(
+ // MessageManager.getString());
+ loadTreeFile.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
}
});
+ JMenuItem loadTreeUrl = new JMenuItem(
+ MessageManager.getString("label.from_url"));
+ loadTreeUrl.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ loadTreeUrlItem_actionPerformed(e);
+ }
+ });
+
+ JMenuItem loadTreeDb = new JMenuItem(
+ MessageManager.getString("FIX ME"));
+ loadTreeDb.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ loadTreeDbItem_actionPerformed(e);
+ }
+ });
+
scaleAbove.setVisible(false);
scaleAbove.setText(MessageManager.getString("action.scale_above"));
scaleAbove.addActionListener(new ActionListener()
JMenu exportImageMenu = new JMenu(
MessageManager.getString("label.export_image"));
+ JMenu loadTreeMenu = new JMenu(
+ MessageManager.getString("label.load_associated_tree"));
+ loadTreeMenu.setActionCommand("label.load_tree_for_sequence_set");
+
JMenu fileMenu = new JMenu(MessageManager.getString("action.file"));
+
+ loadTreeMenu.add(loadTreeFile);
+ loadTreeMenu.add(loadTreeUrl);
+ loadTreeMenu.add(loadTreeDb);
+
alignFrameMenuBar.add(fileMenu);
alignFrameMenuBar.add(editMenu);
alignFrameMenuBar.add(selectMenu);
fileMenu.add(exportImageMenu);
fileMenu.add(exportFeatures);
fileMenu.add(exportAnnotations);
- fileMenu.add(loadTreeMenuItem);
+ fileMenu.add(loadTreeMenu);
fileMenu.add(associatedData);
fileMenu.addSeparator();
fileMenu.add(closeMenuItem);
}
+ protected void loadTreeUrlItem_actionPerformed(ActionEvent e)
+ {
+
+ }
+
+ protected void loadTreeDbItem_actionPerformed(ActionEvent e)
+ {
+
+ }
+
/**
* Template method to handle the 'load T-Coffee scores' menu event.
* <p>
@BeforeClass(dependsOnMethods = { "setUpTree" })
public void createTreeView()
{
- treeView = ArchaeopteryxInit.createInstance(jalviewTree);
+ treeView = AptxInit.createInstance(jalviewTree);
aptx = (MainFrame) treeView; // still pretty ugly
treePanel = aptx.getMainPanel().getCurrentTreePanel();
@BeforeClass(dependsOnMethods = { "setUpJalview", "setUpTree" })
public void createTreeView()
{
- treeView = ArchaeopteryxInit.createUnboundInstance(inputTree);
+ treeView = AptxInit.createUnboundInstance(inputTree);
aptx = (MainFrame) treeView; // pretty ugly
treePanel = aptx.getMainPanel().getCurrentTreePanel();
tree = treePanel.getPhylogeny();