X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=b18d33c3d04691673ac243c49ea0b4840664cdaa;hb=ac782d365838ae95fc6bbf6164e763a1e6893e72;hp=691f14abf081cc62213b24b2f4612410585b0c4f;hpb=976f00f7318c5328d9d7b62324d4d6e3d573bf12;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 691f14a..b18d33c 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -45,6 +45,7 @@ import jalview.commands.RemoveGapColCommand; import jalview.commands.RemoveGapsCommand; import jalview.commands.SlideSequencesCommand; import jalview.commands.TrimRegionCommand; +import jalview.datamodel.AlignExportSettingBeanI; import jalview.datamodel.AlignedCodonFrame; import jalview.datamodel.Alignment; import jalview.datamodel.AlignmentAnnotation; @@ -54,7 +55,6 @@ import jalview.datamodel.AlignmentOrder; import jalview.datamodel.AlignmentView; import jalview.datamodel.ColumnSelection; import jalview.datamodel.HiddenColumns; -import jalview.datamodel.HiddenSequences; import jalview.datamodel.PDBEntry; import jalview.datamodel.SeqCigar; import jalview.datamodel.Sequence; @@ -336,14 +336,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Desktop.getDesktop().propertyChange(evt); } - /** - * BH 2018 - * + * BH 2018 + * * @return true if we have any features */ @Override - protected boolean haveAlignmentFeatures() { + protected boolean haveAlignmentFeatures() + { AlignmentI alignment = getViewport().getAlignment(); for (int i = 0; i < alignment.getHeight(); i++) @@ -351,12 +351,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, SequenceI seq = alignment.getSequenceAt(i); for (String group : seq.getFeatures().getFeatureGroups(true)) { - if (group != null)return true; + if (group != null) + return true; } } - return false; + return false; } - + /** * initalise the alignframe from the underlying viewport data and the * configurations @@ -418,7 +419,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * */ { - addServiceListeners(); + addServiceListeners(); } setGUINucleotide(); } @@ -536,14 +537,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, setFileFormat(format); reload.setEnabled(true); } - + /** * JavaScript will have this, maybe others. More dependable than a file name * and maintains a reference to the actual bytes loaded. * * @param file */ - public void setFileObject(File file) { + public void setFileObject(File file) + { this.fileObject = file; } @@ -1077,7 +1079,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, FileLoader loader = new FileLoader(); DataSourceType protocol = fileName.startsWith("http:") - ? DataSourceType.URL : DataSourceType.FILE; + ? DataSourceType.URL + : DataSourceType.FILE; loader.LoadFile(viewport, fileName, protocol, currentFileFormat); } else @@ -1092,13 +1095,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { DataSourceType protocol = (fileName.startsWith("http:") - ? DataSourceType.URL : DataSourceType.FILE); + ? DataSourceType.URL + : DataSourceType.FILE); newframe = loader.LoadFileWaitTillLoaded(fileName, protocol, currentFileFormat); } else { - newframe = loader.LoadFileWaitTillLoaded(fileObject, DataSourceType.FILE, currentFileFormat); + newframe = loader.LoadFileWaitTillLoaded(fileObject, + DataSourceType.FILE, currentFileFormat); } newframe.setBounds(bounds); @@ -1175,7 +1180,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { @Override public void run() - { + { currentFileFormat = chooser.getSelectedFormat(); while (currentFileFormat == null) { @@ -1200,10 +1205,45 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, }).showSaveDialog(this); } - public boolean saveAlignment(String file, FileFormatI format) + private boolean lastSaveSuccessful = false; + + private FileFormatI lastFormatSaved; + + private String lastFilenameSaved; + + /** + * Raise a dialog or status message for the last call to saveAlignment. + * + * @return true if last call to saveAlignment(file, format) was successful. + */ + public boolean isSaveAlignmentSuccessful() { - boolean success = true; + if (!lastSaveSuccessful) + { + JvOptionPane.showInternalMessageDialog(this, MessageManager + .formatMessage("label.couldnt_save_file", new Object[] + { lastFilenameSaved }), + MessageManager.getString("label.error_saving_file"), + JvOptionPane.WARNING_MESSAGE); + } + else + { + + statusBar.setText(MessageManager.formatMessage( + "label.successfully_saved_to_file_in_format", new Object[] + { lastFilenameSaved, lastFormatSaved })); + + } + return lastSaveSuccessful; + } + + public void saveAlignment(String file, FileFormatI format) + { + lastSaveSuccessful = false; + lastFilenameSaved = file; + lastFormatSaved = format; + AlignFrame us = this; if (FileFormat.Jalview.equals(format)) { String shortName = title; @@ -1214,66 +1254,66 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, shortName.lastIndexOf(java.io.File.separatorChar) + 1); } - success = new Jalview2XML().saveAlignment(this, file, shortName); - - statusBar.setText(MessageManager.formatMessage( - "label.successfully_saved_to_file_in_format", new Object[] - { fileName, format })); - + lastSaveSuccessful = new Jalview2XML().saveAlignment(this, file, + shortName); } else { - AlignmentExportData exportData = getAlignmentForExport(format, - viewport, null); - if (exportData.getSettings().isCancelled()) - { - return false; - } - FormatAdapter f = new FormatAdapter(alignPanel, - exportData.getSettings()); - String output = f.formatSequences(format, exportData.getAlignment(), // class - // cast - // exceptions - // will - // occur in the distant future - exportData.getOmitHidden(), exportData.getStartEndPostions(), - f.getCacheSuffixDefault(format), - viewport.getAlignment().getHiddenColumns()); - - if (output == null) - { - success = false; - } - else + AlignExportSettingI settings = getAlignmentForExport(format, + alignPanel, null); + settings.addActionListener(new ActionListener() { - try - { - PrintWriter out = new PrintWriter(new FileWriter(file)); - - out.print(output); - out.close(); - this.setTitle(file); - statusBar.setText(MessageManager.formatMessage( - "label.successfully_saved_to_file_in_format", new Object[] - { fileName, format.getName() })); - } catch (Exception ex) + @Override + public void actionPerformed(ActionEvent e) { - success = false; - ex.printStackTrace(); + + if (settings.isCancelled()) + { + lastSaveSuccessful = false; + return; + } + AlignmentExportData exportData = settings.getAlignExportData(); + FormatAdapter f = new FormatAdapter(alignPanel, + exportData.getSettings()); + String output = f.formatSequences(format, + exportData.getAlignment(), // class + // cast + // exceptions + // will + // occur in the distant future + exportData.getOmitHidden(), + exportData.getStartEndPostions(), + f.getCacheSuffixDefault(format), + viewport.getAlignment().getHiddenColumns()); + + if (output == null) + { + lastSaveSuccessful = false; + } + else + { + try + { + PrintWriter out = new PrintWriter(new FileWriter(file)); + + out.print(output); + out.close(); + us.setTitle(file); + statusBar.setText(MessageManager.formatMessage( + "label.successfully_saved_to_file_in_format", + new Object[] + { fileName, format.getName() })); + } catch (Exception ex) + { + lastSaveSuccessful = false; + ex.printStackTrace(); + } + } } - } - } + }); - if (!success) - { - JvOptionPane.showInternalMessageDialog(this, MessageManager - .formatMessage("label.couldnt_save_file", new Object[] - { fileName }), - MessageManager.getString("label.error_saving_file"), - JvOptionPane.WARNING_MESSAGE); + settings.doShowSettings(); } - - return success; } /** @@ -1287,75 +1327,50 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { FileFormatI fileFormat = FileFormats.getInstance() .forName(e.getActionCommand()); - AlignmentExportData exportData = getAlignmentForExport(fileFormat, - viewport, null); - if (exportData.getSettings().isCancelled()) - { - return; - } - CutAndPasteTransfer cap = new CutAndPasteTransfer(); - cap.setForInput(null); - try + AlignExportSettingI settings = getAlignmentForExport(fileFormat, + alignPanel, null); + settings.addActionListener(new ActionListener() { - FileFormatI format = fileFormat; - cap.setText(new FormatAdapter(alignPanel, exportData.getSettings()) - .formatSequences(format, exportData.getAlignment(), - exportData.getOmitHidden(), - exportData.getStartEndPostions(), - viewport.getAlignment().getHiddenColumns())); - Desktop.addInternalFrame(cap, MessageManager - .formatMessage("label.alignment_output_command", new Object[] - { e.getActionCommand() }), 600, 500); - } catch (OutOfMemoryError oom) - { - new OOMWarning("Outputting alignment as " + e.getActionCommand(), - oom); - cap.dispose(); - } + @Override + public void actionPerformed(ActionEvent e) + { + if (settings.isCancelled()) + { + return; + } + AlignmentExportData exportData = settings.getAlignExportData(); + CutAndPasteTransfer cap = new CutAndPasteTransfer(); + cap.setForInput(null); + try + { + FileFormatI format = fileFormat; + cap.setText(new FormatAdapter(alignPanel, settings) + .formatSequences(format, exportData.getAlignment(), + exportData.getOmitHidden(), + exportData.getStartEndPostions(), + viewport.getAlignment().getHiddenColumns())); + Desktop.addInternalFrame(cap, MessageManager.formatMessage( + "label.alignment_output_command", new Object[] + { fileFormat.getName() }), 600, 500); + } catch (OutOfMemoryError oom) + { + new OOMWarning("Outputting alignment as " + fileFormat.getName(), + oom); + cap.dispose(); + } + // TODO Auto-generated method stub + } + }); + settings.doShowSettings(); } - public static AlignmentExportData getAlignmentForExport( - FileFormatI format, AlignViewportI viewport, - AlignExportSettingI exportSettings) + public static AlignExportSettingI getAlignmentForExport( + FileFormatI format, AlignmentPanel alignPanel, + AlignExportSettingBeanI exportSettings) { - AlignmentI alignmentToExport = null; - AlignExportSettingI settings = exportSettings; - String[] omitHidden = null; - - HiddenSequences hiddenSeqs = viewport.getAlignment() - .getHiddenSequences(); - alignmentToExport = viewport.getAlignment(); - - boolean hasHiddenSeqs = hiddenSeqs.getSize() > 0; - if (settings == null) - { - settings = new AlignExportSettings(hasHiddenSeqs, - viewport.hasHiddenColumns(), format); - } - // settings.isExportAnnotations(); - - if (viewport.hasHiddenColumns() && !settings.isExportHiddenColumns()) - { - omitHidden = viewport.getViewAsString(false, - settings.isExportHiddenSequences()); - } - - int[] alignmentStartEnd = new int[2]; - if (hasHiddenSeqs && settings.isExportHiddenSequences()) - { - alignmentToExport = hiddenSeqs.getFullAlignment(); - } - else - { - alignmentToExport = viewport.getAlignment(); - } - alignmentStartEnd = viewport.getAlignment().getHiddenColumns() - .getVisibleStartAndEndIndex(alignmentToExport.getWidth()); - AlignmentExportData ed = new AlignmentExportData(alignmentToExport, - omitHidden, alignmentStartEnd, settings); - return ed; + return new AlignExportSettings(alignPanel, format, exportSettings); } /** @@ -1449,39 +1464,27 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void associatedData_actionPerformed(ActionEvent e) { - JalviewFileChooser chooser = new JalviewFileChooser( + final JalviewFileChooser chooser = new JalviewFileChooser( jalview.bin.Cache.getProperty("LAST_DIRECTORY")); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle( MessageManager.getString("label.load_jalview_annotations")); chooser.setToolTipText( MessageManager.getString("label.load_jalview_annotations")); + chooser.response(new RunResponse(JalviewFileChooser.APPROVE_OPTION) + { - Desktop.getDesktop().dialogData = new Object[] { "SelectedFile", - new Runnable() - { - - @Override - public void run() - { - Object[] data = Desktop.getDesktop().dialogData; - int value = ((Integer) data[0]).intValue(); - - if (value == JFileChooser.APPROVE_OPTION) - { - JalviewFileChooser chooser = (JalviewFileChooser) data[2]; - String choice = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice); - loadJalviewDataFile(choice, null, null, null); - } - } - - }, chooser }; - - chooser.showOpenDialog(null); - + @Override + public void run() + { + String choice = chooser.getSelectedFile().getPath(); + jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice); + loadJalviewDataFile(chooser.getSelectedFile(), null, null, null); + } + }); + chooser.openDialog(this); } /** @@ -3939,40 +3942,38 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, chooser.setToolTipText( MessageManager.getString("label.load_tree_file")); - chooser.response( - new jalview.util.dialogrunner.RunResponse(JalviewFileChooser.APPROVE_OPTION) - { - @Override - public void run() - { - String filePath = chooser.getSelectedFile().getPath(); - Cache.setProperty("LAST_DIRECTORY", filePath); - NewickFile fin = null; - try - { - fin = new NewickFile(new FileParse( - chooser.getSelectedFile(), DataSourceType.FILE)); - viewport.setCurrentTree( - showNewickTree(fin, filePath).getTree()); - } catch (Exception ex) - { - JvOptionPane.showMessageDialog(Desktop.desktop, - ex.getMessage(), - MessageManager.getString( - "label.problem_reading_tree_file"), - JvOptionPane.WARNING_MESSAGE); - ex.printStackTrace(); - } - if (fin != null && fin.hasWarningMessage()) - { - JvOptionPane.showMessageDialog(Desktop.desktop, - fin.getWarningMessage(), - MessageManager.getString( - "label.possible_problem_with_tree_file"), - JvOptionPane.WARNING_MESSAGE); - } - } - }).openDialog(this); + chooser.response(new jalview.util.dialogrunner.RunResponse( + JalviewFileChooser.APPROVE_OPTION) + { + @Override + public void run() + { + String filePath = chooser.getSelectedFile().getPath(); + Cache.setProperty("LAST_DIRECTORY", filePath); + NewickFile fin = null; + try + { + fin = new NewickFile(new FileParse(chooser.getSelectedFile(), + DataSourceType.FILE)); + viewport.setCurrentTree(showNewickTree(fin, filePath).getTree()); + } catch (Exception ex) + { + JvOptionPane.showMessageDialog(Desktop.desktop, ex.getMessage(), + MessageManager + .getString("label.problem_reading_tree_file"), + JvOptionPane.WARNING_MESSAGE); + ex.printStackTrace(); + } + if (fin != null && fin.hasWarningMessage()) + { + JvOptionPane.showMessageDialog(Desktop.desktop, + fin.getWarningMessage(), + MessageManager.getString( + "label.possible_problem_with_tree_file"), + JvOptionPane.WARNING_MESSAGE); + } + } + }).openDialog(this); } public TreePanel showNewickTree(NewickFile nf, String treeTitle) @@ -4399,7 +4400,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ public boolean parseFeaturesFile(Object file, DataSourceType sourceType) { - // BH 2018 + // BH 2018 return avc.parseFeaturesFile(file, sourceType, Cache.getDefault("RELAXEDSEQIDMATCHING", false)); @@ -4446,8 +4447,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // Java's Transferable for native dnd evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); Transferable t = evt.getTransferable(); - - + final AlignFrame thisaf = this; final List files = new ArrayList<>(); List protocols = new ArrayList<>(); @@ -4480,14 +4480,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, ArrayList filesnotmatched = new ArrayList<>(); for (int i = 0; i < files.size(); i++) { - // BH 2018 + // BH 2018 Object file = files.get(i); String fileName = file.toString(); String pdbfn = ""; - DataSourceType protocol = (file instanceof File ? DataSourceType.FILE : FormatAdapter.checkProtocol(fileName)); + DataSourceType protocol = (file instanceof File + ? DataSourceType.FILE + : FormatAdapter.checkProtocol(fileName)); if (protocol == DataSourceType.FILE) { - File fl = (file instanceof File ? (File) file : new File(fileName)); + File fl = (file instanceof File ? (File) file + : new File(fileName)); pdbfn = fl.getName(); } else if (protocol == DataSourceType.URL) @@ -4536,7 +4539,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, int assocfiles = 0; if (filesmatched.size() > 0) { - boolean autoAssociate = Cache.getDefault("AUTOASSOCIATE_PDBANDSEQS", false); + boolean autoAssociate = Cache + .getDefault("AUTOASSOCIATE_PDBANDSEQS", false); if (!autoAssociate) { String msg = MessageManager.formatMessage(