X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileChooser.java;h=1ea67954727dfc8390fe9879155bd43d567ec7af;hb=5c6b5740b5bc6ac8e89dc04fe0a3542ee76cc22e;hp=465b8a35e2bc9f20f5e359763cb86a4dadd4f6e9;hpb=074acdd5c0e25eec1daf0f4bbac4eef41da6971e;p=jalview.git diff --git a/src/jalview/io/JalviewFileChooser.java b/src/jalview/io/JalviewFileChooser.java index 465b8a3..1ea6795 100755 --- a/src/jalview/io/JalviewFileChooser.java +++ b/src/jalview/io/JalviewFileChooser.java @@ -1,41 +1,57 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * - * This program is free software; you can redistribute it and/or + * This file is part of Jalview. + * + * Jalview 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 + * as published by the Free Software Foundation, either version 3 * 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. + * Jalview 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 + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ - ////////////////////////////////////////////////////////////////// package jalview.io; -import java.io.*; -import java.util.*; +import jalview.util.MessageManager; +import jalview.util.Platform; + +import java.awt.Component; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.HeadlessException; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.io.File; +import java.util.StringTokenizer; +import java.util.Vector; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JFileChooser; +import javax.swing.JList; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.SpringLayout; -import java.awt.*; -import java.awt.event.*; -import javax.swing.*; /** * Enhanced file chooser dialog box. - * - * NOTE: bug on Windows systems when filechooser opened on directory to view files with colons in title. - * + * + * NOTE: bug on Windows systems when filechooser opened on directory to view + * files with colons in title. + * * @author AMW * */ -public class JalviewFileChooser - extends JFileChooser +public class JalviewFileChooser extends JFileChooser { public JalviewFileChooser(String dir) { @@ -45,55 +61,48 @@ public class JalviewFileChooser private static File safePath(String dir) { - if (dir==null) - { return null; + if (dir == null) + { + return null; } - + File f = new File(dir); - if (f.getName().indexOf(':')>-1) + if (f.getName().indexOf(':') > -1) { return null; } return f; } - public JalviewFileChooser(String dir, - String[] suffix, - String[] desc, - String selected, - boolean selectAll) + public JalviewFileChooser(String dir, String[] suffix, String[] desc, + String selected, boolean selectAll) { super(safePath(dir)); init(suffix, desc, selected, selectAll); } - public JalviewFileChooser(String dir, - String[] suffix, - String[] desc, - String selected) + public JalviewFileChooser(String dir, String[] suffix, String[] desc, + String selected) { super(safePath(dir)); init(suffix, desc, selected, true); } - void init(String[] suffix, - String[] desc, - String selected, - boolean selectAll) + void init(String[] suffix, String[] desc, String selected, + boolean selectAll) { JalviewFileFilter chosen = null; - //SelectAllFilter needs to be set first before adding further - //file filters to fix bug on Mac OSX + // SelectAllFilter needs to be set first before adding further + // file filters to fix bug on Mac OSX setAcceptAllFileFilterUsed(selectAll); for (int i = 0; i < suffix.length; i++) { JalviewFileFilter jvf = new JalviewFileFilter(suffix[i], desc[i]); addChoosableFileFilter(jvf); - - if ( (selected != null) && selected.equalsIgnoreCase(desc[i])) + if ((selected != null) && selected.equalsIgnoreCase(desc[i])) { chosen = jvf; } @@ -107,6 +116,7 @@ public class JalviewFileChooser setAccessory(new RecentlyOpened()); } + @Override public void setFileFilter(javax.swing.filechooser.FileFilter filter) { super.setFileFilter(filter); @@ -115,29 +125,28 @@ public class JalviewFileChooser { if (getUI() instanceof javax.swing.plaf.basic.BasicFileChooserUI) { - final javax.swing.plaf.basic.BasicFileChooserUI ui = (javax.swing.plaf. - basic.BasicFileChooserUI) getUI(); + final javax.swing.plaf.basic.BasicFileChooserUI ui = (javax.swing.plaf.basic.BasicFileChooserUI) getUI(); final String name = ui.getFileName().trim(); - if ( (name == null) || (name.length() == 0)) + if ((name == null) || (name.length() == 0)) { return; } EventQueue.invokeLater(new Thread() { + @Override public void run() { String currentName = ui.getFileName(); - if ( (currentName == null) || (currentName.length() == 0)) + if ((currentName == null) || (currentName.length() == 0)) { ui.setFileName(name); } } }); } - } - catch (Exception ex) + } catch (Exception ex) { ex.printStackTrace(); // Some platforms do not have BasicFileChooserUI @@ -181,18 +190,22 @@ public class JalviewFileChooser { format = "PFAM"; } + else if (format.toUpperCase().startsWith(PhylipFile.FILE_DESC)) + { + format = PhylipFile.FILE_DESC; + } return format; } - public int showSaveDialog(Component parent) - throws HeadlessException + @Override + public int showSaveDialog(Component parent) throws HeadlessException { this.setAccessory(null); setDialogType(SAVE_DIALOG); - int ret = showDialog(parent, "Save"); + int ret = showDialog(parent, MessageManager.getString("action.save")); if (getFileFilter() instanceof JalviewFileFilter) { @@ -200,19 +213,20 @@ public class JalviewFileChooser if (!jvf.accept(getSelectedFile())) { - String withExtension = getSelectedFile() + "." + - jvf.getAcceptableExtension(); + String withExtension = getSelectedFile() + "." + + jvf.getAcceptableExtension(); setSelectedFile(new File(withExtension)); } } - // TODO: ENSURE THAT FILES SAVED WITH A ':' IN THE NAME ARE REFUSED AND THE USER PROMPTED FOR A NEW FILENAME - if ( (ret == JalviewFileChooser.APPROVE_OPTION) && - getSelectedFile().exists()) + // TODO: ENSURE THAT FILES SAVED WITH A ':' IN THE NAME ARE REFUSED AND THE + // USER PROMPTED FOR A NEW FILENAME + if ((ret == JalviewFileChooser.APPROVE_OPTION) + && getSelectedFile().exists()) { int confirm = JOptionPane.showConfirmDialog(parent, - "Overwrite existing file?", - "File exists", - JOptionPane.YES_NO_OPTION); + MessageManager.getString("label.overwrite_existing_file"), + MessageManager.getString("label.file_already_exists"), + JOptionPane.YES_NO_OPTION); if (confirm != JOptionPane.YES_OPTION) { @@ -223,30 +237,33 @@ public class JalviewFileChooser return ret; } - void recentListSelectionChanged(String selection) + void recentListSelectionChanged(Object selection) { setSelectedFile(null); - - File file = new File(selection); - if (getFileFilter() instanceof JalviewFileFilter) + if (selection != null) { - JalviewFileFilter jvf = (JalviewFileFilter)this.getFileFilter(); - - if (!jvf.accept(file)) + File file = new File((String) selection); + if (getFileFilter() instanceof JalviewFileFilter) { - setFileFilter(getChoosableFileFilters()[0]); + JalviewFileFilter jvf = (JalviewFileFilter) this.getFileFilter(); + + if (!jvf.accept(file)) + { + setFileFilter(getChoosableFileFilters()[0]); + } } - } - setSelectedFile(file); + setSelectedFile(file); + } } - class RecentlyOpened - extends JPanel + class RecentlyOpened extends JPanel { JList list; + public RecentlyOpened() { + String historyItems = jalview.bin.Cache.getProperty("RECENT_FILE"); StringTokenizer st; Vector recent = new Vector(); @@ -269,24 +286,42 @@ public class JalviewFileChooser list.addMouseListener(new MouseAdapter() { + @Override public void mousePressed(MouseEvent evt) { - recentListSelectionChanged(list.getSelectedValue().toString()); + recentListSelectionChanged(list.getSelectedValue()); } }); - this.setBorder(new javax.swing.border.TitledBorder("Recently Opened")); + this.setBorder(new javax.swing.border.TitledBorder(MessageManager + .getString("label.recently_opened"))); final JScrollPane scroller = new JScrollPane(list); - scroller.setPreferredSize(new Dimension(130, 200)); + + SpringLayout layout = new SpringLayout(); + layout.putConstraint(SpringLayout.WEST, scroller, 5, + SpringLayout.WEST, this); + layout.putConstraint(SpringLayout.NORTH, scroller, 5, + SpringLayout.NORTH, this); + + if (new Platform().isAMac()) + { + scroller.setPreferredSize(new Dimension(500, 100)); + } + else + { + scroller.setPreferredSize(new Dimension(130, 200)); + } + this.add(scroller); javax.swing.SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { scroller.getHorizontalScrollBar().setValue( - scroller.getHorizontalScrollBar().getMaximum()); + scroller.getHorizontalScrollBar().getMaximum()); } });