diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/tools/FileTreeExportHandler.java b/source/net/sourceforge/filebot/ui/panel/analyze/tools/FileTreeExportHandler.java deleted file mode 100644 index d4053a87..00000000 --- a/source/net/sourceforge/filebot/ui/panel/analyze/tools/FileTreeExportHandler.java +++ /dev/null @@ -1,51 +0,0 @@ - -package net.sourceforge.filebot.ui.panel.analyze.tools; - - -import java.awt.datatransfer.Transferable; -import java.io.File; -import java.util.LinkedHashSet; - -import javax.swing.JComponent; -import javax.swing.TransferHandler; -import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.TreePath; - -import net.sourceforge.filebot.ui.FileBotTree; -import net.sourceforge.filebot.ui.transfer.TransferableExportHandler; -import net.sourceforge.filebot.ui.transfer.FileTransferable; - - -class FileTreeExportHandler implements TransferableExportHandler { - - @Override - public Transferable createTransferable(JComponent c) { - FileBotTree tree = (FileBotTree) c; - - LinkedHashSet files = new LinkedHashSet(); - - for (TreePath path : tree.getSelectionPaths()) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); - - files.addAll(tree.convertToList(node)); - } - - if (!files.isEmpty()) - return new FileTransferable(files); - - return null; - } - - - @Override - public void exportDone(JComponent source, Transferable data, int action) { - - } - - - @Override - public int getSourceActions(JComponent c) { - return TransferHandler.COPY; - } - -} diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/tools/SplitPanel.java b/source/net/sourceforge/filebot/ui/panel/analyze/tools/SplitPanel.java deleted file mode 100644 index 1802649c..00000000 --- a/source/net/sourceforge/filebot/ui/panel/analyze/tools/SplitPanel.java +++ /dev/null @@ -1,189 +0,0 @@ - -package net.sourceforge.filebot.ui.panel.analyze.tools; - - -import java.awt.Color; -import java.io.File; -import java.util.ArrayList; -import java.util.Collection; -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; -import javax.swing.SpinnerNumberModel; -import javax.swing.SwingWorker; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.DefaultTreeModel; - -import net.miginfocom.swing.MigLayout; -import net.sourceforge.filebot.ResourceManager; -import net.sourceforge.filebot.ui.FileBotTree; -import net.sourceforge.filebot.ui.transfer.DefaultTransferHandler; -import net.sourceforge.tuned.FileUtil; -import net.sourceforge.tuned.ui.GradientStyle; -import net.sourceforge.tuned.ui.LoadingOverlayPane; -import net.sourceforge.tuned.ui.notification.SeparatorBorder; - - -public class SplitPanel extends ToolPanel implements ChangeListener { - - private FileBotTree tree = new FileBotTree(); - - private SpinnerNumberModel spinnerModel = new SpinnerNumberModel(4480, 0, Integer.MAX_VALUE, 100); - - - public SplitPanel() { - super("Split"); - - JScrollPane treeScrollPane = new JScrollPane(tree); - treeScrollPane.setBorder(BorderFactory.createEmptyBorder()); - - JSpinner spinner = new JSpinner(spinnerModel); - spinner.setEditor(new JSpinner.NumberEditor(spinner, "#")); - - LoadingOverlayPane loadingOverlayPane = new LoadingOverlayPane(treeScrollPane, ResourceManager.getIcon("loading")); - 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(new JLabel("Split every")); - add(spinner, "wmax 80, gap top rel, gap bottom unrel"); - add(new JLabel("MB.")); - - tree.setTransferHandler(new DefaultTransferHandler(null, new FileTreeExportHandler())); - tree.setDragEnabled(true); - - spinnerModel.addChangeListener(this); - } - - - public void stateChanged(ChangeEvent e) { - if (fileChache != null) { - update(); - } - } - - - private long getSplitSize() { - return spinnerModel.getNumber().intValue() * FileUtil.MEGA; - } - - private UpdateTask updateTask; - - private Collection fileChache; - - - @Override - public void update(Collection files) { - this.fileChache = files; - update(); - } - - - private synchronized void update() { - if (updateTask != null) { - updateTask.cancel(false); - } - - updateTask = new UpdateTask(fileChache); - - tree.firePropertyChange(LoadingOverlayPane.LOADING_PROPERTY, false, true); - updateTask.execute(); - } - - - private class UpdateTask extends SwingWorker { - - private final Collection files; - - - public UpdateTask(Collection files) { - this.files = files; - } - - - @Override - protected DefaultTreeModel doInBackground() throws Exception { - - List> parts = new ArrayList>(); - List remainder = new ArrayList(); - - long splitSize = getSplitSize(); - - long currentSize = 0; - List currentPart = null; - - for (File file : files) { - long fileSize = file.length(); - - if (fileSize > splitSize) { - remainder.add(file); - continue; - } - - if (currentSize + fileSize > splitSize) { - currentSize = 0; - currentPart = null; - } - - if (currentPart == null) { - currentPart = new ArrayList(); - parts.add(currentPart); - } - - currentSize += fileSize; - currentPart.add(file); - - if (isCancelled()) { - return null; - } - } - - DefaultMutableTreeNode root = new DefaultMutableTreeNode(); - - int count = 1; - - for (List part : parts) { - root.add(createTreeNode(String.format("Part %d", count), part)); - - count++; - - if (isCancelled()) { - return null; - } - } - - if (!remainder.isEmpty()) { - root.add(createTreeNode("Remainder", remainder)); - } - - return new DefaultTreeModel(root); - } - - - @Override - protected void done() { - if (isCancelled()) { - return; - } - - try { - tree.setModel(get()); - } catch (Exception e) { - // should not happen - Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, e.toString(), e); - } - - tree.firePropertyChange(LoadingOverlayPane.LOADING_PROPERTY, true, false); - } - } - -} diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/tools/ToolPanel.java b/source/net/sourceforge/filebot/ui/panel/analyze/tools/ToolPanel.java deleted file mode 100644 index f43283b4..00000000 --- a/source/net/sourceforge/filebot/ui/panel/analyze/tools/ToolPanel.java +++ /dev/null @@ -1,51 +0,0 @@ - -package net.sourceforge.filebot.ui.panel.analyze.tools; - - -import java.io.File; -import java.util.Collection; - -import javax.swing.JPanel; -import javax.swing.tree.DefaultMutableTreeNode; - -import net.sourceforge.tuned.FileUtil; - - -public abstract class ToolPanel extends JPanel { - - private final String name; - - - public ToolPanel(String name) { - super(null); - this.name = name; - } - - - public String getToolName() { - return name; - } - - - public abstract void update(Collection list); - - - protected DefaultMutableTreeNode createTreeNode(String name, Collection files) { - DefaultMutableTreeNode node = new DefaultMutableTreeNode(); - - long totalSize = 0; - - for (File file : files) { - node.add(new DefaultMutableTreeNode(file)); - totalSize += file.length(); - } - - // format the number of files string (e.g. 1 file, 2 files, ...) - String numberOfFiles = String.format("%,d %s", files.size(), files.size() == 1 ? "file" : "files"); - - // set node text (e.g. txt (1 file, 42 Byte)) - node.setUserObject(String.format("%s (%s, %s)", name, numberOfFiles, FileUtil.formatSize(totalSize))); - - return node; - } -} diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/tools/TypePanel.java b/source/net/sourceforge/filebot/ui/panel/analyze/tools/TypePanel.java deleted file mode 100644 index 9e03711e..00000000 --- a/source/net/sourceforge/filebot/ui/panel/analyze/tools/TypePanel.java +++ /dev/null @@ -1,126 +0,0 @@ - -package net.sourceforge.filebot.ui.panel.analyze.tools; - - -import java.awt.BorderLayout; -import java.io.File; -import java.util.Collection; -import java.util.Map; -import java.util.SortedMap; -import java.util.SortedSet; -import java.util.TreeMap; -import java.util.TreeSet; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.swing.BorderFactory; -import javax.swing.JScrollPane; -import javax.swing.SwingWorker; -import javax.swing.tree.DefaultMutableTreeNode; -import javax.swing.tree.DefaultTreeModel; - -import net.sourceforge.filebot.ResourceManager; -import net.sourceforge.filebot.ui.FileBotTree; -import net.sourceforge.filebot.ui.transfer.DefaultTransferHandler; -import net.sourceforge.tuned.FileUtil; -import net.sourceforge.tuned.ui.LoadingOverlayPane; - - -public class TypePanel extends ToolPanel { - - private FileBotTree tree = new FileBotTree(); - - - public TypePanel() { - super("Types"); - - setLayout(new BorderLayout()); - - JScrollPane sp = new JScrollPane(tree); - sp.setBorder(BorderFactory.createEmptyBorder()); - add(new LoadingOverlayPane(sp, ResourceManager.getIcon("loading")), BorderLayout.CENTER); - - tree.setTransferHandler(new DefaultTransferHandler(null, new FileTreeExportHandler())); - tree.setDragEnabled(true); - } - - private UpdateTask updateTask = null; - - - @Override - public synchronized void update(Collection files) { - if (updateTask != null) { - updateTask.cancel(false); - } - - updateTask = new UpdateTask(files); - - tree.firePropertyChange(LoadingOverlayPane.LOADING_PROPERTY, false, true); - updateTask.execute(); - } - - - private class UpdateTask extends SwingWorker { - - private final Collection files; - - - public UpdateTask(Collection files) { - this.files = files; - } - - - @Override - protected DefaultTreeModel doInBackground() throws Exception { - SortedMap> map = new TreeMap>(); - - for (File file : files) { - String extension = FileUtil.getExtension(file); - - SortedSet set = map.get(extension); - - if (set == null) { - set = new TreeSet(); - map.put(extension, set); - } - - set.add(file); - - if (isCancelled()) { - return null; - } - } - - DefaultMutableTreeNode root = new DefaultMutableTreeNode(); - - for (Map.Entry> entry : map.entrySet()) { - - root.add(createTreeNode(entry.getKey(), entry.getValue())); - - if (isCancelled()) { - return null; - } - } - - return new DefaultTreeModel(root); - } - - - @Override - protected void done() { - if (isCancelled()) { - return; - } - - try { - tree.setModel(get()); - } catch (Exception e) { - // should not happen - Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, e.toString(), e); - } - - tree.firePropertyChange(LoadingOverlayPane.LOADING_PROPERTY, true, false); - } - } - -}