mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-19 11:07:43 +00:00
refactor validation listener
This commit is contained in:
parent
e3c5264b2d
commit
60ba9f5fe8
@ -69,10 +69,19 @@ final public class FiltersPanel extends javax.swing.JPanel {
|
|||||||
@ThreadConfined(type = ThreadConfined.ThreadType.AWT)
|
@ThreadConfined(type = ThreadConfined.ThreadType.AWT)
|
||||||
private final Map<String, JCheckBox> devicesMap = new HashMap<>();
|
private final Map<String, JCheckBox> devicesMap = new HashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listens to ingest events to enable refresh button
|
||||||
|
*/
|
||||||
private final PropertyChangeListener ingestListener;
|
private final PropertyChangeListener ingestListener;
|
||||||
private final ItemListener validationListener;
|
|
||||||
private boolean needsRefresh;
|
private boolean needsRefresh;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listen to check box state changes and validates that at least one box is
|
||||||
|
* selected for device and account type ( other wise there will be no
|
||||||
|
* results)
|
||||||
|
*/
|
||||||
|
private final ItemListener validationListener;
|
||||||
|
|
||||||
@NbBundle.Messages({"refreshText=Refresh Results",
|
@NbBundle.Messages({"refreshText=Refresh Results",
|
||||||
"applyText=Apply"})
|
"applyText=Apply"})
|
||||||
public FiltersPanel() {
|
public FiltersPanel() {
|
||||||
@ -93,15 +102,7 @@ final public class FiltersPanel extends javax.swing.JPanel {
|
|||||||
);
|
);
|
||||||
|
|
||||||
updateTimeZone();
|
updateTimeZone();
|
||||||
validationListener = itemEvent -> {
|
validationListener = itemEvent -> validateFilters();
|
||||||
boolean someDevice = devicesMap.values().stream().anyMatch(JCheckBox::isSelected);
|
|
||||||
boolean someAccountType = accountTypeMap.values().stream().anyMatch(JCheckBox::isSelected);
|
|
||||||
deviceRequiredLabel.setVisible(someDevice == false);
|
|
||||||
accountTypeRequiredLabel.setVisible(someAccountType == false);
|
|
||||||
|
|
||||||
applyFiltersButton.setEnabled(someDevice && someAccountType);
|
|
||||||
refreshButton.setEnabled(someDevice && someAccountType && needsRefresh);
|
|
||||||
};
|
|
||||||
|
|
||||||
updateFilters();
|
updateFilters();
|
||||||
setAllDevicesSelected(true);
|
setAllDevicesSelected(true);
|
||||||
@ -116,7 +117,7 @@ final public class FiltersPanel extends javax.swing.JPanel {
|
|||||||
if (eventType.equals(DATA_ADDED.toString())) {
|
if (eventType.equals(DATA_ADDED.toString())) {
|
||||||
updateFilters();
|
updateFilters();
|
||||||
needsRefresh = true;
|
needsRefresh = true;
|
||||||
refreshButton.setEnabled(true);
|
validateFilters();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -124,6 +125,24 @@ final public class FiltersPanel extends javax.swing.JPanel {
|
|||||||
refreshButton.addActionListener(e -> applyFilters());
|
refreshButton.addActionListener(e -> applyFilters());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate that filters are in a consistent state and will result in some
|
||||||
|
* results. Checks that at least one device and at least one account type is
|
||||||
|
* selected. Disables the apply and refresh button and shows warnings if the
|
||||||
|
* filters are not valid.
|
||||||
|
*/
|
||||||
|
private void validateFilters() {
|
||||||
|
boolean someDevice = devicesMap.values().stream().anyMatch(JCheckBox::isSelected);
|
||||||
|
boolean someAccountType = accountTypeMap.values().stream().anyMatch(JCheckBox::isSelected);
|
||||||
|
|
||||||
|
deviceRequiredLabel.setVisible(someDevice == false);
|
||||||
|
accountTypeRequiredLabel.setVisible(someAccountType == false);
|
||||||
|
|
||||||
|
applyFiltersButton.setEnabled(someDevice && someAccountType);
|
||||||
|
refreshButton.setEnabled(someDevice && someAccountType && needsRefresh);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the filter widgets, and apply them.
|
* Update the filter widgets, and apply them.
|
||||||
*/
|
*/
|
||||||
@ -473,7 +492,7 @@ final public class FiltersPanel extends javax.swing.JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
needsRefresh = false;
|
needsRefresh = false;
|
||||||
refreshButton.setEnabled(false);
|
validateFilters();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -496,9 +515,11 @@ final public class FiltersPanel extends javax.swing.JPanel {
|
|||||||
* @return an AccountTypeFilter
|
* @return an AccountTypeFilter
|
||||||
*/
|
*/
|
||||||
private AccountTypeFilter getAccountTypeFilter() {
|
private AccountTypeFilter getAccountTypeFilter() {
|
||||||
AccountTypeFilter accountTypeFilter = new AccountTypeFilter(accountTypeMap.entrySet().stream()
|
AccountTypeFilter accountTypeFilter = new AccountTypeFilter(
|
||||||
.filter(entry -> entry.getValue().isSelected())
|
accountTypeMap.entrySet().stream()
|
||||||
.map(entry -> entry.getKey()).collect(Collectors.toSet()));
|
.filter(entry -> entry.getValue().isSelected())
|
||||||
|
.map(entry -> entry.getKey())
|
||||||
|
.collect(Collectors.toSet()));
|
||||||
return accountTypeFilter;
|
return accountTypeFilter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user