Changes in architecture to support pausing in the FbsInputStream
instead of using VncCanvas for that. RfbPlayer does not need to
remember current state any more. Play/Stop button removed. Added a
field to set playback speed, non-working yet.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2509 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
index 1a9db17..cbfffc9 100644
--- a/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
+++ b/java/src/com/tightvnc/rfbplayer/ButtonPanel.java
@@ -25,8 +25,8 @@
 
   protected RfbPlayer player;
   protected Button playButton;
-  protected Button pauseButton;
   protected TextField posText;
+  protected TextField timeScaleText;
 
   protected int lastPos = -1;
 
@@ -40,42 +40,31 @@
     add(playButton);
     playButton.addActionListener(this);
 
-    pauseButton = new Button("Pause");
-    pauseButton.setEnabled(false);
-    add(pauseButton);
-    pauseButton.addActionListener(this);
-
+    add(new Label(" Position:"));
     posText = new TextField(5);
     add(posText);
     posText.addActionListener(this);
+
+    add(new Label(" Speed:"));
+    timeScaleText = new TextField(5);
+    timeScaleText.setText("1.0");
+    timeScaleText.setEnabled(false);
+    timeScaleText.setEditable(false);
+    add(timeScaleText);
+    timeScaleText.addActionListener(this);
   }
 
-  public void setMode(int mode) {
-    switch(mode) {
-    case RfbPlayer.MODE_PLAYBACK:
-      playButton.setLabel("Stop");
-      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:
+  public void setPaused(boolean paused)
+  {
+    if (paused) {
       playButton.setLabel("Play");
-      playButton.setEnabled(true);
-      pauseButton.setLabel("Pause");
-      pauseButton.setEnabled(false);
       posText.setEditable(true);
-      break;
+    } else {
+      playButton.setLabel("Pause");
+      posText.setEditable(false);
     }
-    player.setMode(mode);
+    playButton.setEnabled(true);
+    player.setPaused(paused);
   }
 
   public void setPos(int pos) {
@@ -97,11 +86,7 @@
 
   public void actionPerformed(ActionEvent evt) {
     if (evt.getSource() == playButton) {
-      setMode((player.getMode() == RfbPlayer.MODE_STOPPED) ?
-              RfbPlayer.MODE_PLAYBACK : RfbPlayer.MODE_STOPPED);
-    } else if (evt.getSource() == pauseButton) {
-      setMode((player.getMode() == RfbPlayer.MODE_PAUSED) ?
-              RfbPlayer.MODE_PLAYBACK : RfbPlayer.MODE_PAUSED);
+      setPaused(playButton.getLabel().equals("Pause"));
     } else if (evt.getSource() == posText) {
       player.setPos(Integer.parseInt(posText.getText()));
     }