/** * Convert object type short value to the enum type * * @param objectType long value to convert * @return the enum type */ public static ObjectType valueOf(short objectType) { for (ObjectType v : ObjectType.values()) { if (v.objectType == objectType) { return v; } } throw new IllegalArgumentException("No ObjectType of value: " + objectType); }
// region Constructor public ImportTableDialog( final Connection connection, String tableName, Iterable<TypedColumn> columns, final Iterable<String> columnFamilies) { setContentPane(this.contentPane); setModal(true); setTitle("Import table from file"); getRootPane().setDefaultButton(this.btImport); this.tfTableName.setText(tableName); this.tfFilePath.setText(String.format("%s.csv", tableName)); this.tableModel = new DefaultTableModel(); this.rowsTable.setModel(this.tableModel); this.tableModel.addColumn("Column Name"); this.tableModel.addColumn("Column Type"); this.rowsTable.setRowHeight(this.rowsTable.getFont().getSize() + 8); this.rowsTable.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS); JComboBox comboBox = new JComboBox(); for (ObjectType objectType : ObjectType.values()) { comboBox.addItem(objectType); } this.rowsTable.getColumn("Column Name").setCellEditor(new JCellEditor(null, false)); this.rowsTable.getColumn("Column Type").setCellEditor(new DefaultCellEditor(comboBox)); for (TypedColumn typedColumn : columns) { this.tableModel.addRow(new Object[] {typedColumn.getColumn(), typedColumn.getType(), null}); } this.rowsTable .getSelectionModel() .addListSelectionListener( new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { ImportTableDialog.this.btRemoveColumn.setEnabled(e.getFirstIndex() != -1); } }); this.btImport.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (validateInput()) { onImport(connection); } } }); this.btClose.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); // call onCancel() when cross is clicked setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener( new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { dispose(); } }); // call onCancel() on ESCAPE this.contentPane.registerKeyboardAction( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); this.btBrowse.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFileChooser dialog = new JFileChooser(); dialog.setCurrentDirectory(new File(".")); dialog.setSelectedFile(new File(ImportTableDialog.this.tfFilePath.getText())); int returnVal = dialog.showSaveDialog(ImportTableDialog.this.contentPane); if (returnVal == JFileChooser.APPROVE_OPTION) { ImportTableDialog.this.tfFilePath.setText(dialog.getSelectedFile().getAbsolutePath()); } } }); this.btAddColumn.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { stopCellEditing(ImportTableDialog.this.rowsTable); AddColumnDialog dialog = new AddColumnDialog(columnFamilies); dialog.showDialog(ImportTableDialog.this); String columnName = dialog.getColumnName(); if (columnName != null) { int rowIndex = getRowIndex(ImportTableDialog.this.rowsTable, 1, columnName); if (rowIndex == -1) { ImportTableDialog.this.tableModel.addRow( new Object[] {columnName, ObjectType.String, null}); rowIndex = ImportTableDialog.this.tableModel.getRowCount() - 1; } ImportTableDialog.this.rowsTable.setRowSelectionInterval(rowIndex, rowIndex); } } }); this.btRemoveColumn.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int selectedRow = ImportTableDialog.this.rowsTable.getSelectedRow(); while (selectedRow != -1) { ImportTableDialog.this.tableModel.removeRow(selectedRow); selectedRow = ImportTableDialog.this.rowsTable.getSelectedRow(); } ImportTableDialog.this.btRemoveColumn.setEnabled(false); } }); this.btCancel.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { ImportTableDialog.this.canceled = true; } }); }