Added control and alt checkboxes, for ease of typing modifier sequences
[invirt/packages/invirt-vnc-client.git] / ButtonPanel.java
index 5cae865..73f2446 100644 (file)
@@ -27,7 +27,7 @@ import java.awt.*;
 import java.awt.event.*;
 import java.io.*;
 
-class ButtonPanel extends Panel implements ActionListener {
+class ButtonPanel extends Panel implements ActionListener, ItemListener {
 
   VncViewer viewer;
   Button disconnectButton;
@@ -36,6 +36,8 @@ class ButtonPanel extends Panel implements ActionListener {
   Button clipboardButton;
   Button ctrlAltDelButton;
   Button refreshButton;
+  Checkbox altCheckbox;
+  Checkbox ctrlCheckbox;
 
   ButtonPanel(VncViewer v) {
     viewer = v;
@@ -65,6 +67,15 @@ class ButtonPanel extends Panel implements ActionListener {
     refreshButton.setEnabled(false);
     add(refreshButton);
     refreshButton.addActionListener(this);
+    
+    altCheckbox = new Checkbox("Alt");
+    altCheckbox.setEnabled(false);
+    add(altCheckbox);
+    altCheckbox.addItemListener(this);
+    ctrlCheckbox = new Checkbox("Control");
+    ctrlCheckbox.setEnabled(false);
+    add(ctrlCheckbox);
+    ctrlCheckbox.addItemListener(this);
   }
 
   //
@@ -103,6 +114,8 @@ class ButtonPanel extends Panel implements ActionListener {
 
   public void enableRemoteAccessControls(boolean enable) {
     ctrlAltDelButton.setEnabled(enable);
+    ctrlCheckbox.setEnabled(enable);
+    altCheckbox.setEnabled(enable);
   }
 
   //
@@ -150,5 +163,13 @@ class ButtonPanel extends Panel implements ActionListener {
       }
     }
   }
+    public void itemStateChanged(ItemEvent evt) {
+       viewer.moveFocusToDesktop();
+       int state = evt.getStateChange();
+       int extraModifiers = 0;
+       if (altCheckbox.getState()) { extraModifiers |= InputEvent.ALT_MASK; }
+       if (ctrlCheckbox.getState()) { extraModifiers |= InputEvent.CTRL_MASK; }
+       viewer.vc.extraModifiers = extraModifiers;
+    }
 }