public Renderer parse_file(File infile) {

    try {

      BufferedReader in = new BufferedReader(new FileReader(infile));

      String line = null;

      String rendererString = null;

      if ((line = in.readLine()) != null && !line.trim().equals("")) {
        // parse first line
        if (line.trim().toUpperCase().startsWith("#RENDERER:")) {

          rendererString = line.trim().toUpperCase().substring(10);

        } else {
          in.close();
          return null;
        }
      }

      if (rendererString.equals(RendererValue.XY_PLOT_RENDERER)) {
        Renderer renderer = new XYPlotRenderer();
        renderer.setLayout(this.parse_xyplot(in));
        return renderer;
      } else if (rendererString.equals(RendererValue.VERTICAL_LINES_RENDERER)) {
        Renderer renderer = new ColoredLinesRenderer();
        renderer.setLayout(this.parse_lines(in));
        return renderer;
      }
      in.close();
      return null;

    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }

    return null;
  }