*/
public void dispatch()
{
try
{
BridgePeer peer = (BridgePeer) getSource();
TableModel model = _table.getModel();
int rows = model.getRowCount();
int cols = model.getColumnCount();
for (int i = 0; i < rows; i++)
{
//handle cell events
for (int j = 0; j < cols; j++)
{
boolean edit = model.isCellEditable(i, j);
if (edit)
{
TableCellEditor editor = _table.getCellEditor(i, j);
Component com = _table.prepareEditor(editor, i, j);
BridgePeer childPeer = _context.getContext().getPeer(com);
if (childPeer == null)
{
_table.add(com); //forge the peer creation
com.addNotify();
childPeer = _context.getContext().getPeer(com);
}
String oldId = childPeer.getId();
String newId = peer.getId() + "_" + i + "_" + j;
childPeer.setId(newId);
try
{
if (((DefaultMapInputDelegate) childPeer.getInputDelegate()).hasEvent(childPeer, _inputForm))
{
if (_table.editCellAt(i, j))
{
((BridgeEventQueue)_context.getEventQueue()).setImmediateDispatch(true);
try
{
childPeer.processInput(_context, _inputForm);
} finally
{
((BridgeEventQueue) _context.getEventQueue()).setImmediateDispatch(false);
}
} else
{
_logger.severe("Cannot focus cell on " + i + ", " + j);
}
}
} finally
{
childPeer.setId(oldId);
}
}
}
}
} catch (InputException ex)