docs: public void actionPerformed(ActionEvent e) {
  
          Button button = (Button) e.getSource();
  
          if (button == bSearchRow) {
              this.resetLastButtonDelete();
  
              // System.out.println("pressed search");
              aktHoldNr = getChoosenTableIndex();
  
              // search all rows
              int numberOfRows =
                  ((ZaurusTableForm) vHoldForms.elementAt(aktHoldNr))
                      .searchRows(this
                          .getWords(), (gAllWords.getSelectedCheckbox()
                              .getLabel().equals("all")), (gIgnoreCase
                              .getSelectedCheckbox().getLabel()
                              .equals("yes")), (gNoMatchWhole
                              .getSelectedCheckbox().getLabel().equals("no")));
              String tableName = (String) vHoldTableNames.elementAt(aktHoldNr);
  
              if (numberOfRows > 0) {
                  lForm.show(pForm, tableName);
                  lButton.show(pButton, "edit");
                  bPrev.setEnabled(false);
  
                  // if there is more than one row, enable the next button
                  bNext.setEnabled(numberOfRows != 1);
                  ZaurusEditor.printStatus("found " + numberOfRows
                                           + " rows in table " + tableName);
              } else if (numberOfRows == 0) {
                  ZaurusEditor.printStatus("no rows found in table "
                                           + tableName);
  
                  // numberOfRows could be -1 as well, if an SQL exception was encountered
              }        // end of if (numberOfRows > 0)
          } else if ((button == bNewRow)) {
  
              // System.out.println("pressed new");
              aktHoldNr = getChoosenTableIndex();
  
              lForm.show(pForm, (String) vHoldTableNames.elementAt(aktHoldNr));
              lButton.show(pButton, "insert");
              ((ZaurusTableForm) vHoldForms.elementAt(
                  aktHoldNr)).insertNewRow();
          } else if (button == bNewInsert) {
              this.resetLastButtonDelete();
  
              // new search in edit row
              if (((ZaurusTableForm) vHoldForms.elementAt(
                      aktHoldNr)).saveNewRow()) {
  
                  // System.out.println("pressed new insert");
                  ((ZaurusTableForm) vHoldForms.elementAt(
                      aktHoldNr)).insertNewRow();
              }
          } else if (button == bNewSearch) {
              this.resetLastButtonDelete();
  
              // new search in edit row
              if (((ZaurusTableForm) vHoldForms.elementAt(
                      aktHoldNr)).saveChanges()) {
  
                  // System.out.println("pressed new search");
                  lForm.show(pForm, "search");
                  lButton.show(pButton, "search");
              }
          } else if (button == bNewSearch1) {
              this.resetLastButtonDelete();
  
              // new search in insert row, succeeds if the saving is successfull
              if (((ZaurusTableForm) vHoldForms.elementAt(
                      aktHoldNr)).saveNewRow()) {
  
                  // System.out.println("pressed new search");
                  lForm.show(pForm, "search");
                  lButton.show(pButton, "search");
              }
          } else if ((button == bNext)) {
              this.resetLastButtonDelete();
              ZaurusEditor.clearStatus();
  
              if (((ZaurusTableForm) vHoldForms.elementAt(
                      aktHoldNr)).saveChanges()) {
                  bPrev.setEnabled(true);
  
                  if (!((ZaurusTableForm) vHoldForms.elementAt(
                          aktHoldNr)).nextRow()) {
                      bNext.setEnabled(false);
                  }
              }
          } else if ((button == bPrev)) {
              this.resetLastButtonDelete();
              ZaurusEditor.clearStatus();
  
              if (((ZaurusTableForm) vHoldForms.elementAt(
                      aktHoldNr)).saveChanges()) {
                  bNext.setEnabled(true);
  
                  if (!((ZaurusTableForm) vHoldForms.elementAt(
                          aktHoldNr)).prevRow()) {
                      bPrev.setEnabled(false);
                  }
              }
          } else if ((button == bCancel1)) {
  
              // cancel in edit panel
              this.resetLastButtonDelete();
              ((ZaurusTableForm) vHoldForms.elementAt(
                  aktHoldNr)).cancelChanges();
          } else if ((button == bCancel2)) {
              this.resetLastButtonDelete();
  
              // cancel in insert panel, just show the search panel again
              lForm.show(pForm, "search");
              lButton.show(pButton, "search");
          } else if (button == bDelete) {
              if (lastButtonDelete) {
  
                  // delete and determine follow up actions, see comment in ZaurusTableForm.deleteRow()
                  switch (((ZaurusTableForm) vHoldForms.elementAt(
                          aktHoldNr)).deleteRow()) {
  
                      case 1 :
                          lForm.show(pForm, "search");
                          lButton.show(pButton, "search");
                          break;
  
                      case 2 :
                          bPrev.setEnabled(false);
                          break;
  
                      case 3 :
                          bNext.setEnabled(false);
                          break;
  
                      default :
                          break;
                  }    // end of switch (((ZaurusTableForm) vHoldForms.elementAt(aktHoldNr)).deleteRow())
  
                  lastButtonDelete = false;
              } else {
                  ZaurusEditor.printStatus(
                      "Press 'Delete' a second time to delete row.");
  
                  lastButtonDelete = true;
              }        // end of if (lastButtonDelete)
          }            // end of if (button == Rest)
      }