Package cli_fmw.report.panels.model.delegate

Source Code of cli_fmw.report.panels.model.delegate.DelegateTableModel

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package cli_fmw.report.panels.model.delegate;

import cli_fmw.main.ClipsException;
import cli_fmw.main.ContentStateListener;
import cli_fmw.main.Stateful;
import cli_fmw.utils.ErrorValue;
import java.util.ArrayList;
import java.util.Collection;
import javax.swing.table.AbstractTableModel;
   
/**
*
* @param <T>
* @author finder
*/
public abstract class DelegateTableModel<T extends Stateful> extends AbstractTableModel implements ContentStateListener {
  //private static final long serialVersionUID = 1L;
  ArrayList<T>        delegates;

  public DelegateTableModel(Collection<? extends T> delegates) {
    this.delegates = new ArrayList<T>(delegates);
    for (T t : delegates) {
      t.addContentStateListener(this);
    }
  }
 
  @Override
  public int getRowCount() {
    return delegates.size();
  }

  @Override
  public Object getValueAt(int rowIndex, int columnIndex) {
    try {
      return getColumnValue(delegates.get(rowIndex), columnIndex);
    } catch (ClipsException ex) {
      return new ErrorValue(ex);
    }
  }

  @Override
  public void contentStateChanged() {
    fireTableRowsUpdated(0, getRowCount() - 1);
  }
 
  public <V extends T> void add(V del){
    delegates.add(del);
    del.addContentStateListener(this);
    fireTableRowsInserted(delegates.size() - 1, delegates.size() - 1);
  }
 
  public <V extends T> void remove(V del){
    int        id = delegates.indexOf(del);
    if (id >= 0){
      T      torem = delegates.get(id);
      delegates.remove(id);
      torem.removeContentStateListener(this);
      fireTableRowsDeleted(id, id);
    }
  }
 
  public T get(int i){
    return delegates.get(i);
  }
 
  public void set(int i, T delegate){
    delegates.set(i, delegate);
  }

  public int indexOf(T o) {
    return delegates.indexOf(o);
  }
 
  abstract public Object getColumnValue(T delegate, int column) throws ClipsException;
  @Override
  abstract public String getColumnName(int column);
 
 
}
TOP

Related Classes of cli_fmw.report.panels.model.delegate.DelegateTableModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.