GWT - Widget CellList

Introdução

o CellList widget representa uma lista de células em uma única coluna.

Declaração de Classe

A seguir está a declaração para com.google.gwt.user.cellview.client.CellList<T> classe -

public class CellList<T>
   extends AbstractHasData<T>

Construtores de classe

Sr. Não. Construtor e descrição
1

CellList(Cell<T> cell)

Construa uma nova CellList.

2

CellList(Cell<T> cell, CellList.Resources resources)

Constrói uma nova CellList com o CellList.Resources especificado.

3

CellList(Cell<T> cell, CellList.Resources resources, ProvidesKey<T> keyProvider)

Constrói uma nova CellList com o CellList.Resources e o provedor de chave especificados.

4

CellList(Cell<T> cell, ProvidesKey<T> keyProvider)

Constrói uma nova CellList com o provedor de chave especificado.

Métodos de aula

Sr. Não. Nome e descrição da função
1

protected boolean dependsOnSelection()

Verifique se as células na visualização dependem ou não do estado de seleção.

2

protected void doSelection(Event event, T value, int indexOnPage)

Descontinuada. use o manipulador de visualização de células abstratas HasData.add (com.google.gwt.view.client.Cell Preview Event.Handler).

3

protected void fireEventToCell(Cell.Context context, Event event, Element parent, T value)

Dispare um evento para a célula.

4

protected Cell<T> getCell()

Retorne a célula usada para renderizar cada item.

5

protected Element getCellParent(Element item)

Obtenha o elemento pai que envolve a célula do item da lista.

6

protected Element getChildContainer()

Retorne o elemento que contém as células renderizadas.

7

SafeHtml getEmptyListMessage()

Receba a mensagem que é exibida quando não há dados.

8

protected Element getKeyboardSelectedElement()

Obtenha o elemento que possui seleção de teclado.

9

Element getRowElement(int indexOnPage)

Obtenha o elemento para o índice especificado.

10

protected boolean isKeyboardNavigationSuppressed()

Verifique se a navegação do teclado está sendo suprimida, como quando o usuário está editando uma célula.

11

protected void onBlur()

Chamado quando o widget está desfocado.

12

protected void onBrowserEvent2(Event event)

Chamado após a conclusão de AbstractHasData.onBrowserEvent (Event).

13

protected void onFocus()

Chamado quando o widget está focado.

14

protected void renderRowValues(SafeHtmlBuilder sb, java.util.List<T> values, int start, SelectionModel<? super T> selectionModel)

Renderiza todos os valores de linha no SafeHtmlBuilder especificado.

15

protected boolean resetFocusOnCell()

Redefina o foco na célula atualmente em foco.

16

void setEmptyListMessage(SafeHtml html)

Defina a mensagem a ser exibida quando não houver dados.

17

protected void setKeyboardSelected(int index, boolean selected, boolean stealFocus)

Atualize um elemento para refletir seu estado selecionado pelo teclado.

18

protected void setSelected(Element elem, boolean selected)

Descontinuada. este método nunca é chamado por AbstractHasData, renderize os estilos selecionados em renderRowValues ​​(SafeHtmlBuilder, List, int, SelectionModel)

19

void setValueUpdater(ValueUpdater<T> valueUpdater)

Defina o atualizador de valor a ser usado quando as células modificam itens.

Métodos herdados

Esta classe herda métodos das seguintes classes -

  • com.google.gwt.user.client.ui.UIObject

  • com.google.gwt.user.client.ui.Widget

  • com.google.gwt.user.cellview.client.AbstractHasData

  • java.lang.Object

Exemplo de widget CellList

Este exemplo o levará por etapas simples para mostrar o uso de um widget CellList no GWT. Siga as etapas a seguir para atualizar o aplicativo GWT que criamos no GWT - capítulo Criar aplicativo -

Degrau Descrição
1 Crie um projeto com o nome HelloWorld em um pacote com.tutorialspoint conforme explicado no capítulo GWT - Criar aplicativo .
2 Modifique HelloWorld.gwt.xml , HelloWorld.css , HelloWorld.html e HelloWorld.java conforme explicado abaixo. Mantenha o resto dos arquivos inalterados.
3 Compile e execute o aplicativo para verificar o resultado da lógica implementada.

A seguir está o conteúdo do descritor do módulo modificado src/com.tutorialspoint/HelloWorld.gwt.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<module rename-to = 'helloworld'>
   <!-- Inherit the core Web Toolkit stuff.                        -->
   <inherits name = 'com.google.gwt.user.User'/>

   <!-- Inherit the default GWT style sheet.                       -->
   <inherits name = 'com.google.gwt.user.theme.clean.Clean'/>

   <!-- Specify the app entry point class.                         -->
   <entry-point class = 'com.tutorialspoint.client.HelloWorld'/>

   <!-- Specify the paths for translatable code                    -->
   <source path = 'client'/>
   <source path = 'shared'/>

</module>

A seguir está o conteúdo do arquivo de folha de estilo modificado war/HelloWorld.css.

body {
   text-align: center;
   font-family: verdana, sans-serif;
}

h1 {
   font-size: 2em;
   font-weight: bold;
   color: #777777;
   margin: 40px 0px 70px;
   text-align: center;
}

A seguir está o conteúdo do arquivo host HTML modificado war/HelloWorld.html.

<html>
   <head>
      <title>Hello World</title>
      <link rel = "stylesheet" href = "HelloWorld.css"/>
      <script language = "javascript" src = "helloworld/helloworld.nocache.js">
      </script>
   </head>

   <body>
      <h1>CellList Widget Demonstration</h1>
      <div id = "gwtContainer"></div>
   </body>
</html>

Vamos ter o seguinte conteúdo do arquivo Java src/com.tutorialspoint/HelloWorld.java que demonstrará o uso do widget CellList.

package com.tutorialspoint.client;

import java.util.Arrays;
import java.util.List;

import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.Cell;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.cellview.client.CellList;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SelectionModel;
import com.google.gwt.view.client.SingleSelectionModel;

public class HelloWorld implements EntryPoint {
   /**
    * A simple data type that represents a contact.
    */

   private static class Contact {
      private static int nextId = 0;
      private final int id;
      private String name;

      public Contact(String name) {
         nextId++;
         this.id = nextId;
         this.name = name;
      }
   }

   /**
    * A custom {@link Cell} used to render a {@link Contact}.
    */
   
   private static class ContactCell extends AbstractCell<Contact> {
      @Override
      public void render(Contact value, Object key, SafeHtmlBuilder sb) {
         if (value != null) {
            sb.appendEscaped(value.name);
         }		
      }
   }

   /**
    * The list of data to display.
    */
   
   private static final List<Contact> CONTACTS = Arrays.asList(new Contact(
      "John"), new Contact("Joe"), new Contact("Michael"),
      new Contact("Sarah"), new Contact("George"));

   public void onModuleLoad() {
      /*
       * Define a key provider for a Contact. We use the unique ID 
       * as the key, which allows to maintain selection even if the
       * name changes.
       */
      
      ProvidesKey<Contact> keyProvider = new ProvidesKey<Contact>() {
         public Object getKey(Contact item) {
            // Always do a null check.
            return (item == null) ? null : item.id;
         }
      };

      // Create a CellList using the keyProvider.
      CellList<Contact> cellList = new CellList<Contact>(new ContactCell(),      
      keyProvider);

      // Push data into the CellList.
      cellList.setRowCount(CONTACTS.size(), true);
      cellList.setRowData(0, CONTACTS);

      // Add a selection model using the same keyProvider.
      SelectionModel<Contact> selectionModel 
      = new SingleSelectionModel<Contact>(
      keyProvider);
      cellList.setSelectionModel(selectionModel);

      /*
       * Select a contact. The selectionModel will select based on the 
       * ID because we used a keyProvider.
       */
      Contact sarah = CONTACTS.get(3);
      selectionModel.setSelected(sarah, true);

      // Modify the name of the contact.
      sarah.name = "Sara";

      /*
       * Redraw the CellList. Sarah/Sara will still be selected because we
       * identify her by ID. If we did not use a keyProvider, 
       * Sara would not be selected.
       */
      cellList.redraw();

      VerticalPanel panel = new VerticalPanel();
      panel.setBorderWidth(1);	    
      panel.setWidth("200");
      panel.add(cellList);

      // Add the widgets to the root panel.
      RootPanel.get().add(panel);
   }
}

Quando você estiver pronto com todas as alterações feitas, vamos compilar e rodar o aplicativo em modo de desenvolvimento como fizemos no capítulo GWT - Criar Aplicativo . Se tudo estiver bem com sua aplicação, isso produzirá o seguinte resultado -