@Override
  public String toString() {
    StringBuilder sb = new StringBuilder();

    sb.append("GeneratedElecInputs with " + this.getNumberSingleInputs() + " inputs in total\n");

    Enumeration keys = this.myElecInputs.keys();

    while (keys.hasMoreElements()) {
      String input = (String) keys.nextElement();
      ArrayList<SingleElectricalInput> singleInputList = myElecInputs.get(input);
      StimulationSettings ss = project.elecInputInfo.getStim(input);
      sb.append(
          input + " (" + ss.toLongString() + ") has " + singleInputList.size() + " entries.\n");
      for (int i = 0; (i < singleInputList.size() && i < 9); i++) {
        SingleElectricalInput sei = singleInputList.get(i);
        sb.append("   Input " + i + ": " + sei.toString());
        if (sei.getInstanceProps() != null)
          sb.append(" (" + sei.getInstanceProps().details(false) + ")");

        sb.append("\n");
      }
    }
    return sb.toString();
  }
  public String getHtmlReport() {
    StringBuilder generationReport = new StringBuilder();

    Enumeration<String> e = myElecInputs.keys();

    while (e.hasMoreElements()) {
      String elecInputName = e.nextElement();

      StimulationSettings s = project.elecInputInfo.getStim(elecInputName);

      generationReport.append(
          "<b>"
              + ClickProjectHelper.getElecInputLink(elecInputName)
              + "</b> ("
              + s.getElectricalInput().toLinkedString()
              + " on "
              + s.getCellChooser().toNiceString()
              + " of "
              + ClickProjectHelper.getCellGroupLink(s.getCellGroup())
              + ", segs: "
              + s.getSegChooser()
              + ")<br>");

      generationReport.append(
          "Number of individual inputs: <b>"
              + project.generatedElecInputs.getNumberSingleInputs(elecInputName)
              + "</b><br><br>");
    }

    if (generationReport.toString().length() == 0) {
      generationReport.append("No Electrical Inputs generated<br><br>");
    }

    return generationReport.toString();
  }
  public String details(boolean html) {
    StringBuilder sb = new StringBuilder();

    sb.append(
        "Network contains "
            + GeneralUtils.getBold(this.getNumberSingleInputs(), html)
            + " inputs in total"
            + GeneralUtils.getEndLine(html)
            + GeneralUtils.getEndLine(html));

    Enumeration keys = this.myElecInputs.keys();

    String indent = "    ";
    if (html) indent = "&nbsp;&nbsp;&nbsp;&nbsp;";

    while (keys.hasMoreElements()) {
      String input = (String) keys.nextElement();
      ArrayList<SingleElectricalInput> singleInputList = myElecInputs.get(input);
      sb.append(
          "Input: "
              + GeneralUtils.getBold(input, html)
              + " has "
              + GeneralUtils.getBold(singleInputList.size(), html)
              + " entries"
              + GeneralUtils.getEndLine(html));
      for (int i = 0; (i < singleInputList.size()); i++) {
        sb.append(
            "Input "
                + i
                + ": "
                + singleInputList.get(i).details(html)
                + GeneralUtils.getEndLine(html));
        if (singleInputList.get(i).getInstanceProps() != null) {
          sb.append(
              indent
                  + "Input specific properties: "
                  + singleInputList.get(i).getInstanceProps().details(html)
                  + GeneralUtils.getEndLine(html));
        }
      }
      sb.append(GeneralUtils.getEndLine(html));
    }
    return sb.toString();
  }