import jalview.schemes.TurnColourScheme;
import jalview.schemes.UserColourScheme;
import jalview.schemes.ZappoColourScheme;
+import jalview.ws.WSMenuEntryProviderI;
import jalview.ws.jws1.Discoverer;
import jalview.ws.jws2.Jws2Discoverer;
// object broker mechanism.
final Vector wsmenu = new Vector();
final IProgressIndicator af = me;
+ final JMenu msawsmenu = new JMenu("Alignment");
+ final JMenu secstrmenu = new JMenu(
+ "Secondary Structure Prediction");
+ final JMenu seqsrchmenu = new JMenu(
+ "Sequence Database Search");
+ final JMenu analymenu = new JMenu(
+ "Analysis");
+
if (Cache.getDefault("SHOW_JWS1_SERVICES", true)
&& Discoverer.services != null
&& (Discoverer.services.size() > 0))
if (msaws != null)
{
// Add any Multiple Sequence Alignment Services
- final JMenu msawsmenu = new JMenu("Alignment");
for (int i = 0, j = msaws.size(); i < j; i++)
{
final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) msaws
impl.attachWSMenuEntry(msawsmenu, me);
}
- wsmenu.add(msawsmenu);
}
if (secstrpr != null)
{
// Add any secondary structure prediction services
- final JMenu secstrmenu = new JMenu(
- "Secondary Structure Prediction");
for (int i = 0, j = secstrpr.size(); i < j; i++)
{
final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) secstrpr
.getServiceClient(sh);
impl.attachWSMenuEntry(secstrmenu, me);
}
- wsmenu.add(secstrmenu);
}
if (seqsrch != null)
{
// Add any sequence search services
- final JMenu seqsrchmenu = new JMenu(
- "Sequence Database Search");
for (int i = 0, j = seqsrch.size(); i < j; i++)
{
final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) seqsrch
.getServiceClient(sh);
impl.attachWSMenuEntry(seqsrchmenu, me);
}
- wsmenu.add(seqsrchmenu);
}
}
{
if (jws2servs.hasServices())
{
- JMenu jws2men = new JMenu("Jaba Web Services");
- jws2servs.attachWSMenuEntry(jws2men, me);
- for (int i = 0, iSize = jws2men.getMenuComponentCount(); i < iSize; i++)
- {
- wsmenu.add(jws2men.getMenuComponent(i));
- }
+ jws2servs.attachWSMenuEntry(msawsmenu, me);
}
}
}
+ // Add all submenus in the order they should appear on the web services menu
+ wsmenu.add(msawsmenu);
+ wsmenu.add(secstrmenu);
+ wsmenu.add(analymenu);
+ // No search services yet
+ // wsmenu.add(seqsrchmenu);
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
{
try
{
-
- resetWebServiceMenu();
- // finally, add the whole shebang onto the webservices menu
+ webService.removeAll();
+ // first, add discovered services onto the webservices menu
if (wsmenu.size() > 0)
{
for (int i = 0, j = wsmenu.size(); i < j; i++)
}
else
{
- me.webService.add(me.webServiceNoServices);
+ webService.add(me.webServiceNoServices);
}
+ build_urlServiceMenu(me.webService);
+ build_fetchdbmenu(webService);
} catch (Exception e)
{
}
}
- /**
- * empty the web service menu and add any ad-hoc functions not dynamically
- * discovered.
- *
- */
- private void resetWebServiceMenu()
- {
- webService.removeAll();
- build_fetchdbmenu(webService);
- build_urlServiceMenu(webService);
- }
/**
* construct any groupURL type service menu entries.
*/
private void build_urlServiceMenu(JMenu webService)
{
- if (Cache.getDefault("SHOW_ENFIN_SERVICES", true))
- {
- jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry(
- webService, this);
- }
// TODO: remove this code when 2.7 is released
// DEBUG - alignmentView
/*
// TODO: refactor to RestClient discoverer and merge menu entries for
// rest-style services with other types of analysis/calculation service
// SHmmr test client - still being implemented.
- jalview.ws.rest.RestClient.makeShmmrRestClient().attachWSMenuEntry(
- webService, this);
// DEBUG - alignmentView
+
+ for (jalview.ws.rest.RestClient client: jalview.ws.rest.RestClient.getRestClients()) {
+ client.attachWSMenuEntry(JvSwingUtils.findOrCreateMenu(webService, client.getAction()), this);
+ }
+
+ if (Cache.getDefault("SHOW_ENFIN_SERVICES", true))
+ {
+ jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry(
+ webService, this);
+ }
}
/*
if (pdbfn.length() > 0)
{
// attempt to find a match in the alignment
- SequenceI mtch = idm.findIdMatch(pdbfn);
+ SequenceI[] mtch = idm.findAllIdMatches(pdbfn);
int l = 0, c = pdbfn.indexOf(".");
while (mtch == null && c != -1)
{
- while ((c = pdbfn.indexOf(".", l)) > l)
+ do
{
l = c;
- }
+ } while ((c = pdbfn.indexOf(".", l)) > l);
if (l > -1)
{
pdbfn = pdbfn.substring(0, l);
}
- mtch = idm.findIdMatch(pdbfn);
+ mtch = idm.findAllIdMatches(pdbfn);
}
if (mtch != null)
{
// try and associate
// TODO: may want to set a standard ID naming formalism for
// associating PDB files which have no IDs.
+ for (SequenceI toassoc: (SequenceI[])fm[2]) {
PDBEntry pe = new AssociatePdbFileWithSeq()
.associatePdbWithSeq((String) fm[0], (String) fm[1],
- (SequenceI) fm[2], false);
+ toassoc, false);
if (pe != null)
{
System.err
.println("Associated file : " + ((String) fm[0])
+ " with "
- + ((SequenceI) fm[2]).getDisplayId(true));
+ + toassoc.getDisplayId(true));
assocfiles++;
}
+ }
alignPanel.paintAlignment(true);
}
}