cloudstack/console-viewer/src/com/cloud/consoleviewer/ConsoleApplet.java

168 lines
4.1 KiB
Java

//
// Copyright (C) 2001-2004 HorizonLive.com, Inc. All Rights Reserved.
// Copyright (C) 2002 Constantin Kaplinsky. 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.
//
//
// VncViewer.java - the VNC viewer applet. This class mainly just sets up the
// user interface, leaving it to the VncCanvas to do the actual rendering of
// a VNC desktop.
//
package com.cloud.consoleviewer;
import java.awt.*;
import java.awt.event.*;
import com.cloud.console.Logger;
public class ConsoleApplet extends java.applet.Applet implements WindowListener {
private static final Logger s_logger = Logger.getLogger(ConsoleApplet.class);
private static final long serialVersionUID = -8463170916581351766L;
ConsoleViewer viewer;
String errorMsg;
public ConsoleApplet() {
viewer = new ConsoleViewer();
}
public static void main(String[] argv) {
ConsoleApplet applet = new ConsoleApplet();
applet.viewer.mainArgs = argv;
applet.viewer.inAnApplet = false;
applet.viewer.inSeparateFrame = true;
applet.viewer.inProxyMode = false;
applet.init();
applet.start();
}
// Reference to this applet for inter-applet communication.
public static java.applet.Applet refApplet;
//
// init()
//
public void init() {
s_logger.info("Initializing applet");
refApplet = this;
viewer.applet = this;
viewer.init();
disableFocusTraversal(this);
errorMsg = "Connecting...";
invalidate();
}
public void paint(Graphics g) {
if(viewer != null && viewer.vc != null && viewer.vc.memGraphics != null)
g.setColor(Color.WHITE);
else
g.setColor(Color.BLACK);
g.fillRect(0, 0, 800, 600);
if(errorMsg != null && errorMsg.length() > 0) {
g.setFont(new Font(null, Font.PLAIN, 20));
g.setColor(Color.WHITE);
FontMetrics fm = g.getFontMetrics();
int width = fm.stringWidth(errorMsg);
int startx = (800 - width) / 2;
if (startx < 0) startx = 0;
g.drawString(errorMsg, startx, 600 / 2);
}
}
public void paintErrorString(String msg) {
s_logger.info("paintErrorString");
errorMsg = msg;
invalidate();
repaint();
}
public void stop() {
s_logger.info("Stopping applet");
viewer.stop();
}
//
// This method is called before the applet is destroyed.
//
public void destroy() {
s_logger.info("Destroying applet");
viewer.destroy();
viewer = null;
}
public void sendCtrlAltDel() {
if(viewer != null && viewer.vc != null)
viewer.vc.sendCtrlAltDel();
}
public int getFrameBufferWidth() {
if(viewer != null && viewer.vc != null)
return viewer.vc.getWidth();
return 800;
}
public int getFrameBufferHeight() {
if(viewer != null && viewer.vc != null)
return viewer.vc.getHeight();
return 600;
}
//
// Close application properly on window close event.
//
public void windowClosing(WindowEvent evt) {
s_logger.info("Closing window");
viewer.windowClosing(evt);
}
//
// Ignore window events we're not interested in.
//
public void windowActivated(WindowEvent evt) {
}
public void windowDeactivated(WindowEvent evt) {
}
public void windowOpened(WindowEvent evt) {
}
public void windowClosed(WindowEvent evt) {
}
public void windowIconified(WindowEvent evt) {
}
public void windowDeiconified(WindowEvent evt) {
}
static public void disableFocusTraversal(Container con) {
con.setFocusTraversalKeysEnabled(false);
con.setFocusCycleRoot(true);
}
}