JAL-2316 Refactoring of functionality to provide urls to gui
[jalview.git] / src / jalview / gui / Desktop.java
index 4d10cc8..63f797d 100644 (file)
@@ -20,7 +20,7 @@
  */
 package jalview.gui;
 
-import static jalview.util.UrlConstants.EMBLEBI_STRING;
+import static jalview.util.UrlConstants.SEQUENCE_ID;
 
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
@@ -37,6 +37,7 @@ import jalview.structure.StructureSelectionManager;
 import jalview.util.ImageMaker;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
+import jalview.util.UrlProviderI;
 import jalview.viewmodel.AlignmentViewport;
 import jalview.ws.params.ParamManager;
 
@@ -77,6 +78,7 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.Hashtable;
 import java.util.List;
+import java.util.ListIterator;
 import java.util.StringTokenizer;
 import java.util.Vector;
 import java.util.concurrent.ExecutorService;
@@ -2275,21 +2277,34 @@ public class Desktop extends jalview.jbgui.GDesktop implements
         {
           // check what the actual links are - if it's just the default don't
           // bother with the warning
-          Vector<String> links = Preferences.sequenceURLLinks;
-          if (links == null || links.size() < 1)
+          Vector<String> links = Preferences.sequenceUrlLinks
+                  .getLinksForDisplay();
+
+          // only need to check links if there is one with a
+          // SEQUENCE_ID which is not the default EMBL_EBI link
+          ListIterator<String> li = links.listIterator();
+          boolean check = false;
+          List<JLabel> urls = new ArrayList<JLabel>();
+          while (li.hasNext())
           {
-            // there are no links
-            return;
+            String link = li.next();
+            if (link.contains(SEQUENCE_ID)
+                    && !link.equals(UrlProviderI.DEFAULT_STRING))
+            {
+              check = true;
+              int barPos = link.indexOf("|");
+              String urlMsg = barPos == -1 ? link : link.substring(0,
+                      barPos) + ": " + link.substring(barPos + 1);
+              urls.add(new JLabel(urlMsg));
+            }
           }
-          else if ((links.size() == 1)
-                  && links.get(0).equals(EMBLEBI_STRING))
+          if (!check)
           {
-            // the only link is the default EMBL-EBI link
             return;
           }
 
-          // check in case URL links use old style tokens ($SEQUENCE_ID$ for
-          // sequence id _or_ accession id)
+          // ask user to check in case URL links use old style tokens
+          // ($SEQUENCE_ID$ for sequence id _or_ accession id)
           JPanel msgPanel = new JPanel();
           msgPanel.setLayout(new BoxLayout(msgPanel, BoxLayout.PAGE_AXIS));
           msgPanel.add(Box.createVerticalGlue());
@@ -2300,25 +2315,23 @@ public class Desktop extends jalview.jbgui.GDesktop implements
                   MessageManager
                           .getString("label.SEQUENCE_ID_for_DB_ACCESSION2"));
           msgPanel.add(msg);
+          for (JLabel url : urls)
+          {
+            msgPanel.add(url);
+          }
           msgPanel.add(msg2);
 
           final JCheckBox jcb = new JCheckBox(
                   MessageManager.getString("label.do_not_display_again"));
           jcb.addActionListener(new ActionListener()
           {
-
             @Override
             public void actionPerformed(ActionEvent e)
             {
-              // update Cache settings if checkbox is selected
-              if (jcb.isSelected())
-              {
-                Cache.setProperty("CHECKURLLINKS", "false");
-              }
-              else
-              {
-                Cache.setProperty("CHECKURLLINKS", "true");
-              }
+              // update Cache settings for "don't show this again"
+              boolean showWarningAgain = !jcb.isSelected();
+              Cache.setProperty("CHECKURLLINKS",
+                      Boolean.valueOf(showWarningAgain).toString());
             }
           });
           msgPanel.add(jcb);
@@ -2327,7 +2340,6 @@ public class Desktop extends jalview.jbgui.GDesktop implements
                   MessageManager
                           .getString("label.SEQUENCE_ID_no_longer_used"),
                   JOptionPane.WARNING_MESSAGE);
-
         }
       }
     });