//The following public methods maybe called
//externally, eg via javascript in HTML page
/**
- * @return list of selected sequences separated by "¬"
+ * @return String list of selected sequence IDs, each terminated by "¬" (¬)
*/
public String getSelectedSequences()
{
return getSelectedSequencesFrom(getDefaultTargetFrame());
}
+ /**
+ * @param sep separator string or null for default
+ * @return String list of selected sequence IDs, each terminated by sep or ("¬" as default)
+ */
+ public String getSelectedSequences(String sep)
+ {
+ return getSelectedSequencesFrom(getDefaultTargetFrame(), sep);
+ }
+ /**
+ * @param alf alignframe containing selection
+ * @return String list of selected sequence IDs, each terminated by "¬"
+ *
+ */
public String getSelectedSequencesFrom(AlignFrame alf)
{
+ return getSelectedSequencesFrom(alf, "¬");
+ }
+ /**
+ * get list of selected sequence IDs separated by given separator
+ * @param alf window containing selection
+ * @param sep separator string to use - default is "¬"
+ * @return String list of selected sequence IDs, each terminated by the given separator
+ */
+ public String getSelectedSequencesFrom(AlignFrame alf, String sep)
+ {
StringBuffer result = new StringBuffer("");
-
+ if (sep==null || sep.length()==0)
+ {
+ sep = "¬";
+ }
if (alf.viewport.getSelectionGroup() != null)
{
SequenceI[] seqs = alf.viewport.getSelectionGroup().
for (int i = 0; i < seqs.length; i++)
{
- result.append(seqs[i].getName() + "¬");
+ result.append(seqs[i].getName());
+ result.append(sep);
}
}
return result.toString();
}
-
+
+ /**
+ * get sequences selected in current alignFrame and return their alignment in format 'format' either with or without suffix
+ * @param alf - where selection is
+ * @param format - format of alignment file
+ * @param suffix - "true" to append /start-end string to each sequence ID
+ * @return selected sequences as flat file or empty string if there was no current selection
+ */
+ public String getSelectedSequencesAsAlignment(String format, String suffix) {
+ return getSelectedSequencesAsAlignmentFrom(currentAlignFrame, format, suffix);
+ }
+
+ /**
+ * get sequences selected in alf and return their alignment in format 'format' either with or without suffix
+ * @param alf - where selection is
+ * @param format - format of alignment file
+ * @param suffix - "true" to append /start-end string to each sequence ID
+ * @return selected sequences as flat file or empty string if there was no current selection
+ */
+ public String getSelectedSequencesAsAlignmentFrom(AlignFrame alf, String format, String suffix)
+ {
+ try
+ {
+ boolean seqlimits = suffix.equalsIgnoreCase("true");
+ if (alf.viewport.getSelectionGroup()!=null)
+ {
+ String reply = new AppletFormatAdapter().formatSequences(format,
+ new Alignment(alf.viewport.getSelectionAsNewSequence()), seqlimits);
+ return reply;
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ return "Error retrieving alignment in " + format + " format. ";
+ }
+ return "";
+ }
+
public String getAlignment(String format)
{
return getAlignmentFrom(getDefaultTargetFrame(), format, "true");
{
for (int i = 0; i < seqs.length; i++)
{
- ( (Sequence) seqs[i]).addPDBId(pdb);
+ if (seqs[i]!=null)
+ {
+ ( (Sequence) seqs[i]).addPDBId(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 (jmolAvailable)