package net.filebot.ui.filter; import java.awt.datatransfer.Transferable; import javax.swing.JComponent; import javax.swing.JTabbedPane; import com.google.common.eventbus.Subscribe; import net.filebot.ui.transfer.TransferablePolicy; import net.filebot.ui.transfer.TransferablePolicy.TransferAction; import net.miginfocom.swing.MigLayout; public class FilterPanel extends JComponent { private final FileTreePanel fileTreePanel = new FileTreePanel(); private final JTabbedPane toolsPanel = new JTabbedPane(); public FilterPanel() { setLayout(new MigLayout("insets dialog, gapx 50, fill, nogrid")); add(fileTreePanel, "grow 1, w 300:pref:500"); add(toolsPanel, "grow 2"); fileTreePanel.addPropertyChangeListener(FileTreePanel.FILE_TREE_PROPERTY, evt -> { // stopped loading, refresh tools for (int i = 0; i < toolsPanel.getTabCount(); i++) { Tool<?> tool = (Tool<?>) toolsPanel.getComponentAt(i); tool.setRoot(fileTreePanel.getFileTree().getRoot()); } }); } public void addTool(Tool<?> tool) { toolsPanel.addTab(tool.getName(), tool); } @Subscribe public void handle(Transferable transferable) throws Exception { TransferablePolicy handler = fileTreePanel.getTransferablePolicy(); if (handler != null && handler.accept(transferable)) { handler.handleTransferable(transferable, TransferAction.PUT); } } }