From 0ff0a9b67913910fbbdf49b1eaffc7e02a8077cb Mon Sep 17 00:00:00 2001 From: tjc <tjc@ee4ac58c-ac51-4696-9907-e4b3aa274f04> Date: Tue, 13 Oct 2009 10:05:16 +0000 Subject: [PATCH] make the BamView in Artemis asynchronous git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@12054 ee4ac58c-ac51-4696-9907-e4b3aa274f04 --- .../artemis/components/alignment/BamView.java | 57 +++++++++++++------ 1 file changed, 40 insertions(+), 17 deletions(-) diff --git a/uk/ac/sanger/artemis/components/alignment/BamView.java b/uk/ac/sanger/artemis/components/alignment/BamView.java index 00da171d7..2ef2f7b75 100644 --- a/uk/ac/sanger/artemis/components/alignment/BamView.java +++ b/uk/ac/sanger/artemis/components/alignment/BamView.java @@ -104,6 +104,7 @@ import uk.ac.sanger.artemis.components.DisplayAdjustmentListener; import uk.ac.sanger.artemis.components.EntryFileDialog; import uk.ac.sanger.artemis.components.FeatureDisplay; import uk.ac.sanger.artemis.components.MessageDialog; +import uk.ac.sanger.artemis.components.SwingWorker; import uk.ac.sanger.artemis.components.Utilities; import uk.ac.sanger.artemis.editor.MultiLineToolTipUI; import uk.ac.sanger.artemis.io.EntryInformation; @@ -2125,25 +2126,47 @@ public class BamView extends JPanel /** * Artemis event notification */ - public void displayAdjustmentValueChanged(DisplayAdjustmentEvent event) - { - if(event.getType() == DisplayAdjustmentEvent.SCALE_ADJUST_EVENT) + public void displayAdjustmentValueChanged(final DisplayAdjustmentEvent event) + { + SwingWorker worker = new SwingWorker() { - laststart = -1; - lastend = -1; - this.startBase = event.getStart(); - this.endBase = event.getEnd(); + public Object construct() + { + try + { + Thread.sleep(500); + } + catch (InterruptedException e) + { + e.printStackTrace(); + } + + if(event.getStart() != ((FeatureDisplay)event.getSource()).getForwardBaseAtLeftEdge()) + { + return null; + } + + if(event.getType() == DisplayAdjustmentEvent.SCALE_ADJUST_EVENT) + { + laststart = -1; + lastend = -1; + BamView.this.startBase = event.getStart(); + BamView.this.endBase = event.getEnd(); - int width = feature_display.getMaxVisibleBases(); - setZoomLevel(width); - repaint(); - } - else - { - setDisplay(event.getStart(), - event.getStart()+feature_display.getMaxVisibleBases(), event); - repaint(); - } + int width = feature_display.getMaxVisibleBases(); + setZoomLevel(width); + repaint(); + } + else + { + setDisplay(event.getStart(), + event.getStart()+feature_display.getMaxVisibleBases(), event); + repaint(); + } + return null; + } + }; + worker.start(); } public void selectionChanged(SelectionChangeEvent event) -- GitLab