spelling err
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index 0acf425..364be5d 100755 (executable)
@@ -106,6 +106,13 @@ public class AlignmentPanel extends GAlignmentPanel
     {\r
       public void keyPressed(KeyEvent evt)\r
       {\r
+        if(av.cursorMode\r
+           && evt.getKeyCode()>=KeyEvent.VK_0\r
+           && evt.getKeyCode()<=KeyEvent.VK_9)\r
+        {\r
+          seqPanel.numberPressed(evt.getKeyChar());\r
+        }\r
+\r
         switch (evt.getKeyCode())\r
         {\r
           case 27: // escape key\r
@@ -115,26 +122,125 @@ public class AlignmentPanel extends GAlignmentPanel
             break;\r
 \r
           case KeyEvent.VK_DOWN:\r
-            alignFrame.moveSelectedSequences(false);\r
-\r
+            if(av.cursorMode)\r
+            {\r
+              seqPanel.moveCursor(0,1);\r
+            }\r
+            else\r
+              alignFrame.moveSelectedSequences(false);\r
             break;\r
 \r
           case KeyEvent.VK_UP:\r
-            alignFrame.moveSelectedSequences(true);\r
+            if (av.cursorMode)\r
+            {\r
+              seqPanel.moveCursor(0,-1);\r
+            }\r
+            else\r
+              alignFrame.moveSelectedSequences(true);\r
+            break;\r
 \r
+          case KeyEvent.VK_LEFT:\r
+            if(av.cursorMode)\r
+            {\r
+              seqPanel.moveCursor(-1,0);\r
+            }\r
+            break;\r
+\r
+          case KeyEvent.VK_RIGHT:\r
+            if (av.cursorMode)\r
+            {\r
+              seqPanel.moveCursor(1,0);\r
+            }\r
+            break;\r
+\r
+          case KeyEvent.VK_SPACE:\r
+            if(av.cursorMode)\r
+            {\r
+              seqPanel.insertGapAtCursor(evt.isControlDown() || evt.isShiftDown());\r
+            }\r
             break;\r
 \r
-          case KeyEvent.VK_BACK_SPACE:\r
           case KeyEvent.VK_DELETE:\r
-            alignFrame.cut_actionPerformed(null);\r
+          case KeyEvent.VK_BACK_SPACE:\r
+            if(!av.cursorMode)\r
+            {\r
+              alignFrame.cut_actionPerformed(null);\r
+              seqPanel.seqCanvas.repaint();\r
+            }\r
+            else\r
+              seqPanel.deleteGapAtCursor(evt.isControlDown() || evt.isShiftDown());\r
+\r
             break;\r
 \r
+          case KeyEvent.VK_S:\r
+            if(av.cursorMode)\r
+            {\r
+              seqPanel.setCursorRow();\r
+            }\r
+            break;\r
+          case KeyEvent.VK_C:\r
+            if(av.cursorMode)\r
+            {\r
+              seqPanel.setCursorColumn();\r
+            }\r
+            break;\r
           case KeyEvent.VK_P:\r
-            seqPanel.seqCanvas.increaseAARatio();\r
+            if(av.cursorMode)\r
+            {\r
+              seqPanel.setCursorPosition();\r
+            }\r
             break;\r
-          case KeyEvent.VK_L:\r
-            seqPanel.seqCanvas.decreaseAARation();\r
+\r
+          case KeyEvent.VK_ENTER:\r
+          case KeyEvent.VK_COMMA:\r
+            if(av.cursorMode)\r
+            {\r
+              seqPanel.setCursorRowAndColumn();\r
+            }\r
+            break;\r
+\r
+          case KeyEvent.VK_Q:\r
+            if(av.cursorMode)\r
+            {\r
+              seqPanel.setSelectionAreaAtCursor(true);\r
+            }\r
+            break;\r
+          case KeyEvent.VK_M:\r
+            if(av.cursorMode)\r
+            {\r
+              seqPanel.setSelectionAreaAtCursor(false);\r
+            }\r
             break;\r
+\r
+         case KeyEvent.VK_F2:\r
+           av.cursorMode = ! av.cursorMode;\r
+           alignFrame.statusBar.setText("Keyboard editing mode is "+\r
+               (av.cursorMode ? "on" : "off"));\r
+           if(av.cursorMode)\r
+           {\r
+             seqPanel.seqCanvas.cursorX = av.startRes;\r
+             seqPanel.seqCanvas.cursorY = av.startSeq;\r
+           }\r
+           seqPanel.seqCanvas.repaint();\r
+           break;\r
+\r
+          case KeyEvent.VK_F1:\r
+            try\r
+            {\r
+              ClassLoader cl = jalview.gui.Desktop.class.getClassLoader();\r
+              java.net.URL url = javax.help.HelpSet.findHelpSet(cl, "help/help");\r
+              javax.help.HelpSet hs = new javax.help.HelpSet(cl, url);\r
+\r
+              javax.help.HelpBroker hb = hs.createHelpBroker();\r
+              hb.setCurrentID("home");\r
+              hb.setDisplayed(true);\r
+            }\r
+            catch (Exception ex)\r
+            {\r
+              ex.printStackTrace();\r
+            }\r
+            break;\r
+\r
         }\r
       }\r
     });\r
@@ -262,16 +368,21 @@ public class AlignmentPanel extends GAlignmentPanel
       }\r
       else\r
       {\r
-        int cwidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
-        if( start<av.getStartRes() || start>(av.getStartRes()+cwidth) )\r
-        {\r
-          vscroll.setValue(start / cwidth);\r
-          av.startRes = vscroll.getValue() * cwidth;\r
-        }\r
+        scrollToWrappedVisible(start);\r
       }\r
     }\r
   }\r
 \r
+  void scrollToWrappedVisible(int res)\r
+  {\r
+    int cwidth = seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth());\r
+    if( res<=av.getStartRes() || res>=(av.getStartRes()+cwidth) )\r
+    {\r
+      vscroll.setValue(res / cwidth);\r
+      av.startRes = vscroll.getValue() * cwidth;\r
+    }\r
+  }\r
+\r
   /**\r
    * DOCUMENT ME!\r
    *\r
@@ -373,7 +484,7 @@ public class AlignmentPanel extends GAlignmentPanel
    */\r
   public boolean scrollRight(boolean right)\r
   {\r
-    if (right)\r
+    if (!right)\r
     {\r
       if (hscroll.getValue() < 1)\r
       {\r
@@ -407,30 +518,36 @@ public class AlignmentPanel extends GAlignmentPanel
    */\r
   public void setScrollValues(int x, int y)\r
   {\r
-    av.setEndRes( (x + (seqPanel.seqCanvas.getWidth() / av.getCharWidth())) -\r
-                 1);\r
+\r
+    int width = av.alignment.getWidth();\r
+    int height = av.alignment.getHeight();\r
+\r
+    if(av.hasHiddenColumns)\r
+     width = av.getColumnSelection().findColumnPosition(width);\r
+\r
+    av.setEndRes( (x + (seqPanel.seqCanvas.getWidth() / av.charWidth)) -1);\r
 \r
     hextent = seqPanel.seqCanvas.getWidth() / av.charWidth;\r
     vextent = seqPanel.seqCanvas.getHeight() / av.charHeight;\r
 \r
-    if (hextent > av.alignment.getWidth())\r
+    if (hextent > width)\r
     {\r
-      hextent = av.alignment.getWidth();\r
+      hextent = width;\r
     }\r
 \r
-    if (vextent > av.alignment.getHeight())\r
+    if (vextent > height)\r
     {\r
-      vextent = av.alignment.getHeight();\r
+      vextent = height;\r
     }\r
 \r
-    if ( (hextent + x) > av.getAlignment().getWidth())\r
+    if ( (hextent + x) > width)\r
     {\r
-      x = av.getAlignment().getWidth() - hextent;\r
+      x = width - hextent;\r
     }\r
 \r
-    if ( (vextent + y) > av.getAlignment().getHeight())\r
+    if ( (vextent + y) > height)\r
     {\r
-      y = av.getAlignment().getHeight() - vextent;\r
+      y = height - vextent;\r
     }\r
 \r
     if (y < 0)\r
@@ -443,8 +560,8 @@ public class AlignmentPanel extends GAlignmentPanel
       x = 0;\r
     }\r
 \r
-    hscroll.setValues(x, hextent, 0, av.getAlignment().getWidth());\r
-    vscroll.setValues(y, vextent, 0, av.getAlignment().getHeight());\r
+    hscroll.setValues(x, hextent, 0, width);\r
+    vscroll.setValues(y, vextent, 0, height);\r
   }\r
 \r
   /**\r
@@ -454,7 +571,6 @@ public class AlignmentPanel extends GAlignmentPanel
    */\r
   public void adjustmentValueChanged(AdjustmentEvent evt)\r
   {\r
-\r
     int oldX = av.getStartRes();\r
     int oldY = av.getStartSeq();\r
 \r
@@ -539,6 +655,8 @@ public class AlignmentPanel extends GAlignmentPanel
     {\r
       int max = av.alignment.getWidth() /\r
           seqPanel.seqCanvas.getWrappedCanvasWidth(seqPanel.seqCanvas.getWidth()) +1;\r
+\r
+\r
       vscroll.setMaximum(max);\r
       vscroll.setUnitIncrement(1);\r
       vscroll.setVisibleAmount(1);\r
@@ -548,12 +666,10 @@ public class AlignmentPanel extends GAlignmentPanel
       setScrollValues(av.getStartRes(), av.getStartSeq());\r
     }\r
 \r
-\r
-    if( this.getVisibleRect().getBounds() == g.getClipBounds() )\r
-    {\r
-      if (overviewPanel != null)\r
+    if( this.getVisibleRect().getBounds() == g.getClipBounds()\r
+        && overviewPanel != null)\r
         overviewPanel.updateOverviewImage();\r
-    }\r
+\r
   }\r
 \r
   /**\r