/*
* OrderView.java
*
* Created on August 4, 2006, 6:58 PM
*/
package com.floreantpos.ui.views.order;
import java.awt.CardLayout;
import java.util.HashMap;
import javax.swing.JComponent;
import com.floreantpos.model.Ticket;
import com.floreantpos.ui.dialog.POSMessageDialog;
/**
*
* @author MShahriar
*/
public class OrderView extends com.floreantpos.swing.TransparentPanel {
private HashMap<String, JComponent> views = new HashMap<String, JComponent>();
public final static String VIEW_NAME = "ORDER_VIEW";
private static OrderView instance;
private Ticket currentTicket;
/** Creates new form OrderView */
private OrderView() {
initComponents();
}
public void addView(final String viewName, final JComponent view) {
JComponent oldView = views.get(viewName);
if (oldView != null) {
return;
}
midContainer.add(view, viewName);
}
public void init() {
setOpaque(false);
cardLayout = new CardLayout();
midContainer.setOpaque(false);
midContainer.setLayout(cardLayout);
groupView = new GroupView();
itemView = new MenuItemView();
modifierView = new ModifierView();
addView(GroupView.VIEW_NAME, groupView);
addView(MenuItemView.VIEW_NAME, itemView);
addView(ModifierView.VIEW_NAME, modifierView);
addView("VIEW_EMPTY", new com.floreantpos.swing.TransparentPanel());
showView("VIEW_EMPTY");
orderController = new OrderController(this);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
categoryView = new com.floreantpos.ui.views.order.CategoryView();
ticketView = new com.floreantpos.ui.views.order.TicketView();
jPanel1 = new com.floreantpos.swing.TransparentPanel();
midContainer = new com.floreantpos.swing.TransparentPanel();
othersView = new com.floreantpos.ui.views.order.OthersView();
setLayout(new java.awt.BorderLayout());
add(categoryView, java.awt.BorderLayout.WEST);
add(ticketView, java.awt.BorderLayout.EAST);
jPanel1.setLayout(new java.awt.BorderLayout());
jPanel1.setBackground(new java.awt.Color(51, 153, 0));
jPanel1.add(midContainer, java.awt.BorderLayout.CENTER);
jPanel1.add(othersView, java.awt.BorderLayout.SOUTH);
add(jPanel1, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private com.floreantpos.ui.views.order.CategoryView categoryView;
private com.floreantpos.swing.TransparentPanel jPanel1;
private com.floreantpos.swing.TransparentPanel midContainer;
private com.floreantpos.ui.views.order.OthersView othersView;
private com.floreantpos.ui.views.order.TicketView ticketView;
// End of variables declaration//GEN-END:variables
private CardLayout cardLayout;
private GroupView groupView;
private MenuItemView itemView;
private ModifierView modifierView;
private OrderController orderController;
public void showView(final String viewName) {
cardLayout.show(midContainer, viewName);
}
public com.floreantpos.ui.views.order.CategoryView getCategoryView() {
return categoryView;
}
public void setCategoryView(com.floreantpos.ui.views.order.CategoryView categoryView) {
this.categoryView = categoryView;
}
public GroupView getGroupView() {
return groupView;
}
public void setGroupView(GroupView groupView) {
this.groupView = groupView;
}
public MenuItemView getItemView() {
return itemView;
}
public void setItemView(MenuItemView itemView) {
this.itemView = itemView;
}
public ModifierView getModifierView() {
return modifierView;
}
public void setModifierView(ModifierView modifierView) {
this.modifierView = modifierView;
}
public com.floreantpos.ui.views.order.TicketView getTicketView() {
return ticketView;
}
public void setTicketView(com.floreantpos.ui.views.order.TicketView ticketView) {
this.ticketView = ticketView;
}
public OrderController getOrderController() {
return orderController;
}
public Ticket getCurrentTicket() {
return currentTicket;
}
public void setCurrentTicket(Ticket currentTicket) {
this.currentTicket = currentTicket;
ticketView.setTicket(currentTicket);
othersView.setCurrentTicket(currentTicket);
resetView();
}
public synchronized static OrderView getInstance() {
if(instance == null) {
instance = new OrderView();
}
return instance;
}
public void resetView() {
}
public com.floreantpos.ui.views.order.OthersView getOthersView() {
return othersView;
}
@Override
public void setVisible(boolean aFlag) {
if(aFlag) {
try {
categoryView.initialize();
}catch(Throwable t) {
POSMessageDialog.showError("An error has occured, please restart the application", t);
}
}
else {
categoryView.cleanup();
}
super.setVisible(aFlag);
}
}