/* Copyright (C) 2003-2011 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; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.File; import javax.swing.JFileChooser; import javax.swing.JList; import javax.swing.plaf.ComponentUI; import javax.swing.plaf.basic.BasicFileChooserUI; import javax.swing.plaf.metal.MetalFileChooserUI; //====================================================================== // this class is a work around for the problem with regular filechooser: // single clicking will no longer put into edit mode //====================================================================== public class JabRefFileChooser extends JFileChooser { public JabRefFileChooser() { super(); } public JabRefFileChooser(File file){ super(file); } /*public int showOpenDialog(Component parent) throws HeadlessException { if (lastSize != null) { setSize(lastSize); System.out.println("Setting size: "+lastSize); } int answer = super.showOpenDialog(parent); lastSize = getSize(); return answer; }*/ /*public int showSaveDialog(Component parent) throws HeadlessException { if (lastSize != null) { setSize(lastSize); System.out.println("Setting size: "+lastSize); } int answer = super.showSaveDialog(parent); lastSize = getSize(); return answer; }*/ //======================================================== // //======================================================== protected void setUI(ComponentUI newUI) { if (Globals.osName.equals(Globals.MAC)) super.setUI(newUI); else super.setUI(new JabRefUI(this)); } //======================================================== // //======================================================== public static void main(String[] args) { JabRefFileChooser fc = new JabRefFileChooser(); int returnVal = fc.showOpenDialog(null); if (returnVal == JFileChooser.APPROVE_OPTION) { fc.getSelectedFile(); } } } class JabRefUI extends MetalFileChooserUI { public JabRefUI(JFileChooser filechooser) { super(filechooser); } protected class DoubleClickListener extends BasicFileChooserUI.DoubleClickListener { JList list; public DoubleClickListener(JList list) { super(list); this.list = list; } public void mouseEntered(MouseEvent e) { //System.out.println("mouse entered"); MouseListener [] l = list.getMouseListeners(); for (int i = 0; i < l.length; i++) { if (l[i] instanceof MetalFileChooserUI.SingleClickListener) { list.removeMouseListener(l[i]); } } super.mouseEntered(e); } } protected MouseListener createDoubleClickListener(JFileChooser fc, JList list) { return new DoubleClickListener(list); } }