From cb2108482b0a0ad4daac12da7a4791fc52a428f2 Mon Sep 17 00:00:00 2001
From: dragonmacher <48328597+dragonmacher@users.noreply.github.com>
Date: Thu, 26 Oct 2023 12:30:44 -0400
Subject: [PATCH] GP-3931 - Fixed rendering of table boolean cells to show as
disabled when not editable
---
.../widgets/table/GBooleanCellRenderer.java | 26 +++++++++++--------
1 file changed, 15 insertions(+), 11 deletions(-)
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)" : ""));
}
}
}