X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=997966fa97e8e0fc17bc886afcfced1ff2b4512f;hb=ff2e8d0b23e91c4d7f19dd1922e48e5a718ee0f1;hp=296bb80cd7224af3030611f3d705c60ab23fe64c;hpb=e61e2b53cc88a6dd4dd5abe857b19172f253ba11;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index 296bb80..997966f 100755 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -12,6 +12,9 @@ import com.sun.image.codec.jpeg.*; import java.io.*; import java.awt.image.*; +import org.jibble.epsgraphics.*; +import javax.imageio.*; + public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListener, Printable { @@ -31,30 +34,21 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene this.av = av; seqPanel = new SeqPanel (av, this); idPanel = new IdPanel (av, this); + scalePanel = new ScalePanel(av, this); scorePanel = new ScorePanel(av); ssPanel = new SecondaryStructurePanel(av); secondaryPanelHolder.add(ssPanel, BorderLayout.CENTER); - idPanelHolder.add(idPanel, BorderLayout.CENTER); - idPanel.addNotify(); - javax.swing.JFrame f = new javax.swing.JFrame(); - f.addNotify(); - FontMetrics fm = f.getGraphics().getFontMetrics(av.font); - AlignmentI al = av.getAlignment(); + idPanelHolder.add(idPanel, BorderLayout.CENTER); + IdwidthAdjuster iap = new IdwidthAdjuster(this); + idSpaceFillerPanel1.add(iap, BorderLayout.CENTER); - int i = 0; - int idWidth = 0; - while (i < al.getHeight() && al.getSequenceAt(i) != null) - { - SequenceI s = al.getSequenceAt(i); - String str = s.getDisplayId(); - if (fm.stringWidth(str) > idWidth) - idWidth = fm.stringWidth(str); - i++; - } - hscrollFillerPanel.setPreferredSize(new Dimension(idWidth, 12)); + Dimension d = calculateIdWidth(); + d.setSize( d.width+4, d.height); + idPanel.idCanvas.setPreferredSize( d ); + hscrollFillerPanel.setPreferredSize( d ); scalePanelHolder.add(scalePanel, BorderLayout.CENTER); scorePanelHolder.add(scorePanel, BorderLayout.CENTER); @@ -113,6 +107,38 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene }); } + Dimension calculateIdWidth() + { + Graphics g = this.getGraphics(); + if(g==null) + { + javax.swing.JFrame f = new javax.swing.JFrame(); + f.addNotify(); + g = f.getGraphics(); + } + + FontMetrics fm = g.getFontMetrics(av.font); + AlignmentI al = av.getAlignment(); + + int i = 0; + int idWidth = 0; + String id; + while (i < al.getHeight() && al.getSequenceAt(i) != null) + { + SequenceI s = al.getSequenceAt(i); + if(av.getShowFullId()) + id = s.getDisplayId(); + else + id = s.getName(); + + if (fm.stringWidth(id) > idWidth) + idWidth = fm.stringWidth(id); + i++; + } + + return new Dimension(idWidth, 12); + } + public void highlightSearchResults(int [] results) { @@ -340,7 +366,7 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene public int printUnwrapped(Graphics pg, int pwidth, int pheight, int pi) throws PrinterException { - int idWidth = (int)idPanel.idCanvas.getLabelWidth().getWidth(); + int idWidth = calculateIdWidth().width; pg.setColor(Color.white); @@ -373,17 +399,17 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene //////////////// //draw Scale - pg.translate(idWidth,0); + pg.translate(30,0); scalePanel.drawScale(pg, startRes, endRes, pwidth-idWidth); - pg.translate(-idWidth, 30); + pg.translate(-30, 30); //////////////// // Draw the ids Color currentColor=null; Color currentTextColor=null; for(int i=startSeq; i