JAL-1519 make the splash screen larger/more readable
[jalview.git] / src / jalview / gui / OOMWarning.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
3  * Copyright (C) 2014 The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.gui;
22
23 import java.awt.Component;
24
25 public class OOMWarning implements Runnable
26 {
27   String action = null;
28
29   String instructions = "";
30
31   public static boolean oomInprogress = false;
32
33   Component desktop = null;
34
35   /**
36    * Raise an out of memory error.
37    * 
38    * @param action
39    *          - what was going on when OutOfMemory exception occured.
40    * @param instance
41    *          - Window where the dialog will appear
42    * @param oomex
43    *          - the actual exception - to be written to stderr or debugger.
44    */
45   OOMWarning(final String action, final OutOfMemoryError oomex,
46           final Component instance)
47   {
48     if (!oomInprogress)
49     {
50       oomInprogress = true;
51       this.action = action;
52       desktop = instance;
53       if (oomex != null)
54       {
55         if (jalview.bin.Cache.log != null)
56         {
57           jalview.bin.Cache.log
58                   .error("Out of Memory when " + action, oomex);
59         }
60         else
61         {
62           System.err.println("Out of Memory when " + action);
63           oomex.printStackTrace();
64         }
65       }
66       javax.swing.SwingUtilities.invokeLater(this);
67       System.gc();
68     }
69   }
70
71   public OOMWarning(String string, OutOfMemoryError oomerror)
72   {
73     this(string, oomerror, Desktop.desktop);
74   }
75
76   public void run()
77   {
78     javax.swing.JOptionPane
79             .showInternalMessageDialog(
80                     desktop,
81                     "Out of memory when "
82                             + action
83                             + "!!"
84                             + "\nSee help files for increasing Java Virtual Machine memory.",
85                     "Out of memory",
86                     javax.swing.JOptionPane.WARNING_MESSAGE);
87     // hope that there's enough memory left that no more appear.
88     oomInprogress = false;
89   }
90
91 }