X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=f9b6413cda4671e9fd0dd195e6e2d5e2874d6af6;hb=2ac096ecd8ee1a5c11480e864fce7cf78d661c66;hp=2ee643fb759d18f8fd70c4b97c6552e8a5579c0b;hpb=caa1ed9069e0b43704854e4bd8d0a763056afad9;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 2ee643f..f9b6413 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -81,51 +81,66 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { this(al, null, width, height); } + /** - * Creates a new AlignFrame object with specific width, height and sequenceSetId + * Creates a new AlignFrame object with specific width, height and + * sequenceSetId + * * @param al * @param width * @param height * @param sequenceSetId */ - public AlignFrame(AlignmentI al, int width, int height, String sequenceSetId) + public AlignFrame(AlignmentI al, int width, int height, + String sequenceSetId) { this(al, null, width, height, sequenceSetId); } + /** - * Creates a new AlignFrame object with specific width, height and sequenceSetId + * Creates a new AlignFrame object with specific width, height and + * sequenceSetId + * * @param al * @param width * @param height * @param sequenceSetId * @param viewId */ - public AlignFrame(AlignmentI al, int width, int height, String sequenceSetId, String viewId) + public AlignFrame(AlignmentI al, int width, int height, + String sequenceSetId, String viewId) { this(al, null, width, height, sequenceSetId, viewId); } + /** * new alignment window with hidden columns * * @param al - * AlignmentI + * AlignmentI * @param hiddenColumns - * ColumnSelection or null - * @param width Width of alignment frame - * @param height height of frame. + * ColumnSelection or null + * @param width + * Width of alignment frame + * @param height + * height of frame. */ public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns, int width, int height) { this(al, hiddenColumns, width, height, null); } + /** - * Create alignment frame for al with hiddenColumns, a specific width and height, and specific sequenceId + * Create alignment frame for al with hiddenColumns, a specific width and + * height, and specific sequenceId + * * @param al * @param hiddenColumns * @param width * @param height - * @param sequenceSetId (may be null) + * @param sequenceSetId + * (may be null) */ public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns, int width, int height, String sequenceSetId) @@ -134,16 +149,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * Create alignment frame for al with hiddenColumns, a specific width and height, and specific sequenceId + * Create alignment frame for al with hiddenColumns, a specific width and + * height, and specific sequenceId + * * @param al * @param hiddenColumns * @param width * @param height - * @param sequenceSetId (may be null) - * @param viewId (may be null) + * @param sequenceSetId + * (may be null) + * @param viewId + * (may be null) */ - public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns, int width, int height, - String sequenceSetId, String viewId) + public AlignFrame(AlignmentI al, ColumnSelection hiddenColumns, + int width, int height, String sequenceSetId, String viewId) { setSize(width, height); viewport = new AlignViewport(al, hiddenColumns, sequenceSetId, viewId); @@ -163,9 +182,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * Make a new AlignFrame from exisiting alignmentPanels * * @param ap - * AlignmentPanel + * AlignmentPanel * @param av - * AlignViewport + * AlignViewport */ public AlignFrame(AlignmentPanel ap) { @@ -174,8 +193,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, addAlignmentPanel(ap, false); init(); } + /** - * initalise the alignframe from the underlying viewport data and the configurations + * initalise the alignframe from the underlying viewport data and the + * configurations */ void init() { @@ -229,9 +250,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * button functionality. * * @param file - * valid filename + * valid filename * @param format - * format of file + * format of file */ public void setFileName(String file, String format) { @@ -385,40 +406,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { boolean toggleSeqs = !evt.isControlDown(); boolean toggleCols = !evt.isShiftDown(); - - boolean hide = false; - - SequenceGroup sg = viewport.getSelectionGroup(); - if (toggleSeqs) - { - if (sg != null - && sg.getSize() != viewport.alignment.getHeight()) - { - hideSelSequences_actionPerformed(null); - hide = true; - } - else if (!(toggleCols && viewport.colSel.getSelected().size() > 0)) - { - showAllSeqs_actionPerformed(null); - } - } - - if (toggleCols) - { - if (viewport.colSel.getSelected().size() > 0) - { - hideSelColumns_actionPerformed(null); - if (!toggleSeqs) - { - viewport.selectionGroup = sg; - } - } - else if (!hide) - { - showAllColumns_actionPerformed(null); - } - } - break; + toggleHiddenRegions(toggleSeqs,toggleCols); + break; } case KeyEvent.VK_PAGE_UP: if (viewport.wrapAlignment) @@ -558,7 +547,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, showTranslation.setVisible(nucleotide); conservationMenuItem.setEnabled(!nucleotide); modifyConservation.setEnabled(!nucleotide); - + showGroupConservation.setEnabled(!nucleotide); // Remember AlignFrame always starts as protein if (!nucleotide) { @@ -581,7 +570,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * loading from Jalview2XML.java * * @param av - * AlignViewport + * AlignViewport */ void setMenusFromViewport(AlignViewport av) { @@ -601,6 +590,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewBoxesMenuItem.setSelected(av.showBoxes); viewTextMenuItem.setSelected(av.showText); showUnconservedMenuItem.setSelected(av.showUnconserved); + showGroupConsensus.setSelected(av.showGroupConsensus); + showGroupConservation.setSelected(av.showGroupConservation); + showConsensusHistogram.setSelected(av.showConsensusHistogram); + showSequenceLogo.setSelected(av.showSequenceLogo); setColourSelected(ColourSchemeProperty.getColourName(av .getGlobalColourScheme())); @@ -631,20 +624,21 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } JPanel progressPanel; + Long lId=new Long(id); GridLayout layout = (GridLayout) statusPanel.getLayout(); - if (progressBars.get(new Long(id)) != null) + if (progressBars.get(lId) != null) { progressPanel = (JPanel) progressBars.get(new Long(id)); statusPanel.remove(progressPanel); - progressBars.remove(progressPanel); + progressBars.remove(lId); progressPanel = null; if (message != null) { statusBar.setText(message); } - if (progressBarHandlers.contains(new Long(id))) + if (progressBarHandlers.contains(lId)) { - progressBarHandlers.remove(new Long(id)); + progressBarHandlers.remove(lId); } layout.setRows(layout.getRows() - 1); } @@ -661,35 +655,41 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, layout.setRows(layout.getRows() + 1); statusPanel.add(progressPanel); - progressBars.put(new Long(id), progressPanel); + progressBars.put(lId, progressPanel); } // update GUI setMenusForViewport(); validate(); } - public void registerHandler(final long id, final IProgressIndicatorHandler handler) + + public void registerHandler(final long id, + final IProgressIndicatorHandler handler) { - if (progressBarHandlers==null || !progressBars.contains(new Long(id))) + if (progressBarHandlers == null || !progressBars.contains(new Long(id))) { - throw new Error("call setProgressBar before registering the progress bar's handler."); + throw new Error( + "call setProgressBar before registering the progress bar's handler."); } progressBarHandlers.put(new Long(id), handler); final JPanel progressPanel = (JPanel) progressBars.get(new Long(id)); if (handler.canCancel()) { JButton cancel = new JButton("Cancel"); - final IProgressIndicator us=this; - cancel.addActionListener(new ActionListener() { + final IProgressIndicator us = this; + cancel.addActionListener(new ActionListener() + { public void actionPerformed(ActionEvent e) { handler.cancelActivity(id); - us.setProgressBar("Cancelled "+((JLabel)progressPanel.getComponent(0)).getText(), id); + us.setProgressBar("Cancelled " + + ((JLabel) progressPanel.getComponent(0)).getText(), id); } }); progressPanel.add(cancel, BorderLayout.EAST); } } + /** * * @return true if any progress bars are still active @@ -730,6 +730,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (fileName != null) { + // TODO: work out how to recover feature settings for correct view(s) when file is reloaded. if (currentFileFormat.equals("Jalview")) { JInternalFrame[] frames = Desktop.desktop.getAllFrames(); @@ -764,7 +765,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, protocol, 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() { + public void run() + { + nfs.frame.setBounds(fspos); + } + }); + this.featureSettings.close(); + this.featureSettings=null; + } this.closeMenuItem_actionPerformed(true); } } @@ -783,8 +797,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void save_actionPerformed(ActionEvent e) { if (fileName == null - || (currentFileFormat == null - || !jalview.io.FormatAdapter.isValidIOFormat(currentFileFormat, true)) + || (currentFileFormat == null || !jalview.io.FormatAdapter + .isValidIOFormat(currentFileFormat, true)) || fileName.startsWith("http")) { saveAs_actionPerformed(null); @@ -799,7 +813,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void saveAs_actionPerformed(ActionEvent e) { @@ -866,12 +880,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (!jalview.io.AppletFormatAdapter.isValidFormat(format, true)) { - // JBPNote need to have a raise_gui flag here - JOptionPane.showInternalMessageDialog(this, "Cannot save file " - + fileName + " using format " + format, - "Alignment output format not supported", - JOptionPane.WARNING_MESSAGE); + warningMessage("Cannot save file " + fileName + " using format " + + format, "Alignment output format not supported"); saveAs_actionPerformed(null); + // JBPNote need to have a raise_gui flag here return false; } @@ -932,11 +944,26 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return success; } + private void warningMessage(String warning, String title) + { + if (new jalview.util.Platform().isHeadless()) + { + System.err.println("Warning: " + title + "\nWarning: " + warning); + + } + else + { + JOptionPane.showInternalMessageDialog(this, warning, title, + JOptionPane.WARNING_MESSAGE); + } + return; + } + /** * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void outputText_actionPerformed(ActionEvent e) { @@ -972,7 +999,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void htmlMenuItem_actionPerformed(ActionEvent e) { @@ -990,7 +1017,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void createPNG(File f) { @@ -1001,7 +1028,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void createEPS(File f) { @@ -1018,7 +1045,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void printMenuItem_actionPerformed(ActionEvent e) { @@ -1062,10 +1089,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * Close the current view or all views in the alignment frame. - * If the frame only contains one view then the alignment will be removed from memory. + * Close the current view or all views in the alignment frame. If the frame + * only contains one view then the alignment will be removed from memory. * - * @param closeAllTabs + * @param closeAllTabs */ public void closeMenuItem_actionPerformed(boolean closeAllTabs) { @@ -1080,16 +1107,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (closeAllTabs) { - for (int i = 0; i < alignPanels.size(); i++) + if (this.isClosed()) { - AlignmentPanel ap = (AlignmentPanel) alignPanels.elementAt(i); - ap.closePanel(); + // really close all the windows - otherwise wait till + // setClosed(true) is called + for (int i = 0; i < alignPanels.size(); i++) + { + AlignmentPanel ap = (AlignmentPanel) alignPanels.elementAt(i); + ap.closePanel(); + } } } else { closeView(alignPanel); - viewport = null; } } @@ -1105,6 +1136,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * close alignPanel2 and shuffle tabs appropriately. + * * @param alignPanel2 */ public void closeView(AlignmentPanel alignPanel2) @@ -1112,14 +1144,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, int index = tabbedPane.getSelectedIndex(); int closedindex = tabbedPane.indexOfComponent(alignPanel2); alignPanels.removeElement(alignPanel2); - - if (viewport == alignPanel2.av) - { - viewport = null; - } + // Unnecessary + // if (viewport == alignPanel2.av) + // { + // viewport = null; + // } alignPanel2.closePanel(); alignPanel2 = null; - + tabbedPane.removeTabAt(closedindex); tabbedPane.validate(); @@ -1129,7 +1161,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, index--; } - this.tabSelectionChanged(index); + this.tabSelectionChanged(index); } /** @@ -1171,7 +1203,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.historyList.push(command); viewport.redoList.clear(); updateEditMenuBar(); - viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + viewport.hasHiddenColumns = (viewport.colSel!=null && viewport.colSel.getHiddenColumns() != null && viewport.colSel.getHiddenColumns().size()>0); } } @@ -1203,7 +1235,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void undoMenuItem_actionPerformed(ActionEvent e) { @@ -1218,7 +1250,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (originalSource != null) { - originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + originalSource.hasHiddenColumns = (viewport.colSel!=null && viewport.colSel.getHiddenColumns() != null && viewport.colSel.getHiddenColumns().size()>0); originalSource.firePropertyChange("alignment", null, originalSource.alignment.getSequences()); } @@ -1228,7 +1260,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void redoMenuItem_actionPerformed(ActionEvent e) { @@ -1246,7 +1278,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (originalSource != null) { - originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + originalSource.hasHiddenColumns = (viewport.colSel!=null && viewport.colSel.getHiddenColumns() != null && viewport.colSel.getHiddenColumns().size()>0); originalSource.firePropertyChange("alignment", null, originalSource.alignment.getSequences()); } @@ -1298,7 +1330,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param up - * DOCUMENT ME! + * DOCUMENT ME! */ public void moveSelectedSequences(boolean up) { @@ -1445,7 +1477,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void copy_actionPerformed(ActionEvent e) { @@ -1510,7 +1542,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void pasteNew_actionPerformed(ActionEvent e) { @@ -1521,7 +1553,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void pasteThis_actionPerformed(ActionEvent e) { @@ -1532,7 +1564,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * Paste contents of Jalview clipboard * * @param newAlignment - * true to paste to a new alignment, otherwise add to this. + * true to paste to a new alignment, otherwise add to this. */ void paste(boolean newAlignment) { @@ -1801,7 +1833,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void cut_actionPerformed(ActionEvent e) { @@ -1813,7 +1845,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void delete_actionPerformed(ActionEvent evt) { @@ -1873,7 +1905,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void deleteGroups_actionPerformed(ActionEvent e) { @@ -1881,6 +1913,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.sequenceColours = null; viewport.setSelectionGroup(null); PaintRefresher.Refresh(this, viewport.getSequenceSetId()); + alignPanel.updateAnnotation(); alignPanel.paintAlignment(true); } @@ -1888,7 +1921,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void selectAllSequenceMenuItem_actionPerformed(ActionEvent e) { @@ -1910,7 +1943,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void deselectAllSequenceMenuItem_actionPerformed(ActionEvent e) { @@ -1932,7 +1965,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void invertSequenceMenuItem_actionPerformed(ActionEvent e) { @@ -1965,7 +1998,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void remove2LeftMenuItem_actionPerformed(ActionEvent e) { @@ -1976,7 +2009,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void remove2RightMenuItem_actionPerformed(ActionEvent e) { @@ -2053,7 +2086,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void removeGappedColumnMenuItem_actionPerformed(ActionEvent e) { @@ -2099,7 +2132,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void removeAllGapsMenuItem_actionPerformed(ActionEvent e) { @@ -2137,7 +2170,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void padGapsMenuitem_actionPerformed(ActionEvent e) { @@ -2145,21 +2178,22 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.firePropertyChange("alignment", null, viewport.getAlignment() .getSequences()); } - - //else + + // else { // if (justifySeqs>0) { // alignment.justify(justifySeqs!=RIGHT_JUSTIFY); } } - //} - + + // } + /** * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void findMenuItem_actionPerformed(ActionEvent e) { @@ -2229,7 +2263,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void font_actionPerformed(ActionEvent e) { @@ -2240,7 +2274,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void seqLimit_actionPerformed(ActionEvent e) { @@ -2262,14 +2296,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.centreColumnLabels = centreColumnLabelsMenuItem.getState(); alignPanel.paintAlignment(true); } - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see jalview.jbgui.GAlignFrame#followHighlight_actionPerformed() */ protected void followHighlight_actionPerformed() { if (viewport.followHighlight = this.followHighlightMenuItem.getState()) { - alignPanel.scrollToPosition(alignPanel.seqPanel.seqCanvas.searchResults, false); + alignPanel.scrollToPosition( + alignPanel.seqPanel.seqCanvas.searchResults, false); } } @@ -2277,7 +2315,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void colourTextMenuItem_actionPerformed(ActionEvent e) { @@ -2289,7 +2327,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void wrapMenuItem_actionPerformed(ActionEvent e) { @@ -2316,6 +2354,97 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.hideAllSelectedSeqs(); alignPanel.paintAlignment(true); } + /** + * called by key handler and the hide all/show all menu items + * @param toggleSeqs + * @param toggleCols + */ + private void toggleHiddenRegions(boolean toggleSeqs, + boolean toggleCols) + { + + boolean hide = false; + SequenceGroup sg = viewport.getSelectionGroup(); + if (!toggleSeqs && !toggleCols) + { + // 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.colSel!=null && viewport.colSel.getSelected()!=null && viewport.colSel.getSelected().size()>0) || (sg!=null && sg.getSize()>0 && sg.getStartRes()<=sg.getEndRes())) + { + // now invert the sequence set, if required - empty selection implies that no hiding is required. + if (sg!=null) { + invertSequenceMenuItem_actionPerformed(null); + sg = viewport.getSelectionGroup(); + toggleSeqs = true; + + } + viewport.expandColSelection(sg,true); + // finally invert the column selection and get the new sequence selection. + invertColSel_actionPerformed(null); + toggleCols = true; + } + } + + if (toggleSeqs) + { + if (sg != null + && sg.getSize() != viewport.alignment.getHeight()) + { + hideSelSequences_actionPerformed(null); + hide = true; + } + else if (!(toggleCols && viewport.colSel.getSelected().size() > 0)) + { + showAllSeqs_actionPerformed(null); + } + } + + if (toggleCols) + { + if (viewport.colSel.getSelected().size() > 0) + { + hideSelColumns_actionPerformed(null); + if (!toggleSeqs) + { + viewport.selectionGroup = sg; + } + } + else if (!hide) + { + showAllColumns_actionPerformed(null); + } + } + } + + /* (non-Javadoc) + * @see jalview.jbgui.GAlignFrame#hideAllButSelection_actionPerformed(java.awt.event.ActionEvent) + */ + public void hideAllButSelection_actionPerformed(ActionEvent e) + { + toggleHiddenRegions(false, false); + } + + /* (non-Javadoc) + * @see jalview.jbgui.GAlignFrame#hideAllSelection_actionPerformed(java.awt.event.ActionEvent) + */ + public void hideAllSelection_actionPerformed(ActionEvent e) + { + SequenceGroup sg = viewport.getSelectionGroup(); + viewport.expandColSelection(sg,false); + viewport.hideAllSelectedSeqs(); + viewport.hideSelectedColumns(); + alignPanel.paintAlignment(true); + } + + /* (non-Javadoc) + * @see jalview.jbgui.GAlignFrame#showAllhidden_actionPerformed(java.awt.event.ActionEvent) + */ + public void showAllhidden_actionPerformed(ActionEvent e) + { + viewport.showAllHiddenColumns(); + viewport.showAllHiddenSeqs(); + alignPanel.paintAlignment(true); + } public void hideSelColumns_actionPerformed(ActionEvent e) { @@ -2333,7 +2462,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void scaleAbove_actionPerformed(ActionEvent e) { @@ -2345,7 +2474,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void scaleLeft_actionPerformed(ActionEvent e) { @@ -2357,7 +2486,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void scaleRight_actionPerformed(ActionEvent e) { @@ -2369,7 +2498,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void viewBoxesMenuItem_actionPerformed(ActionEvent e) { @@ -2381,7 +2510,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void viewTextMenuItem_actionPerformed(ActionEvent e) { @@ -2393,7 +2522,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void renderGapsMenuItem_actionPerformed(ActionEvent e) { @@ -2410,6 +2539,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, featureSettings.close(); featureSettings = null; } + if (!showSeqFeatures.isSelected()) + { + // make sure features are actually displayed + showSeqFeatures.setSelected(true); + showSeqFeatures_actionPerformed(null); + } featureSettings = new FeatureSettings(this); } @@ -2417,7 +2552,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * Set or clear 'Show Sequence Features' * * @param evt - * DOCUMENT ME! + * DOCUMENT ME! */ public void showSeqFeatures_actionPerformed(ActionEvent evt) { @@ -2428,15 +2563,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel.getOverviewPanel().updateOverviewImage(); } } + /** * Set or clear 'Show Sequence Features' * * @param evt - * DOCUMENT ME! + * DOCUMENT ME! */ public void showSeqFeaturesHeight_actionPerformed(ActionEvent evt) { - viewport.setShowSequenceFeaturesHeight(showSeqFeaturesHeight.isSelected()); + viewport.setShowSequenceFeaturesHeight(showSeqFeaturesHeight + .isSelected()); if (viewport.getShowSequenceFeaturesHeight()) { // ensure we're actually displaying features @@ -2454,7 +2591,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void annotationPanelMenuItem_actionPerformed(ActionEvent e) { @@ -2529,7 +2666,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void overviewMenuItem_actionPerformed(ActionEvent e) { @@ -2567,7 +2704,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void noColourmenuItem_actionPerformed(ActionEvent e) { @@ -2578,7 +2715,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void clustalColour_actionPerformed(ActionEvent e) { @@ -2591,7 +2728,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void zappoColour_actionPerformed(ActionEvent e) { @@ -2602,7 +2739,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void taylorColour_actionPerformed(ActionEvent e) { @@ -2613,7 +2750,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void hydrophobicityColour_actionPerformed(ActionEvent e) { @@ -2624,7 +2761,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void helixColour_actionPerformed(ActionEvent e) { @@ -2635,7 +2772,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void strandColour_actionPerformed(ActionEvent e) { @@ -2646,7 +2783,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void turnColour_actionPerformed(ActionEvent e) { @@ -2657,7 +2794,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void buriedColour_actionPerformed(ActionEvent e) { @@ -2668,7 +2805,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void nucleotideColour_actionPerformed(ActionEvent e) { @@ -2684,7 +2821,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void applyToAllGroups_actionPerformed(ActionEvent e) { @@ -2695,7 +2832,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param cs - * DOCUMENT ME! + * DOCUMENT ME! */ public void changeColour(ColourSchemeI cs) { @@ -2820,7 +2957,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void modifyPID_actionPerformed(ActionEvent e) { @@ -2837,7 +2974,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void modifyConservation_actionPerformed(ActionEvent e) { @@ -2854,7 +2991,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void conservationMenuItem_actionPerformed(ActionEvent e) { @@ -2872,7 +3009,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void abovePIDThreshold_actionPerformed(ActionEvent e) { @@ -2890,7 +3027,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void userDefinedColour_actionPerformed(ActionEvent e) { @@ -2983,7 +3120,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void PIDColour_actionPerformed(ActionEvent e) { @@ -2994,7 +3131,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void BLOSUM62Colour_actionPerformed(ActionEvent e) { @@ -3005,7 +3142,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void sortPairwiseMenuItem_actionPerformed(ActionEvent e) { @@ -3021,7 +3158,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void sortIDMenuItem_actionPerformed(ActionEvent e) { @@ -3030,17 +3167,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, addHistoryItem(new OrderCommand("ID Sort", oldOrder, viewport.alignment)); alignPanel.paintAlignment(true); } + /** * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void sortLengthMenuItem_actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortByLength(viewport.getAlignment()); - addHistoryItem(new OrderCommand("Length Sort", oldOrder, viewport.alignment)); + addHistoryItem(new OrderCommand("Length Sort", oldOrder, + viewport.alignment)); alignPanel.paintAlignment(true); } @@ -3048,7 +3187,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void sortGroupMenuItem_actionPerformed(ActionEvent e) { @@ -3064,7 +3203,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void removeRedundancyMenuItem_actionPerformed(ActionEvent e) { @@ -3075,7 +3214,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void pairwiseAlignmentMenuItem_actionPerformed(ActionEvent e) { @@ -3098,7 +3237,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void PCAMenuItem_actionPerformed(ActionEvent e) { @@ -3133,7 +3272,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void averageDistanceTreeMenuItem_actionPerformed(ActionEvent e) { @@ -3144,7 +3283,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ public void neighbourTreeMenuItem_actionPerformed(ActionEvent e) { @@ -3155,7 +3294,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void njTreeBlosumMenuItem_actionPerformed(ActionEvent e) { @@ -3166,7 +3305,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void avTreeBlosumMenuItem_actionPerformed(ActionEvent e) { @@ -3177,11 +3316,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param type - * DOCUMENT ME! + * DOCUMENT ME! * @param pwType - * DOCUMENT ME! + * DOCUMENT ME! * @param title - * DOCUMENT ME! + * DOCUMENT ME! */ void NewTreePanel(String type, String pwType, String title) { @@ -3226,8 +3365,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - // are the sequences aligned? - if (!viewport.alignment.isAligned()) + // are the visible sequences aligned? + if (!viewport.alignment.isAligned(false)) { JOptionPane .showMessageDialog( @@ -3265,9 +3404,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param title - * DOCUMENT ME! + * DOCUMENT ME! * @param order - * DOCUMENT ME! + * DOCUMENT ME! */ public void addSortByOrderMenuItem(String title, final AlignmentOrder order) @@ -3296,10 +3435,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * Add a new sort by annotation score menu item * * @param sort - * the menu to add the option to + * the menu to add the option to * @param scoreLabel - * the label used to retrieve scores for each sequence on the - * alignment + * the label used to retrieve scores for each sequence on the + * alignment */ public void addSortByAnnotScoreMenuItem(JMenu sort, final String scoreLabel) @@ -3379,9 +3518,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * modified. * * @param treePanel - * Displayed tree window. + * Displayed tree window. * @param title - * SortBy menu item title. + * SortBy menu item title. */ public void buildTreeMenu() { @@ -3496,10 +3635,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // jobs // TODO: viewport.alignment.isAligned is a global state - the local // selection may well be aligned - we preserve 2.0.8 behaviour for moment. - if (!viewport.alignment.isAligned()) + if (!viewport.alignment.isAligned(false)) { seqs.setSequences(new SeqCigar[] { seqs.getSequences()[0] }); + // TODO: if seqs.getSequences().length>1 then should really have warned user! + } return seqs; } @@ -3508,7 +3649,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! * * @param e - * DOCUMENT ME! + * DOCUMENT ME! */ protected void LoadtreeMenuItem_actionPerformed(ActionEvent e) { @@ -3567,19 +3708,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * current alignment view * * @param nf - * the tree + * the tree * @param title - * tree viewer title + * tree viewer title * @param input - * Associated alignment input data (or null) + * Associated alignment input data (or null) * @param w - * width + * width * @param h - * height + * height * @param x - * position + * position * @param y - * position + * position * @return TreePanel handle */ public TreePanel ShowNewickTree(NewickFile nf, String title, @@ -3679,9 +3820,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .getServiceClient(sh); impl.attachWSMenuEntry(seqsrchmenu, this); } - // finally, add the whole shebang onto the webservices menu wsmenu.add(seqsrchmenu); } + // finally, add the whole shebang onto the webservices menu resetWebServiceMenu(); for (int i = 0, j = wsmenu.size(); i < j; i++) { @@ -3704,6 +3845,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { webService.removeAll(); build_fetchdbmenu(webService); + build_urlServiceMenu(webService); + } + + /** + * construct any groupURL type service menu entries. + * @param webService + */ + private void build_urlServiceMenu(JMenu webService) + { + jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry(webService, this); } /* @@ -3757,9 +3908,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, showProducts.removeAll(); final boolean dna = viewport.getAlignment().isNucleotide(); final Alignment ds = dataset; - String[] ptypes = (selection==null || selection.length==0) ? null - : CrossRef.findSequenceXrefTypes(dna, selection, - dataset); + String[] ptypes = (selection == null || selection.length == 0) ? null + : CrossRef.findSequenceXrefTypes(dna, selection, dataset); // Object[] prods = // CrossRef.buildXProductsList(viewport.getAlignment().isNucleotide(), // selection, dataset, true); @@ -3965,9 +4115,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * Try to load a features file onto the alignment. * * @param file - * contents or path to retrieve file + * contents or path to retrieve file * @param type - * access mode of file (see jalview.io.AlignFile) + * access mode of file (see jalview.io.AlignFile) * @return true if features file was parsed corectly. */ public boolean parseFeaturesFile(String file, String type) @@ -3987,11 +4137,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { viewport.showSequenceFeatures = true; showSeqFeatures.setSelected(true); - if (alignPanel.seqPanel.seqCanvas.fr!=null) + if (alignPanel.seqPanel.seqCanvas.fr != null) { // update the min/max ranges where necessary alignPanel.seqPanel.seqCanvas.fr.findAllFeatures(true); } + if (featureSettings!=null) + { + featureSettings.setTableData(); + } alignPanel.paintAlignment(true); } @@ -4047,8 +4201,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } java.net.URI uri = new java.net.URI(s); - java.io.File file = new java.io.File(uri); - files.add(file); + // check to see if we can handle this kind of URI + if (uri.getScheme().toLowerCase().startsWith("http")) + { + files.add(uri.toString()); + } + else + { + // otherwise preserve old behaviour: catch all for file objects + java.io.File file = new java.io.File(uri); + files.add(file.toString()); + } } } } catch (Exception e) @@ -4072,23 +4235,24 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * Attempt to load a "dropped" file: First by testing whether it's and - * Annotation file, then a JNet file, and finally a features file. If all are - * false then the user may have dropped an alignment file onto this + * Attempt to load a "dropped" file or URL string: First by testing whether + * it's and Annotation file, then a JNet file, and finally a features file. If + * all are false then the user may have dropped an alignment file onto this * AlignFrame. * * @param file - * either a filename or a URL string. + * either a filename or a URL string. */ public void loadJalviewDataFile(String file) { try { - String protocol = "File"; - - if (file.indexOf("http:") > -1 || file.indexOf("file:") > -1) + String protocol = jalview.io.FormatAdapter.FILE; + String f = file.toLowerCase(); + if (f.indexOf("http:") == 0 || f.indexOf("https:") == 0 + || f.indexOf("file:") == 0) { - protocol = "URL"; + protocol = jalview.io.FormatAdapter.URL; } boolean isAnnotation = new AnnotationFile().readAnnotationFile( @@ -4186,16 +4350,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } - /* (non-Javadoc) - * @see jalview.jbgui.GAlignFrame#showDbRefs_actionPerformed(java.awt.event.ActionEvent) + /* + * (non-Javadoc) + * + * @see + * jalview.jbgui.GAlignFrame#showDbRefs_actionPerformed(java.awt.event.ActionEvent + * ) */ protected void showDbRefs_actionPerformed(ActionEvent e) { viewport.setShowDbRefs(showDbRefsMenuitem.isSelected()); } - /* (non-Javadoc) - * @see jalview.jbgui.GAlignFrame#showNpFeats_actionPerformed(java.awt.event.ActionEvent) + /* + * (non-Javadoc) + * + * @seejalview.jbgui.GAlignFrame#showNpFeats_actionPerformed(java.awt.event. + * ActionEvent) */ protected void showNpFeats_actionPerformed(ActionEvent e) { @@ -4203,7 +4374,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * find the viewport amongst the tabs in this alignment frame and close that tab + * find the viewport amongst the tabs in this alignment frame and close that + * tab + * * @param av */ public boolean closeView(AlignViewport av) @@ -4214,7 +4387,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return true; } Component[] comp = tabbedPane.getComponents(); - for (int i=0;comp!=null && i0) + int comp = 0, mcomp = 15; + String mname = null; + if (otherdb != null && otherdb.length > 0) { - for (int i=0; i