Made the position field editable in paused and stopped modes.
Preparing for implementation of seeking to an arbitrary point.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2508 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
index 62fa88b..1a9db17 100644
--- a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
+++ b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
@@ -45,9 +45,9 @@
     add(pauseButton);
     pauseButton.addActionListener(this);
 
-    posText = new TextField(4);
-    posText.setEditable(false);
+    posText = new TextField(5);
     add(posText);
+    posText.addActionListener(this);
   }
 
   public void setMode(int mode) {
@@ -57,12 +57,14 @@
       playButton.setEnabled(true);
       pauseButton.setLabel("Pause");
       pauseButton.setEnabled(true);
+      posText.setEditable(false);
       break;
     case RfbPlayer.MODE_PAUSED:
       playButton.setLabel("Stop");
       playButton.setEnabled(true);
       pauseButton.setLabel("Resume");
       pauseButton.setEnabled(true);
+      posText.setEditable(true);
       break;
     default:
       // case RfbPlayer.MODE_STOPPED:
@@ -70,6 +72,7 @@
       playButton.setEnabled(true);
       pauseButton.setLabel("Pause");
       pauseButton.setEnabled(false);
+      posText.setEditable(true);
       break;
     }
     player.setMode(mode);
@@ -99,6 +102,8 @@
     } else if (evt.getSource() == pauseButton) {
       setMode((player.getMode() == RfbPlayer.MODE_PAUSED) ?
               RfbPlayer.MODE_PLAYBACK : RfbPlayer.MODE_PAUSED);
+    } else if (evt.getSource() == posText) {
+      player.setPos(Integer.parseInt(posText.getText()));
     }
   }
 }
diff --git a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
index 59418d9..30ee42b 100644
--- a/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
+++ b/java/src/com/tightvnc/rfbplayer/FbsInputStream.java
@@ -106,7 +106,20 @@
     return (int)(timeOffset / 1000);
   }
 
-  public void resumeReading()
+  public void setPos(int pos)
+  {
+  }
+
+  public boolean isSeeking()
+  {
+    return false;
+  }
+
+  public void pausePlayback()
+  {
+  }
+
+  public void resumePlayback()
   {
     startTime = System.currentTimeMillis() - timeOffset;
   }
diff --git a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
index 741736e..16b3889 100644
--- a/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
+++ b/java/src/com/tightvnc/rfbplayer/RfbPlayer.java
@@ -194,6 +194,10 @@
     }
   }
 
+  public void setPos(int pos) {
+    fbsStream.setPos(pos);
+  }
+
   public void updatePos() {
     buttonPanel.setPos(fbsStream.getPos());
   }
diff --git a/java/src/com/tightvnc/rfbplayer/VncCanvas.java b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
index f421df5..e0d9994 100644
--- a/java/src/com/tightvnc/rfbplayer/VncCanvas.java
+++ b/java/src/com/tightvnc/rfbplayer/VncCanvas.java
@@ -225,7 +225,7 @@
 	  throw new EOFException("Playback stopped");
 	}
 	if (player.getMode() == player.MODE_PLAYBACK) {
-	  player.fbsStream.resumeReading();
+	  player.fbsStream.resumePlayback();
 	}
       }
 
@@ -828,8 +828,9 @@
   //
 
   void scheduleRepaint(int x, int y, int w, int h) {
-    // Request repaint, deferred if necessary.
-    repaint(player.deferScreenUpdates, x, y, w, h);
+    // Request repaint if not in the seeking mode.
+    if (!player.fbsStream.isSeeking())
+      repaint(player.deferScreenUpdates, x, y, w, h);
   }
 
 }