/*
* This file is part of JGAP.
*
* JGAP offers a dual license model containing the LGPL as well as the MPL.
*
* For licensing information please see the file license.txt included with JGAP
* or have a look at the top of class org.jgap.Chromosome which representatively
* includes the JGAP license policy applicable for any file delivered with JGAP.
*/
package org.jgap.data.config;
import java.util.*;
import org.jgap.*;
/**
* The interface for the GUI to retrieve the information about what a
* Configurable looks like and how it must be rendered.
*
* @author Siddhartha Azad
* @since 2.3
* */
public interface ConfigurationHandler {
/** String containing the CVS revision. Read out via reflection!*/
final static String CVS_REVISION = "$Revision: 1.5 $";
/**
* Return the name of this Configuration Object to be used in the properties
* file.
* @return name of this config Object (name of what you are configuring)
*/
String getName();
/**
* Return the information to generate the GUI for configuring this class.
* @return a list of ConfigProperty objects
*/
List getConfigProperties();
/**
* Method that will populate a Configurable with the properties in the
* config file.
*
* @author Siddhartha Azad
* @since 2.3
*/
void readConfig()
throws ConfigException, InvalidConfigurationException;
/**
* Get the namespace to be used in the config file for the Configurable
* this ConfigurationHandler belongs to.
* @return namepsace of the Configurable
*
* @author Siddhartha Azad
* @since 2.3
*/
String getNS();
/**
* Set the Configurable to which this ConfigurationHandler belongs.
* @param a_configurable The Configurable to which this ConfigurationHandler
* belongs.
*
* @author Siddhartha Azad
* @since 2.3
*/
void setConfigurable(Configurable a_configurable);
}