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