Exemplo n.º 1
0
  /**
   * Creates a {@link DialogComponentTable} with {@code model, pattern, portIndex} parameters.
   *
   * @param model The associated model of the name of new columns.
   * @param pattern The associated pattern model.
   * @param portIndex The port index to check for column matches.
   */
  public DialogComponentTable(
      final SettingsModelStringArray model,
      final SettingsModelString pattern,
      final int portIndex) {
    super(model);
    this.pattern = pattern;
    this.portIndex = portIndex;
    table = new TableView();
    getComponentPanel().add(table);
    table
        .getContentTable()
        .getTableHeader()
        .addMouseListener(
            new MouseAdapter() {
              private volatile long lastAccessTime;

              @SuppressWarnings("synthetic-access")
              @Override
              public void mouseClicked(final MouseEvent e) {
                if (e.getWhen() == this.lastAccessTime || e.getButton() != MouseEvent.BUTTON1) {
                  return;
                }
                this.lastAccessTime = e.getWhen();
                final int column = table.getContentTable().columnAtPoint(e.getPoint());
                final DataTableSpec dataTableSpec =
                    table.getContentTable().getContentModel().getDataTableSpec();
                if (column < singleCount || column >= singleCount + newColumns.size()) {
                  return;
                }
                final DataColumnSpec columnSpec = dataTableSpec.getColumnSpec(column);
                final DataColumnSpecCreator dataColumnSpecCreator =
                    new DataColumnSpecCreator(columnSpec);
                final String newValue = JOptionPane.showInputDialog("New name of the column: ");
                if (newValue != null) {
                  dataColumnSpecCreator.setName(newValue);
                  newColumns.set(column - singleCount, newValue);
                  final DataColumnSpec newColSpec = dataColumnSpecCreator.createSpec();
                  final ReplacedColumnsTable replacedColumnsTable =
                      new ReplacedColumnsTable(
                          table.getContentModel().getDataTable(),
                          newColSpec,
                          column,
                          new ReplacedCellFactory() {
                            @Override
                            public DataCell getReplacement(final DataRow row, final int index) {
                              return row.getCell(index);
                            }
                          });
                  table.setDataTable(replacedColumnsTable);
                }
                e.consume();
              }
            });
  }