Merge branch 'JAL-986_idwidthprefs' into develop
authorjprocter <jprocter@compbio.dundee.ac.uk>
Wed, 9 Nov 2011 17:07:37 +0000 (17:07 +0000)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Wed, 9 Nov 2011 17:07:37 +0000 (17:07 +0000)
1  2 
src/jalview/gui/AlignmentPanel.java

@@@ -1,6 -1,6 +1,6 @@@
  /*
   * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
 - * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
 + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
   * 
   * This file is part of Jalview.
   * 
@@@ -32,6 -32,7 +32,6 @@@ import jalview.bin.Cache
  import jalview.datamodel.*;
  import jalview.jbgui.*;
  import jalview.schemes.*;
 -import jalview.structure.SelectionSource;
  import jalview.structure.StructureSelectionManager;
  
  /**
@@@ -275,16 -276,16 +275,16 @@@ public class AlignmentPanel extends GAl
      // do we need to scroll the panel?
      // TODO: tons of nullpointereexceptions raised here.
      if (results != null && results.getSize() > 0 && av != null
 -            && av.alignment != null)
 +            && av.getAlignment() != null)
      {
 -      int seqIndex = av.alignment.findIndex(results);
 +      int seqIndex = av.getAlignment().findIndex(results);
        if (seqIndex == -1)
        {
          return false;
        }
 -      SequenceI seq = av.alignment.getSequenceAt(seqIndex);
 +      SequenceI seq = av.getAlignment().getSequenceAt(seqIndex);
        
 -      int[] r=results.getResults(seq, 0, av.alignment.getWidth());
 +      int[] r=results.getResults(seq, 0, av.getAlignment().getWidth());
        if (r == null)
        {
          return false;
        {
          return false;
        }
 -      if (av.hasHiddenColumns)
 +      if (av.hasHiddenColumns())
        {
          start = av.getColumnSelection().findColumnPosition(start);
          end = av.getColumnSelection().findColumnPosition(end);
          if (start==end)
          {
 -          if (!av.colSel.isVisible(r[0]))
 +          if (!av.getColumnSelection().isVisible(r[0]))
            {
              // don't scroll - position isn't visible
              return false;
    public void setScrollValues(int x, int y)
    {
      // System.err.println("Scroll to "+x+","+y);
 -    if (av == null || av.alignment == null)
 +    if (av == null || av.getAlignment() == null)
      {
        return;
      }
 -    int width = av.alignment.getWidth();
 -    int height = av.alignment.getHeight();
 +    int width = av.getAlignment().getWidth();
 +    int height = av.getAlignment().getHeight();
  
 -    if (av.hasHiddenColumns)
 +    if (av.hasHiddenColumns())
      {
        width = av.getColumnSelection().findColumnPosition(width);
      }
  
      if (av.getWrapAlignment())
      {
 -      int maxwidth = av.alignment.getWidth();
 +      int maxwidth = av.getAlignment().getWidth();
  
 -      if (av.hasHiddenColumns)
 +      if (av.hasHiddenColumns())
        {
          maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;
        }
        endSeq = av.getAlignment().getHeight();
      }
  
 -    int pagesHigh = ((av.alignment.getHeight() / totalSeq) + 1) * pheight;
 +    int pagesHigh = ((av.getAlignment().getHeight() / totalSeq) + 1) * pheight;
  
      if (av.showAnnotation)
      {
      pg.translate(idWidth, 0);
      seqPanel.seqCanvas.drawPanel(pg, startRes, endRes, startSeq, endSeq, 0);
  
 -    if (av.showAnnotation && (endSeq == av.alignment.getHeight()))
 +    if (av.showAnnotation && (endSeq == av.getAlignment().getHeight()))
      {
        pg.translate(-idWidth - 3, (endSeq - startSeq) * av.charHeight + 3);
        alabels.drawComponent((Graphics2D) pg, idWidth);
        pg.translate(idWidth + 3, 0);
 -      annotationPanel.drawComponent((Graphics2D) pg, startRes, endRes + 1);
 +      annotationPanel.renderer.drawComponent(annotationPanel, av, (Graphics2D) pg, -1, startRes, endRes + 1);
      }
  
      return Printable.PAGE_EXISTS;
  
      int idWidth = getVisibleIdWidth(false);
  
 -    int maxwidth = av.alignment.getWidth();
 -    if (av.hasHiddenColumns)
 +    int maxwidth = av.getAlignment().getWidth();
 +    if (av.hasHiddenColumns())
      {
        maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;
      }
  
      do
      {
 -      for (int i = 0; i < av.alignment.getHeight(); i++)
 +      for (int i = 0; i < av.getAlignment().getHeight(); i++)
        {
          pg.setFont(idPanel.idCanvas.idfont);
 -        SequenceI s = av.alignment.getSequenceAt(i);
 +        SequenceI s = av.getAlignment().getSequenceAt(i);
          String string = s.getDisplayId(av.getShowJVSuffix());
          int xPos = 0;
          if (av.rightAlignIds)
  
    void makeAlignmentImage(int type, File file)
    {
 -    int maxwidth = av.alignment.getWidth();
 -    if (av.hasHiddenColumns)
 +    int maxwidth = av.getAlignment().getWidth();
 +    if (av.hasHiddenColumns())
      {
        maxwidth = av.getColumnSelection().findColumnPosition(maxwidth);
      }
  
 -    int height = ((av.alignment.getHeight() + 1) * av.charHeight)
 +    int height = ((av.getAlignment().getHeight() + 1) * av.charHeight)
              + scalePanel.getHeight();
      int width = getVisibleIdWidth(false) + (maxwidth * av.charWidth);
  
    {
      // /////ONLY WORKS WITH NONE WRAPPED ALIGNMENTS
      // ////////////////////////////////////////////
-     int idWidth = getVisibleIdWidth(true);
+     int idWidth = getVisibleIdWidth(false);
      FontMetrics fm = getFontMetrics(av.getFont());
      int scaleHeight = av.charHeight + fm.getDescent();
  
      {
        try
        {
 -        int s, sSize = av.alignment.getHeight(), res, alwidth = av.alignment
 +        int s, sSize = av.getAlignment().getHeight(), res, alwidth = av.getAlignment()
                  .getWidth(), g, gSize, f, fSize, sy;
          StringBuffer text = new StringBuffer();
          PrintWriter out = new PrintWriter(new FileWriter(imgMapFile));
          {
            sy = s * av.charHeight + scaleHeight;
  
 -          SequenceI seq = av.alignment.getSequenceAt(s);
 +          SequenceI seq = av.getAlignment().getSequenceAt(s);
            SequenceFeature[] features = seq.getDatasetSequence()
                    .getSequenceFeatures();
 -          SequenceGroup[] groups = av.alignment.findAllGroups(seq);
 +          SequenceGroup[] groups = av.getAlignment().findAllGroups(seq);
            for (res = 0; res < alwidth; res++)
            {
              text = new StringBuffer();
              Object obj = null;
 -            if (av.alignment.isNucleotide())
 +            if (av.getAlignment().isNucleotide())
              {
                obj = ResidueProperties.nucleotideName.get(seq.getCharAt(res)
                        + "");
      int cHeight = av.getAlignment().getHeight() * av.charHeight + hgap
              + annotationHeight;
  
 -    int maxwidth = av.alignment.getWidth();
 -    if (av.hasHiddenColumns)
 +    int maxwidth = av.getAlignment().getWidth();
 +    if (av.hasHiddenColumns())
      {
        maxwidth = av.getColumnSelection().findColumnPosition(maxwidth) - 1;
      }
        jalview.structure.StructureSelectionManager ssm = av.getStructureSelectionManager();
        ssm.removeStructureViewerListener(seqPanel, null);
        ssm.removeSelectionListener(seqPanel);
 -      av.alignment = null;
 +      av.setAlignment(null);
        av = null;
      }
      else
      boolean cons = av.isShowGroupConsensus();
      boolean showprf = av.isShowSequenceLogo();
      boolean showConsHist = av.isShowConsensusHistogram();
 +    boolean normLogo = av.isNormaliseSequenceLogo();
  
      boolean sortg = true;
  
      // remove old automatic annotation
      // add any new annotation
  
 -    Vector gr = av.alignment.getGroups(); // OrderedBy(av.alignment.getSequencesArray());
 +    Vector gr = av.getAlignment().getGroups(); // OrderedBy(av.getAlignment().getSequencesArray());
      // intersect alignment annotation with alignment groups
  
 -    AlignmentAnnotation[] aan = av.alignment.getAlignmentAnnotation();
 +    AlignmentAnnotation[] aan = av.getAlignment().getAlignmentAnnotation();
      Hashtable oldrfs = new Hashtable();
      if (aan != null)
      {
          if (aan[an].autoCalculated && aan[an].groupRef != null)
          {
            oldrfs.put(aan[an].groupRef, aan[an].groupRef);
 -          av.alignment.deleteAnnotation(aan[an]);
 +          av.getAlignment().deleteAnnotation(aan[an]);
            aan[an] = null;
          }
        }
            // set defaults for this group's conservation/consensus
            sg.setshowSequenceLogo(showprf);
            sg.setShowConsensusHistogram(showConsHist);
 +          sg.setNormaliseSequenceLogo(normLogo);
          }
          if (conv)
          {
            updateCalcs = true;
 -          av.alignment.addAnnotation(sg.getConservationRow(), 0);
 +          av.getAlignment().addAnnotation(sg.getConservationRow(), 0);
          }
          if (cons)
          {
            updateCalcs = true;
 -          av.alignment.addAnnotation(sg.getConsensus(), 0);
 +          av.getAlignment().addAnnotation(sg.getConsensus(), 0);
          }
          // refresh the annotation rows
          if (updateCalcs)
    @Override
    public AlignmentI getAlignment()
    {
 -    return av.alignment;
 +    return av.getAlignment();
    }
  
    /**
    {
      return av.getStructureSelectionManager();
    }
 +
 +  @Override
 +  public void raiseOOMWarning(String string, OutOfMemoryError error)
 +  {
 +    new OOMWarning(string,  error, this);
 +  }
  }