/* Copyright (C) 2003-2012 JabRef contributors. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package net.sf.jabref.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import javax.swing.AbstractAction; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; import net.sf.jabref.GUIGlobals; import net.sf.jabref.Globals; import net.sf.jabref.JabRefFrame; /** * Adds popup functionality to DragDropPane * * Code inspired by http://forums.devx.com/showthread.php?t=151270 */ public class DragDropPopupPane extends DragDropPane { private JPopupMenu popupMenu = null; public DragDropPopupPane(AbstractAction manageSelectorsAction, AbstractAction databasePropertiesAction, AbstractAction bibtexKeyPatternAction) { super(); addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { tabClicked(e); } }); initPopupMenu(manageSelectorsAction, databasePropertiesAction, bibtexKeyPatternAction); } private void initPopupMenu(AbstractAction manageSelectorsAction, AbstractAction databasePropertiesAction, AbstractAction bibtexKeyPatternAction) { popupMenu = new JPopupMenu(); JMenuItem databasePropertiesBtn = new JMenuItem(Globals.lang("Database properties")); databasePropertiesBtn.addActionListener(databasePropertiesAction); popupMenu.add(databasePropertiesBtn); JMenuItem bibtexKeyPatternBtn = new JMenuItem(Globals.lang("Bibtex key patterns")); bibtexKeyPatternBtn.addActionListener(bibtexKeyPatternAction); popupMenu.add(bibtexKeyPatternBtn); JMenuItem manageSelectorsBtn = new JMenuItem(Globals.lang("Manage content selectors")); manageSelectorsBtn.addActionListener(manageSelectorsAction); popupMenu.add(manageSelectorsBtn); JMenuItem closeBtn = new JMenuItem(Globals.lang("Close"), GUIGlobals.getImage("close")); closeBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { closeSelectedTab(); } }); } }); popupMenu.add(closeBtn); } private void tabClicked(MouseEvent e) { if (e.getButton() != MouseEvent.BUTTON1 && e.getClickCount() == 1) { // if is right-click // display popup near location of mouse click popupMenu.show(e.getComponent(), e.getX(), e.getY() - 10); } } private void closeSelectedTab() { // remove selected tab remove( getSelectedIndex() ); } }