From: yukihane Date: Fri, 2 Sep 2011 04:03:15 +0000 (+0900) Subject: ビデオIDのオートコンプリートを実現するためのアダプタ X-Git-Tag: rel20110916_ver2.b.0~1^2~117 X-Git-Url: http://git.sourceforge.jp/view?p=coroid%2Finqubus.git;a=commitdiff_plain;h=50b9fc85a925611c9cdcb729586261925739f4bc ビデオIDのオートコンプリートを実現するためのアダプタ --- diff --git a/frontend/src/yukihane/inqubus/gui/AutoCompleteAdapter.java b/frontend/src/yukihane/inqubus/gui/AutoCompleteAdapter.java new file mode 100644 index 0000000..2065b44 --- /dev/null +++ b/frontend/src/yukihane/inqubus/gui/AutoCompleteAdapter.java @@ -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 component; + private final Set alternates = new HashSet<>(); + + AutoCompleteAdapter(JComboBox component) { + this.component = component; + } + + void setAlternates(Collection 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 alt = FileWatchUtil.contain(alternates, text); + final String[] altArray = alt.toArray(new String[0]); + DefaultComboBoxModel model = new DefaultComboBoxModel<>(altArray); + component.setModel(model); + component.showPopup(); + } + }); + } +}