X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=9d6467a05ac5b2dede3fd9101bedc1d8a0294c75;hb=e83f899e879e04af8f9baa9a495e2918a67f6a4f;hp=33b86651dde4deced7d41e611158f823453d46a2;hpb=4679c58949f642fd64e9726ec5bf2c3f338a0861;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index 33b8665..9d6467a 100755 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -1,11 +1,12 @@ package jalview.gui; import jalview.jbgui.GAlignmentPanel; +import jalview.schemes.*; +import jalview.analysis.*; +import jalview.datamodel.*; import java.awt.*; -import java.awt.image.*; import java.awt.event.*; import java.awt.print.*; -import javax.swing.*; public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListener, Printable { @@ -14,19 +15,22 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene OverviewPanel overviewPanel; SeqPanel seqPanel; IdPanel idPanel; + SecondaryStructurePanel ssPanel; public AlignFrame alignFrame; ScalePanel scalePanel; ScorePanel scorePanel; - public AlignmentPanel(AlignFrame af, AlignViewport av) + public AlignmentPanel(AlignFrame af, final AlignViewport av) { alignFrame = af; this.av = av; seqPanel = new SeqPanel (av, this); idPanel = new IdPanel (av, this); - scalePanel = new ScalePanel(av); + 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(); scalePanelHolder.add(scalePanel, BorderLayout.CENTER); @@ -44,6 +48,24 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene RefreshPanels(); } }); + + hscroll.setFocusable(false); + vscroll.setFocusable(false); + setFocusable(true); + + addKeyListener(new KeyAdapter() + { + public void keyPressed(KeyEvent evt) + { + if(evt.getKeyCode()==27) + { + av.setRubberbandGroup(null); + RefreshPanels(); + } + } + }); + + } public void highlightSearchResults(int [] results) @@ -74,8 +96,17 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene public void setGraphPanelVisible(boolean b) { - scorePanelHolder.setVisible(b); idSpaceFillerPanel.setVisible(b); + scorePanelHolder.setVisible(b); + + RefreshPanels(); + // bit annoying to call this twice, can you do better? + RefreshPanels(); + } + + public void setSecondaryStructureVisible(boolean b) + { + secondaryPanelHolder.setVisible(b); RefreshPanels(); } @@ -90,27 +121,44 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene } - public void setColourScheme(jalview.schemes.ColourSchemeI cs, boolean conservation) + public void setColourScheme() { - seqPanel.setColourScheme(cs, conservation); - if(overviewPanel!=null) - overviewPanel.updateOverviewImage(); - } + ColourSchemeI cs = av.getGlobalColourScheme(); + if(av.getConservationSelected()) + { + + Alignment al = (Alignment)av.getAlignment(); + Conservation c = new Conservation("All", + ResidueProperties.propHash, 3, al.getSequences(), 0, + al.getWidth() ); + + c.calculate(); + c.verdict(false, 100); + ConservationColourScheme ccs = new ConservationColourScheme(c, cs); + + av.setGlobalColourScheme( ccs ); + + } + + RefreshPanels(); + } public void RefreshPanels() { + requestFocus(); invalidate(); seqPanel.seqCanvas.paintFlag = true; idPanel.idCanvas.paintFlag = true; idPanelHolder.setPreferredSize( idPanel.idCanvas.getPreferredSize() ); setScrollValues(av.getStartRes(), av.getStartSeq()); av.getConsensus(true); - repaint(); - validate(); if(overviewPanel!=null) overviewPanel.updateOverviewImage(); + validate(); + repaint(); + } int hextent = 0; @@ -118,7 +166,7 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene public void setScrollValues(int x, int y) { - hextent = (int)(seqPanel.seqCanvas.getWidth()/av.getCharWidth()); + hextent = seqPanel.seqCanvas.getWidth()/av.getCharWidth(); vextent = seqPanel.seqCanvas.getHeight()/av.getCharHeight(); if(hextent+x > av.getAlignment().getWidth()) @@ -135,6 +183,8 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene hscroll.setValues(x,hextent,0,av.getAlignment().getWidth()); vscroll.setValues(y,vextent,0,av.getAlignment().getHeight() ); + + repaint(); } @@ -147,7 +197,7 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene { int x = hscroll.getValue(); av.setStartRes(x); - av.setEndRes(x + (int)(seqPanel.seqCanvas.getWidth()/av.getCharWidth()-1)); + av.setEndRes(x + seqPanel.seqCanvas.getWidth()/av.getCharWidth()-1); } if (evt.getSource() == vscroll) @@ -175,15 +225,13 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene 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 totalRes = (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; @@ -230,7 +278,7 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene pg.setColor(currentColor); pg.fillRect(0, jalview.analysis.AlignmentUtil.getPixelHeight(startSeq, i, av.getCharHeight()), - getWidth(), + idWidth, av.getCharHeight()); pg.setColor(currentTextColor); @@ -242,9 +290,13 @@ public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListene // draw main sequence panel pg.translate(idWidth,0); + pg.setClip(0,0,pwidth-idWidth, pheight); seqPanel.seqCanvas.drawPanel(pg,startRes,endRes,startSeq,endSeq,startRes,startSeq,0); return Printable.PAGE_EXISTS; } + } + +