JAL-2295 improved integrity of 'isFinishedInit' flag
[jalview.git] / src / jalview / gui / Desktop.java
index b1b913b..28606f1 100644 (file)
@@ -20,6 +20,9 @@
  */
 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;
 import jalview.bin.Cache;
@@ -75,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;
@@ -2271,8 +2275,34 @@ public class Desktop extends jalview.jbgui.GDesktop implements
       {
         if (Cache.getDefault("CHECKURLLINKS", true))
         {
-          // check in case URL links use old style tokens ($SEQUENCE_ID$ for
-          // sequence id _or_ accession id)
+          // check what the actual links are - if it's just the default don't
+          // bother with the warning
+          Vector<String> links = Preferences.sequenceURLLinks;
+
+          // 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())
+          {
+            String link = li.next();
+            if (link.contains(SEQUENCE_ID) && !link.equals(EMBLEBI_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));
+            }
+          }
+          if (!check)
+          {
+            return;
+          }
+
+          // 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());
@@ -2283,27 +2313,30 @@ 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");
-              }
+              // update Cache settings for "don't show this again"
+              boolean showWarningAgain = !jcb.isSelected();
+              Cache.setProperty("CHECKURLLINKS",
+                      Boolean.valueOf(showWarningAgain).toString());
             }
           });
           msgPanel.add(jcb);
 
-          JOptionPane.showMessageDialog(null, msgPanel, MessageManager
-                  .getString("label.SEQUENCE_ID_no_longer_used"),
+          JOptionPane.showMessageDialog(Desktop.desktop, msgPanel,
+                  MessageManager
+                          .getString("label.SEQUENCE_ID_no_longer_used"),
                   JOptionPane.WARNING_MESSAGE);
         }
       }