diff --git a/src/main/java/ca/sqlpower/architect/swingui/action/DeleteSelectedAction.java b/src/main/java/ca/sqlpower/architect/swingui/action/DeleteSelectedAction.java index d63a86511..cbaea164e 100644 --- a/src/main/java/ca/sqlpower/architect/swingui/action/DeleteSelectedAction.java +++ b/src/main/java/ca/sqlpower/architect/swingui/action/DeleteSelectedAction.java @@ -28,6 +28,7 @@ import javax.swing.JOptionPane; import javax.swing.KeyStroke; +import javax.swing.tree.TreePath; import org.apache.log4j.Logger; @@ -86,7 +87,9 @@ public void actionPerformed(ActionEvent evt) { logger.debug("delete action detected!"); //$NON-NLS-1$ logger.debug("ACTION COMMAND: " + evt.getActionCommand()); //$NON-NLS-1$ - if (getPlaypen().getSelectedItems().size() < 1) { + final TreePath[] selectionPaths = getSession().getDBTree().getSelectionPaths(); + final int selectionPathsSize = selectionPaths != null ? selectionPaths.length : 0; + if (getPlaypen().getSelectedItems().size() + selectionPathsSize < 1) { JOptionPane.showMessageDialog(getPlaypen(), Messages.getString("DeleteSelectedAction.noItemsToDelete")); //$NON-NLS-1$ return; } @@ -218,6 +221,18 @@ List retrieveDeletableItems() { } } + // Invisible elements in the PlayPen but selected in the TreeView + TreePath[] selectionPaths = getSession().getDBTree().getSelectionPaths(); + if (selectionPaths != null) { + for (final TreePath tp : selectionPaths) { + final Object c = tp.getLastPathComponent(); + if (c instanceof SQLIndex && !deleteItems.contains(c)) { + final SQLIndex index = (SQLIndex) c; + deleteItems.add(index); + } + } + } + Set tablesWithSelectedColumns = new HashSet(); for (ListIterator it = deleteItems.listIterator(); it.hasNext(); ) {