JAL-2071 further refactoring, optimisation, and house keeping for the generic Free...
[jalview.git] / src / jalview / gui / FeatureRenderer.java
index 3ce831e..1cf15ac 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -37,6 +37,8 @@ import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import java.util.Arrays;
+import java.util.Comparator;
 
 import javax.swing.JColorChooser;
 import javax.swing.JComboBox;
@@ -55,7 +57,9 @@ import javax.swing.SwingConstants;
  * @author $author$
  * @version $Revision$
  */
-public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRenderer implements jalview.api.FeatureRenderer
+public class FeatureRenderer extends
+        jalview.renderer.seqfeatures.FeatureRenderer implements
+        jalview.api.FeatureRenderer
 {
   Color resBoxColour;
 
@@ -72,7 +76,8 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere
     super();
     this.ap = ap;
     this.av = ap.av;
-    if (ap != null && ap.getSeqPanel() != null && ap.getSeqPanel().seqCanvas != null
+    if (ap != null && ap.getSeqPanel() != null
+            && ap.getSeqPanel().seqCanvas != null
             && ap.getSeqPanel().seqCanvas.fr != null)
     {
       transferSettings(ap.getSeqPanel().seqCanvas.fr);
@@ -118,12 +123,14 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere
     {
       FeatureColourChooser fcc = null;
 
+      @Override
       public void mousePressed(MouseEvent evt)
       {
         if (fcol instanceof Color)
         {
           Color col = JColorChooser.showDialog(Desktop.desktop,
-                  MessageManager.getString("label.select_feature_colour"), ((Color) fcol));
+                  MessageManager.getString("label.select_feature_colour"),
+                  ((Color) fcol));
           if (col != null)
           {
             fcol = col;
@@ -143,6 +150,7 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere
             fcc.addActionListener(new ActionListener()
             {
 
+              @Override
               public void actionPerformed(ActionEvent e)
               {
                 fcol = fcc.getLastColour();
@@ -178,6 +186,7 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere
 
       overlaps.addItemListener(new ItemListener()
       {
+        @Override
         public void itemStateChanged(ItemEvent e)
         {
           int index = overlaps.getSelectedIndex();
@@ -306,21 +315,22 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere
     Object[] options;
     if (!newFeatures)
     {
-      options = new Object[]
-      { "Amend", "Delete", "Cancel" };
+      options = new Object[] { "Amend", "Delete", "Cancel" };
     }
     else
     {
-      options = new Object[]
-      { "OK", "Cancel" };
+      options = new Object[] { "OK", "Cancel" };
     }
 
-    String title = newFeatures ? MessageManager.getString("label.create_new_sequence_features")
-            : MessageManager.formatMessage("label.amend_delete_features", new String[]{sequences[0].getName()});
+    String title = newFeatures ? MessageManager
+            .getString("label.create_new_sequence_features")
+            : MessageManager.formatMessage("label.amend_delete_features",
+                    new String[] { sequences[0].getName() });
 
     int reply = JOptionPane.showInternalOptionDialog(Desktop.desktop,
             bigPanel, title, JOptionPane.YES_NO_CANCEL_OPTION,
-            JOptionPane.QUESTION_MESSAGE, null, options, MessageManager.getString("action.ok"));
+            JOptionPane.QUESTION_MESSAGE, null, options,
+            MessageManager.getString("action.ok"));
 
     jalview.io.FeaturesFile ffile = new jalview.io.FeaturesFile();
 
@@ -406,7 +416,6 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere
     return true;
   }
 
-
   /**
    * update the amend feature button dependent on the given style
    * 
@@ -434,4 +443,15 @@ public class FeatureRenderer extends jalview.renderer.seqfeatures.FeatureRendere
       // colour.setForeground(colour.getBackground());
     }
   }
+
+  /**
+   * Orders features in render precedence (last in order is last to render, so
+   * displayed on top of other features)
+   * 
+   * @param order
+   */
+  public void orderFeatures(Comparator<String> order)
+  {
+    Arrays.sort(renderOrder, order);
+  }
 }