@Override
public void reload_actionPerformed(ActionEvent e)
{
- System.out.println("AlignFrame.reload " + fileName);
- if (fileName != null)
- {
- // TODO: JAL-1108 - ensure all associated frames are closed regardless of
- // originating file's format
- // TODO: work out how to recover feature settings for correct view(s) when
- // file is reloaded.
- if (FileFormat.Jalview.equals(currentFileFormat))
+ if (fileName == null)
+ {
+ return;
+ }
+ // TODO: JAL-1108 - ensure all associated frames are closed regardless of
+ // originating file's format
+ // TODO: work out how to recover feature settings for correct view(s) when
+ // file is reloaded.
+ if (FileFormat.Jalview.equals(currentFileFormat))
+ {
+ JInternalFrame[] frames = Desktop.getDesktopPane().getAllFrames();
+ for (int i = 0; i < frames.length; i++)
{
- JInternalFrame[] frames = Desktop.getDesktopPane().getAllFrames();
- for (int i = 0; i < frames.length; i++)
+ if (frames[i] instanceof AlignFrame && frames[i] != this
+ && ((AlignFrame) frames[i]).fileName != null
+ && ((AlignFrame) frames[i]).fileName.equals(fileName))
{
- if (frames[i] instanceof AlignFrame && frames[i] != this
- && ((AlignFrame) frames[i]).fileName != null
- && ((AlignFrame) frames[i]).fileName.equals(fileName))
+ try
+ {
+ frames[i].setSelected(true);
+ Desktop.getInstance().closeAssociatedWindows();
+ } catch (java.beans.PropertyVetoException ex)
{
- try
- {
- frames[i].setSelected(true);
- Desktop.getInstance().closeAssociatedWindows();
- } catch (java.beans.PropertyVetoException ex)
- {
- }
}
-
}
- Desktop.getInstance().closeAssociatedWindows();
- FileLoader loader = new FileLoader();
- DataSourceType protocol = fileName.startsWith("http:")
- ? DataSourceType.URL
- : DataSourceType.FILE;
- loader.loadFile(viewport,
- (fileObject == null ? fileName : fileObject), protocol,
- currentFileFormat);
}
- else
- {
- Rectangle bounds = this.getBounds();
+ Desktop.getInstance().closeAssociatedWindows();
- FileLoader loader = new FileLoader();
+ FileLoader loader = new FileLoader();
+ DataSourceType protocol = fileName.startsWith("http:")
+ ? DataSourceType.URL
+ : DataSourceType.FILE;
+ loader.loadFile(viewport,
+ (fileObject == null ? fileName : fileObject), protocol,
+ currentFileFormat);
+ }
+ else
+ {
+ Rectangle bounds = this.getBounds();
- AlignFrame newframe = null;
+ FileLoader loader = new FileLoader();
- if (fileObject == null)
- {
+ AlignFrame newframe = null;
- DataSourceType protocol = (fileName.startsWith("http:")
- ? DataSourceType.URL
- : DataSourceType.FILE);
- newframe = loader.loadFileWaitTillLoaded(fileName, protocol,
- currentFileFormat);
- }
- else
- {
- newframe = loader.loadFileWaitTillLoaded(fileObject,
- DataSourceType.FILE, currentFileFormat);
- }
+ if (fileObject == null)
+ {
- newframe.setBounds(bounds);
- if (featureSettings != null && featureSettings.isShowing())
+ DataSourceType protocol = (fileName.startsWith("http:")
+ ? DataSourceType.URL
+ : DataSourceType.FILE);
+ newframe = loader.loadFileWaitTillLoaded(fileName, protocol,
+ currentFileFormat);
+ }
+ else
+ {
+ newframe = loader.loadFileWaitTillLoaded(fileObject,
+ DataSourceType.FILE, currentFileFormat);
+ }
+
+ newframe.setBounds(bounds);
+ if (featureSettings != null && featureSettings.isShowing())
+ {
+ final Rectangle fspos = featureSettings.frame.getBounds();
+ // TODO: need a 'show feature settings' function that takes bounds -
+ // need to refactor Desktop.addFrame
+ newframe.featureSettings_actionPerformed(null);
+ final FeatureSettings nfs = newframe.featureSettings;
+ SwingUtilities.invokeLater(new Runnable()
{
- final Rectangle fspos = featureSettings.frame.getBounds();
- // TODO: need a 'show feature settings' function that takes bounds -
- // need to refactor Desktop.addFrame
- newframe.featureSettings_actionPerformed(null);
- final FeatureSettings nfs = newframe.featureSettings;
- SwingUtilities.invokeLater(new Runnable()
+ @Override
+ public void run()
{
- @Override
- public void run()
- {
- nfs.frame.setBounds(fspos);
- }
- });
- this.featureSettings.close();
- this.featureSettings = null;
- }
- this.closeMenuItem_actionPerformed(true);
+ nfs.frame.setBounds(fspos);
+ }
+ });
+ this.featureSettings.close();
+ this.featureSettings = null;
}
+ this.closeMenuItem_actionPerformed(true);
}
}
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.util.StringTokenizer;
-import java.util.Vector;
+import java.util.ArrayList;
+import java.util.List;
import javax.swing.SwingUtilities;
public class FileLoader implements Runnable
{
+ private static final String DEFAULT_FILE_FORMAT_PROPERTY = "DEFAULT_FILE_FORMAT";
+
+ private static final String RECENT_URL_PROPERTY = "RECENT_URL";
+
+ private static final String RECENT_FILE_PROPERTY = "RECENT_FILE";
+
+ private static final String TAB = "\t";
+
+ /*
+ * maximum number of items in file/url history lists;
+ * pseudo-constant (not final) so amendable by Groovy if wanted
+ */
+ private static int MAX_HISTORY = 11;
+
private File selectedFile;
String file;
}
/**
- * Load a (file, protocol) source of unknown type
- *
- * @param file
- * @param protocol
- */
- public void LoadFile(String file, DataSourceType protocol)
- {
- loadFile(file, protocol, null);
- }
-
- /**
* Load alignment from (file, protocol) and wait till loaded
*
* @param file
/**
* Load alignment from (file, protocol) of type format and wait till loaded
*
- * @param file
+ * @param fileObject
* @param sourceType
* @param format
* @return alignFrame constructed from file contents
+ * @throws NullPointerException
+ * if {@code file} is null
*/
- public AlignFrame loadFileWaitTillLoaded(File file,
+ public AlignFrame loadFileWaitTillLoaded(File fileObject,
DataSourceType sourceType, FileFormatI format)
{
- setFileFields(null, file, null, sourceType, format);
+ setFileFields(null, fileObject, fileObject.getPath(), sourceType, format);
return _loadFileWaitTillLoaded();
}
/**
- * Load alignment from FileParse source of type format and wait till loaded
- *
- * @param source
- * @param format
- * @return alignFrame constructed from file contents
- */
- public AlignFrame loadFileWaitTillLoaded(AlignmentFileReaderI source,
- FileFormatI format)
- {
- setFileFields(source, null, source.getInFile(),
- source.getDataSourceType(), format);
- return _loadFileWaitTillLoaded();
- }
-
- /**
- * runs the 'run' method (in this thread), then return the alignFrame that's
- * (hopefully) been read
+ * Runs the 'run' method (in this thread), then returns the alignFrame that
+ * (hopefully) has been constructed
*
* @return
*/
return alignFrame;
}
+ /**
+ * Updates the Jalview properties file to add the last file or URL read to the
+ * tab-separated list in property RECENT_FILE or RECENT_URL respectively. The
+ * property is created if it does not already exist. The new entry is added as
+ * the first item (without duplication). If the list exceeds some maximum
+ * length (currently 10 entries), the oldest (last) entry is dropped.
+ * <p>
+ * Files read from the temporary file directory are not added to the property.
+ * <p>
+ * Property DEFAULT_FILE_FORMAT (e.g. "Fasta" etc) is also set if currently
+ * reading from file.
+ */
public void updateRecentlyOpened()
{
- Vector<String> recent = new Vector<>();
+ List<String> recent = new ArrayList<>();
if (protocol == DataSourceType.PASTE)
{
// do nothing if the file was pasted in as text... there is no filename to
// refer to it as.
return;
}
- if (file != null
- && file.indexOf(System.getProperty("java.io.tmpdir")) > -1)
+ if (file == null
+ || file.indexOf(System.getProperty("java.io.tmpdir")) > -1)
{
// ignore files loaded from the system's temporary directory
return;
}
- String type = protocol == DataSourceType.FILE ? "RECENT_FILE"
- : "RECENT_URL";
+ String type = protocol == DataSourceType.FILE ? RECENT_FILE_PROPERTY
+ : RECENT_URL_PROPERTY;
String historyItems = Cache.getProperty(type);
- StringTokenizer st;
-
if (historyItems != null)
{
- st = new StringTokenizer(historyItems, "\t");
+ String[] tokens = historyItems.split("\\t");
- while (st.hasMoreTokens())
+ for (String token : tokens)
{
- recent.addElement(st.nextToken().trim());
+ recent.add(token.trim());
}
}
recent.remove(file);
}
- StringBuffer newHistory = new StringBuffer(file);
- for (int i = 0; i < recent.size() && i < 10; i++)
+ StringBuilder newHistory = new StringBuilder(file);
+ for (int i = 0; i < recent.size() && i < MAX_HISTORY - 1; i++)
{
- newHistory.append("\t");
- newHistory.append(recent.elementAt(i));
+ newHistory.append(TAB);
+ newHistory.append(recent.get(i));
}
Cache.setProperty(type, newHistory.toString());
if (protocol == DataSourceType.FILE)
{
- Cache.setProperty("DEFAULT_FILE_FORMAT", format.getName());
+ Cache.setProperty(DEFAULT_FILE_FORMAT_PROPERTY, format.getName());
}
}