- newAlignFrame.parseFeaturesFile(param, protocol);
- }
-
- param = applet.getParameter("showFeatureSettings");
- if (param != null && param.equalsIgnoreCase("true"))
- {
- newAlignFrame.viewport.setShowSequenceFeatures(true);
- new FeatureSettings(newAlignFrame.alignPanel);
- }
-
- param = applet.getParameter("annotations");
- if (param != null)
- {
- param = setProtocolState(param);
-
- if (new AnnotationFile().readAnnotationFile(
- newAlignFrame.viewport.getAlignment(), param, protocol))
- {
- newAlignFrame.alignPanel.fontChanged();
- newAlignFrame.alignPanel.setScrollValues(0, 0);
- }
- else
- {
- System.err
- .println("Annotations were not added from annotation file '"
- + param + "'");
- }
-
- }
-
- param = applet.getParameter("jnetfile");
- if (param != null)
- {
- try
- {
- param = setProtocolState(param);
- jalview.io.JPredFile predictions = new jalview.io.JPredFile(
- param, protocol);
- JnetAnnotationMaker.add_annotation(predictions,
- newAlignFrame.viewport.getAlignment(), 0, false); // false==do
- // not
- // add
- // sequence
- // profile
- // from
- // concise
- // output
- newAlignFrame.alignPanel.fontChanged();
- newAlignFrame.alignPanel.setScrollValues(0, 0);
- } catch (Exception ex)
- {
- ex.printStackTrace();
- }
- }
- /*
- * <param name="alignpdbfiles" value="false/true"/> Undocumented for 2.6
- * - related to JAL-434
- */
- applet.setAlignPdbStructures(getDefaultParameter("alignpdbfiles",
- false));
- /*
- * <param name="PDBfile" value="1gaq.txt PDB|1GAQ|1GAQ|A PDB|1GAQ|1GAQ|B
- * PDB|1GAQ|1GAQ|C">
- *
- * <param name="PDBfile2" value="1gaq.txt A=SEQA B=SEQB C=SEQB">
- *
- * <param name="PDBfile3" value="1q0o Q45135_9MICO">
- */
-
- int pdbFileCount = 0;
- // Accumulate pdbs here if they are heading for the same view (if
- // alignPdbStructures is true)
- Vector pdbs = new Vector();
- // create a lazy matcher if we're asked to
- jalview.analysis.SequenceIdMatcher matcher = (applet
- .getDefaultParameter("relaxedidmatch", false)) ? new jalview.analysis.SequenceIdMatcher(
- newAlignFrame.getAlignViewport().getAlignment()
- .getSequencesArray()) : null;
-
- do
- {
- if (pdbFileCount > 0)
- {
- param = applet.getParameter("PDBFILE" + pdbFileCount);
- }
- else
- {
- param = applet.getParameter("PDBFILE");
- }
-
- if (param != null)
- {
- PDBEntry pdb = new PDBEntry();
-
- String seqstring;
- SequenceI[] seqs = null;
- String[] chains = null;
-
- StringTokenizer st = new StringTokenizer(param, " ");
-
- if (st.countTokens() < 2)
- {
- String sequence = applet.getParameter("PDBSEQ");
- if (sequence != null)
- {
- seqs = new SequenceI[]
- { matcher == null ? (Sequence) newAlignFrame
- .getAlignViewport().getAlignment()
- .findName(sequence) : matcher.findIdMatch(sequence) };
- }
-
- }
- else
- {
- param = st.nextToken();
- Vector tmp = new Vector();
- Vector tmp2 = new Vector();
-
- while (st.hasMoreTokens())
- {
- seqstring = st.nextToken();
- StringTokenizer st2 = new StringTokenizer(seqstring, "=");
- if (st2.countTokens() > 1)
- {
- // This is the chain
- tmp2.addElement(st2.nextToken());
- seqstring = st2.nextToken();
- }
- tmp.addElement(matcher == null ? (Sequence) newAlignFrame
- .getAlignViewport().getAlignment()
- .findName(seqstring) : matcher
- .findIdMatch(seqstring));
- }
-
- seqs = new SequenceI[tmp.size()];
- tmp.copyInto(seqs);
- if (tmp2.size() == tmp.size())
- {
- chains = new String[tmp2.size()];
- tmp2.copyInto(chains);
- }
- }
- param = setProtocolState(param);
-
- if (// !jmolAvailable
- // &&
- protocol == AppletFormatAdapter.CLASSLOADER
- && !useXtrnalSviewer)
- {
- // Re: JAL-357 : the bug isn't a problem if we are using an
- // external viewer!
- // TODO: verify this Re:
- // https://mantis.lifesci.dundee.ac.uk/view.php?id=36605
- // This exception preserves the current behaviour where, even if
- // the local pdb file was identified in the class loader
- protocol = AppletFormatAdapter.URL; // this is probably NOT
- // CORRECT!
- param = addProtocol(param); //
- }
-
- pdb.setFile(param);
-
- if (seqs != null)
- {
- for (int i = 0; i < seqs.length; i++)
- {
- if (seqs[i] != null)
- {
- ((Sequence) seqs[i]).addPDBId(pdb);
- StructureSelectionManager.getStructureSelectionManager(
- applet).registerPDBEntry(pdb);
- }
- else
- {
- if (JalviewLite.debug)
- {
- // this may not really be a problem but we give a warning
- // anyway
- System.err
- .println("Warning: Possible input parsing error: Null sequence for attachment of PDB (sequence "
- + i + ")");
- }
- }
- }
-
- if (!alignPdbStructures)
- {
- newAlignFrame.newStructureView(applet, pdb, seqs, chains,
- protocol);
- }
- else
- {
- pdbs.addElement(new Object[]
- { pdb, seqs, chains, new String(protocol) });
- }
- }
- }
-
- pdbFileCount++;
- } while (param != null || pdbFileCount < 10);
- if (pdbs.size() > 0)
- {
- SequenceI[][] seqs = new SequenceI[pdbs.size()][];
- PDBEntry[] pdb = new PDBEntry[pdbs.size()];
- String[][] chains = new String[pdbs.size()][];
- String[] protocols = new String[pdbs.size()];
- for (int pdbsi = 0, pdbsiSize = pdbs.size(); pdbsi < pdbsiSize; pdbsi++)
- {
- Object[] o = (Object[]) pdbs.elementAt(pdbsi);
- pdb[pdbsi] = (PDBEntry) o[0];
- seqs[pdbsi] = (SequenceI[]) o[1];
- chains[pdbsi] = (String[]) o[2];
- protocols[pdbsi] = (String) o[3];
- }
- newAlignFrame.alignedStructureView(applet, pdb, seqs, chains,
- protocols);
-
- }
- }
- else
- {
- fileFound = false;
- applet.remove(launcher);
- applet.repaint();
- }
- callInitCallback();
- }
-
- /**
- * Discovers whether the given file is in the Applet Archive
- *
- * @param file
- * String
- * @return boolean
- */
- boolean inArchive(String file)
- {
- // This might throw a security exception in certain browsers
- // Netscape Communicator for instance.
- try
- {
- boolean rtn = (getClass().getResourceAsStream("/" + file) != null);
- if (debug)
- {
- System.err.println("Resource '" + file + "' was "
- + (rtn ? "" : "not") + " located by classloader.");
- }
- return rtn;
- } catch (Exception ex)
- {
- System.out.println("Exception checking resources: " + file + " "
- + ex);
- return false;
- }
- }
-
- String addProtocol(String file)
- {
- if (file.indexOf("://") == -1)
- {
- String fl = applet.resolveUrlForLocalOrAbsolute(file,
- getDocumentBase());
- try
- {
- if (new java.net.URL(fl).openStream() != null)
- {
- if (debug)
- {
- System.err.println("Prepended document base for resource: '"
- + file + "'");
- }
- return fl;
- }
- } catch (Exception x)
- {
- }
- ;
- fl = applet.resolveUrlForLocalOrAbsolute(file, getCodeBase());
- try
- {
- if (new java.net.URL(fl).openStream() != null)
- {
- if (debug)
- {
- System.err.println("Prepended codebase for resource: '"
- + file + "'");
- }
- return fl;
- }
- } catch (Exception x)
- {
- }
- ;
-
- }
-
- return file;
- }
- }
-
- /**
- * @return the default alignFrame acted on by the public applet methods. May
- * return null with an error message on System.err indicating the
- * fact.
- */
- public AlignFrame getDefaultTargetFrame()
- {
- if (currentAlignFrame != null)
- {
- return currentAlignFrame;
- }
- if (initialAlignFrame != null)
- {
- return initialAlignFrame;
- }
- System.err
- .println("Implementation error: Jalview Applet API cannot work out which AlignFrame to use.");
- return null;
- }
-
- /**
- * separator used for separatorList
- */
- protected String separator = "" + ((char) 0x00AC); // the default used to be
- // '|' but many sequence
- // IDS include pipes.
-
- /**
- * set to enable the URL based javascript execution mechanism
- */
- public boolean jsfallbackEnabled = false;
-
- /**
- * parse the string into a list
- *
- * @param list
- * @return elements separated by separator
- */
- public String[] separatorListToArray(String list)
- {
- return separatorListToArray(list, separator);
- }
-
- /**
- * parse the string into a list
- *
- * @param list
- * @param separator
- * @return elements separated by separator
- */
- public String[] separatorListToArray(String list, String separator)
- {
- // note separator local variable intentionally masks object field
- int seplen = separator.length();
- if (list == null || list.equals("") || list.equals(separator))
- {
- return null;
- }
- java.util.Vector jv = new Vector();
- int cp = 0, pos;
- while ((pos = list.indexOf(separator, cp)) > cp)
- {
- jv.addElement(list.substring(cp, pos));
- cp = pos + seplen;
- }
- if (cp < list.length())
- {
- String c = list.substring(cp);
- if (!c.equals(separator))
- {
- jv.addElement(c);
- }
- }
- if (jv.size() > 0)
- {
- String[] v = new String[jv.size()];
- for (int i = 0; i < v.length; i++)
- {
- v[i] = (String) jv.elementAt(i);
- }
- jv.removeAllElements();
- if (debug)
- {
- System.err.println("Array from '" + separator
- + "' separated List:\n" + v.length);
- for (int i = 0; i < v.length; i++)
- {
- System.err.println("item " + i + " '" + v[i] + "'");
- }
- }
- return v;
- }
- if (debug)
- {
- System.err.println("Empty Array from '" + separator
- + "' separated List");
- }
- return null;
- }
-
- /**
- * concatenate the list with separator
- *
- * @param list
- * @return concatenated string
- */
- public String arrayToSeparatorList(String[] list)
- {
- return arrayToSeparatorList(list, separator);
- }
-
- /**
- * concatenate the list with separator
- *
- * @param list
- * @param separator
- * @return concatenated string
- */
- public String arrayToSeparatorList(String[] list, String separator)
- {
- StringBuffer v = new StringBuffer();
- if (list != null && list.length > 0)
- {
- for (int i = 0, iSize = list.length; i < iSize; i++)
- {
- if (list[i] != null)
- {
- if (i > 0)
- {
- v.append(separator);
- }
- v.append(list[i]);
- }
- }
- if (debug)
- {
- System.err.println("Returning '" + separator
- + "' separated List:\n");
- System.err.println(v);
- }
- return v.toString();
- }
- if (debug)
- {
- System.err.println("Returning empty '" + separator
- + "' separated List\n");
- }
- return "" + separator;
- }