X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=479d77180df9706629d82684060638065275fdcf;hb=c1e70ea0a01d2c916675aa8020970c6696d0dba5;hp=e99c27f3404ba6f65142339f8da786954b380b63;hpb=6fcda37468514274f893bd4ccf39480ee36ee31d;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index e99c27f..479d771 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -49,7 +49,8 @@ public class AlignFrame extends Frame implements ActionListener, boolean embedded) { - jalviewServletURL = applet.getParameter("APPLICATION_URL"); + if (applet != null) + jalviewServletURL = applet.getParameter("APPLICATION_URL"); try{ jbInit(); @@ -208,9 +209,9 @@ public class AlignFrame extends Frame implements ActionListener, } break; case KeyEvent.VK_V: - if (evt.isControlDown() || evt.isMetaDown()) + if (evt.isControlDown()) { - paste(true); + paste(evt.isShiftDown()); } break; case KeyEvent.VK_A: @@ -266,8 +267,7 @@ public class AlignFrame extends Frame implements ActionListener, { alignPanel.seqPanel.deleteGapAtCursor(evt.isControlDown() || evt.isShiftDown() - || evt.isAltDown() - ); + || evt.isAltDown()); } else { @@ -319,7 +319,6 @@ public class AlignFrame extends Frame implements ActionListener, alignPanel.seqPanel.seqCanvas.cursorX = viewport.startRes; alignPanel.seqPanel.seqCanvas.cursorY = viewport.startSeq; } - alignPanel.seqPanel.seqCanvas.repaint(); break; case KeyEvent.VK_F: @@ -328,6 +327,7 @@ public class AlignFrame extends Frame implements ActionListener, findMenuItem_actionPerformed(); } break; + case KeyEvent.VK_H: { boolean toggleSeqs = !evt.isControlDown(); @@ -337,7 +337,7 @@ public class AlignFrame extends Frame implements ActionListener, if(toggleSeqs) { - if (sg != null && sg.getSize(false) != viewport.alignment.getHeight()) + if (sg != null && sg.getSize() != viewport.alignment.getHeight()) { hide = true; viewport.hideAllSelectedSeqs(); @@ -357,10 +357,9 @@ public class AlignFrame extends Frame implements ActionListener, else if (!hide) viewport.showAllHiddenColumns(); } - - alignPanel.repaint(); break; } + case KeyEvent.VK_PAGE_UP: if (viewport.wrapAlignment) alignPanel.scrollUp(true); @@ -369,6 +368,7 @@ public class AlignFrame extends Frame implements ActionListener, viewport.startSeq - viewport.endSeq + viewport.startSeq); break; + case KeyEvent.VK_PAGE_DOWN: if (viewport.wrapAlignment) alignPanel.scrollUp(false); @@ -377,7 +377,71 @@ public class AlignFrame extends Frame implements ActionListener, viewport.startSeq + viewport.endSeq - viewport.startSeq); break; + + case KeyEvent.VK_Z: + if (evt.isControlDown()) + { + undoMenuItem_actionPerformed(); + } + break; + + case KeyEvent.VK_Y: + if (evt.isControlDown()) + { + redoMenuItem_actionPerformed(); + } + break; + + case KeyEvent.VK_L: + if (evt.isControlDown()) + { + trimAlignment(true); + } + break; + + case KeyEvent.VK_R: + if (evt.isControlDown()) + { + trimAlignment(false); + } + break; + + case KeyEvent.VK_E: + if (evt.isControlDown()) + { + if (evt.isShiftDown()) + this.removeAllGapsMenuItem_actionPerformed(); + else + removeGappedColumnMenuItem_actionPerformed(); + } + break; + case KeyEvent.VK_I: + if (evt.isControlDown()) + { + if (evt.isAltDown()) + viewport.invertColumnSelection(); + else + this.invertSequenceMenuItem_actionPerformed(); + } + break; + + case KeyEvent.VK_U: + if (evt.isControlDown()) + { + this.deleteGroups_actionPerformed(); + } + break; + + case KeyEvent.VK_T: + if (evt.isControlDown()) + { + newView(); + } + break; + + } + alignPanel.repaint(); } public void keyReleased(KeyEvent evt) {} @@ -391,21 +455,24 @@ public void itemStateChanged(ItemEvent evt) else if(evt.getSource()==wrapMenuItem) wrapMenuItem_actionPerformed(); else if(evt.getSource()==scaleAbove) - scaleAbove_actionPerformed(); + viewport.setScaleAboveWrapped(scaleAbove.getState()); else if(evt.getSource()==scaleLeft) - scaleLeft_actionPerformed(); + viewport.setScaleLeftWrapped(scaleLeft.getState()); else if(evt.getSource()==scaleRight) - scaleRight_actionPerformed(); + viewport.setScaleRightWrapped(scaleRight.getState()); else if(evt.getSource()==seqLimits) seqLimits_itemStateChanged(); else if(evt.getSource()==viewBoxesMenuItem) - viewBoxesMenuItem_actionPerformed(); + viewport.setShowBoxes(viewBoxesMenuItem.getState()); else if(evt.getSource()==viewTextMenuItem) - viewTextMenuItem_actionPerformed(); + viewport.setShowText(viewTextMenuItem.getState()); else if(evt.getSource()==renderGapsMenuItem) - renderGapsMenuItem_actionPerformed(); + viewport.setRenderGaps(renderGapsMenuItem.getState()); else if(evt.getSource()==annotationPanelMenuItem) - annotationPanelMenuItem_actionPerformed(); + { + viewport.setShowAnnotation(annotationPanelMenuItem.getState()); + alignPanel.setAnnotationVisible(annotationPanelMenuItem.getState()); + } else if(evt.getSource()==sequenceFeatures) { viewport.showSequenceFeatures(sequenceFeatures.getState()); @@ -415,10 +482,12 @@ public void itemStateChanged(ItemEvent evt) conservationMenuItem_actionPerformed(); else if(evt.getSource()==abovePIDThreshold) abovePIDThreshold_actionPerformed(); - else if(evt.getSource()==applyToAllGroups) - applyToAllGroups_actionPerformed(); + else if(evt.getSource()==applyToAllGroups) + viewport.setColourAppliesToAllGroups(applyToAllGroups.getState()); else if(evt.getSource()==autoCalculate) viewport.autocalculateConsensus = autoCalculate.getState(); + + alignPanel.repaint(); } public void actionPerformed(ActionEvent evt) { @@ -430,6 +499,12 @@ public void itemStateChanged(ItemEvent evt) loadTree_actionPerformed(); else if(source==loadApplication) launchFullApplication(); + else if (source == loadAnnotations) + loadAnnotations(); + else if (source == outputAnnotations) + outputAnnotations(); + else if(source == outputFeatures) + outputFeatures(true, "Jalview"); else if(source==closeMenuItem) closeMenuItem_actionPerformed(); else if(source==copy) @@ -477,7 +552,9 @@ public void itemStateChanged(ItemEvent evt) else if(source==findMenuItem) findMenuItem_actionPerformed(); else if(source==font) - font_actionPerformed(); + new FontChooser(alignPanel); + else if (source == newView) + newView(); else if(source==showColumns) { viewport.showAllHiddenColumns(); alignPanel.repaint(); @@ -495,39 +572,43 @@ public void itemStateChanged(ItemEvent evt) viewport.hideAllSelectedSeqs(); } else if(source==featureSettings) - featureSettings_actionPerformed(); + new FeatureSettings(alignPanel); else if(source==overviewMenuItem) overviewMenuItem_actionPerformed(); else if(source==noColourmenuItem) - noColourmenuItem_actionPerformed(); + changeColour(null); else if(source==clustalColour) - clustalColour_actionPerformed(); + { + abovePIDThreshold.setState(false); + changeColour(new ClustalxColourScheme(viewport.alignment.getSequences(), + viewport.alignment.getWidth())); + } else if(source==zappoColour) - zappoColour_actionPerformed(); + changeColour(new ZappoColourScheme()); else if(source==taylorColour) - taylorColour_actionPerformed(); + changeColour(new TaylorColourScheme()); else if(source==hydrophobicityColour) - hydrophobicityColour_actionPerformed(); + changeColour(new HydrophobicColourScheme()); else if(source==helixColour) - helixColour_actionPerformed(); + changeColour(new HelixColourScheme()); else if(source==strandColour) - strandColour_actionPerformed(); + changeColour(new StrandColourScheme()); else if(source==turnColour) - turnColour_actionPerformed(); + changeColour(new TurnColourScheme()); else if(source==buriedColour) - buriedColour_actionPerformed(); + changeColour(new BuriedColourScheme()); else if(source==nucleotideColour) - nucleotideColour_actionPerformed(); + changeColour(new NucleotideColourScheme()); else if(source==modifyPID) modifyPID_actionPerformed(); else if(source==modifyConservation) modifyConservation_actionPerformed(); else if(source==userDefinedColour) - userDefinedColour_actionPerformed(); + new UserDefinedColours(alignPanel, null); else if(source==PIDColour) - PIDColour_actionPerformed(); + changeColour(new PIDColourScheme()); else if(source==BLOSUM62Colour) - BLOSUM62Colour_actionPerformed(); + changeColour(new Blosum62ColourScheme()); else if(source==annotationColour) new AnnotationColourChooser(viewport, alignPanel); else if(source==sortPairwiseMenuItem) @@ -574,10 +655,61 @@ public void itemStateChanged(ItemEvent evt) "Alignment output - " + e.getActionCommand(), 600, 500); cap.setText(new AppletFormatAdapter().formatSequences(e.getActionCommand(), - viewport.getAlignment().getSequences(), + viewport.getAlignment(), viewport.showJVSuffix)); } + public void loadAnnotations() + { + CutAndPasteTransfer cap = new CutAndPasteTransfer(true, this); + cap.setText("Paste your features / annotations file here."); + cap.setAnnotationImport(); + Frame frame = new Frame(); + frame.add(cap); + jalview.bin.JalviewLite.addFrame(frame, "Paste Annotations ", 400, 300); + + } + + public void outputAnnotations() + { + CutAndPasteTransfer cap = new CutAndPasteTransfer(false, this); + Frame frame = new Frame(); + frame.add(cap); + jalview.bin.JalviewLite.addFrame(frame, + "Annotations", + 600, 500); + cap.setText( new AnnotationFile().printAnnotations( + viewport.alignment.getAlignmentAnnotation() ) ); + } + + public String outputFeatures(boolean displayTextbox, String format) + { + String features; + if (format.equalsIgnoreCase("Jalview")) + features = new FeaturesFile().printJalviewFormat( + viewport.alignment.getSequencesArray(), + viewport.featuresDisplayed); + else + features = new FeaturesFile().printGFFFormat( + viewport.alignment.getSequencesArray(), + viewport.featuresDisplayed); + + + if(displayTextbox) + { + CutAndPasteTransfer cap = new CutAndPasteTransfer(false, this); + Frame frame = new Frame(); + frame.add(cap); + jalview.bin.JalviewLite.addFrame(frame, + "Features", + 600, 500); + + cap.setText(features); + } + + return features; + } + void launchFullApplication() { StringBuffer url = new StringBuffer(jalviewServletURL); @@ -649,7 +781,10 @@ public void itemStateChanged(ItemEvent evt) public void closeMenuItem_actionPerformed() { - PaintRefresher.components.remove(viewport.alignment); + PaintRefresher.RemoveComponent(alignPanel); + PaintRefresher.RemoveComponent(alignPanel.seqPanel.seqCanvas); + PaintRefresher.RemoveComponent(alignPanel.idPanel.idCanvas); + if(PaintRefresher.components.size()==0 && viewport.applet==null) System.exit(0); @@ -707,6 +842,9 @@ public void itemStateChanged(ItemEvent evt) */ protected void undoMenuItem_actionPerformed() { + if(viewport.historyList.size()<1) + return; + CommandI command = (CommandI)viewport.historyList.pop(); viewport.redoList.push(command); command.undoCommand(); @@ -715,7 +853,7 @@ public void itemStateChanged(ItemEvent evt) originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns() != null; updateEditMenuBar(); - originalSource.firePropertyChange("alignment", null,null); + originalSource.firePropertyChange("alignment", null,originalSource.alignment.getSequences()); } /** @@ -725,6 +863,9 @@ public void itemStateChanged(ItemEvent evt) */ protected void redoMenuItem_actionPerformed() { + if(viewport.redoList.size()<1) + return; + CommandI command = (CommandI) viewport.redoList.pop(); viewport.historyList.push(command); command.doCommand(); @@ -733,19 +874,20 @@ public void itemStateChanged(ItemEvent evt) originalSource.hasHiddenColumns = viewport.colSel.getHiddenColumns()!=null; updateEditMenuBar(); - originalSource.firePropertyChange("alignment", null, null); + originalSource.firePropertyChange("alignment", null, originalSource.alignment.getSequences()); } AlignViewport getOriginatingSource(CommandI command) { - AlignViewport originalSource = viewport; + AlignViewport originalSource = null; //For sequence removal and addition, we need to fire //the property change event FROM the viewport where the //original alignment was altered + AlignmentI al = null; if (command instanceof EditCommand) { EditCommand editCommand = (EditCommand) command; - AlignmentI al = editCommand.getAlignment(); + al = editCommand.getAlignment(); Vector comps = (Vector) PaintRefresher.components .get(viewport.getSequenceSetId()); for (int i = 0; i < comps.size(); i++) @@ -760,6 +902,18 @@ public void itemStateChanged(ItemEvent evt) } } } + + if (originalSource == null) + { + //The original view is closed, we must validate + //the current view against the closed view first + if (al != null) + PaintRefresher.validateSequences(al, viewport.alignment); + + originalSource = viewport; + } + + return originalSource; } @@ -776,13 +930,13 @@ public void itemStateChanged(ItemEvent evt) for (int i = 1; i < viewport.alignment.getHeight(); i++) { SequenceI seq = viewport.alignment.getSequenceAt(i); - if (!sg.getSequences(false).contains(seq)) + if (!sg.getSequences(null).contains(seq)) { continue; } SequenceI temp = viewport.alignment.getSequenceAt(i - 1); - if (sg.getSequences(false).contains(temp)) + if (sg.getSequences(null).contains(temp)) { continue; } @@ -796,13 +950,13 @@ public void itemStateChanged(ItemEvent evt) for (int i = viewport.alignment.getHeight() - 2; i > -1; i--) { SequenceI seq = viewport.alignment.getSequenceAt(i); - if (!sg.getSequences(true).contains(seq)) + if (!sg.getSequences(viewport.hiddenRepSequences).contains(seq)) { continue; } SequenceI temp = viewport.alignment.getSequenceAt(i + 1); - if (sg.getSequences(true).contains(temp)) + if (sg.getSequences(viewport.hiddenRepSequences).contains(temp)) { continue; } @@ -827,7 +981,7 @@ public void itemStateChanged(ItemEvent evt) SequenceGroup sg = viewport.getSelectionGroup(); copiedSequences = new StringBuffer(); Hashtable orderedSeqs = new Hashtable(); - for (int i = 0; i < sg.getSize(false); i++) + for (int i = 0; i < sg.getSize(); i++) { SequenceI seq = sg.getSequenceAt(i); int index = viewport.alignment.findIndex(seq); @@ -856,7 +1010,7 @@ public void itemStateChanged(ItemEvent evt) copiedHiddenColumns = null; - for (int i = 0; i < sg.getSize(false); i++) + for (int i = 0; i < sg.getSize(); i++) { SequenceI seq = null; @@ -900,7 +1054,7 @@ public void itemStateChanged(ItemEvent evt) copiedSequences.append(seq.getName() + "\t" + startRes + "\t" + endRes + "\t" + - seq.getSequence(sg.getStartRes(), + seq.getSequenceAsString(sg.getStartRes(), sg.getEndRes() + 1) + "\n"); } @@ -920,6 +1074,7 @@ public void itemStateChanged(ItemEvent evt) { try { + if (copiedSequences == null) { return; @@ -970,19 +1125,7 @@ public void itemStateChanged(ItemEvent evt) } else { - //!newAlignment - addHistoryItem(new EditCommand( - "Add sequences", - EditCommand.PASTE, - newSeqs, - 0, - viewport.alignment.getWidth(), - viewport.alignment) - ); - - viewport.setEndSeq(viewport.alignment.getHeight()); - viewport.alignment.getWidth(); - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); + addSequences(newSeqs); } } @@ -991,6 +1134,30 @@ public void itemStateChanged(ItemEvent evt) } + void addSequences(SequenceI[] seqs) + { + for (int i = 0; i < seqs.length; i++) + { + viewport.alignment.addSequence(seqs[i]); + } + + //!newAlignment + addHistoryItem(new EditCommand( + "Add sequences", + EditCommand.PASTE, + seqs, + 0, + viewport.alignment.getWidth(), + viewport.alignment) + ); + + viewport.setEndSeq(viewport.alignment.getHeight()); + viewport.alignment.getWidth(); + viewport.firePropertyChange("alignment", null, + viewport.alignment.getSequences()); + + } + protected void cut_actionPerformed() { copy_actionPerformed(); @@ -1008,7 +1175,7 @@ public void itemStateChanged(ItemEvent evt) Vector seqs = new Vector(); SequenceI seq; - for (int i = 0; i < sg.getSize(false); i++) + for (int i = 0; i < sg.getSize(); i++) { seq = sg.getSequenceAt(i); seqs.addElement(seq); @@ -1016,7 +1183,7 @@ public void itemStateChanged(ItemEvent evt) // If the cut affects all sequences, remove highlighted columns - if (sg.getSize(false) == viewport.alignment.getHeight()) + if (sg.getSize() == viewport.alignment.getHeight()) { viewport.getColumnSelection().removeElements(sg.getStartRes(), sg.getEndRes() + 1); @@ -1114,7 +1281,7 @@ public void itemStateChanged(ItemEvent evt) SequenceI [] seqs; if(viewport.getSelectionGroup()!=null) - seqs = viewport.getSelectionGroup().getSequencesAsArray(true); + seqs = viewport.getSelectionGroup().getSequencesAsArray(viewport.hiddenRepSequences); else seqs = viewport.alignment.getSequencesArray(); @@ -1173,7 +1340,7 @@ public void itemStateChanged(ItemEvent evt) SequenceI[] seqs; if (viewport.getSelectionGroup() != null) { - seqs = viewport.getSelectionGroup().getSequencesAsArray(true); + seqs = viewport.getSelectionGroup().getSequencesAsArray(viewport.hiddenRepSequences); start = viewport.getSelectionGroup().getStartRes(); end = viewport.getSelectionGroup().getEndRes(); } @@ -1212,7 +1379,7 @@ public void itemStateChanged(ItemEvent evt) SequenceI[] seqs; if (viewport.getSelectionGroup() != null) { - seqs = viewport.getSelectionGroup().getSequencesAsArray(true); + seqs = viewport.getSelectionGroup().getSequencesAsArray(viewport.hiddenRepSequences); start = viewport.getSelectionGroup().getStartRes(); end = viewport.getSelectionGroup().getEndRes(); } @@ -1240,10 +1407,53 @@ public void itemStateChanged(ItemEvent evt) new Finder(alignPanel); } - public void font_actionPerformed() + public void newView() { - new FontChooser(alignPanel); - } + AlignmentI newal; + if (viewport.hasHiddenRows) + newal = new Alignment(viewport.getAlignment(). + getHiddenSequences() + .getFullAlignment(). + getSequencesArray()); + else + newal = new Alignment(viewport.alignment.getSequencesArray()); + + AlignFrame newaf = new AlignFrame(newal, + viewport.applet, + "", + false); + + newaf.viewport.sequenceSetID = alignPanel.av.getSequenceSetId(); + PaintRefresher.Register(alignPanel, alignPanel.av.getSequenceSetId()); + PaintRefresher.Register(newaf.alignPanel, + newaf.alignPanel.av.getSequenceSetId()); + + PaintRefresher.Register(newaf.alignPanel.idPanel.idCanvas, + newaf.alignPanel.av.getSequenceSetId()); + PaintRefresher.Register(newaf.alignPanel.seqPanel.seqCanvas, + newaf.alignPanel.av.getSequenceSetId()); + + Vector comps = (Vector)PaintRefresher.components.get(viewport.getSequenceSetId()); + int viewSize = -1; + for (int i = 0; i < comps.size(); i++) + { + if (comps.elementAt(i) instanceof AlignmentPanel) + viewSize++; + } + + String title = new String(this.getTitle()); + if (title.indexOf("(View") > -1) + title = title.substring(0, title.indexOf("(View")); + + title+= "(View "+viewSize+")"; + + newaf.setTitle(title.toString()); + + + newaf.viewport.historyList = viewport.historyList; + newaf.viewport.redoList = viewport.redoList; + + } public void seqLimits_itemStateChanged() @@ -1271,53 +1481,6 @@ public void itemStateChanged(ItemEvent evt) } - protected void scaleAbove_actionPerformed() - { - viewport.setScaleAboveWrapped(scaleAbove.getState()); - alignPanel.repaint(); - } - - protected void scaleLeft_actionPerformed() - { - viewport.setScaleLeftWrapped(scaleLeft.getState()); - alignPanel.repaint(); - } - - protected void scaleRight_actionPerformed() - { - viewport.setScaleRightWrapped(scaleRight.getState()); - alignPanel.repaint(); - } - - public void viewBoxesMenuItem_actionPerformed() - { - viewport.setShowBoxes(viewBoxesMenuItem.getState()); - alignPanel.repaint(); - } - - public void viewTextMenuItem_actionPerformed() - { - viewport.setShowText(viewTextMenuItem.getState()); - alignPanel.repaint(); - } - - protected void renderGapsMenuItem_actionPerformed() - { - viewport.setRenderGaps(renderGapsMenuItem.getState()); - alignPanel.repaint(); - } - - public void annotationPanelMenuItem_actionPerformed() - { - viewport.setShowAnnotation(annotationPanelMenuItem.getState()); - alignPanel.setAnnotationVisible(annotationPanelMenuItem.getState()); - } - - public void featureSettings_actionPerformed() - { - new FeatureSettings(viewport, alignPanel); - } - public void overviewMenuItem_actionPerformed() { if (alignPanel.overviewPanel != null) @@ -1346,62 +1509,6 @@ public void itemStateChanged(ItemEvent evt) } - protected void noColourmenuItem_actionPerformed() - { - changeColour(null); - } - - public void clustalColour_actionPerformed() - { - abovePIDThreshold.setState(false); - changeColour(new ClustalxColourScheme(viewport.alignment.getSequences(), - viewport.alignment.getWidth())); - } - - public void zappoColour_actionPerformed() - { - changeColour(new ZappoColourScheme()); - } - - public void taylorColour_actionPerformed() - { - changeColour(new TaylorColourScheme()); - } - - public void hydrophobicityColour_actionPerformed() - { - changeColour(new HydrophobicColourScheme()); - } - - public void helixColour_actionPerformed() - { - changeColour(new HelixColourScheme()); - } - - public void strandColour_actionPerformed() - { - changeColour(new StrandColourScheme()); - } - - public void turnColour_actionPerformed() - { - changeColour(new TurnColourScheme()); - } - - public void buriedColour_actionPerformed() - { - changeColour(new BuriedColourScheme()); - } - - public void nucleotideColour_actionPerformed() - { - changeColour(new NucleotideColourScheme()); - } - - protected void applyToAllGroups_actionPerformed() - { - viewport.setColourAppliesToAllGroups(applyToAllGroups.getState()); - } void changeColour(ColourSchemeI cs) { @@ -1464,7 +1571,9 @@ public void itemStateChanged(ItemEvent evt) } if (cs instanceof ClustalxColourScheme) { - sg.cs = new ClustalxColourScheme(sg.getSequences(true), sg.getWidth()); + sg.cs = new ClustalxColourScheme( + sg.getSequences(viewport.hiddenRepSequences), + sg.getWidth()); } else { @@ -1484,7 +1593,8 @@ public void itemStateChanged(ItemEvent evt) || cs instanceof Blosum62ColourScheme) { sg.cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus()); - sg.cs.setConsensus(AAFrequency.calculate(sg.getSequences(true), 0, sg.getWidth())); + sg.cs.setConsensus(AAFrequency.calculate( + sg.getSequences(viewport.hiddenRepSequences), 0, sg.getWidth())); } else sg.cs.setThreshold(0, viewport.getIgnoreGapsConsensus()); @@ -1493,7 +1603,7 @@ public void itemStateChanged(ItemEvent evt) { Conservation c = new Conservation("Group", ResidueProperties.propHash, 3, - sg.getSequences(true), 0, + sg.getSequences(viewport.hiddenRepSequences), 0, viewport.alignment.getWidth() - 1); c.calculate(); c.verdict(false, viewport.ConsPercGaps); @@ -1563,20 +1673,7 @@ public void itemStateChanged(ItemEvent evt) modifyPID_actionPerformed(); } - public void userDefinedColour_actionPerformed() - { - new UserDefinedColours(alignPanel, null); - } - - public void PIDColour_actionPerformed() - { - changeColour(new PIDColourScheme()); - } - public void BLOSUM62Colour_actionPerformed() - { - changeColour(new Blosum62ColourScheme()); - } public void sortPairwiseMenuItem_actionPerformed() { @@ -1612,7 +1709,7 @@ public void itemStateChanged(ItemEvent evt) public void pairwiseAlignmentMenuItem_actionPerformed() { if (viewport.getSelectionGroup()!=null - && viewport.getSelectionGroup().getSize(false) > 1) + && viewport.getSelectionGroup().getSize() > 1) { Frame frame = new Frame(); frame.add(new PairwiseAlignPanel(alignPanel)); @@ -1642,8 +1739,8 @@ public void itemStateChanged(ItemEvent evt) } if ( (viewport.getSelectionGroup() != null && - viewport.getSelectionGroup().getSize(false) < 4 && - viewport.getSelectionGroup().getSize(false) > 0) + viewport.getSelectionGroup().getSize() < 4 && + viewport.getSelectionGroup().getSize() > 0) || viewport.getAlignment().getHeight() < 4) { return; @@ -1676,7 +1773,7 @@ public void itemStateChanged(ItemEvent evt) protected void avTreeBlosumMenuItem_actionPerformed() { - NewTreePanel("AV", "BL", "Average distance tree using BLOSUM62PID"); + NewTreePanel("AV", "BL", "Average distance tree using BLOSUM62"); } void NewTreePanel(String type, String pwType, String title) @@ -1702,7 +1799,7 @@ public void itemStateChanged(ItemEvent evt) } if ( (viewport.getSelectionGroup() != null && - viewport.getSelectionGroup().getSize(false) > 1) + viewport.getSelectionGroup().getSize() > 1) || (viewport.getSelectionGroup() == null && viewport.alignment.getHeight() > 1)) { @@ -1720,7 +1817,7 @@ public void itemStateChanged(ItemEvent evt) { CutAndPasteTransfer cap = new CutAndPasteTransfer(true, this); cap.setText("Paste your Newick tree file here."); - cap.treeImport = true; + cap.setTreeImport(); Frame frame = new Frame(); frame.add(cap); jalview.bin.JalviewLite.addFrame(frame, "Paste Newick file ", 400, 300); @@ -1858,7 +1955,11 @@ public void itemStateChanged(ItemEvent evt) protected MenuBar alignFrameMenuBar = new MenuBar(); protected Menu fileMenu = new Menu("File"); protected MenuItem loadApplication = new MenuItem("View in Full Application"); - protected MenuItem loadTree = new MenuItem("Load Associated Tree"); + protected MenuItem loadTree = new MenuItem("Load Associated Tree ..."); + protected MenuItem loadAnnotations = new MenuItem("Load Features/Annotations ..."); + protected MenuItem outputFeatures = new MenuItem("Export Features ..."); + protected MenuItem outputAnnotations = new MenuItem("Export Annotations ..."); + protected MenuItem closeMenuItem = new MenuItem("Close"); protected Menu editMenu = new Menu("Edit"); protected Menu viewMenu = new Menu("View"); @@ -1970,6 +2071,9 @@ public void itemStateChanged(ItemEvent evt) loadApplication.addActionListener(this); loadTree.addActionListener(this); + loadAnnotations.addActionListener(this); + outputFeatures.addActionListener(this); + outputAnnotations.addActionListener(this); selectAllSequenceMenuItem.addActionListener(this); deselectAllSequenceMenuItem.addActionListener(this); invertSequenceMenuItem.addActionListener(this); @@ -2004,7 +2108,6 @@ public void itemStateChanged(ItemEvent evt) averageDistanceTreeMenuItem.addActionListener(this); neighbourTreeMenuItem.setLabel("Neighbour Joining Using % Identity"); neighbourTreeMenuItem.addActionListener(this); - alignFrameMenuBar.setFont(new java.awt.Font("Verdana", 0, 11)); statusBar.setBackground(Color.white); statusBar.setFont(new java.awt.Font("Verdana", 0, 11)); statusBar.setText("Status bar"); @@ -2136,6 +2239,8 @@ public void itemStateChanged(ItemEvent evt) hideSequences.addActionListener(this); formatMenu.setLabel("Format"); selectMenu.setLabel("Select"); + newView.setLabel("New View"); + newView.addActionListener(this); alignFrameMenuBar.add(fileMenu); alignFrameMenuBar.add(editMenu); alignFrameMenuBar.add(selectMenu); @@ -2144,25 +2249,36 @@ public void itemStateChanged(ItemEvent evt) alignFrameMenuBar.add(colourMenu); alignFrameMenuBar.add(calculateMenu); alignFrameMenuBar.add(helpMenu); + fileMenu.add(inputText); + fileMenu.add(loadTree); + fileMenu.add(loadAnnotations); + + fileMenu.addSeparator(); fileMenu.add(outputTextboxMenu); + fileMenu.add(outputFeatures); + fileMenu.add(outputAnnotations); + if(jalviewServletURL!=null) fileMenu.add(loadApplication); + fileMenu.addSeparator(); - fileMenu.add(loadTree); fileMenu.add(closeMenuItem); + editMenu.add(undoMenuItem); editMenu.add(redoMenuItem); editMenu.add(cut); editMenu.add(copy); editMenu.add(pasteMenu); editMenu.add(delete); - editMenu.addSeparator(); + editMenu.addSeparator(); editMenu.add(remove2LeftMenuItem); editMenu.add(remove2RightMenuItem); editMenu.add(removeGappedColumnMenuItem); editMenu.add(removeAllGapsMenuItem); editMenu.add(removeRedundancyMenuItem); + viewMenu.add(newView); + viewMenu.addSeparator(); viewMenu.add(menu1); viewMenu.add(menu2); viewMenu.addSeparator(); @@ -2242,7 +2358,7 @@ public void itemStateChanged(ItemEvent evt) embeddedEdit = new Label("Edit"); embeddedSelect = new Label("Select"); embeddedView = new Label("View"); - embeddedFormat = new Label("Label"); + embeddedFormat = new Label("Format"); embeddedColour = new Label("Colour"); embeddedFile = new Label("File"); embeddedHelp = new Label("Help"); @@ -2278,14 +2394,12 @@ public void itemStateChanged(ItemEvent evt) embeddedCalculate.addMouseListener(this); embeddedHelp.addMouseListener(this); - // setVisible(false); fileMenu.remove(closeMenuItem); fileMenu.remove(3); // Seperator viewport.applet.setLayout(new BorderLayout()); viewport.applet.add(embeddedMenu, BorderLayout.NORTH); viewport.applet.add(statusBar, BorderLayout.SOUTH); - // viewport.applet.validate(); alignPanel.setSize(viewport.applet.size().width, viewport.applet.size().height - embeddedMenu.HEIGHT - statusBar.HEIGHT); @@ -2298,7 +2412,7 @@ public void itemStateChanged(ItemEvent evt) PopupMenu filePopup, editPopup, searchPopup, - viewPopup, colourPopup, calculatePopup, helpPopup; + viewPopup, formatPopup, colourPopup, calculatePopup, helpPopup; MenuItem featureSettings = new MenuItem(); CheckboxMenuItem sequenceFeatures = new CheckboxMenuItem(); MenuItem annotationColour = new MenuItem(); @@ -2311,6 +2425,7 @@ public void itemStateChanged(ItemEvent evt) MenuItem hideSequences = new MenuItem(); Menu formatMenu = new Menu(); Menu selectMenu = new Menu(); + MenuItem newView = new MenuItem(); public void mousePressed(MouseEvent evt) { @@ -2334,7 +2449,7 @@ public void itemStateChanged(ItemEvent evt) } else if (source ==embeddedFormat) { - popup = viewPopup = genPopupMenu(viewPopup, formatMenu); + popup = formatPopup = genPopupMenu(formatPopup, formatMenu); } else if(source==embeddedColour) {