Merge branch 'features/JAL-2371collectionColourScheme' into develop
[jalview.git] / src / jalview / jbgui / GUserDefinedColours.java
index f79359c..fe20baf 100755 (executable)
@@ -1,26 +1,48 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
- * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * This file is part of Jalview.
  * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.jbgui;
 
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
+import jalview.gui.JvSwingUtils;
+import jalview.util.MessageManager;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.GridBagLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JColorChooser;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.SwingConstants;
+import javax.swing.colorchooser.AbstractColorChooserPanel;
 
 /**
  * DOCUMENT ME!
@@ -84,6 +106,8 @@ public class GUserDefinedColours extends JPanel
 
   protected JButton lcaseColour = new JButton();
 
+  protected List<JButton> selectedButtons;
+
   /**
    * Creates a new GUserDefinedColours object.
    */
@@ -103,7 +127,7 @@ public class GUserDefinedColours extends JPanel
    * DOCUMENT ME!
    * 
    * @throws Exception
-   *                 DOCUMENT ME!
+   *           DOCUMENT ME!
    */
   private void jbInit() throws Exception
   {
@@ -112,45 +136,50 @@ public class GUserDefinedColours extends JPanel
     gridLayout.setColumns(4);
     gridLayout.setRows(5);
     okButton.setFont(new java.awt.Font("Verdana", 0, 11));
-    okButton.setText("OK");
+    okButton.setText(MessageManager.getString("action.ok"));
     okButton.addActionListener(new java.awt.event.ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
-        okButton_actionPerformed(e);
+        okButton_actionPerformed();
       }
     });
     applyButton.setFont(new java.awt.Font("Verdana", 0, 11));
-    applyButton.setText("Apply");
-    applyButton.addActionListener(new java.awt.event.ActionListener()
+    applyButton.setText(MessageManager.getString("action.apply"));
+    applyButton.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
-        applyButton_actionPerformed(e);
+        applyButton_actionPerformed();
       }
     });
     loadbutton.setFont(new java.awt.Font("Verdana", 0, 11));
-    loadbutton.setText("Load scheme");
+    loadbutton.setText(MessageManager.getString("action.load_scheme"));
     loadbutton.addActionListener(new java.awt.event.ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         loadbutton_actionPerformed(e);
       }
     });
     savebutton.setFont(new java.awt.Font("Verdana", 0, 11));
-    savebutton.setText("Save scheme");
+    savebutton.setText(MessageManager.getString("action.save_scheme"));
     savebutton.addActionListener(new java.awt.event.ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         savebutton_actionPerformed(e);
       }
     });
-    cancelButton.setFont(new java.awt.Font("Verdana", 0, 11));
-    cancelButton.setText("Cancel");
+    cancelButton.setFont(JvSwingUtils.getLabelFont());
+    cancelButton.setText(MessageManager.getString("action.cancel"));
     cancelButton.addActionListener(new java.awt.event.ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         cancelButton_actionPerformed(e);
@@ -160,13 +189,13 @@ public class GUserDefinedColours extends JPanel
     lowerPanel.setOpaque(false);
     lowerPanel.setLayout(borderLayout3);
     colorChooser.setOpaque(false);
-    jLabel1.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
-    jLabel1.setText("Name");
+    jLabel1.setFont(JvSwingUtils.getLabelFont());
+    jLabel1.setText(MessageManager.getString("label.name"));
     namePanel.setMinimumSize(new Dimension(300, 31));
     namePanel.setOpaque(false);
     namePanel.setPreferredSize(new Dimension(240, 25));
     namePanel.setLayout(borderLayout1);
-    schemeName.setFont(new java.awt.Font("Verdana", Font.PLAIN, 11));
+    schemeName.setFont(JvSwingUtils.getLabelFont());
     schemeName.setPreferredSize(new Dimension(105, 21));
     schemeName.setText("");
     schemeName.setHorizontalAlignment(SwingConstants.CENTER);
@@ -178,20 +207,25 @@ public class GUserDefinedColours extends JPanel
     label.setFont(new java.awt.Font("Verdana", Font.ITALIC, 10));
     label.setOpaque(false);
     label.setPreferredSize(new Dimension(260, 34));
-    label
-            .setText("<html>Save your colour scheme with a unique name and it will be added "
-                    + "to the Colour menu.</html>");
-    caseSensitive.setText("Case Sensitive");
+    label.setText(MessageManager
+            .formatMessage(
+                    "label.html_content",
+                    new String[] { MessageManager
+                            .getString("label.save_colour_scheme_with_unique_name_added_to_colour_menu") }));
+    caseSensitive.setText(MessageManager.getString("label.case_sensitive"));
     caseSensitive.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         caseSensitive_actionPerformed(e);
       }
     });
-    lcaseColour.setText("Lower Case Colour");
+    lcaseColour
+            .setText(MessageManager.getString("label.lower_case_colour"));
     lcaseColour.addActionListener(new ActionListener()
     {
+      @Override
       public void actionPerformed(ActionEvent e)
       {
         lcaseColour_actionPerformed(e);
@@ -219,25 +253,32 @@ public class GUserDefinedColours extends JPanel
     jPanel4.add(panel1, java.awt.BorderLayout.CENTER);
     this.add(jPanel4, java.awt.BorderLayout.CENTER);
     this.add(colorChooser, java.awt.BorderLayout.EAST);
+
+    AbstractColorChooserPanel[] choosers = colorChooser.getChooserPanels();
+    // JAL-1360 larger JColorChooser in Java 7 overwrites AA panel; restrict to
+    // swatch picker only
+    if (choosers.length > 3)
+    {
+      // Java 7 default has 5 options rather than 3 for choosing colours; keep
+      // the first only
+      colorChooser
+              .setChooserPanels(new AbstractColorChooserPanel[] { choosers[0] });
+    }
+
+    selectedButtons = new ArrayList<JButton>();
   }
 
   /**
    * DOCUMENT ME!
-   * 
-   * @param e
-   *                DOCUMENT ME!
    */
-  protected void okButton_actionPerformed(ActionEvent e)
+  protected void okButton_actionPerformed()
   {
   }
 
   /**
    * DOCUMENT ME!
-   * 
-   * @param e
-   *                DOCUMENT ME!
    */
-  protected void applyButton_actionPerformed(ActionEvent e)
+  protected void applyButton_actionPerformed()
   {
   }
 
@@ -245,7 +286,7 @@ public class GUserDefinedColours extends JPanel
    * DOCUMENT ME!
    * 
    * @param e
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   protected void loadbutton_actionPerformed(ActionEvent e)
   {
@@ -255,7 +296,7 @@ public class GUserDefinedColours extends JPanel
    * DOCUMENT ME!
    * 
    * @param e
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   protected void savebutton_actionPerformed(ActionEvent e)
   {
@@ -265,7 +306,7 @@ public class GUserDefinedColours extends JPanel
    * DOCUMENT ME!
    * 
    * @param e
-   *                DOCUMENT ME!
+   *          DOCUMENT ME!
    */
   protected void cancelButton_actionPerformed(ActionEvent e)
   {