public void drawLines(int it, int runnum) {
   for (int i = lastDrawn; i < runnum; i++) {
     for (int yy = 1; yy < it; yy++) {
       CApicture.drawALine(savedvals[i][yy - 1], yy - 1, savedvals[i][yy], yy, javaColours[1]);
     }
   }
   lastDrawn = runCount;
   CApicture.updateGraphic();
 }
  public void initialise() {
    experiment = new CAGridStatic(gSize, maxit, dsize);

    // change call to setScale if just using 1 image
    if (runCount < 1) {
      CApicture.setScale(gSize, maxit, scale, gSize, rowstoDraw, scale);
      CApicture.clearCAPanel(1);
      CApicture.clearCAPanel(2);
    }
    iterations = 0;
  }
  public void drawLines() {

    if (iterations > 0) {
      CApicture.drawALine(
          experiment.savedx[iterations - 1],
          iterations - 1,
          experiment.savedx[iterations],
          iterations,
          javaColours[1]);
      CApicture.updateGraphic();
    }
  }
 public void drawCA() {
   int a;
   // CApicture.clearCAPanel();
   for (CACell c : experiment.tissue) {
     a = c.lineage;
     if (a > 0) a = (a - 1) % nnw + 1;
     // if(a<7){
     CApicture.drawCircleAt(c.home.x, iterations, javaColours[a]);
     // }else{
     // CApicture.drawCircleAt(c.home.x,iterations,Color.orange);
     // }
   }
   CApicture.updateGraphic();
 }
  public CAStatic(int size) {

    // size is the size of the area containing cells
    dsize = size;
    gSize = size + 2 * maxit;
    int wscale = 6; // scale for main panel
    int btnHeight = 480 - 384; // found by trial and error - must be a better way!

    // experiment = new CAGridStatic(size, maxC);
    // int tint = (int)Math.ceil((double)(400*maxit)/(double)gSize)+(480-384);
    // int tint = (int)Math.ceil((double)(400*(50+maxit))/(double)gSize)+(480-384);
    int tint = (maxit + rowstoDraw) * wscale + btnHeight;
    // only going to show up to 50 dots in lower panel
    // add 20 to x and 60 to y bcos not printing onto the full frame
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Container mainWindow = getContentPane();
    mainWindow.setLayout(new BorderLayout());
    setSize(gSize * wscale, tint);

    buttonHolder = new JPanel();
    buttonHolder.setLayout(new GridLayout(2, 2));

    SpinnerNumberModel model3 = new SpinnerNumberModel(50, 0, 100, 5);
    JSpinner spinner3 = new JSpinner(model3);
    writeBtn = new JButton("Output Results to file");
    writeBtn.addActionListener(this);

    startBtn = new JButton("Start");
    startBtn.addActionListener(this);

    paramsBtn = new JButton("Set Probabilities");
    paramsBtn.addActionListener(this);

    wrapBtn = new JButton("Toggle wrap");
    wrapBtn.addActionListener(this);

    buttonHolder.add(writeBtn);
    writeBtn.setVisible(false);
    buttonHolder.add(paramsBtn);
    buttonHolder.add(wrapBtn);
    buttonHolder.add(startBtn);

    mainWindow.add(buttonHolder, BorderLayout.SOUTH);

    msgBtn = new JTextArea(" Default Parameter Values: " + CAGridStatic.params);
    msgBtn.setEditable(false);

    mainWindow.add(msgBtn, BorderLayout.NORTH);

    CApicture = new CAImagePanel();
    CApicture.rowstoShow = rowstoDraw;
    mainWindow.add(CApicture, BorderLayout.CENTER);

    // not here - doesn't work: CApicture.setScale(gSize,maxit,scale);

    // pack();

    setVisible(true);
    setpalette();
    iterations = 0;
    savedvals = new int[maxRun][maxit];
    outPrinter = new ResultsPrinter(this);
  }
 public void drawCount(int ind) {
   CApicture.drawCircleAt(ind, dCount[ind], javaColours[1], 2);
   CApicture.updateGraphic();
 }