X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FJalview2XML.java;h=8497df7361a1323b223abc686fd7886b834b68b6;hb=4e1cb9b8b058d9b633af223b1cdb7b220d5d2ccd;hp=4664a6ad72be5687655c97a46bd88fca9fcac7b0;hpb=50ad147ba0eb763fae29b364c80632abc1155e9c;p=jalview.git diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index 4664a6a..8497df7 100755 --- a/src/jalview/gui/Jalview2XML.java +++ b/src/jalview/gui/Jalview2XML.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4) - * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1) + * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -574,6 +574,7 @@ public class Jalview2XML AppJmol jmol; // This must have been loaded, is it still visible? JInternalFrame[] frames = Desktop.desktop.getAllFrames(); + String matchedFile=null; for (int f = frames.length - 1; f > -1; f--) { if (frames[f] instanceof AppJmol) @@ -581,9 +582,9 @@ public class Jalview2XML jmol = (AppJmol) frames[f]; if (!jmol.pdbentry.getId().equals(entry.getId()) && !(entry.getId().length()>4 - && entry.getId().startsWith(jmol.pdbentry.getId()))) + && entry.getId().toLowerCase().startsWith(jmol.pdbentry.getId().toLowerCase()))) continue; - + matchedFile = jmol.pdbentry.getFile(); // record the file so we can get at it if the ID match is ambiguous (e.g. 1QIP==1qipA) StructureState state = new StructureState(); state.setVisible(true); state.setXpos(jmol.getX()); @@ -606,9 +607,14 @@ public class Jalview2XML } } - if (entry.getFile() != null) + if (matchedFile!=null || entry.getFile() != null ) { - pdb.setFile(entry.getFile()); + if (entry.getFile()!=null) + { + // use entry's file + matchedFile = entry.getFile(); + } + pdb.setFile(matchedFile); // entry.getFile()); if (pdbfiles == null) { pdbfiles = new Vector(); @@ -619,7 +625,7 @@ public class Jalview2XML pdbfiles.addElement(entry.getId()); try { - File file = new File(entry.getFile()); + File file = new File(matchedFile); if (file.exists() && jout != null) { byte[] data = new byte[(int) file.length()]; @@ -915,7 +921,7 @@ public class Jalview2XML groups[i].setTextCol1(sg.textColour.getRGB()); groups[i].setTextCol2(sg.textColour2.getRGB()); groups[i].setTextColThreshold(sg.thresholdTextColour); - + groups[i].setShowUnconserved(sg.getShowunconserved()); for (int s = 0; s < sg.getSize(); s++) { jalview.datamodel.Sequence seq = (jalview.datamodel.Sequence) sg @@ -1022,6 +1028,7 @@ public class Jalview2XML view.setRightAlignIds(av.rightAlignIds); view.setShowSequenceFeatures(av.showSequenceFeatures); view.setShowText(av.getShowText()); + view.setShowUnconserved(av.getShowUnconserved()); view.setWrapAlignment(av.getWrapAlignment()); view.setTextCol1(av.textColour.getRGB()); view.setTextCol2(av.textColour2.getRGB()); @@ -2130,6 +2137,7 @@ public class Jalview2XML sg.textColour = new java.awt.Color(groups[i].getTextCol1()); sg.textColour2 = new java.awt.Color(groups[i].getTextCol2()); + sg.setShowunconserved(groups[i].hasShowUnconserved() ? groups[i].isShowUnconserved() : false); sg.thresholdTextColour = groups[i].getTextColThreshold(); if (groups[i].getConsThreshold() != 0) @@ -2241,12 +2249,13 @@ public class Jalview2XML .getHeight(), tree.getXpos(), tree.getYpos()); if (tree.getId() != null) { - + // perhaps bind the tree id to something ? } } else { // update local tree attributes ? + // TODO: should check if tp has been manipulated by user - if so its settings shouldn't be modified tp.setTitle(tree.getTitle()); tp.setBounds(new Rectangle(tree.getXpos(), tree.getYpos(), tree .getWidth(), tree.getHeight())); @@ -2257,6 +2266,11 @@ public class Jalview2XML tp.treeCanvas.ap = ap; // af.alignPanel; } + if (tp==null) + { + warn("There was a problem recovering stored Newick tree: \n"+tree.getNewick()); + continue; + } tp.fitToWindow.setState(tree.getFitToWindow()); tp.fitToWindow_actionPerformed(null); @@ -2358,8 +2372,9 @@ public class Jalview2XML } } } - Desktop.desktop.getComponentAt(x, y); - + // Probably don't need to do this anymore... + // Desktop.desktop.getComponentAt(x, y); + // TODO: NOW: check that this recovers the PDB file correctly. String pdbFile = loadPDBFile(jprovider, ids[p].getId()); jalview.datamodel.SequenceI[] seq = new jalview.datamodel.SequenceI[] @@ -2370,17 +2385,28 @@ public class Jalview2XML { // create a new Jmol window String state = ids[p].getStructureState(s).getContent(); - - StringBuffer newFileLoc = new StringBuffer(state.substring( + StringBuffer newFileLoc=null; + if (state.indexOf("load")>-1) { + 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, + } else { + System.err.println("Ignoring incomplete Jmol state for PDB "+ids[p].getId()); + + newFileLoc = new StringBuffer(state); + newFileLoc.append("; load \""); + newFileLoc.append(jpdb.getFile()); + newFileLoc.append("\";"); + } + + if (newFileLoc!=null) { + new AppJmol(pdbFile, ids[p].getId(), seq, af.alignPanel, + newFileLoc.toString(), new java.awt.Rectangle(x, y, width, height), sviewid); + } } else @@ -2526,7 +2552,7 @@ public class Jalview2XML af.viewport.textColour = new java.awt.Color(view.getTextCol1()); af.viewport.textColour2 = new java.awt.Color(view.getTextCol2()); af.viewport.thresholdTextColour = view.getTextColThreshold(); - + af.viewport.setShowUnconserved(view.hasShowUnconserved() ? view.isShowUnconserved() : false); af.viewport.setStartRes(view.getStartRes()); af.viewport.setStartSeq(view.getStartSeq()); @@ -2659,9 +2685,19 @@ public class Jalview2XML for (int fs = 0; fs < jms.getFeatureSettings().getSettingCount(); fs++) { Setting setting = jms.getFeatureSettings().getSetting(fs); - - af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().setColour( - setting.getType(), new java.awt.Color(setting.getColour())); + if (setting.hasMincolour()) + { + // TODO: determine how to set data independent bounds for a graduated colour scheme's range. + GraduatedColor gc = new GraduatedColor(new java.awt.Color(setting.getMincolour()), new java.awt.Color(setting.getColour()), + 0,1); + if (setting.hasThreshold()) { + gc.setThresh(setting.getThreshold()); + gc.setThreshType(setting.getThreshstate()); + } + } 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( @@ -2779,6 +2815,7 @@ public class Jalview2XML SequenceI[] dsseqs = new SequenceI[dseqs.size()]; dseqs.copyInto(dsseqs); ds = new jalview.datamodel.Alignment(dsseqs); + debug("Created new dataset "+vamsasSet.getDatasetId()+" for alignment "+System.identityHashCode(al)); addDatasetRef(vamsasSet.getDatasetId(), ds); } // set the dataset for the newly imported alignment. @@ -3132,6 +3169,33 @@ public class Jalview2XML } } + private void debug(String string) + { + debug(string,null); + } + private void debug(String msg, Exception e) + { + if (Cache.log != null) + { + if (e != null) + { + Cache.log.debug(msg, e); + } + else + { + Cache.log.debug(msg); + } + } + else + { + System.err.println("Warning: " + msg); + if (e != null) + { + e.printStackTrace(); + } + } + } + /** * set the object to ID mapping tables used to write/recover objects and XML * ID strings for the jalview project. If external tables are provided then