patch to fix occasional arrayoutofbounds exception when working with hidden columns...
[jalview.git] / src / jalview / appletgui / APopupMenu.java
index 1fa9f7c..2bacd70 100755 (executable)
@@ -79,6 +79,8 @@ public class APopupMenu extends java.awt.PopupMenu implements
 
   CheckboxMenuItem showColourText = new CheckboxMenuItem();
 
+  CheckboxMenuItem displayNonconserved = new CheckboxMenuItem();
+
   Menu editMenu = new Menu("Edit");
 
   MenuItem copy = new MenuItem("Copy (Jalview Only)");
@@ -150,6 +152,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
       showText.setState(sg.getDisplayText());
       showColourText.setState(sg.getColourText());
       showBoxes.setState(sg.getDisplayBoxes());
+      displayNonconserved.setState(sg.getShowunconserved());
       if (!ap.av.alignment.getGroups().contains(sg))
       {
         groupMenu.remove(unGroupMenuItem);
@@ -227,21 +230,19 @@ public class APopupMenu extends java.awt.PopupMenu implements
             }
             // addshowLink(linkMenu, target, url_pref + id + url_suff);
           }
-          // TODO: introduce applet parameter option to dis/en/able URl generation from description
-          // hard-disable the construction of URLs from regexes that match the description
-//          if (descr != null)
-//          {
-//            // create link for this URL from description where regex matches
-//            String[] urls = urlLink.makeUrls(descr, false);
-//            if (urls != null)
-//            {
-//              for (int u = 0; u < urls.length; u += 2)
-//              {
-//                addshowLink(linkMenu, label, urls[u + 1]);
-//              }
-//            }
-//            // addshowLink(linkMenu, target, url_pref + id + url_suff);
-//          }
+          // Now construct URLs from description but only try to do it for regex URL links
+          if (descr != null && urlLink.getRegexReplace()!=null)
+          {
+            // create link for this URL from description only if regex matches
+            String[] urls = urlLink.makeUrls(descr, true);
+            if (urls != null)
+            {
+              for (int u = 0; u < urls.length; u += 2)
+              {
+                addshowLink(linkMenu, label, urls[u + 1]);
+              }
+            }
+          }
         }
         else
         {
@@ -354,6 +355,10 @@ public class APopupMenu extends java.awt.PopupMenu implements
     {
       showBoxes_itemStateChanged();
     }
+    else if (evt.getSource() == displayNonconserved)
+    {
+      this.showNonconserved_itemStateChanged();
+    }
   }
 
   public void actionPerformed(ActionEvent evt)
@@ -679,7 +684,9 @@ public class APopupMenu extends java.awt.PopupMenu implements
     showBoxes.setState(true);
     showBoxes.addItemListener(this);
     sequenceName.addActionListener(this);
-
+    displayNonconserved.setLabel("Show Nonconserved");
+    displayNonconserved.setState(false);
+    displayNonconserved.addItemListener(this);
     showText.setLabel("Text");
     showText.addItemListener(this);
     showColourText.setLabel("Colour Text");
@@ -768,6 +775,7 @@ public class APopupMenu extends java.awt.PopupMenu implements
     menu1.add(showBoxes);
     menu1.add(showText);
     menu1.add(showColourText);
+    menu1.add(displayNonconserved);
     toggleCase.addActionListener(this);
     pdb.addActionListener(this);
     hideSeqs.addActionListener(this);
@@ -968,6 +976,12 @@ public class APopupMenu extends java.awt.PopupMenu implements
     refresh();
   }
 
+  public void showNonconserved_itemStateChanged()
+  {
+    getGroup().setShowunconserved(this.displayNonconserved.getState());
+    refresh();
+  }
+
   public void showBoxes_itemStateChanged()
   {
     getGroup().setDisplayBoxes(showBoxes.getState());