private static final String UTF_8 = "UTF-8";
+ /**
+ * prefix for recovering datasets for alignments with multiple views where
+ * non-existent dataset IDs were written for some views
+ */
+ private static final String UNIQSEQSETID = "uniqueSeqSetId.";
+
// use this with nextCounter() to make unique names for entities
private int counter = 0;
{
TreePanel tp = (TreePanel) frames[t];
- if (tp.treeCanvas.av.getAlignment() == jal)
+ if (tp.getTreeCanvas().getViewport().getAlignment() == jal)
{
Tree tree = new Tree();
tree.setTitle(tp.getTitle());
tree.setCurrentTree((av.getCurrentTree() == tp.getTree()));
tree.setNewick(tp.getTree().print());
- tree.setThreshold(tp.treeCanvas.threshold);
+ tree.setThreshold(tp.getTreeCanvas().getThreshold());
tree.setFitToWindow(tp.fitToWindow.getState());
tree.setFontName(tp.getTreeFont().getName());
tree.setXpos(tp.getX());
tree.setYpos(tp.getY());
tree.setId(makeHashCode(tp, null));
- tree.setLinkToAllViews(tp.treeCanvas.applyToAllViews);
+ tree.setLinkToAllViews(tp.getTreeCanvas().applyToAllViews);
jms.addTree(tree);
}
}
{
view.setComplementId(av.getCodingComplement().getViewId());
}
- view.setViewName(av.viewName);
+ view.setViewName(av.getViewName());
view.setGatheredViews(av.isGatherViewsHere());
Rectangle size = ap.av.getExplodedGeometry();
viewer.setXpos(panel.getX());
viewer.setYpos(panel.getY());
viewer.setTitle(panel.getTitle());
- PCAModel pcaModel = panel.pcaModel;
+ PCAModel pcaModel = panel.getPcaModel();
viewer.setScoreModelName(pcaModel.getScoreModelName());
viewer.setXDim(panel.getSelectedDimensionIndex(X));
viewer.setYDim(panel.getSelectedDimensionIndex(Y));
viewer.setZDim(panel.getSelectedDimensionIndex(Z));
- viewer.setBgColour(panel.rc.getBackgroundColour().getRGB());
- viewer.setScaleFactor(panel.rc.scaleFactor);
- float[] spMin = panel.rc.getSeqMin();
+ viewer.setBgColour(panel.getRotatableCanvas().getBackgroundColour().getRGB());
+ viewer.setScaleFactor(panel.getRotatableCanvas().getScaleFactor());
+ float[] spMin = panel.getRotatableCanvas().getSeqMin();
SeqPointMin spmin = new SeqPointMin();
spmin.setXPos(spMin[0]);
spmin.setYPos(spMin[1]);
spmin.setZPos(spMin[2]);
viewer.setSeqPointMin(spmin);
- float[] spMax = panel.rc.getSeqMax();
+ float[] spMax = panel.getRotatableCanvas().getSeqMax();
SeqPointMax spmax = new SeqPointMax();
spmax.setXPos(spMax[0]);
spmax.setYPos(spMax[1]);
spmax.setZPos(spMax[2]);
viewer.setSeqPointMax(spmax);
- viewer.setShowLabels(panel.rc.showLabels);
- viewer.setLinkToAllViews(panel.rc.applyToAllViews);
+ viewer.setShowLabels(panel.getRotatableCanvas().isShowLabels());
+ viewer.setLinkToAllViews(panel.getRotatableCanvas().isApplyToAllViews());
SimilarityParamsI sp = pcaModel.getSimilarityParameters();
viewer.setIncludeGaps(sp.includeGaps());
viewer.setMatchGaps(sp.matchGaps());
/*
* (end points of) axes on display
*/
- for (Point p : panel.rc.axisEndPoints)
+ for (Point p : panel.getRotatableCanvas().getAxisEndPoints())
{
Axis axis = new Axis();
axis.setXPos(p.x);
: null;
// ////////////////////////////////
+ // INITIALISE ALIGNMENT SEQUENCESETID AND VIEWID
+ //
+ //
+ // If we just load in the same jar file again, the sequenceSetId
+ // will be the same, and we end up with multiple references
+ // to the same sequenceSet. We must modify this id on load
+ // so that each load of the file gives a unique id
+
+ /**
+ * used to resolve correct alignment dataset for alignments with multiple
+ * views
+ */
+ String uniqueSeqSetId = null;
+ String viewId = null;
+ if (view != null)
+ {
+ uniqueSeqSetId = view.getSequenceSetId() + uniqueSetSuffix;
+ viewId = (view.getId() == null ? null
+ : view.getId() + uniqueSetSuffix);
+ }
+
+ // ////////////////////////////////
// LOAD SEQUENCES
List<SequenceI> hiddenSeqs = null;
// finally, verify all data in vamsasSet is actually present in al
// passing on flag indicating if it is actually a stored dataset
- recoverDatasetFor(vamsasSet, al, isdsal);
+ recoverDatasetFor(vamsasSet, al, isdsal, uniqueSeqSetId);
}
if (referenceseqForView != null)
// ///////////////////////////////
// LOAD VIEWPORT
- // If we just load in the same jar file again, the sequenceSetId
- // will be the same, and we end up with multiple references
- // to the same sequenceSet. We must modify this id on load
- // so that each load of the file gives a unique id
- String uniqueSeqSetId = view.getSequenceSetId() + uniqueSetSuffix;
- String viewId = (view.getId() == null ? null
- : view.getId() + uniqueSetSuffix);
AlignFrame af = null;
AlignViewport av = null;
// now check to see if we really need to create a new viewport.
tp.setTitle(tree.getTitle());
tp.setBounds(new Rectangle(tree.getXpos(), tree.getYpos(),
tree.getWidth(), tree.getHeight()));
- tp.av = av;
- tp.treeCanvas.av = av; // af.viewport;
- tp.treeCanvas.ap = ap; // af.alignPanel;
-
+ tp.setViewport(av); // af.viewport; // TODO: verify 'associate with all
+ // views'
+ // works still
+ tp.getTreeCanvas().setViewport(av); // af.viewport;
+ tp.getTreeCanvas().setAssociatedPanel(ap); // af.alignPanel;
}
if (tp == null)
{
tp.showBootstrap(tree.getShowBootstrap());
tp.showDistances(tree.getShowDistances());
- tp.treeCanvas.threshold = tree.getThreshold();
- tp.treeCanvas.applyToAllViews = tree.isLinkToAllViews();
+ tp.getTreeCanvas().setThreshold(tree.getThreshold());
+ tp.getTreeCanvas().applyToAllViews = tree.isLinkToAllViews();
if (tree.getCurrentTree())
{
if (view.getViewName() != null)
{
- af.viewport.viewName = view.getViewName();
+ af.viewport.setViewName(view.getViewName());
af.setInitialTabVisible();
}
af.setBounds(view.getXpos(), view.getYpos(), view.getWidth(),
}
private void recoverDatasetFor(SequenceSet vamsasSet, AlignmentI al,
- boolean ignoreUnrefed)
+ boolean ignoreUnrefed, String uniqueSeqSetId)
{
jalview.datamodel.AlignmentI ds = getDatasetFor(
vamsasSet.getDatasetId());
Vector dseqs = null;
if (ds == null)
{
+ if (!ignoreUnrefed)
+ {
+ // try to resolve the dataset via uniqueSeqSetId
+ ds = getDatasetFor(UNIQSEQSETID + uniqueSeqSetId);
+ if (ds != null)
+ {
+ addDatasetRef(vamsasSet.getDatasetId(), ds);
+ }
+ }
+ }
+ if (ds == null)
+ {
// create a list of new dataset sequences
dseqs = new Vector();
}
if (al.getDataset() == null && !ignoreUnrefed)
{
al.setDataset(ds);
+ // register dataset for the alignment's uniqueSeqSetId for legacy projects
+ addDatasetRef(UNIQSEQSETID + uniqueSeqSetId, ds);
}
}
initSeqRefs();
JalviewModel jm = saveState(ap, null, null, null);
+ addDatasetRef(jm.getVamsasModel().getSequenceSet()[0].getDatasetId(),
+ ap.getAlignment().getDataset());
+
uniqueSetSuffix = "";
jm.getJalviewModelSequence().getViewport(0).setId(null);
// we don't overwrite the view we just copied
boolean showLabels = viewer.isShowLabels();
panel.setShowLabels(showLabels);
- panel.rc.showLabels = showLabels;
- panel.rc.bgColour = new Color(viewer.getBgColour());
- panel.rc.applyToAllViews = viewer.isLinkToAllViews();
+ panel.getRotatableCanvas().setShowLabels(showLabels);
+ panel.getRotatableCanvas().setBgColour(new Color(viewer.getBgColour()));
+ panel.getRotatableCanvas().setApplyToAllViews(viewer.isLinkToAllViews());
/*
* load PCA output data
MatrixI result = loadDoubleMatrix(pcaData.getEigenMatrix());
pca.setEigenmatrix(result);
- panel.pcaModel.setPCA(pca);
+ panel.getPcaModel().setPCA(pca);
/*
* we haven't saved the input data! (JAL-2647 to do)
seq, pt);
seqPoints.add(seqPoint);
}
- panel.rc.setPoints(seqPoints, seqPoints.size());
+ panel.getRotatableCanvas().setPoints(seqPoints, seqPoints.size());
/*
* set min-max ranges and scale after setPoints (which recomputes them)
*/
- panel.rc.scaleFactor = viewer.getScaleFactor();
+ panel.getRotatableCanvas().setScaleFactor(viewer.getScaleFactor());
SeqPointMin spMin = viewer.getSeqPointMin();
float[] min = new float[] { spMin.getXPos(), spMin.getYPos(),
spMin.getZPos() };
SeqPointMax spMax = viewer.getSeqPointMax();
float[] max = new float[] { spMax.getXPos(), spMax.getYPos(),
spMax.getZPos() };
- panel.rc.setSeqMinMax(min, max);
+ panel.getRotatableCanvas().setSeqMinMax(min, max);
// todo: hold points list in PCAModel only
- panel.pcaModel.setSequencePoints(seqPoints);
+ panel.getPcaModel().setSequencePoints(seqPoints);
panel.setSelectedDimensionIndex(viewer.getXDim(), X);
panel.setSelectedDimensionIndex(viewer.getYDim(), Y);
panel.setSelectedDimensionIndex(viewer.getZDim(), Z);
// is this duplication needed?
- panel.top = seqPoints.size() - 1;
- panel.pcaModel.setTop(seqPoints.size() - 1);
+ panel.setTop(seqPoints.size() - 1);
+ panel.getPcaModel().setTop(seqPoints.size() - 1);
/*
* add the axes' end points for the display
for (int i = 0; i < 3; i++)
{
Axis axis = viewer.getAxis(i);
- panel.rc.axisEndPoints[i] = new Point(axis.getXPos(),
+ panel.getRotatableCanvas().getAxisEndPoints()[i] = new Point(axis.getXPos(),
axis.getYPos(), axis.getZPos());
}