X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=9c4ff81cd14d0a3c4b7c9d8c912981fb40da99d3;hb=18a91cf8bf71500b0bfa020c8348227cce2fc279;hp=dd8fb7a14ffee010aef42cc539e47bb412b3b7ea;hpb=d63bbc2d56c86d7dca68e76104a8682b5e38c763;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index dd8fb7a..9c4ff81 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -63,10 +63,14 @@ import jalview.gui.ViewSelectionMenu.ViewSetProvider; import jalview.io.AlignmentProperties; import jalview.io.AnnotationFile; import jalview.io.BioJsHTMLOutput; +import jalview.io.DataSourceType; +import jalview.io.FileFormat; +import jalview.io.FileFormatI; import jalview.io.FileLoader; import jalview.io.FormatAdapter; import jalview.io.HtmlSvgOutput; import jalview.io.IdentifyFile; +import jalview.io.JPredFile; import jalview.io.JalviewFileChooser; import jalview.io.JalviewFileView; import jalview.io.JnetAnnotationMaker; @@ -108,6 +112,7 @@ import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; +import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; @@ -141,7 +146,6 @@ import javax.swing.JInternalFrame; import javax.swing.JLayeredPane; import javax.swing.JMenu; import javax.swing.JMenuItem; -import javax.swing.JOptionPane; import javax.swing.JRadioButtonMenuItem; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; @@ -174,7 +178,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Last format used to load or save alignments in this window */ - String currentFileFormat = null; + FileFormatI currentFileFormat = null; /** * Current filename for this alignment @@ -483,7 +487,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param format * format of file */ - public void setFileName(String file, String format) + public void setFileName(String file, FileFormatI format) { fileName = file; setFileFormat(format); @@ -668,6 +672,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, toggleHiddenRegions(toggleSeqs, toggleCols); break; } + case KeyEvent.VK_B: + { + boolean toggleSel = evt.isControlDown() || evt.isMetaDown(); + boolean modifyExisting = true; // always modify, don't clear + // evt.isShiftDown(); + boolean invertHighlighted = evt.isAltDown(); + avc.markHighlightedColumns(invertHighlighted, modifyExisting, + toggleSel); + break; + } case KeyEvent.VK_PAGE_UP: if (viewport.getWrapAlignment()) { @@ -1002,7 +1016,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // originating file's format // TODO: work out how to recover feature settings for correct view(s) when // file is reloaded. - if (currentFileFormat.equals("Jalview")) + if (FileFormat.Jalview.equals(currentFileFormat)) { JInternalFrame[] frames = Desktop.desktop.getAllFrames(); for (int i = 0; i < frames.length; i++) @@ -1024,7 +1038,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Desktop.instance.closeAssociatedWindows(); FileLoader loader = new FileLoader(); - String protocol = fileName.startsWith("http:") ? "URL" : "File"; + DataSourceType protocol = fileName.startsWith("http:") ? DataSourceType.URL + : DataSourceType.FILE; loader.LoadFile(viewport, fileName, protocol, currentFileFormat); } else @@ -1032,7 +1047,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Rectangle bounds = this.getBounds(); FileLoader loader = new FileLoader(); - String protocol = fileName.startsWith("http:") ? "URL" : "File"; + DataSourceType protocol = fileName.startsWith("http:") ? DataSourceType.URL + : DataSourceType.FILE; AlignFrame newframe = loader.LoadFileWaitTillLoaded(fileName, protocol, currentFileFormat); @@ -1076,9 +1092,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void save_actionPerformed(ActionEvent e) { - if (fileName == null - || (currentFileFormat == null || !jalview.io.FormatAdapter - .isValidIOFormat(currentFileFormat, true)) + if (fileName == null || (currentFileFormat == null) || fileName.startsWith("http")) { saveAs_actionPerformed(null); @@ -1098,11 +1112,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void saveAs_actionPerformed(ActionEvent e) { - JalviewFileChooser chooser = new JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY"), - jalview.io.AppletFormatAdapter.WRITABLE_EXTENSIONS, - jalview.io.AppletFormatAdapter.WRITABLE_FNAMES, - currentFileFormat, false); + String format = currentFileFormat == null ? null : currentFileFormat + .toString(); + JalviewFileChooser chooser = JalviewFileChooser.forWrite( + Cache.getProperty("LAST_DIRECTORY"), format); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle(MessageManager @@ -1116,14 +1129,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, currentFileFormat = chooser.getSelectedFormat(); while (currentFileFormat == null) { - JOptionPane + JvOptionPane .showInternalMessageDialog( Desktop.desktop, MessageManager .getString("label.select_file_format_before_saving"), MessageManager .getString("label.file_format_not_specified"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); currentFileFormat = chooser.getSelectedFormat(); value = chooser.showSaveDialog(this); if (value != JalviewFileChooser.APPROVE_OPTION) @@ -1134,24 +1147,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, fileName = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("DEFAULT_FILE_FORMAT", - currentFileFormat); + Cache.setProperty("DEFAULT_FILE_FORMAT", + currentFileFormat.toString()); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", fileName); - if (currentFileFormat.indexOf(" ") > -1) - { - currentFileFormat = currentFileFormat.substring(0, - currentFileFormat.indexOf(" ")); - } + Cache.setProperty("LAST_DIRECTORY", fileName); saveAlignment(fileName, currentFileFormat); } } - public boolean saveAlignment(String file, String format) + public boolean saveAlignment(String file, FileFormatI format) { boolean success = true; - if (format.equalsIgnoreCase("Jalview")) + if (FileFormat.Jalview.equals(format)) { String shortName = title; @@ -1170,16 +1178,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - if (!jalview.io.AppletFormatAdapter.isValidFormat(format, true)) - { - warningMessage("Cannot save file " + fileName + " using format " - + format, "Alignment output format not supported"); - if (!Jalview.isHeadlessMode()) - { - saveAs_actionPerformed(null); - } - return false; - } + // if (!jalview.io.AppletFormatAdapter.isValidFormat(format, true)) + // { + // warningMessage("Cannot save file " + fileName + " using format " + // + format, "Alignment output format not supported"); + // if (!Jalview.isHeadlessMode()) + // { + // saveAs_actionPerformed(null); + // } + // return false; + // } AlignmentExportData exportData = getAlignmentForExport(format, viewport, null); @@ -1224,11 +1232,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (!success) { - JOptionPane.showInternalMessageDialog(this, MessageManager + JvOptionPane.showInternalMessageDialog(this, MessageManager .formatMessage("label.couldnt_save_file", new Object[] { fileName }), MessageManager .getString("label.error_saving_file"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); } return success; @@ -1243,8 +1251,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - JOptionPane.showInternalMessageDialog(this, warning, title, - JOptionPane.WARNING_MESSAGE); + JvOptionPane.showInternalMessageDialog(this, warning, title, + JvOptionPane.WARNING_MESSAGE); } return; } @@ -1259,8 +1267,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, protected void outputText_actionPerformed(ActionEvent e) { - AlignmentExportData exportData = getAlignmentForExport( - e.getActionCommand(), viewport, null); + FileFormatI fileFormat = FileFormat.forName(e.getActionCommand()); + AlignmentExportData exportData = getAlignmentForExport(fileFormat, + viewport, null); if (exportData.getSettings().isCancelled()) { return; @@ -1269,8 +1278,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, cap.setForInput(null); try { + FileFormatI format = fileFormat; cap.setText(new FormatAdapter(alignPanel, exportData.getSettings()) - .formatSequences(e.getActionCommand(), + .formatSequences(format, exportData.getAlignment(), exportData.getOmitHidden(), exportData.getStartEndPostions(), @@ -1287,7 +1297,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } public static AlignmentExportData getAlignmentForExport( - String exportFormat, AlignViewportI viewport, + FileFormatI format, AlignViewportI viewport, AlignExportSettingI exportSettings) { AlignmentI alignmentToExport = null; @@ -1303,7 +1313,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (settings == null) { settings = new AlignExportSettings(hasHiddenSeqs, - viewport.hasHiddenColumns(), exportFormat); + viewport.hasHiddenColumns(), format); } // settings.isExportAnnotations(); @@ -1339,14 +1349,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override protected void htmlMenuItem_actionPerformed(ActionEvent e) { - new HtmlSvgOutput(null, alignPanel); + HtmlSvgOutput htmlSVG = new HtmlSvgOutput(alignPanel); + htmlSVG.exportHTML(null); } @Override public void bioJSMenuItem_actionPerformed(ActionEvent e) { - BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel, this); - bjs.exportJalviewAlignmentAsBioJsHtmlFile(); + BioJsHTMLOutput bjs = new BioJsHTMLOutput(alignPanel); + bjs.exportHTML(null); } public void createImageMap(File file, String image) @@ -1860,7 +1871,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, omitHidden = viewport.getViewAsString(true); } - String output = new FormatAdapter().formatSequences("Fasta", seqs, + String output = new FormatAdapter().formatSequences(FileFormat.Fasta, + seqs, omitHidden, null); StringSelection ss = new StringSelection(output); @@ -1947,7 +1959,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return; } - String str, format; + String str; + FileFormatI format; try { str = (String) contents.getTransferData(DataFlavor.stringFlavor); @@ -1956,7 +1969,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return; } - format = new IdentifyFile().identify(str, "Paste"); + format = new IdentifyFile().identify(str, DataSourceType.PASTE); } catch (OutOfMemoryError er) { @@ -1986,7 +1999,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, else { // parse the clipboard as an alignment. - alignment = new FormatAdapter().readFile(str, "Paste", format); + alignment = new FormatAdapter().readFile(str, DataSourceType.PASTE, + format); sequences = alignment.getSequencesArray(); } @@ -2355,13 +2369,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .getAlignment().getWidth()) ? true : false; if (isEntireAlignWidth) { - int confirm = JOptionPane.showConfirmDialog(this, + int confirm = JvOptionPane.showConfirmDialog(this, MessageManager.getString("warn.delete_all"), // $NON-NLS-1$ MessageManager.getString("label.delete_all"), // $NON-NLS-1$ - JOptionPane.OK_CANCEL_OPTION); + JvOptionPane.OK_CANCEL_OPTION); - if (confirm == JOptionPane.CANCEL_OPTION - || confirm == JOptionPane.CLOSED_OPTION) + if (confirm == JvOptionPane.CANCEL_OPTION + || confirm == JvOptionPane.CLOSED_OPTION) { return; } @@ -2906,8 +2920,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.setFollowHighlight(state); if (state) { - alignPanel.scrollToPosition( - alignPanel.getSeqPanel().seqCanvas.searchResults, false); + alignPanel.scrollToPosition(viewport.getSearchResults(), false); } } @@ -2977,9 +2990,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // Hide everything by the current selection - this is a hack - we do the // invert and then hide // first check that there will be visible columns after the invert. - if ((viewport.getColumnSelection() != null - && viewport.getColumnSelection().getSelected() != null && viewport - .getColumnSelection().getSelected().size() > 0) + if (viewport.hasSelectedColumns() || (sg != null && sg.getSize() > 0 && sg.getStartRes() <= sg .getEndRes())) { @@ -3007,8 +3018,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, hideSelSequences_actionPerformed(null); hide = true; } - else if (!(toggleCols && viewport.getColumnSelection().getSelected() - .size() > 0)) + else if (!(toggleCols && viewport.hasSelectedColumns())) { showAllSeqs_actionPerformed(null); } @@ -3016,7 +3026,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (toggleCols) { - if (viewport.getColumnSelection().getSelected().size() > 0) + if (viewport.hasSelectedColumns()) { hideSelColumns_actionPerformed(null); if (!toggleSeqs) @@ -3620,34 +3630,50 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void mousePressed(MouseEvent evt) { - if (evt.isPopupTrigger()) + if (evt.isPopupTrigger()) // Mac + { + offerRemoval(radioItem); + } + } + + @Override + public void mouseReleased(MouseEvent evt) + { + if (evt.isPopupTrigger()) // Windows { - radioItem.removeActionListener(radioItem.getActionListeners()[0]); + offerRemoval(radioItem); + } + } - int option = JOptionPane.showInternalConfirmDialog( - jalview.gui.Desktop.desktop, - MessageManager - .getString("label.remove_from_default_list"), - MessageManager - .getString("label.remove_user_defined_colour"), - JOptionPane.YES_NO_OPTION); - if (option == JOptionPane.YES_OPTION) - { - jalview.gui.UserDefinedColours - .removeColourFromDefaults(radioItem.getText()); - colourMenu.remove(radioItem); - } - else + /** + * @param radioItem + */ + void offerRemoval(final JRadioButtonMenuItem radioItem) + { + radioItem.removeActionListener(radioItem.getActionListeners()[0]); + + int option = JvOptionPane.showInternalConfirmDialog( + jalview.gui.Desktop.desktop, MessageManager + .getString("label.remove_from_default_list"), + MessageManager + .getString("label.remove_user_defined_colour"), + JvOptionPane.YES_NO_OPTION); + if (option == JvOptionPane.YES_OPTION) + { + jalview.gui.UserDefinedColours + .removeColourFromDefaults(radioItem.getText()); + colourMenu.remove(radioItem); + } + else + { + radioItem.addActionListener(new ActionListener() { - radioItem.addActionListener(new ActionListener() + @Override + public void actionPerformed(ActionEvent evt) { - @Override - public void actionPerformed(ActionEvent evt) - { - userDefinedColour_actionPerformed(evt); - } - }); - } + userDefinedColour_actionPerformed(evt); + } + }); } } }); @@ -3780,10 +3806,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if ((viewport.getSelectionGroup() == null) || (viewport.getSelectionGroup().getSize() < 2)) { - JOptionPane.showInternalMessageDialog(this, MessageManager + JvOptionPane.showInternalMessageDialog(this, MessageManager .getString("label.you_must_select_least_two_sequences"), MessageManager.getString("label.invalid_selection"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); } else { @@ -3809,14 +3835,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .getSelectionGroup().getSize() > 0)) || (viewport.getAlignment().getHeight() < 4)) { - JOptionPane + JvOptionPane .showInternalMessageDialog( this, MessageManager .getString("label.principal_component_analysis_must_take_least_four_input_sequences"), MessageManager .getString("label.sequence_selection_insufficient"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); return; } @@ -3914,14 +3940,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (viewport.getSelectionGroup().getSize() < 3) { - JOptionPane + JvOptionPane .showMessageDialog( Desktop.desktop, MessageManager .getString("label.you_need_more_two_sequences_selected_build_tree"), MessageManager .getString("label.not_enough_sequences"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); return; } @@ -3932,14 +3958,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (_s.getLength() < sg.getEndRes()) { - JOptionPane + JvOptionPane .showMessageDialog( Desktop.desktop, MessageManager .getString("label.selected_region_to_tree_may_only_contain_residues_or_gaps"), MessageManager .getString("label.sequences_selection_not_aligned"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); return; } @@ -3953,14 +3979,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // are the visible sequences aligned? if (!viewport.getAlignment().isAligned(false)) { - JOptionPane + JvOptionPane .showMessageDialog( Desktop.desktop, MessageManager .getString("label.sequences_must_be_aligned_before_creating_tree"), MessageManager .getString("label.sequences_not_aligned"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); return; } @@ -4225,11 +4251,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, else if (viewport.getSelectionGroup() != null && viewport.getSelectionGroup().getSize() == 1) { - int option = JOptionPane.showConfirmDialog(this, + int option = JvOptionPane.showConfirmDialog(this, MessageManager.getString("warn.oneseq_msainput_selection"), MessageManager.getString("label.invalid_selection"), - JOptionPane.OK_CANCEL_OPTION); - if (option == JOptionPane.OK_OPTION) + JvOptionPane.OK_CANCEL_OPTION); + if (option == JvOptionPane.OK_OPTION) { msa = viewport.getAlignmentView(false); } @@ -4301,25 +4327,25 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, jalview.io.NewickFile fin = null; try { - fin = new jalview.io.NewickFile(choice, "File"); + fin = new NewickFile(choice, DataSourceType.FILE); viewport.setCurrentTree(ShowNewickTree(fin, choice).getTree()); } catch (Exception ex) { - JOptionPane + JvOptionPane .showMessageDialog( Desktop.desktop, ex.getMessage(), MessageManager .getString("label.problem_reading_tree_file"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); ex.printStackTrace(); } if (fin != null && fin.hasWarningMessage()) { - JOptionPane.showMessageDialog(Desktop.desktop, fin + JvOptionPane.showMessageDialog(Desktop.desktop, fin .getWarningMessage(), MessageManager .getString("label.possible_problem_with_tree_file"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); } } } @@ -4621,14 +4647,21 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { SequenceI[] seqs = viewport.getAlignment().getSequencesArray(); AlignmentI dataset = viewport.getAlignment().getDataset(); + + showProducts.removeAll(); + final boolean dna = viewport.getAlignment().isNucleotide(); + + if (seqs == null || seqs.length == 0) + { + // nothing to see here. + return false; + } + boolean showp = false; try { - showProducts.removeAll(); - final boolean dna = viewport.getAlignment().isNucleotide(); - List ptypes = (seqs == null || seqs.length == 0) ? null - : new CrossRef(seqs, dataset) - .findXrefSourcesForSequences(dna); + List ptypes = new CrossRef(seqs, dataset) + .findXrefSourcesForSequences(dna); for (final String source : ptypes) { @@ -4697,8 +4730,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, final String errorTitle = MessageManager .getString("label.implementation_error") + MessageManager.getString("label.translation_failed"); - JOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle, - JOptionPane.ERROR_MESSAGE); + JvOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle, + JvOptionPane.ERROR_MESSAGE); return; } if (al == null || al.getHeight() == 0) @@ -4707,8 +4740,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .getString("label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation"); final String errorTitle = MessageManager .getString("label.translation_failed"); - JOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle, - JOptionPane.WARNING_MESSAGE); + JvOptionPane.showMessageDialog(Desktop.desktop, msg, errorTitle, + JvOptionPane.WARNING_MESSAGE); } else { @@ -4734,11 +4767,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Set the file format * - * @param fileFormat + * @param format */ - public void setFileFormat(String fileFormat) + public void setFileFormat(FileFormatI format) { - this.currentFileFormat = fileFormat; + this.currentFileFormat = format; } /** @@ -4746,14 +4779,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * * @param file * contents or path to retrieve file - * @param type + * @param sourceType * access mode of file (see jalview.io.AlignFile) * @return true if features file was parsed correctly. */ - public boolean parseFeaturesFile(String file, String type) + public boolean parseFeaturesFile(String file, DataSourceType sourceType) { - return avc.parseFeaturesFile(file, type, - jalview.bin.Cache.getDefault("RELAXEDSEQIDMATCHING", false)); + return avc.parseFeaturesFile(file, sourceType, + Cache.getDefault("RELAXEDSEQIDMATCHING", false)); } @@ -4794,8 +4827,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override public void drop(DropTargetDropEvent evt) { + // JAL-1552 - acceptDrop required before getTransferable call for + // Java's Transferable for native dnd + evt.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); Transferable t = evt.getTransferable(); - java.util.List files = new ArrayList(), protocols = new ArrayList(); + List files = new ArrayList(); + List protocols = new ArrayList(); try { @@ -4821,13 +4858,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { String file = files.get(i).toString(); String pdbfn = ""; - String protocol = FormatAdapter.checkProtocol(file); - if (protocol == jalview.io.FormatAdapter.FILE) + DataSourceType protocol = FormatAdapter.checkProtocol(file); + if (protocol == DataSourceType.FILE) { File fl = new File(file); pdbfn = fl.getName(); } - else if (protocol == jalview.io.FormatAdapter.URL) + else if (protocol == DataSourceType.URL) { URL url = new URL(file); pdbfn = url.getFile(); @@ -4851,7 +4888,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } if (mtch != null) { - String type = null; + FileFormatI type = null; try { type = new IdentifyFile().identify(file, protocol); @@ -4859,13 +4896,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { type = null; } - if (type != null) + if (type != null && type.isStructureFile()) { - if (type.equalsIgnoreCase("PDB")) - { - filesmatched.add(new Object[] { file, protocol, mtch }); - continue; - } + filesmatched.add(new Object[] { file, protocol, mtch }); + continue; } } // File wasn't named like one of the sequences or wasn't a PDB file. @@ -4876,20 +4910,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (filesmatched.size() > 0) { if (Cache.getDefault("AUTOASSOCIATE_PDBANDSEQS", false) - || JOptionPane + || JvOptionPane .showConfirmDialog( this, MessageManager .formatMessage( - "label.automatically_associate_pdb_files_with_sequences_same_name", + "label.automatically_associate_structure_files_with_sequences_same_name", new Object[] { Integer .valueOf( filesmatched .size()) .toString() }), MessageManager - .getString("label.automatically_associate_pdb_files_by_name"), - JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) + .getString("label.automatically_associate_structure_files_by_name"), + JvOptionPane.YES_NO_OPTION) == JvOptionPane.YES_OPTION) { for (Object[] fm : filesmatched) @@ -4901,7 +4935,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { PDBEntry pe = new AssociatePdbFileWithSeq() .associatePdbWithSeq((String) fm[0], - (String) fm[1], toassoc, false, + (DataSourceType) fm[1], toassoc, false, Desktop.instance); if (pe != null) { @@ -4919,7 +4953,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (assocfiles > 0 && (Cache.getDefault( - "AUTOASSOCIATE_PDBANDSEQS_IGNOREOTHERS", false) || JOptionPane + "AUTOASSOCIATE_PDBANDSEQS_IGNOREOTHERS", false) || JvOptionPane .showConfirmDialog( this, "" @@ -4934,7 +4968,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, + "", MessageManager .getString("label.ignore_unmatched_dropped_files"), - JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)) + JvOptionPane.YES_NO_OPTION) == JvOptionPane.YES_OPTION)) { return; } @@ -4960,21 +4994,21 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param file * either a filename or a URL string. */ - public void loadJalviewDataFile(String file, String protocol, - String format, SequenceI assocSeq) + public void loadJalviewDataFile(String file, DataSourceType sourceType, + FileFormatI format, SequenceI assocSeq) { try { - if (protocol == null) + if (sourceType == null) { - protocol = FormatAdapter.checkProtocol(file); + sourceType = FormatAdapter.checkProtocol(file); } // if the file isn't identified, or not positively identified as some // other filetype (PFAM is default unidentified alignment file type) then // try to parse as annotation. - boolean isAnnotation = (format == null || format - .equalsIgnoreCase("PFAM")) ? new AnnotationFile() - .annotateAlignmentView(viewport, file, protocol) : false; + boolean isAnnotation = (format == null || FileFormat.Pfam + .equals(format)) ? new AnnotationFile() + .annotateAlignmentView(viewport, file, sourceType) : false; if (!isAnnotation) { @@ -4982,7 +5016,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, TCoffeeScoreFile tcf = null; try { - tcf = new TCoffeeScoreFile(file, protocol); + tcf = new TCoffeeScoreFile(file, sourceType); if (tcf.isValid()) { if (tcf.annotateAlignment(viewport.getAlignment(), true)) @@ -4999,7 +5033,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { // some problem - if no warning its probable that the ID matching // process didn't work - JOptionPane + JvOptionPane .showMessageDialog( Desktop.desktop, tcf.getWarningMessage() == null ? MessageManager @@ -5007,7 +5041,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, : tcf.getWarningMessage(), MessageManager .getString("label.problem_reading_tcoffee_score_file"), - JOptionPane.WARNING_MESSAGE); + JvOptionPane.WARNING_MESSAGE); } } else @@ -5028,12 +5062,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // try to parse it as a features file if (format == null) { - format = new IdentifyFile().identify(file, protocol); + format = new IdentifyFile().identify(file, sourceType); } - if (format.equalsIgnoreCase("JnetFile")) + if (FileFormat.Jnet.equals(format)) { - jalview.io.JPredFile predictions = new jalview.io.JPredFile( - file, protocol); + JPredFile predictions = new JPredFile( + file, sourceType); new JnetAnnotationMaker(); JnetAnnotationMaker.add_annotation(predictions, viewport.getAlignment(), 0, false); @@ -5044,16 +5078,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.setColumnSelection(cs); isAnnotation = true; } - else if (IdentifyFile.FeaturesFile.equals(format)) + // else if (IdentifyFile.FeaturesFile.equals(format)) + else if (FileFormat.Features.equals(format)) { - if (parseFeaturesFile(file, protocol)) + if (parseFeaturesFile(file, sourceType)) { alignPanel.paintAlignment(true); } } else { - new FileLoader().LoadFile(viewport, file, protocol, format); + new FileLoader().LoadFile(viewport, file, sourceType, format); } } } @@ -5078,8 +5113,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } new OOMWarning( "loading data " - + (protocol != null ? (protocol.equals(FormatAdapter.PASTE) ? "from clipboard." - : "using " + protocol + " from " + file) + + (sourceType != null ? (sourceType == DataSourceType.PASTE ? "from clipboard." + : "using " + sourceType + " from " + file) : ".") + (format != null ? "(parsing as '" + format + "' file)" : ""), oom, Desktop.desktop); @@ -5128,8 +5163,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (e.isPopupTrigger()) { String msg = MessageManager.getString("label.enter_view_name"); - String reply = JOptionPane.showInternalInputDialog(this, msg, msg, - JOptionPane.QUESTION_MESSAGE); + String reply = JvOptionPane.showInternalInputDialog(this, msg, msg, + JvOptionPane.QUESTION_MESSAGE); if (reply != null) { @@ -5868,12 +5903,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } catch (Exception ex) { System.err.println((ex.toString())); - JOptionPane + JvOptionPane .showInternalMessageDialog(Desktop.desktop, MessageManager .getString("label.couldnt_run_groovy_script"), MessageManager .getString("label.groovy_support_failed"), - JOptionPane.ERROR_MESSAGE); + JvOptionPane.ERROR_MESSAGE); } } else @@ -5906,6 +5941,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } return false; } + + @Override + protected void selectHighlightedColumns_actionPerformed( + ActionEvent actionEvent) + { + // include key modifier check in case user selects from menu + avc.markHighlightedColumns( + (actionEvent.getModifiers() & ActionEvent.ALT_MASK) != 0, + true, + (actionEvent.getModifiers() & (ActionEvent.META_MASK | ActionEvent.CTRL_MASK)) != 0); + } } class PrintThread extends Thread