diff --git a/Ghidra/Features/Base/src/main/help/help/topics/AutoAnalysisPlugin/AutoAnalysis.htm b/Ghidra/Features/Base/src/main/help/help/topics/AutoAnalysisPlugin/AutoAnalysis.htm
index 98aa03fe84..d4c6e4271e 100644
--- a/Ghidra/Features/Base/src/main/help/help/topics/AutoAnalysisPlugin/AutoAnalysis.htm
+++ b/Ghidra/Features/Base/src/main/help/help/topics/AutoAnalysisPlugin/AutoAnalysis.htm
@@ -68,6 +68,13 @@
Edit
Tool Options menu and check
or uncheck Show Analysis Options. When unchecked, the next time Auto Analysis is
chosen, the options dialog is skipped, and analysis begins immediately.
+
+
+
+
Any analyzer that is not in its default enablement
+ state will show a yellowish color in the table of analyzer names.
+
+
diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/AnalysisEnablementTableModel.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/AnalysisEnablementTableModel.java
index a936adca73..162f53d83f 100644
--- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/AnalysisEnablementTableModel.java
+++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/AnalysisEnablementTableModel.java
@@ -35,8 +35,9 @@ import ghidra.util.table.column.GColumnRenderer;
*/
public class AnalysisEnablementTableModel
extends GDynamicColumnTableModel {
- private static Color ALT_SELECTED_COLOR = Color.BLUE.brighter();
- private static Color ALT_NON_SELECTED__COLOR = new Color(255, 255, 175);
+
+ private static Color BG_COLOR_NOT_DEFAULT_ENABLEMENT = new Color(255, 255, 200);
+ private static Color BG_COLOR_NOT_DEFAULT_ENABLEMENT_SELECTED = new Color(177, 212, 236);
private List analyzerStates;
private AnalysisPanel panel;
@@ -100,6 +101,16 @@ public class AnalysisEnablementTableModel
return false;
}
+ private void setToolTip(Component c, String text) {
+ if (c instanceof JComponent) {
+ ((JComponent) c).setToolTipText(text);
+ }
+ }
+
+//==================================================================================================
+// Inner Classes
+//==================================================================================================
+
private class AnalyzerEnabledColumn
extends AbstractDynamicTableColumn {
EnabledColumnTableCellRenderer renderer = new EnabledColumnTableCellRenderer();
@@ -155,12 +166,22 @@ public class AnalysisEnablementTableModel
Component component = booleanRenderer.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
- if (!getRowObject(row).isDefaultEnablement()) {
- component.setBackground(isSelected ? ALT_SELECTED_COLOR : ALT_NON_SELECTED__COLOR);
- if (component instanceof JComponent) {
- ((JComponent) component).setToolTipText("This option differs from the default");
- }
+ AnalyzerEnablementState state = getRowObject(row);
+ if (state.isDefaultEnablement()) {
+ setToolTip(component, null);
+ return component;
}
+
+ // not the default enablement
+ if (isSelected) {
+ component.setBackground(BG_COLOR_NOT_DEFAULT_ENABLEMENT_SELECTED);
+ }
+ else {
+ component.setBackground(BG_COLOR_NOT_DEFAULT_ENABLEMENT);
+ }
+
+ setToolTip(component, "This option differs from the default");
+
return component;
}
@@ -168,7 +189,6 @@ public class AnalysisEnablementTableModel
public String getFilterString(Boolean t, Settings settings) {
return "";
}
-
}
private class AnalyzerNameTableCellRenderer extends AbstractGColumnRenderer {
@@ -188,14 +208,23 @@ public class AnalysisEnablementTableModel
component.setForeground(
ColorUtils.deriveForeground(component.getBackground(), ColorUtils.HUE_RED));
}
- if (!((AnalyzerEnablementState) data.getRowObject()).isDefaultEnablement()) {
- component.setBackground(
- data.isSelected() ? ALT_SELECTED_COLOR : ALT_NON_SELECTED__COLOR);
- if (component instanceof JComponent) {
- ((JComponent) component).setToolTipText("This option differs from the default");
- }
+
+ AnalyzerEnablementState state = (AnalyzerEnablementState) data.getRowObject();
+ if (state.isDefaultEnablement()) {
+ setToolTip(component, null);
+ return component;
}
+ // not the default enablement
+ if (data.isSelected()) {
+ component.setBackground(BG_COLOR_NOT_DEFAULT_ENABLEMENT_SELECTED);
+ component.setForeground(Color.BLACK);
+ }
+ else {
+ component.setBackground(BG_COLOR_NOT_DEFAULT_ENABLEMENT);
+ }
+
+ setToolTip(component, "This option differs from the default");
return component;
}
diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalyzeAllOpenProgramsTaskTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalyzeAllOpenProgramsTaskTest.java
index 8ba6671298..c20ebb1e18 100644
--- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalyzeAllOpenProgramsTaskTest.java
+++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/analysis/AnalyzeAllOpenProgramsTaskTest.java
@@ -296,8 +296,8 @@ public class AnalyzeAllOpenProgramsTaskTest extends AbstractGhidraHeadedIntegrat
AnalysisOptionsDialog optionsDialog = waitForDialogComponent(AnalysisOptionsDialog.class);
AnalysisPanel panel =
findComponent(optionsDialog.getComponent(), AnalysisPanel.class, false);
- invokeInstanceMethod("deselectAll", panel);
- waitForSwing();
+
+ runSwing(() -> invokeInstanceMethod("deselectAll", panel));
close(optionsDialog);
}
@@ -371,12 +371,7 @@ public class AnalyzeAllOpenProgramsTaskTest extends AbstractGhidraHeadedIntegrat
}
final int analyzerRow = row;
- runSwing(new Runnable() {
- @Override
- public void run() {
- model.setValueAt(Boolean.TRUE, analyzerRow, 0);
- }
- });
+ runSwing(() -> model.setValueAt(Boolean.TRUE, analyzerRow, 0));
}
private void runTask(final AnalyzeAllOpenProgramsTask task) {