package com.floreantpos.ui;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.TableColumnModel;
import com.floreantpos.bo.ui.explorer.ListTableModel;
import com.floreantpos.model.Ticket;
public class TicketListView extends JPanel {
private JTable table;
private TicketListTableModel tableModel;
public TicketListView() {
table = new TicketListTable();
table.setModel(tableModel = new TicketListTableModel());
table.setRowHeight(40);
table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
table.setDefaultRenderer(Object.class, new PosTableRenderer());
table.setGridColor(Color.LIGHT_GRAY);
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn(0).setPreferredWidth(20);
columnModel.getColumn(1).setPreferredWidth(20);
columnModel.getColumn(2).setPreferredWidth(200);
columnModel.getColumn(3).setPreferredWidth(100);
JScrollPane scrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
JScrollBar scrollBar = scrollPane.getVerticalScrollBar();
scrollBar.setPreferredSize(new Dimension(30, 60));
setLayout(new BorderLayout());
add(scrollPane);
}
public void setTickets(List<Ticket> tickets) {
tableModel.setRows(tickets);
}
public void addTicket(Ticket ticket) {
tableModel.addItem(ticket);
}
public Ticket getSelectedTicket() {
int selectedRow = table.getSelectedRow();
if(selectedRow < 0) {
return null;
}
return (Ticket) tableModel.getRowData(selectedRow);
}
public List<Ticket> getSelectedTickets(){
int[] selectedRows = table.getSelectedRows();
ArrayList<Ticket> tickets = new ArrayList<Ticket>(selectedRows.length);
for (int i = 0; i < selectedRows.length; i++) {
Ticket ticket = (Ticket) tableModel.getRowData(selectedRows[i]);
tickets.add(ticket);
}
return tickets;
}
//public void removeTicket(Ticket ticket) {
//tableModel.
//}
private class TicketListTable extends JTable {
@Override
public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
ListSelectionModel selectionModel = getSelectionModel();
boolean selected = selectionModel.isSelectedIndex(rowIndex);
if(selected) {
selectionModel.removeSelectionInterval(rowIndex, rowIndex);
}
else {
selectionModel.addSelectionInterval(rowIndex, rowIndex);
}
}
}
private class TicketListTableModel extends ListTableModel {
public TicketListTableModel() {
super(new String[] {"ID", "TABLE", "SERVER", "CREATED", "TOTAL", "DUE"});
}
public Object getValueAt(int rowIndex, int columnIndex) {
Ticket ticket = (Ticket) rows.get(rowIndex);
switch(columnIndex) {
case 0:
return Integer.valueOf(ticket.getId());
case 1:
return Integer.valueOf(ticket.getTableNumber());
case 2:
return String.valueOf(ticket.getOwner());
case 3:
return ticket.getCreateDate();
case 4:
return ticket.getTotalAmount();
case 5:
return ticket.getDueAmount();
}
return null;
}
}
}