/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* ComponentHelper.java
* Copyright (C) 2005 University of Waikato, Hamilton, New Zealand
*
*/
package weka.gui;
import java.awt.Component;
import java.awt.Image;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
/**
* A helper class for some common tasks with Dialogs, Icons, etc.
*
*
* @author FracPete (fracpete at waikato dot ac dot nz)
* @version $Revision: 1.3 $
*/
public class ComponentHelper {
/** the default directories for images */
public final static String[] IMAGES = {"weka/gui/", "weka/gui/images/"};
/**
* returns the ImageIcon for a given filename and directory, NULL if not successful
*
* @param dir the directory to look in for the file
* @param filename the file to retrieve
* @return the imageicon if found, otherwise null
*/
public static ImageIcon getImageIcon(String dir, String filename) {
URL url;
ImageIcon result;
int i;
result = null;
url = Loader.getURL(dir, filename);
// try to find the image at default locations
if (url == null) {
for (i = 0; i < IMAGES.length; i++) {
url = Loader.getURL(IMAGES[i], filename);
if (url != null)
break;
}
}
if (url != null)
result = new ImageIcon(url);
return result;
}
/**
* returns the ImageIcon for a given filename, NULL if not successful
*
* @param filename the file to retrieve
* @return the imageicon if found, otherwise null
*/
public static ImageIcon getImageIcon(String filename) {
return getImageIcon("", filename);
}
/**
* returns the Image for a given directory and filename, NULL if not successful
*
* @param dir the directory to look in for the file
* @param filename the file to retrieve
* @return the image if found, otherwise null
*/
public static Image getImage(String dir, String filename) {
ImageIcon img;
Image result;
result = null;
img = getImageIcon(dir, filename);
if (img != null)
result = img.getImage();
return result;
}
/**
* returns the Image for a given filename, NULL if not successful
*
* @param filename the file to retrieve
* @return the image if found, otherwise null
*/
public static Image getImage(String filename) {
ImageIcon img;
Image result;
result = null;
img = getImageIcon(filename);
if (img != null)
result = img.getImage();
return result;
}
/**
* displays a message box with the given title, message, buttons and icon
* ant the dimension.
* it returns the pressed button.
* @param parent the parent component
* @param title the title of the message box
* @param msg the text to display
* @param buttons the captions of the buttons to display
* @param messageType the type of message like defined in JOptionPane
(the icon is determined on this basis)
* @return the button that was pressed
* @see JOptionPane
*/
public static int showMessageBox(Component parent, String title, String msg, int buttons, int messageType) {
String icon;
switch (messageType) {
case JOptionPane.ERROR_MESSAGE:
icon = "weka/gui/images/error.gif";
break;
case JOptionPane.INFORMATION_MESSAGE:
icon = "weka/gui/images/information.gif";
break;
case JOptionPane.WARNING_MESSAGE:
icon = "weka/gui/images/information.gif";
break;
case JOptionPane.QUESTION_MESSAGE:
icon = "weka/gui/images/question.gif";
break;
default:
icon = "weka/gui/images/information.gif";
break;
}
return JOptionPane.showConfirmDialog(parent, msg, title, buttons, messageType, getImageIcon(icon));
}
/**
* pops up an input dialog
*
* @param parent the parent of this dialog, can be null
* @param title the title to display, can be null
* @param msg the message to display
* @param initialValue the initial value to display as input
* @return the entered value, or if cancelled null
*/
public static String showInputBox(Component parent, String title, String msg, Object initialValue) {
Object result;
if (title == null)
title = "Input...";
result = JOptionPane.showInputDialog(
parent, msg, title, JOptionPane.QUESTION_MESSAGE, getImageIcon("question.gif"), null, initialValue);
if (result != null)
return result.toString();
else
return null;
}
}