import jalview.datamodel.SequenceI;
import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
+import jalview.gui.JvSwingUtils;
import jalview.util.GroupUrlLink;
import java.awt.Component;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Hashtable;
+import java.util.Map;
import java.util.Vector;
import javax.swing.JMenu;
* Object array returned from the makeUrlStubs function.
*/
private void addshowLink(JMenu linkMenu, String label, String descr,
- final GroupUrlLink urlgenerator, final Object[] urlstub)
+ String dbname, final GroupUrlLink urlgenerator, final Object[] urlstub)
{
Component[] jmi = linkMenu.getMenuComponents();
for (int i = 0; i < jmi.length; i++)
return;
}
}
+ boolean seqsorids = (urlgenerator.getGroupURLType() & urlgenerator.SEQUENCEIDS) == 0;
+ int i = urlgenerator.getNumberInvolved(urlstub);
JMenuItem item = new JMenuItem(label);
- item.setToolTipText("Submit ("
- + urlgenerator.getNumberInvolved(urlstub)
- + " seqs) to workflow: " + descr);
+ //
+ if (dbname==null || dbname.trim().length()==0)
+ {
+ dbname = "";
+ }
+ item.setToolTipText("<html>"
+ + JvSwingUtils.wrapTooltip("Submit " + i + " " +
+ dbname +" "
+ + (seqsorids ? "sequence" : "sequence id") + (i > 1 ? "s" : "")
+
+ + " to<br/>" + descr) + "</html>");
item.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
// sequence only URLs
// ID/regex match URLs
JMenu 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.
String[][] idandseqs = GroupUrlLink.formStrings(seqs);
Hashtable commonDbrefs = new Hashtable();
for (int sq = 0; sq < seqs.length; sq++)
}
}
// now create group links for all distinct ID/sequence sets.
- boolean addMenu = false; // indicates if there are any group links to give
- // to user
+ Hashtable<String, JMenu[]> gurlMenus = new Hashtable<String, JMenu[]>();
for (int i = 0; i < groupURLLinks.size(); i++)
{
String link = groupURLLinks.elementAt(i).toString();
String descr = groupURLdescr.elementAt(i).toString();
+
// boolean specialCase =
// additionalPar.elementAt(i).toString().equals(BACKGROUND);
GroupUrlLink urlLink = null;
continue;
}
final String label = urlLink.getLabel();
+ // create/recover the sub menus that might be populated for this link.
+ JMenu[] wflinkMenus = gurlMenus.get(label);
+ if (wflinkMenus == null)
+ {
+ // three types of url that might be
+ // created.
+ wflinkMenus = new JMenu[]
+ { null, new JMenu("IDS"), new JMenu("Sequences"),
+ new JMenu("IDS and Sequences") };
+ gurlMenus.put(label, wflinkMenus);
+ }
+
boolean usingNames = false;
// Now see which parts of the group apply for this URL
String ltarget;
seqstr[idcount++] = idandseqs[1][sq];
}
}
- addMenu = addMenu
- | createAndAddLinks(linkMenus, false, urlLink, label,
- ltarget, descr, ids, seqstr);
+ createAndAddLinks(wflinkMenus, false, urlLink, ltarget, null,
+ descr, ids, seqstr);
}
}
// also do names only.
seqstr = idandseqs[1];
ids = idandseqs[0];
- addMenu = addMenu
- | createAndAddLinks(linkMenus, true, urlLink, label, "Names",
- descr, ids, seqstr);
+ createAndAddLinks(wflinkMenus, true, urlLink, "Any", null, descr,
+ ids, seqstr);
}
- if (addMenu)
+ boolean anyadded = false; // indicates if there are any group links to give
+ // to user
+ for (Map.Entry<String, JMenu[]> menues : gurlMenus.entrySet())
{
- groupLinksMenu = new JMenu("Group Links");
- for (int m = 0; m < linkMenus.length; m++)
+ JMenu grouplinkset = new JMenu(menues.getKey());
+ JMenu[] wflinkMenus = menues.getValue();
+ for (int m = 0; m < wflinkMenus.length; m++)
{
- if (linkMenus[m] != null
- && linkMenus[m].getMenuComponentCount() > 0)
+ if (wflinkMenus[m] != null
+ && wflinkMenus[m].getMenuComponentCount() > 0)
{
- groupLinksMenu.add(linkMenus[m]);
+ anyadded = true;
+ grouplinkset.add(wflinkMenus[m]);
}
}
-
+ groupLinksMenu.add(grouplinkset);
+ }
+ if (anyadded)
+ {
return groupLinksMenu;
}
return null;
// +" "+((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
- + " "
- + (usingNames ? (((type & 1) == 1) ? "(Names)" : "") : ("("
- + ltarget + ")")), descr, urlLink, urlset);
+ addshowLink(
+ linkMenus[type],
+ label
+ + " "
+ + (ltarget == null ? (((type & 1) == 1 ? "ID"
+ : "Sequence") + (urlLink
+ .getNumberInvolved(urlset) > 1 ? "s" : ""))
+ : (usingNames ? (((type & 1) == 1) ? "(Names)"
+ : "")
+ : ("(" + ltarget + ")"))), descr,
+ usingNames ? null : label, urlLink, urlset);
return true;
}
return false;