X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=53f65d8bdd2e2baf0b664a6dd550d248878d5701;hb=b1081eceb6369009b51c960cb2c77c5b49546cc3;hp=df0459fdda52a9b2bba7c671d8aa5432eaf0b369;hpb=0365a951ffb7cdab64e2f0872b4b719c910527ad;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index df0459f..53f65d8 100755 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -2,19 +2,21 @@ package jalview.gui; import jalview.jbgui.GAlignmentPanel; import java.awt.*; +import java.awt.image.*; import java.awt.event.*; -import java.io.*; +import java.awt.print.*; +import javax.swing.*; -public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListener +public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListener, Printable { AlignViewport av; OverviewPanel overviewPanel; - public SeqPanel seqPanel; - public IdPanel idPanel; + SeqPanel seqPanel; + IdPanel idPanel; public AlignFrame alignFrame; - public ScalePanel scalePanel; - public ScorePanel scorePanel; + ScalePanel scalePanel; + ScorePanel scorePanel; public boolean groupEdit = false; @@ -27,7 +29,6 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene scalePanel = new ScalePanel(av); scorePanel = new ScorePanel(av); - idPanelHolder.add(idPanel, BorderLayout.CENTER); idPanel.addNotify(); scalePanelHolder.add(scalePanel, BorderLayout.CENTER); @@ -43,8 +44,7 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene { public void componentResized(ComponentEvent evt) { - // if(!initialising) - RefreshPanels(); + RefreshPanels(); } }); @@ -58,7 +58,7 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene public void selectAll(boolean flag) { int i = 0; if (flag) { - while (i < seqPanel.align.getHeight()) { + while (i < av.getAlignment().getHeight()) { if (! av.getSelection().contains(av.getAlignment().getSequenceAt(i))) { av.getSelection().addElement(av.getAlignment().getSequenceAt(i)); } @@ -87,9 +87,22 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene RefreshPanels(); } - public void setColourScheme(jalview.schemes.ColourSchemeI cs) + public void setWrapAlignment(boolean wrap) { - seqPanel.setColourScheme(cs); + + scalePanelHolder.setVisible(!wrap); + scorePanelHolder.setVisible(!wrap); + + hscroll.setVisible(!wrap); + idSpaceFillerPanel.setVisible(!wrap); + idSpaceFillerPanel1.setVisible(!wrap); + + } + + + public void setColourScheme(jalview.schemes.ColourSchemeI cs, boolean conservation) + { + seqPanel.setColourScheme(cs, conservation); if(overviewPanel!=null) overviewPanel.updateOverviewImage(); } @@ -97,12 +110,6 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene public void RefreshPanels() { - - /* try{ - ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("dump.dat")); - out.writeObject( (jalview.datamodel.Alignment)av.getAlignment() ); - }catch(IOException ex){ex.printStackTrace();}*/ - invalidate(); validate(); idPanel.idCanvas.paintFlag = true; @@ -171,5 +178,110 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene } + public int print(Graphics g, PageFormat pf, int pi) throws PrinterException + { + + int pwidth = (int)pf.getImageableWidth(); + int pheight = (int)pf.getImageableHeight(); + int idWidth = (int)idPanel.idCanvas.getLabelWidth().getWidth(); + + BufferedImage printImage = new BufferedImage(pwidth,pheight,BufferedImage.TYPE_INT_RGB); + Graphics pg = printImage.getGraphics(); + pg.setColor(Color.white); + pg.fillRect(0,0,pwidth, pheight); + pg.setFont( av.getFont() ); + + //////////////////////////////////// + /// How many sequences and residues can we fit on a printable page? + int totalRes = (int)((pwidth - idWidth)/av.getCharWidth()); + int totalSeq = (int)((pheight - 30)/av.getCharHeight())-1; + int pagesWide = av.getAlignment().getWidth() / totalRes +1; + int pagesHigh = av.getAlignment().getHeight() / totalSeq +1; + + if (pi >= pagesWide*pagesHigh) + return Printable.NO_SUCH_PAGE; + + ///////////////////////////// + /// Only print these sequences and residues on this page + int startRes, endRes, startSeq, endSeq; + startRes = (pi % pagesWide) * totalRes; + endRes = startRes + totalRes-1; + if(endRes>av.getAlignment().getWidth()) + endRes = av.getAlignment().getWidth(); + + startSeq = (pi / pagesWide) * totalSeq; + endSeq = startSeq + totalSeq; + if(endSeq > av.getAlignment().getHeight()) + endSeq = av.getAlignment().getHeight(); + + + //////////////// + //draw Scale + pg.translate(idWidth,0); + scalePanel.scaleCanvas.drawScale(pg, startRes, endRes, pwidth-idWidth); + + pg.translate(-idWidth, 30); + //////////////// + // Draw the ids + Color currentColor=null; + Color currentTextColor=null; + for(int i=startSeq; i