DEFAULT_HEIGHT);\r
}\r
alignPanel.validate();\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
public AlignViewport getAlignViewport()\r
}\r
viewport.showSequenceFeatures = true;\r
sequenceFeatures.setState(true);\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
}\r
break;\r
\r
case KeyEvent.VK_LEFT:\r
- if (viewport.cursorMode)\r
- {\r
+ if (evt.isAltDown() || !viewport.cursorMode)\r
+ slideSequences(false,\r
+ alignPanel.seqPanel.getKeyboardNo1());\r
+ else\r
alignPanel.seqPanel.moveCursor( -1, 0);\r
- }\r
break;\r
\r
case KeyEvent.VK_RIGHT:\r
- if (viewport.cursorMode)\r
- {\r
- alignPanel.seqPanel.moveCursor(1, 0);\r
- }\r
- break;\r
+ if (evt.isAltDown() || !viewport.cursorMode)\r
+ slideSequences(true,\r
+ alignPanel.seqPanel.getKeyboardNo1());\r
+ else\r
+ alignPanel.seqPanel.moveCursor( 1, 0);\r
+ break;\r
+\r
case KeyEvent.VK_SPACE:\r
if (viewport.cursorMode)\r
{\r
break;\r
\r
}\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
public void keyReleased(KeyEvent evt)\r
viewport.autocalculateConsensus = autoCalculate.getState();\r
}\r
\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
public void actionPerformed(ActionEvent evt)\r
else if (source == invertColSel)\r
{\r
viewport.invertColumnSelection();\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
else if (source == remove2LeftMenuItem)\r
{\r
else if (source == showColumns)\r
{\r
viewport.showAllHiddenColumns();\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
else if (source == showSeqs)\r
{\r
else if (source == hideColumns)\r
{\r
viewport.hideSelectedColumns();\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
else if (source == hideSequences && viewport.getSelectionGroup() != null)\r
{\r
}\r
}\r
\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
+ }\r
+\r
+ synchronized void slideSequences(boolean right, int size)\r
+ {\r
+ if(viewport.hasHiddenColumns)\r
+ {\r
+ System.out.println("Slide Sequences not available with hidden columns");\r
+ return;\r
+ }\r
+ Vector sg = new Vector();\r
+ if(viewport.cursorMode)\r
+ {\r
+ sg.addElement(viewport.alignment.getSequenceAt(\r
+ alignPanel.seqPanel.seqCanvas.cursorY));\r
+ }\r
+ else if(viewport.getSelectionGroup()!=null\r
+ && viewport.getSelectionGroup().getSize()!=viewport.alignment.getHeight())\r
+ {\r
+ sg = viewport.getSelectionGroup().getSequences(\r
+ viewport.hiddenRepSequences);\r
+ }\r
+\r
+ if(sg.size()<1)\r
+ {\r
+ return;\r
+ }\r
+\r
+ Vector invertGroup = new Vector();\r
+\r
+ for (int i = 0; i < viewport.alignment.getHeight(); i++)\r
+ {\r
+ if(!sg.contains(viewport.alignment.getSequenceAt(i)))\r
+ invertGroup.add(viewport.alignment.getSequenceAt(i));\r
+ }\r
+\r
+ SequenceI[] seqs1 = new SequenceI[sg.size()];\r
+ for (int i = 0; i < sg.size(); i++)\r
+ seqs1[i] = (SequenceI) sg.elementAt(i);\r
+\r
+ SequenceI[] seqs2 = new SequenceI[invertGroup.size()];\r
+ for (int i = 0; i < invertGroup.size(); i++)\r
+ seqs2[i] = (SequenceI) invertGroup.elementAt(i);\r
+\r
+ SlideSequencesCommand ssc;\r
+ if (right)\r
+ ssc = new SlideSequencesCommand("Slide Sequences",\r
+ seqs2, seqs1, size,\r
+ viewport.getGapCharacter()\r
+ );\r
+ else\r
+ ssc = new SlideSequencesCommand("Slide Sequences",\r
+ seqs1, seqs2, size,\r
+ viewport.getGapCharacter()\r
+ );\r
+\r
+ int groupAdjustment = 0;\r
+ if (ssc.getGapsInsertedBegin() && right)\r
+ {\r
+ if (viewport.cursorMode)\r
+ alignPanel.seqPanel.moveCursor(size, 0);\r
+ else\r
+ groupAdjustment = size;\r
+ }\r
+ else if (!ssc.getGapsInsertedBegin() && !right)\r
+ {\r
+ if (viewport.cursorMode)\r
+ alignPanel.seqPanel.moveCursor( -size, 0);\r
+ else\r
+ groupAdjustment = -size;\r
+ }\r
+\r
+ if (groupAdjustment != 0)\r
+ {\r
+ viewport.getSelectionGroup().setStartRes(\r
+ viewport.getSelectionGroup().getStartRes() + groupAdjustment);\r
+ viewport.getSelectionGroup().setEndRes(\r
+ viewport.getSelectionGroup().getEndRes() + groupAdjustment);\r
+ }\r
+\r
+\r
+ boolean appendHistoryItem = false;\r
+ if(viewport.historyList!=null\r
+ && viewport.historyList.size()>0\r
+ && viewport.historyList.peek() instanceof SlideSequencesCommand)\r
+ {\r
+ appendHistoryItem = ssc.appendSlideCommand(\r
+ (SlideSequencesCommand)viewport.historyList.peek())\r
+ ;\r
+ }\r
+\r
+ if(!appendHistoryItem)\r
+ addHistoryItem(ssc);\r
+\r
+ repaint();\r
}\r
\r
static StringBuffer copiedSequences;\r
viewport.sequenceColours = null;\r
viewport.setSelectionGroup(null);\r
\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
public void selectAllSequenceMenuItem_actionPerformed()\r
}\r
sg.setEndRes(viewport.alignment.getWidth() - 1);\r
viewport.setSelectionGroup(sg);\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId());\r
}\r
\r
viewport.setSelectionGroup(null);\r
alignPanel.idPanel.idCanvas.searchResults = null;\r
alignPanel.seqPanel.seqCanvas.highlightSearchResults(null);\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
PaintRefresher.Refresh(alignPanel, viewport.getSequenceSetId());\r
}\r
\r
{\r
viewport.setShowJVSuffix(seqLimits.getState());\r
alignPanel.fontChanged();\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
protected void colourTextMenuItem_actionPerformed()\r
{\r
viewport.setColourText(colourTextMenuItem.getState());\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
protected void wrapMenuItem_actionPerformed()\r
scaleAbove.setEnabled(wrapMenuItem.getState());\r
scaleLeft.setEnabled(wrapMenuItem.getState());\r
scaleRight.setEnabled(wrapMenuItem.getState());\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
public void overviewMenuItem_actionPerformed()\r
alignPanel.getOverviewPanel().updateOverviewImage();\r
}\r
\r
- alignPanel.repaint();\r
+ jalview.structure.StructureSelectionManager.getStructureSelectionManager()\r
+ .sequenceColoursChanged(alignPanel);\r
+\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
protected void modifyPID_actionPerformed()\r
viewport.getAlignment().getSequenceAt(0));\r
addHistoryItem(new OrderCommand("Pairwise Sort", oldOrder,\r
viewport.alignment));\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
public void sortIDMenuItem_actionPerformed()\r
// addHistoryItem(new HistoryItem("ID Sort", viewport.alignment,\r
// HistoryItem.SORT));\r
AlignmentSorter.sortByID(viewport.getAlignment());\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
public void sortGroupMenuItem_actionPerformed()\r
// addHistoryItem(new HistoryItem("Group Sort", viewport.alignment,\r
// HistoryItem.SORT));\r
AlignmentSorter.sortByGroup(viewport.getAlignment());\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
\r
}\r
\r
current.insertCharAt(Width - 1, viewport.getGapCharacter());\r
}\r
}\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
\r
if ( (viewport.getSelectionGroup() != null &&\r
current.insertCharAt(Width - 1, viewport.getGapCharacter());\r
}\r
}\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
\r
}\r
\r
// addHistoryItem(new HistoryItem("Sort", viewport.alignment,\r
// HistoryItem.SORT));\r
AlignmentSorter.sortByTree(viewport.getAlignment(), treePanel.getTree());\r
- alignPanel.repaint();\r
+ alignPanel.paintAlignment(true);\r
}\r
});\r
\r