content: package aima.gui.swing.applications.robotics.components;
  
  import aima.gui.swing.applications.robotics.GenericMonteCarloLocalization2DApp;
  
  /**
   * This interface defines functionality for a GUI that manages the robot associated with the {@link GenericMonteCarloLocalization2DApp}.
   * 
   * @author Arno von Borries
   * @author Jan Phillip Kretzschmar
   * @author Andreas Walscheid
   * 
   */
  public interface IRobotGui {
  	/**
  	 * The string that is shown in the connect button by default.
  	 */
  	String DEFAULT_BUTTON_STRING = "Initialize Robot";
  	/**
  	 * Lets the robot class connect with or initialize/reset the actual robot. 
  	 * @return true if the robot is ready for use.
  	 */
  	boolean initializeRobot();
  	/**
  	 * Lets the robot class close the connection with the actual robot. 
  	 */
  	void destructRobot();
  	/**
  	 * Informs the user that the robot has to be initialized before the MCL can be used.<br/>
  	 * This will be called if the user loads a map and presses on any of the other buttons "Move", "Range Reading" or "Auto Locate" before initializing the robot.
  	 */
  	void notifyInitialize();
  	/**
  	 * Returns a string to be shown in the button that calls {@code initializeRobot()}.<br/>
  	 * If this method is not used, return this instead: {@code return DEFAULT_BUTTON_STRING;}
  	 * @return a not null string.
  	 */
  	String getButtonString();
  	/**
  	 * Loads any values that have been stored to the properties file previously.
  	 * @param settingsGui the {@link Settings} from which the values will be loaded.
  	 */
  	void loadSettings(Settings settingsGui);
  	/**
  	 * Saves all values to the properties file that are to be restored when loading the properties again.
  	 * @param settingsGui the {@link Settings} to which the values will be saved.
  	 */
  	void saveSettings(Settings settingsGui);
  }