X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=3ebc083686899da4af6d99789d67a8ac60c63a3c;hb=d5c5166fcfbdaec2297d68e1e47a869e3bf2049b;hp=80b01d0ce2da74bb150583837d7d1c96fb40b8d1;hpb=0fb619a3584d17c65273964abe933701d41d0233;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 80b01d0..3ebc083 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 2.6) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle * * This file is part of Jalview. * @@ -69,12 +69,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewport.updateConsensus(alignPanel); annotationPanelMenuItem.setState(viewport.showAnnotation); - displayNonconservedMenuItem.setState(viewport.getShowunconserved()); + displayNonconservedMenuItem.setState(viewport.getShowUnconserved()); followMouseOverFlag.setState(viewport.getFollowHighlight()); - showGroupConsensus.setState(viewport.showGroupConsensus); - showGroupConservation.setState(viewport.showGroupConservation); - showConsensusHistogram.setState(viewport.showConsensusHistogram); - showSequenceLogo.setState(viewport.showSequenceLogo); + showGroupConsensus.setState(viewport.isShowGroupConsensus()); + showGroupConservation.setState(viewport.isShowGroupConservation()); + showConsensusHistogram.setState(viewport.isShowConsensusHistogram()); + showSequenceLogo.setState(viewport.isShowSequenceLogo()); seqLimits.setState(viewport.showJVSuffix); @@ -161,20 +161,32 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } /** - * DOCUMENT ME! + * Load a features file onto the alignment * - * @param String - * DOCUMENT ME! + * @param file file URL, content, or other resolvable path + * @param type is protocol for accessing data referred to by file */ public void parseFeaturesFile(String file, String type) { + parseFeaturesFile(file, type, true); + } + + /** + * Load a features file onto the alignment + * + * @param file file URL, content, or other resolvable path + * @param type is protocol for accessing data referred to by file + * @param autoenabledisplay when true, display features flag will be automatically enabled if features are loaded + */ + public void parseFeaturesFile(String file, String type, boolean autoenabledisplay) + { Hashtable featureLinks = new Hashtable(); boolean featuresFile = false; try { featuresFile = new jalview.io.FeaturesFile(file, type) - .parse(viewport.alignment, + .parse(viewport.getAlignment(), alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureColours, featureLinks, true, viewport.applet.getDefaultParameter("relaxedidmatch", false)); } catch (Exception ex) @@ -188,8 +200,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureLinks = featureLinks; } - viewport.showSequenceFeatures = true; - sequenceFeatures.setState(true); + if (autoenabledisplay) + { + viewport.showSequenceFeatures = true; + sequenceFeatures.setState(true); + } if (viewport.featureSettings != null) { viewport.featureSettings.refreshTable(); @@ -473,7 +488,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // 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 + if ((viewport.getColumnSelection() != null && viewport.getColumnSelection().getSelected() != null && viewport.getColumnSelection() .getSelected().size() > 0) || (sg != null && sg.getSize() > 0 && sg.getStartRes() <= sg .getEndRes())) @@ -497,12 +512,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (toggleSeqs) { - if (sg != null && sg.getSize() != viewport.alignment.getHeight()) + if (sg != null && sg.getSize() != viewport.getAlignment().getHeight()) { hide = true; viewport.hideAllSelectedSeqs(); } - else if (!(toggleCols && viewport.colSel.getSelected().size() > 0)) + else if (!(toggleCols && viewport.getColumnSelection().getSelected().size() > 0)) { viewport.showAllHiddenSeqs(); } @@ -510,12 +525,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (toggleCols) { - if (viewport.colSel.getSelected().size() > 0) + if (viewport.getColumnSelection().getSelected().size() > 0) { viewport.hideSelectedColumns(); if (!toggleSeqs) { - viewport.selectionGroup = sg; + viewport.setSelectionGroup(sg); } } else if (!hide) @@ -599,7 +614,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } else if (evt.getSource() == autoCalculate) { - viewport.autocalculateConsensus = autoCalculate.getState(); + viewport.autoCalculateConsensus = autoCalculate.getState(); + } + else if (evt.getSource() == sortByTree) + { + viewport.sortByTree = sortByTree.getState(); } else if (evt.getSource() == this.centreColumnLabelFlag) { @@ -845,7 +864,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, else if (source == alProperties) { StringBuffer contents = new jalview.io.AlignmentProperties( - viewport.alignment).formatAsString(); + viewport.getAlignment()).formatAsString(); CutAndPasteTransfer cap = new CutAndPasteTransfer(false, this); cap.setText(contents.toString()); Frame frame = new Frame(); @@ -865,8 +884,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { abovePIDThreshold.setState(false); changeColour(new ClustalxColourScheme( - viewport.alignment.getSequences(), - viewport.alignment.getWidth())); + viewport.getAlignment().getSequences(), + viewport.getAlignment().getWidth())); } else if (source == zappoColour) { @@ -1013,10 +1032,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, public String outputAnnotations(boolean displayTextbox) { String annotation = new AnnotationFile().printAnnotations( - viewport.showAnnotation ? viewport.alignment - .getAlignmentAnnotation() : null, viewport.alignment + viewport.showAnnotation ? viewport.getAlignment() + .getAlignmentAnnotation() : null, viewport.getAlignment() .getGroups(), - ((Alignment) viewport.alignment).alignmentProperties); + ((Alignment) viewport.getAlignment()).alignmentProperties); if (displayTextbox) { @@ -1032,7 +1051,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, private Hashtable getDisplayedFeatureCols() { - if (alignPanel.getFeatureRenderer() != null) + if (alignPanel.getFeatureRenderer() != null && viewport.featuresDisplayed!=null) { FeatureRenderer fr = alignPanel.getFeatureRenderer(); Hashtable fcols = new Hashtable(); @@ -1053,24 +1072,37 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (format.equalsIgnoreCase("Jalview")) { features = new FeaturesFile().printJalviewFormat( - viewport.alignment.getSequencesArray(), + viewport.getAlignment().getSequencesArray(), getDisplayedFeatureCols()); } else { features = new FeaturesFile().printGFFFormat( - viewport.alignment.getSequencesArray(), + viewport.getAlignment().getSequencesArray(), getDisplayedFeatureCols()); } if (displayTextbox) { - CutAndPasteTransfer cap = new CutAndPasteTransfer(false, this); + boolean frimport=false; + if (features==null || features.equals("No Features Visible")) + { + features = "# No features visible - paste some and import them here."; + frimport=true; + } + + CutAndPasteTransfer cap = new CutAndPasteTransfer(frimport, this); + if (frimport) + { + cap.setAnnotationImport(); + } Frame frame = new Frame(); frame.add(cap); jalview.bin.JalviewLite.addFrame(frame, "Features", 600, 500); - cap.setText(features); + } else { + if (features==null) + features = ""; } return features; @@ -1222,7 +1254,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewport.historyList.push(command); viewport.redoList.removeAllElements(); updateEditMenuBar(); - viewport.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + viewport.updateHiddenColumns(); } } @@ -1244,11 +1276,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, command.undoCommand(null); AlignViewport originalSource = getOriginatingSource(command); - - originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + // JBPNote Test + if (originalSource!=viewport) { + System.err.println("Warning: Viewport object mismatch whilst undoing"); + } + originalSource.updateHiddenColumns(); // originalSource.hasHiddenColumns = viewport.getColumnSelection().getHiddenColumns() != null; updateEditMenuBar(); originalSource.firePropertyChange("alignment", null, - originalSource.alignment.getSequences()); + originalSource.getAlignment().getSequences()); } /** @@ -1269,11 +1304,15 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, command.doCommand(null); AlignViewport originalSource = getOriginatingSource(command); - originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; + // JBPNote Test + if (originalSource!=viewport) { + System.err.println("Warning: Viewport object mismatch whilst re-doing"); + } + originalSource.updateHiddenColumns(); //sethasHiddenColumns(); = viewport.getColumnSelection().getHiddenColumns() != null; updateEditMenuBar(); originalSource.firePropertyChange("alignment", null, - originalSource.alignment.getSequences()); + originalSource.getAlignment().getSequences()); } AlignViewport getOriginatingSource(CommandI command) @@ -1293,7 +1332,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { if (comps.elementAt(i) instanceof AlignmentPanel) { - if (al == ((AlignmentPanel) comps.elementAt(i)).av.alignment) + if (al == ((AlignmentPanel) comps.elementAt(i)).av.getAlignment()) { originalSource = ((AlignmentPanel) comps.elementAt(i)).av; break; @@ -1308,7 +1347,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // the current view against the closed view first if (al != null) { - PaintRefresher.validateSequences(al, viewport.alignment); + PaintRefresher.validateSequences(al, viewport.getAlignment()); } originalSource = viewport; @@ -1327,42 +1366,42 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (up) { - for (int i = 1; i < viewport.alignment.getHeight(); i++) + for (int i = 1; i < viewport.getAlignment().getHeight(); i++) { - SequenceI seq = viewport.alignment.getSequenceAt(i); + SequenceI seq = viewport.getAlignment().getSequenceAt(i); if (!sg.getSequences(null).contains(seq)) { continue; } - SequenceI temp = viewport.alignment.getSequenceAt(i - 1); + SequenceI temp = viewport.getAlignment().getSequenceAt(i - 1); if (sg.getSequences(null).contains(temp)) { continue; } - viewport.alignment.getSequences().setElementAt(temp, i); - viewport.alignment.getSequences().setElementAt(seq, i - 1); + viewport.getAlignment().getSequences().setElementAt(temp, i); + viewport.getAlignment().getSequences().setElementAt(seq, i - 1); } } else { - for (int i = viewport.alignment.getHeight() - 2; i > -1; i--) + for (int i = viewport.getAlignment().getHeight() - 2; i > -1; i--) { - SequenceI seq = viewport.alignment.getSequenceAt(i); - if (!sg.getSequences(viewport.hiddenRepSequences).contains(seq)) + SequenceI seq = viewport.getAlignment().getSequenceAt(i); + if (!sg.getSequences(viewport.getHiddenRepSequences()).contains(seq)) { continue; } - SequenceI temp = viewport.alignment.getSequenceAt(i + 1); - if (sg.getSequences(viewport.hiddenRepSequences).contains(temp)) + SequenceI temp = viewport.getAlignment().getSequenceAt(i + 1); + if (sg.getSequences(viewport.getHiddenRepSequences()).contains(temp)) { continue; } - viewport.alignment.getSequences().setElementAt(temp, i); - viewport.alignment.getSequences().setElementAt(seq, i + 1); + viewport.getAlignment().getSequences().setElementAt(temp, i); + viewport.getAlignment().getSequences().setElementAt(seq, i + 1); } } @@ -1374,15 +1413,15 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, Vector sg = new Vector(); if (viewport.cursorMode) { - sg.addElement(viewport.alignment + sg.addElement(viewport.getAlignment() .getSequenceAt(alignPanel.seqPanel.seqCanvas.cursorY)); } else if (viewport.getSelectionGroup() != null - && viewport.getSelectionGroup().getSize() != viewport.alignment + && viewport.getSelectionGroup().getSize() != viewport.getAlignment() .getHeight()) { sg = viewport.getSelectionGroup().getSequences( - viewport.hiddenRepSequences); + viewport.getHiddenRepSequences()); } if (sg.size() < 1) @@ -1392,10 +1431,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, Vector invertGroup = new Vector(); - for (int i = 0; i < viewport.alignment.getHeight(); i++) + for (int i = 0; i < viewport.getAlignment().getHeight(); i++) { - if (!sg.contains(viewport.alignment.getSequenceAt(i))) - invertGroup.addElement(viewport.alignment.getSequenceAt(i)); + if (!sg.contains(viewport.getAlignment().getSequenceAt(i))) + invertGroup.addElement(viewport.getAlignment().getSequenceAt(i)); } SequenceI[] seqs1 = new SequenceI[sg.size()]; @@ -1470,14 +1509,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, for (int i = 0; i < sg.getSize(); i++) { SequenceI seq = sg.getSequenceAt(i); - int index = viewport.alignment.findIndex(seq); + int index = viewport.getAlignment().findIndex(seq); orderedSeqs.put(index + "", seq); } int index = 0, startRes, endRes; char ch; - if (viewport.hasHiddenColumns && viewport.getSelectionGroup() != null) + if (viewport.hasHiddenColumns() && viewport.getSelectionGroup() != null) { copiedHiddenColumns = new Vector(); int hiddenOffset = viewport.getSelectionGroup().getStartRes(); @@ -1624,17 +1663,17 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { for (int i = 0; i < seqs.length; i++) { - viewport.alignment.addSequence(seqs[i]); + viewport.getAlignment().addSequence(seqs[i]); } // !newAlignment addHistoryItem(new EditCommand("Add sequences", EditCommand.PASTE, - seqs, 0, viewport.alignment.getWidth(), viewport.alignment)); + seqs, 0, viewport.getAlignment().getWidth(), viewport.getAlignment())); - viewport.setEndSeq(viewport.alignment.getHeight()); - viewport.alignment.getWidth(); + viewport.setEndSeq(viewport.getAlignment().getHeight()); + viewport.getAlignment().getWidth(); viewport.firePropertyChange("alignment", null, - viewport.alignment.getSequences()); + viewport.getAlignment().getSequences()); } @@ -1662,7 +1701,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } // If the cut affects all sequences, remove highlighted columns - if (sg.getSize() == viewport.alignment.getHeight()) + if (sg.getSize() == viewport.getAlignment().getHeight()) { viewport.getColumnSelection().removeElements(sg.getStartRes(), sg.getEndRes() + 1); @@ -1679,10 +1718,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, */ addHistoryItem(new EditCommand("Cut Sequences", EditCommand.CUT, cut, sg.getStartRes(), sg.getEndRes() - sg.getStartRes() + 1, - viewport.alignment)); + viewport.getAlignment())); viewport.setSelectionGroup(null); - viewport.alignment.deleteGroup(sg); + viewport.getAlignment().deleteGroup(sg); viewport.firePropertyChange("alignment", null, viewport.getAlignment() .getSequences()); @@ -1752,8 +1791,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, viewport.getSequenceSelection(), viewport.getAlignmentView(true).getSequenceStrings( viewport.getGapCharacter()), - viewport.alignment.getGroups()); - viewport.alignment.deleteAllGroups(); + viewport.getAlignment().getGroups()); + viewport.getAlignment().deleteAllGroups(); viewport.sequenceColours = null; viewport.setSelectionGroup(null); // set view properties for each group @@ -1761,7 +1800,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { // gps[g].setShowunconserved(viewport.getShowUnconserved()); gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo()); - viewport.alignment.addGroup(gps[g]); + viewport.getAlignment().addGroup(gps[g]); Color col = new Color((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255)); col = col.brighter(); @@ -1778,7 +1817,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, protected void deleteGroups_actionPerformed() { - viewport.alignment.deleteAllGroups(); + viewport.getAlignment().deleteAllGroups(); viewport.sequenceColours = null; viewport.setSelectionGroup(null); @@ -1792,7 +1831,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { sg.addSequence(viewport.getAlignment().getSequenceAt(i), false); } - sg.setEndRes(viewport.alignment.getWidth() - 1); + sg.setEndRes(viewport.getAlignment().getWidth() - 1); viewport.setSelectionGroup(sg); alignPanel.paintAlignment(true); PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId()); @@ -1856,11 +1895,11 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (viewport.getSelectionGroup() != null) { seqs = viewport.getSelectionGroup().getSequencesAsArray( - viewport.hiddenRepSequences); + viewport.getHiddenRepSequences()); } else { - seqs = viewport.alignment.getSequencesArray(); + seqs = viewport.getAlignment().getSequencesArray(); } TrimRegionCommand trimRegion; @@ -1868,23 +1907,23 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { trimRegion = new TrimRegionCommand("Remove Left", TrimRegionCommand.TRIM_LEFT, seqs, column, - viewport.alignment, viewport.colSel, - viewport.selectionGroup); + viewport.getAlignment(), viewport.getColumnSelection(), + viewport.getSelectionGroup()); viewport.setStartRes(0); } else { trimRegion = new TrimRegionCommand("Remove Right", TrimRegionCommand.TRIM_RIGHT, seqs, column, - viewport.alignment, viewport.colSel, - viewport.selectionGroup); + viewport.getAlignment(), viewport.getColumnSelection(), + viewport.getSelectionGroup()); } statusBar.setText("Removed " + trimRegion.getSize() + " columns."); addHistoryItem(trimRegion); - Vector groups = viewport.alignment.getGroups(); + Vector groups = viewport.getAlignment().getGroups(); for (int i = 0; i < groups.size(); i++) { @@ -1893,7 +1932,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if ((trimLeft && !sg.adjustForRemoveLeft(column)) || (!trimLeft && !sg.adjustForRemoveRight(column))) { - viewport.alignment.deleteGroup(sg); + viewport.getAlignment().deleteGroup(sg); } } @@ -1904,23 +1943,23 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, public void removeGappedColumnMenuItem_actionPerformed() { - int start = 0, end = viewport.alignment.getWidth() - 1; + int start = 0, end = viewport.getAlignment().getWidth() - 1; SequenceI[] seqs; if (viewport.getSelectionGroup() != null) { seqs = viewport.getSelectionGroup().getSequencesAsArray( - viewport.hiddenRepSequences); + viewport.getHiddenRepSequences()); start = viewport.getSelectionGroup().getStartRes(); end = viewport.getSelectionGroup().getEndRes(); } else { - seqs = viewport.alignment.getSequencesArray(); + seqs = viewport.getAlignment().getSequencesArray(); } RemoveGapColCommand removeGapCols = new RemoveGapColCommand( - "Remove Gapped Columns", seqs, start, end, viewport.alignment); + "Remove Gapped Columns", seqs, start, end, viewport.getAlignment()); addHistoryItem(removeGapCols); @@ -1929,7 +1968,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // This is to maintain viewport position on first residue // of first sequence - SequenceI seq = viewport.alignment.getSequenceAt(0); + SequenceI seq = viewport.getAlignment().getSequenceAt(0); int startRes = seq.findPosition(viewport.startRes); // ShiftList shifts; // viewport.getAlignment().removeGaps(shifts=new ShiftList()); @@ -1944,28 +1983,28 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, public void removeAllGapsMenuItem_actionPerformed() { - int start = 0, end = viewport.alignment.getWidth() - 1; + int start = 0, end = viewport.getAlignment().getWidth() - 1; SequenceI[] seqs; if (viewport.getSelectionGroup() != null) { seqs = viewport.getSelectionGroup().getSequencesAsArray( - viewport.hiddenRepSequences); + viewport.getHiddenRepSequences()); start = viewport.getSelectionGroup().getStartRes(); end = viewport.getSelectionGroup().getEndRes(); } else { - seqs = viewport.alignment.getSequencesArray(); + seqs = viewport.getAlignment().getSequencesArray(); } // This is to maintain viewport position on first residue // of first sequence - SequenceI seq = viewport.alignment.getSequenceAt(0); + SequenceI seq = viewport.getAlignment().getSequenceAt(0); int startRes = seq.findPosition(viewport.startRes); addHistoryItem(new RemoveGapsCommand("Remove Gaps", seqs, start, end, - viewport.alignment)); + viewport.getAlignment())); viewport.setStartRes(seq.findIndex(startRes) - 1); @@ -1988,30 +2027,30 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, public AlignFrame newView(String viewtitle) { AlignmentI newal; - if (viewport.hasHiddenRows) + if (viewport.hasHiddenRows()) { newal = new Alignment(viewport.getAlignment().getHiddenSequences() .getFullAlignment().getSequencesArray()); } else { - newal = new Alignment(viewport.alignment.getSequencesArray()); + newal = new Alignment(viewport.getAlignment().getSequencesArray()); } - if (viewport.alignment.getAlignmentAnnotation() != null) + if (viewport.getAlignment().getAlignmentAnnotation() != null) { - for (int i = 0; i < viewport.alignment.getAlignmentAnnotation().length; i++) + for (int i = 0; i < viewport.getAlignment().getAlignmentAnnotation().length; i++) { - if (!viewport.alignment.getAlignmentAnnotation()[i].autoCalculated) + if (!viewport.getAlignment().getAlignmentAnnotation()[i].autoCalculated) { - newal.addAnnotation(viewport.alignment.getAlignmentAnnotation()[i]); + newal.addAnnotation(viewport.getAlignment().getAlignmentAnnotation()[i]); } } } AlignFrame newaf = new AlignFrame(newal, viewport.applet, "", false); - newaf.viewport.sequenceSetID = alignPanel.av.getSequenceSetId(); + newaf.viewport.setSequenceSetId(alignPanel.av.getSequenceSetId()); PaintRefresher.Register(alignPanel, alignPanel.av.getSequenceSetId()); PaintRefresher.Register(newaf.alignPanel, newaf.alignPanel.av.getSequenceSetId()); @@ -2191,13 +2230,13 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (viewport.getConservationSelected()) { - Alignment al = (Alignment) viewport.alignment; + Alignment al = (Alignment) viewport.getAlignment(); Conservation c = new Conservation("All", ResidueProperties.propHash, 3, al.getSequences(), 0, al.getWidth() - 1); c.calculate(); - c.verdict(false, viewport.ConsPercGaps); + c.verdict(false, viewport.getConsPercGaps()); cs.setConservation(c); @@ -2210,14 +2249,14 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, cs.setConservation(null); } - cs.setConsensus(viewport.hconsensus); + cs.setConsensus(viewport.getSequenceConsensusHash()); } viewport.setGlobalColourScheme(cs); if (viewport.getColourAppliesToAllGroups()) { - Vector groups = viewport.alignment.getGroups(); + Vector groups = viewport.getAlignment().getGroups(); for (int i = 0; i < groups.size(); i++) { SequenceGroup sg = (SequenceGroup) groups.elementAt(i); @@ -2230,7 +2269,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if (cs instanceof ClustalxColourScheme) { sg.cs = new ClustalxColourScheme( - sg.getSequences(viewport.hiddenRepSequences), + sg.getSequences(viewport.getHiddenRepSequences()), sg.getWidth()); } else @@ -2251,7 +2290,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { sg.cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus()); sg.cs.setConsensus(AAFrequency.calculate( - sg.getSequences(viewport.hiddenRepSequences), 0, + sg.getSequences(viewport.getHiddenRepSequences()), 0, sg.getWidth())); } else @@ -2263,10 +2302,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { Conservation c = new Conservation("Group", ResidueProperties.propHash, 3, - sg.getSequences(viewport.hiddenRepSequences), 0, - viewport.alignment.getWidth() - 1); + sg.getSequences(viewport.getHiddenRepSequences()), 0, + viewport.getAlignment().getWidth() - 1); c.calculate(); - c.verdict(false, viewport.ConsPercGaps); + c.verdict(false, viewport.getConsPercGaps()); sg.cs.setConservation(c); } else @@ -2293,7 +2332,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, protected void modifyPID_actionPerformed() { if (viewport.getAbovePIDThreshold() - && viewport.globalColourScheme != null) + && viewport.getGlobalColourScheme() != null) { SliderPanel.setPIDSliderSource(alignPanel, viewport.getGlobalColourScheme(), "Background"); @@ -2304,10 +2343,10 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, protected void modifyConservation_actionPerformed() { if (viewport.getConservationSelected() - && viewport.globalColourScheme != null) + && viewport.getGlobalColourScheme() != null) { SliderPanel.setConservationSlider(alignPanel, - viewport.globalColourScheme, "Background"); + viewport.getGlobalColourScheme(), "Background"); SliderPanel.showConservationSlider(); } } @@ -2343,7 +2382,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, .getAlignment().getSequenceAt(0), null); addHistoryItem(new OrderCommand("Pairwise Sort", oldOrder, - viewport.alignment)); + viewport.getAlignment())); alignPanel.paintAlignment(true); } @@ -2351,7 +2390,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortByID(viewport.getAlignment()); - addHistoryItem(new OrderCommand("ID Sort", oldOrder, viewport.alignment)); + addHistoryItem(new OrderCommand("ID Sort", oldOrder, viewport.getAlignment())); alignPanel.paintAlignment(true); } @@ -2360,7 +2399,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortByLength(viewport.getAlignment()); addHistoryItem(new OrderCommand("Length Sort", oldOrder, - viewport.alignment)); + viewport.getAlignment())); alignPanel.paintAlignment(true); } @@ -2369,7 +2408,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); AlignmentSorter.sortByGroup(viewport.getAlignment()); addHistoryItem(new OrderCommand("Group Sort", oldOrder, - viewport.alignment)); + viewport.getAlignment())); alignPanel.paintAlignment(true); } @@ -2394,7 +2433,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, public void PCAMenuItem_actionPerformed() { // are the sequences aligned? - if (!viewport.alignment.isAligned(false)) + if (!viewport.getAlignment().isAligned(false)) { SequenceI current; int Width = viewport.getAlignment().getWidth(); @@ -2451,7 +2490,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, void NewTreePanel(String type, String pwType, String title) { // are the sequences aligned? - if (!viewport.alignment.isAligned(false)) + if (!viewport.getAlignment().isAligned(false)) { SequenceI current; int Width = viewport.getAlignment().getWidth(); @@ -2471,7 +2510,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, if ((viewport.getSelectionGroup() != null && viewport .getSelectionGroup().getSize() > 1) - || (viewport.getSelectionGroup() == null && viewport.alignment + || (viewport.getSelectionGroup() == null && viewport.getAlignment() .getHeight() > 1)) { final TreePanel tp = new TreePanel(alignPanel, type, pwType); @@ -2515,7 +2554,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, // addHistoryItem(new HistoryItem("Sort", viewport.alignment, // HistoryItem.SORT)); addHistoryItem(new OrderCommand("Order by " + title, oldOrder, - viewport.alignment)); + viewport.getAlignment())); alignPanel.paintAlignment(true); } @@ -2538,7 +2577,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, sortByTree(treePanel, title); // treePanel.getTitle()); } }); - + treePanel.addWindowListener(new WindowAdapter() { public void windowOpened(WindowEvent e) @@ -2567,14 +2606,15 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, AlignmentSorter.sortBy(viewport.getAlignment(), alorder); if (undoname!=null) { - addHistoryItem(new OrderCommand(undoname, oldOrder, viewport.alignment)); + addHistoryItem(new OrderCommand(undoname, oldOrder, viewport.getAlignment())); } alignPanel.paintAlignment(true); return true; } + protected void documentation_actionPerformed() { - showURL("http://www.jalview.org/help.html", "HELP"); + alignPanel.av.applet.openJalviewHelpUrl(); } protected void about_actionPerformed() @@ -2645,45 +2685,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, } else { - try - { - if (url.indexOf(":") == -1) - { - // TODO: verify (Bas Vroling bug) prepend codebase or server URL to - // form valid URL - // Should really use docbase, not codebase. - if (url.indexOf("/") == 0) - { - String codebase = viewport.applet.getCodeBase().toString(); - url = codebase.substring(0, codebase.length() - - viewport.applet.getCodeBase().getFile().length()) - + url; - } - else - { - url = viewport.applet.getCodeBase() + url; - } - System.out.println("Show url (prepended codebase): " + url); - } - else - { - System.out.println("Show url: " + url); - } - if (url.indexOf("javascript:") == 0) - { - // no target for the javascript context - viewport.applet.getAppletContext().showDocument( - new java.net.URL(url)); - } - else - { - viewport.applet.getAppletContext().showDocument( - new java.net.URL(url), target); - } - } catch (Exception ex) - { - ex.printStackTrace(); - } + viewport.applet.showURL(url, target); } } @@ -2843,6 +2845,9 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, CheckboxMenuItem autoCalculate = new CheckboxMenuItem( "Autocalculate Consensus", true); + CheckboxMenuItem sortByTree = new CheckboxMenuItem( + "Sort Alignment With New Tree", true); + Menu sortByTreeMenu = new Menu(); Menu sort = new Menu(); @@ -3038,6 +3043,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, sort.setLabel("Sort"); calculate.setLabel("Calculate Tree"); autoCalculate.addItemListener(this); + sortByTree.addItemListener(this); inputText.setLabel("Input from textbox"); inputText.addActionListener(this); centreColumnLabelFlag.setLabel("Centre column labels"); @@ -3182,6 +3188,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, calculateMenu.add(pairwiseAlignmentMenuItem); calculateMenu.add(PCAMenuItem); calculateMenu.add(autoCalculate); + calculateMenu.add(sortByTree); this.add(statusBar, BorderLayout.SOUTH); pasteMenu.add(pasteNew); pasteMenu.add(pasteThis); @@ -3581,4 +3588,18 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, { alignPanel.seqPanel.scrollTo(row, column); } + public void scrollToRow(int row) + { + alignPanel.seqPanel.scrollToRow(row); + } + public void scrollToColumn(int column) + { + alignPanel.seqPanel.scrollToColumn(column); + } + /** + * @return the alignments unique ID. + */ + public String getSequenceSetId() { + return viewport.getSequenceSetId(); + } }