jadex.micro.tutorial.ChatGuiD2 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jadex-applications-micro Show documentation
Show all versions of jadex-applications-micro Show documentation
The Jadex micro applications package contains several example applications, benchmarks and testcases using micro agents.
package jadex.micro.tutorial;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Collection;
import java.util.Iterator;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import jadex.bridge.IComponentStep;
import jadex.bridge.IExternalAccess;
import jadex.bridge.IInternalAccess;
import jadex.bridge.service.component.IRequiredServicesFeature;
import jadex.commons.future.DefaultResultListener;
import jadex.commons.future.IFuture;
/**
* Basic chat user interface.
*/
public class ChatGuiD2 extends JFrame
{
//-------- attributes --------
/** The textfield with received messages. */
protected JTextArea received;
//-------- constructors --------
/**
* Create the user interface
*/
public ChatGuiD2(final IExternalAccess agent)
{
super(agent.getComponentIdentifier().getName());
this.setLayout(new BorderLayout());
received = new JTextArea(10, 20);
final JTextField message = new JTextField();
JButton send = new JButton("send");
JPanel panel = new JPanel(new BorderLayout());
panel.add(message, BorderLayout.CENTER);
panel.add(send, BorderLayout.EAST);
getContentPane().add(new JScrollPane(received), BorderLayout.CENTER);
getContentPane().add(panel, BorderLayout.SOUTH);
send.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
final String text = message.getText();
agent.scheduleStep(new IComponentStep()
{
public IFuture execute(IInternalAccess ia)
{
IFuture> chatservices = ia.getComponentFeature(IRequiredServicesFeature.class).getRequiredServices("chatservices");
chatservices.addResultListener(new DefaultResultListener>()
{
public void resultAvailable(Collection result)
{
for(Iterator it=result.iterator(); it.hasNext(); )
{
IChatService cs = it.next();
cs.message(agent.getComponentIdentifier().getName(), text);
}
}
});
return IFuture.DONE;
}
});
}
});
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
agent.killComponent();
}
});
pack();
setVisible(true);
}
/**
* Method to add a new text message.
* @param text The text.
*/
public void addMessage(final String text)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
received.append(text+"\n");
}
})
;}
}