Use paintAlignment
[jalview.git] / src / jalview / gui / SeqPanel.java
index a20165a..0b9af01 100755 (executable)
@@ -27,6 +27,7 @@ import javax.swing.*;
 import jalview.commands.*;\r
 import jalview.datamodel.*;\r
 import jalview.schemes.*;\r
+import jalview.structure.*;\r
 \r
 /**\r
  * DOCUMENT ME!\r
@@ -36,7 +37,7 @@ import jalview.schemes.*;
  */\r
 public class SeqPanel\r
     extends JPanel implements MouseListener,\r
-    MouseMotionListener, MouseWheelListener\r
+    MouseMotionListener, MouseWheelListener, SequenceListener\r
 \r
 {\r
   /** DOCUMENT ME!! */\r
@@ -76,6 +77,9 @@ public class SeqPanel
 \r
   EditCommand editCommand;\r
 \r
+  StructureSelectionManager ssm;\r
+\r
+\r
   /**\r
    * Creates a new SeqPanel object.\r
    *\r
@@ -102,6 +106,8 @@ public class SeqPanel
       addMouseMotionListener(this);\r
       addMouseListener(this);\r
       addMouseWheelListener(this);\r
+      ssm = StructureSelectionManager.getStructureSelectionManager();\r
+      ssm.addStructureViewerListener(this);\r
     }\r
   }\r
 \r
@@ -258,13 +264,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
@@ -276,8 +282,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
@@ -288,7 +294,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
@@ -449,7 +455,7 @@ public class SeqPanel
       av.setSelectionGroup(sg);\r
     }\r
 \r
-    ap.repaint();\r
+    ap.paintAlignment(false);\r
   }\r
 \r
   void insertGapAtCursor(boolean group)\r
@@ -457,7 +463,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
@@ -465,7 +471,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
@@ -487,15 +493,27 @@ 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
@@ -517,7 +535,7 @@ public class SeqPanel
 \r
     endEditing();\r
 \r
-    ap.repaint();\r
+    ap.paintAlignment(true);\r
   }\r
 \r
   /**\r
@@ -573,6 +591,33 @@ public class SeqPanel
     return;\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
   /**\r
    * DOCUMENT ME!\r
    *\r
@@ -602,10 +647,8 @@ public class SeqPanel
       return;\r
     }\r
 \r
-    if (seqCanvas.pdbCanvas != null && sequence == seqCanvas.pdbCanvas.sequence)\r
-    {\r
-      seqCanvas.pdbCanvas.highlightRes(sequence.findPosition(res));\r
-    }\r
+    if (ssm != null)\r
+      mouseOverSequence(sequence, sequence.findPosition(res));\r
 \r
     setStatusMessage(sequence, res, seq);\r
 \r
@@ -837,7 +880,7 @@ public class SeqPanel
           av.charWidth++;\r
         }\r
 \r
-        ap.repaint();\r
+        ap.paintAlignment(false);\r
       }\r
 \r
       FontMetrics fm = getFontMetrics(av.getFont());\r
@@ -881,9 +924,10 @@ public class SeqPanel
     {\r
       scrollThread.setEvent(evt);\r
     }\r
-\r
   }\r
 \r
+\r
+\r
   synchronized void editSequence(boolean insertGap, int startres)\r
   {\r
     int fixedLeft = -1;\r
@@ -1355,23 +1399,6 @@ public class SeqPanel
   public void mouseWheelMoved(MouseWheelEvent e)\r
   {\r
     e.consume();\r
-    /* if (mouseWheelPressed)\r
-     {\r
-       Font font = av.getFont();\r
-       int fontSize = font.getSize();\r
-       if (e.getWheelRotation() > 0 && fontSize < 51)\r
-         fontSize++;\r
-       else if (fontSize > 1)\r
-         fontSize--;\r
-\r
-\r
-\r
-       av.setFont(new Font(font.getName(), font.getStyle(), fontSize));\r
-\r
-       ap.fontChanged();\r
-     }\r
-     else*/\r
-    {\r
       if (e.getWheelRotation() > 0)\r
       {\r
         ap.scrollUp(false);\r
@@ -1380,8 +1407,6 @@ public class SeqPanel
       {\r
         ap.scrollUp(true);\r
       }\r
-    }\r
-\r
   }\r
 \r
   /**\r
@@ -1575,6 +1600,7 @@ public class SeqPanel
     stretchGroup = null;\r
 \r
     PaintRefresher.Refresh(this, av.getSequenceSetId());\r
+    ap.paintAlignment(true);\r
   }\r
 \r
   /**\r