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; }