move the ThumbnailLoader to ThumbnailViewNode

This commit is contained in:
millmanorama 2017-06-06 15:57:03 +02:00
parent 115b0a99ce
commit 3691f87d28
3 changed files with 26 additions and 27 deletions

View File

@ -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<Future<?>> 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);
}
}
}

View File

@ -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;

View File

@ -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<Future<?>> 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<Image, Object> {
private final Content content;