Package Inventory

Source Code of Inventory.InventoryPane

package Inventory;

import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.Timer;
import Expense.ExpensePane;
import Login.Button;
import Login.DBHandler;
import Login.MainFrame;
import Sales.SalePane;
import User.UserPane;
import Inventory.GBPane;

public class InventoryPane extends JPanel implements ItemListener,
    ActionListener, MouseMotionListener, MouseListener, FocusListener,
    KeyListener {
  private JPanel parent;
  private DBHandler db;
  private CardLayout cards;
  private BufferedImage bg, panel1, panel2;
  private JFrame frame;
  private Button salesBtn, inBtn, expBtn, usBtn, logBtn, viewIn, manageIn;
  // private Button prevDay, prevRow, nextDay, nextRow;
  private Timer time;
  private int userType, curPanel;
  private String error;
  private JLabel day, month, year, row;
  private JComboBox dayBox, yearBox, monthBox;
  private JTextField rowBox;
  private Date date;
  private JLabel d, m, y;
  private JButton prevDay, prevRow, nextDay, nextRow;
  private JPanel viewPane;
  private ArrayList<InventoryRecord> supplies;
  private ArrayList<JLabel> supplyNames;
  private ArrayList<JLabel> balances;
  private ArrayList<JTextField> inBoxes, outBoxes;
  private JScrollPane scrollPane;
  private int batchMark;

  public InventoryPane(DBHandler db, JPanel parent, CardLayout cards,
      BufferedImage bg, JFrame frame, int userType) {
    curPanel = 0;
    this.setLayout(null);
    this.db = db;
    this.parent = parent;
    this.cards = cards;
    this.bg = bg;
    this.frame = frame;
    this.userType = userType;
    showButtons();
    error = "";
    date = new Date();
    supplies = getDBInventoryItems();

    viewIn.setCurImg(1);

    day = new JLabel("Day :");
    month = new JLabel("Month :");
    year = new JLabel("Year :");
    row = new JLabel("Row :");
    d = new JLabel((date.getDate() + 1) + "");

    prevDay = new JButton("Previous Day");
    prevRow = new JButton("Previous Row");
    nextDay = new JButton("Next Day");
    nextRow = new JButton("Next Row");

   
    String s = "";
    switch (date.getMonth()) {
    case 0:
      s = "January";
      break;
    case 1:
      s = "February";
      break;
    case 2:
      s = "March";
      break;
    case 3:
      s = "April";
      break;
    case 4:
      s = "May";
      break;
    case 5:
      s = "June";
      break;
    case 6:
      s = "July";
      break;
    case 7:
      s = "August";
      break;
    case 8:
      s = "September";
      break;
    case 9:
      s = "October";
      break;
    case 10:
      s = "November";
      break;
    case 11:
      s = "December";
      break;
    }
    m = new JLabel(s);
    y = new JLabel((date.getYear() + 1900) + "");

    dayBox = new JComboBox();
    monthBox = new JComboBox();
    yearBox = new JComboBox();
    rowBox = new JTextField();
    viewPane = new JPanel();// ung ky nick

    dayBox.setBounds(280, 185, 45, dayBox.getPreferredSize().height);
    monthBox.setBounds(375, 185, 100, monthBox.getPreferredSize().height);
    yearBox.setBounds(523, 185, 70, yearBox.getPreferredSize().height);
    day.setBounds(248, 169, 50, 50);
    month.setBounds(335, 169, 70, 50);
    year.setBounds(475, 169, 70, 50);
    row.setBounds(335, 225, 50, 25);
    rowBox.setBounds(380, 227, 90, 26);
    d.setBounds(298, 187, 50, d.getPreferredSize().height);
    m.setBounds(385, 187, 100, m.getPreferredSize().height);
    y.setBounds(523, 187, 50, y.getPreferredSize().height);
    prevDay.setBounds(135, 180, prevDay.getPreferredSize().width,
        prevDay.getPreferredSize().height);
    prevRow.setBounds(205, 225, prevRow.getPreferredSize().width,
        prevRow.getPreferredSize().height);
    nextDay.setBounds(615, 180, nextDay.getPreferredSize().width,
        nextDay.getPreferredSize().height);
    nextRow.setBounds(510, 225, nextRow.getPreferredSize().width,
        nextRow.getPreferredSize().height);
    // viewPane.setBounds(137, 270, 554, 200);

    Font font2 = new Font("Calibri", Font.PLAIN, 15);
    dayBox.setFont(font2);
    monthBox.setFont(font2);
    yearBox.setFont(font2);
    d.setFont(font2);
    m.setFont(font2);
    y.setFont(font2);

    this.add(dayBox);
    this.add(day);
    this.add(monthBox);
    this.add(month);
    this.add(yearBox);
    this.add(year);
    this.add(row);
    this.add(rowBox);
    this.add(prevDay);
    this.add(prevRow);
    this.add(nextDay);
    this.add(nextRow);

    setInComponents(true);
    recordPaneConfig();
    scrollPane = new JScrollPane(viewPane);
    scrollPane.setBounds(137, 270, 554, 200);
    try {
      setComboBoxItems(monthBox);
      setComboBoxItems(yearBox);
    } catch (SQLException SqlEx) {
    }

    // this.add(viewPane);//ung ky nick
    this.add(d);
    this.add(m);
    this.add(y);
    this.add(scrollPane);

    this.addMouseListener(this);
    this.addMouseMotionListener(this);

    time = new Timer(300, this);

    prevDay.addActionListener(this);
    nextDay.addActionListener(this);
    prevRow.addActionListener(this);
    nextRow.addActionListener(this);
    rowBox.addFocusListener(this);

    dayBox.addItemListener(this);
    monthBox.addItemListener(this);
    yearBox.addItemListener(this);
    rowBox.addKeyListener(this);
    this.setBoxesEditable(false);
  }
  public ArrayList<InventoryRecord> getDBInventoryItems(){
    ArrayList<InventoryRecord> Records=new ArrayList<InventoryRecord>();
    ResultSet RS;
    int ctr=0;
   
    RS=db.MySQLSelect("SELECT InventoryID,InventoryIn,InventoryOut,TimeRecorded, unit, productname from Inventory,Product where TimeRecorded=Date(now()) AND prCode=ProductCode;");
   
    try {
     
      while(RS.next()){
        Records.add(new InventoryRecord(RS.getString(1), RS.getString(5),RS.getString(6), RS.getDate(4), RS.getInt(2),RS.getInt(3)));
        ctr++;
      }
      if(ctr==0)
        return initializeDailyRecord(1);
      RS.close();
    } catch (SQLException SQLe) {
      // TODO Auto-generated catch block
      error="*Error "+SQLe;
    }
   
    return Records;
  }
  public ArrayList<InventoryRecord> getDBInventoryItems(String s){
    ArrayList<InventoryRecord> Records=new ArrayList<InventoryRecord>();
    ResultSet RS;
   
    /*"SELECT productName,InventoryIn,InventoryOut from Inventory,Product where prCode=ProductCode AND TimeRecorded='"+
    yearBox.getSelectedItem()+"-"+monthBox.getSelectedItem()+"-"+dayBox.getSelectedItem()+"';"*/
   
    RS=db.MySQLSelect("SELECT InventoryID,InventoryIn,InventoryOut,TimeRecorded, unit, productname from Inventory,Product where TimeRecorded=Date('"+s+"') AND prCode=ProductCode;");
   
    try {
      while(RS.next()){
        Records.add(new InventoryRecord(RS.getString(1), RS.getString(5),RS.getString(6), RS.getDate(4), RS.getInt(2),RS.getInt(3)));
      }
     
      RS.close();
    } catch (SQLException SQLe) {
      // TODO Auto-generated catch block
      error="*Error: Error in Collecting Records";
    }
   
   
    return Records;
  }

  public void recordPaneConfig(){
    viewPane.removeAll();
    //supplies=getDBinventoryItems();

    if(supplies.size()>0){
      viewPane.setLayout(new GridLayout(supplies.size()+1, 4));
   
      viewPane.add(new JLabel("Product"));
      viewPane.add(new JLabel("In"));
      viewPane.add(new JLabel("Out"));
      viewPane.add(new JLabel("Balance"));
   
      supplyNames=new ArrayList<JLabel>();
      inBoxes=new ArrayList<JTextField>();
      outBoxes=new ArrayList<JTextField>();
      balances=new ArrayList<JLabel>();
   
      for(int ctr=0;ctr<supplies.size();ctr++){
        supplyNames.add(new JLabel(supplies.get(ctr).getUnitName()+" "+supplies.get(ctr).getSupplyName()));
        viewPane.add(supplyNames.get(ctr));
        inBoxes.add(new JTextField(supplies.get(ctr).getIn()+""));
        outBoxes.add(new JTextField(supplies.get(ctr).getOut()+""));
        balances.add(new JLabel(""+supplies.get(ctr).getBalance()));
        viewPane.add(inBoxes.get(ctr));
        viewPane.add(outBoxes.get(ctr));
        viewPane.add(balances.get(ctr));
     
        balanceCheck(ctr);
     
        inBoxes.get(ctr).setEditable(false);
        outBoxes.get(ctr).setEditable(false);
        inBoxes.get(ctr).addFocusListener(this);
        outBoxes.get(ctr).addFocusListener(this);
        inBoxes.get(ctr).addKeyListener(this);
        outBoxes.get(ctr).addKeyListener(this);
      }
    }
    else {
      //Statuslbl.setFont(DayLbl.getFont());
      //Statuslbl.setText("No Record for this Day");
      viewPane.add(new JLabel("<html><h2>No Record on this day</h2></html>"));
    }
    batchMark=supplies.size();
    rowBox.setText(supplies.size()+"");
  }

  private void recordPaneConfig(int rows){
    int ctr;
    viewPane.removeAll();
    //supplies=getDBinventoryItems();


    viewPane.setLayout(new GridLayout(rows+1, 4));
   
    viewPane.add(new JLabel("Product"));
    viewPane.add(new JLabel("In"));
    viewPane.add(new JLabel("Out"));
    viewPane.add(new JLabel("Balance"));
   
    supplyNames=new ArrayList<JLabel>();
    inBoxes=new ArrayList<JTextField>();
    outBoxes=new ArrayList<JTextField>();
    balances=new ArrayList<JLabel>();
   
    for(ctr=0;ctr<supplies.size();ctr++){
      supplyNames.add(new JLabel(supplies.get(ctr).getUnitName()+" "+supplies.get(ctr).getSupplyName()));
      inBoxes.add(new JTextField(supplies.get(ctr).getIn()+""));
      outBoxes.add(new JTextField(supplies.get(ctr).getOut()+""));
      balances.add(new JLabel(""+supplies.get(ctr).getBalance()));
     
    }
   
    for(ctr=0;ctr<rows;ctr++){
      viewPane.add(supplyNames.get(ctr));
      viewPane.add(inBoxes.get(ctr));
      viewPane.add(outBoxes.get(ctr));
      viewPane.add(balances.get(ctr));
     
      if(curPanel==0){
        inBoxes.get(ctr).setEditable(false);
        outBoxes.get(ctr).setEditable(false);
      }
      else{
        inBoxes.get(ctr).setEditable(true);
        outBoxes.get(ctr).setEditable(true);
      }
     
      inBoxes.get(ctr).addFocusListener(this);
      outBoxes.get(ctr).addFocusListener(this);
      balanceCheck(ctr);
     
      inBoxes.get(ctr).setEditable(false);
      outBoxes.get(ctr).setEditable(false);
      inBoxes.get(ctr).addFocusListener(this);
      outBoxes.get(ctr).addFocusListener(this);
      inBoxes.get(ctr).addKeyListener(this);
      outBoxes.get(ctr).addKeyListener(this);
    }
    batchMark=ctr;
  }
 

  private void infoBatches(boolean next){
    int rows=Integer.valueOf(rowBox.getText()),i=0;
    if(next&&rows<supplies.size()){
      while(batchMark>=0&&batchMark+rows>supplies.size())
        batchMark--;
      if(batchMark+rows<=supplies.size()){
        for(int ctr=batchMark;ctr<rows+batchMark;ctr++){
          supplyNames.get(i).setIcon(null);
          supplyNames.get(i).setText(supplies.get(ctr).getUnitName()+" "+supplies.get(ctr).getSupplyName());
          inBoxes.get(i).setText(supplies.get(ctr).getIn()+"");
          outBoxes.get(i).setText(supplies.get(ctr).getOut()+"");
          balances.get(i).setText(supplies.get(ctr).getBalance()+"");
          i++;
        }
        batchMark+=rows;

     
    }
    else if(rows<supplies.size()){
      batchMark-=rows;
      while(batchMark-rows<0)
        batchMark++;
      if(batchMark-rows>=0){
        int ctr;
        i=rows;
        for(ctr=batchMark;ctr>=batchMark-rows;ctr--){
          supplyNames.get(i).setIcon(null);
          supplyNames.get(i).setText(supplies.get(ctr).getUnitName()+" "+supplies.get(ctr).getSupplyName());
          inBoxes.get(i).setText(supplies.get(ctr).getIn()+"");
          outBoxes.get(i).setText(supplies.get(ctr).getOut()+"");
          balances.get(i).setText(supplies.get(ctr).getBalance()+"");
          i--;
        }
        //batchMark+=rows;
      }
     
    }
  }
 
 
  public void balanceCheck(int index) {
    ImageIcon exclamation;
    exclamation = new ImageIcon("Images/exclaim.png");
    if (supplies.get(index).getBalance() < 15)
      supplyNames.get(index).setIcon(exclamation);
    else
      supplyNames.get(index).setIcon(null);
  }

  public void setComboBoxItems(JComboBox cb) throws SQLException{
    cb.removeAllItems();
    if(cb==monthBox){
      cb.addItem("January");cb.addItem("Febuary");cb.addItem("March");
      cb.addItem("April");cb.addItem("May");cb.addItem("June");
      cb.addItem("July");cb.addItem("August");cb.addItem("September");
      cb.addItem("October");cb.addItem("November");cb.addItem("December");
     
      ResultSet RS=db.MySQLSelect("Select Month(now());"),RY,RD;
      RS.first();
      cb.setSelectedIndex(RS.getInt(1)-1);
   
      RY=db.MySQLSelect("Select Year(now());");
      RY.first();
     
      int limit,ctr;
     
      if(RS.getInt(1)==1||RS.getInt(1)==3||RS.getInt(1)==5||RS.getInt(1)==7||RS.getInt(1)==8
          ||RS.getInt(1)==10||RS.getInt(1)==12)
        limit=31;
      else if(RS.getInt(1)==2)
        if(RY.getInt(1)%4!=0)
          limit =28;
        else limit=29;
      else limit=30;
     
      for(ctr=1;ctr<=limit;ctr++)
        dayBox.addItem(""+ctr);
      RS.close();
      RY.close();
     
     
      RD=db.MySQLSelect("Select Day(now());");
      RD.first();
     
      dayBox.setSelectedItem(RD.getString(1));
      RD.close();
     
      }
    else if(cb==yearBox){
      ResultSet RS=db.MySQLSelect("Select Year(TimeRecorded) from Inventory group by year(TimeRecorded);");
     
      while(RS.next())
        cb.addItem(RS.getString(1));
      cb.setSelectedIndex(cb.getItemCount()-1);
      RS.close();
    }
    else if(cb==dayBox){
      ResultSet RS=db.MySQLSelect("Select Month(now());"),RY,RD;
      RS.first();
      monthBox.setSelectedIndex(RS.getInt(1)-1);
     
      RY=db.MySQLSelect("Select Year(now());");
      RY.first();
     
      int limit,ctr;
     
      if(RS.getInt(1)==1||RS.getInt(1)==3||RS.getInt(1)==5||RS.getInt(1)==7||RS.getInt(1)==8
          ||RS.getInt(1)==10||RS.getInt(1)==12)
        limit=31;
      else if(RS.getInt(1)==2)
        if(RY.getInt(1)%4!=0)
          limit =28;
        else limit=29;
      else limit=30;
     
      for(ctr=1;ctr<=limit;ctr++)
        dayBox.addItem(""+ctr);
      RS.close();
      RY.close();
     
     
      RD=db.MySQLSelect("Select Day(now());");
      RD.first();
     
      dayBox.setSelectedItem(RD.getString(1));
      RD.close();
    }
  }
  private ArrayList<InventoryRecord> initializeDailyRecord(int i) throws SQLException{
    ArrayList<InventoryRecord> Records=new ArrayList<InventoryRecord>();
    ResultSet RS,RT;
    int ctr=0;
   
    RS=db.MySQLSelect("SELECT InventoryID,InventoryIn,InventoryOut, unit, productname,prCode from Inventory,Product where TimeRecorded=Date_SUB(CurDate(),INTERVAL "+i+" Day)AND prCode=ProductCode;");
    RT=db.MySQLSelect("SELECT curDate();");
    RT.first();
    while(RS.next()){
      Records.add(new InventoryRecord(RT.getString(1)+ctr, RS.getString(4), RS.getString(5), RT.getDate(1), RS.getInt(2)-RS.getInt(3), 0));
      db.MySQLInsert("Insert INTO INventory values ('"+(RT.getString(1)+ctr)
          +"',"+(RS.getInt(2)-RS.getInt(3))+",0,now(),'"+RS.getString(6)+"');");
      ctr++;
     
    }
   
    if(ctr==0)
      return initializeDailyRecord(i+1);
   
    RT.close();
    RS.close();
     return Records;
  }
 

  public void rowChange(int rows) {

    error = "";
    if (rows > supplies.size()) {
      rows = supplies.size();
      error = "*Error: Rows exceed number of records";
    }
    if (rows < 0) {
      rows = 0;
      error = "*Error: Must have at least 0 row";
    }
    rowBox.setText("" + rows);
    recordPaneConfig(rows);
    paintAnsestors(viewPane);

  }

  //method that changes the dayBox based on the month
  public void dayBoxConfig(int month){
    int limit,year=Integer.valueOf(yearBox.getSelectedItem().toString()),Day=dayBox.getItemCount();
    //Determine month to determine number of days
    if(month==0||month==2||month==4||month==6||month==7||month==9||month==11)
      limit =31;
    else if(month==1)
      if(year%4!=0)
        limit =28;
      else limit=29;
    else limit=30;
   
    dayBox.removeItemListener(this);
    //dayBox.setSelectedIndex(0);
   
    if(Day<limit)
      for(int ctr=Day+1;ctr<=limit;ctr++)
        dayBox.addItem(""+ctr);
    else if(Day>limit){
      dayBox.removeAllItems();
      for(int ctr=1;ctr<=limit;ctr++)
        dayBox.addItem(""+ctr);
    }
    monthBox.addItemListener(this);
    dayBox.addItemListener(this);
  }

  // Method that responds to the next and previous day buttons
  //Method that responds to the next and previous day buttons
  public void nextPrevDay(int change){
    int month;
    if(change>0){
      if(dayBox.getSelectedIndex()<dayBox.getItemCount()-change)
        dayBox.setSelectedIndex(dayBox.getSelectedIndex()+change);
      else if(monthBox.getSelectedIndex()<monthBox.getItemCount()-change){
        monthBox.removeItemListener(this);
        monthBox.setSelectedIndex(monthBox.getSelectedIndex()+change);
        month=monthBox.getSelectedIndex();
       
        dayBoxConfig(month);
        dayBox.setSelectedIndex(0);
      }
      else{
        yearBox.removeItemListener(this);
        yearBox.addItem(""+(Integer.valueOf(yearBox.getSelectedItem().toString())+1));
        yearBox.setSelectedIndex(yearBox.getItemCount()-1);
        monthBox.setSelectedIndex(0);
        dayBox.setSelectedIndex(0);
        yearBox.addItemListener(this);
       
      }
     
    }
    else if(change<0){
      if(dayBox.getSelectedIndex()>0)
        dayBox.setSelectedIndex(dayBox.getSelectedIndex()+change);
      else if(monthBox.getSelectedIndex()>0){
        monthBox.removeItemListener(this);
        monthBox.setSelectedIndex(monthBox.getSelectedIndex()+change);
        month=monthBox.getSelectedIndex();
        dayBoxConfig(month);
       
        dayBox.setSelectedIndex(dayBox.getItemCount()-1);
      }
      else if(yearBox.getSelectedIndex()>0)
        yearBox.setSelectedIndex(yearBox.getSelectedIndex()+change);
      else error="*Error: No more record in the previous Years";
    }
  }



  public void showButtons() {
    try {
      switch (userType) {
      case 4:
        salesBtn = new Button("images/b1.png", "images/b1a.png",
            "images/b1.png");
        usBtn = new Button("images/b5.png", "images/b5a.png",
            "images/b5.png");

      case 3:
        inBtn = new Button("images/b2a.png", "images/b2.png",
            "images/b2.png");
        expBtn = new Button("images/b3.png", "images/b3a.png",
            "images/b3.png");
        logBtn = new Button("images/b7.png", "images/b7a.png",
            "images/b7.png");
        viewIn = new Button("images/i2.png", "images/i2a.png",
            "images/i2.png");
        manageIn = new Button("images/i3.png", "images/i3a.png",
            "images/i3.png");
      }
      panel1 = ImageIO.read(new File("images/viewin.png"));
      panel2 = ImageIO.read(new File("images/manageIn.png"));
      /*
       * prevDay = new Button("images/prev.png", "images/preva.png",
       * "images/prev.png"); prevRow = new Button("images/prevrow.png",
       * "images/prevrowa.png", "images/prevrow.png"); nextDay = new
       * Button("images/nextday.png", "images/nextdaya.png",
       * "images/nextday.png"); nextRow = new Button("images/nextrow.png",
       * "images/nextrowb.png", "images/nextrow.png");
       */
      // panel3= ImageIO.read(new File("images/removeuser.png"));

    } catch (IOException e) {
      System.out.print("Image not found");
      e.printStackTrace();
    }

  }
  public void setBoxesEditable(boolean b){
    for (int ctr = 0; ctr < supplies.size(); ctr++) {
      inBoxes.get(ctr).setEditable(b);
      outBoxes.get(ctr).setEditable(b);
    }
  }
  @Override
  public void actionPerformed(ActionEvent AE) {
    // TODO Auto-generated method stub
    repaint();
    scrollPane.revalidate();
    switch (curPanel) {

    case 0:
      viewIn.setCurImg(1);
      setBoxesEditable(false);
      break;
    case 1:
      manageIn.setCurImg(1);
      setBoxesEditable(true);
    }

    if (AE.getSource() == nextDay)
      nextPrevDay(1);
   
    else if (AE.getSource() == prevDay)
      nextPrevDay(-1);
    else if (AE.getSource() == nextRow)
      infoBatches(true);
    else if (AE.getSource() == prevRow)
      infoBatches(false);
    scrollPane.revalidate();
  }

  public void paintAnsestors(Container cn) {
    Container C = cn;
    while (C.getParent() != null) {
      C.repaint();
      C = C.getParent();
    }
  }

  public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2D = (Graphics2D) g;
    time.start();
    g2D.drawImage(bg, 0, 0, null);
    switch (userType) {
    case 4:
      g2D.drawImage(usBtn.getCurImg(), 497, 8, null);
      g2D.drawImage(salesBtn.getCurImg(), 145, 8, null);
      g2D.drawImage(inBtn.getCurImg(), 269, 8, null);
      g2D.drawImage(expBtn.getCurImg(), 383, 8, null);
      break;
    case 3:
      g2D.drawImage(inBtn.getCurImg(), 138, 8, null);
      g2D.drawImage(expBtn.getCurImg(), 243, 8, null);
    }
    g2D.drawImage(logBtn.getCurImg(), 611, 8, null);
    g2D.drawImage(viewIn.getCurImg(), 10, 168, null);
    g2D.drawImage(manageIn.getCurImg(), 10, 306, null);
    Font font = new Font("Calibri", Font.PLAIN, 20);

    g2D.setColor(Color.RED);
    g2D.setFont(font);

    if (curPanel == 0) {
      g2D.drawImage(panel1, 125, 105, null);
      /*
       * g2D.drawImage(prevDay.getCurImg(), 135, 175, null);
       * g2D.drawImage(prevRow.getCurImg(), 205, 225, null);
       * g2D.drawImage(nextDay.getCurImg(), 615, 175, null);
       * g2D.drawImage(nextRow.getCurImg(), 545, 225, null);
       */
      g2D.drawString(error, 297, 167);

    }
    if (curPanel == 1) {
      /*
       * g2D.drawImage(prevRow.getCurImg(), 205, 225, null);
       * g2D.drawImage(nextRow.getCurImg(), 545, 225, null);
       */
      g2D.drawImage(panel2, 125, 105, null);
      g2D.drawString(error, 297, 167);

    }
  }

  public void setInComponents(boolean b) {

    dayBox.setVisible(b);
    monthBox.setVisible(b);
    yearBox.setVisible(b);
    d.setVisible(!b);
    m.setVisible(!b);
    y.setVisible(!b);

    prevDay.setVisible(b);
    nextDay.setVisible(b);
  }

  @Override
  public void mouseClicked(MouseEvent m) {
    // TODO Auto-generated method stub

    switch (userType) {
    case 4:
      if (m.getX() >= 151 && m.getX() <= 229 && m.getY() >= 8
          && m.getY() <= 86)// within the boundaries of sales btn
        cards.show(parent, "sales");
      else if (m.getX() >= 390 && m.getX() <= 469 && m.getY() >= 8
          && m.getY() <= 86)// within the boundaries of exp btn
        cards.show(parent, "expense");
      else if (m.getX() >= 504 && m.getX() <= 581 && m.getY() >= 7
          && m.getY() <= 85)// within the boundaries of us btn
        cards.show(parent, "users");
      break;
    case 3:
      if (m.getX() >= 249 && m.getX() <= 327 && m.getY() >= 7
          && m.getY() <= 86)// within the boundaries of exp btn
        cards.show(parent, "expense");

      break;
    }

    if (m.getX() >= 17 && m.getX() <= 95 && m.getY() >= 170
        && m.getY() <= 246) {// within the boundaries of view btn
      error  = "";
      viewIn.setCurImg(1);
      manageIn.setCurImg(0);
      curPanel = 0;
      setInComponents(true);
      setBoxesEditable(false);
    }
    if (m.getX() >= 16 && m.getX() <= 97 && m.getY() >= 305
        && m.getY() <= 386) {// within the boundaries of manage btn
      error  = "";
      viewIn.setCurImg(0);
      manageIn.setCurImg(1);
      curPanel = 1;
      setInComponents(false);
      supplies = getDBInventoryItems();
      recordPaneConfig();
      setBoxesEditable(true);
      scrollPane.revalidate();
    }
 
    if (m.getX() >= 617 && m.getX() <= 698 && m.getY() >= 9
        && m.getY() <= 85) {// within the boundaries of log out btn
      final JFrame frame2  = new JFrame("Confirm Action");

        JLabel label  = new JLabel();
        JLabel label2 = new JLabel("Are you sure you want to log out?");
        JButton yes = new JButton("Yes");
        JButton no = new JButton("No");
        yes.addActionListener(
            new ActionListener(){
              @Override
              public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                new MainFrame();
                frame.dispose();
                        frame2.dispose();
              }
            }
        );
        yes.setIcon(new ImageIcon("Images/yes.png"));
        no.setIcon(new ImageIcon("Images/no.png"));
       
        no.addActionListener(
            new ActionListener(){
              @Override
              public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                frame2.dispose();
              }
            }
        );
       
        label2.setFont(new Font(Font.SERIF, Font.PLAIN, 17));
       
        JPanel panel  = new JPanel();
        ImageIcon confirm;
        confirm= new ImageIcon("Images/confirmaction.png");
        label.setIcon(confirm);
       
        panel.add(label);
        panel.add(label2);
        panel.add(yes);
        panel.add(no);

        label.setBounds(26, 20, 120, 120);
        label2.setBounds(145, 40, 250, 30);
        yes.setBounds(160, 105, 80, yes.getPreferredSize().height);
        no.setBounds(260, 105, 80, no.getPreferredSize().height+2);
       
        panel.setLayout(null);
        frame2.add(panel);
        frame2.setVisible(true);
        frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame2.setSize(400, 200);
        frame2.setLocationRelativeTo(null);
        
      }    
         
  }

  @Override
  public void mouseEntered(MouseEvent m) {
    // TODO Auto-generated method stub

  }

  @Override
  public void mouseExited(MouseEvent m) {
    // TODO Auto-generated method stub

  }

  @Override
  public void mousePressed(MouseEvent m) {
    // TODO Auto-generated method stub

  }

  @Override
  public void mouseReleased(MouseEvent m) {
    // TODO Auto-generated method stub

  }

  @Override
  public void mouseDragged(MouseEvent m) {
    // TODO Auto-generated method stub

  }

  @Override
  public void mouseMoved(MouseEvent m) {
    // TODO Auto-generated method stub
    switch (userType) {

    case 4:
      if (m.getX() >= 151 && m.getX() <= 229 && m.getY() >= 8
          && m.getY() <= 86)// within the boundaries of sales btn
        salesBtn.setCurImg(1);
      else if (m.getX() >= 390 && m.getX() <= 469 && m.getY() >= 8
          && m.getY() <= 86)// within the boundaries of exp btn
        expBtn.setCurImg(1);
      else if (m.getX() >= 504 && m.getX() <= 581 && m.getY() >= 7
          && m.getY() <= 85)// within the boundaries of us btn
        usBtn.setCurImg(1);
      else if (m.getX() >= 617 && m.getX() <= 698 && m.getY() >= 9
          && m.getY() <= 85)// within the boundaries of log out btn
        logBtn.setCurImg(1);

      else {
        salesBtn.setCurImg(0);
        inBtn.setCurImg(0);
        expBtn.setCurImg(0);
        usBtn.setCurImg(0);
        logBtn.setCurImg(0);
      }
      break;
    case 3:
      if (m.getX() >= 249 && m.getX() <= 327 && m.getY() >= 7
          && m.getY() <= 86)// within the boundaries of exp btn
        expBtn.setCurImg(1);
      else if (m.getX() >= 617 && m.getX() <= 698 && m.getY() >= 9
          && m.getY() <= 85)// within the boundaries of log out btn
        logBtn.setCurImg(1);
      else {
        inBtn.setCurImg(0);
        expBtn.setCurImg(0);
        logBtn.setCurImg(0);
      }
      break;
    }

    if (m.getX() >= 17 && m.getX() <= 95 && m.getY() >= 170
        && m.getY() <= 246)// within the boundaries of view btn
      viewIn.setCurImg(1);
    else if (m.getX() >= 16 && m.getX() <= 97 && m.getY() >= 305
        && m.getY() <= 386)// within the boundaries of manage btn
      manageIn.setCurImg(1);
    /*
     * else if (m.getX() >= 134&&
     * m.getX()<=228&&m.getY()>=177&&m.getY()<=206)//within the boundaries
     * of prev btn prevDay.setCurImg(1); else if (m.getX() >= 614&&
     * m.getX()<=703&&m.getY()>=177&&m.getY()<=206)//within the boundaries
     * of next btn nextDay.setCurImg(1); else if (m.getX() >= 205&&
     * m.getX()<=296&&m.getY()>=226&&m.getY()<=253)//within the boundaries
     * of prevrow btn prevRow.setCurImg(1); else if (m.getX() >= 546&&
     * m.getX()<=636&&m.getY()>=226&&m.getY()<=253)//within the boundaries
     * of nextrow btn nextRow.setCurImg(1);
     */
    else {

      viewIn.setCurImg(0);
      manageIn.setCurImg(0);
      /*
       * prevDay.setCurImg(0); nextDay.setCurImg(0); prevRow.setCurImg(0);
       * nextRow.setCurImg(0);
       */

    }

  }

  @Override
  public void itemStateChanged(ItemEvent IE) {
    // getDBinventoryItems();
    if (IE.getSource() == monthBox) {
      monthBox.removeItemListener(this);// Remove recursion since
                        // itemstateChanged can be
                        // trigerred in this method
      dayBoxConfig(monthBox.getSelectedIndex());
    }
    if (IE.getSource() == dayBox || IE.getSource() == monthBox
        || IE.getSource() == yearBox) {
      supplies = getDBInventoryItems(yearBox.getSelectedItem().toString()
          + "-" + (monthBox.getSelectedIndex() + 1) + "-"
          + dayBox.getSelectedItem().toString());

      recordPaneConfig();
      // RecordPane.repaint();
      paintAnsestors(viewPane);
    }
  }

  @Override
  public void focusGained(FocusEvent FE) {

  }
  public void focusLost(FocusEvent FE) {
    int i;
    error="";
      if(inBoxes.contains(FE.getSource())){
        i=inBoxes.indexOf(FE.getSource());
       
        try{
          if(Integer.valueOf(inBoxes.get(i).getText())>=0)
          db.MySQLUpdate("UPDATE Inventory SET InventoryIn='"+inBoxes.get(i).getText()+"' where InventoryID='"
            +supplies.get(i).getID()+"';");
          else inBoxes.get(i).setText(supplies.get(i).getIn()+"");
            supplies.get(i).setIn(Integer.valueOf(inBoxes.get(i).getText()));
            balances.get(i).setText(supplies.get(i).getBalance()+"");
          balanceCheck(i);
          }catch(Exception general){
            inBoxes.get(i).setText(supplies.get(i).getIn()+"");
            error="*Error: Not a number";
          }
       
    }
      else if(outBoxes.contains(FE.getSource())){
        i=outBoxes.indexOf(FE.getSource());
        try{
          if(Integer.valueOf(outBoxes.get(i).getText()) <=Integer.valueOf(inBoxes.get(i).getText())&&Integer.valueOf(outBoxes.get(i).getText())>=0){
          db.MySQLUpdate("UPDATE Inventory SET InventoryOut='"+outBoxes.get(i).getText()+"' where InventoryID='"
            +supplies.get(i).getID()+"';");
          supplies.get(i).setOut(Integer.valueOf(outBoxes.get(i).getText()));
          balances.get(i).setText(supplies.get(i).getBalance()+"");
          balanceCheck(i);
          }
          else{
            if(Integer.valueOf(outBoxes.get(i).getText()) >Integer.valueOf(inBoxes.get(i).getText()))
              error="*Error: Out can not be more than In";
            else error="*Error: No negative values";
            outBoxes.get(i).setText(supplies.get(i).getOut()+"");
          }
        }catch(Exception general){
          outBoxes.get(i).setText(supplies.get(i).getOut()+"");
          error="*Error: Not a number";
        }
       
        paintAnsestors(viewPane);
    }
      else if(FE.getSource()==rowBox){
        try{
          rowChange(Integer.valueOf(rowBox.getText()));
        }catch(NumberFormatException NF){
          error="*Error: Please enter a valid number";
        }
      }
 
  }

  @Override
  public void keyPressed(KeyEvent KE) {
   
  }

  @Override
  public void keyReleased(KeyEvent KE) {
    // TODO Auto-generated method stub
   
    int i;
   
    if(KE.getKeyCode()==KeyEvent.VK_QUOTE)
      error="*Error: Invalid Input";
    else error="";
   
    if(KE.getSource()==rowBox&&KE.getKeyCode()==KeyEvent.VK_ENTER){
      try{
        rowChange(Integer.valueOf(rowBox.getText()));
        //rowBox.getParent().requestFocus();
      }catch(NumberFormatException NF){

        error="*Error: Please enter a valid number";
      }
      paintAnsestors(viewPane);
    }
    else if(inBoxes.contains(KE.getSource())&&KE.getKeyCode()==KeyEvent.VK_ENTER){
      i=inBoxes.indexOf(KE.getSource());
      outBoxes.get(i).requestFocus();
    }
    else if(outBoxes.contains(KE.getSource())&&KE.getKeyCode()==KeyEvent.VK_ENTER){
      i=outBoxes.indexOf(KE.getSource());
      if(i<inBoxes.size()-1)
        inBoxes.get(i+1).requestFocus();
    }
  }

  @Override
  public void keyTyped(KeyEvent KE) {
    // TODO Auto-generated method stub
   
  }
}
TOP

Related Classes of Inventory.InventoryPane

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.