Hello! I wanted to share this basic that I did and it works for me.
Perhaps they can serve as a base for someone who needs something, and
helps him out of step.
I hope that they can be useful!
Greetings!
Jero.
------------------------------------------------------------------------------------------------------------
import java.util.ArrayList;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.cellview.client.CellList;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.SingleSelectionModel;
public class DisponibleSeleccionItemWidget extends Composite {
private HorizontalPanel pnlPrincipal;
private VerticalPanel pnlBotones;
private Button btnIzquierda;
private Button btnTodoIzquierda;
private Button btnDerecha;
private Button btnTodoDerecha;
private int indexSeleccionados = 0;
private int indexDisponibles = 0;
private Label lblDisponibles;
private Label lblSeleccionados;
final SingleSelectionModel<SelecctionItems> selectionModel = new
SingleSelectionModel<SelecctionItems>();
// final MultiSelectionModel<SelecctionItems> selectionModel = new
MultiSelectionModel<SelecctionItems>();
private CellList<SelecctionItems> lstSeleccionados;
private CellList<SelecctionItems> lstDisponibles;
private VerticalPanel pnlDisponibles;
private VerticalPanel pnlSeleccionados;
private ArrayList<SelecctionItems> lstSeleccionadosModel;
private ArrayList<SelecctionItems> lstDisponiblesModel;
public DisponibleSeleccionItemWidget() {
this.initCustomWidget();
this.build();
}
// Interface que tendrán que implementar los beans que popularan los
datos de este widget.
public interface SelecctionItems {
public String getDescripcion();
public Long getId();
}
public class itemlesCell extends AbstractCell<SelecctionItems> {
@Override
public void render(SelecctionItems value, Object key,
SafeHtmlBuilder sb) {
if (value == null) {
return;
}
sb.appendHtmlConstant("<table>");
sb.appendHtmlConstant("<tr><td rowspan='3'>");
sb.appendHtmlConstant("<td style='font-size:95%;'>");
sb.appendEscaped(value.getDescripcion());
sb.appendHtmlConstant("</td></tr></table>");
}
}
private void initCustomWidget() {
// Instanciamiento
---------------------------------------------------------------------
this.lstDisponibles = new CellList<SelecctionItems>(new
itemlesCell());
this.lstSeleccionados = new CellList<SelecctionItems>(new
itemlesCell());
this.lstDisponiblesModel = new ArrayList<SelecctionItems>();
this.lstSeleccionadosModel = new ArrayList<SelecctionItems>();
this.pnlPrincipal = new HorizontalPanel();
this.pnlBotones = new VerticalPanel();
this.pnlSeleccionados = new VerticalPanel();
this.pnlDisponibles = new VerticalPanel();
this.lblDisponibles = new Label("Disponibles:");
this.lblSeleccionados = new Label("Seleccionado:");
this.btnDerecha = new Button(">");
this.btnIzquierda = new Button("<");
this.btnTodoDerecha = new Button(">>");
this.btnTodoIzquierda = new Button("<<");
// CSS & CONFIG
-------------------------------------------------------------------------
this.pnlBotones.setSpacing(10);
this.lstDisponibles.setSelectionModel(selectionModel);
this.lstSeleccionados.setSelectionModel(selectionModel);
this.pnlPrincipal.addStyleName("disponibleSeleccionPrincipalStyle");
this.pnlBotones.addStyleName("disponibleSeleccionCenterStyle");
this.lstDisponibles.addStyleName("disponibleSeleccionListasStyle");
this.lstSeleccionados.addStyleName("disponibleSeleccionListasStyle");
String widthButton = "30px";
this.btnDerecha.setWidth(widthButton);
this.btnIzquierda.setWidth(widthButton);
this.btnTodoDerecha.setWidth(widthButton);
this.btnTodoIzquierda.setWidth(widthButton);
}
public void build() {
// Ensamble
-----------------------------------------------------------------------------
this.pnlPrincipal.add(pnlDisponibles);
this.pnlPrincipal.add(pnlBotones);
this.pnlPrincipal.add(pnlSeleccionados);
this.pnlPrincipal.add(lstDisponibles);
this.pnlPrincipal.add(lstSeleccionados);
this.pnlDisponibles.add(lblDisponibles);
this.pnlDisponibles.add(lstDisponibles);
this.pnlSeleccionados.add(lblSeleccionados);
this.pnlSeleccionados.add(lstSeleccionados);
this.pnlBotones.add(this.btnDerecha);
this.pnlBotones.add(this.btnIzquierda);
this.pnlBotones.add(this.btnTodoDerecha);
this.pnlBotones.add(this.btnTodoIzquierda);
// Listener
------------------------------------------------------------------------------
this.btnDerecha.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
ArrayList<SelecctionItems> itemesSeleccionados =
getItemSeleccionados(lstDisponibles);
addSeleccionadosModel(itemesSeleccionados);
lstSeleccionados.setRowData(0,
lstSeleccionadosModel);
lstSeleccionados.setRowCount(lstSeleccionadosModel.size());
lstSeleccionados.redraw();
indexDisponibles--;
indexSeleccionados++;
// Quitamos el item seleccionado de la tabla de
origen
lstDisponiblesModel.removeAll(itemesSeleccionados); // Quitamos
del modelo los seleccionados
lstDisponibles.setRowData(0,
lstDisponiblesModel);
lstDisponibles.setRowCount(lstDisponiblesModel.size());
lstDisponibles.redraw();
}
});
this.btnTodoDerecha.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
addSeleccionadosModel(lstDisponiblesModel);
lstSeleccionados.setRowData(0,
lstSeleccionadosModel);
lstSeleccionados.setRowCount(lstSeleccionadosModel.size());
lstSeleccionados.redraw();
indexDisponibles = 0;
indexSeleccionados = lstDisponiblesModel.size();
// Quitamos el item seleccionado de la tabla de
origen
lstDisponiblesModel.clear(); // Quitamos del
modelo los
seleccionados
lstDisponibles.setRowCount(0);
lstDisponibles.redraw();
}
});
this.btnTodoIzquierda.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
addDisponiblesModel(lstSeleccionadosModel);
lstDisponibles.setRowData(0,
lstDisponiblesModel);
lstDisponibles.setRowCount(lstDisponiblesModel.size());
lstDisponibles.redraw();
indexSeleccionados = 0;
indexDisponibles = lstSeleccionadosModel.size();
// Quitamos el item seleccionado de la tabla de
origen
lstSeleccionadosModel.clear(); // Quitamos del
modelo los
seleccionados
lstSeleccionados.setRowCount(0);
lstSeleccionados.redraw();
}
});
this.btnIzquierda.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
ArrayList<SelecctionItems> itemesSeleccionados =
getItemSeleccionados(lstSeleccionados);
addDisponiblesModel(itemesSeleccionados);
lstDisponibles.setRowData(0,
lstDisponiblesModel);
lstDisponibles.setRowCount(lstDisponiblesModel.size());
lstDisponibles.redraw();
indexDisponibles++;
indexSeleccionados--;
// Quitamos el item seleccionado de la tabla de
origen
lstSeleccionadosModel.removeAll(itemesSeleccionados); // Quitamos
del modelo los seleccionados
lstSeleccionados.setRowData(0,
lstSeleccionadosModel);
lstSeleccionados.setRowCount(lstSeleccionadosModel.size());
lstSeleccionados.redraw();
}
});
initWidget(pnlPrincipal);
}
public ArrayList<SelecctionItems> wrapperList(SelecctionItems
SelecctionItems) {
ArrayList<SelecctionItems> list = new
ArrayList<SelecctionItems>();
list.add(SelecctionItems);
return list;
}
public void addListaDisponibles(ArrayList<SelecctionItems>
usuariositemBean) {
if (usuariositemBean == null || usuariositemBean.size() == 0)
return;
for (SelecctionItems SelecctionItems : usuariositemBean) {
this.lstDisponibles.setRowData(indexDisponibles++,
this.wrapperList(SelecctionItems));
}
this.addDisponiblesModel(usuariositemBean);
}
public void addSeleccionados(SelecctionItems usuariositemBean) {
addListaSeleccionados(wrapperList(usuariositemBean));
}
public void addDisponibles(SelecctionItems itemSelec) {
addListaDisponibles(wrapperList(itemSelec));
}
public void addListaSeleccionados(ArrayList<SelecctionItems>
selecctionsItems) {
if (selecctionsItems == null || selecctionsItems.size() == 0)
return;
for (SelecctionItems SelecctionItems : selecctionsItems) {
this.lstSeleccionados.setRowData(indexSeleccionados++,
this.wrapperList(SelecctionItems));
}
this.addSeleccionadosModel(selecctionsItems);
}
private ArrayList<SelecctionItems>
getItemSeleccionados(CellList<SelecctionItems> cellList) {
ArrayList<SelecctionItems> itemesSeleccionados = new
ArrayList<SelecctionItems>();
for (int i = 0; i < cellList.getDisplayedItems().size(); i++) {
SelecctionItems item =
cellList.getDisplayedItems().get(i);
if (cellList.getSelectionModel().isSelected(item)) {
itemesSeleccionados.add(item);
}
}
return itemesSeleccionados;
}
private void addSeleccionadosModel(ArrayList<SelecctionItems>
usuariositemBean) {
for (SelecctionItems SelecctionItems : usuariositemBean) {
lstSeleccionadosModel.add(SelecctionItems);
}
}
private void addDisponiblesModel(ArrayList<SelecctionItems>
usuariositemBean) {
for (SelecctionItems SelecctionItems : usuariositemBean) {
lstDisponiblesModel.add(SelecctionItems);
}
}
public ArrayList<SelecctionItems> getLstSeleccionadosModel() {
return lstSeleccionadosModel;
}
public ArrayList<SelecctionItems> getLstDisponiblesModel() {
return lstDisponiblesModel;
}
// Obtenemos los items seleccionados de cualquiera de las dos listas.
private ArrayList<SelecctionItems> getItemListaDisponiblesSelected()
{
return this.getItemSeleccionados(this.lstDisponibles);
}
private ArrayList<SelecctionItems>
getItemListaSeleccionadosSelected() {
return this.getItemSeleccionados(this.lstSeleccionados);
}
}
-------------------------------------------------------------------------------------------------------
CSS Style
--------------------------------------------------------------------------------------------------------
.disponibleSeleccionListasStyle {
background-color: beige;
height: 225px;
width: 200px;
}
.disponibleSeleccionPrincipalStyle {
background-color: Silver;
height: 225px;
border-style: dotted;
border-width: 1px;
}
.disponibleSeleccionCenterStyle {
margin-top: 90%;
}
--
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en.