X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=d912b2942dcdc86e7fbb909dc71940e4c8fd843f;hb=dd74fc4938723fe5ec48d4e5fdcfbe58ac42a48d;hp=bd87bb2d7d7718a3928fb26b0c9d09d1607aa853;hpb=f3bc67915e61855d87866b4a614fe7a953813408;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index bd87bb2..d912b29 100755 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -27,10 +27,10 @@ import jalview.schemes.*; import java.awt.*; import java.awt.event.*; import java.awt.print.*; - import java.io.*; - import javax.swing.*; +import java.beans.*; + /** @@ -96,11 +96,39 @@ public class AlignmentPanel extends GAlignmentPanel hscroll.addAdjustmentListener(this); vscroll.addAdjustmentListener(this); + final AlignmentPanel ap = this; + av.addPropertyChangeListener(new PropertyChangeListener() + { + public void propertyChange(PropertyChangeEvent evt) + { + if (evt.getPropertyName().equals("alignment")) + { + PaintRefresher.Refresh(ap, + av.getSequenceSetId(), + true, + true); + alignmentChanged(); + } + } + }); adjustAnnotationHeight(); } + public void alignmentChanged() + { + av.alignmentChanged(this); + + if (overviewPanel != null) + overviewPanel.updateOverviewImage(); + + alignFrame.updateEditMenuBar(); + + repaint(); + } + + /** * DOCUMENT ME! @@ -285,7 +313,6 @@ public class AlignmentPanel extends GAlignmentPanel annotationSpaceFillerHolder.getWidth(), height)); - annotationPanel.repaint(); repaint(); } @@ -684,21 +711,21 @@ public class AlignmentPanel extends GAlignmentPanel Color currentColor = null; Color currentTextColor = null; - pg.setFont(new Font(av.getFont().getName(), - Font.ITALIC, - av.getFont().getSize())); + pg.setFont(idPanel.idCanvas.idfont); + + SequenceI seq; for (int i = startSeq; i < endSeq; i++) { + seq = av.getAlignment().getSequenceAt(i); if ( (av.getSelectionGroup() != null) && - av.getSelectionGroup().getSequences(false).contains( - av.getAlignment().getSequenceAt(i))) + av.getSelectionGroup().getSequences(null).contains(seq)) { currentColor = Color.gray; currentTextColor = Color.black; } else { - currentColor = av.getAlignment().getSequenceAt(i).getColor(); + currentColor = av.getSequenceColour(seq); currentTextColor = Color.black; } @@ -708,10 +735,17 @@ public class AlignmentPanel extends GAlignmentPanel pg.setColor(currentTextColor); - String string = av.getAlignment().getSequenceAt(i).getDisplayId - ( av.getShowJVSuffix()); + int xPos = 0; + if (av.rightAlignIds) + { + fm = pg.getFontMetrics(); + xPos = idWidth - fm.stringWidth( + seq.getDisplayId(av.getShowJVSuffix()) + ) - 4; + } - pg.drawString(string, 0, + pg.drawString(seq.getDisplayId( av.getShowJVSuffix()), + xPos, ( ( (i - startSeq) * av.charHeight) + av.getCharHeight()) - (av.getCharHeight() / 5)); } @@ -792,18 +826,23 @@ public class AlignmentPanel extends GAlignmentPanel pg.setClip(0, pi * pheight, pwidth, pheight); int ypos = hgap; - Font italic = new Font(av.getFont().getName(), Font.ITALIC, - av.getFont().getSize()); - pg.setFont(italic); + + do { for (int i = 0; i < av.alignment.getHeight(); i++) { + pg.setFont(idPanel.idCanvas.idfont); SequenceI s = av.alignment.getSequenceAt(i); String string = s.getDisplayId( av.getShowJVSuffix()); - - pg.drawString(string, 0, + int xPos = 0; + if (av.rightAlignIds) + { + FontMetrics fm = pg.getFontMetrics(); + xPos = idWidth - fm.stringWidth( string ) - 4; + } + pg.drawString(string, xPos, ( (i * av.charHeight) + ypos + av.charHeight) - (av.charHeight / 5)); } @@ -815,7 +854,6 @@ public class AlignmentPanel extends GAlignmentPanel pg.setFont(av.getFont()); labels.drawComponent(pg, idWidth); - pg.setFont(italic); pg.translate(+3, -ypos - (av.getAlignment().getHeight() * av.charHeight)); @@ -862,7 +900,10 @@ public class AlignmentPanel extends GAlignmentPanel if (System.getProperty("java.awt.headless") != null && System.getProperty("java.awt.headless").equals("true")) { - width = alignFrame.getWidth() - 22; + width = alignFrame.getWidth() + - vscroll.getPreferredSize().width + - alignFrame.getInsets().left + - alignFrame.getInsets().right; } else width = seqPanel.getWidth() + getVisibleIdWidth(); @@ -873,6 +914,9 @@ public class AlignmentPanel extends GAlignmentPanel height += annotationPanel.adjustPanelHeight() + 3; } + try + { + jalview.util.ImageMaker im; if(type==jalview.util.ImageMaker.PNG) im = new jalview.util.ImageMaker(this, @@ -885,8 +929,6 @@ public class AlignmentPanel extends GAlignmentPanel "Create EPS file from alignment", width, height, file, alignFrame.getTitle() ); - try - { if (av.getWrapAlignment()) { if(im.getGraphics()!=null) @@ -1071,11 +1113,14 @@ public class AlignmentPanel extends GAlignmentPanel { int seqPanelWidth = seqPanel.seqCanvas.getWidth(); - //If headless, seqPanel will have 0 width if (System.getProperty("java.awt.headless") != null - && System.getProperty("java.awt.headless").equals("true")) + && System.getProperty("java.awt.headless").equals("true")) { - seqPanelWidth = alignFrame.getWidth() - getVisibleIdWidth(); + seqPanelWidth = alignFrame.getWidth() + - getVisibleIdWidth() + - vscroll.getPreferredSize().width + - alignFrame.getInsets().left + - alignFrame.getInsets().right; } int chunkWidth = seqPanel.seqCanvas.getWrappedCanvasWidth(