Merge branch 'develop' into features/JAL-2360colourSchemeApplicability
[jalview.git] / src / jalview / gui / PopupMenu.java
index ac2fbc2..310266e 100644 (file)
@@ -87,8 +87,12 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
 
   protected JCheckBoxMenuItem abovePIDColour = new JCheckBoxMenuItem();
 
+  protected JMenuItem modifyPID = new JMenuItem();
+
   protected JCheckBoxMenuItem conservationMenuItem = new JCheckBoxMenuItem();
 
+  protected JMenuItem modifyConservation = new JMenuItem();
+
   AlignmentPanel ap;
 
   JMenu sequenceMenu = new JMenu();
@@ -434,6 +438,8 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
           abovePIDColour.setSelected(true);
         }
       }
+      modifyConservation.setEnabled(conservationMenuItem.isSelected());
+      modifyPID.setEnabled(abovePIDColour.isSelected());
       displayNonconserved.setSelected(sg.getShowNonconserved());
       showText.setSelected(sg.getDisplayText());
       showColourText.setSelected(sg.getColourText());
@@ -557,8 +563,6 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
 
   }
 
-
-
   /**
    * Add annotation types to 'Show annotations' and/or 'Hide annotations' menus.
    * "All" is added first, followed by a separator. Then add any annotation
@@ -982,6 +986,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
         sequenceSelectionDetails_actionPerformed();
       }
     });
+
     unGroupMenuItem
             .setText(MessageManager.getString("action.remove_group"));
     unGroupMenuItem.addActionListener(new ActionListener()
@@ -1231,7 +1236,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
     jMenu1.add(outline);
     jMenu1.add(displayNonconserved);
   }
-
+  
   /**
    * Constructs the entries for the colour menu
    */
@@ -1247,6 +1252,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
         textColour_actionPerformed();
       }
     });
+
     abovePIDColour.setText(MessageManager
             .getString("label.above_identity_threshold"));
     abovePIDColour.addActionListener(new ActionListener()
@@ -1258,6 +1264,17 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
       }
     });
 
+    modifyPID.setText(MessageManager
+            .getString("label.modify_identity_threshold"));
+    modifyPID.addActionListener(new ActionListener()
+    {
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        modifyPID_actionPerformed();
+      }
+    });
+
     conservationMenuItem.setText(MessageManager
             .getString("action.by_conservation"));
     conservationMenuItem.addActionListener(new ActionListener()
@@ -1268,6 +1285,17 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
         conservationMenuItem_actionPerformed();
       }
     });
+
+    modifyConservation.setText(MessageManager
+            .getString("label.modify_conservation_threshold"));
+    modifyConservation.addActionListener(new ActionListener()
+    {
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        modifyConservation_actionPerformed();
+      }
+    });
   }
 
   /**
@@ -1292,7 +1320,33 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
 
     colourMenu.addSeparator();
     colourMenu.add(conservationMenuItem);
+    colourMenu.add(modifyConservation);
     colourMenu.add(abovePIDColour);
+    colourMenu.add(modifyPID);
+  }
+
+  protected void modifyConservation_actionPerformed()
+  {
+    SequenceGroup sg = getGroup();
+    if (sg.cs != null)
+    {
+      SliderPanel.setConservationSlider(ap, sg.cs, sg.getName());
+      SliderPanel.showConservationSlider();
+    }
+  }
+
+  protected void modifyPID_actionPerformed()
+  {
+    SequenceGroup sg = getGroup();
+    if (sg.cs != null)
+    {
+      // int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup()
+      // .getName());
+      // sg.cs.setThreshold(threshold, ap.av.isIgnoreGapsConsensus());
+      SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup()
+              .getName());
+      SliderPanel.showPIDSlider();
+    }
   }
 
   /**
@@ -1484,7 +1538,8 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
       return;
     }
 
-    if (abovePIDColour.isSelected())
+    boolean selected = abovePIDColour.isSelected();
+    if (selected)
     {
       sg.cs.setConsensus(AAFrequency.calculate(
               sg.getSequences(ap.av.getHiddenRepSequences()),
@@ -1501,7 +1556,9 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
     // remove PIDColouring
     {
       sg.cs.setThreshold(0, ap.av.isIgnoreGapsConsensus());
+      SliderPanel.hidePIDSlider();
     }
+    modifyPID.setEnabled(selected);
 
     refresh();
   }
@@ -1532,7 +1589,8 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
       return;
     }
 
-    if (conservationMenuItem.isSelected())
+    boolean selected = conservationMenuItem.isSelected();
+    if (selected)
     {
       // JBPNote: Conservation name shouldn't be i18n translated
       Conservation c = new Conservation("Group", sg.getSequences(ap.av
@@ -1551,7 +1609,9 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
     // remove ConservationColouring
     {
       sg.cs.setConservation(null);
+      SliderPanel.hideConservationSlider();
     }
+    modifyConservation.setEnabled(selected);
 
     refresh();
   }