protected void removeSelected() {
    int[] selectedRows = myTableView.getComponent().getSelectedRows();
    if(selectedRows.length == 0)
      return;
    myTableView.stopEditing();
    setModified();
    int selectedIndex = myTableView.getSelectionModel().getLeadSelectionIndex();
    myTableView.scrollRectToVisible(myTableView.getCellRect(selectedIndex, 0, true));

    List<T> aliveElements = new ArrayList<>();
    for(int row = 0; row < myTableView.getRowCount(); ++row) {
      T selectedElement = myElements.get(row);
      if(!myTableView.isRowSelected(row) || !canDeleteElement(selectedElement)) {
        aliveElements.add(selectedElement);
      }
    }
    myElements.clear();
    myElements.addAll(aliveElements);

    myTableView.getSelectionModel().clearSelection();
    myTableView.getTableViewModel().setItems(myElements);

    int prev = selectedIndex - 1;
    if (prev >= 0) {
      myTableView.getComponent().getSelectionModel().setSelectionInterval(prev, prev);
    }
    else if (selectedIndex < myElements.size()) {
      myTableView.getComponent().getSelectionModel().setSelectionInterval(selectedIndex, selectedIndex);
    }

    myTableView.getComponent().revalidate();
    myTableView.getComponent().repaint();
  }
protected void removeSelected()