nmasilva
23 May 2009, 7:28 AM
hi all,
i modified the example of the EditorGrid with a DTO class. The SimpleComboBox<String> changed also to SimpleComboBox<DTO2>.
when i load the record into the grid, row are created, but are in blank. If i create a new row, pre-defined values does appear, but the combo values are available in the combobox list.
the code is above.
Thanks in advance
Nuno Silva
private ListStore<GraduacaoDTO> storeGraduacoes;
private SimpleComboBox<TipoGraduacaoDTO> comboTipoGraduacao;
private SimpleComboBox<EntidadeGraduacaoDTO> comboEntidade;
private EditorGrid<GraduacaoDTO> grid;
public EditableGridGraducoesNaoRegistadas() {
setLayout(new FlowLayout(10));
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
ColumnConfig column = new ColumnConfig();
column.setId("data");
column.setHeader(constants.dataGraduacao());
column.setWidth(80);
column.setResizable(false);
column.setMenuDisabled(true);
DateField data = new DateField();
data.setPropertyEditor(new DateTimePropertyEditor("dd/MM/yyyy"));
column.setDateTimeFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
column.setEditor(new CellEditor(data));
configs.add(column);
comboTipoGraduacao = new SimpleComboBox<TipoGraduacaoDTO>();
comboTipoGraduacao.setForceSelection(true);
comboTipoGraduacao.setTriggerAction(TriggerAction.ALL);
comboTipoGraduacao.getView().setModelProcessor(new ModelProcessor<SimpleComboValue<TipoGraduacaoDTO>>() {
public SimpleComboValue<TipoGraduacaoDTO> prepareData(SimpleComboValue<TipoGraduacaoDTO> model) {
model.set("name", model.getValue().getNome());
return model;
}
});
comboTipoGraduacao.setPropertyEditor(new ListModelPropertyEditor<SimpleComboValue<TipoGraduacaoDTO>>("name") {
@Override
public String getStringValue(SimpleComboValue<TipoGraduacaoDTO> model) {
return model.getValue().getNome();
}
});
CellEditor editorTipoGraduacao = new CellEditor(comboTipoGraduacao) {
@Override
public Object preProcessValue(Object value) {
if (value == null) {
return value;
}
return comboTipoGraduacao.findModel((TipoGraduacaoDTO) value);
}
@Override
public Object postProcessValue(Object value) {
if (value == null) {
return value;
}
return ((ModelData) value).get("value");
}
};
comboEntidade = new SimpleComboBox<EntidadeGraduacaoDTO>();
comboEntidade.setForceSelection(true);
comboEntidade.setTriggerAction(TriggerAction.ALL);
comboEntidade.getView().setModelProcessor(new ModelProcessor<SimpleComboValue<EntidadeGraduacaoDTO>>() {
public SimpleComboValue<EntidadeGraduacaoDTO> prepareData(SimpleComboValue<EntidadeGraduacaoDTO> model) {
model.set("name", model.getValue().getEntidade());
return model;
}
});
comboEntidade.setPropertyEditor(new ListModelPropertyEditor<SimpleComboValue<EntidadeGraduacaoDTO>>("name") {
@Override
public String getStringValue(SimpleComboValue<EntidadeGraduacaoDTO> model) {
return model.getValue().getEntidade();
}
});
CellEditor editorEntidade = new CellEditor(comboEntidade) {
@Override
public Object preProcessValue(Object value) {
if (value == null) {
return value;
}
return comboEntidade.findModel((EntidadeGraduacaoDTO) value);
}
@Override
public Object postProcessValue(Object value) {
if (value == null) {
return value;
}
return ((ModelData) value).get("value");
}
};
column = new ColumnConfig();
column.setId("TipoGraducao");
column.setHeader(constants.graduacao());
column.setWidth(80);
column.setResizable(false);
column.setMenuDisabled(true);
column.setEditor(editorTipoGraduacao);
configs.add(column);
column = new ColumnConfig();
column.setId("Responsavel");
column.setHeader(constants.responsavel());
column.setWidth(120);
column.setResizable(false);
column.setMenuDisabled(true);
column.setEditor(editorEntidade);
configs.add(column);
storeGraduacoes = new ListStore<GraduacaoDTO>();
ColumnModel cm = new ColumnModel(configs);
ContentPanel cp = new ContentPanel();
cp.setFrame(false);
cp.setHeaderVisible(false);
cp.setSize(350, 170);
cp.setLayout(new FitLayout());
grid = new EditorGrid<GraduacaoDTO>(storeGraduacoes, cm);
grid.setClicksToEdit(ClicksToEdit.TWO);
GridSelectionModel<GraduacaoDTO> sm = new GridSelectionModel<GraduacaoDTO>();
sm.setSelectionMode(SelectionMode.SINGLE);
grid.setSelectionModel(sm);
grid.setAutoExpandColumn("Responsavel");
grid.setAutoExpandMax(172);
cp.add(grid);
ToolBar toolBar = new ToolBar();
Button add = new Button("Adicionar");
add.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
GraduacaoDTO graduacao = new GraduacaoDTO();
graduacao.setData(new Date());
graduacao.setTipoGraduacao(comboTipoGraduacao.getStore().getAt(0).getValue());
graduacao.setEntidadeGraduacao(comboEntidade.getStore().getAt(0).getValue());
grid.stopEditing();
storeGraduacoes.insert(graduacao, storeGraduacoes.getCount());
grid.startEditing(storeGraduacoes.getCount()-1, 0);
}
});
Button remove = new Button("Remover");
remove.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
grid.stopEditing();
storeGraduacoes.remove(grid.getSelectionModel().getSelectedItem());
grid.getStore().commitChanges();
}
});
toolBar.add(add);
toolBar.add(remove);
cp.setTopComponent(toolBar);
add(cp);
}
public void setStoreTipoGraduacao(List<TipoGraduacaoDTO> data) {
comboTipoGraduacao.add(data);
}
public void setListComboEntidades(List<EntidadeGraduacaoDTO> data) {
comboEntidade.add(data);
}
public void setStoreGraduacoes(List<GraduacaoDTO> list) {
storeGraduacoes.add(list);
}
i modified the example of the EditorGrid with a DTO class. The SimpleComboBox<String> changed also to SimpleComboBox<DTO2>.
when i load the record into the grid, row are created, but are in blank. If i create a new row, pre-defined values does appear, but the combo values are available in the combobox list.
the code is above.
Thanks in advance
Nuno Silva
private ListStore<GraduacaoDTO> storeGraduacoes;
private SimpleComboBox<TipoGraduacaoDTO> comboTipoGraduacao;
private SimpleComboBox<EntidadeGraduacaoDTO> comboEntidade;
private EditorGrid<GraduacaoDTO> grid;
public EditableGridGraducoesNaoRegistadas() {
setLayout(new FlowLayout(10));
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
ColumnConfig column = new ColumnConfig();
column.setId("data");
column.setHeader(constants.dataGraduacao());
column.setWidth(80);
column.setResizable(false);
column.setMenuDisabled(true);
DateField data = new DateField();
data.setPropertyEditor(new DateTimePropertyEditor("dd/MM/yyyy"));
column.setDateTimeFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
column.setEditor(new CellEditor(data));
configs.add(column);
comboTipoGraduacao = new SimpleComboBox<TipoGraduacaoDTO>();
comboTipoGraduacao.setForceSelection(true);
comboTipoGraduacao.setTriggerAction(TriggerAction.ALL);
comboTipoGraduacao.getView().setModelProcessor(new ModelProcessor<SimpleComboValue<TipoGraduacaoDTO>>() {
public SimpleComboValue<TipoGraduacaoDTO> prepareData(SimpleComboValue<TipoGraduacaoDTO> model) {
model.set("name", model.getValue().getNome());
return model;
}
});
comboTipoGraduacao.setPropertyEditor(new ListModelPropertyEditor<SimpleComboValue<TipoGraduacaoDTO>>("name") {
@Override
public String getStringValue(SimpleComboValue<TipoGraduacaoDTO> model) {
return model.getValue().getNome();
}
});
CellEditor editorTipoGraduacao = new CellEditor(comboTipoGraduacao) {
@Override
public Object preProcessValue(Object value) {
if (value == null) {
return value;
}
return comboTipoGraduacao.findModel((TipoGraduacaoDTO) value);
}
@Override
public Object postProcessValue(Object value) {
if (value == null) {
return value;
}
return ((ModelData) value).get("value");
}
};
comboEntidade = new SimpleComboBox<EntidadeGraduacaoDTO>();
comboEntidade.setForceSelection(true);
comboEntidade.setTriggerAction(TriggerAction.ALL);
comboEntidade.getView().setModelProcessor(new ModelProcessor<SimpleComboValue<EntidadeGraduacaoDTO>>() {
public SimpleComboValue<EntidadeGraduacaoDTO> prepareData(SimpleComboValue<EntidadeGraduacaoDTO> model) {
model.set("name", model.getValue().getEntidade());
return model;
}
});
comboEntidade.setPropertyEditor(new ListModelPropertyEditor<SimpleComboValue<EntidadeGraduacaoDTO>>("name") {
@Override
public String getStringValue(SimpleComboValue<EntidadeGraduacaoDTO> model) {
return model.getValue().getEntidade();
}
});
CellEditor editorEntidade = new CellEditor(comboEntidade) {
@Override
public Object preProcessValue(Object value) {
if (value == null) {
return value;
}
return comboEntidade.findModel((EntidadeGraduacaoDTO) value);
}
@Override
public Object postProcessValue(Object value) {
if (value == null) {
return value;
}
return ((ModelData) value).get("value");
}
};
column = new ColumnConfig();
column.setId("TipoGraducao");
column.setHeader(constants.graduacao());
column.setWidth(80);
column.setResizable(false);
column.setMenuDisabled(true);
column.setEditor(editorTipoGraduacao);
configs.add(column);
column = new ColumnConfig();
column.setId("Responsavel");
column.setHeader(constants.responsavel());
column.setWidth(120);
column.setResizable(false);
column.setMenuDisabled(true);
column.setEditor(editorEntidade);
configs.add(column);
storeGraduacoes = new ListStore<GraduacaoDTO>();
ColumnModel cm = new ColumnModel(configs);
ContentPanel cp = new ContentPanel();
cp.setFrame(false);
cp.setHeaderVisible(false);
cp.setSize(350, 170);
cp.setLayout(new FitLayout());
grid = new EditorGrid<GraduacaoDTO>(storeGraduacoes, cm);
grid.setClicksToEdit(ClicksToEdit.TWO);
GridSelectionModel<GraduacaoDTO> sm = new GridSelectionModel<GraduacaoDTO>();
sm.setSelectionMode(SelectionMode.SINGLE);
grid.setSelectionModel(sm);
grid.setAutoExpandColumn("Responsavel");
grid.setAutoExpandMax(172);
cp.add(grid);
ToolBar toolBar = new ToolBar();
Button add = new Button("Adicionar");
add.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
GraduacaoDTO graduacao = new GraduacaoDTO();
graduacao.setData(new Date());
graduacao.setTipoGraduacao(comboTipoGraduacao.getStore().getAt(0).getValue());
graduacao.setEntidadeGraduacao(comboEntidade.getStore().getAt(0).getValue());
grid.stopEditing();
storeGraduacoes.insert(graduacao, storeGraduacoes.getCount());
grid.startEditing(storeGraduacoes.getCount()-1, 0);
}
});
Button remove = new Button("Remover");
remove.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
grid.stopEditing();
storeGraduacoes.remove(grid.getSelectionModel().getSelectedItem());
grid.getStore().commitChanges();
}
});
toolBar.add(add);
toolBar.add(remove);
cp.setTopComponent(toolBar);
add(cp);
}
public void setStoreTipoGraduacao(List<TipoGraduacaoDTO> data) {
comboTipoGraduacao.add(data);
}
public void setListComboEntidades(List<EntidadeGraduacaoDTO> data) {
comboEntidade.add(data);
}
public void setStoreGraduacoes(List<GraduacaoDTO> list) {
storeGraduacoes.add(list);
}