diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GBooleanCellRenderer.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GBooleanCellRenderer.java
index 386d5e81f9..bd1f7b3c5e 100644
--- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GBooleanCellRenderer.java
+++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GBooleanCellRenderer.java
@@ -17,6 +17,8 @@ package docking.widgets.table;
import java.awt.*;
+import javax.swing.JTable;
+
import docking.widgets.checkbox.GCheckBox;
public class GBooleanCellRenderer extends GTableCellRenderer {
@@ -37,8 +39,15 @@ public class GBooleanCellRenderer extends GTableCellRenderer {
super.getTableCellRendererComponent(data);
Object value = data.getValue();
- cb.setEnabled(true);
- setValue(value);
+
+ JTable table = data.getTable();
+ int row = data.getRowViewIndex();
+ int col = data.getColumnViewIndex();
+ boolean isEditable = table.isCellEditable(row, col);
+
+ cb.setEnabled(isEditable);
+ setValue(value, isEditable);
+
return this;
}
@@ -73,14 +82,7 @@ public class GBooleanCellRenderer extends GTableCellRenderer {
return cb.getPreferredSize();
}
- /**
- * Sets the Boolean object for the cell being rendered to
- * value.
- *
- * @param value the boolean value for this cell; if value is
- * null it sets the text value "N/A"
- */
- protected void setValue(Object value) {
+ protected void setValue(Object value, boolean isEditable) {
if (value == null) {
setText("N/A");
cb.setVisible(false);
@@ -88,7 +90,9 @@ public class GBooleanCellRenderer extends GTableCellRenderer {
else {
setText("");
cb.setVisible(true);
- cb.setSelected(((Boolean) value).booleanValue());
+ boolean isSelected = ((Boolean) value).booleanValue();
+ cb.setSelected(isSelected);
+ setToolTipText(isSelected ? "true" : "false" + (!isEditable ? " (uneditable)" : ""));
}
}
}