mirror of
https://github.com/mitb-archive/filebot
synced 2024-08-13 17:03:45 -04:00
* some refactoring
This commit is contained in:
parent
4c94679a64
commit
051cf3362b
24
build.xml
24
build.xml
@ -29,7 +29,7 @@
|
|||||||
<attribute name="Built-Date" value="${today}" />
|
<attribute name="Built-Date" value="${today}" />
|
||||||
<attribute name="Implementation-Title" value="${title}" />
|
<attribute name="Implementation-Title" value="${title}" />
|
||||||
<attribute name="Implementation-Version" value="${version}" />
|
<attribute name="Implementation-Version" value="${version}" />
|
||||||
<attribute name="Class-Path" value="args4j.jar miglayout.jar glazedlists.jar nekohtml.jar xercesImpl.jar simmetrics.jar xmlrpc-client.jar" />
|
<attribute name="Class-Path" value="args4j.jar miglayout.jar glazedlists.jar nekohtml.jar xercesImpl.jar ehcache.jar simmetrics.jar xmlrpc-client.jar" />
|
||||||
<attribute name="Main-Class" value="net.sourceforge.filebot.Main" />
|
<attribute name="Main-Class" value="net.sourceforge.filebot.Main" />
|
||||||
</manifest>
|
</manifest>
|
||||||
</jar>
|
</jar>
|
||||||
@ -53,13 +53,8 @@
|
|||||||
|
|
||||||
<!-- include libs -->
|
<!-- include libs -->
|
||||||
<zipfileset src="${dir.lib}/xercesImpl.jar">
|
<zipfileset src="${dir.lib}/xercesImpl.jar">
|
||||||
<include name="org/apache/html/dom/**" />
|
<include name="**/*.class" />
|
||||||
<include name="org/apache/xerces/dom/**" />
|
<include name="**/*.properties" />
|
||||||
<include name="org/apache/xerces/impl/**" />
|
|
||||||
<include name="org/apache/xerces/parsers/**" />
|
|
||||||
<include name="org/apache/xerces/util/**" />
|
|
||||||
<include name="org/apache/xerces/xni/**" />
|
|
||||||
<include name="org/apache/xerces/xs/**" />
|
|
||||||
</zipfileset>
|
</zipfileset>
|
||||||
|
|
||||||
<zipfileset src="${dir.lib}/nekohtml.jar">
|
<zipfileset src="${dir.lib}/nekohtml.jar">
|
||||||
@ -68,14 +63,11 @@
|
|||||||
</zipfileset>
|
</zipfileset>
|
||||||
|
|
||||||
<zipfileset src="${dir.lib}/simmetrics.jar">
|
<zipfileset src="${dir.lib}/simmetrics.jar">
|
||||||
<include name="uk/ac/shef/wit/simmetrics/math/**" />
|
<include name="**/*.class" />
|
||||||
<include name="uk/ac/shef/wit/simmetrics/similaritymetrics/**" />
|
|
||||||
<include name="uk/ac/shef/wit/simmetrics/tokenisers/**" />
|
|
||||||
<include name="uk/ac/shef/wit/simmetrics/wordhandlers/**" />
|
|
||||||
</zipfileset>
|
</zipfileset>
|
||||||
|
|
||||||
<zipfileset src="${dir.lib}/glazedlists.jar">
|
<zipfileset src="${dir.lib}/glazedlists.jar">
|
||||||
<include name="ca/odell/glazedlists/**" />
|
<include name="**/*.class" />
|
||||||
</zipfileset>
|
</zipfileset>
|
||||||
|
|
||||||
<zipfileset src="${dir.lib}/miglayout.jar">
|
<zipfileset src="${dir.lib}/miglayout.jar">
|
||||||
@ -94,7 +86,7 @@
|
|||||||
</zipfileset>
|
</zipfileset>
|
||||||
|
|
||||||
<zipfileset src="${dir.lib}/ehcache.jar">
|
<zipfileset src="${dir.lib}/ehcache.jar">
|
||||||
<include name="net/sf/ehcache/**" />
|
<include name="**/*.class" />
|
||||||
</zipfileset>
|
</zipfileset>
|
||||||
</jar>
|
</jar>
|
||||||
</target>
|
</target>
|
||||||
@ -155,4 +147,8 @@
|
|||||||
</junit>
|
</junit>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
|
<target name="run-fatjar" depends="fatjar">
|
||||||
|
<java jar="${dir.dist}/fatjar/FileBot.jar" fork="true" />
|
||||||
|
</target>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
@ -7,8 +7,9 @@ import java.io.File;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
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.JLabel;
|
||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.JSpinner;
|
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.filebot.ui.transfer.DefaultTransferHandler;
|
||||||
import net.sourceforge.tuned.FileUtilities;
|
import net.sourceforge.tuned.FileUtilities;
|
||||||
import net.sourceforge.tuned.ui.GradientStyle;
|
import net.sourceforge.tuned.ui.GradientStyle;
|
||||||
import net.sourceforge.tuned.ui.LoadingOverlayPane;
|
|
||||||
import net.sourceforge.tuned.ui.notification.SeparatorBorder;
|
import net.sourceforge.tuned.ui.notification.SeparatorBorder;
|
||||||
|
|
||||||
|
|
||||||
@ -38,17 +38,14 @@ public class SplitTool extends Tool<TreeModel> implements ChangeListener {
|
|||||||
super("Split");
|
super("Split");
|
||||||
|
|
||||||
JScrollPane treeScrollPane = new JScrollPane(tree);
|
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);
|
JSpinner spinner = new JSpinner(spinnerModel);
|
||||||
spinner.setEditor(new JSpinner.NumberEditor(spinner, "#"));
|
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"));
|
setLayout(new MigLayout("insets 0, nogrid, fill", "align center"));
|
||||||
|
|
||||||
add(loadingOverlayPane, "grow, wrap");
|
add(treeScrollPane, "grow, wrap");
|
||||||
|
|
||||||
add(new JLabel("Split every"));
|
add(new JLabel("Split every"));
|
||||||
add(spinner, "wmax 80, gap top rel, gap bottom unrel");
|
add(spinner, "wmax 80, gap top rel, gap bottom unrel");
|
||||||
@ -68,9 +65,16 @@ public class SplitTool extends Tool<TreeModel> implements ChangeListener {
|
|||||||
private FolderNode sourceModel = null;
|
private FolderNode sourceModel = null;
|
||||||
|
|
||||||
|
|
||||||
public void stateChanged(ChangeEvent e) {
|
public void stateChanged(ChangeEvent evt) {
|
||||||
if (sourceModel != null)
|
if (sourceModel != null) {
|
||||||
setSourceModel(sourceModel);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,12 +2,9 @@
|
|||||||
package net.sourceforge.filebot.ui.panel.analyze;
|
package net.sourceforge.filebot.ui.panel.analyze;
|
||||||
|
|
||||||
|
|
||||||
import static net.sourceforge.tuned.ui.LoadingOverlayPane.LOADING_PROPERTY;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ConcurrentModificationException;
|
import java.util.ConcurrentModificationException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.Semaphore;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
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.filebot.ui.panel.analyze.FileTree.FolderNode;
|
||||||
import net.sourceforge.tuned.ExceptionUtilities;
|
import net.sourceforge.tuned.ExceptionUtilities;
|
||||||
import net.sourceforge.tuned.FileUtilities;
|
import net.sourceforge.tuned.FileUtilities;
|
||||||
import net.sourceforge.tuned.ui.TunedUtilities;
|
|
||||||
|
|
||||||
|
|
||||||
abstract class Tool<M> extends JComponent {
|
abstract class Tool<M> extends JComponent {
|
||||||
|
|
||||||
private UpdateModelTask updateTask = null;
|
private UpdateModelTask updateTask = null;
|
||||||
private Semaphore updateSemaphore = new Semaphore(1);
|
|
||||||
|
|
||||||
|
|
||||||
public Tool(String name) {
|
public Tool(String name) {
|
||||||
@ -32,16 +27,12 @@ abstract class Tool<M> extends JComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public synchronized void setSourceModel(FolderNode sourceModel) {
|
public void setSourceModel(FolderNode sourceModel) {
|
||||||
if (updateTask != null) {
|
if (updateTask != null) {
|
||||||
updateTask.cancel(true);
|
updateTask.cancel(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateTask = new UpdateModelTask(sourceModel);
|
updateTask = new UpdateModelTask(sourceModel);
|
||||||
|
|
||||||
// sync events for loading overlay
|
|
||||||
TunedUtilities.syncPropertyChangeEvents(boolean.class, LOADING_PROPERTY, updateTask, this);
|
|
||||||
|
|
||||||
updateTask.execute();
|
updateTask.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,29 +55,14 @@ abstract class Tool<M> extends JComponent {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected M doInBackground() throws Exception {
|
protected M doInBackground() throws Exception {
|
||||||
// acquire semaphore
|
return createModelInBackground(sourceModel);
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void done() {
|
protected void done() {
|
||||||
// update task will only be cancelled if a newer update task has been started
|
// update task will only be cancelled if a newer update task has been started
|
||||||
if (!isCancelled()) {
|
if (this == updateTask && !isCancelled()) {
|
||||||
try {
|
try {
|
||||||
setModel(get());
|
setModel(get());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -20,7 +20,6 @@ import net.miginfocom.swing.MigLayout;
|
|||||||
import net.sourceforge.filebot.ui.panel.analyze.FileTree.FolderNode;
|
import net.sourceforge.filebot.ui.panel.analyze.FileTree.FolderNode;
|
||||||
import net.sourceforge.filebot.ui.transfer.DefaultTransferHandler;
|
import net.sourceforge.filebot.ui.transfer.DefaultTransferHandler;
|
||||||
import net.sourceforge.tuned.FileUtilities;
|
import net.sourceforge.tuned.FileUtilities;
|
||||||
import net.sourceforge.tuned.ui.LoadingOverlayPane;
|
|
||||||
|
|
||||||
|
|
||||||
public class TypeTool extends Tool<TreeModel> {
|
public class TypeTool extends Tool<TreeModel> {
|
||||||
@ -35,7 +34,8 @@ public class TypeTool extends Tool<TreeModel> {
|
|||||||
|
|
||||||
JScrollPane treeScrollPane = new JScrollPane(tree);
|
JScrollPane treeScrollPane = new JScrollPane(tree);
|
||||||
treeScrollPane.setBorder(BorderFactory.createEmptyBorder());
|
treeScrollPane.setBorder(BorderFactory.createEmptyBorder());
|
||||||
add(new LoadingOverlayPane(treeScrollPane, this), "grow");
|
|
||||||
|
add(treeScrollPane, "grow");
|
||||||
|
|
||||||
tree.setTransferHandler(new DefaultTransferHandler(null, new FileTreeExportHandler()));
|
tree.setTransferHandler(new DefaultTransferHandler(null, new FileTreeExportHandler()));
|
||||||
tree.setDragEnabled(true);
|
tree.setDragEnabled(true);
|
||||||
|
@ -62,6 +62,11 @@ public class IconViewPanel extends JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public JList getList() {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public JPanel getHeaderPanel() {
|
public JPanel getHeaderPanel() {
|
||||||
return headerPanel;
|
return headerPanel;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user