docs: public boolean mouseDown(Event e, int x, int y) {
  
          if (iRowHeight == 0 || x > iWidth || y > iHeight) {
              return true;
          }
  
          y += iRowHeight / 2;
  
          String[] root = new String[100];
  
          root[0] = "";
  
          int     currentindent = 0;
          int     cy            = iRowHeight;
          boolean closed        = false;
          int     i             = 0;
  
          y += iY;
  
          for (; i < iRowCount; i++) {
              String[] s      = (String[]) vData.elementAt(i);
              String   key    = s[0];
              String   folder = s[2];
              int      ci     = currentindent;
  
              for (; ci > 0; ci--) {
                  if (key.startsWith(root[ci])) {
                      break;
                  }
              }
  
              if (root[ci].length() < key.length()) {
                  ci++;
              }
  
              if (closed && ci > currentindent) {
                  continue;
              }
  
              if (cy <= y && cy + iRowHeight > y) {
                  break;
              }
  
              root[ci]      = key;
              closed        = folder != null && folder.equals("+");
              currentindent = ci;
              cy            += iRowHeight;
          }
  
          if (i >= 0 && i < iRowCount) {
              String[] s      = (String[]) vData.elementAt(i);
              String   folder = s[2];
  
              if (folder != null && folder.equals("+")) {
                  folder = "-";
              } else if (folder != null && folder.equals("-")) {
                  folder = "+";
              }
  
              s[2] = folder;
  
              vData.setElementAt(s, i);
              repaint();
          }
  
          return true;
      }