OSDN Git Service

重複コード削除
authoryukihane <yukihane.feather@gmail.com>
Wed, 17 Aug 2011 06:13:38 +0000 (15:13 +0900)
committeryukihane <yukihane.feather@gmail.com>
Wed, 17 Aug 2011 06:13:38 +0000 (15:13 +0900)
frontend/src/yukihane/inqubus/conifg/Properties.java
frontend/src/yukihane/inqubus/gui/MainFrame.java

index 42dbcb6..cdcd408 100644 (file)
@@ -201,4 +201,9 @@ public enum Properties {
         // TODO
         return new File("out/_converted");
     }
+
+    public String getFileNamePattern() {
+        // TODO
+        return "[{id}]{title}";
+    }
 }
index 5420b33..f801bc8 100644 (file)
@@ -5,6 +5,7 @@
  */
 package yukihane.inqubus.gui;
 
+import java.awt.ItemSelectable;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.Transferable;
 import java.awt.event.ItemEvent;
@@ -14,6 +15,8 @@ import java.util.Collection;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import javax.swing.JButton;
+import javax.swing.JTextField;
 import javax.swing.TransferHandler;
 import javax.swing.UIManager;
 import javax.swing.UIManager.LookAndFeelInfo;
@@ -274,11 +277,18 @@ public class MainFrame extends javax.swing.JFrame {
     }// </editor-fold>//GEN-END:initComponents
 
     private File searchFileMatchId(final File dir, final String id) throws UnsupportedOperationException {
+        // TODO 候補は複数返すようにして、その後の対処は呼び出しもとで行ってもらった方が良いかも
+        if (id.isEmpty()) {
+            return null;
+        }
+
         final File[] lists = dir.listFiles(new FilenameFilter() {
 
+            final Pattern pattern = Pattern.compile(id + "\\D");
+
             @Override
             public boolean accept(File dir, String name) {
-                return name.contains(id);
+                return pattern.matcher(name).matches();
             }
         });
 
@@ -292,13 +302,57 @@ public class MainFrame extends javax.swing.JFrame {
     }
 
 private void useMovieLocalCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_useMovieLocalCheckBoxItemStateChanged
+    final Properties p = Properties.INSTANCE;
+
+    final ItemSelectable source = evt.getItemSelectable();
+
+    JButton btn;
+    JTextField field;
+    File dir;
+    if (source == useMovieLocalCheckBox) {
+        btn = movieFileSelectButton;
+        field = movieFileField;
+        dir = p.getMovieDirectory();
+    } else{
+        btn = commentFileSelectButton;
+        field = commentFileField;
+        dir = p.getCommentDirectory();
+    }
+
     final boolean useLocal = (evt.getStateChange() == ItemEvent.SELECTED);
-    movieFileSelectButton.setEnabled(useLocal);
+    btn.setEnabled(useLocal);
+
+    String text;
+    if (useLocal) {
+        final File f = searchFileMatchId(dir, idField.getText());
+        if (f != null) {
+            text = f.getPath();
+        } else {
+            text = "";
+        }
+    } else {
+        text = p.getFileNamePattern();
+    }
+    field.setText(text);
 }//GEN-LAST:event_useMovieLocalCheckBoxItemStateChanged
 
 private void useCommentLocalCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_useCommentLocalCheckBoxItemStateChanged
     final boolean useLocal = (evt.getStateChange() == ItemEvent.SELECTED);
     commentFileSelectButton.setEnabled(useLocal);
+
+    final Properties p = Properties.INSTANCE;
+    String text;
+    if (useLocal) {
+        final File f = searchFileMatchId(p.getCommentDirectory(), idField.getText());
+        if (f != null) {
+            text = f.getPath();
+        } else {
+            text = "";
+        }
+    } else {
+        text = p.getFileNamePattern();
+    }
+    commentFileField.setText(text);
 }//GEN-LAST:event_useCommentLocalCheckBoxItemStateChanged
 
 private void outputConvertCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_outputConvertCheckBoxItemStateChanged