+ // add any groupURLs to the groupURL submenu and make it visible
+ if (groupLinks != null && groupLinks.size() > 0)
+ {
+ buildGroupURLMenu(sg, groupLinks);
+ }
+ // Add a 'show all structures' for the current selection
+ Hashtable<String, PDBEntry> pdbe = new Hashtable<String, PDBEntry>(), reppdb = new Hashtable<String, PDBEntry>();
+ SequenceI sqass = null;
+ for (SequenceI sq : ap.av.getSequenceSelection())
+ {
+ Vector<PDBEntry> pes = (Vector<PDBEntry>) sq.getDatasetSequence()
+ .getPDBId();
+ if (pes != null && pes.size()>0)
+ {
+ reppdb.put(pes.get(0).getId(), pes.get(0));
+ for (PDBEntry pe : pes)
+ {
+ pdbe.put(pe.getId(), pe);
+ if (sqass == null)
+ {
+ sqass = sq;
+ }
+ }
+ }
+ }
+ if (pdbe.size() > 0)
+ {
+ final PDBEntry[] pe = pdbe.values().toArray(
+ 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));
+ }
+ });
+ }
+ }