X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=f1874b161a5a82aa55297c1739c6d456e1950625;hb=00f6edbbdddf16f77142e98e375363675be807fe;hp=75729c330775e2b93ab5067126233e926b726e18;hpb=030e9e7ab937faceadddd79d73eb56007d075625;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index 75729c3..f1874b1 100755 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -51,40 +51,16 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene annotationScroller.setViewportView(annotationPanel); annotationSpaceFillerHolder.add(alabels, BorderLayout.CENTER); - Dimension d = calculateIdWidth(); - d.setSize( d.width+4, d.height); - idPanel.idCanvas.setPreferredSize( d ); - hscrollFillerPanel.setPreferredSize( d ); + fontChanged(); scalePanelHolder.add(scalePanel, BorderLayout.CENTER); seqPanelHolder.add(seqPanel, BorderLayout.CENTER); - - if(seqPanel.seqCanvas.getWidth()==0) - javax.swing.SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - setScrollValues(0,0); - Dimension d = calculateIdWidth(); - d.setSize( d.width+4, d.height); - idPanel.idCanvas.setPreferredSize( d ); - RefreshPanels(); - } - }); - + setScrollValues(0, 0); hscroll.addAdjustmentListener(this); vscroll.addAdjustmentListener(this); - addComponentListener(new ComponentAdapter() - { - public void componentResized(ComponentEvent evt) - { - RefreshPanels(); - } - }); - setFocusable(true); addKeyListener(new KeyAdapter() { @@ -94,7 +70,7 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene { case 27: // escape key av.setSelectionGroup(null); - RefreshPanels(); + repaint(); break; case KeyEvent.VK_X: if(evt.isControlDown()) @@ -127,6 +103,20 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene }); } + public void fontChanged() + { + // set idCanvas bufferedImage to null + // to prevent drawing old image + idPanel.idCanvas.gg = null; + annotationPanel.adjustPanelHeight(); + Dimension d = calculateIdWidth(); + d.setSize(d.width + 4, d.height); + idPanel.idCanvas.setPreferredSize(d); + hscrollFillerPanel.setPreferredSize(d); + repaint(); + } + + Dimension calculateIdWidth() { Graphics g = this.getGraphics(); @@ -156,6 +146,20 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene i++; } + // Also check annotation label widths + i=0; + if(al.getAlignmentAnnotation()!=null) + { + fm = g.getFontMetrics(alabels.getFont()); + while (i < al.getAlignmentAnnotation().length) + { + String label = al.getAlignmentAnnotation()[i].label; + if (fm.stringWidth(label) > idWidth) + idWidth = fm.stringWidth(label); + i++; + } + } + return new Dimension(idWidth, 12); } @@ -190,14 +194,6 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene { annotationSpaceFillerHolder.setVisible(b); annotationScroller.setVisible(b); - javax.swing.SwingUtilities.invokeLater(new Runnable() - { - public void run() - { - RefreshPanels(); - } - }); - } @@ -212,7 +208,7 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene annotationSpaceFillerHolder.setVisible(!wrap); idSpaceFillerPanel1.setVisible(!wrap); - RefreshPanels(); + repaint(); } @@ -230,43 +226,17 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene al.getWidth() ); c.calculate(); - c.verdict(false, 100); + c.verdict(false, av.ConsPercGaps); ConservationColourScheme ccs = new ConservationColourScheme(c, cs); av.setGlobalColourScheme( ccs ); } - RefreshPanels(); - } - - - public void RefreshPanels() - { - requestFocus(); - invalidate(); - - Dimension d = idPanel.idCanvas.getPreferredSize(); - idPanelHolder.setPreferredSize(d); - hscrollFillerPanel.setPreferredSize(new Dimension(d.width, 12)); - - if (av.getWrapAlignment()) - { - int max = av.alignment.getWidth() / - (seqPanel.seqCanvas.getWidth() / av.charWidth) + 1; - vscroll.setValues(0, 1, 0, max); - } - else - { - if (overviewPanel != null) - overviewPanel.updateOverviewImage(); - setScrollValues(av.getStartRes(), av.getStartSeq()); - } - - validate(); repaint(); } + int hextent = 0; int vextent = 0; @@ -315,6 +285,8 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene public void setScrollValues(int x, int y) { + av.setEndRes(x + seqPanel.seqCanvas.getWidth()/av.getCharWidth()-1); + hextent = seqPanel.seqCanvas.getWidth()/av.charWidth; vextent = seqPanel.seqCanvas.getHeight()/av.charHeight; @@ -338,6 +310,8 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene hscroll.setValues(x,hextent,0,av.getAlignment().getWidth()); vscroll.setValues(y,vextent,0,av.getAlignment().getHeight() ); + + } @@ -358,7 +332,9 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene int offy = vscroll.getValue(); if (av.getWrapAlignment()) { - av.setStartRes( vscroll.getValue() * av.getChunkWidth()); + int rowSize = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()); + av.setStartRes( vscroll.getValue() * rowSize ); + av.setEndRes( (vscroll.getValue()+1) * rowSize ); } else { @@ -367,7 +343,6 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene } } - if(overviewPanel!=null) overviewPanel.setBoxPosition(); @@ -375,9 +350,10 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene repaint(); else { + idPanel.idCanvas.fastPaint(av.getStartSeq() - oldY); seqPanel.seqCanvas.fastPaint(av.getStartRes() - oldX, av.getStartSeq() - oldY); - idPanel.idCanvas.fastPaint(av.getStartSeq() - oldY); + scalePanel.repaint(); if (av.getShowAnnotation()) annotationPanel.fastPaint(av.getStartRes() - oldX); @@ -385,6 +361,33 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene } + + public void paintComponent(Graphics g) + { + invalidate(); + Dimension d = idPanel.idCanvas.getPreferredSize(); + idPanelHolder.setPreferredSize(d); + hscrollFillerPanel.setPreferredSize(new Dimension(d.width, 12)); + validate(); + + if (av.getWrapAlignment()) + { + int max = av.alignment.getWidth() / seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()); + vscroll.setMaximum(max); + vscroll.setUnitIncrement(1); + vscroll.setVisibleAmount(1); + } + else + { + if (overviewPanel != null) + overviewPanel.updateOverviewImage(); + setScrollValues(av.getStartRes(), av.getStartSeq()); + } + + + + } + public int print(Graphics pg, PageFormat pf, int pi) throws PrinterException { pg.translate((int)pf.getImageableX(), (int)pf.getImageableY()); @@ -515,13 +518,14 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene //////////////// // Draw the ids - pg.setClip(0,0,pwidth, noChunksOnPage*chunkHeight); +// pg.setClip(0,0,pwidth, noChunksOnPage*chunkHeight); - int row = pi*noChunksOnPage; pg.setColor(Color.black); - for(int ypos=2*av.charHeight; - ypos <= pheight && row*chunkWidth