/* * 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. */ /* * GUIDefaults.java * Copyright (C) 2006 University of Waikato, Hamilton, New Zealand */ package tr.gov.ulakbim.jDenetX.gui; import tr.gov.ulakbim.jDenetX.core.PropertiesReader; import weka.core.Utils; import java.io.Serializable; import java.util.Collections; import java.util.Enumeration; import java.util.Properties; import java.util.Vector; /** * This class offers get methods for the default GUI settings in * the props file <code>moa/gui/GUI.props</code>. * * @author FracPete (fracpete at waikato dot ac dot nz) * @version $Revision: 6103 $ * @see #PROPERTY_FILE */ public class GUIDefaults implements Serializable { /** * for serialization. */ private static final long serialVersionUID = 4954795757927524225L; /** * The name of the properties file. */ public final static String PROPERTY_FILE = "moa/gui/GUI.props"; /** * Properties associated with the GUI options. */ protected static Properties PROPERTIES; static { try { PROPERTIES = PropertiesReader.readProperties(PROPERTY_FILE); } catch (Exception e) { System.err.println("Problem reading properties. Fix before continuing."); e.printStackTrace(); PROPERTIES = new Properties(); } } /** * returns the value for the specified property, if non-existent then the * default value. * * @param property the property to retrieve the value for * @param defaultValue the default value for the property * @return the value of the specified property */ public static String get(String property, String defaultValue) { return PROPERTIES.getProperty(property, defaultValue); } /** * returns the associated properties file. * * @return the props file */ public final static Properties getProperties() { return PROPERTIES; } /** * Tries to instantiate the class stored for this property, optional * options will be set as well. Returns null if unsuccessful. * * @param property the property to get the object for * @param defaultValue the default object spec string * @return if successful the fully configured object, null * otherwise */ protected static Object getObject(String property, String defaultValue) { return getObject(property, defaultValue, Object.class); } /** * Tries to instantiate the class stored for this property, optional * options will be set as well. Returns null if unsuccessful. * * @param property the property to get the object for * @param defaultValue the default object spec string * @param cls the class the object must be derived from * @return if successful the fully configured object, null * otherwise */ protected static Object getObject(String property, String defaultValue, Class cls) { Object result; String tmpStr; String[] tmpOptions; result = null; try { tmpStr = get(property, defaultValue); tmpOptions = Utils.splitOptions(tmpStr); if (tmpOptions.length != 0) { tmpStr = tmpOptions[0]; tmpOptions[0] = ""; result = Utils.forName(cls, tmpStr, tmpOptions); } } catch (Exception e) { e.printStackTrace(); result = null; } return result; } /** * returns an array with the classnames of all the additional panels to * display as tabs in the GUI. * * @return the classnames */ public static String[] getTabs() { String[] result; String tabs; // read and split on comma tabs = get("Tabs", "moa.gui.ClassificationTabPanel,moa.gui.clustertab.ClusteringTabPanel"); result = tabs.split(","); return result; } /** * Returns the initial directory for the file chooser used for opening * datasets. * <p/> * The following placeholders are recognized: * <pre> * %t - the temp directory * %h - the user's home directory * %c - the current directory * %% - gets replaced by a single percentage sign * </pre> * * @return the default directory */ public static String getInitialDirectory() { String result; result = get("InitialDirectory", "%c"); result = result.replaceAll("%t", System.getProperty("java.io.tmpdir")); result = result.replaceAll("%h", System.getProperty("user.home")); result = result.replaceAll("%c", System.getProperty("user.dir")); result = result.replaceAll("%%", System.getProperty("%")); return result; } /** * only for testing - prints the content of the props file. * * @param args commandline parameters - ignored */ public static void main(String[] args) { Enumeration names; String name; Vector sorted; System.out.println("\nMOA defaults:"); names = PROPERTIES.propertyNames(); // sort names sorted = new Vector(); while (names.hasMoreElements()) sorted.add(names.nextElement()); Collections.sort(sorted); names = sorted.elements(); // output while (names.hasMoreElements()) { name = names.nextElement().toString(); System.out.println("- " + name + ": " + PROPERTIES.getProperty(name, "")); } System.out.println(); } }