applied copyright 2008
[jalview.git] / src / jalview / appletgui / AnnotationPanel.java
index d4055a5..ef0dcbb 100755 (executable)
@@ -1,22 +1,21 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
- *
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
+ * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * 
  * 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 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.
- *
+ * 
  * 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
  */
-
 package jalview.appletgui;
 
 import java.util.*;
@@ -42,14 +41,13 @@ public class AnnotationPanel
   static String COLOUR = "Colour";
   static Color HELIX_COLOUR = Color.red.darker();
   static Color SHEET_COLOUR = Color.green.darker().darker();
-
+  
   Image image;
   Graphics gg;
   FontMetrics fm;
   int imgWidth = 0;
 
   boolean fastPaint = false;
-
   public static int GRAPH_HEIGHT = 40;
 
   boolean MAC = false;
@@ -57,7 +55,6 @@ public class AnnotationPanel
   public AnnotationPanel(AlignmentPanel ap)
   {
     MAC = new jalview.util.Platform().isAMac();
-    
     this.ap = ap;
     av = ap.av;
     setLayout(null);
@@ -557,7 +554,7 @@ public class AnnotationPanel
     int lastSSX;
     int iconOffset = av.charHeight / 2;
     boolean validRes = false;
-
+    boolean validEnd = false;
     boolean[] graphGroupDrawn = new boolean[aa.length];
 
     //\u03B2 \u03B1
@@ -648,10 +645,13 @@ public class AnnotationPanel
         if (av.validCharWidth && validRes &&
             (row.annotations[column].displayCharacter!=null && row.annotations[column].displayCharacter.length() > 0))
         {
-          int charOffset = (av.charWidth -
-                            fm.charWidth(row.annotations[column].
-                                         displayCharacter.charAt(
-                                             0))) / 2;
+          int charOffset = (av.getCentreColumnLabels()) ? ((av.charWidth -
+                  fm.charsWidth(row.annotations[column].
+                               displayCharacter.toCharArray(),0,
+                               row.annotations[column].
+                               displayCharacter.length())) / 2)
+                               : (av.charWidth - fm.charWidth(row.annotations[column].
+                                       displayCharacter.charAt(0))) / 2;
 
           if (row.annotations[column].colour == null)
             g.setColor(Color.black);
@@ -764,6 +764,9 @@ public class AnnotationPanel
       if (column >= row.annotations.length)
       {
         column = row.annotations.length - 1;
+        validEnd = false;
+      } else {
+        validEnd = true;
       }
 
       //  x ++;
@@ -811,7 +814,7 @@ public class AnnotationPanel
           case 'E':
             g.setColor(SHEET_COLOUR);
 
-            if (row.annotations[endRes] == null
+            if (!validEnd || row.annotations[endRes] == null
                 || row.annotations[endRes].secondaryStructure != 'E')
             {
               g.fillRect(lastSSX, y + 4 + iconOffset,