mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
classpath editor: simplified enabling/disabling for edit/delete buttons
This commit is contained in:
+25
-36
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user