};
colMap.put(c.header, c);
colCount++;
}
final RecordDef recordDef = new RecordDef(fds);
ArrayReader reader = new ArrayReader(recordDef);
MemoryProxy proxy = new MemoryProxy( dt.data );
ColumnModel cm = new ColumnModel(cols);
store = new GroupingStore();
store.setReader(reader);
store.setDataProxy(proxy);
store.setSortInfo(new SortState("num", SortDir.ASC)); //NON-NLS
if (this.dt.groupField != null) {
store.setGroupField(dt.groupField);
}
store.load();
final GridPanel grid = new GridPanel(store, cm);
grid.setStripeRows(true);
GroupingView gv = new GroupingView();
//to stretch it out
gv.setForceFit(true);
gv.setGroupTextTpl("{text} ({[values.rs.length]} {[values.rs.length > 1 ? \"" //NON-NLS
+ constants.Items() +"\" : \"" + constants.Item() + "\"]})");
grid.setView(gv);
grid.setStore(store);
int width = 900;
if (cm.getColumnCount() > 10) {
width = 900 + (90 * (cm.getColumnCount() - 10));
}
grid.setWidth(width);
grid.setHeight(500);
//Add the cell listener for when the user wants to edit.
grid.addGridCellListener(new GridCellListenerAdapter() {
public void onCellDblClick(GridPanel grid, int rowIndex,
int colIndex, EventObject e) {
final String dataIdx = grid.getColumnModel().getDataIndex(colIndex);
final Record r = store.getAt(rowIndex);
String val = r.getAsString(dataIdx);
DTColumnConfig colConf = (DTColumnConfig) colMap.get(dataIdx);
String[] vals = dt.getValueList(colConf, getSCE());
if (vals.length == 0) {
showTextEditor(e, dataIdx, r, val, colConf);
} else {
showDropDownEditor(e, dataIdx, r, val, vals);
}
}
});
//remember any size changes
grid.addGridColumnListener(new GridColumnListenerAdapter() {
public void onColumnResize(GridPanel grid, int colIndex, int newSize) {
final String dta = grid.getColumnModel().getDataIndex(colIndex);
if (dta.equals("desc")) { //NON-NLS
dt.descriptionWidth = newSize;
} else {
if (colMap.containsKey(dta)) {
DTColumnConfig col = (DTColumnConfig) colMap.get(dta);
col.width = newSize;
}
}
}
});
Toolbar tb = new Toolbar();
Menu menu = new Menu();
menu.addItem(new Item(constants.AddRow(), new BaseItemListenerAdapter() {
public void onClick(BaseItem item, EventObject e) {
Record r = recordDef.createRecord(new Object[recordDef.getFields().length]);
r.set("num", store.getRecords().length + 1); //NON-NLS
store.add(r);
}
}));
menu.addItem(new Item(constants.RemoveSelectedRowS(), new BaseItemListenerAdapter() {
public void onClick(BaseItem item, EventObject e) {
Record[] selected = grid.getSelectionModel().getSelections();
if (com.google.gwt.user.client.Window.confirm(constants.AreYouSureYouWantToDeleteTheSelectedRowS())) {
for (int i = 0; i < selected.length; i++) {
store.remove(selected[i]);
}
renumber(store.getRecords());
}
}
}));
menu.addItem(new Item(constants.CopySelectedRowS(), new BaseItemListenerAdapter() {
public void onClick(BaseItem item, EventObject e) {
Record[] selected = grid.getSelectionModel().getSelections();
for (int i = 0; i < selected.length; i++) {
Record r = recordDef.createRecord(new Object[recordDef.getFields().length]);
Record orig = selected[i];
for (int j = 0; j < fds.length; j++) {
r.set(fds[j].getName(), orig.getAsString(fds[j].getName()));
}
store.add(r);