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