Saludos
Bueno tengo un modal del tipo Confirm ( Si o Cancelar) , el problema que tengo es que al invocar la opcion “SI” se tiene que actualizar un registro( no hay problema en eso), luego actualizar una lista y por ultimo cerrar el modal(no hay problema con el close). El actualizar la lista ya lo tengo configurado.
El problema es que no se como invocar la actualizacion de la lista desde el evento del window modal.
Una opcion que se me ocurrio es que al contruir el modal le envie la referencia de la clase del Form principal (que contiene el metodo para actualizar la lista), para poder invocar el evento refresh de la lista desde la referencia, pero no me parece muy elegante.
Estado viendo unos addons pero mi restriccion es que tiene que ser lo mas nativo posible con Vaadin 7.1.
Aqui les dejo fragmento del codigo
/CLASE PRINCIPAL QUE INVOCA AL MODAL/
public class
UsersView
extends
ViewUIVaadin
{
…
public [b]
UsersView
/b{
…
Button.ClickListener listenerButton=new Button.ClickListener(){
public void buttonClick(Button.ClickEvent event) {
if(event.getButton()==buttonEnabledUser){
Long pkUserSelect = Long.valueOf(usuario.getId());
if(usuario.getEnabled()== User.ENABLED) {
ConfirmDeleteUserView confirmDeleteUserView= new ConfirmDeleteUserView(“”, usuario,resourceBundleLabel);
getUI().getCurrent().addWindow(confirmDeleteUserView);
//METODO QUE DEBERIA INVOCARSE AL DARLE “SI” en el MODAL refreshListUsers();
if (userService.disabledUser(pkUserSelect)) {
refreshListUsers();
}else {
getUI().showNotification(“Ocurrio un error”);
}
}else{ if(userService.enabledUser(pkUserSelect)){
refreshListUsers();
}else{
getUI().showNotification(“Ocurrio un error”);
}
}
}
}
};
buttonEnabledUser.addClickListener(listenerButton);
…
}
…
/METODO QUE ACTUALIZA LA LISTA/
public void [b]
refreshListUsers
/b {
Container.Indexed c=table.getContainerDataSource();
c.removeAllItems();
table.setContainerDataSource(c);
List listaUsuarios = userService.getAllUsers();
for(int i=1;i<listaUsuarios.size();i++){
user = listaUsuarios.get(i);
buildOperationsColum(user);
table.addItem(new Object {horizontalLayoutRow, user.getLogin(), user.getName() , user.getLastName()}, i);
}
table.refreshRowCache();
table.requestRepaint();
table.setImmediate(true);
}
…
}
/MODAL CONFIRM/
public class
ConfirmDeleteUserView
extends
Window
{
…
void [b]
initialize
/b{
…
Button.ClickListener listenerButton=new Button.ClickListener(){
public void buttonClick(Button.ClickEvent event) {
if(event.getButton()==btnYes){
Long pkUser = Long.valueOf(user.getId());
isUserDisabled=true;
UsersView view=(UsersView)(getParent().getUI());
getUI().getCurrent().
closeView();
/[u]
/QUE DEBO AGREGAR PARA INVOCAR AL METODO refreshListUsers() de la clase UsersView
[/u]
}else{
closeView();
}
}
};
btnYes.addClickListener(listenerButton);
btnNo.addClickListener(listenerButton);
}
}