package com.floreantpos.bo.ui.explorer;
import java.awt.BorderLayout;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;
import org.jdesktop.swingx.JXTable;
import com.floreantpos.model.Ticket;
import com.floreantpos.model.dao.TicketDAO;
import com.floreantpos.swing.MessageDialog;
import com.floreantpos.swing.TransparentPanel;
import com.floreantpos.ui.PosTableRenderer;
public class TicketExplorer extends TransparentPanel {
private SimpleDateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy, h:m a");
DecimalFormat numberFormat = new DecimalFormat("0.00");
JXTable explorerTable;
private List<Ticket> tickets;
public TicketExplorer() {
setLayout(new BorderLayout());
explorerTable = new JXTable(new TicketExplorerTableModel()) {
PosTableRenderer renderer = new PosTableRenderer();
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
return renderer;
}
};
explorerTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
explorerTable.setColumnControlVisible(true);
add(new JScrollPane(explorerTable));
}
public void init() {
try {
TicketDAO dao = new TicketDAO();
tickets = dao.findAll();
explorerTable.packAll();
explorerTable.repaint();
} catch (Exception e) {
MessageDialog.showError(e);
}
}
class TicketExplorerTableModel extends AbstractTableModel {
String[] columnNames = {"Id", "Created by", "Create Time", "Settle Time",
"Subtotal", "Discount", "Tax", "Total",
"PAID", "VOID"
};
public int getRowCount() {
if(tickets == null) {
return 0;
}
return tickets.size();
}
public int getColumnCount() {
return 11;
}
@Override
public String getColumnName(int column) {
return columnNames[column];
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Object getValueAt(int rowIndex, int columnIndex) {
if(tickets == null)
return "";
Ticket ticket = tickets.get(rowIndex);
switch(columnIndex) {
case 0:
return String.valueOf(ticket.getId());
case 1:
return ticket.getOwner().toString();
case 2:
return dateFormat.format(ticket.getCreateDate());
case 3:
if(ticket.getClosingDate() != null) {
return dateFormat.format(ticket.getClosingDate());
}
return "";
case 4:
return Double.valueOf(ticket.getSubtotalAmount());
case 5:
return Double.valueOf(ticket.getDiscountAmount());
case 6:
return Double.valueOf(ticket.getTaxAmount());
case 7:
return Double.valueOf(ticket.getTotalAmount());
case 8:
return Boolean.valueOf(ticket.isPaid());
case 9:
return Boolean.valueOf(ticket.isVoided());
}
return null;
}
}
}