OSDN Git Service

IDを入力すると自動でローカルファイルを補完する機能
authoryukihane <yukihane.feather@gmail.com>
Wed, 17 Aug 2011 04:26:23 +0000 (13:26 +0900)
committeryukihane <yukihane.feather@gmail.com>
Wed, 17 Aug 2011 04:26:23 +0000 (13:26 +0900)
frontend/src/yukihane/inqubus/conifg/Properties.java
frontend/src/yukihane/inqubus/gui/MainFrame.form
frontend/src/yukihane/inqubus/gui/MainFrame.java

index 97924be..42dbcb6 100644 (file)
@@ -7,7 +7,7 @@ import java.util.List;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.XMLConfiguration;
 
-public enum Properties implements Config {
+public enum Properties {
 
     INSTANCE;
     private final XMLConfiguration config;
@@ -38,7 +38,6 @@ public enum Properties implements Config {
     /** 投稿者コメントダウンロードディレクトリ */
     private String p_ownercomment_directory;
 
-    @Override
     public boolean isOwnerCommentDownload() {
         return Boolean.valueOf(p_ownercomment_download);
     }
@@ -47,7 +46,6 @@ public enum Properties implements Config {
         p_ownercomment_download = Boolean.toString(download);
     }
 
-    @Override
     public boolean isCommentDownload() {
         return Boolean.valueOf(p_comment_download);
     }
@@ -56,16 +54,20 @@ public enum Properties implements Config {
         p_comment_download = Boolean.toString(download);
     }
 
-    @Override
-    public String getMovieDirectory() {
-        return p_movie_directory;
+    public File getMovieDirectory() {
+        // TODO return new File(p_movie_directory);
+        return new File("out/movie");
+    }
+
+    public File getCommentDirectory() {
+        // TODO
+        return new File("out/comment");
     }
 
     public void setMovieDirectory(String dir) {
         this.p_movie_directory = dir;
     }
 
-    @Override
     public boolean isMovieDownload() {
         return Boolean.valueOf(p_movie_download);
     }
@@ -74,7 +76,6 @@ public enum Properties implements Config {
         this.p_movie_download = Boolean.toString(download);
     }
 
-    @Override
     public String getDbLocation() {
         return p_nicobrowser_dblocation;
     }
@@ -83,7 +84,6 @@ public enum Properties implements Config {
         this.p_nicobrowser_dblocation = p_nicobrowser_dblocation;
     }
 
-    @Override
     public boolean isDbUse() {
         return Boolean.valueOf(p_nicobrowser_use);
     }
@@ -92,7 +92,6 @@ public enum Properties implements Config {
         this.p_nicobrowser_use = Boolean.toString(use);
     }
 
-    @Override
     public String getNicoVideoId() {
         return p_nicovideo_id;
     }
@@ -101,7 +100,6 @@ public enum Properties implements Config {
         this.p_nicovideo_id = id;
     }
 
-    @Override
     public String getNicoVideoPassword() {
         return p_nicovideo_password;
     }
@@ -110,7 +108,6 @@ public enum Properties implements Config {
         this.p_nicovideo_password = password;
     }
 
-    @Override
     public String getProxyHost() {
         return p_proxy_host;
     }
@@ -119,7 +116,6 @@ public enum Properties implements Config {
         this.p_proxy_host = host;
     }
 
-    @Override
     public int getP_proxy_port() {
         return Integer.parseInt(p_proxy_port);
     }
@@ -128,7 +124,6 @@ public enum Properties implements Config {
         this.p_proxy_port = Integer.toString(port);
     }
 
-    @Override
     public boolean isProxyUse() {
         return Boolean.valueOf(p_proxy_use);
     }
index 6649dde..2c7a8bd 100644 (file)
               </Properties>
             </Component>
             <Component class="javax.swing.JTextField" name="idField">
+              <Events>
+                <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="idFieldFocusLost"/>
+              </Events>
             </Component>
             <Component class="javax.swing.JLabel" name="movieLabel">
               <Properties>
index 0fc7e92..5420b33 100644 (file)
@@ -9,6 +9,7 @@ import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.event.ItemEvent;
 import java.io.File;
+import java.io.FilenameFilter;
 import java.util.Collection;
 import java.util.List;
 import java.util.regex.Matcher;
@@ -118,6 +119,12 @@ public class MainFrame extends javax.swing.JFrame {
 
         idLabel.setText("ID");
 
+        idField.addFocusListener(new java.awt.event.FocusAdapter() {
+            public void focusLost(java.awt.event.FocusEvent evt) {
+                idFieldFocusLost(evt);
+            }
+        });
+
         movieLabel.setText("動画");
 
         useMovieLocalCheckBox.setText("local");
@@ -266,6 +273,24 @@ public class MainFrame extends javax.swing.JFrame {
         pack();
     }// </editor-fold>//GEN-END:initComponents
 
+    private File searchFileMatchId(final File dir, final String id) throws UnsupportedOperationException {
+        final File[] lists = dir.listFiles(new FilenameFilter() {
+
+            @Override
+            public boolean accept(File dir, String name) {
+                return name.contains(id);
+            }
+        });
+
+        if (lists.length == 1) {
+            return lists[0];
+        } else if (lists.length > 1) {
+            throw new UnsupportedOperationException();
+        } else {
+            return null;
+        }
+    }
+
 private void useMovieLocalCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_useMovieLocalCheckBoxItemStateChanged
     final boolean useLocal = (evt.getStateChange() == ItemEvent.SELECTED);
     movieFileSelectButton.setEnabled(useLocal);
@@ -282,6 +307,31 @@ private void outputConvertCheckBoxItemStateChanged(java.awt.event.ItemEvent evt)
     outputFileSelectButton.setEnabled(convert);
 }//GEN-LAST:event_outputConvertCheckBoxItemStateChanged
 
+private void idFieldFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_idFieldFocusLost
+    final Properties p = Properties.INSTANCE;
+    final String id = idField.getText();
+    if (id.isEmpty()) {
+        return;
+    }
+
+    if (useMovieLocalCheckBox.isSelected() && movieFileField.getText().isEmpty()) {
+        final File dir = p.getMovieDirectory();
+        final File file = searchFileMatchId(dir, id);
+        if (file != null) {
+            movieFileField.setText(file.getPath());
+        }
+    }
+
+    if (useCommentLocalCheckBox.isSelected() && commentFileField.getText().isEmpty()) {
+        final File dir = p.getCommentDirectory();
+        final File file = searchFileMatchId(dir, id);
+        if (file != null) {
+            commentFileField.setText(file.getPath());
+        }
+    }
+
+}//GEN-LAST:event_idFieldFocusLost
+
     /**
      * @param args the command line arguments
      */