public void createPopupMenu() { menu = new JPopupMenu(); for (int i = filenames.size() - 2, j = 0; i >= 0; i--, j++) { menu.add((String) filenames.elementAt(i)); JMenuItem mi = (JMenuItem) menu.getComponent(j); mi.setFont(new Font("Arial", Font.PLAIN, 11)); mi.addActionListener(this); } menu.pack(); // setPopupLocation(200, 200); }
/** Code completion. */ private void complete() { if (selected()) return; // find first character final int caret = editor.pos(), startPos = editor.completionStart(); final String prefix = string(substring(editor.text(), startPos, caret)); if (prefix.isEmpty()) return; // find insertion candidates final TreeMap<String, String> tmp = new TreeMap<>(); for (final Entry<String, String> entry : REPLACE.entrySet()) { final String key = entry.getKey(); if (key.startsWith(prefix)) tmp.put(key, entry.getValue()); } if (tmp.size() == 1) { // insert single candidate complete(tmp.values().iterator().next(), startPos); } else if (!tmp.isEmpty()) { // show popup menu final JPopupMenu pm = new JPopupMenu(); final ActionListener al = new ActionListener() { @Override public void actionPerformed(final ActionEvent ae) { complete(ae.getActionCommand().replaceAll("^.*?\\] ", ""), startPos); } }; for (final Entry<String, String> entry : tmp.entrySet()) { final JMenuItem mi = new JMenuItem("[" + entry.getKey() + "] " + entry.getValue()); pm.add(mi); mi.addActionListener(al); } pm.addSeparator(); final JMenuItem mi = new JMenuItem(Text.INPUT + Text.COLS + prefix); mi.setEnabled(false); pm.add(mi); final int[] cursor = rend.cursor(); pm.show(this, cursor[0], cursor[1]); // highlight first entry final MenuElement[] me = {pm, (JMenuItem) pm.getComponent(0)}; MenuSelectionManager.defaultManager().setSelectedPath(me); } }
/** * set text to the specified item index * * @param index index */ public void setText(int index) { JMenuItem item = (JMenuItem) popup.getComponent(index); setText(item.getText()); } // setText()
public void setEnabled(int index, boolean bEnabled) { JMenuItem item = (JMenuItem) popup.getComponent(index); if (item != null) item.setEnabled(bEnabled); }
/** set default text */ public void setDefaultText() { JMenuItem item = (JMenuItem) popup.getComponent(0); if (item != null) setText(item.getText()); } // setDefaultText()