hmm maybe this can help : http://larkolicio.us/ScrollTable/ExperimentTables.html http://stackoverflow.com/questions/4073624/a-gwt-celltable-with-frozen-header-and-initial-column
On Wed, Apr 27, 2011 at 11:04 AM, saida dhanavath <[email protected]>wrote: > Hi, > > Thanks for this reply, in the similar line I would like to know what is the > best way to get Scrollability on CellTable. > > Please share your thoughts on the same. > > Thanks in advance! > Saida. > > On Wed, Apr 27, 2011 at 2:28 PM, Celinio <[email protected]> wrote: > >> I finally got it working. >> The problem was that my "demandes" variable, which contains the list of >> data that i want to use to populate the celltable, was not initialized ... >> >> Thanks to SVR for pointing it out in the first place ! >> >> On Mon, Apr 25, 2011 at 3:40 PM, SVR <[email protected]> wrote: >> >>> I didnt go through your code :-), but you can create a new class that >>> implements >>> ColumnSortEvent.Handler and add it using addColumnSortHandler(). >>> You can pass the columns to the class constructor and onColumnSort >>> you can check the column being sorted like so: >>> if (event.getColumn().equals(column1)) { >>> } >>> else if (event.getColumn().equals(column2)) { >>> } >>> and so on. >>> Hope this helps. >>> >>> >>> On Fri, Apr 22, 2011 at 1:36 PM, Celinio <[email protected]> wrote: >>> >>>> Hi, >>>> I am using GWT 2.2 and the new CellTable sorting features, as described >>>> here : >>>> >>>> http://code.google.com/intl/fr-FR/webtoolkit/doc/latest/DevGuideUiCellTable.html >>>> >>>> There is a strange error (Umbrella exception, nothing else) when I use >>>> the columnSortHandler.setComparator(...) method. >>>> I commented it out. >>>> >>>> If i use the addColumnSortHandler(new ColumnSortEvent.Handler() { ...} >>>> method, it works. >>>> >>>> However on one column only. I want to be able to sort the table, on >>>> whichever column i click on. >>>> >>>> So i'm stuck : >>>> either i figure out what's wrong with the setComparator(..) method >>>> or i use the addColumnSortHandler(...) and in that case i need to >>>> figure out how to retrieve the name of the column >>>> that is currently sorted. >>>> Does anyone know what could be wrong ? >>>> Thanks >>>> >>>> Here is the code : >>>> package >>>> com.francetelecom.voltage.gestion.presentation.client.mvp.view.impl; >>>> >>>> import java.util.ArrayList; >>>> import java.util.Collections; >>>> import java.util.Comparator; >>>> import java.util.List; >>>> >>>> import com.ft.v.g.presentation.client.GwtApplication; >>>> import com.ft.v.g.presentation.client.mvp.presenter.ListPresenter; >>>> import com.ft.v.g.presentation.client.mvp.view.ListView; >>>> import com.ft.v.g.presentation.client.ui.RecherchePanel; >>>> import com.ft.v.g.presentation.client.ui.SimpleHasFeedback; >>>> import com.ft.v.model.DemandeBean; >>>> import com.google.gwt.cell.client.ClickableTextCell; >>>> import com.google.gwt.cell.client.FieldUpdater; >>>> import com.google.gwt.core.client.GWT; >>>> import com.google.gwt.safehtml.shared.SafeHtml; >>>> import com.google.gwt.safehtml.shared.SafeHtmlBuilder; >>>> import com.google.gwt.text.shared.AbstractSafeHtmlRenderer; >>>> import com.google.gwt.text.shared.SafeHtmlRenderer; >>>> import com.google.gwt.user.cellview.client.CellTable; >>>> import com.google.gwt.user.cellview.client.Column; >>>> import com.google.gwt.user.cellview.client.ColumnSortEvent; >>>> import com.google.gwt.user.cellview.client.SimplePager; >>>> import com.google.gwt.user.cellview.client.TextColumn; >>>> import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler; >>>> import com.google.gwt.user.cellview.client.SimplePager.TextLocation; >>>> import com.google.gwt.user.client.ui.Composite; >>>> import com.google.gwt.user.client.ui.FlowPanel; >>>> import com.google.gwt.user.client.ui.HTML; >>>> import com.google.gwt.user.client.ui.Widget; >>>> import com.google.gwt.view.client.Range; >>>> import com.google.gwt.view.client.RangeChangeEvent; >>>> import com.google.gwt.view.client.RangeChangeEvent.Handler; >>>> >>>> >>>> public class DemandesListViewImpl extends Composite implements >>>> ListView<DemandeBean> { >>>> >>>> >>>> private RecherchePanel rp = new RecherchePanel(); >>>> >>>> private final CellTable<DemandeBean> demandeTable; >>>> private final SimplePager pager; >>>> private final static int PAGE_SIZE = 7; >>>> private List<DemandeBean> demandes; >>>> private SimpleHasFeedback feedback; >>>> >>>> private ListPresenter<DemandeBean> presenter; >>>> >>>> public DemandesListViewImpl() { >>>> >>>> >>>> >>>> feedback = new SimpleHasFeedback(); >>>> // Create a CellTable. >>>> demandeTable = new CellTable<DemandeBean>(); >>>> demandeTable.getElement().setId("marketlist"); >>>> demandeTable.setPageSize(PAGE_SIZE); >>>> demandeTable.setRowCount(0, true); >>>> >>>> demandeTable.addRangeChangeHandler(new Handler() { >>>> >>>> public void onRangeChange(RangeChangeEvent event) { >>>> >>>> Range range = demandeTable.getVisibleRange(); >>>> int start = range.getStart(); >>>> int length = range.getLength(); >>>> List<DemandeBean> toSet = new >>>> ArrayList<DemandeBean>(length); >>>> for (int i = start; i < start + length && i < >>>> demandes.size(); i++) >>>> toSet.add(demandes.get(i)); >>>> demandeTable.setRowData(start, toSet); >>>> >>>> } >>>> }); >>>> >>>> // Create a Pager to control the table. >>>> SimplePager.Resources pagerResources = GWT >>>> .create(SimplePager.Resources.class); >>>> pager = new SimplePager(TextLocation.CENTER, pagerResources, >>>> false, 0, >>>> true); >>>> pager.setDisplay(demandeTable); >>>> >>>> // Create id column. >>>> TextColumn<DemandeBean> idColumn = new TextColumn<DemandeBean>() >>>> { >>>> >>>> @Override >>>> public String getValue(DemandeBean demande) { >>>> //return demande.getId().toString(); >>>> return String.valueOf(demande.getIdDemande()); >>>> } >>>> >>>> }; >>>> >>>> // renderer for nameColumn >>>> SafeHtmlRenderer<String> nameColumnRenderer = new >>>> AbstractSafeHtmlRenderer<String>() { >>>> >>>> public SafeHtml render(String object) { >>>> >>>> SafeHtmlBuilder builder = new SafeHtmlBuilder(); >>>> builder.appendHtmlConstant("<a>"); >>>> builder.appendEscaped(object); >>>> builder.appendHtmlConstant("</a>"); >>>> return builder.toSafeHtml(); >>>> } >>>> >>>> }; >>>> >>>> // Create id column. >>>> TextColumn<DemandeBean> etatColumn = new >>>> TextColumn<DemandeBean>() { >>>> >>>> @Override >>>> public String getValue(DemandeBean demande) { >>>> return >>>> demande.getEtatDemande().getNomCourt().toString(); >>>> } >>>> >>>> }; >>>> >>>> >>>> // Date réception >>>> Column<DemandeBean, String> dateReceptionColumn = new >>>> Column<DemandeBean, String>( >>>> new ClickableTextCell(nameColumnRenderer)) { >>>> >>>> @Override >>>> public String getValue(DemandeBean demandeBean) { >>>> >>>> //String dateReception = >>>> demandeBean.getDateReception().toString(); >>>> //Date converti = >>>> VoltageUtils.convertirFormatDate(dateReception); >>>> >>>> return demandeBean.getDateReception().toString(); >>>> //return converti.toString(); >>>> } >>>> }; >>>> >>>> >>>> /* >>>> // Create name column. >>>> Column<DemandeBean, String> nameColumn = new Column<DemandeBean, >>>> String>( >>>> new ClickableTextCell(nameColumnRenderer)) { >>>> >>>> @Override >>>> public String getValue(DemandeBean demandeBean) { >>>> return demandeBean.getName(); >>>> } >>>> }; >>>> >>>> nameColumn.setFieldUpdater(new FieldUpdater<DemandeBean, >>>> String>() { >>>> public void update(int index, DemandeBean demandeBean, >>>> String value) { >>>> if (presenter != null) { >>>> presenter.onEditClicked(demandeBean); >>>> } >>>> } >>>> } >>>> >>>> ); >>>> */ >>>> >>>> // renderer for nameColumn >>>> SafeHtmlRenderer<String> deleteColumnRenderer = new >>>> AbstractSafeHtmlRenderer<String>() { >>>> >>>> public SafeHtml render(String object) { >>>> SafeHtmlBuilder builder = new SafeHtmlBuilder(); >>>> >>>> builder.appendHtmlConstant("<a><img >>>> src=\"images/btnDelete.gif\"/></a>"); >>>> return builder.toSafeHtml(); >>>> } >>>> >>>> }; >>>> >>>> // delete column. >>>> Column<DemandeBean, String> deleteColumn = new >>>> Column<DemandeBean, String>( >>>> new ClickableTextCell(deleteColumnRenderer)) { >>>> >>>> @Override >>>> public String getValue(DemandeBean demandeBean) { >>>> return GwtApplication.constantes.button_delete(); >>>> } >>>> }; >>>> >>>> deleteColumn.setFieldUpdater(new FieldUpdater<DemandeBean, >>>> String>() { >>>> public void update(int index, DemandeBean demandeBean, >>>> String value) { >>>> if (presenter != null) { >>>> presenter.onDeleteClicked(demandeBean); >>>> } >>>> } >>>> } >>>> >>>> ); >>>> >>>> /* >>>> // Create description column. >>>> TextColumn<DemandeBean> descriptionColumn = new >>>> TextColumn<DemandeBean>() { >>>> >>>> @Override >>>> public String getValue(DemandeBean demande) { >>>> //return demande.getDescription(); >>>> return demande.getAutorite(); >>>> } >>>> }; >>>> */ >>>> >>>> >>>> >>>> // Colonne TYPE >>>> TextColumn<DemandeBean> typeColumn = new >>>> TextColumn<DemandeBean>() { >>>> >>>> @Override >>>> public String getValue(DemandeBean demande) { >>>> >>>> return demande.getTypeDemande(); >>>> } >>>> }; >>>> >>>> // Colonne MEDIA >>>> TextColumn<DemandeBean> mediaColumn = new >>>> TextColumn<DemandeBean>() { >>>> >>>> @Override >>>> public String getValue(DemandeBean demande) { >>>> >>>> return demande.getTypeMedia(); >>>> } >>>> }; >>>> mediaColumn.setSortable(true); >>>> >>>> // Colonne Autorite >>>> TextColumn<DemandeBean> autoriteColumn = new >>>> TextColumn<DemandeBean>() { >>>> >>>> @Override >>>> public String getValue(DemandeBean demande) { >>>> >>>> return demande.getAutorite(); >>>> } >>>> }; >>>> >>>> autoriteColumn.setSortable(true); >>>> >>>> >>>> /* >>>> >>>> List<DemandeBean> newData = new >>>> ArrayList(demandeTable.getVisibleItems()); >>>> >>>> //ListHandler<DemandeBean> columnSortHandler = new >>>> ListHandler<DemandeBean>(demandes); >>>> ListHandler<DemandeBean> columnSortHandler = new >>>> ListHandler<DemandeBean>(newData); >>>> GWT.log("taille newData : " + newData.size()); >>>> >>>> >>>> >>>> columnSortHandler.setComparator(mediaColumn, new >>>> Comparator<DemandeBean>() { >>>> public int compare(DemandeBean o1, DemandeBean o2) { >>>> >>>> GWT.log("appel compare"); >>>> if (o1 == o2) { >>>> return 0; >>>> } >>>> // Compare the name columns. >>>> if (o1 != null) { >>>> return (o2 != null) ? >>>> o1.getTypeMedia().compareTo(o2.getTypeMedia()) : 1; >>>> >>>> } >>>> return -1; >>>> } >>>> }); >>>> demandeTable.addColumnSortHandler(columnSortHandler); >>>> >>>> */ >>>> >>>> >>>> demandeTable.addColumnSortHandler(new ColumnSortEvent.Handler() >>>> { >>>> public void onColumnSort(ColumnSortEvent event) { >>>> >>>> // La colonne triée >>>> Column a = event.getColumn(); >>>> >>>> >>>> GWT.log("appel de onColumnSort"); >>>> List<DemandeBean> newData = new >>>> ArrayList(demandeTable.getVisibleItems()); >>>> >>>> if (event.isSortAscending()) { >>>> GWT.log("Ordre ascendant"); >>>> Collections.sort(newData, new >>>> Comparator<DemandeBean>() { >>>> public int compare(DemandeBean o1, >>>> DemandeBean o2) { >>>> if (o1 == o2) { >>>> return 0; >>>> } >>>> if (o1 != null) { >>>> return (o2 != null) ? >>>> o1.getAutorite().compareTo(o2.getAutorite()) : 1; >>>> } >>>> return -1; >>>> } >>>> } >>>> ); >>>> } else { >>>> GWT.log("Ordre descendant"); >>>> Collections.sort(newData, new >>>> Comparator<DemandeBean>() { >>>> public int compare(DemandeBean o1, >>>> DemandeBean o2) { >>>> if (o1 == o2) { >>>> return 0; >>>> } >>>> if (o1 != null) { >>>> return (o2 != null) ? >>>> o2.getAutorite().compareTo(o1.getAutorite()) : 1; >>>> } >>>> return -1; >>>> } >>>> } >>>> ); >>>> } >>>> Range range = demandeTable.getVisibleRange(); >>>> int start = range.getStart(); >>>> demandeTable.setRowData(start, newData); >>>> } >>>> }); >>>> >>>> >>>> >>>> // Colonne operateur >>>> TextColumn<DemandeBean> operateurColumn = new >>>> TextColumn<DemandeBean>() { >>>> >>>> @Override >>>> public String getValue(DemandeBean demande) { >>>> //return demande.getDescription(); >>>> return demande.getOperateur(); >>>> } >>>> }; >>>> >>>> // Colonne operateur >>>> TextColumn<DemandeBean> urgenceColumn = new >>>> TextColumn<DemandeBean>() { >>>> >>>> @Override >>>> public String getValue(DemandeBean demande) { >>>> //return demande.getDescription(); >>>> return >>>> String.valueOf(demande.getNiveauUrgenceAutorite()); >>>> } >>>> }; >>>> >>>> // Colonne operateur >>>> TextColumn<DemandeBean> prestationColumn = new >>>> TextColumn<DemandeBean>() { >>>> >>>> @Override >>>> public String getValue(DemandeBean demande) { >>>> //return demande.getDescription(); >>>> return String.valueOf(demande.getPrestation()); >>>> } >>>> }; >>>> >>>> /* >>>> demandeTable.addColumn(idColumn, >>>> GwtApplication.constantes.column_marketId()); >>>> demandeTable.addColumn(nameColumn, >>>> GwtApplication.constantes.column_marketName()); >>>> demandeTable.addColumn(descriptionColumn, >>>> GwtApplication.constantes.column_marketDescription()); >>>> demandeTable.addColumn(deleteColumn, ""); >>>> */ >>>> >>>> demandeTable.addColumn(deleteColumn, ""); >>>> demandeTable.addColumn(etatColumn, "Etat"); >>>> demandeTable.addColumn(idColumn, "N° demande"); >>>> demandeTable.addColumn(autoriteColumn,"Autorité"); >>>> >>>> demandeTable.getColumnSortList().push(autoriteColumn); >>>> >>>> >>>> demandeTable.addColumn(typeColumn,"Type"); >>>> demandeTable.addColumn(prestationColumn,"Code"); >>>> demandeTable.addColumn(mediaColumn, "Media"); >>>> demandeTable.addColumn(urgenceColumn,"Urgence"); >>>> >>>> demandeTable.addColumn(dateReceptionColumn,"Date réception"); >>>> //demandeTable.addColumn(descriptionColumn,"ID_AUTORITE"); >>>> >>>> //demandeTable.addColumn(operateurColumn,"Opérateur"); >>>> >>>> >>>> initWidget(getDisplay()); >>>> } >>>> >>>> private Widget getDisplay() { >>>> >>>> // main panel is content panel >>>> >>>> // content panel configuration >>>> >>>> FlowPanel content = new FlowPanel(); >>>> content.getElement().setId("content"); >>>> content.add(new HTML("<center><h2>" >>>> + GwtApplication.constantes.corbeilleDemandes_title() + >>>> "</h2></center>")); >>>> >>>> content.add(rp); >>>> >>>> content.add(new HTML("<h4>" >>>> + GwtApplication.constantes.marketPage_result() + >>>> "</h4>")); >>>> content.add(feedback); >>>> >>>> >>>> >>>> >>>> >>>> content.add(demandeTable); >>>> content.add(pager); >>>> >>>> >>>> content.setWidth("100%"); >>>> >>>> >>>> >>>> /* >>>> FlowPanel content = new FlowPanel(); >>>> PaginatedTable table = new PaginatedTable(new TableTestModel()); >>>> content.add(table); >>>> */ >>>> >>>> return content; >>>> >>>> } >>>> >>>> public void setData(List<DemandeBean> demandes) { >>>> >>>> if (null != demandes) { >>>> GWT.log("setData : demandes pas nul"); >>>> } else { >>>> GWT.log("setData : demandes est nul"); >>>> } >>>> this.demandes = demandes; >>>> demandeTable.setRowCount(demandes.size(), true); >>>> demandeTable.setRowData(0, demandes); >>>> demandeTable.setVisible(!this.demandes.isEmpty()); >>>> pager.setVisible(!this.demandes.isEmpty()); >>>> } >>>> >>>> public void setPresenter(ListPresenter<DemandeBean> presenter) { >>>> this.presenter = presenter; >>>> } >>>> >>>> public void reset() { >>>> feedback.clear(); >>>> } >>>> >>>> public void error() { >>>> feedback.error(GwtApplication.constantes.error_internal()); >>>> } >>>> >>>> public void noData() { >>>> this.setData(new ArrayList<DemandeBean>()); >>>> feedback.info(GwtApplication.messages.list_counter_none()); >>>> } >>>> >>>> public boolean confirmDeletion(DemandeBean demandeBean) { >>>> return feedback.confirm(GwtApplication.messages >>>> >>>> .deleteMarketPage_confirm(String.valueOf(demandeBean.getId()))); >>>> >>>> } >>>> >>>> } >>>> >>>> >>>> -- >>>> 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. >>>> >>> >>> -- >>> 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. >>> >> >> -- >> 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. >> > > > > -- > Regards, > -Sai. > > -- > 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. > -- 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.
