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.api.analysis.ViewBasedAnalysisI;
import jalview.bin.Cache;
import jalview.commands.CommandI;
import jalview.commands.OrderCommand;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.AlignmentView;
import jalview.datamodel.BinaryNode;
-import jalview.datamodel.ColumnSelection;
import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.HiddenColumns;
import jalview.datamodel.NodeTransformI;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
{
String treeType;
- ScoreModelI scoreModel; // if tree computed
+ String scoreModelName; // if tree computed
String treeTitle; // if tree loaded
*
* @param ap
* @param type
- * @param sm
+ * @param modelName
* @param options
*/
- public TreePanel(AlignmentPanel ap, String type, ScoreModelI sm,
+ public TreePanel(AlignmentPanel ap, String type, String modelName,
SimilarityParamsI options)
{
super();
this.similarityParams = options;
- initTreePanel(ap, type, sm, null, null);
+ initTreePanel(ap, type, modelName, null, null);
// We know this tree has distances. JBPNote TODO: prolly should add this as
// a userdefined default
return treeCanvas.av;
}
- void initTreePanel(AlignmentPanel ap, String type, ScoreModelI sm,
+ void initTreePanel(AlignmentPanel ap, String type, String modelName,
NewickFile newTree, AlignmentView inputData)
{
av = ap.av;
this.treeType = type;
- this.scoreModel = sm;
+ this.scoreModelName = modelName;
treeCanvas = new TreeCanvas(this, ap, scrollPane);
scrollPane.setViewportView(treeCanvas);
}
});
- TreeLoader tl = new TreeLoader(newTree);
- if (inputData != null)
- {
- tl.odata = inputData;
- }
+ TreeLoader tl = new TreeLoader(newTree, inputData);
tl.start();
}
class TreeLoader extends Thread
{
- NewickFile newtree;
+ private NewickFile newtree;
- AlignmentView odata = null;
+ private AlignmentView odata = null;
- public TreeLoader(NewickFile newickFile)
+ public TreeLoader(NewickFile newickFile, AlignmentView inputData)
{
this.newtree = newickFile;
+ this.odata = inputData;
+
if (newickFile != null)
{
// Must be outside run(), as Jalview2XML tries to
if (newtree != null)
{
- if (odata == null)
- {
- tree = new TreeModel(av.getAlignment().getSequencesArray(),
- newtree);
- }
- else
- {
- tree = new TreeModel(av.getAlignment().getSequencesArray(),
- odata, newtree);
- }
- if (!tree.hasOriginalSequenceData())
+ tree = new TreeModel(av.getAlignment().getSequencesArray(), odata,
+ newtree);
+ if (tree.getOriginalData() == null)
{
- allowOriginalSeqData(false);
+ originalSeqData.setVisible(false);
}
}
else
{
- ScoreModelI sm = configureScoreModel();
+ ScoreModelI sm = ScoreModels.getInstance().getScoreModel(
+ scoreModelName, treeCanvas.ap);
TreeBuilder njtree = treeType.equals(TreeBuilder.NEIGHBOUR_JOINING) ? new NJTree(
av, sm, similarityParams) : new AverageDistanceTree(av, sm,
similarityParams);
treeCanvas.setMarkPlaceholders(b);
}
- private void allowOriginalSeqData(boolean b)
- {
- originalSeqData.setVisible(b);
- }
-
/**
* DOCUMENT ME!
*
@Override
public void originalSeqData_actionPerformed(ActionEvent e)
{
- if (!tree.hasOriginalSequenceData())
+ AlignmentView originalData = tree.getOriginalData();
+ if (originalData == null)
{
jalview.bin.Cache.log
.info("Unexpected call to originalSeqData_actionPerformed - should have hidden this menu action.");
} catch (Exception ex)
{
}
- ;
- Object[] alAndColsel = tree.seqData.getAlignmentAndColumnSelection(gc);
+
+ Object[] alAndColsel = originalData.getAlignmentAndHiddenColumns(gc);
if (alAndColsel != null && alAndColsel[0] != null)
{
if (true)
{
// make a new frame!
- AlignFrame af = new AlignFrame(al,
- (ColumnSelection) alAndColsel[1], AlignFrame.DEFAULT_WIDTH,
+ AlignFrame af = new AlignFrame(al, (HiddenColumns) alAndColsel[1],
+ AlignFrame.DEFAULT_WIDTH,
AlignFrame.DEFAULT_HEIGHT);
// >>>This is a fix for the moment, until a better solution is
}
if (newname == null)
{
- SequenceFeature sf[] = sq.getSequenceFeatures();
- for (int i = 0; sf != null && i < sf.length; i++)
+ List<SequenceFeature> features = sq.getFeatures()
+ .getPositionalFeatures(labelClass);
+ for (SequenceFeature feature : features)
{
- if (sf[i].getType().equals(labelClass))
+ if (newname == null)
+ {
+ newname = feature.getDescription();
+ }
+ else
{
- if (newname == null)
- {
- newname = new String(sf[i].getDescription());
- }
- else
- {
- newname = newname + "; " + sf[i].getDescription();
- }
+ newname = newname + "; " + feature.getDescription();
}
}
}
+ treeType.toLowerCase());
/*
- * i18n description (if available) of score model used
+ * short score model name (long description can be too long)
*/
- String smn = MessageManager.getStringOrReturn("label.score_model_",
- scoreModel.getName());
+ String smn = scoreModelName;
/*
* put them together as <method> Using <model>
treecalcnm, smn);
return ttl;
}
-
- /**
- * If the score model is one that requires to get state data from the current
- * view, create and configure a new instance of it
- *
- * @return
- */
- protected ScoreModelI configureScoreModel()
- {
- if (scoreModel instanceof ViewBasedAnalysisI)
- {
- try
- {
- scoreModel = scoreModel.getClass().newInstance();
- ((ViewBasedAnalysisI) scoreModel)
- .configureFromAlignmentView(treeCanvas.ap);
- } catch (Exception q)
- {
- Cache.log.error("Couldn't create a scoremodel instance for "
- + scoreModel.getName());
- }
- }
- return scoreModel;
- }
}