Package com.oracle.demo.ops.shipment.notifier

Source Code of com.oracle.demo.ops.shipment.notifier.MutableParcelModel

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.oracle.demo.ops.shipment.notifier;

import com.oracle.demo.ops.domain.Parcel;

import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

/**
* @author cmlee
*/
public class MutableParcelModel implements TableModel
{

  private static final int SHIPMENT_ID = 0;
  private static final int CONTENTS = 1;
  private static final int STATUS = 2;

  private final List<Parcel> parcels;
  private final Set<TableModelListener> listenerSet;

  public MutableParcelModel()
  {
    this(new LinkedList<Parcel>());
  }

  public MutableParcelModel(List<Parcel> list)
  {
    this.parcels = list;
    listenerSet = new HashSet<TableModelListener>();
  }

  @Override
  public int getRowCount()
  {
    return (parcels.size());
  }

  @Override
  public int getColumnCount()
  {
    return (3);
  }

  @Override
  public String getColumnName(int columnIndex)
  {
    switch(columnIndex)
    {
      case SHIPMENT_ID:
        return ("Shipment Id");
      case CONTENTS:
        return ("Contents");
      case STATUS:
      default:
        return ("Status");
    }
  }

  @Override
  public Class<?> getColumnClass(int columnIndex)
  {
    return (String.class);
  }

  @Override
  public boolean isCellEditable(int rowIndex, int columnIndex)
  {
    return (false);
  }

  @Override
  public Object getValueAt(int rowIndex, int columnIndex)
  {
    Parcel p = parcels.get(rowIndex);
    switch(columnIndex)
    {
      case SHIPMENT_ID:
        return (Integer.toString(p.getShipmentId()));
      case CONTENTS:
        return (p.getContents());
      case STATUS:
      default:
        return (p.getParcelStatus().name());
    }
  }

  public Parcel getValueAt(int rowIndex)
  {
    return (parcels.get(rowIndex));
  }

  @Override
  public void setValueAt(Object aValue, int rowIndex, int columnIndex)
  {
  }

  @Override
  public void addTableModelListener(TableModelListener l)
  {
    listenerSet.add(l);
  }

  @Override
  public void removeTableModelListener(TableModelListener l)
  {
    listenerSet.remove(l);
  }

  public void add(final Parcel parcel)
  {
    parcels.add(parcel);
    fireEvent(parcels.size(), TableModelEvent.INSERT);
  }

  public void remove(final int idx)
  {
    if(idx>=0)
    {
      parcels.remove(idx);
      fireEvent(idx, TableModelEvent.DELETE);
    }
  }

  public List<Parcel> getParcels()
  {
    return (parcels);
  }

  private void fireEvent(final int idx, final int type)
  {
    TableModelEvent tmEvt = new TableModelEvent(this, idx, idx
        , TableModelEvent.ALL_COLUMNS, type);
    for(TableModelListener l : listenerSet)
    {
      l.tableChanged(tmEvt);
    }
  }
}
TOP

Related Classes of com.oracle.demo.ops.shipment.notifier.MutableParcelModel

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.