package yukihane.inqubus.gui;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.swing.DefaultListModel;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.LayoutStyle.ComponentPlacement;
+import javax.swing.TransferHandler;
/**
*
private final JButton btnSearchVideoDel = new JButton("削除");
DirectoryRegisterPanel() {
+ lstSearchVideo.setTransferHandler(new DirectoryTransferHandler(mdlSearchVideo));
+ btnSearchVideoDel.addActionListener(new DelActionListener());
+
final JScrollPane srcSearchVideo = new JScrollPane();
srcSearchVideo.setViewportView(lstSearchVideo);
.addComponent(btnSearchVideoAdd))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
+ }
+
+ private class DelActionListener implements ActionListener {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ final int idx = lstSearchVideo.getSelectedIndex();
+ mdlSearchVideo.removeElementAt(idx);
+ }
+ }
+}
+
+class DirectoryTransferHandler extends TransferHandler {
+
+ private static final long serialVersionUID = 1L;
+ private static final Logger logger = Logger.getLogger(DirectoryTransferHandler.class.getName());
+ private final DefaultListModel<String> model;
+
+ DirectoryTransferHandler(DefaultListModel<String> model) {
+ this.model = model;
+ }
+
+ @Override
+ public boolean canImport(TransferHandler.TransferSupport support) {
+ Transferable transferable = support.getTransferable();
+ if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
+ return true;
+ }
+ return false;
+ }
+ @Override
+ public boolean importData(TransferHandler.TransferSupport support) {
+ boolean res = false;
+ try {
+ Transferable transferable = support.getTransferable();
+ if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
+ @SuppressWarnings("unchecked")
+ final List<File> data = (List<File>) transferable.getTransferData(DataFlavor.javaFileListFlavor);
+ for (File f : data) {
+ if (f.isDirectory()) {
+ model.addElement(f.getPath());
+ res = true;
+ }
+ }
+ }
+ return res;
+ } catch (UnsupportedFlavorException | IOException e) {
+ logger.log(Level.SEVERE, null, e);
+ return res;
+ }
}
}