import org.exolab.castor.xml.*;
import jalview.schemabinding.version2.*;
import jalview.schemes.*;
+import jalview.structure.StructureSelectionManager;
/**
* DOCUMENT ME!
Hashtable annotationIds = new Hashtable();
String uniqueSetSuffix = "";
+ /**
+ * List of pdbfiles added to Jar
+ */
+ Vector pdbfiles = null;
// SAVES SEVERAL ALIGNMENT WINDOWS TO SAME JARFILE
public void SaveState(File statefile)
vamsasSet.setGapChar(jal.getGapCharacter() + "");
JSeq jseq;
- Vector pdbfiles = null;
//SAVE SEQUENCES
int id = 0;
pdb.setId(entry.getId());
pdb.setType(entry.getType());
+ AppJMol jmol;
+ //This must have been loaded, is it still visible?
+ JInternalFrame[] frames = Desktop.desktop.getAllFrames();
+ for (int f = frames.length - 1; f > -1; f--)
+ {
+ if (frames[f] instanceof AppJMol)
+ {
+ jmol = (AppJMol) frames[f];
+ if (!jmol.pdbentry.getId().equals(entry.getId()))
+ continue;
+
+ StructureState state = new StructureState();
+ state.setVisible(true);
+ state.setXpos(jmol.getX());
+ state.setYpos(jmol.getY());
+ state.setWidth(jmol.getWidth());
+ state.setHeight(jmol.getHeight());
+
+ state.setContent(jmol.viewer.getStateInfo().replaceAll("\n", ""));
+
+ for (int s = 0; s < jmol.sequence.length; s++)
+ {
+ if (jal.findIndex(jmol.sequence[s]) > -1)
+ {
+ pdb.addStructureState(state);
+ }
+ }
+ }
+ }
+
+
if (entry.getFile() != null)
{
pdb.setFile(entry.getFile());
}
catch (Exception ex)
{
- ex.printStackTrace();
+ ex.printStackTrace();
}
+
}
}
view.setViewName(av.viewName);
view.setGatheredViews(av.gatherViewsHere);
+
+
if (ap.av.explodedPosition != null)
{
view.setXpos(av.explodedPosition.x);
setting.setDisplay(
av.featuresDisplayed.containsKey(renderOrder[ro])
);
-
+ float rorder=ap.seqPanel.seqCanvas.getFeatureRenderer().getOrder(renderOrder[ro]);
+ if (rorder>-1) {
+ setting.setOrder(rorder);
+ }
fs.addSetting(setting);
settingsAdded.addElement(renderOrder[ro]);
}
-
+
//Make sure we save none displayed feature settings
Enumeration en =
ap.seqPanel.seqCanvas.getFeatureRenderer().featureColours.keys();
);
setting.setDisplay(false);
-
+ float rorder = ap.seqPanel.seqCanvas.getFeatureRenderer().getOrder(key);
+ if (rorder>-1)
+ {
+ setting.setOrder(rorder);
+ }
fs.addSetting(setting);
settingsAdded.addElement(key);
}
-
+ en = ap.seqPanel.seqCanvas.getFeatureRenderer().featureGroups.keys();
+ Vector groupsAdded=new Vector();
+ while (en.hasMoreElements())
+ {
+ String grp = en.nextElement().toString();
+ if (groupsAdded.contains(grp))
+ {
+ continue;
+ }
+ Group g = new Group();
+ g.setName(grp);
+ g.setDisplay(((Boolean)ap.seqPanel.seqCanvas.getFeatureRenderer().featureGroups.get(grp)).booleanValue());
+ fs.addGroup(g);
+ groupsAdded.addElement(grp);
+ }
jms.setFeatureSettings(fs);
}
seqRefIds = new Hashtable();
viewportsAdded = new Hashtable();
- Vector gatherToThisFrame = new Vector();
+ Hashtable gatherToThisFrame = new Hashtable();
try
{
af = LoadFromObject(object, file, true);
if (af.viewport.gatherViewsHere)
{
- gatherToThisFrame.add(af);
+ gatherToThisFrame.put(af.viewport.getSequenceSetId(), af);
}
entryCount++;
}
Desktop.instance.stopLoading();
}
- for (int i = 0; i < gatherToThisFrame.size(); i++)
+ Enumeration en = gatherToThisFrame.elements();
+ while(en.hasMoreElements())
{
Desktop.instance.gatherViews(
- (AlignFrame) gatherToThisFrame.elementAt(i));
+ (AlignFrame) en.nextElement());
}
return af;
}
+ Hashtable alreadyLoadedPDB;
String loadPDBFile(String file, String pdbId)
{
- System.out.println(file + " " + pdbId);
+ if (alreadyLoadedPDB == null)
+ alreadyLoadedPDB = new Hashtable();
+
+ if (alreadyLoadedPDB.containsKey(pdbId))
+ return alreadyLoadedPDB.get(pdbId).toString();
+
try
{
JarInputStream jin = null;
out.println(data);
}
out.close();
+
+ alreadyLoadedPDB.put(pdbId, outFile.getAbsolutePath());
return outFile.getAbsolutePath();
}
AlignFrame LoadFromObject(JalviewModel object,
String file,
- boolean loadTrees)
+ boolean loadTreesAndStructures)
{
SequenceSet vamsasSet = object.getVamsasModel().getSequenceSet(0);
Sequence[] vamsasSeq = vamsasSet.getSequence();
Hashtable pdbloaded = new Hashtable();
+
if (!multipleView)
{
for (int i = 0; i < vamsasSeq.length; i++)
al.getSequenceAt(i).getDatasetSequence().addSequenceFeature(sf);
}
}
+
if (JSEQ[i].getPdbidsCount() > 0)
{
Pdbids[] ids = JSEQ[i].getPdbids();
{
if (!pdbloaded.containsKey(ids[p].getFile()))
{
- String tmppdb = loadPDBFile(file, ids[p].getId());
- entry.setFile(tmppdb);
- pdbloaded.put(ids[p].getId(), tmppdb);
+ entry.setFile(loadPDBFile(file, ids[p].getId()));
}
else
{
af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setColour(setting.
getType(),
new java.awt.Color(setting.getColour()));
-
renderOrder[fs] = setting.getType();
-
+ if (setting.hasOrder())
+ af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setOrder(setting.getType(), setting.getOrder());
+ else
+ af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setOrder(setting.getType(), fs/jms.getFeatureSettings().getSettingCount());
if (setting.getDisplay())
{
af.viewport.featuresDisplayed.put(
}
af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().renderOrder =
renderOrder;
+ Hashtable fgtable;
+ af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureGroups = fgtable=new Hashtable();
+ for (int gs=0;gs<jms.getFeatureSettings().getGroupCount(); gs++)
+ {
+ Group grp = jms.getFeatureSettings().getGroup(gs);
+ fgtable.put(grp.getName(), new Boolean(grp.getDisplay()));
+ }
}
-
+
if (view.getHiddenColumnsCount() > 0)
{
for (int c = 0; c < view.getHiddenColumnsCount(); c++)
//LOAD TREES
///////////////////////////////////////
- if (loadTrees && jms.getTreeCount() > 0)
+ if (loadTreesAndStructures && jms.getTreeCount() > 0)
{
try
{
{
ex.printStackTrace();
}
+ }
+
+ ////LOAD STRUCTURES
+ if(loadTreesAndStructures)
+ {
+ for (int i = 0; i < JSEQ.length; i++)
+ {
+ if (JSEQ[i].getPdbidsCount() > 0)
+ {
+ Pdbids[] ids = JSEQ[i].getPdbids();
+ for (int p = 0; p < ids.length; p++)
+ {
+ for (int s = 0; s < ids[p].getStructureStateCount(); s++)
+ {
+ jalview.datamodel.PDBEntry jpdb = new jalview.datamodel.PDBEntry();
+
+ jpdb.setFile(loadPDBFile(ids[p].getFile(), ids[p].getId()));
+ jpdb.setId(ids[p].getId());
+ int x = ids[p].getStructureState(s).getXpos();
+ int y = ids[p].getStructureState(s).getYpos();
+ int width = ids[p].getStructureState(s).getWidth();
+ int height = ids[p].getStructureState(s).getHeight();
+
+ java.awt.Component comp = Desktop.desktop.getComponentAt(x, y);
+
+ String pdbFile = loadPDBFile(file, ids[p].getId());
+
+ jalview.datamodel.SequenceI[] seq = new jalview.datamodel.SequenceI[]
+ {
+ al.getSequenceAt(i)};
+
+ if (comp == null ||
+ (comp.getWidth() != width && comp.getHeight() != height))
+ {
+ String state = ids[p].getStructureState(s).getContent();
+
+ StringBuffer newFileLoc = new StringBuffer(state.substring(0,
+ state.indexOf("\"", state.indexOf("load")) + 1));
+
+ newFileLoc.append(jpdb.getFile());
+ newFileLoc.append(state.substring(
+ state.indexOf("\"", state.indexOf("load \"") + 6)));
+
+ new AppJMol(pdbFile,
+ ids[p].getId(),
+ seq,
+ af.alignPanel,
+ newFileLoc.toString(),
+ new java.awt.Rectangle(x, y, width, height));
+
+ }
+ else if(comp!=null)
+ {
+ StructureSelectionManager.getStructureSelectionManager()
+ .setMapping(seq, pdbFile,
+ jalview.io.AppletFormatAdapter.FILE);
+
+ ( (AppJMol) comp).addSequence(seq);
+ }
+ }
+ }
+ }
+ }
}
return af;