Use paintAlignment
[jalview.git] / src / jalview / appletgui / SeqPanel.java
index b954608..f4f2cfd 100755 (executable)
@@ -27,9 +27,11 @@ import java.awt.event.*;
 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
@@ -63,6 +65,9 @@ public class SeqPanel
 \r
   EditCommand editCommand;\r
 \r
+  StructureSelectionManager ssm;\r
+\r
+\r
   public SeqPanel(AlignViewport avp, AlignmentPanel p)\r
   {\r
     this.av = avp;\r
@@ -75,6 +80,8 @@ public class SeqPanel
 \r
     seqCanvas.addMouseMotionListener(this);\r
     seqCanvas.addMouseListener(this);\r
+    ssm = StructureSelectionManager.getStructureSelectionManager();\r
+    ssm.addStructureViewerListener(this);\r
 \r
     seqCanvas.repaint();\r
   }\r
@@ -99,13 +106,13 @@ public class SeqPanel
 \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
@@ -117,8 +124,8 @@ public class SeqPanel
     }\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
@@ -129,7 +136,7 @@ public class SeqPanel
         (Sequence) av.getAlignment().getSequenceAt(seqCanvas.cursorY);\r
 \r
     seqCanvas.cursorX = sequence.findIndex(\r
-        getKeyboardNo(keyboardNo1) - 1\r
+        getKeyboardNo1() - 1\r
         );\r
     scrollToVisible();\r
   }\r
@@ -287,7 +294,7 @@ public class SeqPanel
       av.setSelectionGroup(sg);\r
     }\r
 \r
-    ap.repaint();\r
+    ap.paintAlignment(false);\r
   }\r
 \r
   void insertGapAtCursor(boolean group)\r
@@ -295,7 +302,7 @@ public class SeqPanel
     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
@@ -303,7 +310,7 @@ public class SeqPanel
   {\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
@@ -325,18 +332,31 @@ public class SeqPanel
     }\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
@@ -434,6 +454,7 @@ public class SeqPanel
   {\r
     mouseDragging = false;\r
     mouseWheelPressed = false;\r
+    ap.paintAlignment(true);\r
 \r
     if (!editingSeqs)\r
     {\r
@@ -442,7 +463,7 @@ public class SeqPanel
     }\r
 \r
     endEditing();\r
-    ap.repaint();\r
+\r
   }\r
 \r
   int startWrapBlock = -1;\r
@@ -558,6 +579,34 @@ public class SeqPanel
     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
@@ -582,6 +631,11 @@ public class SeqPanel
       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
@@ -612,11 +666,6 @@ public class SeqPanel
       }\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
@@ -764,7 +813,7 @@ public class SeqPanel
 \r
       lastMousePress = evt.getPoint();\r
 \r
-      ap.repaint();\r
+      ap.paintAlignment(false);\r
       ap.annotationPanel.image = null;\r
       return;\r
     }\r
@@ -1293,7 +1342,6 @@ public class SeqPanel
       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
@@ -1371,7 +1419,7 @@ public class SeqPanel
     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