/** * Constructor. * * @param parent The parent window containing <code>textArea</code>. * @param textArea The text area to paste into. */ ClipboardHistoryPopup(Window parent, RTextArea textArea) { super(parent); this.textArea = textArea; JPanel cp = new JPanel(new BorderLayout()); cp.setBorder(BorderFactory.createCompoundBorder( org.fife.ui.rsyntaxtextarea.focusabletip.TipUtil.getToolTipBorder(), BorderFactory.createEmptyBorder(2, 5, 5, 5))); cp.setBackground(org.fife.ui.rsyntaxtextarea.focusabletip.TipUtil.getToolTipBackground()); setContentPane(cp); ResourceBundle msg = ResourceBundle.getBundle(MSG); JLabel title = new JLabel( msg.getString("Action.ClipboardHistory.Popup.Label")); cp.add(title, BorderLayout.NORTH); list = new ChoiceList(); JScrollPane sp = new JScrollPane(list); sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); cp.add(sp); installKeyBindings(); listener = new Listener(); setLocation(); }
Listener() { addWindowFocusListener(this); list.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount()==2) { insertSelectedItem(); } } }); list.getInputMap().put( KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "onEnter"); list.getActionMap().put("onEnter", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { insertSelectedItem(); } }); // If anything happens to the "parent" window, hide this popup Window parent = (Window)getParent(); parent.addWindowFocusListener(this); parent.addWindowListener(this); parent.addComponentListener(this); }
@Override public void actionPerformed(ActionEvent e) { int index = (getSelectedIndex()+1) % getModel().getSize(); ensureIndexIsVisible(index); setSelectedIndex(index); } });
/** * Constructor. * * @param parent The parent window containing <code>textArea</code>. * @param textArea The text area to paste into. */ ClipboardHistoryPopup(Window parent, RTextArea textArea) { super(parent); this.textArea = textArea; JPanel cp = new JPanel(new BorderLayout()); cp.setBorder(BorderFactory.createCompoundBorder( org.fife.ui.rsyntaxtextarea.focusabletip.TipUtil.getToolTipBorder(), BorderFactory.createEmptyBorder(2, 5, 5, 5))); cp.setBackground(org.fife.ui.rsyntaxtextarea.focusabletip.TipUtil.getToolTipBackground()); setContentPane(cp); ResourceBundle msg = ResourceBundle.getBundle(MSG); JLabel title = new JLabel( msg.getString("Action.ClipboardHistory.Popup.Label")); cp.add(title, BorderLayout.NORTH); list = new ChoiceList(); JScrollPane sp = new JScrollPane(list); sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); cp.add(sp); installKeyBindings(); listener = new Listener(); setLocation(); }
Listener() { addWindowFocusListener(this); list.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount()==2) { insertSelectedItem(); } } }); list.getInputMap().put( KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "onEnter"); list.getActionMap().put("onEnter", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { insertSelectedItem(); } }); // If anything happens to the "parent" window, hide this popup Window parent = (Window)getParent(); parent.addWindowFocusListener(this); parent.addWindowListener(this); parent.addComponentListener(this); }
private void installKeyboardActions() { InputMap im = getInputMap(); ActionMap am = getActionMap(); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), "onDown"); am.put("onDown", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { int index = (getSelectedIndex()+1) % getModel().getSize(); ensureIndexIsVisible(index); setSelectedIndex(index); } }); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), "onUp"); am.put("onUp", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { int index = getSelectedIndex() - 1; if (index < 0) { index += getModel().getSize(); } ensureIndexIsVisible(index); setSelectedIndex(index); } }); }
@Override public void setVisible(boolean visible) { if (list.getModel().getSize()==0) { UIManager.getLookAndFeel().provideErrorFeedback(textArea); return; } super.setVisible(visible); updateTextAreaCaret(visible); if (visible) { SwingUtilities.invokeLater(() -> { requestFocus(); if (list.getModel().getSize()>0) { list.setSelectedIndex(0); } list.requestFocusInWindow(); }); } }
/** * Inserts the selected item into the editor and disposes of this popup. */ private void insertSelectedItem() { Object lvp = list.getSelectedValue(); if (lvp!=null) { listener.uninstallAndHide(); String text = ((LabelValuePair)lvp).value; textArea.replaceSelection(text); ClipboardHistory.get().add(text); // Move this item to the top } }
@Override public void actionPerformed(ActionEvent e) { int index = getSelectedIndex() - 1; if (index < 0) { index += getModel().getSize(); } ensureIndexIsVisible(index); setSelectedIndex(index); } });
private void setContents(List<String> contents) { DefaultListModel<LabelValuePair> model = (DefaultListModel<LabelValuePair>)getModel(); model.clear(); for (String str : contents) { model.addElement(new LabelValuePair(str)); } setVisibleRowCount(Math.min(model.getSize(), 8)); }
/** * Adds key bindings to this popup. */ private void installKeyBindings() { InputMap im = getRootPane().getInputMap( JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); ActionMap am = getRootPane().getActionMap(); KeyStroke escapeKS = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); im.put(escapeKS, "onEscape"); am.put("onEscape", new EscapeAction()); list.getInputMap().remove(escapeKS); }
@Override public void actionPerformed(ActionEvent e) { int index = (getSelectedIndex()+1) % getModel().getSize(); ensureIndexIsVisible(index); setSelectedIndex(index); } });
private ChoiceList() { super(new DefaultListModel<>()); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); installKeyboardActions(); }
private void installKeyboardActions() { InputMap im = getInputMap(); ActionMap am = getActionMap(); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), "onDown"); am.put("onDown", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { int index = (getSelectedIndex()+1) % getModel().getSize(); ensureIndexIsVisible(index); setSelectedIndex(index); } }); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), "onUp"); am.put("onUp", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { int index = getSelectedIndex() - 1; if (index < 0) { index += getModel().getSize(); } ensureIndexIsVisible(index); setSelectedIndex(index); } }); }
@Override public void setVisible(boolean visible) { if (list.getModel().getSize()==0) { UIManager.getLookAndFeel().provideErrorFeedback(textArea); return; } super.setVisible(visible); updateTextAreaCaret(visible); if (visible) { SwingUtilities.invokeLater(() -> { requestFocus(); if (list.getModel().getSize()>0) { list.setSelectedIndex(0); } list.requestFocusInWindow(); }); } }
private void setContents(List<String> contents) { DefaultListModel<LabelValuePair> model = (DefaultListModel<LabelValuePair>)getModel(); model.clear(); for (String str : contents) { model.addElement(new LabelValuePair(str)); } setVisibleRowCount(Math.min(model.getSize(), 8)); }
/** * Inserts the selected item into the editor and disposes of this popup. */ private void insertSelectedItem() { Object lvp = list.getSelectedValue(); if (lvp!=null) { listener.uninstallAndHide(); String text = ((LabelValuePair)lvp).value; textArea.replaceSelection(text); ClipboardHistory.get().add(text); // Move this item to the top } }
/** * Adds key bindings to this popup. */ private void installKeyBindings() { InputMap im = getRootPane().getInputMap( JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); ActionMap am = getRootPane().getActionMap(); KeyStroke escapeKS = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); im.put(escapeKS, "onEscape"); am.put("onEscape", new EscapeAction()); list.getInputMap().remove(escapeKS); }
@Override public void actionPerformed(ActionEvent e) { int index = getSelectedIndex() - 1; if (index < 0) { index += getModel().getSize(); } ensureIndexIsVisible(index); setSelectedIndex(index); } });
private ChoiceList() { super(new DefaultListModel<>()); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); installKeyboardActions(); }