All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.pdx.cs410J.di.CheckoutInventoryTable Maven / Gradle / Ivy

The newest version!
package edu.pdx.cs410J.di;

import javax.swing.*;
import javax.swing.event.CellEditorListener;
import javax.swing.event.TableModelEvent;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.EventObject;

/**
 * A table that shows the inventory of books and lets the user select one to be added to a shopping cart.  When a book
 * is selected, a {@link TableModelEvent} is fired to listeners on this table.
 */
class CheckoutInventoryTable extends JTable
{

    public CheckoutInventoryTable( CheckoutInventoryTableModel model )
    {
        super(model);
        TableColumn column = this.getColumnModel().getColumn( model.getColumnCount() - 1 );
        column.setCellEditor( new TableButton( model ) );
        column.setCellRenderer( new TableButton( model ) );
    }

    /**
     * Renders a button that
     */
    private static class TableButton implements TableCellRenderer, TableCellEditor
    {
        private final BookInventoryTableModel model;

        public TableButton( BookInventoryTableModel model )
        {
            this.model = model;
        }

        public Component getTableCellRendererComponent( JTable table, Object value,  boolean isSelected, boolean hasFocus, int row, int column )
        {
            return getButton( row );
        }

        private Component getButton( final int row )
        {
            JButton button = new JButton( "Add" );
            button.addActionListener( new ActionListener() {

                public void actionPerformed( ActionEvent event )
                {
                   model.fireTableChanged( new TableModelEvent( model, row, row, model.getColumnCount() -1 ) );
                }
            });
            return button;
        }

        public Component getTableCellEditorComponent( JTable table, Object value, boolean isSelected, int row, int column )
        {
            return getButton(row);
        }

        public Object getCellEditorValue()
        {
            return null;
        }

        public boolean isCellEditable( EventObject eventObject )
        {
            return true;
        }

        public boolean shouldSelectCell( EventObject eventObject )
        {
            return true;
        }

        public boolean stopCellEditing()
        {
            return true;
        }

        public void cancelCellEditing()
        {

        }

        public void addCellEditorListener( CellEditorListener cellEditorListener )
        {

        }

        public void removeCellEditorListener( CellEditorListener cellEditorListener )
        {

        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy