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;
doEdit();
}
+ @Override
+ public boolean isEnabled() {
+ ClasspathTableItem<?> selectedItem = getSelectedItem();
+ return selectedItem != null && selectedItem.isEditable();
+ }
+
@Override
public boolean isDumbAware() {
return true;
@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) {
//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
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) {
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;