📄 edittablepanel.java
字号:
setEditingRow(newRow); setEditingColumn(1); ((DefaultCellEditor)getCellEditor(newRow, 1)).getComponent().requestFocus(); } /** * Marks the currently selected column (table row) * to be deleted/dropped from this table. */ public void markDeleteRow() { int row = getSelectedRow(); if (row == -1) { return; } tableEditingStopped(null); if (isEditing()) { removeEditor(); } ColumnData cd = tableVector.elementAt(row); // if its already a new row - just remove it if (cd.isNewColumn()) { int newEditingRow = (row == tableVector.size() - 1) ? row - 1 : row; setEditingRow(newEditingRow); tableVector.removeElementAt(row); _model.fireTableRowsDeleted(row, row); tempSqlText.remove(ADD + row); addColumnLines(-1); return; } // create the drop statement sqlText.setLength(0); sqlText.append(DROP_COLUMN_1); String schema = cd.getSchema(); if (!MiscUtils.isNull(schema)) { sqlText.append(schema.toUpperCase()).append(DOT); } sqlText.append(cd.getTableName()); sqlText.append(DROP_COLUMN_2); sqlText.append(cd.getColumnName()); sqlText.append(NEW_LINE); tempSqlText.put(DROP + row, sqlText.toString()); // mark the column to be dumped cd.setMarkedDeleted(true); // regenerate the SQL generateSQL(); // fire the event _model.fireTableRowsUpdated(row, row); } public void reset() { sqlText.setLength(0); tempSqlText.clear(); } public void tableChanged(int col, int row, String value) { sqlText.setLength(0); ColumnData cd = (ColumnData)tableVector.get(row); switch(col) { case 1: if (value == null) { return; } if (cd.isNewColumn()) { sqlText.append(ALTER_TABLE); String schema = cd.getSchema(); if (!MiscUtils.isNull(schema)) { sqlText.append(schema.toUpperCase()).append(DOT); } sqlText.append(creator.getTableName()). append(ADD). append(value). append(SPACE); value = cd.getColumnType(); if (value != null && value.length() > 0) { sqlText.append(value).append(OPEN_B).append(cd.getColumnSize()); int scale = cd.getColumnScale(); if (scale != 0) { sqlText.append(COMMA).append(scale); } sqlText.append(CLOSE_B).append(cd.isRequired() ? NOT_NULL : NULL); } sqlText.append(NEW_LINE); tempSqlText.put(ADD + row, sqlText.toString()); } else { if (originalData[row].getColumnName().equals(value)) { tempSqlText.remove(RENAME_COLUMN + row); } else { sqlText.append(ALTER_TABLE); String schema = cd.getSchema(); if (!MiscUtils.isNull(schema)) { sqlText.append(schema.toUpperCase()).append(DOT); } sqlText.append(originalData[row].getTableName()). append(RENAME_COLUMN). append(originalData[row].getColumnName()). append(TO).append(value). append(NEW_LINE); tempSqlText.put(RENAME_COLUMN + row, sqlText.toString()); } } break; case 2: case 3: case 4: case 5: tableChanged(cd, row, col); break; } generateSQL(); creator.setSQLText(sqlText.toString(), TableModifier.COLUMN_VALUES); } private void tableChanged(ColumnData cd, int row, int col) { sqlText.setLength(0); int size = cd.getColumnSize(); int scale = cd.getColumnScale(); String type = cd.getColumnType(); /* if (col == 2) { type = (String)comboCell.getCellEditorValue(); } else if (col == 3) { size = sizeEditor.getValue(); } else if (col == 4) { scale = scaleEditor.getValue(); } */ if (cd.isNewColumn()) { sqlText.append(ALTER_TABLE); String schema = cd.getSchema(); if (!MiscUtils.isNull(schema)) { sqlText.append(schema.toUpperCase()).append(DOT); } sqlText.append(creator.getTableName()). append(ADD). append(cd.getColumnName()). append(SPACE). append(type). append(OPEN_B). append(size); if (scale != 0) { sqlText.append(COMMA).append(scale); } sqlText.append(CLOSE_B). append(cd.isRequired() ? NOT_NULL : NULL). append(NEW_LINE); tempSqlText.put(ADD + row, sqlText.toString()); } else if (originalData[row].getColumnSize() == size && originalData[row].getColumnType().equals(type) && originalData[row].getColumnScale() == scale && originalData[row].isRequired() == cd.isRequired()) { tempSqlText.remove(MODIFY + row); } else { sqlText.append(ALTER_TABLE); String schema = cd.getSchema(); if (!MiscUtils.isNull(schema)) { sqlText.append(schema.toUpperCase()).append(DOT); } sqlText.append(originalData[row].getTableName()). append(MODIFY). append(cd.getColumnName()). append(SPACE). append(type). append(OPEN_B). append(size); if (scale != 0) { sqlText.append(COMMA).append(scale); } sqlText.append(CLOSE_B). append(cd.isRequired() ? NOT_NULL : NULL). append(CLOSE_B). append(NEW_LINE); tempSqlText.put(MODIFY + row, sqlText.toString()); } generateSQL(); creator.setSQLText(sqlText.toString(), TableModifier.COLUMN_VALUES); } private void generateSQL() { sqlText.setLength(0); for (Enumeration i = tempSqlText.elements(); i.hasMoreElements();) { sqlText.append((String)i.nextElement()); } } /** <p>Adds all the column definition lines to * the SQL text buffer for display. * * @param the current row being edited */ public void addColumnLines(int row) { generateSQL(); creator.setSQLText(sqlText.toString(), TableModifier.COLUMN_VALUES); } private class MouseHandler extends MouseAdapter { public void mouseClicked(MouseEvent e) { int mouseX = e.getX(); int mouseY = e.getY(); int col = getTable().columnAtPoint(new Point(mouseX, mouseY)); if (col != 0) { return; } ColumnData[] cda = getTableColumnData(); int row = getTable().rowAtPoint(new Point(mouseX, mouseY)); for (int i = 0; i < cda.length; i++) { if (i == row) { if (cda[i].isMarkedDeleted()) { cda[i].setMarkedDeleted(false); tempSqlText.remove(DROP + row); _model.fireTableRowsUpdated(row, row); generateSQL(); creator.setSQLText(); } break; } } } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -