mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-19 11:07:43 +00:00
disable subfilters if parent filter is unselected
This commit is contained in:
parent
5f4b2f2b54
commit
a6e5adbc73
@ -38,7 +38,7 @@ public abstract class AbstractFilter implements Filter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleBooleanProperty getDisabledProperty() {
|
||||
public SimpleBooleanProperty disabledProperty() {
|
||||
return disabled;
|
||||
}
|
||||
|
||||
@ -67,11 +67,11 @@ public abstract class AbstractFilter implements Filter {
|
||||
return "[" + (isSelected() ? "x" : " ") + "]"; // NON-NLS
|
||||
}
|
||||
|
||||
public final boolean isActive() {
|
||||
public boolean isActive() {
|
||||
return activeProperty.get();
|
||||
}
|
||||
|
||||
public final BooleanBinding activeProperty() {
|
||||
public BooleanBinding activeProperty() {
|
||||
return activeProperty;
|
||||
}
|
||||
}
|
||||
|
@ -67,6 +67,10 @@ public abstract class CompoundFilter<SubFilterType extends Filter> extends Abstr
|
||||
}
|
||||
});
|
||||
this.subFilters.setAll(subFilters);
|
||||
|
||||
this.activeProperty().addListener(activeProperty1 -> {
|
||||
getSubFilters().forEach(subFilter -> subFilter.setDisabled(isActive() == false));
|
||||
});
|
||||
}
|
||||
|
||||
private void addSubFilterListeners(List<? extends SubFilterType> newSubfilters) {
|
||||
|
@ -29,7 +29,7 @@ import org.openide.util.NbBundle;
|
||||
public class DataSourcesFilter extends UnionFilter<DataSourceFilter> {
|
||||
|
||||
public DataSourcesFilter() {
|
||||
getDisabledProperty().bind(Bindings.size(getSubFilters()).lessThanOrEqualTo(1));
|
||||
disabledProperty().bind(Bindings.size(getSubFilters()).lessThanOrEqualTo(1));
|
||||
setSelected(false);
|
||||
}
|
||||
|
||||
@ -69,7 +69,7 @@ public class DataSourcesFilter extends UnionFilter<DataSourceFilter> {
|
||||
.map(DataSourceFilter::getDataSourceID)
|
||||
.filter(t -> t == dataSourceFilter.getDataSourceID())
|
||||
.findAny().isPresent() == false) {
|
||||
dataSourceFilter.getDisabledProperty().bind(getDisabledProperty());
|
||||
dataSourceFilter.disabledProperty().bind(disabledProperty());
|
||||
getSubFilters().add(dataSourceFilter);
|
||||
getSubFilters().sort(Comparator.comparing(DataSourceFilter::getDisplayName));
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ public interface Filter {
|
||||
*/
|
||||
void setDisabled(Boolean act);
|
||||
|
||||
SimpleBooleanProperty getDisabledProperty();
|
||||
SimpleBooleanProperty disabledProperty();
|
||||
|
||||
boolean isDisabled();
|
||||
|
||||
|
@ -22,7 +22,7 @@ public class HashHitsFilter extends UnionFilter<HashSetFilter> {
|
||||
}
|
||||
|
||||
public HashHitsFilter() {
|
||||
getDisabledProperty().bind(Bindings.size(getSubFilters()).lessThan(1));
|
||||
disabledProperty().bind(Bindings.size(getSubFilters()).lessThan(1));
|
||||
setSelected(false);
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.timeline.filters;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import javafx.beans.binding.BooleanBinding;
|
||||
import javafx.collections.FXCollections;
|
||||
|
||||
/**
|
||||
@ -70,7 +71,7 @@ public class RootFilter extends IntersectionFilter<Filter> {
|
||||
public RootFilter copyOf() {
|
||||
Set<Filter> annonymousSubFilters = getSubFilters().stream()
|
||||
.filter(subFilter ->
|
||||
!(subFilter.equals(knownFilter)
|
||||
!(subFilter.equals(knownFilter)
|
||||
|| subFilter.equals(tagsFilter)
|
||||
|| subFilter.equals(hashFilter)
|
||||
|| subFilter.equals(typeFilter)
|
||||
@ -108,4 +109,17 @@ public class RootFilter extends IntersectionFilter<Filter> {
|
||||
}
|
||||
return areSubFiltersEqual(this, (CompoundFilter<Filter>) obj);
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public BooleanBinding activeProperty() {
|
||||
return new BooleanBinding() {
|
||||
@Override
|
||||
protected boolean computeValue() {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ public class TagsFilter extends UnionFilter<TagNameFilter> {
|
||||
}
|
||||
|
||||
public TagsFilter() {
|
||||
getDisabledProperty().bind(Bindings.size(getSubFilters()).lessThan(1));
|
||||
disabledProperty().bind(Bindings.size(getSubFilters()).lessThan(1));
|
||||
setSelected(false);
|
||||
}
|
||||
|
||||
|
@ -41,13 +41,12 @@ class FilterCheckBoxCellFactory<X extends AbstractFilter> extends AbstractFXCell
|
||||
}
|
||||
|
||||
if (item == null) {
|
||||
cell.setText(null);
|
||||
cell.setGraphic(null);
|
||||
} else {
|
||||
cell.setText(item.getDisplayName());
|
||||
checkBox.setText(item.getDisplayName());
|
||||
selectedProperty = item.selectedProperty();
|
||||
checkBox.selectedProperty().bindBidirectional(selectedProperty);
|
||||
disabledProperty = item.getDisabledProperty();
|
||||
disabledProperty = item.disabledProperty();
|
||||
checkBox.disableProperty().bindBidirectional(disabledProperty);
|
||||
cell.setGraphic(checkBox);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user