
jadex.bdi.examples.alarmclock.AlarmsGui Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jadex-applications-bdi Show documentation
Show all versions of jadex-applications-bdi Show documentation
The Jadex BDI applications package contain
several example applications, benchmarks and
testcases using BDI agents.
The newest version!
package jadex.bdi.examples.alarmclock;
import jadex.bdi.runtime.IBDIExternalAccess;
import jadex.bdi.runtime.IBDIInternalAccess;
import jadex.bridge.IComponentStep;
import jadex.bridge.IInternalAccess;
import jadex.bridge.service.types.clock.IClockService;
import jadex.commons.future.IFuture;
import jadex.commons.gui.future.SwingDefaultResultListener;
import jadex.commons.gui.jtable.ObjectTableModel;
import jadex.commons.transformation.annotations.Classname;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import jadex.commons.beans.PropertyChangeEvent;
import jadex.commons.beans.PropertyChangeListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.table.TableCellRenderer;
/**
* The alarm dialog presenting a list of alarms..
*/
public class AlarmsGui extends JFrame
{
//-------- attributes --------
/** The alarms table. */
protected JTable alarms;
/** The agent. */
protected IBDIExternalAccess agent;
/** The property change listener. */
protected PropertyChangeListener plis;
//-------- constructors --------
/**
* Create a new test center panel.
*/
public AlarmsGui(final IBDIExternalAccess agent)
{
super("Alarms");
this.agent = agent;
this.plis = new PropertyChangeListener()
{
public void propertyChange(PropertyChangeEvent evt)
{
//System.out.println("-----:"+evt);
if(evt.getPropertyName().equals("alarmtime"))
alarms.repaint();
}
};
final ObjectTableModel tadata = new ObjectTableModel(new String[]{"Message", "Mode", "Active"})
{
public void setValueAt(Object value, int row, int col)
{
Alarm alarm = (Alarm)getObjectForRow(row);
//System.out.println("alarm is: "+alarm);
alarm.setActive(((Boolean)value).booleanValue());
modifyData(value, row, col);
fireTableCellUpdated(row, col);
}
};
tadata.setColumnClass(Boolean.class, 2);
tadata.setColumnEditable(true, 2);
agent.scheduleStep(new IComponentStep()
{
public IFuture execute(IInternalAccess ia)
{
// SServiceProvider.getService(agent.getServiceProvider(), IClockService.class)
ia.getServiceContainer().getRequiredService("clockservice")
.addResultListener(new SwingDefaultResultListener(AlarmsGui.this)
{
public void customResultAvailable(Object result)
{
final IClockService cs = (IClockService)result;
alarms = new JTable(tadata)
{
public Component prepareRenderer(
TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
if(!isRowSelected(row))
{
Alarm alarm = (Alarm)tadata.getObjectForRow(row);
// IClockService cs = (IClockService)agent.getServiceContainer().getService(IClockService.class);
if(alarm.getAlarmtime(cs.getTime())()
{
@Classname("alarms")
public IFuture execute(IInternalAccess ia)
{
IBDIInternalAccess bia = (IBDIInternalAccess)ia;
final Alarm[] alarms = (Alarm[])bia.getBeliefbase().getBeliefSet("alarms").getFacts();
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
for(int i=0; i()
{
@Classname("addAlarm")
public IFuture execute(IInternalAccess ia)
{
IBDIInternalAccess bia = (IBDIInternalAccess)ia;
bia.getBeliefbase().getBeliefSet("alarms").addFact(alarm);
return IFuture.DONE;
}
});
// agent.getBeliefbase().addBeliefSetFact("alarms", alarm);
ObjectTableModel tadata = (ObjectTableModel)alarms.getModel();
tadata.insertRow(rowcnt, new Object[]{alarm.getMessage(),
alarm.getMode(), Boolean.valueOf(alarm.isActive())}, alarm);
}
/**
* remove a row from the table.
* Updates belief set "alarms".
* Removes row from the jtable.
* Removes a property change listener from the alarm.
* @param alarm The alarm.
*/
public void removeRow(final Alarm alarm)
{
// System.out.println("Removing:"+alarm);
agent.scheduleStep(new IComponentStep()
{
@Classname("removeAlarm")
public IFuture execute(IInternalAccess ia)
{
IBDIInternalAccess bia = (IBDIInternalAccess)ia;
bia.getBeliefbase().getBeliefSet("alarms").removeFact(alarm);
return IFuture.DONE;
}
});
// agent.getBeliefbase().removeBeliefSetFact("alarms", alarm);
ObjectTableModel tadata = (ObjectTableModel)alarms.getModel();
tadata.removeRow(alarm);
alarm.removePropertyChangeListener(plis);
}
/**
* Main for starting.
*/
public static void main(String[] args)
{
/*AlarmsGui ad = new AlarmsGui(null);
ad.pack();
ad.setVisible(true);*/
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy