update author list in license for (JAL-826)
[jalview.git] / src / jalview / gui / OOMWarning.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)\r
3  * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, 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   public static boolean oomInprogress = false;\r
29 \r
30   Component desktop = null;\r
31 \r
32   /**\r
33    * Raise an out of memory error.\r
34    * \r
35    * @param action\r
36    *          - what was going on when OutOfMemory exception occured.\r
37    * @param instance\r
38    *          - Window where the dialog will appear\r
39    * @param oomex\r
40    *          - the actual exception - to be written to stderr or debugger.\r
41    */\r
42   OOMWarning(final String action, final OutOfMemoryError oomex,\r
43           final Component instance)\r
44   {\r
45     if (!oomInprogress)\r
46     {\r
47       oomInprogress = true;\r
48       this.action = action;\r
49       desktop = instance;\r
50       if (oomex != null)\r
51       {\r
52         if (jalview.bin.Cache.log != null)\r
53         {\r
54           jalview.bin.Cache.log\r
55                   .error("Out of Memory when " + action, oomex);\r
56         }\r
57         else\r
58         {\r
59           System.err.println("Out of Memory when " + action);\r
60           oomex.printStackTrace();\r
61         }\r
62       }\r
63       javax.swing.SwingUtilities.invokeLater(this);\r
64       System.gc();\r
65     }\r
66   }\r
67 \r
68   public OOMWarning(String string, OutOfMemoryError oomerror)\r
69   {\r
70     this(string, oomerror, Desktop.desktop);\r
71   }\r
72 \r
73   public void run()\r
74   {\r
75     javax.swing.JOptionPane\r
76             .showInternalMessageDialog(\r
77                     desktop,\r
78                     "Out of memory when "\r
79                             + action\r
80                             + "!!"\r
81                             + "\nSee help files for increasing Java Virtual Machine memory.",\r
82                     "Out of memory",\r
83                     javax.swing.JOptionPane.WARNING_MESSAGE);\r
84     // hope that there's enough memory left that no more appear.\r
85     oomInprogress = false;\r
86   }\r
87 \r
88 }\r