I am not getting the initial Value for Light Column and after clicking and selecting only it starts displaying.
also, for column account Name, I am not able to make it display as String. where I am going wrong.sendhaDoubt.PNG
Code:
final SimpleComboBox<String> comv = new SimpleComboBox<String>();
comv.setSimpleValue("Shade");
comv.setForceSelection(true);
comv.setTriggerAction(TriggerAction.ALL);
comv.add("Shade");
comv.add("Mostly Shady");
comv.add("Sun or Shade");
comv.add("Mostly Sunny");
comv.add("Sunny");
CellEditor editor1 = new CellEditor(comv) {
@Override
public Object preProcessValue(Object value) {
if (value == null) {
return value;
}
return comv.findModel(value.toString());
}
@Override
public Object postProcessValue(Object value) {
if (value == null) {
return value;
}
return ((ModelData) value).get("value");
}
};
ColumnConfig column1 = new ColumnConfig();
column1.setId("light");
column1.setHeader("Light");
column1.setWidth(130);
column1.setEditor(editor1);
configs.add(column1);
List<RoleDTO> listRoleDto = response.getListRoleDto();
List<String> listOfRoleName = new ArrayList<String>();
for (int i = 0; i < listRoleDto.size(); i++) {
RoleDTO roleDto=listRoleDto.get(i);
listOfRoleName.add(roleDto.getRoleName());
}
final SimpleComboBox<String> combo = new SimpleComboBox<String>();
combo.setForceSelection(true);
combo.setTriggerAction(TriggerAction.ALL);
combo.add(listOfRoleName);
CellEditor editor2 = new CellEditor(combo) {
@Override
public Object preProcessValue(Object value) {
System.out.println(".preProcessValue()" +value);
if (value == null) {
return value;
}
return combo.findModel(value.toString());
}
@Override
public Object postProcessValue(Object value) {
System.out.println(".postProcessValue() "+value);
if (value == null) {
return value;
}
System.out.println(((ModelData) value).get(UserResult.ROLE_NAME));
return ((ModelData) value).get("value");
}
};
ColumnConfig statusColumn = new ColumnConfig();
statusColumn.setId(UserResult.ROLE_NAME);
// statusColumn.setRenderer(getRoleNameRenderer());
statusColumn.setEditor(editor2);
statusColumn.setWidth(140);
statusColumn.setHeader(Constants.VU_ROLE);
configs.add(statusColumn);
List<AccountDTO> listAccountDto = response.getListOfAccountDto();
List<ModelData> listModeldata=getModelData(listAccountDto);
List<String> listOfAccountName = new ArrayList<String>();
for (int i = 0; i < listAccountDto.size(); i++) {
AccountDTO accountDto=listAccountDto.get(i);
listOfAccountName.add(accountDto.getAccountName());
}
MultiSelectComboBox multiSelectComboBox = getMultiSelectComboBox(null, "123", 150, "label", listModeldata);
CellEditor editor3 = new CellEditor(multiSelectComboBox) {
@Override
public Object preProcessValue(Object value) {
System.out.println(".preProcessValue()" +value);
if (value == null) {
return value;
}
return combo.findModel(value.toString());
}
@Override
public Object postProcessValue(Object value) {
System.out.println(".postProcessValue() "+value);
if (value == null) {
return value;
}
return ((ModelData) value).get("value");
}
};
ColumnConfig typeColumn = new ColumnConfig();
typeColumn.setId(UserResult.ACCOUNT_NAME);
typeColumn.setHeader(Constants.VU_ACCOUNT_NAME);
typeColumn.setWidth(150);
typeColumn.setEditor(editor3);
// typeColumn.setRenderer(getAccountNameRenderer());
typeColumn.setAlignment(HorizontalAlignment.LEFT);
configs.add(typeColumn);
ColumnConfig linksColumn = new ColumnConfig();
linksColumn.setId(UserResult.USER_ID);
// linksColumn.setRenderer(getLinksRenderer());
linksColumn.setWidth(80);
linksColumn.setHeader(Constants.VU_ACTIONS);
linksColumn.setAlignment(HorizontalAlignment.LEFT);
configs.add(linksColumn);
ColumnModel cm = new ColumnModel(configs);
final EditorGrid<AccountResult> grid = new EditorGrid<AccountResult>(store, cm);
// grid = new Grid<UserResult>(store, cm);
grid.setHeight(390);
grid.setAutoWidth(true);
grid.setTrackMouseOver(false);
grid.setStripeRows(true);
Registry.register(UserDetailsSummaryListUpdated.class.getName(), grid);
this.add(grid);
MultiSelectComboBox Class
public class MultiSelectComboBox extends TriggerField {
private Dialog checkBoxListHolder;
private CheckBoxListView listView;
private ListStore store;
private String delimiter = ",";
private boolean readOnly;
public MultiSelectComboBox() {
store = new ListStore();
listView = new CheckBoxListView();
}
@Override
protected void onTriggerClick(ComponentEvent ce) {
super.onTriggerClick(ce);
if(readOnly) {
return;
}
System.out.println("Inside onTriggerClick");
checkBoxListHolder.setSize(getWidth(), 200);
listView.setWidth(getWidth());
checkBoxListHolder.setPosition(getAbsoluteLeft(),
getAbsoluteTop() + getHeight());
if(checkBoxListHolder.isVisible()) {
checkBoxListHolder.hide();
}
else {
checkBoxListHolder.show();
}
}
@Override
protected void onRender(Element target, int index) {
super.onRender(target, index);
System.out.println("Inside onRender");
checkBoxListHolder = new Dialog();
checkBoxListHolder.setClosable(false);
checkBoxListHolder.setHeaderVisible(false);
checkBoxListHolder.setFooter(false);
checkBoxListHolder.setFrame(false);
checkBoxListHolder.setResizable(false);
checkBoxListHolder.setAutoHide(false);
checkBoxListHolder.getButtonBar().setVisible(false);
checkBoxListHolder.setLayout(new FillLayout());
checkBoxListHolder.add(listView);
listView.setStore(store);
setValue(parseCheckedValues(listView));
checkBoxListHolder.addWindowListener(new WindowListener(){
@Override
public void windowHide(WindowEvent we) {
System.out.println("Inside windowHide");
setValue(parseCheckedValues(listView));
}
});
}
public void setChecked(List<AccountDTO> listCheckedAccountDTO){
System.out.println("Inside setChecked");
for (int i = 0; i < store.getCount(); i++) {
ModelData m =store.getAt(i);
String label = m.get("label");
if(listCheckedAccountDTO!=null){
for (int j = 0; j < listCheckedAccountDTO.size(); j++) {
if(label.equals(listCheckedAccountDTO.get(j).getAccountName())){
listView.setChecked(m, true);
}
}
}
}
}
private String parseCheckedValues(CheckBoxListView checkBoxView) {
StringBuffer buf = new StringBuffer();
if(checkBoxView != null) {
System.out.println("Inside parseCheckedValues");
List<BaseModel> selected = checkBoxView.getChecked();
int index = 1, len = selected.size();
for(BaseModel c : selected) {
buf.append(c.get(listView.getDisplayProperty()));
if(index < len) {
buf.append(delimiter);
}
index++;
}
}
return buf.toString();
}
//Setter and getter
}