X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FJalviewFileChooser.java;h=951b998fd596f30c2ddc83a5e2e1bade5eaa1575;hb=17e77c3f2949a0729322b4a8d907f3f34b6a9914;hp=6e15b90bd0529a4cd5d916d59d6ce111cd0f5a66;hpb=f2e4454160c7b5e36f2a29d3dea6d4a1450bc938;p=jalview.git diff --git a/src/jalview/io/JalviewFileChooser.java b/src/jalview/io/JalviewFileChooser.java index 6e15b90..951b998 100755 --- a/src/jalview/io/JalviewFileChooser.java +++ b/src/jalview/io/JalviewFileChooser.java @@ -1,38 +1,55 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle - * + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 The Jalview Authors + * * 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 3 of the License, or (at your option) any later version. - * - * 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 + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * 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 Jalview. If not, see . + * + * You should have received a copy of the GNU General Public License + * 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 java.awt.*; -import java.awt.event.*; -import javax.swing.*; +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; /** * Enhanced file chooser dialog box. - * + * * NOTE: bug on Windows systems when filechooser opened on directory to view * files with colons in title. - * + * * @author AMW - * + * */ public class JalviewFileChooser extends JFileChooser { @@ -80,7 +97,7 @@ public class JalviewFileChooser extends JFileChooser // 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]); @@ -99,6 +116,7 @@ public class JalviewFileChooser extends JFileChooser setAccessory(new RecentlyOpened()); } + @Override public void setFileFilter(javax.swing.filechooser.FileFilter filter) { super.setFileFilter(filter); @@ -117,6 +135,7 @@ public class JalviewFileChooser extends JFileChooser EventQueue.invokeLater(new Thread() { + @Override public void run() { String currentName = ui.getFileName(); @@ -171,17 +190,22 @@ public class JalviewFileChooser extends JFileChooser { format = "PFAM"; } + else if (format.toUpperCase().startsWith(PhylipFile.FILE_DESC)) + { + format = PhylipFile.FILE_DESC; + } return format; } + @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,7 +224,8 @@ public class JalviewFileChooser extends JFileChooser && getSelectedFile().exists()) { int confirm = JOptionPane.showConfirmDialog(parent, - "Overwrite existing file?", "File exists", + MessageManager.getString("label.overwrite_existing_file"), + MessageManager.getString("label.file_already_exists"), JOptionPane.YES_NO_OPTION); if (confirm != JOptionPane.YES_OPTION) @@ -212,22 +237,24 @@ public class JalviewFileChooser extends JFileChooser 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 @@ -236,6 +263,7 @@ public class JalviewFileChooser extends JFileChooser public RecentlyOpened() { + String historyItems = jalview.bin.Cache.getProperty("RECENT_FILE"); StringTokenizer st; Vector recent = new Vector(); @@ -258,20 +286,38 @@ public class JalviewFileChooser extends JFileChooser 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(