pluginLoader.broadcast(new AppletRequest(this));
if (appletFrame != this) {
final String startText = options.getProperty("Applet.detach.startText");
final String stopText = options.getProperty("Applet.detach.stopText");
final Button close = new Button();
// this works for Netscape only!
Vector privileges =
Common.split(options.getProperty("Applet.Netscape.privilege"), ',');
Class privilegeManager = null;
Method enable = null;
try {
privilegeManager =
Class.forName("netscape.security.PrivilegeManager");
enable = privilegeManager
.getMethod("enablePrivilege", new Class[]{String.class});
} catch (Exception e) {
System.err.println("Applet: This is not Netscape ...");
}
if (privilegeManager != null && enable != null && privileges != null)
for (int i = 0; i < privileges.size(); i++)
try {
enable.invoke(privilegeManager,
new Object[]{privileges.elementAt(i)});
System.out.println("Applet: access for '" +
privileges.elementAt(i) + "' allowed");
} catch (Exception e) {
System.err.println("Applet: access for '" +
privileges.elementAt(i) + "' denied");
}
// set up the clipboard
try {
clipboard = appletFrame.getContentPane().getToolkit().getSystemClipboard();
System.err.println("Applet: acquired system clipboard: " + clipboard);
} catch (Exception e) {
System.err.println("Applet: system clipboard access denied: " +
((e instanceof InvocationTargetException) ?
((InvocationTargetException) e).getTargetException() : e));
// e.printStackTrace();
} finally {
if (clipboard == null) {
System.err.println("Applet: copy & paste only within the JTA");
clipboard = new Clipboard("de.mud.jta.Main");
}
}
if ((new Boolean(options.getProperty("Applet.detach.immediately"))
.booleanValue())) {
if ((new Boolean(options.getProperty("Applet.detach.fullscreen"))
.booleanValue()))
((JFrame) appletFrame)
.setSize(appletFrame.getContentPane().getToolkit().getScreenSize());
else
((JFrame) appletFrame).pack();
((JFrame) appletFrame).show();
pluginLoader.broadcast(new SocketRequest(host, Integer.parseInt(port)));
pluginLoader.broadcast(new ReturnFocusRequest());
close.setLabel(startText != null ? stopText : "Disconnect");
} else
close.setLabel(startText != null ? startText : "Connect");
close.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (((JFrame) appletFrame).isVisible()) {
pluginLoader.broadcast(new SocketRequest());
((JFrame) appletFrame).setVisible(false);
close.setLabel(startText != null ? startText : "Connect");
} else {
if (frameTitle == null)
((JFrame) appletFrame)
.setTitle("jta: " + host + (port.equals("23")?"":" " + port));
if ((new Boolean(options.getProperty("Applet.detach.fullscreen"))
.booleanValue()))
((JFrame) appletFrame)
.setSize(appletFrame.getContentPane().getToolkit().getScreenSize());
else
((JFrame) appletFrame).pack();
((JFrame) appletFrame).show();
if (port == null || port.length() <= 0)
port = "23";
getAppletContext().showStatus("Trying " + host + " " + port + " ...");
pluginLoader.broadcast(new SocketRequest(host,
Integer.parseInt(port)));
pluginLoader.broadcast(new ReturnFocusRequest());
close.setLabel(stopText != null ? stopText : "Disconnect");
}
}
});
getContentPane().setLayout(new BorderLayout());
getContentPane().add("Center", close);
// add a menu bar
MenuBar mb = new MenuBar();
Menu file = new Menu("File");
file.setShortcut(new MenuShortcut(KeyEvent.VK_F, true));
MenuItem tmp;
file.add(tmp = new MenuItem("Connect"));
tmp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
pluginLoader.broadcast(new SocketRequest(host,
Integer.parseInt(port)));
}
});
file.add(tmp = new MenuItem("Disconnect"));
tmp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
pluginLoader.broadcast(new SocketRequest());
}
});
file.add(new MenuItem("-"));
file.add(tmp = new MenuItem("Print"));
tmp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (pluginLoader.getComponents().get("Terminal") != null) {
PrintJob printJob =
appletFrame.getContentPane().getToolkit()
.getPrintJob((JFrame) appletFrame, "JTA Terminal", null);
((Component) pluginLoader.getComponents().get("Terminal"))
.print(printJob.getGraphics());
printJob.end();
}
}
});
file.add(new MenuItem("-"));
file.add(tmp = new MenuItem("Exit"));
tmp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
((JFrame) appletFrame).setVisible(false);
pluginLoader.broadcast(new SocketRequest());
close.setLabel(startText != null ? startText : "Connect");
}
});
mb.add(file);
Menu edit = new Menu("Edit");
edit.setShortcut(new MenuShortcut(KeyEvent.VK_E, true));
edit.add(tmp = new MenuItem("Copy"));
tmp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (debug > 2)
System.err.println("Applet: copy: " + focussedPlugin);
if (focussedPlugin instanceof VisualTransferPlugin)
((VisualTransferPlugin) focussedPlugin).copy(clipboard);
}
});
edit.add(tmp = new MenuItem("Paste"));
tmp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (debug > 2)
System.err.println("Applet: paste: " + focussedPlugin);
if (focussedPlugin instanceof VisualTransferPlugin)
((VisualTransferPlugin) focussedPlugin).paste(clipboard);
}
});
mb.add(edit);
Map menuList = pluginLoader.getMenus();
names = menuList.keySet().iterator();
while (names.hasNext()) {
String name = (String) names.next();
Object o = menuList.get(name);
if (o instanceof Menu) mb.add((Menu) o);
}
Menu help = new Menu("Help");
help.setShortcut(new MenuShortcut(KeyEvent.VK_HELP, true));
help.add(tmp = new MenuItem("General"));
tmp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Help.show(appletFrame.getContentPane(), options.getProperty("Help.url"));
}
});
mb.setHelpMenu(help);
// only add the menubar if the property is true
if ((new Boolean(options.getProperty("Applet.detach.menuBar"))
.booleanValue()))
((JFrame) appletFrame).setMenuBar(mb);
// add window closing event handler
try {
((JFrame) appletFrame).addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
pluginLoader.broadcast(new SocketRequest());
((JFrame) appletFrame).setVisible(false);
close.setLabel(startText != null ? startText : "Connect");
}
});
} catch (Exception e) {
System.err.println("Applet: could not set up Window event listener");
System.err.println("Applet: you will not be able to close it");
}
pluginLoader.registerPluginListener(new OnlineStatusListener() {
public void online() {
if (debug > 0) System.err.println("Terminal: online");
online = true;
if (((JFrame) appletFrame).isVisible() == false)
((JFrame) appletFrame).setVisible(true);
}
public void offline() {
if (debug > 0) System.err.println("Terminal: offline");
online = false;
if (disconnectCloseWindow) {
((JFrame) appletFrame).setVisible(false);
close.setLabel(startText != null ? startText : "Connect");
}
}
});
// register a focus status listener, so we know when a plugin got focus