[4] | 1 | /* |
---|
| 2 | * This program is free software; you can redistribute it and/or modify |
---|
| 3 | * it under the terms of the GNU General Public License as published by |
---|
| 4 | * the Free Software Foundation; either version 2 of the License, or |
---|
| 5 | * (at your option) any later version. |
---|
| 6 | * |
---|
| 7 | * This program is distributed in the hope that it will be useful, |
---|
| 8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
| 9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
| 10 | * GNU General Public License for more details. |
---|
| 11 | * |
---|
| 12 | * You should have received a copy of the GNU General Public License |
---|
| 13 | * along with this program; if not, write to the Free Software |
---|
| 14 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
---|
| 15 | */ |
---|
| 16 | |
---|
| 17 | /* |
---|
| 18 | * ComponentHelper.java |
---|
| 19 | * Copyright (C) 2005 University of Waikato, Hamilton, New Zealand |
---|
| 20 | * |
---|
| 21 | */ |
---|
| 22 | |
---|
| 23 | package weka.gui; |
---|
| 24 | |
---|
| 25 | import java.awt.Component; |
---|
| 26 | import java.awt.Image; |
---|
| 27 | import java.net.URL; |
---|
| 28 | |
---|
| 29 | import javax.swing.ImageIcon; |
---|
| 30 | import javax.swing.JOptionPane; |
---|
| 31 | |
---|
| 32 | |
---|
| 33 | /** |
---|
| 34 | * A helper class for some common tasks with Dialogs, Icons, etc. |
---|
| 35 | * |
---|
| 36 | * |
---|
| 37 | * @author FracPete (fracpete at waikato dot ac dot nz) |
---|
| 38 | * @version $Revision: 1.3 $ |
---|
| 39 | */ |
---|
| 40 | |
---|
| 41 | public class ComponentHelper { |
---|
| 42 | /** the default directories for images */ |
---|
| 43 | public final static String[] IMAGES = {"weka/gui/", "weka/gui/images/"}; |
---|
| 44 | |
---|
| 45 | /** |
---|
| 46 | * returns the ImageIcon for a given filename and directory, NULL if not successful |
---|
| 47 | * |
---|
| 48 | * @param dir the directory to look in for the file |
---|
| 49 | * @param filename the file to retrieve |
---|
| 50 | * @return the imageicon if found, otherwise null |
---|
| 51 | */ |
---|
| 52 | public static ImageIcon getImageIcon(String dir, String filename) { |
---|
| 53 | URL url; |
---|
| 54 | ImageIcon result; |
---|
| 55 | int i; |
---|
| 56 | |
---|
| 57 | result = null; |
---|
| 58 | url = Loader.getURL(dir, filename); |
---|
| 59 | |
---|
| 60 | // try to find the image at default locations |
---|
| 61 | if (url == null) { |
---|
| 62 | for (i = 0; i < IMAGES.length; i++) { |
---|
| 63 | url = Loader.getURL(IMAGES[i], filename); |
---|
| 64 | if (url != null) |
---|
| 65 | break; |
---|
| 66 | } |
---|
| 67 | } |
---|
| 68 | |
---|
| 69 | if (url != null) |
---|
| 70 | result = new ImageIcon(url); |
---|
| 71 | |
---|
| 72 | return result; |
---|
| 73 | } |
---|
| 74 | |
---|
| 75 | /** |
---|
| 76 | * returns the ImageIcon for a given filename, NULL if not successful |
---|
| 77 | * |
---|
| 78 | * @param filename the file to retrieve |
---|
| 79 | * @return the imageicon if found, otherwise null |
---|
| 80 | */ |
---|
| 81 | public static ImageIcon getImageIcon(String filename) { |
---|
| 82 | return getImageIcon("", filename); |
---|
| 83 | } |
---|
| 84 | |
---|
| 85 | /** |
---|
| 86 | * returns the Image for a given directory and filename, NULL if not successful |
---|
| 87 | * |
---|
| 88 | * @param dir the directory to look in for the file |
---|
| 89 | * @param filename the file to retrieve |
---|
| 90 | * @return the image if found, otherwise null |
---|
| 91 | */ |
---|
| 92 | public static Image getImage(String dir, String filename) { |
---|
| 93 | ImageIcon img; |
---|
| 94 | Image result; |
---|
| 95 | |
---|
| 96 | result = null; |
---|
| 97 | img = getImageIcon(dir, filename); |
---|
| 98 | |
---|
| 99 | if (img != null) |
---|
| 100 | result = img.getImage(); |
---|
| 101 | |
---|
| 102 | return result; |
---|
| 103 | } |
---|
| 104 | |
---|
| 105 | /** |
---|
| 106 | * returns the Image for a given filename, NULL if not successful |
---|
| 107 | * |
---|
| 108 | * @param filename the file to retrieve |
---|
| 109 | * @return the image if found, otherwise null |
---|
| 110 | */ |
---|
| 111 | public static Image getImage(String filename) { |
---|
| 112 | ImageIcon img; |
---|
| 113 | Image result; |
---|
| 114 | |
---|
| 115 | result = null; |
---|
| 116 | img = getImageIcon(filename); |
---|
| 117 | |
---|
| 118 | if (img != null) |
---|
| 119 | result = img.getImage(); |
---|
| 120 | |
---|
| 121 | return result; |
---|
| 122 | } |
---|
| 123 | |
---|
| 124 | /** |
---|
| 125 | * displays a message box with the given title, message, buttons and icon |
---|
| 126 | * ant the dimension. |
---|
| 127 | * it returns the pressed button. |
---|
| 128 | * @param parent the parent component |
---|
| 129 | * @param title the title of the message box |
---|
| 130 | * @param msg the text to display |
---|
| 131 | * @param buttons the captions of the buttons to display |
---|
| 132 | * @param messageType the type of message like defined in <code>JOptionPane</code> (the icon is determined on this basis) |
---|
| 133 | * @return the button that was pressed |
---|
| 134 | * @see JOptionPane |
---|
| 135 | */ |
---|
| 136 | public static int showMessageBox(Component parent, String title, String msg, int buttons, int messageType) { |
---|
| 137 | String icon; |
---|
| 138 | |
---|
| 139 | switch (messageType) { |
---|
| 140 | case JOptionPane.ERROR_MESSAGE: |
---|
| 141 | icon = "weka/gui/images/error.gif"; |
---|
| 142 | break; |
---|
| 143 | case JOptionPane.INFORMATION_MESSAGE: |
---|
| 144 | icon = "weka/gui/images/information.gif"; |
---|
| 145 | break; |
---|
| 146 | case JOptionPane.WARNING_MESSAGE: |
---|
| 147 | icon = "weka/gui/images/information.gif"; |
---|
| 148 | break; |
---|
| 149 | case JOptionPane.QUESTION_MESSAGE: |
---|
| 150 | icon = "weka/gui/images/question.gif"; |
---|
| 151 | break; |
---|
| 152 | default: |
---|
| 153 | icon = "weka/gui/images/information.gif"; |
---|
| 154 | break; |
---|
| 155 | } |
---|
| 156 | |
---|
| 157 | return JOptionPane.showConfirmDialog(parent, msg, title, buttons, messageType, getImageIcon(icon)); |
---|
| 158 | } |
---|
| 159 | |
---|
| 160 | /** |
---|
| 161 | * pops up an input dialog |
---|
| 162 | * |
---|
| 163 | * @param parent the parent of this dialog, can be <code>null</code> |
---|
| 164 | * @param title the title to display, can be <code>null</code> |
---|
| 165 | * @param msg the message to display |
---|
| 166 | * @param initialValue the initial value to display as input |
---|
| 167 | * @return the entered value, or if cancelled <code>null</code> |
---|
| 168 | */ |
---|
| 169 | public static String showInputBox(Component parent, String title, String msg, Object initialValue) { |
---|
| 170 | Object result; |
---|
| 171 | |
---|
| 172 | if (title == null) |
---|
| 173 | title = "Input..."; |
---|
| 174 | |
---|
| 175 | result = JOptionPane.showInputDialog( |
---|
| 176 | parent, msg, title, JOptionPane.QUESTION_MESSAGE, getImageIcon("question.gif"), null, initialValue); |
---|
| 177 | |
---|
| 178 | if (result != null) |
---|
| 179 | return result.toString(); |
---|
| 180 | else |
---|
| 181 | return null; |
---|
| 182 | } |
---|
| 183 | } |
---|
| 184 | |
---|