package jadex.tools.jcc;
import jadex.bdi.runtime.IBDIExternalAccess;
import jadex.bdi.runtime.IBDIInternalAccess;
import jadex.bridge.IComponentListener;
import jadex.bridge.IComponentStep;
import jadex.bridge.IInternalAccess;
import jadex.commons.ChangeEvent;
import jadex.commons.service.IServiceProvider;
import javax.swing.SwingUtilities;
/**
* The Jadex control center.
*/
public class AgentControlCenter extends ControlCenter
{
//-------- attributes --------
/** The external access. */
protected IBDIExternalAccess agent;
//-------- constructors --------
/**
* Create a control center.
*/
public AgentControlCenter(IServiceProvider provider, String plugins_prop, final IBDIExternalAccess agent)
{
super(provider, agent.getComponentIdentifier(), plugins_prop);
this.agent = agent;
agent.scheduleStep(new IComponentStep()
{
public Object execute(IInternalAccess ia)
{
((IBDIInternalAccess)ia).addComponentListener(new IComponentListener()
{
public void componentTerminating(ChangeEvent ae)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
if(!killed)
{
saveProject();
// closeProject();
closePlugins();
killed = true;
}
window.setVisible(false);
window.dispose();
}
});
}
public void componentTerminated(ChangeEvent ae)
{
}
});
return null;
}
});
}
/**
* Get the agent.
* @return The agent.
*/
public IBDIExternalAccess getAgent()
{
return this.agent;
}
}