JAL-1988 JAL-3772 Non-blocking modal dialogs for unsaved changes and saving files...
[jalview.git] / src / jalview / gui / TextColourChooser.java
index a1b3caf..e72a084 100644 (file)
  */
 package jalview.gui;
 
-import jalview.datamodel.SequenceGroup;
-import jalview.gui.JalviewColourChooser.ColourChooserListener;
-import jalview.util.MessageManager;
-
 import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Dimension;
@@ -31,15 +27,19 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.Callable;
 
 import javax.swing.BorderFactory;
-import javax.swing.JColorChooser;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JSlider;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
 
+import jalview.datamodel.SequenceGroup;
+import jalview.gui.JalviewColourChooser.ColourChooserListener;
+import jalview.util.MessageManager;
+
 public class TextColourChooser
 {
   AlignmentPanel ap;
@@ -85,7 +85,7 @@ public class TextColourChooser
     col2.setToolTipText(MessageManager.getString("label.light_colour"));
     col2.setBackground(original2);
     final JPanel bigpanel = new JPanel(new BorderLayout());
-    JPanel panel = new JPanel();
+    JPanel panel = new JPanel(new BorderLayout());
     bigpanel.add(panel, BorderLayout.CENTER);
     bigpanel.add(
             new JLabel("<html>"
@@ -93,16 +93,17 @@ public class TextColourChooser
                             "label.select_dark_light_set_threshold")
                     + "</html>"),
             BorderLayout.NORTH);
-    panel.add(col1);
-    panel.add(slider);
-    panel.add(col2);
+    panel.add(col1, BorderLayout.WEST);
+    panel.add(slider, BorderLayout.CENTER);
+    panel.add(col2, BorderLayout.EAST);
 
     col1.addMouseListener(new MouseAdapter()
     {
       @Override
       public void mousePressed(MouseEvent e)
       {
-        String ttl = MessageManager.getString("label.select_colour_for_text");
+        String ttl = MessageManager
+                .getString("label.select_colour_for_text");
         ColourChooserListener listener = new ColourChooserListener()
         {
           @Override
@@ -122,7 +123,8 @@ public class TextColourChooser
       @Override
       public void mousePressed(MouseEvent e)
       {
-        String ttl = MessageManager.getString("label.select_colour_for_text");
+        String ttl = MessageManager
+                .getString("label.select_colour_for_text");
         ColourChooserListener listener = new ColourChooserListener()
         {
           @Override
@@ -146,16 +148,20 @@ public class TextColourChooser
       }
     });
 
-    int reply = JvOptionPane.showInternalOptionDialog(alignPanel, bigpanel,
-            MessageManager.getString(
-                    "label.adjunst_foreground_text_colour_threshold"),
-            JvOptionPane.OK_CANCEL_OPTION, JvOptionPane.QUESTION_MESSAGE,
-            null, null, null);
-
-    if (reply == JvOptionPane.CANCEL_OPTION)
+    Object[] options = new Object[] { MessageManager.getString("action.ok"),
+        MessageManager.getString("action.cancel") };
+    String title = MessageManager
+            .getString("label.adjust_foreground_text_colour_threshold");
+    Callable<Void> action = () -> // response for 1 = Cancel
     {
       restoreInitialSettings();
-    }
+      return null;
+    };
+    JvOptionPane.newOptionDialog(alignPanel.alignFrame)
+            .setResponseHandler(1, action).showInternalDialog(bigpanel,
+                    title, JvOptionPane.YES_NO_CANCEL_OPTION,
+                    JvOptionPane.PLAIN_MESSAGE, null, options,
+                    MessageManager.getString("action.ok"));
   }
 
   /**
@@ -186,6 +192,8 @@ public class TextColourChooser
       group.textColour2 = groupColour2.get(group);
       group.thresholdTextColour = groupThreshold.get(group);
     }
+
+    ap.paintAlignment(false, false);
   }
 
   /**