/* * $Id$ * * Copyright (c) 2008 by Joel Uckelman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License (LGPL) as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, copies are available * at http://www.opensource.org. */ package VASSAL.tools; import java.awt.Component; import java.awt.Frame; import java.util.concurrent.Future; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import VASSAL.build.GameModule; import VASSAL.i18n.Resources; import VASSAL.tools.swing.DetailsDialog; import VASSAL.tools.swing.Dialogs; /** * @author Joel Uckelman * @since 3.1.0 */ public class ProblemDialog { private ProblemDialog() {} private static final Logger logger = LoggerFactory.getLogger(ProblemDialog.class); public static Future<?> show( int messageType, String messageKey, Object... args) { return show(messageType, getFrame(), null, messageKey, args); } public static Future<?> show( int messageType, Component parent, String messageKey, Object... args) { return show(messageType, parent, null, messageKey, args); } public static Future<?> show( int messageType, Throwable thrown, String messageKey, Object... args) { return show(messageType, getFrame(), thrown, messageKey, args); } public static Future<?> show( int messageType, Component parent, Throwable thrown, String messageKey, Object... args) { return show( messageType, parent, thrown, Resources.getString(messageKey + "_title"), Resources.getString(messageKey + "_heading"), Resources.getString(messageKey + "_message", args) ); } public static Future<?> show( final int messageType, final Component parent, final Throwable thrown, final String title, final String heading, final String message) { if (thrown != null) logger.error("", thrown); return DialogUtils.enqueue(new Runnable() { public void run() { Dialogs.showMessageDialog( parent, title, heading, message, messageType ); } }); } public static Future<?> showDisableable( int messageType, Object key, String messageKey, Object... args) { return showDisableable( messageType, getFrame(), null, key, messageKey, args ); } public static Future<?> showDisableable( int messageType, Component parent, Object key, String messageKey, Object... args) { return showDisableable(messageType, parent, null, key, messageKey, args); } public static Future<?> showDisableable( int messageType, Throwable thrown, Object key, String messageKey, Object... args) { return showDisableable( messageType, getFrame(), thrown, key, messageKey, args ); } public static Future<?> showDisableable( int messageType, Component parent, Throwable thrown, Object key, String messageKey, Object... args) { return showDisableable( messageType, parent, thrown, key, Resources.getString(messageKey + "_title"), Resources.getString(messageKey + "_heading"), Resources.getString(messageKey + "_message", args) ); } public static Future<?> showDisableable( final int messageType, final Component parent, final Throwable thrown, final Object key, final String title, final String heading, final String message) { if (thrown != null) logger.error("", thrown); return DialogUtils.enqueue(new Runnable() { public void run() { Dialogs.showMessageDialog( parent, title, heading, message, messageType, key, Resources.getString("Dialogs.disable") ); } }); } public static Future<?> showDisableableNoI18N( final int messageType, final Throwable thrown, final Object key, final String title, final String heading, final String message) { if (thrown != null) logger.error("", thrown); return DialogUtils.enqueue(new Runnable() { public void run() { Dialogs.showMessageDialog( getFrame(), title, heading, message, messageType, key, "Don't show this again" ); } }); } public static Future<?> showDetails( int messageType, String details, String messageKey, Object... args) { return showDetails( messageType, getFrame(), null, details, messageKey, args ); } public static Future<?> showDetails( int messageType, Component parent, String details, String messageKey, Object... args) { return showDetails(messageType, parent, null, details, messageKey, args); } public static Future<?> showDetails( int messageType, Throwable thrown, String details, String messageKey, Object... args) { return showDetails( messageType, getFrame(), thrown, details, messageKey, args ); } public static Future<?> showDetails( int messageType, Component parent, Throwable thrown, String details, String messageKey, Object... args) { return showDetails( messageType, parent, thrown, details, Resources.getString(messageKey + "_title"), Resources.getString(messageKey + "_heading"), Resources.getString(messageKey + "_message", args) ); } public static Future<?> showDetails( final int messageType, final Component parent, final Throwable thrown, final String details, final String title, final String heading, final String message) { if (thrown != null) logger.error("", thrown); return DialogUtils.enqueue(new Runnable() { public void run() { DetailsDialog.showDialog( parent, title, heading, message, details, Resources.getString("Dialogs.disable"), Resources.getString("Dialogs.show_details"), Resources.getString("Dialogs.hide_details"), messageType, null ); } }); } public static Future<?> showDetailsDisableable( int messageType, String details, Object key, String messageKey, Object... args) { return showDetailsDisableable( messageType, getFrame(), null, details, key, messageKey, args ); } public static Future<?> showDetailsDisableable( int messageType, Component parent, String details, Object key, String messageKey, Object... args) { return showDetailsDisableable( messageType, parent, null, details, key, messageKey, args ); } public static Future<?> showDetailsDisableable( int messageType, Throwable thrown, String details, Object key, String messageKey, Object... args) { return showDetailsDisableable( messageType, getFrame(), thrown, details, key, messageKey, args ); } public static Future<?> showDetailsDisableable( int messageType, Component parent, Throwable thrown, String details, Object key, String messageKey, Object... args) { return showDetailsDisableable( messageType, parent, thrown, details, key, Resources.getString(messageKey + "_title"), Resources.getString(messageKey + "_heading"), Resources.getString(messageKey + "_message", args) ); } public static Future<?> showDetailsDisableable( final int messageType, final Component parent, final Throwable thrown, final String details, final Object key, final String title, final String heading, final String message) { if (thrown != null) logger.error("", thrown); return DialogUtils.enqueue(new Runnable() { public void run() { DetailsDialog.showDialog( parent, title, heading, message, details, Resources.getString("Dialogs.disable"), Resources.getString("Dialogs.show_details"), Resources.getString("Dialogs.hide_details"), messageType, key ); } }); } private static Frame getFrame() { return GameModule.getGameModule() == null ? null : GameModule.getGameModule().getFrame(); } }