public HfsCompositeAction() {
    super(
        "HfsComposite",
        new VersionID("1.0.0"),
        "Temerity",
        "Generates a sequence of composited images by evaluating a COP in a " + "Houdini scene.");

    {
      ActionParam param =
          new StringActionParam(
              "OutputOperator", "The name of the composite output operator.", "comp1");
      addSingleParam(param);
    }

    {
      ActionParam param =
          new LinkActionParam("HoudiniScene", "The source Houdini scene node.", null);
      addSingleParam(param);
    }

    {
      ActionParam param =
          new LinkActionParam("PreRenderScript", "The pre-render command script.", null);
      addSingleParam(param);
    }

    {
      ActionParam param =
          new LinkActionParam("PostRenderScript", "The post-render command script.", null);
      addSingleParam(param);
    }

    {
      ActionParam param =
          new LinkActionParam("PreFrameScript", "The pre-frame command script.", null);
      addSingleParam(param);
    }

    {
      ActionParam param =
          new LinkActionParam("PostFrameScript", "The post-frame command script.", null);
      addSingleParam(param);
    }

    {
      LayoutGroup layout = new LayoutGroup(true);
      layout.addEntry("OutputOperator");
      layout.addSeparator();
      layout.addEntry("HoudiniScene");
      layout.addSeparator();

      {
        LayoutGroup scripts =
            new LayoutGroup(
                "Command Scripts",
                "Houdini command scripts run at various stages of the compositing process.",
                true);
        scripts.addEntry("PreRenderScript");
        scripts.addEntry("PostRenderScript");
        scripts.addSeparator();
        scripts.addEntry("PreFrameScript");
        scripts.addEntry("PostFrameScript");

        layout.addSubGroup(scripts);
      }

      setSingleLayout(layout);
    }
  }