Skip to content

Commit

Permalink
pcorlessGH-216 Allows getting filter parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
gtache committed Nov 7, 2022
1 parent 6d62c08 commit 717ae7a
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1774,8 +1774,7 @@ protected void reflectStateInComponents() {
}

private boolean areFiltersReady() {
return !IS_PREFILTER || filters.entrySet().stream().filter(Map.Entry::getValue)
.map(Map.Entry::getKey).allMatch(df -> df.isReady(document));
return !IS_PREFILTER || getEnabledFilters().stream().allMatch(df -> df.isReady(document));
}

private boolean hasForms() {
Expand Down Expand Up @@ -5172,17 +5171,7 @@ else if (source == panToolButton) {
}
} else if (source == filterPagesButton) {
if (e.getStateChange() == ItemEvent.SELECTED) {
final Set<Integer> filteredIndexes = documentViewController.getDocumentViewModel().getAllPageComponents()
.stream().map(AbstractPageViewComponent::getPageIndex).collect(Collectors.toSet());
logger.info("Filtering with " + filters.entrySet().stream().filter(Map.Entry::getValue)
.map(f -> f.getKey().toString()).collect(Collectors.joining(";")));
filters.forEach((df, enabled) -> {
if (enabled) {
final Set<Integer> keptIndexes = df.filterPages(document);
filteredIndexes.removeIf(i -> !keptIndexes.contains(i));
}
});
documentViewController.filterPageComponents(pvc -> filteredIndexes.contains(pvc.getPageIndex()));
filterDocumentPages();
} else {
documentViewController.filterPageComponents(pvc -> true);
}
Expand Down Expand Up @@ -5303,6 +5292,23 @@ else if (source == facingPageViewNonContinuousButton) {
}
}

protected void filterDocumentPages() {
final Set<Integer> filteredIndexes = documentViewController.getDocumentViewModel().getAllPageComponents()
.stream().map(AbstractPageViewComponent::getPageIndex).collect(Collectors.toSet());
logger.info("Filtering with " + getEnabledFilters().stream().map(Object::toString).collect(Collectors.joining(";")));
filters.forEach((df, enabled) -> {
if (enabled) {
final Set<Integer> keptIndexes = df.filterPages(document);
filteredIndexes.removeIf(i -> !keptIndexes.contains(i));
}
});
documentViewController.filterPageComponents(pvc -> filteredIndexes.contains(pvc.getPageIndex()));
}

protected Set<DocumentFilter> getEnabledFilters() {
return filters.entrySet().stream().filter(Map.Entry::getValue).map(Map.Entry::getKey).collect(Collectors.toSet());
}

private static boolean checkAnnotationButton(final Object source, final AnnotationColorToggleButton button,
final JToggleButton propertiesButton) {
return source == button || (button != null && source == button.getColorButton()) || source == propertiesButton;
Expand Down Expand Up @@ -5602,14 +5608,14 @@ protected final void addKeyAction(final JComponent component, final int keyCode,

@Override
public void documentFilterStarted(final DocumentFilter filter, final Document document) {
if (this.document == document && filter == EMPTY_PAGES_FILTER) {
if (this.document == document) {
setEnabled(filterPagesButton, false);
}
}

@Override
public void documentFilterEnded(final DocumentFilter filter, final Document document) {
if (this.document == document && filter == EMPTY_PAGES_FILTER) {
if (this.document == document) {
setEnabled(filterPagesButton, !isPdfCollection() && document != null && areFiltersReady());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import org.icepdf.core.pobjects.Document;

import java.util.Map;
import java.util.Set;

/**
Expand All @@ -25,6 +26,11 @@ public interface DocumentFilter {
*/
boolean isReady(final Document document);

/**
* @return The filter parameters
*/
Map<String, Object> getParameters();

/**
* Adds a listener to this filter
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@

import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.concurrent.CancellationException;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentHashMap;
Expand All @@ -34,6 +31,7 @@ public class EmptyPagesFilter extends AbstractImageDocumentFilter {
private final int maxBlueValue;


private final Map<String, Object> parameters;
private final Map<Document, AtomicBoolean> cancellations;

private final Map<Document, CompletableFuture<?>> futures;
Expand Down Expand Up @@ -63,6 +61,13 @@ public EmptyPagesFilter(final double minColoredPixelsFraction, final int maxRedV
this.maxBlueValue = maxBlueValue;
this.futures = new ConcurrentHashMap<>();
this.cancellations = new ConcurrentHashMap<>();
final Map<String, Object> tmpParameters = new HashMap<>(5);
tmpParameters.put("name", "EmptyPagesFilter");
tmpParameters.put("minColoredPixelsFraction", minColoredPixelsFraction);
tmpParameters.put("maxRedValue", maxRedValue);
tmpParameters.put("maxGreenValue", maxGreenValue);
tmpParameters.put("maxBlueValue", maxBlueValue);
this.parameters = Collections.unmodifiableMap(tmpParameters);
}

@Override
Expand Down Expand Up @@ -133,6 +138,11 @@ public String toString() {
return "EmptyPagesFilter";
}

@Override
public Map<String, Object> getParameters() {
return parameters;
}

@Override
public void interrupt(final Document document) {
final CompletableFuture<?> future = futures.getOrDefault(document, null);
Expand Down

0 comments on commit 717ae7a

Please sign in to comment.