(JAL-969) refactored alignmentViewport base class to own package and pulled up most...
[jalview.git] / src / jalview / gui / AlignFrame.java
index 850450b..50a0f41 100755 (executable)
@@ -283,7 +283,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   void init()
   {
-    if (viewport.conservation == null)
+    if (viewport.getAlignmentConservationAnnotation()== null)
     {
       BLOSUM62Colour.setEnabled(false);
       conservationMenuItem.setEnabled(false);
@@ -309,7 +309,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     {
       this.setDropTarget(new java.awt.dnd.DropTarget(this, this));
       addServiceListeners();
-      setGUINucleotide(viewport.alignment.isNucleotide());
+      setGUINucleotide(viewport.getAlignment().isNucleotide());
     }
 
     setMenusFromViewport(viewport);
@@ -584,9 +584,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     if (newPanel)
     {
-      if (ap.av.padGaps)
+      if (ap.av.isPadGaps())
       {
-        ap.av.alignment.padGaps();
+        ap.av.getAlignment().padGaps();
       }
       ap.av.updateConservation(ap);
       ap.av.updateConsensus(ap);
@@ -691,7 +691,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   void setMenusFromViewport(AlignViewport av)
   {
-    padGapsMenuitem.setSelected(av.padGaps);
+    padGapsMenuitem.setSelected(av.isPadGaps());
     colourTextMenuItem.setSelected(av.showColourText);
     abovePIDThreshold.setSelected(av.getAbovePIDThreshold());
     conservationMenuItem.setSelected(av.getConservationSelected());
@@ -706,12 +706,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     annotationPanelMenuItem.setState(av.showAnnotation);
     viewBoxesMenuItem.setSelected(av.showBoxes);
     viewTextMenuItem.setSelected(av.showText);
-    showNonconservedMenuItem.setSelected(av.showUnconserved);
-    showGroupConsensus.setSelected(av.showGroupConsensus);
-    showGroupConservation.setSelected(av.showGroupConservation);
-    showConsensusHistogram.setSelected(av.showConsensusHistogram);
-    showSequenceLogo.setSelected(av.showSequenceLogo);
-    normaliseSequenceLogo.setSelected(av.normaliseSequenceLogo);
+    showNonconservedMenuItem.setSelected(av.getShowUnconserved());
+    showGroupConsensus.setSelected(av.isShowGroupConsensus());
+    showGroupConservation.setSelected(av.isShowGroupConservation());
+    showConsensusHistogram.setSelected(av.isShowConsensusHistogram());
+    showSequenceLogo.setSelected(av.isShowSequenceLogo());
+    normaliseSequenceLogo.setSelected(av.isNormaliseSequenceLogo());
     
     setColourSelected(ColourSchemeProperty.getColourName(av
             .getGlobalColourScheme()));
@@ -724,7 +724,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     autoCalculate.setSelected(av.autoCalculateConsensus);
     sortByTree.setSelected(av.sortByTree);
     listenToViewSelections.setSelected(av.followSelection);
-    rnahelicesColour.setEnabled(av.alignment.hasRNAStructure());
+    rnahelicesColour.setEnabled(av.getAlignment().hasRNAStructure());
     rnahelicesColour.setSelected(av.getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour);
     setShowProductsEnabled();
 
@@ -1018,7 +1018,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
       String[] omitHidden = null;
 
-      if (viewport.hasHiddenColumns)
+      if (viewport.hasHiddenColumns())
       {
         int reply = JOptionPane
                 .showInternalConfirmDialog(
@@ -1036,9 +1036,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       }
       FormatAdapter f = new FormatAdapter();
       String output = f.formatSequences(format,
-              (Alignment) viewport.alignment, // class cast exceptions will
+              (Alignment) viewport.getAlignment(), // class cast exceptions will
               // occur in the distant future
-              omitHidden, f.getCacheSuffixDefault(format), viewport.colSel);
+              omitHidden, f.getCacheSuffixDefault(format), viewport.getColumnSelection());
 
       if (output == null)
       {
@@ -1098,7 +1098,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   {
     String[] omitHidden = null;
 
-    if (viewport.hasHiddenColumns)
+    if (viewport.hasHiddenColumns())
     {
       int reply = JOptionPane
               .showInternalConfirmDialog(
@@ -1121,7 +1121,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     try
     {
       cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(),
-              viewport.alignment, omitHidden, viewport.colSel));
+              viewport.getAlignment(), omitHidden, viewport.getColumnSelection()));
       Desktop.addInternalFrame(cap,
               "Alignment output - " + e.getActionCommand(), 600, 500);
     } catch (OutOfMemoryError oom)
@@ -1200,10 +1200,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   {
     new AnnotationExporter().exportAnnotations(
             alignPanel,
-            viewport.showAnnotation ? viewport.alignment
-                    .getAlignmentAnnotation() : null, viewport.alignment
+            viewport.showAnnotation ? viewport.getAlignment()
+                    .getAlignmentAnnotation() : null, viewport.getAlignment()
                     .getGroups(),
-            ((Alignment) viewport.alignment).alignmentProperties);
+            ((Alignment) viewport.getAlignment()).alignmentProperties);
   }
 
   public void associatedData_actionPerformed(ActionEvent e)
@@ -1341,9 +1341,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       viewport.historyList.push(command);
       viewport.redoList.clear();
       updateEditMenuBar();
-      viewport.hasHiddenColumns = (viewport.colSel != null
-              && viewport.colSel.getHiddenColumns() != null && viewport.colSel
-              .getHiddenColumns().size() > 0);
+      viewport.updateHiddenColumns();
+//      viewport.hasHiddenColumns = (viewport.getColumnSelection() != null
+//              && viewport.getColumnSelection().getHiddenColumns() != null && viewport.getColumnSelection()
+//              .getHiddenColumns().size() > 0);
     }
   }
 
@@ -1366,7 +1367,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     if (viewport != null)
     {
       return new AlignmentI[]
-      { viewport.alignment };
+      { viewport.getAlignment() };
     }
     return null;
   }
@@ -1390,11 +1391,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     if (originalSource != null)
     {
-      originalSource.hasHiddenColumns = (viewport.colSel != null
-              && viewport.colSel.getHiddenColumns() != null && viewport.colSel
-              .getHiddenColumns().size() > 0);
+      if (originalSource!=viewport)
+      {
+        Cache.log.warn("Implementation worry: mismatch of viewport origin for undo");
+      }
+      originalSource.updateHiddenColumns();
+//      originalSource.hasHiddenColumns = (viewport.getColumnSelection() != null
+//              && viewport.getColumnSelection().getHiddenColumns() != null && viewport.getColumnSelection()
+//              .getHiddenColumns().size() > 0);
       originalSource.firePropertyChange("alignment", null,
-              originalSource.alignment.getSequences());
+              originalSource.getAlignment().getSequences());
     }
   }
 
@@ -1420,11 +1426,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     if (originalSource != null)
     {
-      originalSource.hasHiddenColumns = (viewport.colSel != null
-              && viewport.colSel.getHiddenColumns() != null && viewport.colSel
-              .getHiddenColumns().size() > 0);
+
+      if (originalSource!=viewport)
+      {
+        Cache.log.warn("Implementation worry: mismatch of viewport origin for redo");
+      }
+      originalSource.updateHiddenColumns();
+      //originalSource.hasHiddenColumns = (viewport.getColumnSelection() != null
+      //        && viewport.getColumnSelection().getHiddenColumns() != null && viewport.getColumnSelection()
+      //        .getHiddenColumns().size() > 0);
       originalSource.firePropertyChange("alignment", null,
-              originalSource.alignment.getSequences());
+              originalSource.getAlignment().getSequences());
     }
   }
 
@@ -1446,7 +1458,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       {
         if (comps.elementAt(i) instanceof AlignmentPanel)
         {
-          if (al == ((AlignmentPanel) comps.elementAt(i)).av.alignment)
+          if (al == ((AlignmentPanel) comps.elementAt(i)).av.getAlignment())
           {
             originalSource = ((AlignmentPanel) comps.elementAt(i)).av;
             break;
@@ -1461,7 +1473,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       // the current view against the closed view first
       if (al != null)
       {
-        PaintRefresher.validateSequences(al, viewport.alignment);
+        PaintRefresher.validateSequences(al, viewport.getAlignment());
       }
 
       originalSource = viewport;
@@ -1487,46 +1499,46 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     if (up)
     {
-      for (int i = 1; i < viewport.alignment.getHeight(); i++)
+      for (int i = 1; i < viewport.getAlignment().getHeight(); i++)
       {
-        SequenceI seq = viewport.alignment.getSequenceAt(i);
+        SequenceI seq = viewport.getAlignment().getSequenceAt(i);
 
         if (!sg.getSequences(null).contains(seq))
         {
           continue;
         }
 
-        SequenceI temp = viewport.alignment.getSequenceAt(i - 1);
+        SequenceI temp = viewport.getAlignment().getSequenceAt(i - 1);
 
         if (sg.getSequences(null).contains(temp))
         {
           continue;
         }
 
-        viewport.alignment.getSequences().setElementAt(temp, i);
-        viewport.alignment.getSequences().setElementAt(seq, i - 1);
+        viewport.getAlignment().getSequences().setElementAt(temp, i);
+        viewport.getAlignment().getSequences().setElementAt(seq, i - 1);
       }
     }
     else
     {
-      for (int i = viewport.alignment.getHeight() - 2; i > -1; i--)
+      for (int i = viewport.getAlignment().getHeight() - 2; i > -1; i--)
       {
-        SequenceI seq = viewport.alignment.getSequenceAt(i);
+        SequenceI seq = viewport.getAlignment().getSequenceAt(i);
 
         if (!sg.getSequences(null).contains(seq))
         {
           continue;
         }
 
-        SequenceI temp = viewport.alignment.getSequenceAt(i + 1);
+        SequenceI temp = viewport.getAlignment().getSequenceAt(i + 1);
 
         if (sg.getSequences(null).contains(temp))
         {
           continue;
         }
 
-        viewport.alignment.getSequences().setElementAt(temp, i);
-        viewport.alignment.getSequences().setElementAt(seq, i + 1);
+        viewport.getAlignment().getSequences().setElementAt(temp, i);
+        viewport.getAlignment().getSequences().setElementAt(seq, i + 1);
       }
     }
 
@@ -1538,15 +1550,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     Vector sg = new Vector();
     if (viewport.cursorMode)
     {
-      sg.addElement(viewport.alignment
+      sg.addElement(viewport.getAlignment()
               .getSequenceAt(alignPanel.seqPanel.seqCanvas.cursorY));
     }
     else if (viewport.getSelectionGroup() != null
-            && viewport.getSelectionGroup().getSize() != viewport.alignment
+            && viewport.getSelectionGroup().getSize() != viewport.getAlignment()
                     .getHeight())
     {
       sg = viewport.getSelectionGroup().getSequences(
-              viewport.hiddenRepSequences);
+              viewport.getHiddenRepSequences());
     }
 
     if (sg.size() < 1)
@@ -1556,10 +1568,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     Vector invertGroup = new Vector();
 
-    for (int i = 0; i < viewport.alignment.getHeight(); i++)
+    for (int i = 0; i < viewport.getAlignment().getHeight(); i++)
     {
-      if (!sg.contains(viewport.alignment.getSequenceAt(i)))
-        invertGroup.add(viewport.alignment.getSequenceAt(i));
+      if (!sg.contains(viewport.getAlignment().getSequenceAt(i)))
+        invertGroup.add(viewport.getAlignment().getSequenceAt(i));
     }
 
     SequenceI[] seqs1 = new SequenceI[sg.size()];
@@ -1635,7 +1647,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     SequenceI[] seqs = viewport.getSelectionAsNewSequence();
     String[] omitHidden = null;
 
-    if (viewport.hasHiddenColumns)
+    if (viewport.hasHiddenColumns())
     {
       omitHidden = viewport.getViewAsString(true);
     }
@@ -1662,7 +1674,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
 
     Vector hiddenColumns = null;
-    if (viewport.hasHiddenColumns)
+    if (viewport.hasHiddenColumns())
     {
       hiddenColumns = new Vector();
       int hiddenOffset = viewport.getSelectionGroup().getStartRes(), hiddenCutoff = viewport
@@ -1681,7 +1693,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
 
     Desktop.jalviewClipboard = new Object[]
-    { seqs, viewport.alignment.getDataset(), hiddenColumns };
+    { seqs, viewport.getAlignment().getDataset(), hiddenColumns };
     statusBar.setText("Copied " + seqs.length + " sequences to clipboard.");
   }
 
@@ -2012,7 +2024,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
 
     // If the cut affects all sequences, remove highlighted columns
-    if (sg.getSize() == viewport.alignment.getHeight())
+    if (sg.getSize() == viewport.getAlignment().getHeight())
     {
       viewport.getColumnSelection().removeElements(sg.getStartRes(),
               sg.getEndRes() + 1);
@@ -2029,11 +2041,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
      */
     addHistoryItem(new EditCommand("Cut Sequences", EditCommand.CUT, cut,
             sg.getStartRes(), sg.getEndRes() - sg.getStartRes() + 1,
-            viewport.alignment));
+            viewport.getAlignment()));
 
     viewport.setSelectionGroup(null);
     viewport.sendSelection();
-    viewport.alignment.deleteGroup(sg);
+    viewport.getAlignment().deleteGroup(sg);
 
     viewport.firePropertyChange("alignment", null, viewport.getAlignment()
             .getSequences());
@@ -2056,7 +2068,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   protected void deleteGroups_actionPerformed(ActionEvent e)
   {
-    viewport.alignment.deleteAllGroups();
+    viewport.getAlignment().deleteAllGroups();
     viewport.sequenceColours = null;
     viewport.setSelectionGroup(null);
     PaintRefresher.Refresh(this, viewport.getSequenceSetId());
@@ -2079,7 +2091,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       sg.addSequence(viewport.getAlignment().getSequenceAt(i), false);
     }
 
-    sg.setEndRes(viewport.alignment.getWidth() - 1);
+    sg.setEndRes(viewport.getAlignment().getWidth() - 1);
     viewport.setSelectionGroup(sg);
     viewport.sendSelection();
     alignPanel.paintAlignment(true);
@@ -2185,11 +2197,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       if (viewport.getSelectionGroup() != null)
       {
         seqs = viewport.getSelectionGroup().getSequencesAsArray(
-                viewport.hiddenRepSequences);
+                viewport.getHiddenRepSequences());
       }
       else
       {
-        seqs = viewport.alignment.getSequencesArray();
+        seqs = viewport.getAlignment().getSequencesArray();
       }
 
       TrimRegionCommand trimRegion;
@@ -2197,23 +2209,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       {
         trimRegion = new TrimRegionCommand("Remove Left",
                 TrimRegionCommand.TRIM_LEFT, seqs, column,
-                viewport.alignment, viewport.colSel,
-                viewport.selectionGroup);
+                viewport.getAlignment(), viewport.getColumnSelection(),
+                viewport.getSelectionGroup());
         viewport.setStartRes(0);
       }
       else
       {
         trimRegion = new TrimRegionCommand("Remove Right",
                 TrimRegionCommand.TRIM_RIGHT, seqs, column,
-                viewport.alignment, viewport.colSel,
-                viewport.selectionGroup);
+                viewport.getAlignment(), viewport.getColumnSelection(),
+                viewport.getSelectionGroup());
       }
 
       statusBar.setText("Removed " + trimRegion.getSize() + " columns.");
 
       addHistoryItem(trimRegion);
 
-      Vector groups = viewport.alignment.getGroups();
+      Vector groups = viewport.getAlignment().getGroups();
 
       for (int i = 0; i < groups.size(); i++)
       {
@@ -2222,7 +2234,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         if ((trimLeft && !sg.adjustForRemoveLeft(column))
                 || (!trimLeft && !sg.adjustForRemoveRight(column)))
         {
-          viewport.alignment.deleteGroup(sg);
+          viewport.getAlignment().deleteGroup(sg);
         }
       }
 
@@ -2239,23 +2251,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   public void removeGappedColumnMenuItem_actionPerformed(ActionEvent e)
   {
-    int start = 0, end = viewport.alignment.getWidth() - 1;
+    int start = 0, end = viewport.getAlignment().getWidth() - 1;
 
     SequenceI[] seqs;
     if (viewport.getSelectionGroup() != null)
     {
       seqs = viewport.getSelectionGroup().getSequencesAsArray(
-              viewport.hiddenRepSequences);
+              viewport.getHiddenRepSequences());
       start = viewport.getSelectionGroup().getStartRes();
       end = viewport.getSelectionGroup().getEndRes();
     }
     else
     {
-      seqs = viewport.alignment.getSequencesArray();
+      seqs = viewport.getAlignment().getSequencesArray();
     }
 
     RemoveGapColCommand removeGapCols = new RemoveGapColCommand(
-            "Remove Gapped Columns", seqs, start, end, viewport.alignment);
+            "Remove Gapped Columns", seqs, start, end, viewport.getAlignment());
 
     addHistoryItem(removeGapCols);
 
@@ -2264,7 +2276,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     // This is to maintain viewport position on first residue
     // of first sequence
-    SequenceI seq = viewport.alignment.getSequenceAt(0);
+    SequenceI seq = viewport.getAlignment().getSequenceAt(0);
     int startRes = seq.findPosition(viewport.startRes);
     // ShiftList shifts;
     // viewport.getAlignment().removeGaps(shifts=new ShiftList());
@@ -2285,28 +2297,28 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   public void removeAllGapsMenuItem_actionPerformed(ActionEvent e)
   {
-    int start = 0, end = viewport.alignment.getWidth() - 1;
+    int start = 0, end = viewport.getAlignment().getWidth() - 1;
 
     SequenceI[] seqs;
     if (viewport.getSelectionGroup() != null)
     {
       seqs = viewport.getSelectionGroup().getSequencesAsArray(
-              viewport.hiddenRepSequences);
+              viewport.getHiddenRepSequences());
       start = viewport.getSelectionGroup().getStartRes();
       end = viewport.getSelectionGroup().getEndRes();
     }
     else
     {
-      seqs = viewport.alignment.getSequencesArray();
+      seqs = viewport.getAlignment().getSequencesArray();
     }
 
     // This is to maintain viewport position on first residue
     // of first sequence
-    SequenceI seq = viewport.alignment.getSequenceAt(0);
+    SequenceI seq = viewport.getAlignment().getSequenceAt(0);
     int startRes = seq.findPosition(viewport.startRes);
 
     addHistoryItem(new RemoveGapsCommand("Remove Gaps", seqs, start, end,
-            viewport.alignment));
+            viewport.getAlignment()));
 
     viewport.setStartRes(seq.findIndex(startRes) - 1);
 
@@ -2323,7 +2335,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   public void padGapsMenuitem_actionPerformed(ActionEvent e)
   {
-    viewport.padGaps = padGapsMenuitem.isSelected();
+    viewport.setPadGaps(padGapsMenuitem.isSelected());
     viewport.firePropertyChange("alignment", null, viewport.getAlignment()
             .getSequences());
   }
@@ -2391,13 +2403,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     if (!copyAnnotation)
     {
       // just remove all the current annotation except for the automatic stuff
-      newap.av.alignment.deleteAllGroups();
-      for (AlignmentAnnotation alan : newap.av.alignment
+      newap.av.getAlignment().deleteAllGroups();
+      for (AlignmentAnnotation alan : newap.av.getAlignment()
               .getAlignmentAnnotation())
       {
         if (!alan.autoCalculated)
         {
-          newap.av.alignment.deleteAnnotation(alan);
+          newap.av.getAlignment().deleteAnnotation(alan);
         }
         ;
       }
@@ -2581,7 +2593,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       // Hide everything by the current selection - this is a hack - we do the
       // invert and then hide
       // first check that there will be visible columns after the invert.
-      if ((viewport.colSel != null && viewport.colSel.getSelected() != null && viewport.colSel
+      if ((viewport.getColumnSelection() != null && viewport.getColumnSelection().getSelected() != null && viewport.getColumnSelection()
               .getSelected().size() > 0)
               || (sg != null && sg.getSize() > 0 && sg.getStartRes() <= sg
                       .getEndRes()))
@@ -2605,12 +2617,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     if (toggleSeqs)
     {
-      if (sg != null && sg.getSize() != viewport.alignment.getHeight())
+      if (sg != null && sg.getSize() != viewport.getAlignment().getHeight())
       {
         hideSelSequences_actionPerformed(null);
         hide = true;
       }
-      else if (!(toggleCols && viewport.colSel.getSelected().size() > 0))
+      else if (!(toggleCols && viewport.getColumnSelection().getSelected().size() > 0))
       {
         showAllSeqs_actionPerformed(null);
       }
@@ -2618,12 +2630,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
 
     if (toggleCols)
     {
-      if (viewport.colSel.getSelected().size() > 0)
+      if (viewport.getColumnSelection().getSelected().size() > 0)
       {
         hideSelColumns_actionPerformed(null);
         if (!toggleSeqs)
         {
-          viewport.selectionGroup = sg;
+          viewport.setSelectionGroup(sg);
         }
       }
       else if (!hide)
@@ -2832,7 +2844,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   {
     JEditorPane editPane = new JEditorPane("text/html", "");
     editPane.setEditable(false);
-    StringBuffer contents = new AlignmentProperties(viewport.alignment)
+    StringBuffer contents = new AlignmentProperties(viewport.getAlignment())
             .formatAsHtml();
     editPane.setText("<html>" + contents.toString() + "</html>");
     JInternalFrame frame = new JInternalFrame();
@@ -2899,8 +2911,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   public void clustalColour_actionPerformed(ActionEvent e)
   {
     changeColour(new ClustalxColourScheme(
-            viewport.alignment.getSequences(),
-            viewport.alignment.getWidth()));
+            viewport.getAlignment().getSequences(),
+            viewport.getAlignment().getWidth()));
   }
 
   /**
@@ -2998,7 +3010,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   /*
   public void covariationColour_actionPerformed(ActionEvent e)
   {
-    changeColour(new CovariationColourScheme(viewport.alignment.getAlignmentAnnotation()[0]));
+    changeColour(new CovariationColourScheme(viewport.getAlignment().getAlignmentAnnotation()[0]));
   }
   */
   public void annotationColour_actionPerformed(ActionEvent e)
@@ -3051,7 +3063,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       if (viewport.getConservationSelected())
       {
 
-        Alignment al = (Alignment) viewport.alignment;
+        Alignment al = (Alignment) viewport.getAlignment();
         Conservation c = new Conservation("All",
                 ResidueProperties.propHash, 3, al.getSequences(), 0,
                 al.getWidth() - 1);
@@ -3069,14 +3081,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         cs.setConservation(null);
       }
 
-      cs.setConsensus(viewport.hconsensus);
+      cs.setConsensus(viewport.getSequenceConsensusHash());
     }
 
     viewport.setGlobalColourScheme(cs);
 
     if (viewport.getColourAppliesToAllGroups())
     {
-      Vector groups = viewport.alignment.getGroups();
+      Vector groups = viewport.getAlignment().getGroups();
 
       for (int i = 0; i < groups.size(); i++)
       {
@@ -3091,7 +3103,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         if (cs instanceof ClustalxColourScheme)
         {
           sg.cs = new ClustalxColourScheme(
-                  sg.getSequences(viewport.hiddenRepSequences),
+                  sg.getSequences(viewport.getHiddenRepSequences()),
                   sg.getWidth());
         }
         else if (cs instanceof UserColourScheme)
@@ -3115,7 +3127,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           sg.cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus());
 
           sg.cs.setConsensus(AAFrequency.calculate(
-                  sg.getSequences(viewport.hiddenRepSequences),
+                  sg.getSequences(viewport.getHiddenRepSequences()),
                   sg.getStartRes(), sg.getEndRes() + 1));
         }
         else
@@ -3127,7 +3139,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         {
           Conservation c = new Conservation("Group",
                   ResidueProperties.propHash, 3,
-                  sg.getSequences(viewport.hiddenRepSequences),
+                  sg.getSequences(viewport.getHiddenRepSequences()),
                   sg.getStartRes(), sg.getEndRes() + 1);
           c.calculate();
           c.verdict(false, viewport.getConsPercGaps());
@@ -3157,7 +3169,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   protected void modifyPID_actionPerformed(ActionEvent e)
   {
     if (viewport.getAbovePIDThreshold()
-            && viewport.globalColourScheme != null)
+            && viewport.getGlobalColourScheme() != null)
     {
       SliderPanel.setPIDSliderSource(alignPanel,
               viewport.getGlobalColourScheme(), "Background");
@@ -3174,10 +3186,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   protected void modifyConservation_actionPerformed(ActionEvent e)
   {
     if (viewport.getConservationSelected()
-            && viewport.globalColourScheme != null)
+            && viewport.getGlobalColourScheme()!= null)
     {
       SliderPanel.setConservationSlider(alignPanel,
-              viewport.globalColourScheme, "Background");
+              viewport.getGlobalColourScheme(), "Background");
       SliderPanel.showConservationSlider();
     }
   }
@@ -3344,7 +3356,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     AlignmentSorter.sortByPID(viewport.getAlignment(), viewport
             .getAlignment().getSequenceAt(0), null);
     addHistoryItem(new OrderCommand("Pairwise Sort", oldOrder,
-            viewport.alignment));
+            viewport.getAlignment()));
     alignPanel.paintAlignment(true);
   }
 
@@ -3358,7 +3370,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   {
     SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
     AlignmentSorter.sortByID(viewport.getAlignment());
-    addHistoryItem(new OrderCommand("ID Sort", oldOrder, viewport.alignment));
+    addHistoryItem(new OrderCommand("ID Sort", oldOrder, viewport.getAlignment()));
     alignPanel.paintAlignment(true);
   }
 
@@ -3373,7 +3385,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
     AlignmentSorter.sortByLength(viewport.getAlignment());
     addHistoryItem(new OrderCommand("Length Sort", oldOrder,
-            viewport.alignment));
+            viewport.getAlignment()));
     alignPanel.paintAlignment(true);
   }
 
@@ -3388,7 +3400,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray();
     AlignmentSorter.sortByGroup(viewport.getAlignment());
     addHistoryItem(new OrderCommand("Group Sort", oldOrder,
-            viewport.alignment));
+            viewport.getAlignment()));
 
     alignPanel.paintAlignment(true);
   }
@@ -3569,7 +3581,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     else
     {
       // are the visible sequences aligned?
-      if (!viewport.alignment.isAligned(false))
+      if (!viewport.getAlignment().isAligned(false))
       {
         JOptionPane
                 .showMessageDialog(
@@ -3583,7 +3595,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         return;
       }
 
-      if (viewport.alignment.getHeight() < 2)
+      if (viewport.getAlignment().getHeight() < 2)
       {
         return;
       }
@@ -3627,7 +3639,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         AlignmentSorter.sortBy(viewport.getAlignment(), order);
 
         addHistoryItem(new OrderCommand(order.getName(), oldOrder,
-                viewport.alignment));
+                viewport.getAlignment()));
 
         alignPanel.paintAlignment(true);
       }
@@ -3656,7 +3668,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         AlignmentSorter.sortByAnnotationScore(scoreLabel,
                 viewport.getAlignment());// ,viewport.getSelectionGroup());
         addHistoryItem(new OrderCommand("Sort by " + scoreLabel, oldOrder,
-                viewport.alignment));
+                viewport.getAlignment()));
         alignPanel.paintAlignment(true);
       }
     });
@@ -3676,18 +3688,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
    */
   public void buildSortByAnnotationScoresMenu()
   {
-    if (viewport.alignment.getAlignmentAnnotation() == null)
+    if (viewport.getAlignment().getAlignmentAnnotation() == null)
     {
       return;
     }
 
-    if (viewport.alignment.getAlignmentAnnotation().hashCode() != _annotationScoreVectorHash)
+    if (viewport.getAlignment().getAlignmentAnnotation().hashCode() != _annotationScoreVectorHash)
     {
       sortByAnnotScore.removeAll();
       // almost certainly a quicker way to do this - but we keep it simple
       Hashtable scoreSorts = new Hashtable();
       AlignmentAnnotation aann[];
-      Enumeration sq = viewport.alignment.getSequences().elements();
+      Enumeration sq = viewport.getAlignment().getSequences().elements();
       while (sq.hasMoreElements())
       {
         aann = ((SequenceI) sq.nextElement()).getAnnotation();
@@ -3708,7 +3720,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       sortByAnnotScore.setVisible(scoreSorts.size() > 0);
       scoreSorts.clear();
 
-      _annotationScoreVectorHash = viewport.alignment
+      _annotationScoreVectorHash = viewport.getAlignment()
               .getAlignmentAnnotation().hashCode();
     }
   }
@@ -3777,7 +3789,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     if (undoname != null)
     {
       addHistoryItem(new OrderCommand(undoname, oldOrder,
-              viewport.alignment));
+              viewport.getAlignment()));
     }
     alignPanel.paintAlignment(true);
     return true;
@@ -3844,9 +3856,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     }
     // limit sequences - JBPNote in future - could spawn multiple prediction
     // jobs
-    // TODO: viewport.alignment.isAligned is a global state - the local
+    // TODO: viewport.getAlignment().isAligned is a global state - the local
     // selection may well be aligned - we preserve 2.0.8 behaviour for moment.
-    if (!viewport.alignment.isAligned(false))
+    if (!viewport.getAlignment().isAligned(false))
     {
       seqs.setSequences(new SeqCigar[]
       { seqs.getSequences()[0] });
@@ -4141,8 +4153,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
      * AlignFrame af = this; testAlView.addActionListener(new ActionListener() {
      * 
      * @Override public void actionPerformed(ActionEvent e) {
-     * jalview.datamodel.AlignmentView.testSelectionViews(af.viewport.alignment,
-     * af.viewport.colSel, af.viewport.selectionGroup); }
+     * jalview.datamodel.AlignmentView.testSelectionViews(af.viewport.getAlignment(),
+     * af.viewport.getColumnSelection(), af.viewport.selectionGroup); }
      * 
      * }); webService.add(testAlView);
      */
@@ -4268,7 +4280,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
         ths.setProgressBar("Searching for sequences from " + fsrc, sttime);
         try
         {
-          Alignment ds = ths.getViewport().alignment.getDataset(); // update
+          Alignment ds = ths.getViewport().getAlignment().getDataset(); // update
           // our local
           // dataset
           // reference
@@ -4390,8 +4402,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     {
       al = jalview.analysis.Dna.CdnaTranslate(selection, seqstring,
               viewport.getViewAsVisibleContigs(true), viewport
-                      .getGapCharacter(), viewport.alignment
-                      .getAlignmentAnnotation(), viewport.alignment
+                      .getGapCharacter(), viewport.getAlignment()
+                      .getAlignmentAnnotation(), viewport.getAlignment()
                       .getWidth(), viewport.getAlignment().getDataset());
     } catch (Exception ex)
     {
@@ -4429,7 +4441,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     try
     {
       featuresFile = new FeaturesFile(file, type)
-              .parse(viewport.alignment.getDataset(),
+              .parse(viewport.getAlignment().getDataset(),
                       alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureColours,
                       false, jalview.bin.Cache.getDefault(
                               "RELAXEDSEQIDMATCHING", false));
@@ -4679,7 +4691,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       // try to parse as annotation.
       boolean isAnnotation = (format == null || format
               .equalsIgnoreCase("PFAM")) ? new AnnotationFile()
-              .readAnnotationFile(viewport.alignment, file, protocol)
+              .readAnnotationFile(viewport.getAlignment(), file, protocol)
               : false;
 
       if (!isAnnotation)
@@ -4786,7 +4798,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   protected void extractScores_actionPerformed(ActionEvent e)
   {
     ParseProperties pp = new jalview.analysis.ParseProperties(
-            viewport.alignment);
+            viewport.getAlignment());
     // TODO: verify regex and introduce GUI dialog for version 2.5
     // if (pp.getScoresFromDescription("col", "score column ",
     // "\\W*([-+]?\\d*\\.?\\d*e?-?\\d*)\\W+([-+]?\\d*\\.?\\d*e?-?\\d*)",
@@ -5068,8 +5080,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
               viewport.getSequenceSelection(),
               viewport.getAlignmentView(true).getSequenceStrings(
                       viewport.getGapCharacter()),
-              viewport.alignment.getGroups());
-      viewport.alignment.deleteAllGroups();
+              viewport.getAlignment().getGroups());
+      viewport.getAlignment().deleteAllGroups();
       viewport.sequenceColours = null;
       viewport.setSelectionGroup(null);
       // set view properties for each group
@@ -5077,7 +5089,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
       {
         gps[g].setShowNonconserved(viewport.getShowUnconserved());
         gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo());
-        viewport.alignment.addGroup(gps[g]);
+        viewport.getAlignment().addGroup(gps[g]);
         Color col = new Color((int) (Math.random() * 255),
                 (int) (Math.random() * 255), (int) (Math.random() * 255));
         col = col.brighter();