merge from 2_4_Release branch
[jalview.git] / src / jalview / appletgui / AlignmentPanel.java
index 6b292e9..c2bdaf0 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.awt.*;
@@ -24,18 +23,25 @@ import java.awt.event.*;
 
 import jalview.datamodel.*;
 
-public class AlignmentPanel
-    extends Panel implements AdjustmentListener
+public class AlignmentPanel extends Panel implements AdjustmentListener
 {
 
   public AlignViewport av;
+
   OverviewPanel overviewPanel;
+
   SeqPanel seqPanel;
+
   IdPanel idPanel;
+
   IdwidthAdjuster idwidthAdjuster;
+
   public AlignFrame alignFrame;
+
   ScalePanel scalePanel;
+
   AnnotationPanel annotationPanel;
+
   AnnotationLabels alabels;
 
   // this value is set false when selection area being dragged
@@ -46,8 +52,7 @@ public class AlignmentPanel
     try
     {
       jbInit();
-    }
-    catch (Exception e)
+    } catch (Exception e)
     {
       e.printStackTrace();
     }
@@ -94,7 +99,7 @@ public class AlignmentPanel
 
     idPanel.idCanvas.setSize(d.width, seqPanel.seqCanvas.getSize().height);
     annotationSpaceFillerHolder.setSize(d.width,
-                                        annotationPanel.getSize().height);
+            annotationPanel.getSize().height);
     alabels.setSize(d.width, annotationPanel.getSize().height);
 
     final AlignmentPanel ap = this;
@@ -104,10 +109,7 @@ public class AlignmentPanel
       {
         if (evt.getPropertyName().equals("alignment"))
         {
-          PaintRefresher.Refresh(ap,
-                                 av.getSequenceSetId(),
-                                 true,
-                                 true);
+          PaintRefresher.Refresh(ap, av.getSequenceSetId(), true, true);
           alignmentChanged();
         }
       }
@@ -147,7 +149,8 @@ public class AlignmentPanel
     FontMetrics fm = getFontMetrics(av.getFont());
 
     scalePanel.setSize(new Dimension(10, av.charHeight + fm.getDescent()));
-    idwidthAdjuster.setSize(new Dimension(10, av.charHeight + fm.getDescent()));
+    idwidthAdjuster.setSize(new Dimension(10, av.charHeight
+            + fm.getDescent()));
     av.updateSequenceIdColours();
     annotationPanel.image = null;
     int ap = annotationPanel.adjustPanelHeight();
@@ -236,8 +239,9 @@ public class AlignmentPanel
 
       if (!av.wrapAlignment)
       {
-        if ( (av.getStartRes() > end) || (av.getEndRes() < start) ||
-            ( (av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex)))
+        if ((av.getStartRes() > end)
+                || (av.getEndRes() < start)
+                || ((av.getStartSeq() > seqIndex) || (av.getEndSeq() < seqIndex)))
         {
           if (start > av.alignment.getWidth() - hextent)
           {
@@ -269,8 +273,8 @@ public class AlignmentPanel
 
   void scrollToWrappedVisible(int res)
   {
-    int cwidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.
-        getSize().width);
+    int cwidth = seqPanel.seqCanvas
+            .getWrappedCanvasWidth(seqPanel.seqCanvas.getSize().width);
     if (res <= av.getStartRes() || res >= (av.getStartRes() + cwidth))
     {
       vscroll.setValue(res / cwidth);
@@ -321,7 +325,7 @@ public class AlignmentPanel
 
     idSpaceFillerPanel1.setVisible(!wrap);
 
-    fontChanged(); //This is so that the scalePanel is resized correctly
+    fontChanged(); // This is so that the scalePanel is resized correctly
 
     validate();
     repaint();
@@ -329,6 +333,7 @@ public class AlignmentPanel
   }
 
   int hextent = 0;
+
   int vextent = 0;
 
   // return value is true if the scroll is valid
@@ -389,7 +394,8 @@ public class AlignmentPanel
     }
 
     av.setStartRes(x);
-    av.setEndRes( (x + (seqPanel.seqCanvas.getSize().width / av.charWidth)) - 1);
+    av
+            .setEndRes((x + (seqPanel.seqCanvas.getSize().width / av.charWidth)) - 1);
 
     hextent = seqPanel.seqCanvas.getSize().width / av.charWidth;
     vextent = seqPanel.seqCanvas.getSize().height / av.charHeight;
@@ -404,12 +410,12 @@ public class AlignmentPanel
       vextent = height;
     }
 
-    if ( (hextent + x) > width)
+    if ((hextent + x) > width)
     {
       x = width - hextent;
     }
 
-    if ( (vextent + y) > height)
+    if ((vextent + y) > height)
     {
       y = height - vextent;
     }
@@ -452,8 +458,8 @@ public class AlignmentPanel
     {
       int x = hscroll.getValue();
       av.setStartRes(x);
-      av.setEndRes(x + seqPanel.seqCanvas.getSize().width / av.getCharWidth() -
-                   1);
+      av.setEndRes(x + seqPanel.seqCanvas.getSize().width
+              / av.getCharWidth() - 1);
     }
 
     if (evt == null || evt.getSource() == vscroll)
@@ -461,16 +467,16 @@ public class AlignmentPanel
       int offy = vscroll.getValue();
       if (av.getWrapAlignment())
       {
-        int rowSize = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.
-            seqCanvas.getSize().width);
+        int rowSize = seqPanel.seqCanvas
+                .getWrappedCanvasWidth(seqPanel.seqCanvas.getSize().width);
         av.setStartRes(vscroll.getValue() * rowSize);
-        av.setEndRes( (vscroll.getValue() + 1) * rowSize);
+        av.setEndRes((vscroll.getValue() + 1) * rowSize);
       }
       else
       {
         av.setStartSeq(offy);
-        av.setEndSeq(offy +
-                     seqPanel.seqCanvas.getSize().height / av.getCharHeight());
+        av.setEndSeq(offy + seqPanel.seqCanvas.getSize().height
+                / av.getCharHeight());
       }
     }
 
@@ -500,8 +506,7 @@ public class AlignmentPanel
       }
 
       idPanel.idCanvas.fastPaint(scrollY);
-      seqPanel.seqCanvas.fastPaint(scrollX,
-                                   scrollY);
+      seqPanel.seqCanvas.fastPaint(scrollX, scrollY);
 
       scalePanel.repaint();
       if (av.getShowAnnotation())
@@ -516,10 +521,10 @@ public class AlignmentPanel
   {
     repaint();
 
-    if(updateOverview)
+    if (updateOverview)
     {
-      jalview.structure.StructureSelectionManager.getStructureSelectionManager()
-          .sequenceColoursChanged(this);
+      jalview.structure.StructureSelectionManager
+              .getStructureSelectionManager().sequenceColoursChanged(this);
 
       if (overviewPanel != null)
       {
@@ -539,7 +544,7 @@ public class AlignmentPanel
     Dimension d = idPanel.idCanvas.getSize();
     idPanel.idCanvas.setSize(d.width, seqPanel.seqCanvas.getSize().height);
     annotationSpaceFillerHolder.setSize(d.width,
-                                        annotationPanel.getSize().height);
+            annotationPanel.getSize().height);
 
     alabels.setSize(d.width, annotationPanel.getSize().height);
 
@@ -552,8 +557,8 @@ public class AlignmentPanel
         maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;
       }
 
-      int canvasWidth = seqPanel.seqCanvas.getWrappedCanvasWidth
-          (seqPanel.seqCanvas.getSize().width);
+      int canvasWidth = seqPanel.seqCanvas
+              .getWrappedCanvasWidth(seqPanel.seqCanvas.getSize().width);
 
       if (canvasWidth > 0)
       {
@@ -577,32 +582,49 @@ public class AlignmentPanel
   }
 
   protected Panel sequenceHolderPanel = new Panel();
+
   protected Scrollbar vscroll = new Scrollbar();
+
   protected Scrollbar hscroll = new Scrollbar();
+
   protected Panel seqPanelHolder = new Panel();
+
   BorderLayout borderLayout1 = new BorderLayout();
+
   BorderLayout borderLayout3 = new BorderLayout();
+
   protected Panel scalePanelHolder = new Panel();
+
   protected Panel idPanelHolder = new Panel();
+
   BorderLayout borderLayout5 = new BorderLayout();
+
   protected Panel idSpaceFillerPanel1 = new Panel();
+
   public Panel annotationSpaceFillerHolder = new Panel();
+
   BorderLayout borderLayout6 = new BorderLayout();
+
   BorderLayout borderLayout7 = new BorderLayout();
+
   Panel hscrollHolder = new Panel();
+
   BorderLayout borderLayout10 = new BorderLayout();
+
   protected Panel hscrollFillerPanel = new Panel();
+
   BorderLayout borderLayout11 = new BorderLayout();
+
   BorderLayout borderLayout4 = new BorderLayout();
+
   BorderLayout borderLayout2 = new BorderLayout();
 
-  private void jbInit()
-      throws Exception
+  private void jbInit() throws Exception
   {
-    //  idPanelHolder.setPreferredSize(new Dimension(70, 10));
+    // idPanelHolder.setPreferredSize(new Dimension(70, 10));
     this.setLayout(borderLayout7);
 
-    //   sequenceHolderPanel.setPreferredSize(new Dimension(150, 150));
+    // sequenceHolderPanel.setPreferredSize(new Dimension(150, 150));
     sequenceHolderPanel.setLayout(borderLayout3);
     seqPanelHolder.setLayout(borderLayout1);
     scalePanelHolder.setBackground(Color.white);
@@ -612,28 +634,28 @@ public class AlignmentPanel
     idPanelHolder.setLayout(borderLayout5);
     idSpaceFillerPanel1.setBackground(Color.white);
 
-    //  idSpaceFillerPanel1.setPreferredSize(new Dimension(10, 30));
+    // idSpaceFillerPanel1.setPreferredSize(new Dimension(10, 30));
     idSpaceFillerPanel1.setLayout(borderLayout11);
     annotationSpaceFillerHolder.setBackground(Color.white);
 
-    //  annotationSpaceFillerHolder.setPreferredSize(new Dimension(10, 80));
+    // annotationSpaceFillerHolder.setPreferredSize(new Dimension(10, 80));
     annotationSpaceFillerHolder.setLayout(borderLayout4);
     hscroll.setOrientation(Scrollbar.HORIZONTAL);
     hscrollHolder.setLayout(borderLayout10);
     hscrollFillerPanel.setBackground(Color.white);
 
-    //  hscrollFillerPanel.setPreferredSize(new Dimension(70, 10));
+    // hscrollFillerPanel.setPreferredSize(new Dimension(70, 10));
     hscrollHolder.setBackground(Color.white);
 
-    //    annotationScroller.setPreferredSize(new Dimension(10, 80));
-    //  this.setPreferredSize(new Dimension(220, 166));
+    // annotationScroller.setPreferredSize(new Dimension(10, 80));
+    // this.setPreferredSize(new Dimension(220, 166));
     seqPanelHolder.setBackground(Color.white);
     idPanelHolder.setBackground(Color.white);
     sequenceHolderPanel.add(scalePanelHolder, BorderLayout.NORTH);
     sequenceHolderPanel.add(seqPanelHolder, BorderLayout.CENTER);
     seqPanelHolder.add(vscroll, BorderLayout.EAST);
 
-    //  Panel3.add(secondaryPanelHolder,  BorderLayout.SOUTH);
+    // Panel3.add(secondaryPanelHolder, BorderLayout.SOUTH);
     this.add(idPanelHolder, BorderLayout.WEST);
     idPanelHolder.add(idSpaceFillerPanel1, BorderLayout.NORTH);
     idPanelHolder.add(annotationSpaceFillerHolder, BorderLayout.SOUTH);