diff --git a/build.xml b/build.xml index b3944563..7a6e8ed1 100644 --- a/build.xml +++ b/build.xml @@ -29,7 +29,7 @@ - + @@ -53,13 +53,8 @@ - - - - - - - + + @@ -68,14 +63,11 @@ - - - - + - + @@ -94,7 +86,7 @@ - + @@ -155,4 +147,8 @@ + + + + diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/SplitTool.java b/source/net/sourceforge/filebot/ui/panel/analyze/SplitTool.java index 8c17fcde..808c7295 100644 --- a/source/net/sourceforge/filebot/ui/panel/analyze/SplitTool.java +++ b/source/net/sourceforge/filebot/ui/panel/analyze/SplitTool.java @@ -7,8 +7,9 @@ import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; -import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JSpinner; @@ -23,7 +24,6 @@ import net.sourceforge.filebot.ui.panel.analyze.FileTree.FolderNode; import net.sourceforge.filebot.ui.transfer.DefaultTransferHandler; import net.sourceforge.tuned.FileUtilities; import net.sourceforge.tuned.ui.GradientStyle; -import net.sourceforge.tuned.ui.LoadingOverlayPane; import net.sourceforge.tuned.ui.notification.SeparatorBorder; @@ -38,17 +38,14 @@ public class SplitTool extends Tool implements ChangeListener { super("Split"); JScrollPane treeScrollPane = new JScrollPane(tree); - treeScrollPane.setBorder(BorderFactory.createEmptyBorder()); + treeScrollPane.setBorder(new SeparatorBorder(2, new Color(0, 0, 0, 90), GradientStyle.TOP_TO_BOTTOM, SeparatorBorder.Position.BOTTOM)); JSpinner spinner = new JSpinner(spinnerModel); spinner.setEditor(new JSpinner.NumberEditor(spinner, "#")); - LoadingOverlayPane loadingOverlayPane = new LoadingOverlayPane(treeScrollPane, this); - loadingOverlayPane.setBorder(new SeparatorBorder(2, new Color(0, 0, 0, 90), GradientStyle.TOP_TO_BOTTOM, SeparatorBorder.Position.BOTTOM)); - setLayout(new MigLayout("insets 0, nogrid, fill", "align center")); - add(loadingOverlayPane, "grow, wrap"); + add(treeScrollPane, "grow, wrap"); add(new JLabel("Split every")); add(spinner, "wmax 80, gap top rel, gap bottom unrel"); @@ -68,9 +65,16 @@ public class SplitTool extends Tool implements ChangeListener { private FolderNode sourceModel = null; - public void stateChanged(ChangeEvent e) { - if (sourceModel != null) - setSourceModel(sourceModel); + public void stateChanged(ChangeEvent evt) { + if (sourceModel != null) { + try { + // update model in foreground, will be much faster than the initial load because length() is cached now + setModel(createModelInBackground(sourceModel)); + } catch (InterruptedException e) { + // will not happen + Logger.getLogger("global").log(Level.SEVERE, e.getMessage(), e); + } + } } diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/Tool.java b/source/net/sourceforge/filebot/ui/panel/analyze/Tool.java index 42c47cb3..781d9e89 100644 --- a/source/net/sourceforge/filebot/ui/panel/analyze/Tool.java +++ b/source/net/sourceforge/filebot/ui/panel/analyze/Tool.java @@ -2,12 +2,9 @@ package net.sourceforge.filebot.ui.panel.analyze; -import static net.sourceforge.tuned.ui.LoadingOverlayPane.LOADING_PROPERTY; - import java.io.File; import java.util.ConcurrentModificationException; import java.util.List; -import java.util.concurrent.Semaphore; import java.util.logging.Level; import java.util.logging.Logger; @@ -18,13 +15,11 @@ import net.sourceforge.filebot.ui.panel.analyze.FileTree.FileNode; import net.sourceforge.filebot.ui.panel.analyze.FileTree.FolderNode; import net.sourceforge.tuned.ExceptionUtilities; import net.sourceforge.tuned.FileUtilities; -import net.sourceforge.tuned.ui.TunedUtilities; abstract class Tool extends JComponent { private UpdateModelTask updateTask = null; - private Semaphore updateSemaphore = new Semaphore(1); public Tool(String name) { @@ -32,16 +27,12 @@ abstract class Tool extends JComponent { } - public synchronized void setSourceModel(FolderNode sourceModel) { + public void setSourceModel(FolderNode sourceModel) { if (updateTask != null) { updateTask.cancel(true); } updateTask = new UpdateModelTask(sourceModel); - - // sync events for loading overlay - TunedUtilities.syncPropertyChangeEvents(boolean.class, LOADING_PROPERTY, updateTask, this); - updateTask.execute(); } @@ -64,29 +55,14 @@ abstract class Tool extends JComponent { @Override protected M doInBackground() throws Exception { - // acquire semaphore - updateSemaphore.acquireUninterruptibly(); - - try { - M model = null; - - if (!isCancelled()) { - firePropertyChange(LOADING_PROPERTY, false, true); - model = createModelInBackground(sourceModel); - firePropertyChange(LOADING_PROPERTY, true, false); - } - - return model; - } finally { - updateSemaphore.release(); - } + return createModelInBackground(sourceModel); } @Override protected void done() { // update task will only be cancelled if a newer update task has been started - if (!isCancelled()) { + if (this == updateTask && !isCancelled()) { try { setModel(get()); } catch (Exception e) { diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/TypeTool.java b/source/net/sourceforge/filebot/ui/panel/analyze/TypeTool.java index 69bacc17..1b57dc81 100644 --- a/source/net/sourceforge/filebot/ui/panel/analyze/TypeTool.java +++ b/source/net/sourceforge/filebot/ui/panel/analyze/TypeTool.java @@ -20,7 +20,6 @@ import net.miginfocom.swing.MigLayout; import net.sourceforge.filebot.ui.panel.analyze.FileTree.FolderNode; import net.sourceforge.filebot.ui.transfer.DefaultTransferHandler; import net.sourceforge.tuned.FileUtilities; -import net.sourceforge.tuned.ui.LoadingOverlayPane; public class TypeTool extends Tool { @@ -35,7 +34,8 @@ public class TypeTool extends Tool { JScrollPane treeScrollPane = new JScrollPane(tree); treeScrollPane.setBorder(BorderFactory.createEmptyBorder()); - add(new LoadingOverlayPane(treeScrollPane, this), "grow"); + + add(treeScrollPane, "grow"); tree.setTransferHandler(new DefaultTransferHandler(null, new FileTreeExportHandler())); tree.setDragEnabled(true); diff --git a/source/net/sourceforge/tuned/ui/IconViewPanel.java b/source/net/sourceforge/tuned/ui/IconViewPanel.java index c8057ce2..291455a9 100644 --- a/source/net/sourceforge/tuned/ui/IconViewPanel.java +++ b/source/net/sourceforge/tuned/ui/IconViewPanel.java @@ -62,6 +62,11 @@ public class IconViewPanel extends JPanel { } + public JList getList() { + return list; + } + + public JPanel getHeaderPanel() { return headerPanel; }