Mark: tree (nicht aufklappbar) aber komponenten Auswählbar

Hallo,
ich muß aus einem Haufen an Daten, die dynamisch generiert werden, einen Tree abbilden, mit z.B. folgendem Aussehen:

  • A                   [ ]
      - A1                [ ]
      - A2                [ ]
        - A21             [ ]
        - A22             [ ]
      - A3                [ ]
  • B                   [ ]
      - B1                [ ]
  • C                   [ ]
      - C1                [ ]
        -C11              [ ]
      - C2                [ ]

Links der Tree, rechts eckige Formularfelder. Der Tree soll komplett dargestellt sein. Er soll nicht auf oder zuklappbar sein.

Wenn der User nun auf ein Kästchen klickt soll das Element , das zum Kästchen gehört sowie alle Kinder und Kindeskinder angekreuzt werden, z.B. wenn jemand auf A2 klickt:

  • A                   [ ]
      - A1                [ ]
      - A2                [X]
        - A21             [X]
        - A22             [X]
      - A3                [ ]
  • B                   [ ]
      - B1                [ ]
  • C                   [ ]
      - C1                [ ]
        -C11              [ ]
      - C2                [ ]

und danach auf C klickt

  • A                   [ ]
      - A1                [ ]
      - A2                [X]
        - A21             [X]
        - A22             [X]
      - A3                [ ]
  • B                   [ ]
      - B1                [ ]
  • C                   [X]
      - C1                [X]
        -C11              [X]
      - C2                [X]

Wenn einer jetzt anschließend auf C11 klickt muss folgendes passieren :

  • A                   [ ]
      - A1                [ ]
      - A2                [X]
        - A21             [X]
        - A22             [X]
      - A3                [ ]
  • B                   [ ]
      - B1                [ ]
  • C                   [ ]
      - C1                [ ]
        -C11              [ ]
      - C2                [X]

Da C11 nicht markiert ist, darf auch C1 nicht markiert sein und C ebenfalls nicht.

Der Grund für den Tree ist folgender. Es werden Elemente angezeigt (in Ihrer abhängigkeit) und je nach Auswahl werden diese gelöscht. Daher darf natürlich auch nur das markiert sein was gelöscht weden darf. Löscht man C11 nicht muß natürlich C1 usw. erhalten bleiben.

Ich hoffe es kann mir jemand hierbei helfen !

Gruß
Mark