package com.floreantpos.ui.ticket; import java.awt.Color; import java.awt.Component; import java.text.DecimalFormat; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.table.DefaultTableCellRenderer; import com.floreantpos.model.TicketItem; import com.floreantpos.model.TicketItemModifier; public class TicketTableCellRenderer extends DefaultTableCellRenderer { private static final DecimalFormat numberFormat = new DecimalFormat("0.00"); private boolean inTicketScreen = false; @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component rendererComponent = super.getTableCellRendererComponent(table, value, isSelected, false, row, column); TicketTableModel model = (TicketTableModel) table.getModel(); Object object = model.get(row); if(!inTicketScreen || isSelected) { return rendererComponent; } rendererComponent.setBackground(Color.WHITE); if(object instanceof TicketItem) { TicketItem ticketItem = (TicketItem) object; if(ticketItem.isPrintedToKitchen()) { rendererComponent.setBackground(Color.YELLOW); } } if(object instanceof TicketItemModifier) { TicketItemModifier modifier = (TicketItemModifier) object; if(modifier.isPrintedToKitchen()) { rendererComponent.setBackground(Color.YELLOW); } } return rendererComponent; } @Override protected void setValue(Object value) { if(value == null) { setText(""); return; } String text = value.toString(); if(value instanceof Double || value instanceof Float) { text = numberFormat.format(((java.lang.Number) value).doubleValue()); setHorizontalAlignment(SwingConstants.RIGHT); } else if(value instanceof Integer) { setHorizontalAlignment(SwingConstants.RIGHT); } else { setHorizontalAlignment(SwingConstants.LEFT); } setText(" " + text + " "); } public boolean isInTicketScreen() { return inTicketScreen; } public void setInTicketScreen(boolean inTicketScreen) { this.inTicketScreen = inTicketScreen; } }