diff --git a/src/main/java/bdv/tools/HelpDialog.java b/src/main/java/bdv/tools/HelpDialog.java index e056c40bd56ef990baa1a3c6224ae8005168f59a..4ccd0fcbd32270429b621fa8cfd7c101815e0581 100644 --- a/src/main/java/bdv/tools/HelpDialog.java +++ b/src/main/java/bdv/tools/HelpDialog.java @@ -28,6 +28,8 @@ */ package bdv.tools; +import bdv.util.MemoryFixedDialog; + import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Frame; @@ -42,14 +44,13 @@ import javax.swing.ActionMap; import javax.swing.BorderFactory; import javax.swing.InputMap; import javax.swing.JComponent; -import javax.swing.JDialog; import javax.swing.JEditorPane; import javax.swing.JScrollPane; import javax.swing.KeyStroke; import javax.swing.ScrollPaneConstants; import javax.swing.WindowConstants; -public class HelpDialog extends JDialog +public class HelpDialog extends MemoryFixedDialog { private static final long serialVersionUID = 1L; @@ -100,7 +101,6 @@ public class HelpDialog extends JDialog am.put( hideKey, hideAction ); pack(); - setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE ); } catch ( final IOException e ) { diff --git a/src/main/java/bdv/tools/RecordMaxProjectionDialog.java b/src/main/java/bdv/tools/RecordMaxProjectionDialog.java index d2b076638596892417775eb2879c09fcd123ee0e..dcc42668172a2277d0a04afa581aee655de121f5 100644 --- a/src/main/java/bdv/tools/RecordMaxProjectionDialog.java +++ b/src/main/java/bdv/tools/RecordMaxProjectionDialog.java @@ -30,6 +30,7 @@ package bdv.tools; import bdv.cache.CacheControl; import bdv.export.ProgressWriter; +import bdv.util.MemoryFixedDialog; import bdv.util.Prefs; import bdv.viewer.BasicViewerState; import bdv.viewer.ViewerPanel; @@ -56,7 +57,6 @@ import javax.swing.BoxLayout; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; -import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; @@ -77,7 +77,7 @@ import bdv.viewer.OverlayRenderer; import bdv.viewer.render.RenderTarget; import net.imglib2.util.LinAlgHelpers; -public class RecordMaxProjectionDialog extends JDialog implements OverlayRenderer +public class RecordMaxProjectionDialog extends MemoryFixedDialog implements OverlayRenderer { private static final long serialVersionUID = 1L; @@ -275,7 +275,6 @@ public class RecordMaxProjectionDialog extends JDialog implements OverlayRendere am.put( hideKey, hideAction ); pack(); - setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE ); } /** diff --git a/src/main/java/bdv/tools/RecordMovieDialog.java b/src/main/java/bdv/tools/RecordMovieDialog.java index 9ae851aa1bcd269c953521ebcd1ff63f0987ca5c..ae5c564f509274844d17347984df56e1d23ab5ba 100644 --- a/src/main/java/bdv/tools/RecordMovieDialog.java +++ b/src/main/java/bdv/tools/RecordMovieDialog.java @@ -30,6 +30,7 @@ package bdv.tools; import bdv.cache.CacheControl; import bdv.export.ProgressWriter; +import bdv.util.MemoryFixedDialog; import bdv.util.Prefs; import bdv.viewer.BasicViewerState; import bdv.viewer.ViewerPanel; @@ -55,7 +56,6 @@ import javax.swing.BoxLayout; import javax.swing.InputMap; import javax.swing.JButton; import javax.swing.JComponent; -import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JPanel; @@ -70,7 +70,7 @@ import net.imglib2.realtransform.AffineTransform3D; import bdv.viewer.OverlayRenderer; import bdv.viewer.render.RenderTarget; -public class RecordMovieDialog extends JDialog implements OverlayRenderer +public class RecordMovieDialog extends MemoryFixedDialog implements OverlayRenderer { private static final long serialVersionUID = 1L; @@ -248,7 +248,6 @@ public class RecordMovieDialog extends JDialog implements OverlayRenderer am.put( hideKey, hideAction ); pack(); - setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE ); } public void recordMovie( final int width, final int height, final int minTimepointIndex, final int maxTimepointIndex, final File dir ) throws IOException diff --git a/src/main/java/bdv/tools/VisibilityAndGroupingDialog.java b/src/main/java/bdv/tools/VisibilityAndGroupingDialog.java index b4a42dca5980fff34b6b93abacda8e8eb0ad09f1..9b5b2bacd33a6deb883a8fd77df7fd698ab933a8 100644 --- a/src/main/java/bdv/tools/VisibilityAndGroupingDialog.java +++ b/src/main/java/bdv/tools/VisibilityAndGroupingDialog.java @@ -28,6 +28,7 @@ */ package bdv.tools; +import bdv.util.MemoryFixedDialog; import bdv.viewer.SourceAndConverter; import bdv.viewer.ViewerState; import bdv.viewer.VisibilityAndGrouping; @@ -61,7 +62,6 @@ import javax.swing.ButtonGroup; import javax.swing.InputMap; import javax.swing.JCheckBox; import javax.swing.JComponent; -import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; @@ -73,7 +73,7 @@ import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @Deprecated -public class VisibilityAndGroupingDialog extends JDialog +public class VisibilityAndGroupingDialog extends MemoryFixedDialog { private static final long serialVersionUID = 1L; @@ -117,7 +117,7 @@ public class VisibilityAndGroupingDialog extends JDialog content.add( visibilityPanel ); content.add( groupingPanel ); content.add( modePanel ); - getContentPane().add( content, BorderLayout.NORTH ); + add( content, BorderLayout.NORTH ); final ActionMap am = getRootPane().getActionMap(); final InputMap im = getRootPane().getInputMap( JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT ); @@ -147,7 +147,6 @@ public class VisibilityAndGroupingDialog extends JDialog } ); pack(); - setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE ); } public void update() diff --git a/src/main/java/bdv/tools/brightness/BrightnessDialog.java b/src/main/java/bdv/tools/brightness/BrightnessDialog.java index 1e71f960cdaec7ba438f14de6c7fe35903ae15c1..aabaeea494471bbcb2a2b90462774a30a87dec13 100644 --- a/src/main/java/bdv/tools/brightness/BrightnessDialog.java +++ b/src/main/java/bdv/tools/brightness/BrightnessDialog.java @@ -65,6 +65,7 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import bdv.util.InvokeOnEDT; +import bdv.util.MemoryFixedDialog; import mpicbg.spim.data.generic.sequence.BasicViewSetup; import net.imglib2.type.numeric.ARGBType; @@ -75,7 +76,7 @@ import net.imglib2.type.numeric.ARGBType; * @author Tobias Pietzsch <tobias.pietzsch@gmail.com> */ @Deprecated -public class BrightnessDialog extends JDialog +public class BrightnessDialog extends MemoryFixedDialog { public BrightnessDialog( final Frame owner, final SetupAssignments setupAssignments ) { @@ -148,7 +149,6 @@ public class BrightnessDialog extends JDialog } ); pack(); - setDefaultCloseOperation( WindowConstants.HIDE_ON_CLOSE ); } public static class ColorsPanel extends JPanel diff --git a/src/main/java/bdv/util/MemoryFixedDialog.java b/src/main/java/bdv/util/MemoryFixedDialog.java new file mode 100644 index 0000000000000000000000000000000000000000..9f60c07b398f24d7fb1d4a90fc9baaada73aa7d4 --- /dev/null +++ b/src/main/java/bdv/util/MemoryFixedDialog.java @@ -0,0 +1,49 @@ +package bdv.util; + +import javax.swing.*; +import java.awt.*; + +public class MemoryFixedDialog extends JDialog +{ + private boolean packIsPending = false; + + public MemoryFixedDialog() + { + super(); + super.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE ); + } + + public MemoryFixedDialog( Frame owner, String title, boolean modal ) + { + super( owner, title, modal ); + } + + @Override + public void pack() + { + if ( isVisible() ) + { + packIsPending = false; + super.pack(); + } + else + packIsPending = true; + } + + @Override + public void setVisible( boolean visible ) + { + if ( visible && packIsPending ) + { + packIsPending = false; + super.pack(); + } + super.setVisible( visible ); + } + + @Override + public void setDefaultCloseOperation( int operation ) + { + // do nothing + } +}