X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=3f0d73667f83e60537de6409005f48182d638d6c;hb=838e4f91d4a53dd315640dbc9ff6ef7a815ee576;hp=0225dc7554b17eae3684b49fe36ad0d62f797587;hpb=fddf3084802b37e5cee17829e32692a4aac3e60d;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 0225dc7..3f0d736 100644 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) - * Copyright (C) $$Year-Rel$$ The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1) + * Copyright (C) 2015 The Jalview Authors * * This file is part of Jalview. * @@ -60,7 +60,6 @@ import jalview.schemes.NucleotideColourScheme; import jalview.schemes.PIDColourScheme; import jalview.schemes.PurinePyrimidineColourScheme; import jalview.schemes.RNAHelicesColourChooser; -import jalview.schemes.RNAInteractionColourScheme; import jalview.schemes.StrandColourScheme; import jalview.schemes.TCoffeeColourScheme; import jalview.schemes.TaylorColourScheme; @@ -76,6 +75,7 @@ import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.CheckboxMenuItem; import java.awt.Color; +import java.awt.FlowLayout; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Frame; @@ -84,6 +84,7 @@ import java.awt.Label; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; +import java.awt.Panel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; @@ -140,8 +141,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, * @param title * @param embedded */ - public AlignFrame(AlignmentI al, JalviewLite applet, - String title, boolean embedded) + public AlignFrame(AlignmentI al, JalviewLite applet, String title, + boolean embedded) { this(al, applet, title, embedded, true); } @@ -156,8 +157,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, * @param embedded * @param addToDisplay */ - public AlignFrame(AlignmentI al, JalviewLite applet, - String title, boolean embedded, boolean addToDisplay) + public AlignFrame(AlignmentI al, JalviewLite applet, String title, + boolean embedded, boolean addToDisplay) { this(al, null, null, applet, title, embedded, addToDisplay); } @@ -233,8 +234,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, normSequenceLogo.setState(viewport.isNormaliseSequenceLogo()); applyToAllGroups.setState(viewport.getColourAppliesToAllGroups()); annotationPanelMenuItem.setState(viewport.isShowAnnotation()); - showAlignmentAnnotations.setState(viewport.isShowAnnotation()); - showSequenceAnnotations.setState(viewport.isShowAnnotation()); + showAlignmentAnnotations.setEnabled(annotationPanelMenuItem.getState()); + showSequenceAnnotations.setEnabled(annotationPanelMenuItem.getState()); + showAlignmentAnnotations.setState(true); + showSequenceAnnotations.setState(false); seqLimits.setState(viewport.getShowJVSuffix()); @@ -303,6 +306,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, alignPanel.annotationSpaceFillerHolder.addKeyListener(this); alignPanel.alabels.addKeyListener(this); + setAnnotationsVisibility(); + if (addToDisplay) { addToDisplay(embedded); @@ -366,11 +371,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, boolean featuresFile = false; try { - featuresFile = new jalview.io.FeaturesFile(file, type) - .parse(viewport.getAlignment(), alignPanel.seqPanel.seqCanvas - .getFeatureRenderer().getFeatureColours(), featureLinks, - true, viewport.applet.getDefaultParameter( - "relaxedidmatch", false)); + featuresFile = new jalview.io.FeaturesFile(file, type).parse(viewport + .getAlignment(), alignPanel.seqPanel.seqCanvas + .getFeatureRenderer().getFeatureColours(), featureLinks, + true, viewport.applet.getDefaultParameter("relaxedidmatch", + false)); } catch (Exception ex) { ex.printStackTrace(); @@ -553,8 +558,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, case KeyEvent.VK_F2: viewport.cursorMode = !viewport.cursorMode; statusBar.setText(MessageManager.formatMessage( - "label.keyboard_editing_mode", new String[] - { (viewport.cursorMode ? "on" : "off") })); + "label.keyboard_editing_mode", + new String[] { (viewport.cursorMode ? "on" : "off") })); if (viewport.cursorMode) { alignPanel.seqPanel.seqCanvas.cursorX = viewport.startRes; @@ -813,8 +818,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } else if (source == annotationPanelMenuItem) { - viewport.setShowAnnotation(annotationPanelMenuItem.getState()); - alignPanel.setAnnotationVisible(annotationPanelMenuItem.getState()); + boolean showAnnotations = annotationPanelMenuItem.getState(); + showAlignmentAnnotations.setEnabled(showAnnotations); + showSequenceAnnotations.setEnabled(showAnnotations); + viewport.setShowAnnotation(showAnnotations); + alignPanel.setAnnotationVisible(showAnnotations); } else if (source == sequenceFeatures) { @@ -914,7 +922,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, /** * Set the visibility state of sequence-related and/or alignment-related - * annotations depending on checkbox selections. Repaint after calling. + * annotations depending on checkbox selections, and repaint. * * @param visible */ @@ -927,7 +935,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { boolean visible = (aa.sequenceRef == null ? showForAlignment : showForSequences); - aa.visible = visible; + aa.visible = visible; } alignPanel.validateAnnotationDimensions(true); validate(); @@ -970,6 +978,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, @Override public void actionPerformed(ActionEvent evt) { + viewport.applet.currentAlignFrame = this; + Object source = evt.getSource(); if (source == inputText) @@ -1178,8 +1188,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, Frame frame = new Frame(); frame.add(cap); jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage( - "label.alignment_properties", new String[] - { getTitle() }), 400, 250); + "label.alignment_properties", new String[] { getTitle() }), + 400, 250); } else if (source == overviewMenuItem) { @@ -1230,10 +1240,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { changeColour(new PurinePyrimidineColourScheme()); } - else if (source == RNAInteractionColour) - { - changeColour(new RNAInteractionColourScheme()); - } + // else if (source == RNAInteractionColour) + // { + // changeColour(new RNAInteractionColourScheme()); + // } else if (source == RNAHelixColour) { new RNAHelicesColourChooser(viewport, alignPanel); @@ -1340,8 +1350,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, Frame frame = new Frame(); frame.add(cap); jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage( - "label.alignment_output_command", new Object[] - { e.getActionCommand() }), 600, 500); + "label.alignment_output_command", + new Object[] { e.getActionCommand() }), 600, 500); FeatureRenderer fr = this.alignPanel.cloneFeatureRenderer(); cap.setText(new AppletFormatAdapter(alignPanel).formatSequences( @@ -1380,13 +1390,13 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, return annotation; } - private Map getDisplayedFeatureCols() + private Map getDisplayedFeatureCols() { if (alignPanel.getFeatureRenderer() != null - && viewport.getFeaturesDisplayed()!= null) + && viewport.getFeaturesDisplayed() != null) { return alignPanel.getFeatureRenderer().getDisplayedFeatureCols(); - + } return null; } @@ -1569,8 +1579,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, undoMenuItem.setEnabled(true); CommandI command = viewport.getHistoryList().peek(); undoMenuItem.setLabel(MessageManager.formatMessage( - "label.undo_command", new Object[] - { command.getDescription() })); + "label.undo_command", + new Object[] { command.getDescription() })); } else { @@ -1584,8 +1594,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, CommandI command = viewport.getRedoList().peek(); redoMenuItem.setLabel(MessageManager.formatMessage( - "label.redo_command", new Object[] - { command.getDescription() })); + "label.redo_command", + new Object[] { command.getDescription() })); } else { @@ -1742,9 +1752,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewport, complement); complement.getAlignment().moveSelectedSequencesByOne(mappedSelection, up ? null : complement.getHiddenRepSequences(), up); - // TODO need to trigger a repaint of the complementary panel - how? - // would prefer to handle in SplitFrame but it is not overriding key - // listener chiz + getSplitFrame().getComplement(this).alignPanel.paintAlignment(true); } } @@ -1880,8 +1888,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, int hiddenOffset = viewport.getSelectionGroup().getStartRes(); for (int[] region : viewport.getColumnSelection().getHiddenColumns()) { - copiedHiddenColumns.addElement(new int[] - { region[0] - hiddenOffset, region[1] - hiddenOffset }); + copiedHiddenColumns.addElement(new int[] { + region[0] - hiddenOffset, region[1] - hiddenOffset }); } } else @@ -1978,14 +1986,17 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (newAlignment) { - String newtitle = MessageManager.getString("label.copied_sequences"); - if (getTitle().startsWith(MessageManager.getString("label.copied_sequences"))) + String newtitle = MessageManager + .getString("label.copied_sequences"); + if (getTitle().startsWith( + MessageManager.getString("label.copied_sequences"))) { newtitle = getTitle(); } else { - newtitle = newtitle.concat(MessageManager.formatMessage("label.from_msname", new String[]{getTitle()})); + newtitle = newtitle.concat(MessageManager.formatMessage( + "label.from_msname", new String[] { getTitle() })); } AlignFrame af = new AlignFrame(new Alignment(newSeqs), viewport.applet, newtitle, false); @@ -2055,9 +2066,32 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, seqs.addElement(seq); } - // If the cut affects all sequences, remove highlighted columns + /* + * If the cut affects all sequences, warn, remove highlighted columns + */ if (sg.getSize() == viewport.getAlignment().getHeight()) { + boolean isEntireAlignWidth = (((sg.getEndRes() - sg.getStartRes()) + 1) == viewport + .getAlignment().getWidth()) ? true : false; + if (isEntireAlignWidth) + { + String title = MessageManager.getString("label.delete_all"); + Panel infoPanel = new Panel(); + infoPanel.setLayout(new FlowLayout()); + infoPanel + .add(new Label(MessageManager.getString("warn.delete_all"))); + + final JVDialog dialog = new JVDialog(this, title, true, 400, 200); + dialog.setMainPanel(infoPanel); + dialog.ok.setLabel(MessageManager.getString("action.ok")); + dialog.cancel.setLabel(MessageManager.getString("action.cancel")); + dialog.setVisible(true); + + if (!dialog.accept) + { + return; + } + } viewport.getColumnSelection().removeElements(sg.getStartRes(), sg.getEndRes() + 1); } @@ -2275,8 +2309,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } statusBar.setText(MessageManager.formatMessage( - "label.removed_columns", new String[] - { Integer.valueOf(trimRegion.getSize()).toString() })); + "label.removed_columns", + new String[] { Integer.valueOf(trimRegion.getSize()) + .toString() })); addHistoryItem(trimRegion); for (SequenceGroup sg : viewport.getAlignment().getGroups()) @@ -2317,8 +2352,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, addHistoryItem(removeGapCols); statusBar.setText(MessageManager.formatMessage( - "label.removed_empty_columns", new String[] - { Integer.valueOf(removeGapCols.getSize()).toString() })); + "label.removed_empty_columns", + new String[] { Integer.valueOf(removeGapCols.getSize()) + .toString() })); // This is to maintain viewport position on first residue // of first sequence @@ -2500,7 +2536,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (alignPanel != null && (fr = alignPanel.getFeatureRenderer()) != null) { - + fr.setGroupVisibility(Arrays.asList(groups), state); alignPanel.seqPanel.seqCanvas.repaint(); if (alignPanel.overviewPanel != null) @@ -2551,8 +2587,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, frame.add(overview); // +50 must allow for applet frame window jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage( - "label.overview_params", new String[] - { this.getTitle() }), overview.getPreferredSize().width, + "label.overview_params", new String[] { this.getTitle() }), + overview.getPreferredSize().width, overview.getPreferredSize().height + 50); frame.pack(); @@ -2575,7 +2611,6 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, public void changeColour(ColourSchemeI cs) { - int threshold = 0; if (cs != null) { @@ -2598,15 +2633,6 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } viewport.setGlobalColourScheme(cs); - if (alignPanel.getOverviewPanel() != null) - { - alignPanel.getOverviewPanel().updateOverviewImage(); - } - - jalview.structure.StructureSelectionManager - .getStructureSelectionManager(viewport.applet) - .sequenceColoursChanged(alignPanel); - alignPanel.paintAlignment(true); } @@ -2838,8 +2864,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // addHistoryItem(new HistoryItem("Sort", viewport.alignment, // HistoryItem.SORT)); addHistoryItem(new OrderCommand(MessageManager.formatMessage( - "label.order_by_params", new String[] - { title }), oldOrder, viewport.getAlignment())); + "label.order_by_params", new String[] { title }), oldOrder, + viewport.getAlignment())); alignPanel.paintAlignment(true); } @@ -2936,12 +2962,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // lite and application g.setFont(new Font("Helvetica", Font.BOLD, 14)); g.drawString(MessageManager.formatMessage( - "label.jalviewLite_release", new String[] - { version }), x, y += fh); + "label.jalviewLite_release", new String[] { version }), x, + y += fh); g.setFont(new Font("Helvetica", Font.BOLD, 12)); g.drawString(MessageManager.formatMessage( - "label.jaview_build_date", new String[] - { builddate }), x, y += fh); + "label.jaview_build_date", new String[] { builddate }), x, + y += fh); g.setFont(new Font("Helvetica", Font.PLAIN, 12)); g.drawString(MessageManager.getString("label.jalview_authors_1"), x, y += fh * 1.5); @@ -3002,10 +3028,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, MessageManager.getString("label.load_features_annotations")); MenuItem outputFeatures = new MenuItem( - MessageManager.getString("label.export_features").concat("...")); + MessageManager.getString("label.export_features")); MenuItem outputAnnotations = new MenuItem( - MessageManager.getString("label.export_annotations").concat("...")); + MessageManager.getString("label.export_annotations")); MenuItem closeMenuItem = new MenuItem( MessageManager.getString("action.close")); @@ -3071,7 +3097,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, MenuItem purinePyrimidineColour = new MenuItem(); - MenuItem RNAInteractionColour = new MenuItem(); + // MenuItem RNAInteractionColour = new MenuItem(); MenuItem RNAHelixColour = new MenuItem(); @@ -3254,8 +3280,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, removeAllGapsMenuItem.setLabel(MessageManager .getString("action.remove_all_gaps")); removeAllGapsMenuItem.addActionListener(this); - removeRedundancyMenuItem.setLabel(MessageManager.getString( - "action.remove_redundancy").concat("...")); + removeRedundancyMenuItem.setLabel(MessageManager + .getString("action.remove_redundancy")); removeRedundancyMenuItem.addActionListener(this); /* @@ -3279,7 +3305,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, grpsFromSelection.addActionListener(this); createGroup.setLabel(MessageManager.getString("action.create_group")); unGroup.setLabel(MessageManager.getString("action.remove_group")); - annotationColumnSelection.setLabel("Select by Annotation"); + annotationColumnSelection.setLabel(MessageManager + .getString("action.select_by_annotation")); annotationColumnSelection.addActionListener(this); /* @@ -3309,7 +3336,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, hideAllSelection.addActionListener(this); showAllHidden.addActionListener(this); featureSettings.setLabel(MessageManager - .getString("label.feature_settings")); + .getString("action.feature_settings")); featureSettings.addActionListener(this); sequenceFeatures.setLabel(MessageManager .getString("label.show_sequence_features")); @@ -3360,8 +3387,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, MessageManager.getString("label.sort_annotations_by_label")); showAutoFirst = new CheckboxMenuItem( MessageManager.getString("label.show_first")); + showAutoFirst.setState(false); // pending applet parameter + setShowAutoCalculatedAbove(showAutoFirst.getState()); showAutoLast = new CheckboxMenuItem( MessageManager.getString("label.show_last")); + showAutoLast.setState(!showAutoFirst.getState()); showAlignmentAnnotations.addItemListener(this); showSequenceAnnotations.addItemListener(this); sortAnnBySequence.addItemListener(this); @@ -3441,9 +3471,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, purinePyrimidineColour.setLabel(MessageManager .getString("label.purine_pyrimidine")); purinePyrimidineColour.addActionListener(this); - RNAInteractionColour.setLabel(MessageManager - .getString("label.rna_interaction")); - RNAInteractionColour.addActionListener(this); + // RNAInteractionColour.setLabel(MessageManager + // .getString("label.rna_interaction")); + // RNAInteractionColour.addActionListener(this); RNAHelixColour.setLabel(MessageManager .getString("action.by_rna_helixes")); RNAHelixColour.addActionListener(this); @@ -3806,8 +3836,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, add(statusBar, BorderLayout.SOUTH); add(alignPanel, BorderLayout.CENTER); // and register with the applet so it can pass external API calls to us - jalview.bin.JalviewLite.addFrame(this, this.getTitle(), - frameWidth, + jalview.bin.JalviewLite.addFrame(this, this.getTitle(), frameWidth, frameHeight); } } @@ -3923,8 +3952,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // TODO: search for a jmv that involves viewer if (jmv == null) { // create a new viewer/jalview binding. - jmv = new ExtJmol(viewer, alignPanel, new SequenceI[][] - { seqs }); + jmv = new ExtJmol(viewer, alignPanel, new SequenceI[][] { seqs }); } return jmv; @@ -3950,7 +3978,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, boolean needtoadd = false; if (toaddpdb != null) { - Vector pdbe = toaddpdb.getPDBId(); + Vector pdbe = toaddpdb.getAllPDBEntries(); PDBEntry pdbentry = null; if (pdbe != null && pdbe.size() > 0) { @@ -4007,8 +4035,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { if (seqs[i] != null) { - sequences.addElement(new Object[] - { seqs[i], (chains != null) ? chains[i] : null }); + sequences.addElement(new Object[] { seqs[i], + (chains != null) ? chains[i] : null }); } } seqs = new SequenceI[sequences.size()]; @@ -4021,8 +4049,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, chains[i] = (String) oj[1]; } } - return new Object[] - { seqs, chains }; + return new Object[] { seqs, chains }; } @@ -4210,7 +4237,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, this.splitFrame = sf; } - // may not need this + // may not need this @Override public void setShowSeqFeatures(boolean b) { @@ -4225,6 +4252,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // setMenusFromViewport(viewport); } + @Override public void refreshFeatureUI(boolean enableIfNecessary) {