/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
import jalview.analysis.AAFrequency;
import jalview.analysis.AlignmentAnnotationUtils;
+import jalview.analysis.AlignmentUtils;
import jalview.analysis.Conservation;
+import jalview.bin.Cache;
import jalview.commands.ChangeCaseCommand;
import jalview.commands.EditCommand;
import jalview.commands.EditCommand.Action;
import jalview.schemes.TurnColourScheme;
import jalview.schemes.UserColourScheme;
import jalview.schemes.ZappoColourScheme;
+import jalview.util.DBRefUtils;
import jalview.util.GroupUrlLink;
import jalview.util.GroupUrlLink.UrlStringTooLongException;
import jalview.util.MessageManager;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.Hashtable;
import java.util.LinkedHashMap;
{
private static final String ALL_ANNOTATIONS = "All";
- private static final String COMMA = ",";
-
JMenu groupMenu = new JMenu();
JMenuItem groupName = new JMenuItem();
protected JRadioButtonMenuItem RNAInteractionColour = new JRadioButtonMenuItem();
- // protected JRadioButtonMenuItem covariationColour = new
- // JRadioButtonMenuItem();
-
JRadioButtonMenuItem noColourmenuItem = new JRadioButtonMenuItem();
protected JCheckBoxMenuItem conservationMenuItem = new JCheckBoxMenuItem();
JMenuItem sequenceDetails = new JMenuItem();
JMenuItem sequenceSelDetails = new JMenuItem();
-
+
JMenuItem makeReferenceSeq = new JMenuItem();
JMenuItem chooseAnnotations = new JMenuItem();
JMenu pdbMenu = new JMenu();
- JMenuItem pdbFromFile = new JMenuItem();
-
- // JBPNote: Commented these out - Should add these services via the web
- // services menu system.
- // JMenuItem ContraFold = new JMenuItem();
-
- // JMenuItem RNAFold = new JMenuItem();
-
- JMenuItem enterPDB = new JMenuItem();
-
- JMenuItem discoverPDB = new JMenuItem();
-
JMenu outputMenu = new JMenu();
JMenu seqShowAnnotationsMenu = new JMenu();
JMenu seqHideAnnotationsMenu = new JMenu();
- JMenuItem seqAddReferenceAnnotations = new JMenuItem();
+ JMenuItem seqAddReferenceAnnotations = new JMenuItem(
+ MessageManager.getString("label.add_reference_annotations"));
JMenu groupShowAnnotationsMenu = new JMenu();
JMenu groupHideAnnotationsMenu = new JMenu();
- JMenuItem groupAddReferenceAnnotations = new JMenuItem();
+ JMenuItem groupAddReferenceAnnotations = new JMenuItem(
+ MessageManager.getString("label.add_reference_annotations"));
JMenuItem sequenceFeature = new JMenuItem();
JMenu jMenu1 = new JMenu();
- JMenuItem structureMenu = new JMenuItem();
+ JMenuItem pdbStructureDialog = new JMenuItem();
- JMenu viewStructureMenu = new JMenu();
+ JMenu rnaStructureMenu = new JMenu();
- // JMenu colStructureMenu = new JMenu();
JMenuItem editSequence = new JMenuItem();
- // JMenuItem annotationMenuItem = new JMenuItem();
-
JMenu groupLinksMenu;
JMenuItem hideInsertions = new JMenuItem();
* @param seq
* DOCUMENT ME!
*/
- public PopupMenu(final AlignmentPanel ap, Sequence seq, Vector links)
+ public PopupMenu(final AlignmentPanel ap, Sequence seq, List<String> links)
{
this(ap, seq, links, null);
}
* @param groupLinks
*/
public PopupMenu(final AlignmentPanel ap, final SequenceI seq,
- Vector links, Vector groupLinks)
+ List<String> links, List<String> groupLinks)
{
// /////////////////////////////////////////////////////////
// If this is activated from the sequence panel, the user may want to
colours.add(BLOSUM62Colour);
colours.add(purinePyrimidineColour);
colours.add(RNAInteractionColour);
- // colours.add(covariationColour);
for (int i = 0; i < jalview.io.FormatAdapter.WRITEABLE_FORMATS.length; i++)
{
sequenceMenu.setText(sequence.getName());
if (seq == ap.av.getAlignment().getSeqrep())
{
- makeReferenceSeq.setText("Unmark representative");
- } else {
- makeReferenceSeq.setText("Mark as representative");
+ makeReferenceSeq.setText(MessageManager
+ .getString("action.unmark_as_reference"));
}
-
- if (seq.getDatasetSequence().getPDBId() != null
- && seq.getDatasetSequence().getPDBId().size() > 0)
+ else
{
- java.util.Enumeration e = seq.getDatasetSequence().getPDBId()
- .elements();
-
- while (e.hasMoreElements())
- {
- final PDBEntry pdb = (PDBEntry) e.nextElement();
-
- menuItem = new JMenuItem();
- menuItem.setText(pdb.getId());
- menuItem.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent e)
- {
- // TODO re JAL-860: optionally open dialog or provide a menu entry
- // allowing user to open just one structure per sequence
- // new AppJmol(pdb, ap.av.collateForPDB(new PDBEntry[]
- // { pdb })[0], null, ap);
- new StructureViewer(ap.getStructureSelectionManager())
- .viewStructures(pdb,
- ap.av.collateForPDB(new PDBEntry[]
- { pdb })[0], null, ap);
- }
- });
- viewStructureMenu.add(menuItem);
-
- /*
- * menuItem = new JMenuItem(); menuItem.setText(pdb.getId());
- * menuItem.addActionListener(new java.awt.event.ActionListener() {
- * public void actionPerformed(ActionEvent e) {
- * colourByStructure(pdb.getId()); } });
- * colStructureMenu.add(menuItem);
- */
- }
+ makeReferenceSeq.setText(MessageManager
+ .getString("action.set_as_reference"));
}
- else
+
+ if (!ap.av.getAlignment().isNucleotide())
{
- if (ap.av.getAlignment().isNucleotide() == false)
- {
- structureMenu.remove(viewStructureMenu);
- }
- // structureMenu.remove(colStructureMenu);
+ remove(rnaStructureMenu);
}
- if (ap.av.getAlignment().isNucleotide() == true)
+ else
{
- AlignmentAnnotation[] aa = ap.av.getAlignment()
+ int origCount = rnaStructureMenu.getItemCount();
+ /*
+ * add menu items to 2D-render any alignment or sequence secondary
+ * structure annotation
+ */
+ AlignmentAnnotation[] aas = ap.av.getAlignment()
.getAlignmentAnnotation();
- for (int i = 0; aa != null && i < aa.length; i++)
+ if (aas != null)
{
- if (aa[i].isValidStruc() && aa[i].sequenceRef == null)
+ for (final AlignmentAnnotation aa : aas)
{
- final String rnastruc = aa[i].getRNAStruc();
- final String structureLine = aa[i].label + " (alignment)";
- menuItem = new JMenuItem();
- menuItem.setText(MessageManager.formatMessage(
- "label.2d_rna_structure_line", new String[]
- { structureLine }));
- menuItem.addActionListener(new java.awt.event.ActionListener()
+ if (aa.isValidStruc() && aa.sequenceRef == null)
{
- @Override
- public void actionPerformed(ActionEvent e)
+ /*
+ * valid alignment RNA secondary structure annotation
+ */
+ menuItem = new JMenuItem();
+ menuItem.setText(MessageManager.formatMessage(
+ "label.2d_rna_structure_line",
+ new Object[] { aa.label }));
+ menuItem.addActionListener(new java.awt.event.ActionListener()
{
- // // System.out.println("1:"+structureLine);
- // System.out.println("1:sname" + seq.getName());
- // System.out.println("2:seq" + seq);
- //
- // // System.out.println("3:"+seq.getSequenceAsString());
- // System.out.println("3:strucseq" + rnastruc);
- // // System.out.println("4:struc"+seq.getRNA());
- // System.out.println("5:name" + seq.getName());
- // System.out.println("6:ap" + ap);
- new AppVarna(structureLine, seq, seq.getSequenceAsString(),
- rnastruc, seq.getName(), ap);
- // new AppVarna(seq.getName(),seq,rnastruc,seq.getRNA(),
- // seq.getName(), ap);
- System.out.println("end");
- }
- });
- viewStructureMenu.add(menuItem);
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ new AppVarna(seq, aa, ap);
+ }
+ });
+ rnaStructureMenu.add(menuItem);
+ }
}
}
- // SequenceFeatures[] test = seq.getSequenceFeatures();
-
if (seq.getAnnotation() != null)
{
- AlignmentAnnotation seqAnno[] = seq.getAnnotation();
- for (int i = 0; i < seqAnno.length; i++)
+ AlignmentAnnotation seqAnns[] = seq.getAnnotation();
+ for (final AlignmentAnnotation aa : seqAnns)
{
- if (seqAnno[i].isValidStruc())
+ if (aa.isValidStruc())
{
- final String rnastruc = seqAnno[i].getRNAStruc();
-
+ /*
+ * valid sequence RNA secondary structure annotation
+ */
// TODO: make rnastrucF a bit more nice
menuItem = new JMenuItem();
menuItem.setText(MessageManager.formatMessage(
- "label.2d_rna_sequence_name", new String[]
- { seq.getName() }));
+ "label.2d_rna_sequence_name",
+ new Object[] { seq.getName() }));
menuItem.addActionListener(new java.awt.event.ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
// TODO: VARNA does'nt print gaps in the sequence
-
- new AppVarna(seq.getName() + " structure", seq, seq
- .getSequenceAsString(), rnastruc, seq.getName(),
- ap);
+ new AppVarna(seq, aa, ap);
}
});
- viewStructureMenu.add(menuItem);
+ rnaStructureMenu.add(menuItem);
}
}
}
+ if (rnaStructureMenu.getItemCount() == origCount)
+ {
+ remove(rnaStructureMenu);
+ }
}
menuItem = new JMenuItem(
&& ap.av.getSelectionGroup().getSize() > 1)
{
menuItem = new JMenuItem(MessageManager.formatMessage(
- "label.represent_group_with", new String[]
- { seq.getName() }));
+ "label.represent_group_with",
+ new Object[] { seq.getName() }));
menuItem.addActionListener(new java.awt.event.ActionListener()
{
@Override
if (sg != null && sg.getSize() > 0)
{
groupName.setText(MessageManager.formatMessage("label.name_param",
- new String[]
- { sg.getName() }));
+ new Object[] { sg.getName() }));
groupName.setText(MessageManager
.getString("label.edit_name_and_description_current_group"));
SequenceI sqass = null;
for (SequenceI sq : ap.av.getSequenceSelection())
{
- Vector<PDBEntry> pes = sq.getDatasetSequence().getPDBId();
+ Vector<PDBEntry> pes = sq.getDatasetSequence().getAllPDBEntries();
if (pes != null && pes.size() > 0)
{
reppdb.put(pes.get(0).getId(), pes.get(0));
new PDBEntry[pdbe.size()]), pr = reppdb.values().toArray(
new PDBEntry[reppdb.size()]);
final JMenuItem gpdbview, rpdbview;
- // if (pdbe.size() == 1)
- // {
- // structureMenu.add(gpdbview = new JMenuItem(MessageManager
- // .formatMessage("label.view_structure_for", new String[]
- // { sqass.getDisplayId(false) })));
- // }
- // else
- // {
- // structureMenu.add(gpdbview = new JMenuItem(MessageManager
- // .formatMessage("label.view_all_structures", new String[]
- // { new Integer(pdbe.size()).toString() })));
- // }
- // gpdbview.setToolTipText(MessageManager
- // .getString("label.open_new_jmol_view_with_all_structures_associated_current_selection_superimpose_using_alignment"));
- // gpdbview.addActionListener(new ActionListener()
- // {
- //
- // @Override
- // public void actionPerformed(ActionEvent e)
- // {
- // new StructureViewer(ap.getStructureSelectionManager())
- // .viewStructures(ap, pe, ap.av.collateForPDB(pe));
- // }
- // });
- // if (reppdb.size() > 1 && reppdb.size() < pdbe.size())
- // {
- // structureMenu.add(rpdbview = new JMenuItem(MessageManager
- // .formatMessage(
- // "label.view_all_representative_structures",
- // new String[]
- // { new Integer(reppdb.size()).toString() })));
- // rpdbview.setToolTipText(MessageManager
- // .getString("label.open_new_jmol_view_with_all_representative_structures_associated_current_selection_superimpose_using_alignment"));
- // rpdbview.addActionListener(new ActionListener()
- // {
- //
- // @Override
- // public void actionPerformed(ActionEvent e)
- // {
- // new StructureViewer(ap.getStructureSelectionManager())
- // .viewStructures(ap, pr, ap.av.collateForPDB(pr));
- // }
- // });
- // }
}
}
else
if (seq == null)
{
sequenceMenu.setVisible(false);
- structureMenu.setVisible(false);
+ pdbStructureDialog.setVisible(false);
+ rnaStructureMenu.setVisible(false);
}
if (links != null && links.size() > 0)
{
+ addFeatureLinks(seq, links);
+ }
+ }
- JMenu linkMenu = new JMenu(MessageManager.getString("action.link"));
- Vector linkset = new Vector();
- for (int i = 0; i < links.size(); i++)
+ /**
+ * Adds a 'Link' menu item with a sub-menu item for each hyperlink provided.
+ *
+ * @param seq
+ * @param links
+ */
+ void addFeatureLinks(final SequenceI seq, List<String> links)
+ {
+ JMenu linkMenu = new JMenu(MessageManager.getString("action.link"));
+ List<String> linkset = new ArrayList<String>();
+ for (String link : links)
+ {
+ UrlLink urlLink = null;
+ try
{
- String link = links.elementAt(i).toString();
- UrlLink urlLink = null;
- try
- {
- urlLink = new UrlLink(link);
- } catch (Exception foo)
- {
- jalview.bin.Cache.log.error("Exception for URLLink '" + link
- + "'", foo);
- continue;
- }
- ;
- if (!urlLink.isValid())
+ urlLink = new UrlLink(link);
+ } catch (Exception foo)
+ {
+ Cache.log.error("Exception for URLLink '" + link + "'", foo);
+ continue;
+ }
+ ;
+ if (!urlLink.isValid())
+ {
+ Cache.log.error(urlLink.getInvalidMessage());
+ continue;
+ }
+ final String label = urlLink.getLabel();
+ if (seq != null && urlLink.isDynamic())
+ {
+
+ // collect matching db-refs
+ DBRefEntry[] dbr = DBRefUtils.selectRefs(seq.getDBRefs(),
+ new String[] { urlLink.getTarget() });
+ // collect id string too
+ String id = seq.getName();
+ String descr = seq.getDescription();
+ if (descr != null && descr.length() < 1)
{
- jalview.bin.Cache.log.error(urlLink.getInvalidMessage());
- continue;
+ descr = null;
}
- final String label = urlLink.getLabel();
- if (seq != null && urlLink.isDynamic())
- {
-
- // collect matching db-refs
- DBRefEntry[] dbr = jalview.util.DBRefUtils.selectRefs(
- seq.getDBRef(), new String[]
- { urlLink.getTarget() });
- // collect id string too
- String id = seq.getName();
- String descr = seq.getDescription();
- if (descr != null && descr.length() < 1)
- {
- descr = null;
- }
- if (dbr != null)
+ if (dbr != null)
+ {
+ for (int r = 0; r < dbr.length; r++)
{
- for (int r = 0; r < dbr.length; r++)
+ if (id != null && dbr[r].getAccessionId().equals(id))
{
- if (id != null && dbr[r].getAccessionId().equals(id))
- {
- // suppress duplicate link creation for the bare sequence ID
- // string with this link
- id = null;
- }
- // create Bare ID link for this RUL
- String[] urls = urlLink.makeUrls(dbr[r].getAccessionId(),
- true);
- if (urls != null)
- {
- for (int u = 0; u < urls.length; u += 2)
- {
- if (!linkset.contains(urls[u] + "|" + urls[u + 1]))
- {
- linkset.addElement(urls[u] + "|" + urls[u + 1]);
- addshowLink(linkMenu, label + "|" + urls[u],
- urls[u + 1]);
- }
- }
- }
+ // suppress duplicate link creation for the bare sequence ID
+ // string with this link
+ id = null;
}
- }
- if (id != null)
- {
- // create Bare ID link for this RUL
- String[] urls = urlLink.makeUrls(id, true);
+ // create Bare ID link for this URL
+ String[] urls = urlLink.makeUrls(dbr[r].getAccessionId(), true);
if (urls != null)
{
for (int u = 0; u < urls.length; u += 2)
{
if (!linkset.contains(urls[u] + "|" + urls[u + 1]))
{
- linkset.addElement(urls[u] + "|" + urls[u + 1]);
- addshowLink(linkMenu, label, urls[u + 1]);
+ linkset.add(urls[u] + "|" + urls[u + 1]);
+ addshowLink(linkMenu, label + "|" + urls[u], urls[u + 1]);
}
}
}
}
- // Create urls from description but only for URL links which are regex
- // links
- if (descr != null && urlLink.getRegexReplace() != null)
+ }
+ if (id != null)
+ {
+ // create Bare ID link for this URL
+ String[] urls = urlLink.makeUrls(id, true);
+ if (urls != null)
{
- // create link for this URL from description where regex matches
- String[] urls = urlLink.makeUrls(descr, true);
- if (urls != null)
+ for (int u = 0; u < urls.length; u += 2)
{
- for (int u = 0; u < urls.length; u += 2)
+ if (!linkset.contains(urls[u] + "|" + urls[u + 1]))
{
- if (!linkset.contains(urls[u] + "|" + urls[u + 1]))
- {
- linkset.addElement(urls[u] + "|" + urls[u + 1]);
- addshowLink(linkMenu, label, urls[u + 1]);
- }
+ linkset.add(urls[u] + "|" + urls[u + 1]);
+ addshowLink(linkMenu, label, urls[u + 1]);
}
}
}
}
- else
+ // Create urls from description but only for URL links which are regex
+ // links
+ if (descr != null && urlLink.getRegexReplace() != null)
{
- if (!linkset.contains(label + "|" + urlLink.getUrl_prefix()))
+ // create link for this URL from description where regex matches
+ String[] urls = urlLink.makeUrls(descr, true);
+ if (urls != null)
{
- linkset.addElement(label + "|" + urlLink.getUrl_prefix());
- // Add a non-dynamic link
- addshowLink(linkMenu, label, urlLink.getUrl_prefix());
+ for (int u = 0; u < urls.length; u += 2)
+ {
+ if (!linkset.contains(urls[u] + "|" + urls[u + 1]))
+ {
+ linkset.add(urls[u] + "|" + urls[u + 1]);
+ addshowLink(linkMenu, label, urls[u + 1]);
+ }
+ }
}
}
}
- if (sequence != null)
- {
- sequenceMenu.add(linkMenu);
- }
else
{
- add(linkMenu);
+ if (!linkset.contains(label + "|" + urlLink.getUrl_prefix()))
+ {
+ linkset.add(label + "|" + urlLink.getUrl_prefix());
+ // Add a non-dynamic link
+ addshowLink(linkMenu, label, urlLink.getUrl_prefix());
+ }
}
}
+ if (sequence != null)
+ {
+ sequenceMenu.add(linkMenu);
+ }
+ else
+ {
+ add(linkMenu);
+ }
}
/**
*/
Map<String, List<List<String>>> shownTypes = new LinkedHashMap<String, List<List<String>>>();
Map<String, List<List<String>>> hiddenTypes = new LinkedHashMap<String, List<List<String>>>();
- AlignmentAnnotationUtils.getShownHiddenTypes(shownTypes,
- hiddenTypes,
- AlignmentAnnotationUtils.asList(annotations),
- forSequences);
+ AlignmentAnnotationUtils.getShownHiddenTypes(shownTypes, hiddenTypes,
+ AlignmentAnnotationUtils.asList(annotations), forSequences);
for (String calcId : hiddenTypes.keySet())
{
for (List<String> type : hiddenTypes.get(calcId))
{
- addAnnotationTypeToShowHide(showMenu, forSequences,
- calcId, type, false, true);
+ addAnnotationTypeToShowHide(showMenu, forSequences, calcId, type,
+ false, true);
}
}
// grey out 'show annotations' if none are hidden
{
for (List<String> type : shownTypes.get(calcId))
{
- addAnnotationTypeToShowHide(hideMenu, forSequences,
- calcId, type, false, false);
+ addAnnotationTypeToShowHide(hideMenu, forSequences, calcId, type,
+ false, false);
}
}
// grey out 'hide annotations' if none are shown
final boolean actionIsShow)
{
String label = types.toString(); // [a, b, c]
- label = label.substring(1, label.length() - 1);
+ label = label.substring(1, label.length() - 1); // a, b, c
final JMenuItem item = new JMenuItem(label);
item.setToolTipText(calcId);
item.addActionListener(new java.awt.event.ActionListener()
@Override
public void actionPerformed(ActionEvent e)
{
- showHideAnnotation_actionPerformed(types, forSequences, allTypes,
- actionIsShow);
+ AlignmentUtils.showOrHideSequenceAnnotations(ap.getAlignment(),
+ types, forSequences, allTypes, actionIsShow);
+ refresh();
}
});
showOrHideMenu.add(item);
}
- /**
- * Action on selecting a list of annotation type (or the 'all types' values)
- * to show or hide for the specified sequences.
- *
- * @param types
- * @param forSequences
- * @param anyType
- * @param doShow
- */
- protected void showHideAnnotation_actionPerformed(
- Collection<String> types, List<SequenceI> forSequences,
- boolean anyType, boolean doShow)
- {
- for (AlignmentAnnotation aa : ap.getAlignment()
- .getAlignmentAnnotation())
- {
- if (anyType || types.contains(aa.label))
- {
- if ((aa.sequenceRef != null)
- && forSequences.contains(aa.sequenceRef))
- {
- aa.visible = doShow;
- }
- }
- }
- refresh();
- }
-
- private void buildGroupURLMenu(SequenceGroup sg, Vector groupLinks)
+ private void buildGroupURLMenu(SequenceGroup sg, List<String> groupLinks)
{
// TODO: usability: thread off the generation of group url content so root
// ID/regex match URLs
groupLinksMenu = new JMenu(
MessageManager.getString("action.group_link"));
- JMenu[] linkMenus = new JMenu[]
- { null, new JMenu(MessageManager.getString("action.ids")),
+ // three types of url that might be created.
+ JMenu[] linkMenus = new JMenu[] { null,
+ new JMenu(MessageManager.getString("action.ids")),
new JMenu(MessageManager.getString("action.sequences")),
- new JMenu(MessageManager.getString("action.ids_sequences")) }; // three
- // types
- // of url
- // that
- // might
- // be
- // created.
+ new JMenu(MessageManager.getString("action.ids_sequences")) };
+
SequenceI[] seqs = ap.av.getSelectionAsNewSequence();
String[][] idandseqs = GroupUrlLink.formStrings(seqs);
- Hashtable commonDbrefs = new Hashtable();
+ Hashtable<String, Object[]> commonDbrefs = new Hashtable<String, Object[]>();
for (int sq = 0; sq < seqs.length; sq++)
{
{
sqi = sqi.getDatasetSequence();
}
- DBRefEntry[] dbr = sqi.getDBRef();
+ DBRefEntry[] dbr = sqi.getDBRefs();
if (dbr != null && dbr.length > 0)
{
for (int d = 0; d < dbr.length; d++)
{
String src = dbr[d].getSource(); // jalview.util.DBRefUtils.getCanonicalName(dbr[d].getSource()).toUpperCase();
- Object[] sarray = (Object[]) commonDbrefs.get(src);
+ Object[] sarray = commonDbrefs.get(src);
if (sarray == null)
{
sarray = new Object[2];
- sarray[0] = new int[]
- { 0 };
+ sarray[0] = new int[] { 0 };
sarray[1] = new String[seqs.length];
commonDbrefs.put(src, sarray);
// now create group links for all distinct ID/sequence sets.
boolean addMenu = false; // indicates if there are any group links to give
// to user
- for (int i = 0; i < groupLinks.size(); i++)
+ for (String link : groupLinks)
{
- String link = groupLinks.elementAt(i).toString();
GroupUrlLink urlLink = null;
try
{
urlLink = new GroupUrlLink(link);
} catch (Exception foo)
{
- jalview.bin.Cache.log.error("Exception for GroupURLLink '" + link
+ Cache.log.error("Exception for GroupURLLink '" + link
+ "'", foo);
continue;
}
;
if (!urlLink.isValid())
{
- jalview.bin.Cache.log.error(urlLink.getInvalidMessage());
+ Cache.log.error(urlLink.getInvalidMessage());
continue;
}
final String label = urlLink.getLabel();
boolean usingNames = false;
// Now see which parts of the group apply for this URL
String ltarget = urlLink.getTarget(); // jalview.util.DBRefUtils.getCanonicalName(urlLink.getTarget());
- Object[] idset = (Object[]) commonDbrefs.get(ltarget.toUpperCase());
+ Object[] idset = commonDbrefs.get(ltarget.toUpperCase());
String[] seqstr, ids; // input to makeUrl
if (idset != null)
{
if (urlset != null)
{
int type = urlLink.getGroupURLType() & 3;
- // System.out.println(urlLink.getGroupURLType()
- // +" "+((String[])urlset[3])[0]);
// first two bits ofurlLink type bitfield are sequenceids and sequences
// TODO: FUTURE: ensure the groupURL menu structure can be generalised
addshowLink(linkMenus[type], label
{
JMenuItem item = new JMenuItem(label);
item.setToolTipText(MessageManager.formatMessage(
- "label.open_url_param", new String[]
- { url }));
+ "label.open_url_param", new Object[] { url }));
item.addActionListener(new java.awt.event.ActionListener()
{
@Override
JMenuItem item = new JMenuItem(label);
item.setToolTipText(MessageManager.formatMessage(
"label.open_url_seqs_param",
- new Object[]
- { urlgenerator.getUrl_prefix(),
+ new Object[] { urlgenerator.getUrl_prefix(),
urlgenerator.getNumberInvolved(urlstub) }));
// TODO: put in info about what is being sent.
- item.addActionListener(new java.awt.event.ActionListener()
+ item.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
try
{
showLink(urlgenerator.constructFrom(urlstub));
- } catch (UrlStringTooLongException e)
+ } catch (UrlStringTooLongException e2)
{
}
}
}
});
chooseAnnotations.setText(MessageManager
- .getString("label.choose_annotations") + "...");
+ .getString("action.choose_annotations"));
chooseAnnotations.addActionListener(new java.awt.event.ActionListener()
{
@Override
}
});
sequenceDetails.setText(MessageManager
- .getString("label.sequence_details") + "...");
+ .getString("label.sequence_details"));
sequenceDetails.addActionListener(new java.awt.event.ActionListener()
{
@Override
}
});
sequenceSelDetails.setText(MessageManager
- .getString("label.sequence_details") + "...");
+ .getString("label.sequence_details"));
sequenceSelDetails
.addActionListener(new java.awt.event.ActionListener()
{
changeCase(e);
}
});
- pdbMenu.setText(MessageManager
- .getString("label.associate_structure_with_sequence"));
- pdbFromFile.setText(MessageManager.getString("label.from_file"));
- pdbFromFile.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent e)
- {
- pdbFromFile_actionPerformed();
- }
- });
- // RNAFold.setText("From RNA Fold with predict2D");
- // RNAFold.addActionListener(new ActionListener()
- // {
- // public void actionPerformed(ActionEvent e)
- // {
- // try {
- // RNAFold_actionPerformed();
- // } catch (Exception e1) {
- // // TODO Auto-generated catch block
- // e1.printStackTrace();
- // }
- // }
- // });
- // ContraFold.setText("From Contra Fold with predict2D");
- // ContraFold.addActionListener(new ActionListener()
- // {
- // public void actionPerformed(ActionEvent e)
- // {
- // try {
- // ContraFold_actionPerformed();
- // } catch (Exception e1) {
- // // TODO Auto-generated catch block
- // e1.printStackTrace();
- // }
- // }
- // });
- enterPDB.setText(MessageManager.getString("label.enter_pdb_id"));
- enterPDB.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent e)
- {
- enterPDB_actionPerformed();
- }
- });
- discoverPDB.setText(MessageManager.getString("label.discover_pdb_ids"));
- discoverPDB.addActionListener(new ActionListener()
- {
- @Override
- public void actionPerformed(ActionEvent e)
- {
- discoverPDB_actionPerformed();
- }
- });
outputMenu.setText(MessageManager.getString("label.out_to_textbox")
+ "...");
seqShowAnnotationsMenu.setText(MessageManager
}
});
jMenu1.setText(MessageManager.getString("label.group"));
- // structureMenu.setText(MessageManager.getString("label.structure"));
- structureMenu.setText(MessageManager.getString("label.view_structure"));
- structureMenu.addActionListener(new ActionListener()
+ pdbStructureDialog.setText(MessageManager
+ .getString("label.show_pdbstruct_dialog"));
+ pdbStructureDialog.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent actionEvent)
{
- SequenceI[] selectedSeqs = new SequenceI[]
- { sequence };
+ SequenceI[] selectedSeqs = new SequenceI[] { sequence };
if (ap.av.getSelectionGroup() != null)
{
selectedSeqs = ap.av.getSequenceSelection();
}
});
- viewStructureMenu.setText(MessageManager
- .getString("label.view_structure"));
+ rnaStructureMenu.setText(MessageManager
+ .getString("label.view_rna_structure"));
+
// colStructureMenu.setText("Colour By Structure");
editSequence.setText(MessageManager.getString("label.edit_sequence")
+ "...");
.getString("label.mark_as_representative"));
makeReferenceSeq.addActionListener(new ActionListener()
{
-
+
@Override
public void actionPerformed(ActionEvent actionEvent)
{
makeReferenceSeq_actionPerformed(actionEvent);
-
+
}
});
- hideInsertions.setText(MessageManager.getString("label.hide_insertions"));
+ hideInsertions.setText(MessageManager
+ .getString("label.hide_insertions"));
hideInsertions.addActionListener(new ActionListener()
{
groupMenu.add(sequenceSelDetails);
add(groupMenu);
add(sequenceMenu);
- add(structureMenu);
- if (sequence!=null)
+ add(rnaStructureMenu);
+ add(pdbStructureDialog);
+ if (sequence != null)
{
add(hideInsertions);
}
if (ap.getAlignment().isNucleotide())
{
// JBPNote - commented since the colourscheme isn't functional
- // colourMenu.add(RNAInteractionColour);
colourMenu.add(purinePyrimidineColour);
}
- // colourMenu.add(covariationColour);
colourMenu.add(userDefinedColour);
if (jalview.gui.UserDefinedColours.getUserColourSchemes() != null)
colourMenu.addSeparator();
colourMenu.add(abovePIDColour);
colourMenu.add(conservationMenuItem);
- // colourMenu.add(annotationMenuItem);
editMenu.add(copy);
editMenu.add(cut);
editMenu.add(editSequence);
editMenu.add(upperCase);
editMenu.add(lowerCase);
editMenu.add(toggle);
- pdbMenu.add(pdbFromFile);
// JBPNote: These shouldn't be added here - should appear in a generic
// 'apply web service to this sequence menu'
// pdbMenu.add(RNAFold);
// pdbMenu.add(ContraFold);
- pdbMenu.add(enterPDB);
- pdbMenu.add(discoverPDB);
jMenu1.add(groupName);
jMenu1.add(colourMenu);
jMenu1.add(showBoxes);
jMenu1.add(showColourText);
jMenu1.add(outline);
jMenu1.add(displayNonconserved);
- // structureMenu.add(pdbMenu);
- // structureMenu.add(viewStructureMenu);
- // structureMenu.add(colStructureMenu);
noColourmenuItem.setText(MessageManager.getString("label.none"));
noColourmenuItem.addActionListener(new java.awt.event.ActionListener()
{
* @param menuItem
* @param forSequences
*/
- protected void configureReferenceAnnotationsMenu(
- JMenuItem menuItem, List<SequenceI> forSequences)
+ protected void configureReferenceAnnotationsMenu(JMenuItem menuItem,
+ List<SequenceI> forSequences)
{
- menuItem.setText(MessageManager
- .getString("label.add_reference_annotations"));
menuItem.setEnabled(false);
- if (forSequences == null)
- {
- return;
- }
/*
* Temporary store to hold distinct calcId / type pairs for the tooltip.
* Using TreeMap means calcIds are shown in alphabetical order.
*/
Map<String, String> tipEntries = new TreeMap<String, String>();
- StringBuilder tooltip = new StringBuilder(64);
- tooltip.append(MessageManager.getString("label.add_annotations_for"));
-
- /*
- * For each sequence selected in the alignment, make a list of any
- * annotations on the underlying dataset sequence which are not already on
- * the alignment.
- *
- * Build a map of { alignmentSequence, <List of annotations to add> }
- */
- AlignmentI al = this.ap.av.getAlignment();
final Map<SequenceI, List<AlignmentAnnotation>> candidates = new LinkedHashMap<SequenceI, List<AlignmentAnnotation>>();
- for (SequenceI seq : forSequences)
- {
- SequenceI dataset = seq.getDatasetSequence();
- if (dataset == null)
- {
- continue;
- }
- AlignmentAnnotation[] datasetAnnotations = dataset.getAnnotation();
- if (datasetAnnotations == null)
- {
- continue;
- }
- final List<AlignmentAnnotation> result = new ArrayList<AlignmentAnnotation>();
- for (AlignmentAnnotation dsann : datasetAnnotations)
- {
- /*
- * Find matching annotations on the alignment.
- */
- final Iterable<AlignmentAnnotation> matchedAlignmentAnnotations = al
- .findAnnotations(seq, dsann.getCalcId(),
- dsann.label);
- if (!matchedAlignmentAnnotations.iterator().hasNext())
- {
- result.add(dsann);
- tipEntries.put(dsann.getCalcId(), dsann.label);
- }
- }
- /*
- * Save any addable annotations for this sequence
- */
- if (!result.isEmpty())
- {
- candidates.put(seq, result);
- }
- }
+ AlignmentI al = this.ap.av.getAlignment();
+ AlignmentUtils.findAddableReferenceAnnotations(forSequences,
+ tipEntries, candidates, al);
if (!candidates.isEmpty())
{
+ StringBuilder tooltip = new StringBuilder(64);
+ tooltip.append(MessageManager.getString("label.add_annotations_for"));
+
/*
* Found annotations that could be added. Enable the menu item, and
* configure its tooltip and action.
protected void addReferenceAnnotations_actionPerformed(
Map<SequenceI, List<AlignmentAnnotation>> candidates)
{
- /*
- * Add annotations at the top of the annotation, in the same order as their
- * related sequences.
- */
- for (SequenceI seq : candidates.keySet())
- {
- for (AlignmentAnnotation ann : candidates.get(seq))
- {
- AlignmentAnnotation copyAnn = new AlignmentAnnotation(ann);
- int startRes = 0;
- int endRes = ann.annotations.length;
- final SequenceGroup selectionGroup = this.ap.av.getSelectionGroup();
- if (selectionGroup != null)
- {
- startRes = selectionGroup.getStartRes();
- endRes = selectionGroup.getEndRes();
- }
- copyAnn.restrict(startRes, endRes);
-
- /*
- * Add to the sequence (sets copyAnn.datasetSequence), unless the
- * original annotation is already on the sequence.
- */
- if (!seq.hasAnnotation(ann))
- {
- seq.addAlignmentAnnotation(copyAnn);
- }
- // adjust for gaps
- copyAnn.adjustForAlignment();
- // add to the alignment and set visible
- this.ap.getAlignment().addAnnotation(copyAnn);
- copyAnn.visible = true;
- }
- }
+ final SequenceGroup selectionGroup = this.ap.av.getSelectionGroup();
+ final AlignmentI alignment = this.ap.getAlignment();
+ AlignmentUtils.addReferenceAnnotations(candidates, alignment,
+ selectionGroup);
refresh();
}
}
refresh();
}
+
protected void sequenceSelectionDetails_actionPerformed()
{
createSequenceDetailsReport(ap.av.getSequenceSelection());
protected void sequenceDetails_actionPerformed()
{
- createSequenceDetailsReport(new SequenceI[]
- { sequence });
+ createSequenceDetailsReport(new SequenceI[] { sequence });
}
public void createSequenceDetailsReport(SequenceI[] sequences)
+ MessageManager
.formatMessage(
"label.create_sequence_details_report_annotation_for",
- new String[]
- { seq.getDisplayId(true) }) + "</h2></p><p>");
+ new Object[] { seq.getDisplayId(true) })
+ + "</h2></p><p>");
new SequenceAnnotationReport(null)
.createSequenceAnnotationReport(
contents,
true,
false,
(ap.getSeqPanel().seqCanvas.fr != null) ? ap
- .getSeqPanel().seqCanvas.fr
- .getMinMax()
+ .getSeqPanel().seqCanvas.fr.getMinMax()
: null);
contents.append("</p>");
}
Desktop.addInternalFrame(cap, MessageManager.formatMessage(
"label.sequence_details_for",
- (sequences.length == 1 ? new Object[]
- { sequences[0].getDisplayId(true) } : new Object[]
- { MessageManager.getString("label.selection") })), 500, 400);
+ (sequences.length == 1 ? new Object[] { sequences[0]
+ .getDisplayId(true) } : new Object[] { MessageManager
+ .getString("label.selection") })), 500, 400);
}
int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup()
.getName());
- sg.cs.setThreshold(threshold, ap.av.getIgnoreGapsConsensus());
+ sg.cs.setThreshold(threshold, ap.av.isIgnoreGapsConsensus());
SliderPanel.showPIDSlider();
}
else
// remove PIDColouring
{
- sg.cs.setThreshold(0, ap.av.getIgnoreGapsConsensus());
+ sg.cs.setThreshold(0, ap.av.isIgnoreGapsConsensus());
}
refresh();
void hideSequences(boolean representGroup)
{
- SequenceGroup sg = ap.av.getSelectionGroup();
- if (sg == null || sg.getSize() < 1)
- {
- ap.av.hideSequence(new SequenceI[]
- { sequence });
- return;
- }
-
- ap.av.setSelectionGroup(null);
-
- if (representGroup)
- {
- ap.av.hideRepSequences(sequence, sg);
-
- return;
- }
-
- int gsize = sg.getSize();
- SequenceI[] hseqs;
-
- hseqs = new SequenceI[gsize];
-
- int index = 0;
- for (int i = 0; i < gsize; i++)
- {
- hseqs[index++] = sg.getSequenceAt(i);
- }
-
- ap.av.hideSequence(hseqs);
- // refresh(); TODO: ? needed ?
- ap.av.sendSelection();
+ ap.av.hideSequences(sequence, representGroup);
}
public void copy_actionPerformed()
if (sg != null)
{
- int[][] startEnd = ap.av.getVisibleRegionBoundaries(sg.getStartRes(),
- sg.getEndRes() + 1);
+ List<int[]> startEnd = ap.av.getVisibleRegionBoundaries(
+ sg.getStartRes(), sg.getEndRes() + 1);
String description;
int caseChange;
CutAndPasteTransfer cap = new CutAndPasteTransfer();
cap.setForInput(null);
Desktop.addInternalFrame(cap, MessageManager.formatMessage(
- "label.alignment_output_command", new String[]
- { e.getActionCommand() }), 600, 500);
+ "label.alignment_output_command",
+ new Object[] { e.getActionCommand() }), 600, 500);
String[] omitHidden = null;
// or we simply trust the user wants
// wysiwig behaviour
- cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(),
- ap.av, true));
- }
-
- public void pdbFromFile_actionPerformed()
- {
- jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(
- jalview.bin.Cache.getProperty("LAST_DIRECTORY"));
- chooser.setFileView(new jalview.io.JalviewFileView());
- chooser.setDialogTitle(MessageManager.formatMessage(
- "label.select_pdb_file_for", new String[]
- { sequence.getDisplayId(false) }));
- chooser.setToolTipText(MessageManager.formatMessage(
- "label.load_pdb_file_associate_with_sequence", new String[]
- { sequence.getDisplayId(false) }));
-
- int value = chooser.showOpenDialog(null);
-
- if (value == jalview.io.JalviewFileChooser.APPROVE_OPTION)
- {
- String choice = chooser.getSelectedFile().getPath();
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice);
- new AssociatePdbFileWithSeq().associatePdbWithSeq(choice,
- jalview.io.AppletFormatAdapter.FILE, sequence, true,
- Desktop.instance);
- }
-
- }
-
- // JBNote: commented out - these won't be instantiated here...!
- // public void RNAFold_actionPerformed() throws Exception
- // {
- // Predict2D P2D = new Predict2D();
- // P2D.getStructure2DFromRNAFold("toto");
- // }
- //
- // public void ContraFold_actionPerformed() throws Exception
- // {
- // Predict2D P2D = new Predict2D();
- // P2D.getStructure2DFromContraFold("toto");
- // }
- public void enterPDB_actionPerformed()
- {
- String id = JOptionPane.showInternalInputDialog(Desktop.desktop,
- MessageManager.getString("label.enter_pdb_id"),
- MessageManager.getString("label.enter_pdb_id"),
- JOptionPane.QUESTION_MESSAGE);
-
- if (id != null && id.length() > 0)
- {
- PDBEntry entry = new PDBEntry();
- entry.setId(id.toUpperCase());
- sequence.getDatasetSequence().addPDBId(entry);
- }
- }
-
- public void discoverPDB_actionPerformed()
- {
-
- final SequenceI[] sequences = ((ap.av.getSelectionGroup() == null) ? new SequenceI[]
- { sequence }
- : ap.av.getSequenceSelection());
- Thread discpdb = new Thread(new Runnable()
- {
- @Override
- public void run()
- {
-
- new jalview.ws.DBRefFetcher(sequences, ap.alignFrame)
- .fetchDBRefs(false);
- }
-
- });
- discpdb.start();
+ cap.setText(new FormatAdapter(ap).formatSequences(e.getActionCommand(),
+ ap, true));
}
public void sequenceFeature_actionPerformed()