import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.AlignmentI;
+import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.GeneLocus;
import jalview.datamodel.GraphLine;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.Point;
import jalview.gui.AppVarna;
import jalview.gui.ChimeraViewFrame;
import jalview.gui.Desktop;
-import jalview.gui.FeatureRenderer;
import jalview.gui.JvOptionPane;
import jalview.gui.OOMWarning;
import jalview.gui.PCAPanel;
import jalview.viewmodel.AlignmentViewport;
import jalview.viewmodel.PCAModel;
import jalview.viewmodel.ViewportRanges;
+import jalview.viewmodel.seqfeatures.FeatureRendererModel;
import jalview.viewmodel.seqfeatures.FeatureRendererSettings;
import jalview.viewmodel.seqfeatures.FeaturesDisplayed;
import jalview.ws.jws2.Jws2Discoverer;
public void saveState(File statefile)
{
FileOutputStream fos = null;
- // create backupfiles object and get new temp filename destination
- BackupFiles backupfiles = new BackupFiles(statefile);
try
{
- fos = new FileOutputStream(backupfiles.getTempFilePath());
+ fos = new FileOutputStream(statefile);
JarOutputStream jout = new JarOutputStream(fos);
saveState(jout);
fos.close();
- backupfiles.setWriteSuccess(true);
- backupfiles.rollBackupsAndRenameTempFile();
} catch (Exception e)
{
- Cache.log.error("Couln't write Jalview state to " + statefile
- + ". Temporary file is at: " + backupfiles.getTempFile(), e);
+ Cache.log.error("Couln't write Jalview state to " + statefile, e);
// TODO: inform user of the problem - they need to know if their data was
// not saved !
if (errorMessage == null)
else
{
errorMessage += "(Didn't write Jalview Archive to output file '"
- + statefile + "\nTemporary file is at: "
- + backupfiles.getTempFile() + ")";
+ + statefile + ")";
}
e.printStackTrace();
} finally
view.setFollowHighlight(av.isFollowHighlight());
view.setFollowSelection(av.followSelection);
view.setIgnoreGapsinConsensus(av.isIgnoreGapsConsensus());
+ view.setShowComplementFeatures(av.isShowComplementFeatures());
+ view.setShowComplementFeaturesOnTop(
+ av.isShowComplementFeaturesOnTop());
if (av.getFeaturesDisplayed() != null)
{
FeatureSettings fs = new FeatureSettings();
- FeatureRenderer fr = ap.getSeqPanel().seqCanvas
+ FeatureRendererModel fr = ap.getSeqPanel().seqCanvas
.getFeatureRenderer();
String[] renderOrder = fr.getRenderOrder().toArray(new String[0]);
final String viewId = viewFrame.getViewId();
state.setViewId(viewId);
state.setAlignwithAlignPanel(viewFrame.isUsedforaligment(ap));
- state.setColourwithAlignPanel(viewFrame.isUsedforcolourby(ap));
+ state.setColourwithAlignPanel(viewFrame.isUsedForColourBy(ap));
state.setColourByJmol(viewFrame.isColouredByViewer());
state.setType(viewFrame.getViewerType().toString());
// pdb.addStructureState(state);
parentseq = jds;
}
}
+
+ /*
+ * save any dbrefs; special subclass GeneLocus is flagged as 'locus'
+ */
if (dbrefs != null)
{
for (int d = 0; d < dbrefs.length; d++)
{
DBRef dbref = new DBRef();
- dbref.setSource(dbrefs[d].getSource());
- dbref.setVersion(dbrefs[d].getVersion());
- dbref.setAccessionId(dbrefs[d].getAccessionId());
- if (dbrefs[d].hasMap())
+ DBRefEntry dbRefEntry = dbrefs[d];
+ dbref.setSource(dbRefEntry.getSource());
+ dbref.setVersion(dbRefEntry.getVersion());
+ dbref.setAccessionId(dbRefEntry.getAccessionId());
+ if (dbRefEntry instanceof GeneLocus)
+ {
+ dbref.setLocus(true);
+ }
+ if (dbRefEntry.hasMap())
{
- Mapping mp = createVamsasMapping(dbrefs[d].getMap(), parentseq,
+ Mapping mp = createVamsasMapping(dbRefEntry.getMap(), parentseq,
jds, recurse);
dbref.setMapping(mp);
}
- // vamsasSeq.addDBRef(dbref);
vamsasSeq.getDBRef().add(dbref);
}
}
* @param prefix
* a prefix for the temporary file name, must be at least three
* characters long
- * @param origFile
+ * @param suffixModel
* null or original file - so new file can be given the same suffix
* as the old one
* @return
*/
protected String copyJarEntry(jarInputStreamProvider jprovider,
- String jarEntryName, String prefix, String origFile)
+ String jarEntryName, String prefix, String suffixModel)
{
BufferedReader in = null;
PrintWriter out = null;
String suffix = ".tmp";
- if (origFile == null)
+ if (suffixModel == null)
{
- origFile = jarEntryName;
+ suffixModel = jarEntryName;
}
- int sfpos = origFile.lastIndexOf(".");
- if (sfpos > -1 && sfpos < (origFile.length() - 3))
+ int sfpos = suffixModel.lastIndexOf(".");
+ if (sfpos > -1 && sfpos < (suffixModel.length() - 1))
{
- suffix = "." + origFile.substring(sfpos + 1);
+ suffix = "." + suffixModel.substring(sfpos + 1);
}
try
{
|| tmpSeq.getEnd() != jseq.getEnd())
{
System.err.println(
- "Warning JAL-2154 regression: updating start/end for sequence "
- + tmpSeq.toString() + " to " + jseq);
+ String.format("Warning JAL-2154 regression: updating start/end for sequence %s from %d/%d to %d/%d",
+ tmpSeq.getName(), tmpSeq.getStart(),
+ tmpSeq.getEnd(), jseq.getStart(),
+ jseq.getEnd()));
}
}
else
}
else
{
- cs = ColourSchemeProperty.getColourScheme(al,
+ cs = ColourSchemeProperty.getColourScheme(null, al,
jGroup.getColour());
}
}
// TODO: verify 'associate with all views' works still
tp.getTreeCanvas().setViewport(av); // af.viewport;
tp.getTreeCanvas().setAssociatedPanel(ap); // af.alignPanel;
- // FIXME: should we use safeBoolean here ?
- tp.getTreeCanvas().setApplyToAllViews(tree.isLinkToAllViews());
-
}
+ tp.getTreeCanvas().setApplyToAllViews(tree.isLinkToAllViews());
if (tp == null)
{
warn("There was a problem recovering stored Newick tree: \n"
*/
String viewerJarEntryName = getViewerJarEntryName(data.getViewId());
chimeraSessionFile = copyJarEntry(jprovider, viewerJarEntryName,
- "chimera", null);
+ "chimera", ".py");
Set<Entry<File, StructureData>> fileData = data.getFileData()
.entrySet();
String reformatedOldFilename = oldfilenam.replaceAll("/", "\\\\");
filedat = oldFiles.get(new File(reformatedOldFilename));
}
- newFileLoc.append(Platform.escapeString(filedat.getFilePath()));
+ newFileLoc.append(Platform.escapeBackslashes(filedat.getFilePath()));
pdbfilenames.add(filedat.getFilePath());
pdbids.add(filedat.getPdbId());
seqmaps.add(filedat.getSeqList().toArray(new SequenceI[0]));
}
else
{
- cs = ColourSchemeProperty.getColourScheme(al, view.getBgColour());
+ cs = ColourSchemeProperty.getColourScheme(af.getViewport(), al,
+ view.getBgColour());
}
}
+ /*
+ * turn off 'alignment colour applies to all groups'
+ * while restoring global colour scheme
+ */
+ viewport.setColourAppliesToAllGroups(false);
viewport.setGlobalColourScheme(cs);
viewport.getResidueShading().setThreshold(pidThreshold,
view.isIgnoreGapsinConsensus());
viewport.getResidueShading()
.setConsensus(viewport.getSequenceConsensusHash());
- viewport.setColourAppliesToAllGroups(false);
-
if (safeBoolean(view.isConservationSelected()) && cs != null)
{
viewport.getResidueShading()
.setConservationInc(safeInt(view.getConsThreshold()));
}
-
af.changeColour(cs);
-
viewport.setColourAppliesToAllGroups(true);
viewport
viewport.setShowNPFeats(safeBoolean(view.isShowNPfeatureTooltip()));
viewport.setShowGroupConsensus(view.isShowGroupConsensus());
viewport.setShowGroupConservation(view.isShowGroupConservation());
+ viewport.setShowComplementFeatures(view.isShowComplementFeatures());
+ viewport.setShowComplementFeaturesOnTop(
+ view.isShowComplementFeaturesOnTop());
// recover feature settings
if (jm.getFeatureSettings() != null)
{
- FeatureRenderer fr = af.alignPanel.getSeqPanel().seqCanvas
+ FeatureRendererModel fr = af.alignPanel.getSeqPanel().seqCanvas
.getFeatureRenderer();
FeaturesDisplayed fdi;
viewport.setFeaturesDisplayed(fdi = new FeaturesDisplayed());
float min = safeFloat(safeFloat(setting.getMin()));
float max = setting.getMax() == null ? 1f
: setting.getMax().floatValue();
- FeatureColourI gc = new FeatureColour(minColour, maxColour,
+ FeatureColourI gc = new FeatureColour(maxColour, minColour,
+ maxColour,
noValueColour, min, max);
if (setting.getAttributeName().size() > 0)
{
}
else
{
- featureOrder.put(featureType, new Float(
+ featureOrder.put(featureType, Float.valueOf(
fs / jm.getFeatureSettings().getSetting().size()));
}
if (safeBoolean(setting.isDisplay()))
for (int gs = 0; gs < jm.getFeatureSettings().getGroup().size(); gs++)
{
Group grp = jm.getFeatureSettings().getGroup().get(gs);
- fgtable.put(grp.getName(), new Boolean(grp.isDisplay()));
+ fgtable.put(grp.getName(), Boolean.valueOf(grp.isDisplay()));
}
// FeatureRendererSettings frs = new FeatureRendererSettings(renderOrder,
// fgtable, featureColours, jms.getFeatureSettings().hasTransparency() ?
else
{
cs = new AnnotationColourGradient(matchedAnnotation,
- ColourSchemeProperty.getColourScheme(al,
+ ColourSchemeProperty.getColourScheme(af.getViewport(), al,
viewAnnColour.getColourScheme()),
safeInt(viewAnnColour.getAboveThreshold()));
}
return datasetId;
}
+ /**
+ * Add any saved DBRefEntry's to the sequence. An entry flagged as 'locus' is
+ * constructed as a special subclass GeneLocus.
+ *
+ * @param datasetSequence
+ * @param sequence
+ */
private void addDBRefs(SequenceI datasetSequence, Sequence sequence)
{
for (int d = 0; d < sequence.getDBRef().size(); d++)
{
DBRef dr = sequence.getDBRef().get(d);
- jalview.datamodel.DBRefEntry entry = new jalview.datamodel.DBRefEntry(
- dr.getSource(), dr.getVersion(), dr.getAccessionId());
+ DBRefEntry entry;
+ if (dr.isLocus())
+ {
+ entry = new GeneLocus(dr.getSource(), dr.getVersion(),
+ dr.getAccessionId());
+ }
+ else
+ {
+ entry = new DBRefEntry(dr.getSource(), dr.getVersion(),
+ dr.getAccessionId());
+ }
if (dr.getMapping() != null)
{
entry.setMap(addMapping(dr.getMapping()));
jalview.datamodel.Mapping jmap = new jalview.datamodel.Mapping(dsto, fr,
fto, m.getMapFromUnit().intValue(),
m.getMapToUnit().intValue());
- // if (m.getMappingChoice() != null)
- // {
- // MappingChoice mc = m.getMappingChoice();
+
+ /*
+ * (optional) choice of dseqFor or Sequence
+ */
if (m.getDseqFor() != null)
{
String dsfor = m.getDseqFor();
if (seqRefIds.containsKey(dsfor))
{
- /**
+ /*
* recover from hash
*/
jmap.setTo(seqRefIds.get(dsfor));
frefedSequence.add(newMappingRef(dsfor, jmap));
}
}
- else
+ else if (m.getSequence() != null)
{
- /**
+ /*
* local sequence definition
*/
Sequence ms = m.getSequence();
noValueColour = maxcol;
}
- colour = new FeatureColour(mincol, maxcol, noValueColour,
+ colour = new FeatureColour(maxcol, mincol, maxcol, noValueColour,
safeFloat(colourModel.getMin()),
safeFloat(colourModel.getMax()));
final List<String> attributeName = colourModel.getAttributeName();