From 7a01b8b3e04a127ae3b40222aa27fd6876d17218 Mon Sep 17 00:00:00 2001 From: dragonmacher <48328597+dragonmacher@users.noreply.github.com> Date: Fri, 31 Jan 2020 16:25:00 -0500 Subject: [PATCH] GT-3515 - Column constraint docs review fixes --- .../examples/graph/SampleGraphProvider.java | 4 ++-- .../core/script/GhidraScriptTableModel.java | 2 +- .../VTFunctionAssociationTableModel.java | 2 +- .../MatchesFilterDialogComponentProvider.java | 11 +++++----- .../table/DefaultRowFilterTransformer.java | 2 +- .../constraint/dialog/ColumnFilterData.java | 12 +++++----- .../dialog/ColumnFilterDialogModel.java | 2 +- .../ColumnRenderedValueBackupComparator.java | 5 +++-- .../table/threaded/ThreadedTableModel.java | 22 +++++++++---------- .../AbstractWrapperTypeColumnRenderer.java | 2 +- .../util/table/column/GColumnRenderer.java | 15 ++++--------- .../graph/VisualGraphComponentProvider.java | 2 +- .../ghidra/graph/job/FilterVerticesJob.java | 7 +++--- 13 files changed, 40 insertions(+), 48 deletions(-) diff --git a/Ghidra/Extensions/sample/src/main/java/ghidra/examples/graph/SampleGraphProvider.java b/Ghidra/Extensions/sample/src/main/java/ghidra/examples/graph/SampleGraphProvider.java index 12256aa7e3..84afb81ae6 100644 --- a/Ghidra/Extensions/sample/src/main/java/ghidra/examples/graph/SampleGraphProvider.java +++ b/Ghidra/Extensions/sample/src/main/java/ghidra/examples/graph/SampleGraphProvider.java @@ -314,7 +314,7 @@ public class SampleGraphProvider extends ComponentProviderAdapter { return mainPanel; } - private void showFitlerPanel(boolean selected) { + private void showFilterPanel(boolean selected) { if (selected) { mainPanel.add(filterPanel, BorderLayout.SOUTH); } @@ -331,7 +331,7 @@ public class SampleGraphProvider extends ComponentProviderAdapter { @Override public void actionPerformed(ActionContext context) { - showFitlerPanel(isSelected()); + showFilterPanel(isSelected()); } }; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptTableModel.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptTableModel.java index 5d7ba8d2e3..fa86f78462 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptTableModel.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptTableModel.java @@ -537,7 +537,7 @@ class GhidraScriptTableModel extends GDynamicColumnTableModel { @@ -58,9 +57,9 @@ public class MatchesFilterDialogComponentProvider extends // Row 1 - Right Component // association status filter - AssociationStatusFilter associationStatusFitler = new AssociationStatusFilter(); - addFilter(associationStatusFitler); - rowOnePanel.add(associationStatusFitler.getComponent()); + AssociationStatusFilter associationStatusFilter = new AssociationStatusFilter(); + addFilter(associationStatusFilter); + rowOnePanel.add(associationStatusFilter.getComponent()); // Row 2 - Left Component // symbol type filter diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/DefaultRowFilterTransformer.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/DefaultRowFilterTransformer.java index 6466c06d11..4ee704490c 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/DefaultRowFilterTransformer.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/DefaultRowFilterTransformer.java @@ -116,7 +116,7 @@ public class DefaultRowFilterTransformer implements RowFilterTransfo } ColumnConstraintFilterMode mode = renderer.getColumnConstraintFilterMode(); - return mode == ColumnConstraintFilterMode.USE_COLUMN_CONSTRAINTS_ONLY; + return mode == ColumnConstraintFilterMode.ALLOW_CONSTRAINTS_FILTER_ONLY; } private String getRenderedColumnValue(Object columnValue, int columnIndex) { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/constraint/dialog/ColumnFilterData.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/constraint/dialog/ColumnFilterData.java index 035af40adf..4796483f72 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/constraint/dialog/ColumnFilterData.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/constraint/dialog/ColumnFilterData.java @@ -91,7 +91,7 @@ public class ColumnFilterData implements Comparable> { // and does not support the traditional text based filtering. // ColumnConstraintFilterMode mode = columnRenderer.getColumnConstraintFilterMode(); - if (mode == ColumnConstraintFilterMode.USE_COLUMN_CONSTRAINTS_ONLY) { + if (mode == ColumnConstraintFilterMode.ALLOW_CONSTRAINTS_FILTER_ONLY) { return new ArrayList<>(defaultConstraints); } @@ -106,16 +106,16 @@ public class ColumnFilterData implements Comparable> { ColumnRendererMapper mapper = new ColumnRendererMapper(asT, columnBasedModel, modelIndex); Collection> rendererStringConstraints = DiscoverableTableUtils.getColumnConstraints(mapper); + if (mode == ColumnConstraintFilterMode.ALLOW_RENDERER_STRING_FILTER_ONLY) { + return new ArrayList<>(rendererStringConstraints); + } // // Case 5: the renderer supports both text filtering and column constraint filtering. // + // assume: mode == ColumnConstraintFilterMode.ALLOW_ALL_FILTERS List> results = new ArrayList<>(rendererStringConstraints); - if (mode == ColumnConstraintFilterMode.USE_BOTH_COLUMN_RENDERER_FITLER_STRING_AND_CONSTRAINTS) { - // also use the normal constraints with the renderer constraints - results.addAll(defaultConstraints); - } - + results.addAll(defaultConstraints); return results; } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/constraint/dialog/ColumnFilterDialogModel.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/constraint/dialog/ColumnFilterDialogModel.java index c89ca9195b..026898d72d 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/constraint/dialog/ColumnFilterDialogModel.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/constraint/dialog/ColumnFilterDialogModel.java @@ -102,7 +102,7 @@ public class ColumnFilterDialogModel { } /** - * Creates a new filter for (a new major row in the dialog filter panel) + * Creates a new filter row (a new major row in the dialog filter panel) * @param logicOperation the logical operation for how this row interacts with preceding rows * @return the new filter row that represents a major row in the dialog filter panel */ diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/sort/ColumnRenderedValueBackupComparator.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/sort/ColumnRenderedValueBackupComparator.java index b138db74c1..99ce034375 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/sort/ColumnRenderedValueBackupComparator.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/sort/ColumnRenderedValueBackupComparator.java @@ -15,12 +15,13 @@ */ package docking.widgets.table.sort; +import static ghidra.util.table.column.GColumnRenderer.ColumnConstraintFilterMode.*; + import java.util.Comparator; import docking.widgets.table.*; import ghidra.docking.settings.Settings; import ghidra.util.table.column.GColumnRenderer; -import ghidra.util.table.column.GColumnRenderer.ColumnConstraintFilterMode; /** * A special version of the backup comparator that uses the column's rendered value for @@ -47,7 +48,7 @@ public class ColumnRenderedValueBackupComparator implements Comparator renderer = (GColumnRenderer) column.getColumnRenderer(); if (renderer != null) { - if (renderer.getColumnConstraintFilterMode() == ColumnConstraintFilterMode.USE_COLUMN_CONSTRAINTS_ONLY) { + if (renderer.getColumnConstraintFilterMode() == ALLOW_CONSTRAINTS_FILTER_ONLY) { // this implies that the column has signaled that it does not support // filtering/sorting using its rendered value supportsColumnSorting = false; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/threaded/ThreadedTableModel.java b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/threaded/ThreadedTableModel.java index 3c34063ab6..549e41fc14 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/threaded/ThreadedTableModel.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/widgets/table/threaded/ThreadedTableModel.java @@ -74,9 +74,9 @@ public abstract class ThreadedTableModel * This variable can be in one of three states: *
    *
  • null - signals that there is no filter change taking place
  • - *
  • An instance of NullTableFitler - the client has removed the current + *
  • An instance of NullTableFilter - the client has removed the current * filter by calling {@link #setTableFilter(TableFilter)} with a null value
  • - *
  • An instance of a custom TableFitler - the client has changed the + *
  • An instance of a custom TableFilter - the client has changed the * filter to a non-null value by calling {@link #setTableFilter(TableFilter)}
  • *
*/ @@ -399,7 +399,7 @@ public abstract class ThreadedTableModel * * @return true if there is a table filter set. */ - public boolean hasFitler() { + public boolean hasFilter() { TableFilter currentFilter = getTableFilter(); return !currentFilter.isEmpty(); } @@ -429,7 +429,7 @@ public abstract class ThreadedTableModel return data; } - if (!hasFitler()) { + if (!hasFilter()) { return data; } @@ -463,14 +463,14 @@ public abstract class ThreadedTableModel } /** - * Sets the given TableFitler on this model. This table filter will then be used + * Sets the given TableFilter on this model. This table filter will then be used * by this model in the default {@link #doFilter(List, TableSortingContext, TaskMonitor)} * method. - * @param tableFitler The filter to use for table filtering. + * @param tableFilter The filter to use for table filtering. */ @Override - public void setTableFilter(TableFilter tableFitler) { - this.pendingTableFilter = tableFitler; + public void setTableFilter(TableFilter tableFilter) { + this.pendingTableFilter = tableFilter; if (pendingTableFilter == null) { // Don't allow the pending filter to be null in this case. The client has changed // the filter. If we use null, then we don't know the difference between a client @@ -480,8 +480,8 @@ public abstract class ThreadedTableModel reFilter(); } - private void setAppliedTableFitler(TableFilter tableFitler) { - if (tableFitler == null) { + private void setAppliedTableFilter(TableFilter tableFilter) { + if (tableFilter == null) { // null means there was no change to the text filter--so don't set it (see the // javadoc for the filter variables) return; @@ -532,7 +532,7 @@ public abstract class ThreadedTableModel this.allData = allData; this.filteredData = filteredData; - setAppliedTableFitler(pendingTableFilter); + setAppliedTableFilter(pendingTableFilter); pendingSortContext = null; TableSortingContext newSortingContext = filteredData.getSortContext(); diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/util/table/column/AbstractWrapperTypeColumnRenderer.java b/Ghidra/Framework/Docking/src/main/java/ghidra/util/table/column/AbstractWrapperTypeColumnRenderer.java index 5a183c50dc..4255911ce2 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/util/table/column/AbstractWrapperTypeColumnRenderer.java +++ b/Ghidra/Framework/Docking/src/main/java/ghidra/util/table/column/AbstractWrapperTypeColumnRenderer.java @@ -36,7 +36,7 @@ public interface AbstractWrapperTypeColumnRenderer extends GColumnRenderer // Overridden to only allow the constraint filtering mechanism. @Override public default ColumnConstraintFilterMode getColumnConstraintFilterMode() { - return ColumnConstraintFilterMode.USE_COLUMN_CONSTRAINTS_ONLY; + return ColumnConstraintFilterMode.ALLOW_CONSTRAINTS_FILTER_ONLY; } @Override diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/util/table/column/GColumnRenderer.java b/Ghidra/Framework/Docking/src/main/java/ghidra/util/table/column/GColumnRenderer.java index 57d59d5011..73f9b2f4fb 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/util/table/column/GColumnRenderer.java +++ b/Ghidra/Framework/Docking/src/main/java/ghidra/util/table/column/GColumnRenderer.java @@ -83,21 +83,14 @@ public interface GColumnRenderer extends TableCellRenderer { public enum ColumnConstraintFilterMode { //@formatter:off - /** - * Signals that the programmer didn't make a decision about how filtering for this - * column should work. This currently will treat all filtering as if - * {@link #USE_COLUMN_RENDERER_FITLER_STRING_ONLY} was chosen. - */ - DEFAULT, - /** Use only {@link GColumnRenderer#getFilterString(Object, Settings)} value; no constraints */ - USE_COLUMN_RENDERER_FITLER_STRING_ONLY, + ALLOW_RENDERER_STRING_FILTER_ONLY, /** Use only column constraints when filtering */ - USE_COLUMN_CONSTRAINTS_ONLY, + ALLOW_CONSTRAINTS_FILTER_ONLY, /** Use both the rendered filter String and any found column constraints */ - USE_BOTH_COLUMN_RENDERER_FITLER_STRING_AND_CONSTRAINTS, + ALLOW_ALL_FILTERS, //@formatter:on } @@ -111,7 +104,7 @@ public interface GColumnRenderer extends TableCellRenderer { * @return the mode */ public default ColumnConstraintFilterMode getColumnConstraintFilterMode() { - return ColumnConstraintFilterMode.DEFAULT; + return ColumnConstraintFilterMode.ALLOW_RENDERER_STRING_FILTER_ONLY; } /** diff --git a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/VisualGraphComponentProvider.java b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/VisualGraphComponentProvider.java index fe1afc08d0..b99aa03264 100644 --- a/Ghidra/Framework/Graph/src/main/java/ghidra/graph/VisualGraphComponentProvider.java +++ b/Ghidra/Framework/Graph/src/main/java/ghidra/graph/VisualGraphComponentProvider.java @@ -165,7 +165,7 @@ public abstract class VisualGraphComponentProvider> passedVertices = matching; // 2) - failedVertices = findCurrentVerticesFailingTheFitler(matching); + failedVertices = findCurrentVerticesFailingTheFilter(matching); failedEdges = filterGraph.getAllEdges(failedVertices); Set allRelatedEdges = filterGraph.getAllEdges(passedVertices); @@ -119,7 +118,7 @@ public class FilterVerticesJob> filterGraph.unfilterVertices(passedVertices); } - private Set findCurrentVerticesFailingTheFitler(Set validVertices) { + private Set findCurrentVerticesFailingTheFilter(Set validVertices) { UnmodifiableIterator nonMatchingIterator = Iterators.filter(filterGraph.getUnfilteredVertices(), v -> !validVertices.contains(v));