X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPopupMenu.java;h=341aac2ab0f7490953a68853ced694b4c58eb20a;hb=a928b501e71cef2627004a73e2d5c460b44b2d7b;hp=1b0391d60f49a749cae9f20245227d6337a1b042;hpb=1a506ea005a3c4aba6108199ee6d2122e7528ea9;p=jalview.git diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index 1b0391d..341aac2 100755 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -30,6 +30,7 @@ import jalview.commands.*; import jalview.datamodel.*; import jalview.io.*; import jalview.schemes.*; +import jalview.util.GroupUrlLink; import jalview.util.UrlLink; /** @@ -133,6 +134,8 @@ public class PopupMenu extends JPopupMenu // JMenuItem annotationMenuItem = new JMenuItem(); + JMenu groupLinksMenu; + /** * Creates a new PopupMenu object. * @@ -141,7 +144,18 @@ public class PopupMenu extends JPopupMenu * @param seq * DOCUMENT ME! */ - public PopupMenu(final AlignmentPanel ap, Sequence seq, Vector links) + public PopupMenu(final AlignmentPanel ap, Sequence seq, Vector links) + { + this(ap, seq, links, null); + } + /** + * + * @param ap + * @param seq + * @param links + * @param groupLinks + */ + public PopupMenu(final AlignmentPanel ap, Sequence seq, Vector links, Vector groupLinks) { // ///////////////////////////////////////////////////////// // If this is activated from the sequence panel, the user may want to @@ -384,6 +398,10 @@ public class PopupMenu extends JPopupMenu showText.setSelected(sg.getDisplayText()); showColourText.setSelected(sg.getColourText()); showBoxes.setSelected(sg.getDisplayBoxes()); + // add any groupURLs to the groupURL submenu and make it visible + if (groupLinks!=null && groupLinks.size()>0) { + buildGroupURLMenu(sg, groupLinks); + } } else { @@ -404,6 +422,7 @@ public class PopupMenu extends JPopupMenu if (links != null && links.size() > 0) { + JMenu linkMenu = new JMenu("Link"); Vector linkset = new Vector(); for (int i = 0; i < links.size(); i++) @@ -521,6 +540,123 @@ public class PopupMenu extends JPopupMenu } } } + + private void buildGroupURLMenu(SequenceGroup sg, Vector groupLinks) + { + + // TODO: usability: thread off the generation of group url content so root menu appears asap + // sequence only URLs + // ID/regex match URLs + groupLinksMenu = new JMenu("Group Link"); + JMenu[] linkMenus = new JMenu[] { null, new JMenu("IDS"), new JMenu("Sequences"), new JMenu("IDS and Sequences")}; // three types of url that might be created. + SequenceI[] seqs = ap.av.getSelectionAsNewSequence(); + String[][] idandseqs = GroupUrlLink.formStrings(seqs); + Hashtable commonDbrefs = new Hashtable(); + for (int sq = 0; sq0) + { + for (int d=0;d0) + { + groupLinksMenu.add(linkMenus[m]); + } + } + + groupMenu.add(groupLinksMenu); + } + } /** * add a show URL menu item to the given linkMenu @@ -553,7 +689,37 @@ public class PopupMenu extends JPopupMenu linkMenu.add(item); } + /** + * add a late bound groupURL item to the given linkMenu + * + * @param linkMenu + * @param label - + * menu label string + * @param urlgenerator GroupURLLink used to generate URL + * @param urlstub Object array returned from the makeUrlStubs function. + */ + private void addshowLink(JMenu linkMenu, String label, final GroupUrlLink urlgenerator, final Object[] urlstub) + { + JMenuItem item = new JMenuItem(label); + item.setToolTipText("open URL ("+urlgenerator.getUrl_prefix()+"..) ("+urlgenerator.getNumberInvolved(urlstub)+" seqs)"); // TODO: put in info about what is being sent. + item.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(ActionEvent e) + { + new Thread(new Runnable() + { + + public void run() + { + showLink(urlgenerator.constructFrom(urlstub)); + } + + }).start(); + } + }); + linkMenu.add(item); + } /** * DOCUMENT ME! * @@ -1241,12 +1407,13 @@ public class PopupMenu extends JPopupMenu sg.setName(dialog.getName()); sg.setDescription(dialog.getDescription()); + refresh(); } /** - * DOCUMENT ME! + * Get selection group - adding it to the alignment if necessary. * - * @return DOCUMENT ME! + * @return sequence group to operate on */ SequenceGroup getGroup() { @@ -1417,6 +1584,7 @@ public class PopupMenu extends JPopupMenu } ap.av.hideSequence(hseqs); + // refresh(); TODO: ? needed ? ap.av.sendSelection(); }