public AXmlElementTextSchema(Song song) {
   super(ELEMENT_NAME);
   this.addAttribute(AXml.ATTR_ANZAHLZEILEN, "" + song.getText().getAnzahlZeilen());
   this.addAttribute(AXml.ATTR_HEIGHTANTEIL, "" + song.getText().getHeightAnteil());
   this.addAttribute(AXml.ATTR_TEXTANZEIGE, "" + song.getText().getTextAnzeige());
   this.addAttribute(
       AXml.ATTR_TEXTHEIGHTANTEIL, "" + song.getSongText().getText().getHeightAnteilZweiteSeite());
 }
  /**
   * Die einzelnen Teile im Reiter "Teile" aus Song laden und darstellen
   *
   * @param song
   */
  private void resetTeile() {
    for (int i = 0; i < song.getTeile().size(); i++) {
      TaktSchemaTeil teil = (TaktSchemaTeil) song.getTeile().elementAt(i);
      PanelReiter2SchemaTeil pteil = new PanelReiter2SchemaTeil(i, teil);

      this.add(pteil);
    }
    Kommentar komm = song.getSchema().getKommentar();
    PanelReiterKommentar pKomm = new PanelReiterKommentar(this, komm);
    this.add(pKomm);

    this.repaint();
  }
 /**
  * hinzufügen eines neuen Teils
  *
  * @param neuerTeil
  * @param istObenUnten
  * @param teilAltIndex
  */
 public void neuerTeil(TaktSchemaTeil neuerTeil, int istObenUnten, int teilAltIndex) {
   if (song.getTeile().size() >= 6) return;
   int index = teilAltIndex;
   if (istObenUnten == 2) index++;
   this.removeAll();
   song.getTeile().insertElementAt(neuerTeil, index);
   SwingUtilities.invokeLater(
       new Runnable() {
         public void run() {
           resetTeile();
           resetSong();
         }
       });
 }
  /**
   * löschen eines Teils; min. ein Teil bleibt erhalten
   *
   * @param loeschTeil
   * @param teilAltIndex
   */
  public void loescheTeil(TaktSchemaTeil loeschTeil, int teilAltIndex) {
    if (song.getTeile().size() <= 1) // min. ein Teil muss erhalten bleiben
    return;

    this.removeAll();
    song.getTeile().remove(teilAltIndex);
    song.getSchema().removeTaktSchemaTeil(loeschTeil);
    SwingUtilities.invokeLater(
        new Runnable() {
          public void run() {
            resetTeile();
            resetSong();
            ((AChordFrame) SwingUtilities.windowForComponent(PanelReiter2Schema.this))
                .setAkkordVonAussen();
          }
        });
  }
 /**
  * wird aufgerufen, wenn sich auf Grund eines Click-Ereignisses eines RadioButtons das Layout des
  * dargestellten Songs ändert
  */
 public void resetSong() {
   song.getSchema().berechneAnteiligeHoehen();
   song.aktualisiereBlatt();
   song.setRahmenAlleSchemas();
   song.reloadTaktSchema();
 }