From d26d031ab2cf138a58ef0844d28f483c9877daaf Mon Sep 17 00:00:00 2001 From: Chrriis Date: Sun, 18 Mar 2012 16:50:47 +0000 Subject: [PATCH] [#1177] Add SQL Console module to jOOQ - popup menu created in RSyntaxTextArea expected place. --- .../org/jooq/debug/console/SqlTextArea.java | 105 ++++++++---------- 1 file changed, 47 insertions(+), 58 deletions(-) diff --git a/jOOQ-console/src/main/java/org/jooq/debug/console/SqlTextArea.java b/jOOQ-console/src/main/java/org/jooq/debug/console/SqlTextArea.java index 8933ad06d1..b8b9820bcb 100644 --- a/jOOQ-console/src/main/java/org/jooq/debug/console/SqlTextArea.java +++ b/jOOQ-console/src/main/java/org/jooq/debug/console/SqlTextArea.java @@ -45,8 +45,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; @@ -107,65 +105,56 @@ public class SqlTextArea extends RSyntaxTextArea { } } }); - addMouseListener(new MouseAdapter() { + } + + @Override + public JPopupMenu getPopupMenu() { + boolean isEditable = isEditable(); + JPopupMenu popupMenu = new JPopupMenu(); + final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); + JMenuItem copyClipboardMenuItem = new JMenuItem("Copy"); + copyClipboardMenuItem.setEnabled(getSelectionStart() < getSelectionEnd()); + copyClipboardMenuItem.addActionListener(new ActionListener() { @Override - public void mousePressed(MouseEvent e) { - maybeShowPopup(e); - } - @Override - public void mouseReleased(MouseEvent e) { - maybeShowPopup(e); - } - private void maybeShowPopup(MouseEvent e) { - if(e.isPopupTrigger()) { - boolean isEditable = isEditable(); - JPopupMenu popupMenu = new JPopupMenu(); - final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); - JMenuItem copyClipboardMenuItem = new JMenuItem("Copy"); - copyClipboardMenuItem.setEnabled(getSelectionStart() < getSelectionEnd()); - copyClipboardMenuItem.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - copyAsRtf(); - } - }); - popupMenu.add(copyClipboardMenuItem); - JMenuItem pasteClipboardMenuItem = new JMenuItem("Paste"); - pasteClipboardMenuItem.setEnabled(false); - if(isEditable && clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)) { - try { - final String data = (String)clipboard.getData(DataFlavor.stringFlavor); - if(data != null && data.length() > 0) { - pasteClipboardMenuItem.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - replaceSelection(data); - } - }); - pasteClipboardMenuItem.setEnabled(true); - } - } catch (Exception ex) { - ex.printStackTrace(); - } - } - popupMenu.add(pasteClipboardMenuItem); - popupMenu.addSeparator(); - JMenuItem formatMenuItem = new JMenuItem("Format"); - formatMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK)); - formatMenuItem.setEnabled(isEditable && getSelectionStart() < getSelectionEnd()); - formatMenuItem.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - formatSelection(); - } - }); - popupMenu.add(formatMenuItem); - if(popupMenu.getComponentCount() > 0) { - popupMenu.show(SqlTextArea.this, e.getX(), e.getY()); - } - } + public void actionPerformed(ActionEvent e) { + copyAsRtf(); } }); + popupMenu.add(copyClipboardMenuItem); + JMenuItem pasteClipboardMenuItem = new JMenuItem("Paste"); + pasteClipboardMenuItem.setEnabled(false); + if(isEditable && clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)) { + try { + final String data = (String)clipboard.getData(DataFlavor.stringFlavor); + if(data != null && data.length() > 0) { + pasteClipboardMenuItem.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + replaceSelection(data); + } + }); + pasteClipboardMenuItem.setEnabled(true); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } + popupMenu.add(pasteClipboardMenuItem); + popupMenu.addSeparator(); + JMenuItem formatMenuItem = new JMenuItem("Format"); + formatMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK | KeyEvent.SHIFT_MASK)); + formatMenuItem.setEnabled(isEditable && getSelectionStart() < getSelectionEnd()); + formatMenuItem.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + formatSelection(); + } + }); + popupMenu.add(formatMenuItem); + if(popupMenu.getComponentCount() > 0) { + return popupMenu; + } + return null; } private void formatSelection() {