X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fgui%2FIdPanel.java;h=4741974d1ebf2a626c9b16daa55c7f61dc041f06;hb=60f2d6c034560415fd0139c8bc7df0c19cae1186;hp=d4e7c773c9f5d77522953322632deb2c8dfcb7e9;hpb=8dd1cd955b1c6f1a89afc2068ab1cdfca3824934;p=jalview.git diff --git a/src/jalview/gui/IdPanel.java b/src/jalview/gui/IdPanel.java index d4e7c77..4741974 100755 --- a/src/jalview/gui/IdPanel.java +++ b/src/jalview/gui/IdPanel.java @@ -23,6 +23,7 @@ import java.awt.event.*; import javax.swing.*; import jalview.datamodel.*; +import jalview.util.UrlLink; /** * DOCUMENT ME! @@ -184,21 +185,42 @@ public class IdPanel } int seq = alignPanel.seqPanel.findSeq(e); - - //DEFAULT LINK IS FIRST IN THE LINK LIST - + String url = null; + int i = 0; String id = av.getAlignment().getSequenceAt(seq).getName(); - if (id.indexOf("|") > -1) + while (url == null && i < links.size()) { - id = id.substring(id.lastIndexOf("|") + 1); - } - - String url = links.elementAt(0).toString(); - url = url.substring(url.indexOf("|") + 1); - - int index = url.indexOf("$SEQUENCE_ID$"); - url = url.substring(0, index) + id + url.substring(index + 13); + // DEFAULT LINK IS FIRST IN THE LINK LIST + // BUT IF ITS A REGEX AND DOES NOT MATCH THE NEXT ONE WILL BE TRIED + url = links.elementAt(i++).toString(); + jalview.util.UrlLink urlLink = null; + try + { + urlLink = new UrlLink(url); + } catch (Exception foo) + { + jalview.bin.Cache.log.error("Exception for URLLink '" + url + "'", + foo); + url = null; + continue; + } + ; + if (!urlLink.isValid()) + { + jalview.bin.Cache.log.error(urlLink.getInvalidMessage()); + url = null; + continue; + } + String urls[] = urlLink.makeUrls(id, true); + if (urls == null || urls[0]==null || urls[0].length()<4) + { + url = null; + continue; + } + // just take first URL made from regex + url = urls[1]; + } try { jalview.util.BrowserLauncher.openURL(url); @@ -213,6 +235,7 @@ public class IdPanel JOptionPane.WARNING_MESSAGE); ex.printStackTrace(); } + } /**