X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FOverviewPanel.java;h=c530fdce40088bba6d8aedb7830005dc76023ff8;hb=2ef218faa692153c09a328d40b8f4724d69355f2;hp=923616f86ff15dbe17e4a21c9d060313d7400736;hpb=ed8a4149077b4debd9d51cca5141287e17b25fad;p=jalview.git diff --git a/src/jalview/gui/OverviewPanel.java b/src/jalview/gui/OverviewPanel.java index 923616f..c530fdc 100755 --- a/src/jalview/gui/OverviewPanel.java +++ b/src/jalview/gui/OverviewPanel.java @@ -20,7 +20,9 @@ */ package jalview.gui; +import jalview.datamodel.SequenceI; import jalview.renderer.AnnotationRenderer; +import jalview.renderer.seqfeatures.FeatureColourFinder; import jalview.viewmodel.OverviewDimensions; import java.awt.Color; @@ -69,7 +71,7 @@ public class OverviewPanel extends JPanel implements Runnable // main visible SeqCanvas private SequenceRenderer sr; - private jalview.renderer.seqfeatures.FeatureRenderer fr; + jalview.renderer.seqfeatures.FeatureRenderer fr; /** * Creates a new OverviewPanel object. @@ -86,16 +88,11 @@ public class OverviewPanel extends JPanel implements Runnable sr = new SequenceRenderer(av); sr.renderGaps = false; sr.forOverview = true; - fr = new FeatureRenderer(alPanel); + fr = new FeatureRenderer(ap); - boolean showAnnotation = true; - // TODO: in applet this was getSequenceConsensusHash() - // check if it makes any functional difference: hconsensus or conservation - if (av.getAlignmentConservationAnnotation() == null) - { - showAnnotation = false; - } - od = new OverviewDimensions(av.getPosProps(), showAnnotation); + od = new OverviewDimensions(av.getRanges(), + (av.isShowAnnotation() && av + .getAlignmentConservationAnnotation() != null)); addComponentListener(new ComponentAdapter() { @@ -117,11 +114,9 @@ public class OverviewPanel extends JPanel implements Runnable { if (!av.getWrapAlignment()) { - // TODO: feature: jv2.5 detect shift drag and update selection from - // it. od.updateViewportFromMouse(evt.getX(), evt.getY(), av .getAlignment().getHiddenSequences(), av - .getColumnSelection(), av.getPosProps()); + .getColumnSelection(), av.getRanges()); ap.setScrollValues(od.getScrollCol(), od.getScrollRow()); } } @@ -136,7 +131,7 @@ public class OverviewPanel extends JPanel implements Runnable { od.updateViewportFromMouse(evt.getX(), evt.getY(), av .getAlignment().getHiddenSequences(), av - .getColumnSelection(), av.getPosProps()); + .getColumnSelection(), av.getRanges()); ap.setScrollValues(od.getScrollCol(), od.getScrollRow()); } } @@ -160,8 +155,8 @@ public class OverviewPanel extends JPanel implements Runnable if ((getWidth() > 0) && (getHeight() > 0)) { - od.setWidth(getWidth()); // width = getWidth(); - od.setHeight(getHeight()); // sequencesHeight = getHeight() - graphHeight; + od.setWidth(getWidth()); + od.setHeight(getHeight()); } setPreferredSize(new Dimension(od.getWidth(), od.getHeight())); @@ -208,7 +203,9 @@ public class OverviewPanel extends JPanel implements Runnable buildImage(sampleRow, sampleCol); - if (av.getAlignmentConservationAnnotation() != null) + // check for conservation annotation to make sure overview works for DNA too + if (av.isShowAnnotation() + && (av.getAlignmentConservationAnnotation() != null)) { renderer.updateFromAlignViewport(av); for (int col = 0; col < od.getWidth() && !resizeAgain; col++) @@ -239,13 +236,17 @@ public class OverviewPanel extends JPanel implements Runnable setBoxPosition(); } + /* + * Build the overview panel image + */ private void buildImage(float sampleRow, float sampleCol) { int lastcol = -1; int lastrow = -1; - int color = Color.white.getRGB(); + int rgbColour = Color.white.getRGB(); - jalview.datamodel.SequenceI seq = null; + SequenceI seq = null; + FeatureColourFinder finder = new FeatureColourFinder(fr); final boolean hasHiddenCols = av.hasHiddenColumns(); boolean hiddenRow = false; @@ -263,35 +264,27 @@ public class OverviewPanel extends JPanel implements Runnable lastrow = currentrow; // get the sequence which would be at alignment index 'lastrow' if no - // columns were hidden, and determine whether it is hidden or not + // rows were hidden, and determine whether it is hidden or not hiddenRow = av.getAlignment().isHidden(lastrow); seq = av.getAlignment().getSequenceAtAbsoluteIndex(lastrow); } - if (seq == null) - { - System.out.println(lastrow + " null"); - continue; - } - for (int col = 0; col < od.getWidth() && !resizeAgain; col++) { if (doCopy) { - color = miniMe.getRGB(col, row - 1); + rgbColour = miniMe.getRGB(col, row - 1); } else if ((int) (col * sampleCol) != lastcol || (int) (row * sampleRow) != lastrow) { lastcol = (int) (col * sampleCol); - color = getColumnColourFromSequence(seq, hiddenRow, hasHiddenCols, - lastcol); + rgbColour = getColumnColourFromSequence(seq, hiddenRow, + hasHiddenCols, lastcol, finder); } - // else if ((int) (col * sampleCol) == lastcol && (int) (row * - // sampleRow) == lastrow)) - // we just use the color we already have , so don't need to set it + // else we just use the color we already have , so don't need to set it - miniMe.setRGB(col, row, color); + miniMe.setRGB(col, row, rgbColour); } } } @@ -299,33 +292,26 @@ public class OverviewPanel extends JPanel implements Runnable /* * Find the colour of a sequence at a specified column position */ - private int getColumnColourFromSequence(jalview.datamodel.SequenceI seq, - boolean hiddenRow, boolean hasHiddenCols, int lastcol) + private int getColumnColourFromSequence( + jalview.datamodel.SequenceI seq, + boolean hiddenRow, boolean hasHiddenCols, int lastcol, + FeatureColourFinder finder) { - int color; + Color color = Color.white; - if (seq.getLength() > lastcol) + if ((seq != null) && (seq.getLength() > lastcol)) { - color = sr.getResidueBoxColour(seq, lastcol).getRGB(); - - if (av.isShowSequenceFeatures()) - { - color = fr.findFeatureColour(color, seq, lastcol); - } - } - else - { - color = Color.white.getRGB(); // White + color = sr.getResidueColour(seq, lastcol, finder); } if (hiddenRow || (hasHiddenCols && !av.getColumnSelection() .isVisible(lastcol))) { - color = new Color(color).darker().darker().getRGB(); + color = color.darker().darker(); } - return color; + return color.getRGB(); } /** @@ -336,7 +322,7 @@ public class OverviewPanel extends JPanel implements Runnable public void setBoxPosition() { od.setBoxPosition(av.getAlignment() - .getHiddenSequences(), av.getColumnSelection(), av.getPosProps()); + .getHiddenSequences(), av.getColumnSelection(), av.getRanges()); repaint(); } @@ -367,7 +353,7 @@ public class OverviewPanel extends JPanel implements Runnable g.fillRect(0, 0, getWidth(), getHeight()); } } - // TODO: render selected regions + g.setColor(Color.red); od.drawBox(g); }