private MyTableModel getTableModel() {
   return (MyTableModel) myTable.getModel();
 }
  private JComponent createChildrenListEditor() {
    final MyTableModel tableModel = new MyTableModel();
    myTable = new Table(tableModel);
    myListChildrenEditor =
        new DebuggerExpressionTextField(myProject, null, "NamedChildrenConfigurable");

    final TableColumn exprColumn = myTable.getColumnModel().getColumn(EXPRESSION_TABLE_COLUMN);
    exprColumn.setCellEditor(
        new AbstractTableCellEditor() {
          public Object getCellEditorValue() {
            return myListChildrenEditor.getText();
          }

          public Component getTableCellEditorComponent(
              JTable table, Object value, boolean isSelected, int row, int column) {
            myListChildrenEditor.setText((TextWithImports) value);
            return myListChildrenEditor;
          }
        });
    exprColumn.setCellRenderer(
        new DefaultTableCellRenderer() {
          public Component getTableCellRendererComponent(
              JTable table,
              Object value,
              boolean isSelected,
              boolean hasFocus,
              int row,
              int column) {
            final TextWithImports textWithImports = (TextWithImports) value;
            String text = (textWithImports != null) ? textWithImports.toString() : "";
            return super.getTableCellRendererComponent(
                table, text, isSelected, hasFocus, row, column);
          }
        });

    myAddButton = new JButton(DebuggerBundle.message("button.add"));
    myRemoveButton = new JButton(DebuggerBundle.message("button.remove"));
    myUpButton = new JButton(DebuggerBundle.message("button.move.up"));
    myDownButton = new JButton(DebuggerBundle.message("button.move.down"));

    myAddButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            tableModel.addRow("", DebuggerUtils.getInstance().createExpressionWithImports(""));
          }
        });

    myRemoveButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            int selectedRow = myTable.getSelectedRow();
            if (selectedRow >= 0 && selectedRow < myTable.getRowCount()) {
              getTableModel().removeRow(selectedRow);
            }
          }
        });

    myDownButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            TableUtil.moveSelectedItemsDown(myTable);
          }
        });

    myUpButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            TableUtil.moveSelectedItemsUp(myTable);
          }
        });

    myTable
        .getSelectionModel()
        .addListSelectionListener(
            new ListSelectionListener() {
              public void valueChanged(ListSelectionEvent e) {
                int selectedRow = myTable.getSelectedRow();
                myRemoveButton.setEnabled(selectedRow != -1);
                myUpButton.setEnabled(selectedRow > 0);
                myDownButton.setEnabled(selectedRow < myTable.getRowCount() - 1);
              }
            });

    final JPanel panel =
        new JPanel(new GridBagLayout()) {
          public void setEnabled(boolean enabled) {
            super.setEnabled(enabled);
            myTable.setEnabled(enabled);
            myAddButton.setEnabled(enabled);
            myRemoveButton.setEnabled(enabled);
            myUpButton.setEnabled(enabled);
            myDownButton.setEnabled(enabled);
          }
        };
    final JScrollPane scrollPane = new JScrollPane(myTable);
    panel.add(
        scrollPane,
        new GridBagConstraints(
            0,
            GridBagConstraints.RELATIVE,
            1,
            4,
            1.0,
            1.0,
            GridBagConstraints.CENTER,
            GridBagConstraints.BOTH,
            new Insets(0, 0, 0, 0),
            0,
            0));
    panel.add(
        myAddButton,
        new GridBagConstraints(
            1,
            GridBagConstraints.RELATIVE,
            1,
            1,
            0.0,
            0.0,
            GridBagConstraints.NORTHWEST,
            GridBagConstraints.HORIZONTAL,
            new Insets(0, 4, 4, 0),
            0,
            0));
    panel.add(
        myRemoveButton,
        new GridBagConstraints(
            1,
            GridBagConstraints.RELATIVE,
            1,
            1,
            0.0,
            0.0,
            GridBagConstraints.NORTHWEST,
            GridBagConstraints.HORIZONTAL,
            new Insets(0, 4, 4, 0),
            0,
            0));
    panel.add(
        myUpButton,
        new GridBagConstraints(
            1,
            GridBagConstraints.RELATIVE,
            1,
            1,
            0.0,
            0.0,
            GridBagConstraints.NORTHWEST,
            GridBagConstraints.HORIZONTAL,
            new Insets(0, 4, 4, 0),
            0,
            0));
    panel.add(
        myDownButton,
        new GridBagConstraints(
            1,
            GridBagConstraints.RELATIVE,
            1,
            1,
            0.0,
            1.0,
            GridBagConstraints.NORTHWEST,
            GridBagConstraints.HORIZONTAL,
            new Insets(0, 4, 4, 0),
            0,
            0));

    return panel;
  }