diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java index 985912e07caa..b96b373154bb 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/classpath/ClasspathPanelImpl.java @@ -72,8 +72,6 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.border.Border; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableModel; @@ -229,6 +227,12 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { doEdit(); } + @Override + public boolean isEnabled() { + ClasspathTableItem selectedItem = getSelectedItem(); + return selectedItem != null && selectedItem.isEditable(); + } + @Override public boolean isDumbAware() { return true; @@ -306,8 +310,14 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { @Override @Nullable public OrderEntry getSelectedEntry() { + ClasspathTableItem item = getSelectedItem(); + return item != null ? item.getEntry() : null; + } + + @Nullable + private ClasspathTableItem getSelectedItem() { if (myEntryTable.getSelectedRowCount() != 1) return null; - return getItemAt(myEntryTable.getSelectedRow()).getEntry(); + return getItemAt(myEntryTable.getSelectedRow()); } private void setFixedColumnWidth(final int columnIndex) { @@ -365,17 +375,6 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { //upButton.setShortcut(CustomShortcutSet.fromString("alt UP")); //downButton.setShortcut(CustomShortcutSet.fromString("alt DOWN")); - // we need to register our listener before ToolbarDecorator registers its own. Otherwise - myEntryTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - @Override - public void valueChanged(ListSelectionEvent e) { - if (e.getValueIsAdjusting()) { - return; - } - updateButtons(); - } - }); - final ToolbarDecorator decorator = ToolbarDecorator.createDecorator(myEntryTable); AnActionButtonUpdater moveUpDownUpdater = new AnActionButtonUpdater() { @Override @@ -437,6 +436,18 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { removeAction.actionPerformed(null); } }) + .setRemoveActionUpdater(new AnActionButtonUpdater() { + @Override + public boolean isEnabled(AnActionEvent e) { + final int[] selectedRows = myEntryTable.getSelectedRows(); + for (final int selectedRow : selectedRows) { + if (!getItemAt(selectedRow).isRemovable()) { + return false; + } + } + return selectedRows.length > 0; + } + }) .setMoveUpAction(new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { @@ -483,28 +494,6 @@ public class ClasspathPanelImpl extends JPanel implements ClasspathPanel { ModuleStructureConfigurable.getInstance(myState.getProject()).getTree().repaint(); } - @Override - public void addNotify() { - super.addNotify(); - updateButtons(); - } - - private void updateButtons() { - final int[] selectedRows = myEntryTable.getSelectedRows(); - boolean removeButtonEnabled = true; - for (final int selectedRow : selectedRows) { - final ClasspathTableItem item = getItemAt(selectedRow); - if (!item.isRemovable()) { - removeButtonEnabled = false; - } - } - if (myRemoveButton != null) { - myRemoveButton.setEnabled(removeButtonEnabled && selectedRows.length > 0); - } - ClasspathTableItem selectedItem = selectedRows.length == 1 ? getItemAt(selectedRows[0]) : null; - myEditButton.setEnabled(selectedItem != null && selectedItem.isEditable()); - } - private void removeSelectedItems(final List removedRows) { if (removedRows.isEmpty()) { return;