JAL-2416 allow space in score matrix name
[jalview.git] / src / jalview / gui / JvOptionPane.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ 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
22 package jalview.gui;
23
24 import java.awt.Component;
25 import java.awt.HeadlessException;
26
27 import javax.swing.Icon;
28 import javax.swing.JOptionPane;
29
30 public class JvOptionPane extends JOptionPane
31 {
32   /**
33    * 
34    */
35   private static final long serialVersionUID = -3019167117756785229L;
36
37   private static Object mockResponse = JvOptionPane.CANCEL_OPTION;
38
39   private static boolean interactiveMode = true;
40
41   public static int showConfirmDialog(Component parentComponent,
42           Object message) throws HeadlessException
43   {
44     return isInteractiveMode() ? JOptionPane.showConfirmDialog(
45             parentComponent, message) : (int) getMockResponse();
46   }
47
48   public static int showConfirmDialog(Component parentComponent,
49           Object message, String title, int optionType)
50           throws HeadlessException
51   {
52     return isInteractiveMode() ? JOptionPane.showConfirmDialog(
53             parentComponent, message, title, optionType)
54             : (int) getMockResponse();
55   }
56
57   public static int showConfirmDialog(Component parentComponent,
58           Object message, String title, int optionType, int messageType)
59           throws HeadlessException
60   {
61     return isInteractiveMode() ? JOptionPane.showConfirmDialog(
62             parentComponent, message, title, optionType, messageType)
63             : (int) getMockResponse();
64   }
65
66   public static int showConfirmDialog(Component parentComponent,
67           Object message, String title, int optionType, int messageType,
68           Icon icon) throws HeadlessException
69   {
70     return isInteractiveMode() ? JOptionPane.showConfirmDialog(
71             parentComponent, message, title, optionType, messageType, icon)
72             : (int) getMockResponse();
73   }
74
75   public static int showInternalConfirmDialog(Component parentComponent,
76           Object message)
77   {
78     return isInteractiveMode() ? JOptionPane.showInternalConfirmDialog(
79             parentComponent, message) : (int) getMockResponse();
80   }
81
82   public static int showInternalConfirmDialog(Component parentComponent,
83           Object message, String title, int optionType)
84   {
85     return isInteractiveMode() ? JOptionPane.showConfirmDialog(
86             parentComponent, message, title, optionType)
87             : (int) getMockResponse();
88   }
89
90   public static int showInternalConfirmDialog(Component parentComponent,
91           Object message, String title, int optionType, int messageType)
92   {
93     return isInteractiveMode() ? JOptionPane.showConfirmDialog(
94             parentComponent, message, title, optionType, messageType)
95             : (int) getMockResponse();
96   }
97
98   public static int showInternalConfirmDialog(Component parentComponent,
99           Object message, String title, int optionType, int messageType,
100           Icon icon)
101   {
102     return isInteractiveMode() ? JOptionPane.showInternalConfirmDialog(
103             parentComponent, message, title, optionType, messageType, icon)
104             : (int) getMockResponse();
105   }
106
107   public static int showOptionDialog(Component parentComponent,
108           Object message, String title, int optionType, int messageType,
109           Icon icon, Object[] options, Object initialValue)
110           throws HeadlessException
111   {
112     return isInteractiveMode() ? JOptionPane.showOptionDialog(
113             parentComponent, message, title, optionType, messageType, icon,
114             options, initialValue) : (int) getMockResponse();
115   }
116
117   public static void showMessageDialog(Component parentComponent,
118           Object message) throws HeadlessException
119   {
120     if (isInteractiveMode())
121     {
122       JOptionPane.showMessageDialog(parentComponent, message);
123     }
124     else
125     {
126       outputMessage(message);
127     }
128   }
129
130   public static void showMessageDialog(Component parentComponent,
131           Object message, String title, int messageType)
132           throws HeadlessException
133   {
134     if (isInteractiveMode())
135     {
136       JOptionPane.showMessageDialog(parentComponent, message, title,
137               messageType);
138     }
139     else
140     {
141       outputMessage(message);
142     }
143   }
144
145   public static void showMessageDialog(Component parentComponent,
146           Object message, String title, int messageType, Icon icon)
147           throws HeadlessException
148   {
149     if (isInteractiveMode())
150     {
151       JOptionPane.showMessageDialog(parentComponent, message, title,
152               messageType, icon);
153     }
154     else
155     {
156       outputMessage(message);
157     }
158   }
159
160   public static void showInternalMessageDialog(Component parentComponent,
161           Object message)
162   {
163     if (isInteractiveMode())
164     {
165       JOptionPane.showMessageDialog(parentComponent, message);
166     }
167     else
168     {
169       outputMessage(message);
170     }
171   }
172
173   public static void showInternalMessageDialog(Component parentComponent,
174           Object message, String title, int messageType)
175   {
176     if (isInteractiveMode())
177     {
178       JOptionPane.showMessageDialog(parentComponent, message, title,
179               messageType);
180     }
181     else
182     {
183       outputMessage(message);
184     }
185   }
186
187   public static void showInternalMessageDialog(Component parentComponent,
188           Object message, String title, int messageType, Icon icon)
189   {
190     if (isInteractiveMode())
191     {
192       JOptionPane.showMessageDialog(parentComponent, message, title,
193               messageType, icon);
194     }
195     else
196     {
197       outputMessage(message);
198     }
199   }
200
201   public static String showInputDialog(Object message)
202           throws HeadlessException
203   {
204     return isInteractiveMode() ? JOptionPane.showInputDialog(message)
205             : getMockResponse().toString();
206   }
207
208   public static String showInputDialog(Object message,
209           Object initialSelectionValue)
210   {
211     return isInteractiveMode() ? JOptionPane.showInputDialog(message,
212             initialSelectionValue) : getMockResponse().toString();
213   }
214
215   public static String showInputDialog(Component parentComponent,
216           Object message) throws HeadlessException
217   {
218     return isInteractiveMode() ? JOptionPane.showInputDialog(
219             parentComponent, message) : getMockResponse().toString();
220   }
221
222   public static String showInputDialog(Component parentComponent,
223           Object message, Object initialSelectionValue)
224   {
225     return isInteractiveMode() ? JOptionPane.showInputDialog(
226             parentComponent, message, initialSelectionValue)
227             : getMockResponse().toString();
228   }
229
230   public static String showInputDialog(Component parentComponent,
231           Object message, String title, int messageType)
232           throws HeadlessException
233   {
234     return isInteractiveMode() ? JOptionPane.showInputDialog(
235             parentComponent, message, title, messageType)
236             : getMockResponse().toString();
237   }
238
239   public static Object showInputDialog(Component parentComponent,
240           Object message, String title, int messageType, Icon icon,
241           Object[] selectionValues, Object initialSelectionValue)
242           throws HeadlessException
243   {
244     return isInteractiveMode() ? JOptionPane.showInputDialog(
245             parentComponent, message, title, messageType, icon,
246             selectionValues, initialSelectionValue) : getMockResponse()
247             .toString();
248   }
249
250   public static String showInternalInputDialog(Component parentComponent,
251           Object message)
252   {
253     return isInteractiveMode() ? JOptionPane.showInternalInputDialog(
254             parentComponent, message) : getMockResponse().toString();
255   }
256
257   public static String showInternalInputDialog(Component parentComponent,
258           Object message, String title, int messageType)
259   {
260     return isInteractiveMode() ? JOptionPane.showInternalInputDialog(
261             parentComponent, message, title, messageType)
262             : getMockResponse().toString();
263   }
264
265   public static Object showInternalInputDialog(Component parentComponent,
266           Object message, String title, int messageType, Icon icon,
267           Object[] selectionValues, Object initialSelectionValue)
268   {
269     return isInteractiveMode() ? JOptionPane.showInternalInputDialog(
270             parentComponent, message, title, messageType, icon,
271             selectionValues, initialSelectionValue) : getMockResponse()
272             .toString();
273   }
274
275   private static void outputMessage(Object message)
276   {
277     System.out.println(">>> JOption Message : " + message.toString());
278   }
279
280   public static Object getMockResponse()
281   {
282     return mockResponse;
283   }
284
285   public static void setMockResponse(Object mockOption)
286   {
287     JvOptionPane.mockResponse = mockOption;
288   }
289
290   public static void resetMock()
291   {
292     setMockResponse(JvOptionPane.CANCEL_OPTION);
293     setInteractiveMode(true);
294   }
295
296   public static boolean isInteractiveMode()
297   {
298     return interactiveMode;
299   }
300
301   public static void setInteractiveMode(boolean interactiveMode)
302   {
303     JvOptionPane.interactiveMode = interactiveMode;
304   }
305
306 }