import jalview.commands.*;\r
import jalview.datamodel.*;\r
import jalview.schemes.*;\r
+import jalview.structure.SequenceListener;\r
+import jalview.structure.StructureSelectionManager;\r
\r
public class SeqPanel\r
- extends Panel implements MouseMotionListener, MouseListener\r
+ extends Panel implements MouseMotionListener, MouseListener, SequenceListener\r
{\r
\r
public SeqCanvas seqCanvas;\r
\r
EditCommand editCommand;\r
\r
+ StructureSelectionManager ssm;\r
+\r
+\r
public SeqPanel(AlignViewport avp, AlignmentPanel p)\r
{\r
this.av = avp;\r
\r
seqCanvas.addMouseMotionListener(this);\r
seqCanvas.addMouseListener(this);\r
+ ssm = StructureSelectionManager.getStructureSelectionManager();\r
+ ssm.addStructureViewerListener(this);\r
\r
seqCanvas.repaint();\r
}\r
\r
void setCursorRow()\r
{\r
- seqCanvas.cursorY = getKeyboardNo(keyboardNo1) - 1;\r
+ seqCanvas.cursorY = getKeyboardNo1() - 1;\r
scrollToVisible();\r
}\r
\r
void setCursorColumn()\r
{\r
- seqCanvas.cursorX = getKeyboardNo(keyboardNo1) - 1;\r
+ seqCanvas.cursorX = getKeyboardNo1() - 1;\r
scrollToVisible();\r
}\r
\r
}\r
else\r
{\r
- seqCanvas.cursorX = getKeyboardNo(keyboardNo1) - 1;\r
- seqCanvas.cursorY = getKeyboardNo(keyboardNo2) - 1;\r
+ seqCanvas.cursorX = getKeyboardNo1() - 1;\r
+ seqCanvas.cursorY = getKeyboardNo2() - 1;\r
scrollToVisible();\r
}\r
}\r
(Sequence) av.getAlignment().getSequenceAt(seqCanvas.cursorY);\r
\r
seqCanvas.cursorX = sequence.findIndex(\r
- getKeyboardNo(keyboardNo1) - 1\r
+ getKeyboardNo1() - 1\r
);\r
scrollToVisible();\r
}\r
av.setSelectionGroup(sg);\r
}\r
\r
- ap.repaint();\r
+ ap.paintAlignment(false);\r
}\r
\r
void insertGapAtCursor(boolean group)\r
groupEditing = group;\r
startseq = seqCanvas.cursorY;\r
lastres = seqCanvas.cursorX;\r
- editSequence(true, seqCanvas.cursorX + getKeyboardNo(keyboardNo1));\r
+ editSequence(true, seqCanvas.cursorX + getKeyboardNo1());\r
endEditing();\r
}\r
\r
{\r
groupEditing = group;\r
startseq = seqCanvas.cursorY;\r
- lastres = seqCanvas.cursorX + getKeyboardNo(keyboardNo1);\r
+ lastres = seqCanvas.cursorX + getKeyboardNo1();\r
editSequence(false, seqCanvas.cursorX);\r
endEditing();\r
}\r
}\r
}\r
\r
- int getKeyboardNo(StringBuffer kb)\r
+ int getKeyboardNo1()\r
{\r
- if (kb == null)\r
- {\r
+ if (keyboardNo1 == null)\r
return 1;\r
+ else\r
+ {\r
+ int value = Integer.parseInt(keyboardNo1.toString());\r
+ keyboardNo1 = null;\r
+ return value;\r
}\r
+ }\r
+\r
+ int getKeyboardNo2()\r
+ {\r
+ if (keyboardNo2 == null)\r
+ return 1;\r
else\r
{\r
- return Integer.parseInt(kb.toString());\r
+ int value = Integer.parseInt(keyboardNo2.toString());\r
+ keyboardNo2 = null;\r
+ return value;\r
}\r
}\r
\r
+\r
void setStatusMessage(SequenceI sequence, int res, int seq)\r
{\r
StringBuffer text = new StringBuffer("Sequence " + (seq + 1) + " ID: " +\r
{\r
mouseDragging = false;\r
mouseWheelPressed = false;\r
+ ap.paintAlignment(true);\r
\r
if (!editingSeqs)\r
{\r
}\r
\r
endEditing();\r
- ap.repaint();\r
+\r
}\r
\r
int startWrapBlock = -1;\r
return;\r
}\r
\r
+\r
+ String lastMessage;\r
+ public void mouseOverSequence(SequenceI sequence, int index)\r
+ {\r
+ String tmp = sequence.hashCode()+index+"";\r
+ if (lastMessage == null || !lastMessage.equals(tmp))\r
+ ssm.mouseOverSequence(sequence, index);\r
+\r
+ lastMessage = tmp;\r
+ }\r
+\r
+\r
+ public void highlightSequence(jalview.datamodel.SequenceI seq, int index)\r
+ {\r
+ if(av.alignment.findIndex(seq)>-1)\r
+ {\r
+ SearchResults highlight = new SearchResults();\r
+ highlight.addResult(seq,index,index);\r
+ seqCanvas.highlightSearchResults(highlight);\r
+ }\r
+ }\r
+\r
+ public void updateColours(SequenceI seq, int index)\r
+ {\r
+ System.out.println("update the seqPanel colours");\r
+ //repaint();\r
+ }\r
+\r
public void mouseMoved(MouseEvent evt)\r
{\r
int res = findRes(evt);\r
return;\r
}\r
\r
+\r
+ if (ssm != null)\r
+ mouseOverSequence(sequence, sequence.findPosition(res));\r
+\r
+\r
StringBuffer text = new StringBuffer("Sequence " + (seq + 1) + " ID: " +\r
sequence.getName());\r
\r
}\r
}\r
\r
- if (seqCanvas.pdbCanvas != null && sequence == seqCanvas.pdbCanvas.sequence)\r
- {\r
- seqCanvas.pdbCanvas.highlightRes(sequence.findPosition(res));\r
- }\r
-\r
ap.alignFrame.statusBar.setText(text.toString());\r
\r
StringBuffer tooltipText = new StringBuffer();\r
\r
lastMousePress = evt.getPoint();\r
\r
- ap.repaint();\r
+ ap.paintAlignment(false);\r
ap.annotationPanel.image = null;\r
return;\r
}\r
APopupMenu popup = new APopupMenu(ap, null, links);\r
this.add(popup);\r
popup.show(this, evt.getX(), evt.getY());\r
- ap.repaint();\r
return;\r
}\r
\r
changeStartRes = false;\r
stretchGroup = null;\r
PaintRefresher.Refresh(ap, av.getSequenceSetId());\r
- ap.repaint();\r
+ ap.paintAlignment(true);\r
}\r
\r
public void doMouseDraggedDefineMode(MouseEvent evt)\r