*/
package yukihane.inqubuss.gui;
-import yukihane.inqubuss.model.ListData;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.swing.TransferHandler;
+import javax.swing.UIManager;
+import javax.swing.UIManager.LookAndFeelInfo;
import yukihane.inqubuss.model.SourceTypeComboBoxModel;
+import yukihane.inqubuss.model.Target;
import yukihane.inqubuss.model.TargetsTableModel;
/**
*/
public class MainFrame extends javax.swing.JFrame {
- private final TargetsTableModel targets = new TargetsTableModel(new ListData());
+ private final TargetsTableModel targetModel = new TargetsTableModel();
+
/** Creates new form MainFrame */
public MainFrame() {
initComponents();
+ jPanel1.setTransferHandler(new DownloadListTransferHandler());
+ jTable1.setTransferHandler(new TableTransferHandler());
}
/** This method is called from within the constructor to
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
- jTable1.setModel(targets);
+ jTable1.setModel(targetModel);
+ jTable1.setDropMode(javax.swing.DropMode.INSERT_ROWS);
jScrollPane1.setViewportView(jTable1);
jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
* @param args the command line arguments
*/
public static void main(String args[]) {
+ try {
+ for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
+ if ("Nimbus".equals(info.getName())) {
+ UIManager.setLookAndFeel(info.getClassName());
+ break;
+ }
+ }
+ } catch (Exception e) {
+ try {
+ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+ } catch (Exception ex) {
+ }
+ }
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
// End of variables declaration//GEN-END:variables
+
+ private class DownloadListTransferHandler extends TransferHandler {
+
+ private final Pattern pattern = Pattern.compile("(\\w\\w\\d+)");
+
+ @Override
+ public boolean canImport(TransferHandler.TransferSupport support) {
+
+ // TODO ファイル, URLはインポート可能とする.
+ DataFlavor[] flavors = support.getDataFlavors();
+ System.out.println("fl start");
+ for (DataFlavor f : flavors) {
+ System.out.println(f.getPrimaryType() + ", " + f.getMimeType() + ", " + f.getSubType() + ", " + f.
+ getHumanPresentableName());
+ }
+ System.out.println("fl end");
+ return true;
+ }
+
+ @Override
+ public boolean importData(TransferHandler.TransferSupport support) {
+ try {
+ Transferable transferable = support.getTransferable();
+ if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
+ List<File> data = (List<File>) transferable.getTransferData(DataFlavor.javaFileListFlavor);
+ Collection<Target> targets = Target.from(data);
+ targetModel.addTarget(targets);
+ } else {
+ String data = (String) transferable.getTransferData(DataFlavor.stringFlavor);
+ Matcher matcher = pattern.matcher(data);
+ if (matcher.find()) {
+ System.out.println("matched" + matcher.group(1));
+ } else {
+ return false;
+ }
+
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ }
+
+ private class TableTransferHandler extends DownloadListTransferHandler {
+
+ @Override
+ public boolean canImport(TransferHandler.TransferSupport support) {
+ return super.canImport(support);
+ }
+
+ @Override
+ public boolean importData(TransferHandler.TransferSupport support) {
+ return super.importData(support);
+ }
+ }
}