tecgraf.javautils.gui.table
Class ObjectTableModel<T>

java.lang.Object
  extended by javax.swing.table.AbstractTableModel
      extended by tecgraf.javautils.gui.table.ObjectTableModel<T>
Type Parameters:
T - tipo do objeto que representa cada linha da tabela
All Implemented Interfaces:
Serializable, TableModel

public class ObjectTableModel<T>
extends AbstractTableModel

Modelo para tabelas em que cada objeto representando uma linha da tabela. Este modelo utiliza instâncias da interface ObjectTableProvider para obter os valores das células.

INSTRUÇÕES PARA USO:
Cada objeto da lista a ser passada para o modelo deve ter propriedades que representem as colunas da tabela. O construtor recebe como parâmetro os nomes das colunas e um "provedor de valores" (instância da ObjectTableProvider) para obter a propriedade adequada para cada coluna.

Antes de utilizar essa classe, de uma olhada na classe ColumnsObjectTableModel. Elas são bem parecidas, mas a ColumnsObjectTableModel substitui o ObjectTableProvider por um array de IColumn. Essa mudança na arquitetura,

Author:
Leonardo Barros
See Also:
ObjectTableModelSample, Serialized Form

Field Summary
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
ObjectTableModel(List<T> rows, ObjectTableProvider<T> provider)
          Cria o modelo.
 
Method Summary
 void add(T row)
          Adiciona um objeto-linha à lista.
 void addAll(Collection<T> rows)
          Adiciona uma coleção de objetos-linha à lista.
 void clear()
          Remove todos os elementos de objetos.
 Class<?> getColumnClass(int colIndex)
          
 int getColumnCount()
          
 String getColumnName(int colIndex)
          
 ObjectTableProvider<T> getProvider()
          Obtém o ObjectTableProvider
 T getRow(int rowIndex)
          Obtém um objeto-linha específico.
 int getRowCount()
          
 List<T> getRows()
          Obtém a lista de objetos-linha atualizada.
 Object getValueAt(int rowIndex, int colIndex)
          
 boolean isCellEditable(int rowIndex, int columnIndex)
          
 boolean modify(T row)
          Modifica os dados de um objeto-linha da lista.
 T remove(int rowIndex)
          Remove um objeto-linha da lista pelo seu índice do modelo.
 boolean remove(T row)
          Remove um objeto-linha da lista.
 Collection<T> removeAll()
          Remove todos os objetos-linha.
 Collection<T> removeAll(int[] rowIndexes)
          Remove os objetos-linha especificados pelos seus índices.
 void setRows(List<T> newRows)
          Substitui a lista de objetos-linha.
 void setValueAt(Object newValue, int rowIndex, int colIndex)
          
 void swapRows(int index1, int index2)
          Troca duas linhas no modelo.
 
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, removeTableModelListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ObjectTableModel

public ObjectTableModel(List<T> rows,
                        ObjectTableProvider<T> provider)
Cria o modelo.

Parameters:
rows - lista de objetos-linha.
provider - provedor para extrair os valores das células dos objetos-linha.
Throws:
IllegalArgumentException - se a lista de linhas ou o provedor forem iguais a null, ou se a lista de nomes das colunas retornada pelo provedor for null
Method Detail

getProvider

public ObjectTableProvider<T> getProvider()
Obtém o ObjectTableProvider

Returns:
ObjectTableProvider

getRowCount

public int getRowCount()


getColumnCount

public int getColumnCount()


getValueAt

public Object getValueAt(int rowIndex,
                         int colIndex)


setValueAt

public void setValueAt(Object newValue,
                       int rowIndex,
                       int colIndex)

Specified by:
setValueAt in interface TableModel
Overrides:
setValueAt in class AbstractTableModel

isCellEditable

public boolean isCellEditable(int rowIndex,
                              int columnIndex)

Specified by:
isCellEditable in interface TableModel
Overrides:
isCellEditable in class AbstractTableModel

getColumnName

public String getColumnName(int colIndex)

Specified by:
getColumnName in interface TableModel
Overrides:
getColumnName in class AbstractTableModel

getColumnClass

public Class<?> getColumnClass(int colIndex)

Specified by:
getColumnClass in interface TableModel
Overrides:
getColumnClass in class AbstractTableModel

clear

public void clear()
Remove todos os elementos de objetos.


setRows

public void setRows(List<T> newRows)
Substitui a lista de objetos-linha.

Parameters:
newRows - nova lista de objetos-linha.
Throws:
IllegalArgumentException - se a lista de novas linhas for null

add

public void add(T row)
Adiciona um objeto-linha à lista. Se já existir um objeto com o mesmo identificador, este é sobrescrito (não permite duplicatas).

Parameters:
row - objeto-linha a ser adicionado.
Throws:
IllegalArgumentException - se row for nulo.

addAll

public void addAll(Collection<T> rows)
Adiciona uma coleção de objetos-linha à lista. Se já existir um objeto com o mesmo identificador, este é sobrescrito (não permite duplicatas).

Parameters:
rows - coleção de objetos-linha a serem adicionados.
Throws:
IllegalArgumentException - se rows for nulo.

remove

public boolean remove(T row)
Remove um objeto-linha da lista.

Parameters:
row - objeto-linha a ser removido.
Returns:
true se o objeto-linha for encontrado e removido com sucesso, false caso contrário.
Throws:
IllegalArgumentException - se row for nulo.

remove

public T remove(int rowIndex)
Remove um objeto-linha da lista pelo seu índice do modelo.

Parameters:
rowIndex - índice do objeto-linha a ser removido.
Returns:
o objeto-linha removido.
Throws:
IndexOutOfBoundsException - se o índice for negativo ou se for maior do que o tamanho da lista de objeto-linha.

removeAll

public Collection<T> removeAll(int[] rowIndexes)
Remove os objetos-linha especificados pelos seus índices.

Parameters:
rowIndexes - índices dos objetos-linha a serem removidos.
Returns:
coleção de objetos removidos.
Throws:
IllegalArgumentException - se rowIndexes for nulo.
IndexOutOfBoundsException - se algum índice for negativo ou se for maior do que o tamanho da lista de objeto-linha.
See Also:
AbstractTableModel.fireTableRowsDeleted(int, int)

removeAll

public Collection<T> removeAll()
Remove todos os objetos-linha.

Returns:
coleção de objetos removidos.

modify

public boolean modify(T row)
Modifica os dados de um objeto-linha da lista.

Parameters:
row - objeto-linha a ser modificado.
Returns:
true caso o objeto tenha sido modificado com sucesso, false caso este não tenha sido encontrado.
Throws:
IllegalArgumentException - se a linha for null

getRows

public List<T> getRows()
Obtém a lista de objetos-linha atualizada.

Returns:
lista de objetos-linha.

getRow

public T getRow(int rowIndex)
Obtém um objeto-linha específico.

Parameters:
rowIndex - índice do objeto-linha
Returns:
o objeto-linha solicitado, ou null
Throws:
IndexOutOfBoundsException - se o índice for inválido

swapRows

public void swapRows(int index1,
                     int index2)
Troca duas linhas no modelo.

Parameters:
index1 - - índice da primeira linha
index2 - - índice da segunda linha


Copyright © 2014 Tecgraf/PUC-Rio. All rights reserved.