OSDN Git Service

ビデオIDのオートコンプリートを実現するためのアダプタ
authoryukihane <yukihane.feather@gmail.com>
Fri, 2 Sep 2011 04:03:15 +0000 (13:03 +0900)
committeryukihane <yukihane.feather@gmail.com>
Fri, 9 Sep 2011 11:39:07 +0000 (20:39 +0900)
frontend/src/yukihane/inqubus/gui/AutoCompleteAdapter.java [new file with mode: 0644]

diff --git a/frontend/src/yukihane/inqubus/gui/AutoCompleteAdapter.java b/frontend/src/yukihane/inqubus/gui/AutoCompleteAdapter.java
new file mode 100644 (file)
index 0000000..2065b44
--- /dev/null
@@ -0,0 +1,45 @@
+package yukihane.inqubus.gui;
+
+import java.awt.EventQueue;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.nio.file.Path;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.SortedSet;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.JTextField;
+import yukihane.inqubus.filewatch.FileWatchUtil;
+
+class AutoCompleteAdapter extends KeyAdapter {
+
+    private final JComboBox<String> component;
+    private final Set<Path> alternates = new HashSet<>();
+
+    AutoCompleteAdapter(JComboBox<String> component) {
+        this.component = component;
+    }
+
+    void setAlternates(Collection<Path> alternates) {
+        this.alternates.clear();
+        this.alternates.addAll(alternates);
+    }
+
+    @Override
+    public void keyTyped(final KeyEvent e) {
+        EventQueue.invokeLater(new Runnable() {
+
+            @Override
+            public void run() {
+                final String text = ((JTextField) e.getSource()).getText();
+                final SortedSet<String> alt = FileWatchUtil.contain(alternates, text);
+                final String[] altArray = alt.toArray(new String[0]);
+                DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>(altArray);
+                component.setModel(model);
+                component.showPopup();
+            }
+        });
+    }
+}