*/
package yukihane.inqubus.gui;
+import java.awt.ItemSelectable;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.event.ItemEvent;
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;
}// </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();
}
});
}
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