From 3691f87d28da72479bf21c51675e7ba05bf5e5e0 Mon Sep 17 00:00:00 2001 From: millmanorama Date: Tue, 6 Jun 2017 15:57:03 +0200 Subject: [PATCH] move the ThumbnailLoader to ThumbnailViewNode --- .../DataResultViewerThumbnail.java | 26 ++----------------- .../corecomponents/ThumbnailViewChildren.java | 2 +- .../corecomponents/ThumbnailViewNode.java | 25 ++++++++++++++++-- 3 files changed, 26 insertions(+), 27 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java index a95e359f80..1cad668d5d 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/DataResultViewerThumbnail.java @@ -21,18 +21,10 @@ package org.sleuthkit.autopsy.corecomponents; import java.awt.Color; import java.awt.Cursor; import java.awt.EventQueue; -import java.awt.Image; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.function.Consumer; import java.util.logging.Level; import javax.swing.JOptionPane; import javax.swing.ListSelectionModel; @@ -50,6 +42,7 @@ import org.openide.nodes.NodeMemberEvent; import org.openide.nodes.NodeReorderEvent; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer; +import org.sleuthkit.autopsy.corecomponents.ThumbnailViewNode.ThumbnailLoader; import org.sleuthkit.autopsy.coreutils.ImageUtils; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.AbstractFile; @@ -597,20 +590,5 @@ final class DataResultViewerThumbnail extends AbstractDataResultViewer { } } - static class ThumbnailLoader { - - private final ExecutorService executor = Executors.newFixedThreadPool(4); - - private final List> futures = new ArrayList<>(); - - synchronized void cancellAll() { - futures.forEach(future -> future.cancel(true)); - futures.clear(); - } - - synchronized void load(ThumbnailViewNode.ThumbnailLoadTask swingWorker) { - futures.add(swingWorker); - executor.submit(swingWorker); - } - } + } diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ThumbnailViewChildren.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ThumbnailViewChildren.java index 3d6d545154..c60b49617e 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ThumbnailViewChildren.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ThumbnailViewChildren.java @@ -25,7 +25,7 @@ import org.openide.nodes.AbstractNode; import org.openide.nodes.Children; import org.openide.nodes.Node; import org.openide.util.lookup.Lookups; -import org.sleuthkit.autopsy.corecomponents.DataResultViewerThumbnail.ThumbnailLoader; +import org.sleuthkit.autopsy.corecomponents.ThumbnailViewNode.ThumbnailLoader; import org.sleuthkit.autopsy.coreutils.ImageUtils; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Content; diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/ThumbnailViewNode.java b/Core/src/org/sleuthkit/autopsy/corecomponents/ThumbnailViewNode.java index dda5783b6b..5ebd7e1ad5 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/ThumbnailViewNode.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/ThumbnailViewNode.java @@ -18,12 +18,17 @@ */ package org.sleuthkit.autopsy.corecomponents; +import com.google.common.util.concurrent.ThreadFactoryBuilder; import java.awt.Image; import java.awt.Toolkit; -import java.awt.event.ActionEvent; import java.lang.ref.SoftReference; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.logging.Level; import javax.swing.SwingWorker; import javax.swing.Timer; @@ -32,7 +37,6 @@ import org.netbeans.api.progress.ProgressHandle; import org.openide.nodes.FilterNode; import org.openide.nodes.Node; import org.openide.util.NbBundle; -import org.sleuthkit.autopsy.corecomponents.DataResultViewerThumbnail.ThumbnailLoader; import org.sleuthkit.autopsy.coreutils.ImageUtils; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Content; @@ -103,6 +107,23 @@ class ThumbnailViewNode extends FilterNode { thumbTask = null; } + static class ThumbnailLoader { + + private final ExecutorService executor = Executors.newFixedThreadPool(4, + new ThreadFactoryBuilder().setNameFormat("Thumbnail-Loader-%d").build() ); + + private final List> futures = new ArrayList<>(); + + synchronized void cancellAll() { + futures.forEach(future -> future.cancel(true)); + futures.clear(); + } + + synchronized void load(ThumbnailViewNode.ThumbnailLoadTask task) { + futures.add(task); + executor.submit(task); + } + } class ThumbnailLoadTask extends SwingWorker { private final Content content;