El código siguiente es el texto del archivo CalculationHistoryHandler.egl después de la Lección 8.
package handlers;
import com.ibm.egl.rui.infobus.InfoBus;
import com.ibm.egl.rui.widgets.DataGrid;
import com.ibm.egl.rui.widgets.DataGridColumn;
import com.ibm.egl.rui.widgets.DataGridFormatters;
import com.ibm.egl.rui.widgets.DataGridLib;
import libraries.MortgageLib;
import services.MortgageCalculationResult;
handler CalculationHistoryHandler type RUIhandler
{initialUI = [ historyResults_ui ],
onConstructionFunction = start,
cssFile="css/MortgageUIProject.css",
title="CalculationHistoryHandler"}
historyResults MortgageCalculationResult[0];
historyResults_ui DataGrid {
selectionMode = DataGridLib.SINGLE_SELECTION,
selectionListeners ::= cellClicked,
columns = [
new DataGridColumn {name = "loanAmount", displayName = "Principal",
width = 80, alignment = DataGridLib.ALIGN_RIGHT,
formatters = [ formatDollars ]},
new DataGridColumn {name = "interestRate", displayName = "Rate",
width = 80, alignment = DataGridLib.ALIGN_RIGHT,
formatters = [ DataGridFormatters.percentage ]},
new DataGridColumn {name = "term", displayName = "Years",
width = 50, alignment = DataGridLib.ALIGN_RIGHT},
new DataGridColumn {name = "monthlyPayment", displayName = "Payment",
width = 70, alignment = DataGridLib.ALIGN_RIGHT,
formatters = [ formatDollars ]}
],
data = historyResults as any[] };
function start()
InfoBus.subscribe("mortgageApplication.mortgageCalculated", addResultRecord);
end
// Actualizar la cuadrícula para incluir el cálculo más reciente de la hipoteca
function addResultRecord(eventName STRING in, dataObject ANY in)
resultRecord MortgageCalculationResult =
dataObject as MortgageCalculationResult;
historyResults.appendElement(resultRecord);
historyResults_ui.data = historyResults as ANY[];
end
// Publicar un evento en el InfoBus siempre que el usuario selecciona un cálculo antiguo
function cellClicked(myGrid DataGrid in)
updateRec MortgageCalculationResult =
myGrid.getSelection()[1] as MortgageCalculationResult;
InfoBus.publish("mortgageApplication.mortgageResultSelected", updateRec);
end
function formatDollars(class string, value string, rowData any in)
value = mortgageLib.formatMoney(value);
end
end