X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FOverviewPanel.java;h=3ef2936e21b3302683caaf55e2b8bb9d3b161c21;hb=bfd33db2f5cd158bc46550f11715b438562f4f50;hp=0d3f05843153687745eb48b37c67c8f6f9638f54;hpb=d559b47886de6427219011e6e355320a0babd757;p=jalview.git diff --git a/src/jalview/appletgui/OverviewPanel.java b/src/jalview/appletgui/OverviewPanel.java index 0d3f058..3ef2936 100755 --- a/src/jalview/appletgui/OverviewPanel.java +++ b/src/jalview/appletgui/OverviewPanel.java @@ -20,6 +20,8 @@ */ package jalview.appletgui; +import jalview.datamodel.SequenceI; +import jalview.renderer.seqfeatures.FeatureColourFinder; import jalview.viewmodel.OverviewDimensions; import java.awt.Color; @@ -61,10 +63,10 @@ public class OverviewPanel extends Panel implements Runnable, private Frame nullFrame; - public OverviewPanel(AlignmentPanel ap) + public OverviewPanel(AlignmentPanel alPanel) { - this.av = ap.av; - this.ap = ap; + this.av = alPanel.av; + this.ap = alPanel; setLayout(null); nullFrame = new Frame(); nullFrame.addNotify(); @@ -75,7 +77,8 @@ public class OverviewPanel extends Panel implements Runnable, sr.forOverview = true; fr = new FeatureRenderer(av); - od = new OverviewDimensions(av); + od = new OverviewDimensions(av.getRanges(), + (av.isShowAnnotation() && av.getSequenceConsensusHash() != null)); setSize(new Dimension(od.getWidth(), od.getHeight())); addComponentListener(new ComponentAdapter() @@ -123,29 +126,32 @@ public class OverviewPanel extends Panel implements Runnable, @Override public void mousePressed(MouseEvent evt) { - od.setBoxPositionByMouse(evt.getX(), evt.getY()); - ap.setScrollValues(od.getScrollCol(), od.getScrollRow()); - ap.paintAlignment(false); + mouseAction(evt); } @Override public void mouseReleased(MouseEvent evt) { - od.setBoxPositionByMouse(evt.getX(), evt.getY()); - ap.setScrollValues(od.getScrollCol(), od.getScrollRow()); - ap.paintAlignment(false); + mouseAction(evt); } @Override public void mouseDragged(MouseEvent evt) { - od.setBoxPositionByMouse(evt.getX(), evt.getY()); + mouseAction(evt); + } + + private void mouseAction(MouseEvent evt) + { + od.updateViewportFromMouse(evt.getX(), evt.getY(), av.getAlignment() + .getHiddenSequences(), av.getColumnSelection(), av + .getRanges()); ap.setScrollValues(od.getScrollCol(), od.getScrollRow()); ap.paintAlignment(false); } /** - * DOCUMENT ME! + * Updates the overview image when the related alignment panel is updated */ public void updateOverviewImage() { @@ -162,10 +168,10 @@ public class OverviewPanel extends Panel implements Runnable, resizing = true; - if ((getWidth() > 0) && (getHeight() > 0)) + if ((getSize().width > 0) && (getSize().height > 0)) { - od.setWidth(getWidth()); // width = getWidth(); - od.setHeight(getHeight()); // sequencesHeight = getHeight() - graphHeight; + od.setWidth(getSize().width); + od.setHeight(getSize().height); } setSize(new Dimension(od.getWidth(), od.getHeight())); @@ -187,7 +193,7 @@ public class OverviewPanel extends Panel implements Runnable, if (getSize().width > 0 && getSize().height > 0) { od.setWidth(getSize().width); - od.setHeight(getSize().height - od.getGraphHeight()); + od.setHeight(getSize().height); } setSize(new Dimension(od.getWidth(), od.getHeight())); @@ -197,17 +203,16 @@ public class OverviewPanel extends Panel implements Runnable, Graphics mg = miniMe.getGraphics(); - od.updateScales(); - int alwidth = av.getAlignment().getWidth(); - int alheight = av.getAlignment().getHeight() - + av.getAlignment().getHiddenSequences().getSize(); + int alheight = av.getAlignment().getAbsoluteHeight(); float sampleCol = alwidth / (float) od.getWidth(); float sampleRow = alheight / (float) od.getSequencesHeight(); buildImage(sampleRow, sampleCol, mg); - if (av.getAlignmentConservationAnnotation() != null) + // check for conservation annotation to make sure overview works for DNA too + if (av.isShowAnnotation() + && (av.getAlignmentConservationAnnotation() != null)) { for (int col = 0; col < od.getWidth() && !resizeAgain; col++) { @@ -233,6 +238,9 @@ public class OverviewPanel extends Panel implements Runnable, } } + /* + * Build the overview panel image + */ private void buildImage(float sampleRow, float sampleCol, Graphics mg) { int lastcol = 0; @@ -243,8 +251,9 @@ public class OverviewPanel extends Panel implements Runnable, int sameRow = 0; int sameCol = 0; - jalview.datamodel.SequenceI seq = null; - final boolean hasHiddenRows = av.hasHiddenRows(); + SequenceI seq = null; + FeatureColourFinder finder = new FeatureColourFinder(fr); + final boolean hasHiddenCols = av.hasHiddenColumns(); boolean hiddenRow = false; @@ -256,33 +265,10 @@ public class OverviewPanel extends Panel implements Runnable, } else { - // this should largely be a method in Alignment - hiddenRow = false; - if (hasHiddenRows) - { - // look for sequence in hidden rows - seq = av.getAlignment().getHiddenSequences() - .getHiddenSequence(lastrow); - if (seq == null) - { - // didn't find in hidden rows, adjust the index and retrieve from - // full row set - int index = av.getAlignment().getHiddenSequences() - .findIndexWithoutHiddenSeqs(lastrow); - - seq = av.getAlignment().getSequenceAt(index); - } - else - { - // found in hidden rows, ergo this row is hidden - hiddenRow = true; - } - } - else - { - seq = av.getAlignment().getSequenceAt(lastrow); - } - // end of Alignment method + // get the sequence which would be at alignment index 'lastrow' if no + // columns were hidden, and determine whether it is hidden or not + hiddenRow = av.getAlignment().isHidden(lastrow); + seq = av.getAlignment().getSequenceAtAbsoluteIndex(lastrow); for (int col = 0; col < od.getWidth(); col++) { @@ -296,7 +282,7 @@ public class OverviewPanel extends Panel implements Runnable, lastcol = (int) (col * sampleCol); color = getColumnColourFromSequence(seq, hiddenRow, - hasHiddenCols, lastcol); + hasHiddenCols, lastcol, finder); mg.setColor(color); if (sameCol == 1 && sameRow == 1) @@ -317,7 +303,6 @@ public class OverviewPanel extends Panel implements Runnable, sameRow = 1; } } - } /* @@ -325,21 +310,12 @@ public class OverviewPanel extends Panel implements Runnable, */ private Color getColumnColourFromSequence( jalview.datamodel.SequenceI seq, boolean hiddenRow, - boolean hasHiddenCols, int lastcol) + boolean hasHiddenCols, int lastcol, FeatureColourFinder finder) { - Color color; + Color color = Color.white; if (seq.getLength() > lastcol) { - color = sr.getResidueBoxColour(seq, lastcol); - - if (av.isShowSequenceFeatures()) - { - color = fr.findFeatureColour(color, seq, lastcol); - } - } - else - { - color = Color.white; // White + color = sr.getResidueColour(seq, lastcol, finder); } if (hiddenRow @@ -358,7 +334,8 @@ public class OverviewPanel extends Panel implements Runnable, */ public void setBoxPosition() { - od.setBoxPosition(); + od.setBoxPosition(av.getAlignment() + .getHiddenSequences(), av.getColumnSelection(), av.getRanges()); repaint(); }