X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2FEnfinEnvision2OneWay.java;h=f40831ca2041c7ac2f9ac8f33916fc8365b05a04;hb=153dd62dc91da13ae732600e6ea55ddbe15eab39;hp=ae2792c3580b48a4168a1b1b76fe5ce5622b803f;hpb=a124e525dece0edc422cd2f8888d03ea14f65f15;p=jalview.git diff --git a/src/jalview/ws/EnfinEnvision2OneWay.java b/src/jalview/ws/EnfinEnvision2OneWay.java index ae2792c..f40831c 100644 --- a/src/jalview/ws/EnfinEnvision2OneWay.java +++ b/src/jalview/ws/EnfinEnvision2OneWay.java @@ -1,5 +1,5 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5) + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle * * This file is part of Jalview. @@ -25,6 +25,7 @@ import jalview.gui.AlignFrame; import jalview.gui.Desktop; import jalview.gui.JvSwingUtils; import jalview.util.GroupUrlLink; +import jalview.util.GroupUrlLink.UrlStringTooLongException; import java.awt.Component; import java.awt.Cursor; @@ -318,7 +319,12 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements public void run() { - showLink(urlgenerator.constructFrom(urlstub)); + try { + showLink(urlgenerator.constructFrom(urlstub)); + } catch (UrlStringTooLongException ex) + { + Cache.log.warn("Not showing link: URL is too long!", ex); + } } }).start(); @@ -360,6 +366,10 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements private void buildGroupLinkMenu(JMenu enfinServiceMenu, AlignFrame alignFrame) { + if (running || !started) + { + return; + } SequenceI[] seqs = alignFrame.getViewport().getSelectionAsNewSequence(); SequenceGroup sg = alignFrame.getViewport().getSelectionGroup(); if (sg == null) @@ -394,7 +404,8 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements */ private JMenu buildGroupURLMenu(SequenceI[] seqs, SequenceGroup sg) { - + if (groupURLdescr==null || groupURLLinks==null) + return null; // TODO: usability: thread off the generation of group url content so root // menu appears asap // sequence only URLs @@ -462,10 +473,14 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements } // now create group links for all distinct ID/sequence sets. Hashtable gurlMenus = new Hashtable(); + /** + * last number of sequences where URL generation failed + */ + int[] nsqtype = new int[] { 0,0,0,0,0,0,0,0,0,0}; for (int i = 0; i < groupURLLinks.size(); i++) { - String link = groupURLLinks.elementAt(i).toString(); - String descr = groupURLdescr.elementAt(i).toString(); + String link = (String) groupURLLinks.elementAt(i); + String descr = (String) groupURLdescr.elementAt(i); // boolean specialCase = // additionalPar.elementAt(i).toString().equals(BACKGROUND); @@ -512,6 +527,10 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements String[] allids = ((String[]) idset[1]); seqstr = new String[numinput]; ids = new String[numinput]; + if (nsqtype[urlLink.getGroupURLType()]>0 && numinput>=nsqtype[urlLink.getGroupURLType()]) + { + continue; + } for (int sq = 0, idcount = 0; sq < seqs.length; sq++) { if (allids[sq] != null) @@ -520,15 +539,28 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements seqstr[idcount++] = idandseqs[1][sq]; } } - createAndAddLinks(wflinkMenus, false, urlLink, ltarget, null, + try {createAndAddLinks(wflinkMenus, false, urlLink, ltarget, null, descr, ids, seqstr); + } catch (UrlStringTooLongException ex) + { + nsqtype[urlLink.getGroupURLType()] = numinput; + } } } // also do names only. seqstr = idandseqs[1]; ids = idandseqs[0]; - createAndAddLinks(wflinkMenus, true, urlLink, "Any", null, descr, + if (nsqtype[urlLink.getGroupURLType()]>0 && idandseqs[0].length>=nsqtype[urlLink.getGroupURLType()]) + { + continue; + } + + try {createAndAddLinks(wflinkMenus, true, urlLink, "Any", null, descr, ids, seqstr); + }catch (UrlStringTooLongException ex) + { + nsqtype[urlLink.getGroupURLType()] = idandseqs[0].length; + } } boolean anyadded = false; // indicates if there are any group links to give // to user @@ -556,10 +588,11 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements private boolean createAndAddLinks(JMenu[] linkMenus, boolean usingNames, GroupUrlLink urlLink, String label, String ltarget, String descr, - String[] ids, String[] seqstr) + String[] ids, String[] seqstr) throws UrlStringTooLongException { - Object[] urlset = urlLink.makeUrlStubs(ids, seqstr, "FromJalview" + Object[] urlset= urlLink.makeUrlStubs(ids, seqstr, "FromJalview" + System.currentTimeMillis(), false); + if (urlset != null) { int type = urlLink.getGroupURLType() & 3; @@ -582,7 +615,6 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements } return false; } - // / end of stuff copied from popupmenu public void attachWSMenuEntry(final JMenu wsmenu, final AlignFrame alignFrame) @@ -609,8 +641,10 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements public void menuSelected(MenuEvent e) { - if (refresh) + if (refresh && !isRunning()) { + new Thread(new Runnable() { + public void run() { try { buildGroupLinkMenu(enfinServiceMenu, alignFrame); @@ -621,6 +655,7 @@ public class EnfinEnvision2OneWay extends DefaultHandler implements ex); enfinServiceMenu.setEnabled(false); } + }}).start(); refresh = false; } }