Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
chamilo-lms/main/app_share/ButtonPanel.java

173 lines
4.9 KiB

// Copyright (C) 2002-2003 Ultr@VNC Team. All Rights Reserved.
// Copyright (C) 2004 Kenn Min Chong, John Witchel. All Rights Reserved.
// Copyright (C) 2001,2002 HorizonLive.com, Inc. All Rights Reserved.
// Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.
//
// This is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this software; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
//
//
// ButtonPanel class implements panel with four buttons in the
// VNCViewer desktop window.
//
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class ButtonPanel extends Panel implements ActionListener {
VncViewer viewer;
Button disconnectButton;
Button optionsButton;
Button recordButton;
Button clipboardButton;
Button ctrlAltDelButton;
Button refreshButton;
Button ftpButton;
ButtonPanel(VncViewer v) {
viewer = v;
setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
disconnectButton = new Button("Disconnect");
disconnectButton.setEnabled(false);
add(disconnectButton);
disconnectButton.addActionListener(this);
optionsButton = new Button("Options");
add(optionsButton);
optionsButton.addActionListener(this);
clipboardButton = new Button("Clipboard");
clipboardButton.setEnabled(false);
add(clipboardButton);
clipboardButton.addActionListener(this);
if (viewer.rec != null) {
recordButton = new Button("Record");
add(recordButton);
recordButton.addActionListener(this);
}
ctrlAltDelButton = new Button("Send Ctrl-Alt-Del");
ctrlAltDelButton.setEnabled(false);
add(ctrlAltDelButton);
ctrlAltDelButton.addActionListener(this);
refreshButton = new Button("Refresh");
refreshButton.setEnabled(false);
add(refreshButton);
refreshButton.addActionListener(this);
ftpButton = new Button("File Transfer");
ftpButton.setEnabled(false);
add(ftpButton);
ftpButton.addActionListener(this);
}
//
// Enable buttons on successful connection.
//
public void enableButtons() {
disconnectButton.setEnabled(true);
clipboardButton.setEnabled(true);
refreshButton.setEnabled(true);
ftpButton.setEnabled(true);
}
//
// Disable all buttons on disconnect.
//
public void disableButtonsOnDisconnect() {
remove(disconnectButton);
disconnectButton = new Button("Hide desktop");
disconnectButton.setEnabled(true);
add(disconnectButton, 0);
disconnectButton.addActionListener(this);
optionsButton.setEnabled(false);
clipboardButton.setEnabled(false);
ctrlAltDelButton.setEnabled(false);
refreshButton.setEnabled(false);
ftpButton.setEnabled(false);
validate();
}
//
// Enable/disable controls that should not be available in view-only
// mode.
//
public void enableRemoteAccessControls(boolean enable) {
ctrlAltDelButton.setEnabled(enable);
}
//
// Event processing.
//
public void actionPerformed(ActionEvent evt) {
viewer.moveFocusToDesktop();
if (evt.getSource() == disconnectButton) {
viewer.disconnect();
} else if (evt.getSource() == optionsButton) {
viewer.options.setVisible(!viewer.options.isVisible());
} else if (evt.getSource() == recordButton) {
viewer.rec.setVisible(!viewer.rec.isVisible());
} else if (evt.getSource() == clipboardButton) {
viewer.clipboard.setVisible(!viewer.clipboard.isVisible());
} else if (evt.getSource() == ctrlAltDelButton) {
try {
final int modifiers = InputEvent.CTRL_MASK | InputEvent.ALT_MASK;
KeyEvent ctrlAltDelEvent =
new KeyEvent(this, KeyEvent.KEY_PRESSED, 0, modifiers, 127);
viewer.rfb.writeKeyEvent(ctrlAltDelEvent);
ctrlAltDelEvent =
new KeyEvent(this, KeyEvent.KEY_RELEASED, 0, modifiers, 127);
viewer.rfb.writeKeyEvent(ctrlAltDelEvent);
} catch (IOException e) {
e.printStackTrace();
}
}
else if (evt.getSource() == refreshButton)
{
try {
RfbProto rfb = viewer.rfb;
rfb.writeFramebufferUpdateRequest(0, 0, rfb.framebufferWidth,
rfb.framebufferHeight, false);
}
catch (IOException e)
{
e.printStackTrace();
}
}
else if (evt.getSource() == ftpButton)
{
viewer.ftp.setVisible(!viewer.ftp.isVisible());
viewer.rfb.readServerDriveList();
}
}
}