X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FOverviewPanel.java;h=74c21124ecfdf2d3f8d1ab2d0c4fb314a02bdc77;hb=62d2ca926e73609acc4c2a50676f2010c6e3e343;hp=af80725ee6a5b97d5e8c309750d7475eade3239f;hpb=d221d910aad1d44bbc2e0a1f7ac44f5ceb575018;p=jalview.git diff --git a/src/jalview/gui/OverviewPanel.java b/src/jalview/gui/OverviewPanel.java index af80725..74c2112 100755 --- a/src/jalview/gui/OverviewPanel.java +++ b/src/jalview/gui/OverviewPanel.java @@ -86,26 +86,47 @@ public class OverviewPanel extends JPanel implements Runnable, (av.isShowAnnotation() && av .getAlignmentConservationAnnotation() != null)); - setSize(od.getWidth(), od.getHeight()); - setLayout(new BorderLayout()); progressPanel = new ProgressPanel(OverviewRenderer.UPDATE, - MessageManager.getString("label.oview_calc")); + MessageManager.getString("label.oview_calc"), getWidth()); this.add(progressPanel, BorderLayout.SOUTH); oviewCanvas = new OverviewCanvas(od, av, progressPanel); add(oviewCanvas, BorderLayout.CENTER); - av.getRanges().addPropertyChangeListener(this); + // without this the overview window does not size to fit the overview canvas + setPreferredSize(new Dimension(od.getWidth(), od.getHeight())); + addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent evt) { - updateOverviewImage(); + // Resize is called on the initial display of the overview. + // This code adjusts sizes to account for the progress bar if it has not + // already been accounted for, which triggers another resize call for + // the correct sizing, at which point the overview image is updated. + // (This avoids a double recalculation of the image.) + if (getWidth() == od.getWidth() && getHeight() == od.getHeight() + + progressPanel.getHeight()) + { + updateOverviewImage(); + } + else + { + if ((getWidth() > 0) && (getHeight() > 0)) + { + od.setWidth(getWidth()); + od.setHeight(getHeight() - progressPanel.getHeight()); + } + + setPreferredSize(new Dimension(od.getWidth(), + od.getHeight() + progressPanel.getHeight())); + } } + }); addMouseMotionListener(new MouseMotionAdapter() @@ -161,7 +182,6 @@ public class OverviewPanel extends JPanel implements Runnable, } } else - // if (!av.getWrapAlignment()) { if (!od.isPositionInBox(evt.getX(), evt.getY())) { @@ -200,8 +220,6 @@ public class OverviewPanel extends JPanel implements Runnable, } } }); - - updateOverviewImage(); } /* @@ -269,18 +287,17 @@ public class OverviewPanel extends JPanel implements Runnable, if ((getWidth() > 0) && (getHeight() > 0)) { od.setWidth(getWidth()); - od.setHeight(getHeight()); + od.setHeight(getHeight() - progressPanel.getHeight()); } - setPreferredSize(new Dimension(od.getWidth(), od.getHeight())); + setPreferredSize(new Dimension(od.getWidth(), + od.getHeight() + progressPanel.getHeight())); if (oviewCanvas.restartDraw()) { return; } - // oviewCanvas.addPropertyChangeListener(OverviewRenderer.UPDATE, this); - Thread thread = new Thread(this); thread.start(); repaint(); @@ -333,32 +350,4 @@ public class OverviewPanel extends JPanel implements Runnable, od = null; } } - - /* private void addProgressBar() - { - progressPanel = new JPanel(new BorderLayout(10, 0)); - progressPanel.setBorder(new EmptyBorder(0, 3, 0, 20)); - - this.add(progressPanel, BorderLayout.SOUTH); - - progressBar = new OvProgressBar(); - progressBar.setMinimum(0); - - progressPanel.add(new JLabel("Recalculating overview..."), - BorderLayout.WEST); - progressPanel.add(progressBar, BorderLayout.CENTER); - } - - private void removeProgressBar() - { - if (progressPanel != null) - { - synchronized (progressPanel) - { - progressPanel.remove(progressBar); - this.remove(progressPanel); - progressPanel = null; - } - } - }*/ }