*/
package jalview.gui;
+import java.util.Locale;
+
import jalview.analysis.AlignmentSorter;
-import jalview.analysis.AverageDistanceTree;
-import jalview.analysis.NJTree;
-import jalview.analysis.TreeBuilder;
import jalview.analysis.TreeModel;
-import jalview.analysis.scoremodels.ScoreModels;
-import jalview.api.analysis.ScoreModelI;
import jalview.api.analysis.SimilarityParamsI;
+import jalview.bin.Cache;
+import jalview.bin.Console;
import jalview.commands.CommandI;
import jalview.commands.OrderCommand;
import jalview.datamodel.Alignment;
import javax.swing.ButtonGroup;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
-import javax.swing.event.InternalFrameAdapter;
-import javax.swing.event.InternalFrameEvent;
import org.jibble.epsgraphics.EpsGraphics2D;
*/
public class TreePanel extends GTreePanel
{
- String treeType;
+ String substitutionMatrix;
- String scoreModelName; // if tree computed
+ String treeType;
String treeTitle; // if tree loaded
SimilarityParamsI similarityParams;
- private TreeCanvas treeCanvas;
+ TreeCanvas treeCanvas;
TreeModel tree;
* Creates a new TreePanel object.
*
* @param ap
- * @param type
- * @param modelName
- * @param options
+ * @param tree
+ * @param treeType
+ * @param substitutionMatrix
*/
- public TreePanel(AlignmentPanel ap, String type, String modelName,
- SimilarityParamsI options)
+ public TreePanel(AlignmentPanel ap, TreeModel tree, String treeType,
+ String substitutionMatrix)
{
super();
- this.similarityParams = options;
- initTreePanel(ap, type, modelName, null, null);
+ this.treeType = treeType;
+ this.substitutionMatrix = substitutionMatrix;
+ this.tree = tree;
+ initTreePanel(ap, tree);
// We know this tree has distances. JBPNote TODO: prolly should add this as
// a userdefined default
// showDistances(true);
}
+ /**
+ * Creates a new TreePanel object.
+ *
+ * @param alignPanel
+ * @param newtree
+ * @param theTitle
+ * @param inputData
+ */
public TreePanel(AlignmentPanel alignPanel, NewickFile newtree,
String theTitle, AlignmentView inputData)
{
super();
this.treeTitle = theTitle;
- initTreePanel(alignPanel, null, null, newtree, inputData);
+ initTreePanel(alignPanel, newtree, inputData);
}
public AlignmentI getAlignment()
return getTreeCanvas().getViewport();
}
- void initTreePanel(AlignmentPanel ap, String type, String modelName,
- NewickFile newTree, AlignmentView inputData)
+ /**
+ * Initialize a tree panel based on a calculated tree
+ *
+ * @param ap
+ * @param tree
+ */
+ void initTreePanel(AlignmentPanel ap, TreeModel tree)
{
+ buildTreeCanvas(ap);
- av = ap.av;
- this.treeType = type;
- this.scoreModelName = modelName;
+ TreeLoader tl = new TreeLoader(null, null);
+ tl.start();
- treeCanvas = new TreeCanvas(this, ap, scrollPane);
- scrollPane.setViewportView(treeCanvas);
+ }
- PaintRefresher.Register(this, ap.av.getSequenceSetId());
+ /**
+ * Initialize a tree panel based on a loaded in tree file.
+ *
+ * @param ap
+ * @param loadedTree
+ * @param inputData
+ */
+ void initTreePanel(AlignmentPanel ap,
+ NewickFile loadedTree, AlignmentView inputData)
+ {
+ buildTreeCanvas(ap);
- buildAssociatedViewMenu();
+ TreeLoader tl = new TreeLoader(loadedTree, inputData);
+ tl.start();
+ }
- final PropertyChangeListener listener = addAlignmentListener();
+public void buildTreeCanvas(AlignmentPanel ap) {
+ av = ap.av;
- /*
- * remove listener when window is closed, so that this
- * panel can be garbage collected
- */
- addInternalFrameListener(new InternalFrameAdapter()
- {
- @Override
- public void internalFrameClosed(InternalFrameEvent evt)
- {
- if (av != null)
- {
- av.removePropertyChangeListener(listener);
- }
- }
- });
+ treeCanvas = new TreeCanvas(this, ap, scrollPane);
+ scrollPane.setViewportView(treeCanvas);
- TreeLoader tl = new TreeLoader(newTree, inputData);
- tl.start();
- }
+ PaintRefresher.Register(this, ap.av.getSequenceSetId());
- /**
- * @return
- */
- protected PropertyChangeListener addAlignmentListener()
- {
- final PropertyChangeListener listener = new PropertyChangeListener()
+ buildAssociatedViewMenu();
+
+ av.addPropertyChangeListener(new java.beans.PropertyChangeListener()
{
@Override
public void propertyChange(PropertyChangeEvent evt)
repaint();
}
}
- };
- av.addPropertyChangeListener(listener);
- return listener;
+ });
+
+
+
+
}
@Override
class TreeLoader extends Thread
{
- private NewickFile newtree;
+ private NewickFile newTree;
private AlignmentView odata = null;
public TreeLoader(NewickFile newickFile, AlignmentView inputData)
{
- this.newtree = newickFile;
+ this.newTree = newickFile;
this.odata = inputData;
- if (newickFile != null)
+ if (newTree != null)
{
// Must be outside run(), as Jalview2XML tries to
// update distance/bootstrap visibility at the same time
- showBootstrap(newickFile.HasBootstrap());
- showDistances(newickFile.HasDistances());
+ showBootstrap(newTree.hasBootstrap());
+ showDistances(newTree.hasDistances());
+
}
+
}
@Override
public void run()
{
- if (newtree != null)
+ if (newTree != null)
{
tree = new TreeModel(av.getAlignment().getSequencesArray(), odata,
- newtree);
+ newTree);
if (tree.getOriginalData() == null)
{
originalSeqData.setVisible(false);
}
}
- else
- {
- ScoreModelI sm = ScoreModels.getInstance()
- .getScoreModel(scoreModelName,
- treeCanvas.getAssociatedPanel());
- TreeBuilder njtree = treeType.equals(TreeBuilder.NEIGHBOUR_JOINING)
- ? new NJTree(av, sm, similarityParams)
- : new AverageDistanceTree(av, sm, similarityParams);
- tree = new TreeModel(njtree);
- showDistances(true);
- }
+ showTree(tree);
+ }
+
+ public void showTree(TreeModel tree)
+ {
tree.reCount(tree.getTopNode());
tree.findHeight(tree.getTopNode());
treeCanvas.setTree(tree);
treeCanvas.repaint();
+
av.setCurrentTree(tree);
if (av.getSortByTree())
{
sortByTree_actionPerformed();
}
+
}
}
{
// TODO: JAL-3048 save newick file for Jalview-JS
JalviewFileChooser chooser = new JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"));
+ Cache.getProperty("LAST_DIRECTORY"));
chooser.setFileView(new JalviewFileView());
chooser.setDialogTitle(
MessageManager.getString("label.save_tree_as_newick"));
if (value == JalviewFileChooser.APPROVE_OPTION)
{
String choice = chooser.getSelectedFile().getPath();
- jalview.bin.Cache.setProperty("LAST_DIRECTORY",
+ Cache.setProperty("LAST_DIRECTORY",
chooser.getSelectedFile().getParent());
try
AlignmentView originalData = tree.getOriginalData();
if (originalData == null)
{
- jalview.bin.Cache.log.info(
+ Console.info(
"Unexpected call to originalSeqData_actionPerformed - should have hidden this menu action.");
return;
}
* @param e
*/
@Override
- public void sortByTree_actionPerformed()
+ public void sortByTree_actionPerformed()// modify for Aptx
{
if (treeCanvas.applyToAllViews)
}
else
{
- treeCanvas.getAssociatedPanel().alignFrame
- .addHistoryItem(
- sortAlignmentIn(treeCanvas.getAssociatedPanel()));
+ treeCanvas.getAssociatedPanel().alignFrame.addHistoryItem(
+ sortAlignmentIn(treeCanvas.getAssociatedPanel()));
}
}
String tree = MessageManager.getString("label.tree");
ImageExporter exporter = new ImageExporter(writer, null, imageFormat,
tree);
- exporter.doExport(null, this, width, height, tree.toLowerCase());
+ exporter.doExport(null, this, width, height,
+ tree.toLowerCase(Locale.ROOT));
}
/**
if (sq != null)
{
// search dbrefs, features and annotation
- DBRefEntry[] refs = jalview.util.DBRefUtils
+ List<DBRefEntry> refs = jalview.util.DBRefUtils
.selectRefs(sq.getDBRefs(), new String[]
- { labelClass.toUpperCase() });
+ { labelClass.toUpperCase(Locale.ROOT) });
if (refs != null)
{
- for (int i = 0; i < refs.length; i++)
+ for (int i = 0, ni = refs.size(); i < ni; i++)
{
if (newname == null)
{
- newname = new String(refs[i].getAccessionId());
+ newname = new String(refs.get(i).getAccessionId());
}
else
{
- newname = newname + "; " + refs[i].getAccessionId();
+ newname += "; " + refs.get(i).getAccessionId();
}
}
}
*
* @return
*/
- public String getPanelTitle()
+ public String getPanelTitle() // to be moved/fixed
{
if (treeTitle != null)
{
return treeTitle;
}
-
+ else
+ {
/*
* i18n description of Neighbour Joining or Average Distance method
*/
- String treecalcnm = MessageManager
- .getString("label.tree_calc_" + treeType.toLowerCase());
+ String treecalcnm = MessageManager.getString(
+ "label.tree_calc_" + treeType.toLowerCase(Locale.ROOT));
/*
* short score model name (long description can be too long)
*/
- String smn = scoreModelName;
+ String smn = substitutionMatrix;
/*
* put them together as <method> Using <model>
*/
- final String ttl = MessageManager.formatMessage("label.treecalc_title",
+ final String ttl = MessageManager.formatMessage("label.calc_title",
treecalcnm, smn);
- return ttl;
+ return ttl;
+ }
}
/**
int width = treeCanvas.getWidth();
int height = treeCanvas.getHeight();
- FileOutputStream out = new FileOutputStream(
- outFile);
+ FileOutputStream out = new FileOutputStream(outFile);
EpsGraphics2D pg = new EpsGraphics2D("Tree", out, 0, 0, width,
height);
pg.setAccurateTextMode(!textOption);
ex.printStackTrace();
}
}
-
+
public AlignViewport getViewport()
{
return av;