mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
GT-2763 - Table Sorting - fixed bug that triggered filtering to take
place for individual add/remove operations; fixed bug that caused loss of added/removed items
This commit is contained in:
parent
da5f009c71
commit
445c7ca03e
32 changed files with 720 additions and 143 deletions
|
@ -243,6 +243,43 @@ public class VTMarkupItemsTableModel extends AddressBasedTableModel<VTMarkupItem
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + getEnclosingInstance().hashCode();
|
||||
result = prime * result + ((appliedFilters == null) ? 0 : appliedFilters.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
MarkupTablePassthroughFilter other = (MarkupTablePassthroughFilter) obj;
|
||||
if (!getEnclosingInstance().equals(other.getEnclosingInstance())) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Objects.equals(appliedFilters, other.appliedFilters)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private VTMarkupItemsTableModel getEnclosingInstance() {
|
||||
return VTMarkupItemsTableModel.this;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// column for selecting/editing?
|
||||
|
@ -478,7 +515,7 @@ public class VTMarkupItemsTableModel extends AddressBasedTableModel<VTMarkupItem
|
|||
|
||||
private static final String NO_SOURCE_TEXT = "None";
|
||||
|
||||
private GColumnRenderer<String> sourceCellRenderer = new AbstractGColumnRenderer<String>() {
|
||||
private GColumnRenderer<String> sourceCellRenderer = new AbstractGColumnRenderer<>() {
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(GTableCellRenderingData data) {
|
||||
|
||||
|
@ -543,30 +580,28 @@ public class VTMarkupItemsTableModel extends AddressBasedTableModel<VTMarkupItem
|
|||
static class IsInDBTableColumn
|
||||
extends AbstractProgramBasedDynamicTableColumn<VTMarkupItem, Boolean> {
|
||||
|
||||
private GColumnRenderer<Boolean> isInDBCellRenderer =
|
||||
new AbstractGColumnRenderer<Boolean>() {
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(GTableCellRenderingData data) {
|
||||
private GColumnRenderer<Boolean> isInDBCellRenderer = new AbstractGColumnRenderer<>() {
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(GTableCellRenderingData data) {
|
||||
|
||||
Object value = data.getValue();
|
||||
Object value = data.getValue();
|
||||
|
||||
boolean isInDB = ((Boolean) value).booleanValue();
|
||||
boolean isInDB = ((Boolean) value).booleanValue();
|
||||
|
||||
GTableCellRenderingData renderData =
|
||||
data.copyWithNewValue(isInDB ? "yes" : null);
|
||||
GTableCellRenderingData renderData = data.copyWithNewValue(isInDB ? "yes" : null);
|
||||
|
||||
JLabel renderer = (JLabel) super.getTableCellRendererComponent(renderData);
|
||||
renderer.setOpaque(true);
|
||||
JLabel renderer = (JLabel) super.getTableCellRendererComponent(renderData);
|
||||
renderer.setOpaque(true);
|
||||
|
||||
return renderer;
|
||||
}
|
||||
return renderer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFilterString(Boolean t, Settings settings) {
|
||||
boolean isInDB = t.booleanValue();
|
||||
return isInDB ? "yes" : "";
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public String getFilterString(Boolean t, Settings settings) {
|
||||
boolean isInDB = t.booleanValue();
|
||||
return isInDB ? "yes" : "";
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public String getColumnName() {
|
||||
|
|
|
@ -203,6 +203,41 @@ public abstract class AbstractVTMatchTableModel extends AddressBasedTableModel<V
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + getEnclosingInstance().hashCode();
|
||||
result = prime * result + ((appliedFilters == null) ? 0 : appliedFilters.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
MatchTablePassthroughFilter other = (MatchTablePassthroughFilter) obj;
|
||||
if (!getEnclosingInstance().equals(other.getEnclosingInstance())) {
|
||||
return false;
|
||||
}
|
||||
if (!Objects.equals(appliedFilters, other.appliedFilters)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private AbstractVTMatchTableModel getEnclosingInstance() {
|
||||
return AbstractVTMatchTableModel.this;
|
||||
}
|
||||
}
|
||||
|
||||
static class MarkupStatusColumnComparator implements Comparator<VTMatch> {
|
||||
|
@ -397,7 +432,7 @@ public abstract class AbstractVTMatchTableModel extends AddressBasedTableModel<V
|
|||
return 55;
|
||||
}
|
||||
|
||||
private GColumnRenderer<VTScore> renderer = new AbstractGColumnRenderer<VTScore>() {
|
||||
private GColumnRenderer<VTScore> renderer = new AbstractGColumnRenderer<>() {
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(GTableCellRenderingData data) {
|
||||
|
||||
|
@ -457,7 +492,7 @@ public abstract class AbstractVTMatchTableModel extends AddressBasedTableModel<V
|
|||
return 55;
|
||||
}
|
||||
|
||||
private GColumnRenderer<VTScore> renderer = new AbstractGColumnRenderer<VTScore>() {
|
||||
private GColumnRenderer<VTScore> renderer = new AbstractGColumnRenderer<>() {
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(GTableCellRenderingData data) {
|
||||
|
||||
|
@ -550,7 +585,7 @@ public abstract class AbstractVTMatchTableModel extends AddressBasedTableModel<V
|
|||
}
|
||||
|
||||
private GColumnRenderer<DisplayableLabel> labelCellRenderer =
|
||||
new AbstractGColumnRenderer<DisplayableLabel>() {
|
||||
new AbstractGColumnRenderer<>() {
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(GTableCellRenderingData data) {
|
||||
|
||||
|
@ -681,7 +716,7 @@ public abstract class AbstractVTMatchTableModel extends AddressBasedTableModel<V
|
|||
}
|
||||
|
||||
private GColumnRenderer<DisplayableAddress> addressCellRenderer =
|
||||
new AbstractGColumnRenderer<DisplayableAddress>() {
|
||||
new AbstractGColumnRenderer<>() {
|
||||
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(GTableCellRenderingData data) {
|
||||
|
@ -788,7 +823,7 @@ public abstract class AbstractVTMatchTableModel extends AddressBasedTableModel<V
|
|||
}
|
||||
|
||||
private GColumnRenderer<DisplayableLabel> labelCellRenderer =
|
||||
new AbstractGColumnRenderer<DisplayableLabel>() {
|
||||
new AbstractGColumnRenderer<>() {
|
||||
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(GTableCellRenderingData data) {
|
||||
|
@ -921,7 +956,7 @@ public abstract class AbstractVTMatchTableModel extends AddressBasedTableModel<V
|
|||
}
|
||||
|
||||
private GColumnRenderer<DisplayableAddress> addressCellRenderer =
|
||||
new AbstractGColumnRenderer<DisplayableAddress>() {
|
||||
new AbstractGColumnRenderer<>() {
|
||||
@Override
|
||||
public Component getTableCellRendererComponent(GTableCellRenderingData data) {
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue