package aima.gui.swing.applications.robotics.simple;
import aima.core.robotics.impl.datatypes.Angle;
import aima.gui.swing.applications.robotics.components.AnglePanel;
import aima.gui.swing.applications.robotics.components.IRobotGui;
import aima.gui.swing.applications.robotics.components.Settings;
import aima.gui.swing.framework.util.GuiBase;
/**
* An implementation of {@link IRobotGui} for {@link VirtualRobot}.<br/>
* As the virtual robot does not need a graphical user interface, this class is a minimalist implementation.
*
* @author Arno von Borries
* @author Jan Phillip Kretzschmar
* @author Andreas Walscheid
*
*/
public final class VirtualRobotGui implements IRobotGui, AnglePanel.ChangeListener {
private VirtualRobot robot;
/**
* @param robot the robot that will be managed.
*/
public VirtualRobotGui(VirtualRobot robot) {
this.robot = robot;
}
@Override
public boolean initializeRobot() {
try {
robot.setRandomPose();
return true;
} catch(Exception e) {
return false;
}
}
@Override
public void destructRobot() { }
@Override
public void notifyInitialize() {
GuiBase.showMessageBox("The robot has to be initialized first!");
}
@Override
public String getButtonString() {
return DEFAULT_BUTTON_STRING;
}
@Override
public void loadSettings(Settings settingsGui) { }
@Override
public void saveSettings(Settings settingsGui) { }
@Override
public void notify(Angle[] angles) {
robot.setRangeReadingAngles(angles);
}
}