X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=b0e5715cf10d701c533a8dff79fbc65c1c782312;hb=7c562dea24843c09b684eed45d0b71f7211166f0;hp=0c7f5d1b6db83a2f2ba71057cb3641186935916f;hpb=2794d58ed2b048de8cad254bea750f69d859240d;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 0c7f5d1..b0e5715 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -23,6 +23,7 @@ import jalview.schemes.*; import jalview.datamodel.*; import jalview.analysis.*; import jalview.io.*; +import jalview.commands.*; import java.awt.*; import java.awt.event.*; import java.util.*; @@ -36,8 +37,8 @@ public class AlignFrame extends Frame implements ActionListener, { public AlignmentPanel alignPanel; public AlignViewport viewport; - int NEW_WINDOW_WIDTH = 700; - int NEW_WINDOW_HEIGHT = 500; + int DEFAULT_WIDTH = 700; + int DEFAULT_HEIGHT = 500; String jalviewServletURL; @@ -91,13 +92,13 @@ public class AlignFrame extends Frame implements ActionListener, if (param != null) { int width = Integer.parseInt(param); - NEW_WINDOW_WIDTH = width; + DEFAULT_WIDTH = width; } param = applet.getParameter("windowHeight"); if (param != null) { int height = Integer.parseInt(param); - NEW_WINDOW_HEIGHT = height; + DEFAULT_HEIGHT = height; } } catch (Exception ex) @@ -132,8 +133,8 @@ public class AlignFrame extends Frame implements ActionListener, else { add(alignPanel, BorderLayout.CENTER); - jalview.bin.JalviewLite.addFrame(this, title, NEW_WINDOW_WIDTH, - NEW_WINDOW_HEIGHT); + jalview.bin.JalviewLite.addFrame(this, title, DEFAULT_WIDTH, + DEFAULT_HEIGHT); } alignPanel.validate(); alignPanel.repaint(); @@ -260,7 +261,10 @@ public class AlignFrame extends Frame implements ActionListener, case KeyEvent.VK_SPACE: if(viewport.cursorMode) { - alignPanel.seqPanel.insertGapAtCursor(evt.isControlDown()); + alignPanel.seqPanel.insertGapAtCursor(evt.isControlDown() + || evt.isShiftDown() + || evt.isAltDown() + ); } break; @@ -268,7 +272,10 @@ public class AlignFrame extends Frame implements ActionListener, case KeyEvent.VK_BACK_SPACE: if(viewport.cursorMode) { - alignPanel.seqPanel.deleteGapAtCursor(evt.isControlDown()); + alignPanel.seqPanel.deleteGapAtCursor(evt.isControlDown() + || evt.isShiftDown() + || evt.isAltDown() + ); } else { @@ -332,7 +339,7 @@ public class AlignFrame extends Frame implements ActionListener, case KeyEvent.VK_H: { boolean toggleSeqs = !evt.isControlDown(); - boolean toggleCols = !evt.isAltDown(); + boolean toggleCols = !evt.isShiftDown(); boolean hide = false; SequenceGroup sg = viewport.getSelectionGroup(); @@ -343,14 +350,18 @@ public class AlignFrame extends Frame implements ActionListener, hide = true; viewport.hideAllSelectedSeqs(); } - else + else if (!(toggleCols && viewport.colSel.getSelected().size() > 0)) viewport.showAllHiddenSeqs(); } if(toggleCols) { if (viewport.colSel.getSelected().size() > 0) + { viewport.hideSelectedColumns(); + if(!toggleSeqs) + viewport.selectionGroup = sg; + } else if (!hide) viewport.showAllHiddenColumns(); } @@ -358,8 +369,23 @@ public class AlignFrame extends Frame implements ActionListener, alignPanel.repaint(); break; } - - } + case KeyEvent.VK_PAGE_UP: + if (viewport.wrapAlignment) + alignPanel.scrollUp(true); + else + alignPanel.setScrollValues(viewport.startRes, + viewport.startSeq + - viewport.endSeq + viewport.startSeq); + break; + case KeyEvent.VK_PAGE_DOWN: + if (viewport.wrapAlignment) + alignPanel.scrollUp(false); + else + alignPanel.setScrollValues(viewport.startRes, + viewport.startSeq + + viewport.endSeq - viewport.startSeq); + break; + } } public void keyReleased(KeyEvent evt) {} @@ -579,6 +605,12 @@ public void itemStateChanged(ItemEvent evt) url.append( appendProtocol( viewport.applet.getParameter("annotations") ) ); } + if(viewport.applet.getParameter("jnetfile")!=null) + { + url.append( "&annotations=" ); + url.append( appendProtocol( viewport.applet.getParameter("jnetfile") ) ); + } + if(viewport.applet.getParameter("defaultColour")!=null) { url.append("&colour=" + @@ -637,62 +669,21 @@ public void itemStateChanged(ItemEvent evt) void updateEditMenuBar() { - if (historyList.size() > 0) - { - undoMenuItem.setEnabled(true); - HistoryItem hi = (HistoryItem) historyList.peek(); - undoMenuItem.setLabel("Undo " + hi.getDescription()); - } - else - { - undoMenuItem.setEnabled(false); - undoMenuItem.setLabel("Undo"); - } - - if (redoList.size() > 0) - { - redoMenuItem.setEnabled(true); - HistoryItem hi = (HistoryItem) redoList.peek(); - redoMenuItem.setLabel("Redo " + hi.getDescription()); - } - else - { - redoMenuItem.setEnabled(false); - redoMenuItem.setLabel("Redo"); - } } - public void addHistoryItem(HistoryItem hi) - { - historyList.push(hi); - updateEditMenuBar(); - } protected void undoMenuItem_actionPerformed() { - HistoryItem hi = (HistoryItem) historyList.pop(); - redoList.push(new HistoryItem(hi.getDescription(), viewport.alignment, - HistoryItem.HIDE)); - restoreHistoryItem(hi); - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); } protected void redoMenuItem_actionPerformed() { - HistoryItem hi = (HistoryItem) redoList.pop(); - restoreHistoryItem(hi); - updateEditMenuBar(); - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); + } // used by undo and redo - void restoreHistoryItem(HistoryItem hi) + void restoreHistoryItem(CommandI command) { - hi.restore(); - - updateEditMenuBar(); - - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); } public void moveSelectedSequences(boolean up) @@ -845,8 +836,8 @@ public void itemStateChanged(ItemEvent evt) protected void pasteThis_actionPerformed() { - addHistoryItem(new HistoryItem("Paste Sequences", viewport.alignment, - HistoryItem.PASTE)); + // addHistoryItem(new HistoryItem("Paste Sequences", viewport.alignment, + // HistoryItem.PASTE)); paste(false); } @@ -909,8 +900,8 @@ public void itemStateChanged(ItemEvent evt) } - jalview.bin.JalviewLite.addFrame(af, newtitle, NEW_WINDOW_WIDTH, - NEW_WINDOW_HEIGHT); + jalview.bin.JalviewLite.addFrame(af, newtitle, DEFAULT_WIDTH, + DEFAULT_HEIGHT); } else { @@ -933,8 +924,8 @@ public void itemStateChanged(ItemEvent evt) protected void delete_actionPerformed() { - addHistoryItem(new HistoryItem("Delete Sequences", viewport.alignment, - HistoryItem.HIDE)); + //addHistoryItem(new HistoryItem("Delete Sequences", viewport.alignment, + // HistoryItem.HIDE)); if (viewport.getSelectionGroup() == null) { return; @@ -1036,154 +1027,18 @@ public void itemStateChanged(ItemEvent evt) public void remove2LeftMenuItem_actionPerformed() { - ColumnSelection colSel = viewport.getColumnSelection(); - if (colSel.size() > 0) - { - addHistoryItem(new HistoryItem("Remove Left", viewport.alignment, - HistoryItem.HIDE)); - int min = colSel.getMin(); - viewport.getAlignment().trimLeft(min); - colSel.compensateForEdit(0, min); - - if (viewport.getSelectionGroup() != null) - { - viewport.getSelectionGroup().adjustForRemoveLeft(min); - } - - Vector groups = viewport.alignment.getGroups(); - for (int i = 0; i < groups.size(); i++) - { - SequenceGroup sg = (SequenceGroup) groups.elementAt(i); - if (!sg.adjustForRemoveLeft(min)) - { - viewport.alignment.deleteGroup(sg); - } - } - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); - } } public void remove2RightMenuItem_actionPerformed() { - ColumnSelection colSel = viewport.getColumnSelection(); - if (colSel.size() > 0) - { - addHistoryItem(new HistoryItem("Remove Right", viewport.alignment, - HistoryItem.HIDE)); - int max = colSel.getMax(); - viewport.getAlignment().trimRight(max); - if (viewport.getSelectionGroup() != null) - { - viewport.getSelectionGroup().adjustForRemoveRight(max); - } - - Vector groups = viewport.alignment.getGroups(); - for (int i = 0; i < groups.size(); i++) - { - SequenceGroup sg = (SequenceGroup) groups.elementAt(i); - if (!sg.adjustForRemoveRight(max)) - { - viewport.alignment.deleteGroup(sg); - } - } - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); - } - } public void removeGappedColumnMenuItem_actionPerformed() { - addHistoryItem(new HistoryItem("Remove Gapped Columns", - viewport.alignment, - HistoryItem.HIDE)); - - //This is to maintain viewport position on first residue - //of first sequence - SequenceI seq = viewport.alignment.getSequenceAt(0); - int startRes = seq.findPosition(viewport.startRes); - - viewport.getAlignment().removeGaps(); - - viewport.setStartRes(seq.findIndex(startRes)-1); - - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); } public void removeAllGapsMenuItem_actionPerformed() { - addHistoryItem(new HistoryItem("Remove Gaps", viewport.alignment, - HistoryItem.HIDE)); - - //This is to maintain viewport position on first residue - //of first sequence - SequenceI seq = viewport.alignment.getSequenceAt(0); - int startRes = seq.findPosition(viewport.startRes); - - SequenceI current; - int jSize; - - Vector seqs=null; - - int start=0, end = viewport.alignment.getWidth(); - - if (viewport.getSelectionGroup() != null - && viewport.getSelectionGroup().getSequences(false) != null - && viewport.getSelectionGroup().getSize(false)>0) - { - seqs = viewport.getSelectionGroup().getSequences(true); - start = viewport.getSelectionGroup().getStartRes(); - end = viewport.getSelectionGroup().getEndRes()+1; - } - else - seqs = viewport.alignment.getSequences(); - - for (int i = 0; i < seqs.size(); i++) - { - current = (SequenceI) seqs.elementAt(i); - jSize = current.getLength(); - - // Removing a range is much quicker than removing gaps - // one by one for long sequences - int j = start; - int rangeStart=-1, rangeEnd=-1; - - do - { - if (jalview.util.Comparison.isGap(current.getCharAt(j))) - { - if(rangeStart==-1) - { - rangeStart = j; - rangeEnd = j+1; - } - else - { - rangeEnd++; - } - j++; - } - else - { - if(rangeStart>-1) - { - current.deleteChars(rangeStart, rangeEnd); - j-=rangeEnd-rangeStart; - jSize-=rangeEnd-rangeStart; - rangeStart = -1; - rangeEnd = -1; - } - else - j++; - } - } - while (j < end && j < jSize); - if(rangeStart>-1) - { - current.deleteChars(rangeStart, rangeEnd); - } - } - viewport.setStartRes(seq.findIndex(startRes)-1); - viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); } public void alignmentChanged() @@ -1215,7 +1070,7 @@ public void itemStateChanged(ItemEvent evt) viewport.alignment.getWidth()); } - cs.setConsensus(viewport.vconsensus); + cs.setConsensus(viewport.hconsensus); if (cs.conservationApplied()) { Alignment al = (Alignment) viewport.alignment; @@ -1455,7 +1310,7 @@ public void itemStateChanged(ItemEvent evt) cs.setConservation(null); } - cs.setConsensus(viewport.vconsensus); + cs.setConsensus(viewport.hconsensus); } viewport.setGlobalColourScheme(cs); @@ -1590,8 +1445,8 @@ public void itemStateChanged(ItemEvent evt) public void sortPairwiseMenuItem_actionPerformed() { - addHistoryItem(new HistoryItem("Pairwise Sort", viewport.alignment, - HistoryItem.SORT)); + // addHistoryItem(new HistoryItem("Pairwise Sort", viewport.alignment, + // HistoryItem.SORT)); AlignmentSorter.sortByPID(viewport.getAlignment(), viewport.getAlignment().getSequenceAt(0)); alignPanel.repaint(); @@ -1599,16 +1454,16 @@ public void itemStateChanged(ItemEvent evt) public void sortIDMenuItem_actionPerformed() { - addHistoryItem(new HistoryItem("ID Sort", viewport.alignment, - HistoryItem.SORT)); + // addHistoryItem(new HistoryItem("ID Sort", viewport.alignment, + // HistoryItem.SORT)); AlignmentSorter.sortByID(viewport.getAlignment()); alignPanel.repaint(); } public void sortGroupMenuItem_actionPerformed() { - addHistoryItem(new HistoryItem("Group Sort", viewport.alignment, - HistoryItem.SORT)); + // addHistoryItem(new HistoryItem("Group Sort", viewport.alignment, + // HistoryItem.SORT)); AlignmentSorter.sortByGroup(viewport.getAlignment()); alignPanel.repaint(); @@ -1754,8 +1609,8 @@ public void itemStateChanged(ItemEvent evt) { public void actionPerformed(ActionEvent evt) { - addHistoryItem(new HistoryItem("Sort", viewport.alignment, - HistoryItem.SORT)); + // addHistoryItem(new HistoryItem("Sort", viewport.alignment, + // HistoryItem.SORT)); AlignmentSorter.sortByTree(viewport.getAlignment(), treePanel.getTree()); alignPanel.repaint(); }