X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fws%2FEnfinEnvision2OneWay.java;h=53d5b4aaec081ad411fa5e7e31f3873b92a39175;hb=a69b975b0f7ba9d1004f9c7769ba6acc4140d074;hp=890551523db11da2f3769673a4eadb1ffcef6c4e;hpb=784398bbc60a0e6ae55c6cde1b4f5b1b6f4a5592;p=jalview.git
diff --git a/src/jalview/ws/EnfinEnvision2OneWay.java b/src/jalview/ws/EnfinEnvision2OneWay.java
index 8905515..53d5b4a 100644
--- a/src/jalview/ws/EnfinEnvision2OneWay.java
+++ b/src/jalview/ws/EnfinEnvision2OneWay.java
@@ -1,5 +1,19 @@
-/**
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)
+ * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
*
+ * You should have received a copy of the GNU General Public License along with Jalview. If not, see .
*/
package jalview.ws;
@@ -11,6 +25,7 @@ import jalview.gui.AlignFrame;
import jalview.gui.Desktop;
import jalview.util.GroupUrlLink;
+import java.awt.Component;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -36,89 +51,130 @@ import org.xml.sax.helpers.DefaultHandler;
/**
* Lightweight runnable to discover dynamic 'one way' group URL services
+ *
* @author JimP
- *
+ *
*/
-public class EnfinEnvision2OneWay extends DefaultHandler implements Runnable,WSMenuEntryProviderI
+public class EnfinEnvision2OneWay extends DefaultHandler implements
+ Runnable, WSMenuEntryProviderI
{
- private static EnfinEnvision2OneWay groupURLLinksGatherer=null;
- public static EnfinEnvision2OneWay getInstance() {
- if (groupURLLinksGatherer==null) {
+ private static EnfinEnvision2OneWay groupURLLinksGatherer = null;
+
+ public static EnfinEnvision2OneWay getInstance()
+ {
+ if (groupURLLinksGatherer == null)
+ {
groupURLLinksGatherer = new EnfinEnvision2OneWay();
}
return groupURLLinksGatherer;
}
- private void waitForCompletion() {
+
+ private void waitForCompletion()
+ {
if (groupURLLinksGatherer.isRunning())
{
- // wait around and show a visual delay indicator
- Cursor oldCursor = Desktop.instance.getCursor();
- Desktop.instance.setCursor(new Cursor(Cursor.WAIT_CURSOR));
- while (groupURLLinksGatherer.isRunning())
- {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e ){};
+ // wait around and show a visual delay indicator
+ Cursor oldCursor = Desktop.instance.getCursor();
+ Desktop.instance.setCursor(new Cursor(Cursor.WAIT_CURSOR));
+ while (groupURLLinksGatherer.isRunning())
+ {
+ try
+ {
+ Thread.sleep(100);
+ } catch (InterruptedException e)
+ {
+ }
+ ;
+ }
+ Desktop.instance.setCursor(oldCursor);
}
- Desktop.instance.setCursor(oldCursor);
- }
}
- public Vector getEnvisionServiceGroupURLS() {
+
+ public Vector getEnvisionServiceGroupURLS()
+ {
waitForCompletion();
return groupURLLinks;
}
+
/**
- * indicate if
+ * indicate if
*/
- private static String BACKGROUND="BACKGROUNDPARAM";
+ private static String BACKGROUND = "BACKGROUNDPARAM";
+
/**
- * contains null strings or one of the above constants - indicate if this URL is a special case.
+ * contains null strings or one of the above constants - indicate if this URL
+ * is a special case.
*/
private Vector additionalPar = new Vector();
+
/**
* the enfin service URL
*/
- private String enfinService=null;
- private String description=null;
+ private String enfinService = null;
+
+ private String description = null;
+
private String wfname;
- /* (non-Javadoc)
- * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String,
+ * java.lang.String, java.lang.String)
*/
public void endElement(String uri, String localName, String qName)
throws SAXException
{
-
-// System.err.println("End element: : '"+uri+" "+localName+" "+qName);
- if (qName.equalsIgnoreCase("workflow") && description!=null && description.length()>0)
+
+ // System.err.println("End element: : '"+uri+" "+localName+" "+qName);
+ if (qName.equalsIgnoreCase("workflow") && description != null
+ && description.length() > 0)
{
- //groupURLLinks.addElement("UNIPROT|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewIDs$DATASETID$&input=$SEQUENCEIDS$&inputType=0|,");
- //groupURLLinks.addElement("Seqs|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,");
- System.err.println("Adding entry for "+wfname+" "+description);
- if (wfname.toLowerCase().indexOf("funcnet")==-1)
+ // groupURLLinks.addElement("UNIPROT|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewIDs$DATASETID$&input=$SEQUENCEIDS$&inputType=0|,");
+ // groupURLLinks.addElement("Seqs|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,");
+ System.err.println("Adding entry for " + wfname + " " + description);
+ if (wfname.toLowerCase().indexOf("funcnet") == -1)
{
groupURLdescr.addElement(description);
groupURLdescr.addElement(description);
- groupURLLinks.addElement(wfname+"|"+"http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow="+wfname+"&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCEIDS$&inputType=0|,"); // #"+description+"#");
- groupURLLinks.addElement(wfname+"|"+"http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow="+wfname+"&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,"); // #"+description+"#");
+ groupURLLinks
+ .addElement(wfname
+ + "|"
+ + "http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow="
+ + wfname
+ + "&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCEIDS$&inputType=0|,"); // #"+description+"#");
+ groupURLLinks
+ .addElement(wfname
+ + "|"
+ + "http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow="
+ + wfname
+ + "&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,"); // #"+description+"#");
}
}
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
*/
public void characters(char[] ch, int start, int length)
throws SAXException
{
- if (description!=null) {
- for (int i=start; iend)
+ // we skip sequences which do not have any non-gaps in the region of
+ // interest
+ if (start > end)
{
continue;
}
// just collect ids from dataset sequence
- // TODO: check if IDs collected from selecton group intersects with the current selection, too
+ // TODO: check if IDs collected from selecton group intersects with the
+ // current selection, too
SequenceI sqi = seqs[sq];
- while (sqi.getDatasetSequence()!=null) {
- sqi = sqi.getDatasetSequence(); }
+ while (sqi.getDatasetSequence() != null)
+ {
+ sqi = sqi.getDatasetSequence();
+ }
DBRefEntry[] dbr = sqi.getDBRef();
- if (dbr!=null && dbr.length>0)
+ if (dbr != null && dbr.length > 0)
{
- for (int d=0;d0)
+ if (linkMenus[m] != null
+ && linkMenus[m].getMenuComponentCount() > 0)
{
groupLinksMenu.add(linkMenus[m]);
}
}
-
+
return groupLinksMenu;
}
return null;
}
private boolean createAndAddLinks(JMenu[] linkMenus, boolean usingNames,
- GroupUrlLink urlLink, String label, String ltarget, String descr, String[] ids,
- String[] seqstr)
+ GroupUrlLink urlLink, String label, String ltarget, String descr,
+ String[] ids, String[] seqstr)
{
- Object[] urlset = urlLink.makeUrlStubs(ids,seqstr, "FromJalview"+System.currentTimeMillis(),false);
- if (urlset!=null)
+ Object[] urlset = urlLink.makeUrlStubs(ids, seqstr, "FromJalview"
+ + System.currentTimeMillis(), false);
+ if (urlset != null)
{
int type = urlLink.getGroupURLType() & 3;
- //System.out.println(urlLink.getGroupURLType() +" "+((String[])urlset[3])[0]);
+ // 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 + (((type & 1)==1) ? ("("+(usingNames ? "Names" : ltarget)+")") : ""), descr, urlLink, urlset);
+ addshowLink(linkMenus[type], label
+ + " "
+ + (usingNames ? (((type & 1) == 1) ? "(Names)" : "") : ("("
+ + ltarget + ")")), descr, urlLink, urlset);
return true;
}
return false;
}
- /// end of stuff copied from popupmenu
- public void attachWSMenuEntry(final JMenu wsmenu, final AlignFrame alignFrame)
+
+ // / end of stuff copied from popupmenu
+ public void attachWSMenuEntry(final JMenu wsmenu,
+ final AlignFrame alignFrame)
{
final JMenu enfinServiceMenu = new JMenu("Envision 2");
wsmenu.add(enfinServiceMenu);
enfinServiceMenu.setEnabled(false);
wsmenu.addMenuListener(new MenuListener()
- {
- // this listener remembers when the menu was first selected, and
- // doesn't rebuild the session list until it has been cleared and
- // reselected again.
- boolean refresh = true;
+ {
+ // this listener remembers when the menu was first selected, and
+ // doesn't rebuild the session list until it has been cleared and
+ // reselected again.
+ boolean refresh = true;
- public void menuCanceled(MenuEvent e)
- {
- refresh = true;
- }
+ public void menuCanceled(MenuEvent e)
+ {
+ refresh = true;
+ }
- public void menuDeselected(MenuEvent e)
- {
- refresh = true;
- }
+ public void menuDeselected(MenuEvent e)
+ {
+ refresh = true;
+ }
- public void menuSelected(MenuEvent e)
+ public void menuSelected(MenuEvent e)
+ {
+ if (refresh)
{
- if (refresh)
+ try
{
- try {
- buildGroupLinkMenu(enfinServiceMenu,alignFrame);
- } catch (OutOfMemoryError ex)
- {
- Cache.log.error("Out of memory when calculating the Envision2 links.",ex);
- enfinServiceMenu.setEnabled(false);
- }
- refresh = false;
+ buildGroupLinkMenu(enfinServiceMenu, alignFrame);
+ } catch (OutOfMemoryError ex)
+ {
+ Cache.log.error(
+ "Out of memory when calculating the Envision2 links.",
+ ex);
+ enfinServiceMenu.setEnabled(false);
}
+ refresh = false;
}
- });
-
-
+ }
+ });
+
}
}