OSDN Git Service

dnd仮実装
authoryukihane <yukihane.feather@gmail.com>
Tue, 7 Jun 2011 15:13:03 +0000 (00:13 +0900)
committeryukihane <yukihane.feather@gmail.com>
Tue, 7 Jun 2011 15:13:03 +0000 (00:13 +0900)
frontend/nbproject/project.properties
frontend/src/yukihane/inqubuss/conifg/Properties.java
frontend/src/yukihane/inqubuss/gui/MainFrame.form
frontend/src/yukihane/inqubuss/gui/MainFrame.java
frontend/src/yukihane/inqubuss/model/ListData.java [deleted file]
frontend/src/yukihane/inqubuss/model/Location.java
frontend/src/yukihane/inqubuss/model/SourceType.java
frontend/src/yukihane/inqubuss/model/SourceTypeComboBoxModel.java
frontend/src/yukihane/inqubuss/model/Target.java
frontend/src/yukihane/inqubuss/model/TargetsTableModel.java

index cc963ab..4526e29 100644 (file)
@@ -1,3 +1,6 @@
+annotation.processing.enabled=true\r
+annotation.processing.enabled.in.editor=false\r
+annotation.processing.run.all.processors=true\r
 application.title=Saccubus\r
 application.vendor=yuki\r
 build.classes.dir=${build.dir}/classes\r
@@ -40,8 +43,10 @@ javac.classpath=\
 # Space-separated list of extra javac options\r
 javac.compilerargs=\r
 javac.deprecation=false\r
-javac.source=1.5\r
-javac.target=1.5\r
+javac.processorpath=\\r
+    ${javac.classpath}\r
+javac.source=1.6\r
+javac.target=1.6\r
 javac.test.classpath=\\r
     ${javac.classpath}:\\r
     ${build.classes.dir}:\\r
@@ -65,9 +70,10 @@ jnlp.descriptor=application
 jnlp.enabled=false\r
 jnlp.offline-allowed=false\r
 jnlp.signed=false\r
-main.class=saccubus.Saccubus\r
+main.class=yukihane.inqubuss.gui.MainFrame\r
 manifest.file=manifest.mf\r
 meta.inf.dir=${src.dir}/META-INF\r
+mkdist.disabled=false\r
 no.dependencies=true\r
 platform.active=default_platform\r
 project.NicoBrowser=../NicoLib/NicoBrowser/release_20091201_ver_0_4_0\r
index 992cb14..a9e7d17 100644 (file)
@@ -37,6 +37,7 @@ public enum Properties implements Config {
     /** 投稿者コメントダウンロードディレクトリ */
     private String p_ownercomment_directory;
 
+    @Override
     public boolean isOwnerCommentDownload() {
         return Boolean.valueOf(p_ownercomment_download);
     }
@@ -45,6 +46,7 @@ public enum Properties implements Config {
         p_ownercomment_download = Boolean.toString(download);
     }
 
+    @Override
     public boolean isCommentDownload() {
         return Boolean.valueOf(p_comment_download);
     }
@@ -53,6 +55,7 @@ public enum Properties implements Config {
         p_comment_download = Boolean.toString(download);
     }
 
+    @Override
     public String getMovieDirectory() {
         return p_movie_directory;
     }
@@ -61,6 +64,7 @@ public enum Properties implements Config {
         this.p_movie_directory = dir;
     }
 
+    @Override
     public boolean isMovieDownload() {
         return Boolean.valueOf(p_movie_download);
     }
@@ -69,6 +73,7 @@ public enum Properties implements Config {
         this.p_movie_download = Boolean.toString(download);
     }
 
+    @Override
     public String getDbLocation() {
         return p_nicobrowser_dblocation;
     }
@@ -77,6 +82,7 @@ public enum Properties implements Config {
         this.p_nicobrowser_dblocation = p_nicobrowser_dblocation;
     }
 
+    @Override
     public boolean isDbUse() {
         return Boolean.valueOf(p_nicobrowser_use);
     }
@@ -85,6 +91,7 @@ public enum Properties implements Config {
         this.p_nicobrowser_use = Boolean.toString(use);
     }
 
+    @Override
     public String getNicoVideoId() {
         return p_nicovideo_id;
     }
@@ -93,6 +100,7 @@ public enum Properties implements Config {
         this.p_nicovideo_id = id;
     }
 
+    @Override
     public String getNicoVideoPassword() {
         return p_nicovideo_password;
     }
@@ -101,6 +109,7 @@ public enum Properties implements Config {
         this.p_nicovideo_password = password;
     }
 
+    @Override
     public String getProxyHost() {
         return p_proxy_host;
     }
@@ -109,6 +118,7 @@ public enum Properties implements Config {
         this.p_proxy_host = host;
     }
 
+    @Override
     public int getP_proxy_port() {
         return Integer.parseInt(p_proxy_port);
     }
@@ -117,6 +127,7 @@ public enum Properties implements Config {
         this.p_proxy_port = Integer.toString(port);
     }
 
+    @Override
     public boolean isProxyUse() {
         return Boolean.valueOf(p_proxy_use);
     }
index 21afe78..1aa822a 100644 (file)
             <Component class="javax.swing.JTable" name="jTable1">
               <Properties>
                 <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-                  <Connection code="targets" type="code"/>
+                  <Connection code="targetModel" type="code"/>
+                </Property>
+                <Property name="dropMode" type="javax.swing.DropMode" editor="org.netbeans.modules.form.editors.EnumEditor">
+                  <Value id="INSERT_ROWS"/>
                 </Property>
               </Properties>
             </Component>
index f37a8a5..f09598a 100644 (file)
  */
 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;
 
 /**
@@ -20,10 +30,13 @@ 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
@@ -63,7 +76,8 @@ public class MainFrame extends javax.swing.JFrame {
 
         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());
@@ -234,6 +248,19 @@ public class MainFrame extends javax.swing.JFrame {
      * @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() {
@@ -266,4 +293,61 @@ public class MainFrame extends javax.swing.JFrame {
     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);
+        }
+    }
 }
diff --git a/frontend/src/yukihane/inqubuss/model/ListData.java b/frontend/src/yukihane/inqubuss/model/ListData.java
deleted file mode 100644 (file)
index 7b4cb90..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-package yukihane.inqubuss.model;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ListData {
-
-    private List<Target> lines = new ArrayList<Target>();
-
-    int size() {
-        return lines.size();
-    }
-
-    Target get(int rowIndex) {
-        return lines.get(rowIndex);
-    }
-}
index fc59b2a..e33df90 100644 (file)
@@ -1,5 +1,7 @@
 package yukihane.inqubuss.model;
 
+import java.io.File;
+
 /**
  *
  * @author yuki
@@ -15,6 +17,10 @@ class Location {
         this.location = location;
     }
 
+    Location(File f) {
+        this.location = f.getPath();
+    }
+
     @Override
     public String toString() {
         return location;
index b525667..e78567f 100644 (file)
@@ -6,15 +6,19 @@ package yukihane.inqubuss.model;
  */
 public enum SourceType {
 
-    DEFAULT("デフォルト"), DOWNLOAD("常にダウンロード"), DOWNLOAD_WHEN_NOTHING("無ければダウンロード"), LOCAL_SELECT("ローカルファイル選択..."), DO_NOT_PROCESS(
-    "何も行わない");
+    DEFAULT("デフォルト"),
+    RECYCLE("無ければダウンロード"),
+    DOWNLOAD("常にダウンロード"),
+    SELECT_FILE("ファイル選択..."),
+    DO_NOTHING("何も行わない");
     private final String text;
 
     private SourceType(String text) {
         this.text = text;
     }
 
-    public String getText() {
+    @Override
+    public String toString() {
         return text;
     }
 }
index 1e097dd..78365d9 100644 (file)
@@ -1,43 +1,16 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package yukihane.inqubuss.model;
 
-import javax.swing.ComboBoxModel;
-import javax.swing.event.ListDataListener;
+import javax.swing.DefaultComboBoxModel;
 
 /**
  *
  * @author yuki
  */
-public class SourceTypeComboBoxModel implements ComboBoxModel {
-
-    public void setSelectedItem(Object anItem) {
-//        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    public Object getSelectedItem() {
-//        throw new UnsupportedOperationException("Not supported yet.");
-        return "test";
-    }
-
-    public int getSize() {
-//        throw new UnsupportedOperationException("Not supported yet.");
-        return 10;
-    }
-
-    public Object getElementAt(int index) {
-//        throw new UnsupportedOperationException("Not supported yet.");
-        return "Hello";
-    }
-
-    public void addListDataListener(ListDataListener l) {
-//        throw new UnsupportedOperationException("Not supported yet.");
-    }
+public class SourceTypeComboBoxModel extends DefaultComboBoxModel {
 
-    public void removeListDataListener(ListDataListener l) {
-        throw new UnsupportedOperationException("Not supported yet.");
+    public SourceTypeComboBoxModel() {
+        for (SourceType st : SourceType.values()) {
+            addElement(st);
+        }
     }
-    
 }
index c5903af..2b12187 100644 (file)
@@ -1,12 +1,28 @@
 package yukihane.inqubuss.model;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collection;
+
 public class Target {
 
+    public static Collection<Target> from(Collection<File> data) {
+        Collection<Target> list = new ArrayList<Target>(data.size());
+        for(File f : data){
+            list.add(new Target(f));
+        }
+        return list;
+    }
+
     private Location movie;
     private Location comment;
     private Location ownerComment;
     private Status status;
 
+    private Target(File f) {
+        movie = new Location(f);
+    }
+
     public Location getComment() {
         return comment;
     }
index a1087cf..f8a1e62 100644 (file)
@@ -1,51 +1,45 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
 package yukihane.inqubuss.model;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
-import javax.swing.event.TableModelListener;
-import javax.swing.table.TableModel;
+import javax.swing.table.AbstractTableModel;
 
 /**
  *
  * @author yuki
  */
-public class TargetsTableModel implements TableModel {
+public class TargetsTableModel extends AbstractTableModel {
 
-    private final ListData targets;
+    private final List<Target> targets = new ArrayList<Target>();
     private final String[] columnNames = new String[]{"動画", "コメント", "投コメ", "状態"};
     private final Class<?>[] columnClasses = new Class<?>[]{Location.class, Location.class, Location.class, Status.class};
 
-    public TargetsTableModel(ListData targets) {
-        this.targets = targets;
-    }
-
+    @Override
     public int getRowCount() {
         return targets.size();
     }
 
+    @Override
     public int getColumnCount() {
         return columnNames.length;
     }
 
+    @Override
     public String getColumnName(int columnIndex) {
         return columnNames[columnIndex];
     }
 
+    @Override
     public Class<?> getColumnClass(int columnIndex) {
         return columnClasses[columnIndex];
     }
 
-    public boolean isCellEditable(int rowIndex, int columnIndex) {
-        return false;
-    }
-
+    @Override
     public Object getValueAt(int rowIndex, int columnIndex) {
         Target t = targets.get(rowIndex);
         Object res;
-        switch(columnIndex){
+        switch (columnIndex) {
             case 0:
                 res = t.getMovie();
                 break;
@@ -64,15 +58,18 @@ public class TargetsTableModel implements TableModel {
         return res;
     }
 
+    @Override
     public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
         throw new UnsupportedOperationException("Not supported yet.");
     }
 
-    public void addTableModelListener(TableModelListener l) {
-//        throw new UnsupportedOperationException("Not supported yet.");
-    }
+    public void addTarget(Collection<Target> t) {
+        int before = targets.size();
+        targets.addAll(t);
+        int after = targets.size();
+        if (before < after) {
+            fireTableRowsInserted(before, after - 1);
+        }
 
-    public void removeTableModelListener(TableModelListener l) {
-//        throw new UnsupportedOperationException("Not supported yet.");
     }
 }