/**
   * Instantiates a new internal debug window.
   *
   * @param displayHoriz the display horiz
   * @param the maximal x size of the window
   */
  public GeneratorGuiCreator(
      PApplet parentPapplet, int maximalXSize, int maximalYSize, String version) {
    int nrOfScreens = Collector.getInstance().getAllVisuals().size();
    LOG.log(Level.INFO, "create GUI, nr of screens: " + nrOfScreens);

    Generator g = Collector.getInstance().getPixelControllerGenerator().getGenerator(0);
    WindowSizeCalculator wsc =
        new WindowSizeCalculator(
            g.getInternalBufferXSize(),
            g.getInternalBufferYSize(),
            maximalXSize,
            maximalYSize,
            nrOfScreens);

    // connect the new PApplet to our frame
    gui = new GeneratorGui(wsc);
    gui.init();

    // create new window for child
    LOG.log(Level.INFO, "Create new window: " + wsc);
    JFrame childFrame = new JFrame("PixelController Generator Window " + version);
    childFrame.setResizable(false);
    childFrame.setIconImage(createLargeIcon(gui));

    childFrame.add(gui);

    childFrame.setBounds(0, 0, wsc.getWindowWidth(), wsc.getWindowHeight() + 30);
    gui.setBounds(0, 0, wsc.getWindowWidth(), wsc.getWindowHeight() + 30);

    // important to call this whenever embedding a PApplet.
    // It ensures that the animation thread is started and
    // that other internal variables are properly set.
    childFrame.setVisible(true);

    // childFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    childFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    childFrame.addWindowListener(new WindowHandler(parentPapplet));
  }
 @Override
 public List<String> getCurrentState() {
   return col.getCurrentStatus();
 }