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