package rmi.rmiimage;

import ip.gui.frames.ClosableFrame;

import java.awt.*;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;

public class CPUArrayFrame extends
        ClosableFrame implements
    ComponentListener {
  public void componentShown(
      ComponentEvent e) {
  }

  public void componentMoved(
      ComponentEvent e) {
  }

  public void componentHidden(
      ComponentEvent e) {
  }

  public void componentResized(
      ComponentEvent e) {
    pack();
  }

  public CpuPanel[] addCpus(int N) {
    setLayout(new
        GridLayout(2, 1));
    setBackground(Color.white);
    PapPanel pap =
        new PapPanel(N);
    add(pap);
    add(new BCP(this));
    pack();
    return pap.cpuPanels;

  }

  public void incrementCpus() {
    int statearr[] = new int[cpus.length];
    for (int i = 0; i < cpus.length; i++)
      statearr[i] = -1;

    for (int i = 0; i < cpus.length; i++) {
      if (cpus[i].getstate())
        statearr[i] = 1;
    }
    Client mc = new Client(statearr);
    for (int i = 0; i < cpus.length; i++) {
//      cpus[i].setSpeed(cpus[i].getSpeed()+1);
//      cpus[i].setLightOn(true);
      if (cpus[i].getstate()) {
        System.out.println("From CPUArrayframe!");
        cpus[i].setLightOn(true);
        mc.Start(i, cpus[i]);
      }
    }
  }

  public void terminateCpus() {
    for (int i = 0; i < cpus.length; i++) {
      cpus[i].setSpeed(0);
      cpus[i].setLightOn(false);
    }
  }

  CpuPanel cpus[];

  public void init() {
    cpus = addCpus(20);
    for (int i = 0; i < cpus.length; i++)
      cpus[i].setSpeed(0);
    setVisible(true);
    addComponentListener(this);
  }

  public static void main(String args[]) {
    CPUArrayFrame d = new CPUArrayFrame();
    d.init();
  }
}