📄 mainwindow.java
字号:
package com.ibm.aglets.tahiti;/* * @(#)MainWindow.java * * IBM Confidential-Restricted * * OCO Source Materials * * 03L7246 (c) Copyright IBM Corp. 1996, 1998 * * The source code for this program is not published or otherwise * divested of its trade secrets, irrespective of what has been * deposited with the U.S. Copyright Office. */import com.ibm.aglet.Aglet;import com.ibm.aglet.AgletInfo;import com.ibm.aglet.Message;import com.ibm.aglet.InvalidAgletException;import com.ibm.aglet.AgletException;import com.ibm.aglet.AgletID;import com.ibm.aglet.AgletProxy;import com.ibm.aglet.system.ContextEvent;import com.ibm.aglet.system.AgletRuntime;import com.ibm.awb.misc.Resource;// import com.ibm.aglets.agletbox.AgletBox;import java.security.AccessController;import java.security.PrivilegedAction;import java.security.PrivilegedExceptionAction;import java.security.cert.Certificate;import java.awt.*;import java.awt.event.*;import java.util.Date;import java.util.Enumeration;import java.util.Vector;import java.util.Hashtable;import java.util.ResourceBundle;import java.util.StringTokenizer;import java.net.URL;import java.io.InputStream;import java.io.DataInputStream;import java.io.IOException;/** * The <tt>MainWindow</tt> represents the main window for the Tahiti aglet * viewer. * * @version 1.08 $Date: 2002/01/09 05:25:37 $ * @author Danny B. Lange * @author Mitsuru Oshima * @author Yoshiaki Mima *//* * Aglets List * * Ordered by Keys "Creation time", "Class name" * */final class MainWindow extends Frame implements ItemListener, ActionListener { static ResourceBundle bundle = null; static { bundle = (ResourceBundle)AccessController .doPrivileged(new PrivilegedAction() { public Object run() { return ResourceBundle.getBundle("tahiti"); } }); } /* * Aglet menu - menu items and shortcut buttons. */ private MenuItem _dialogMenuItem = new MenuItem(); private MenuItem _disposeMenuItem = new MenuItem(); private MenuItem _cloneMenuItem = new MenuItem(); private MenuItem _infoMenuItem = new MenuItem(); private MenuItem _killMenuItem = new MenuItem(); // private Button _disposeButton = new Button(); private Button _dialogButton = new Button(); private Button _cloneButton = new Button(); private Button _infoButton = new Button(); /* * Mobility menu - menu items and shortcut buttons. */ private MenuItem _dispatchMenuItem = new MenuItem(); private Button _dispatchButton = new Button(); // private MenuItem _deactivateMenuItem = new MenuItem(); private MenuItem _activateMenuItem = new MenuItem(); // private MenuItem _javaConsoleMenuItem = new MenuItem(); // private Tahiti _tahiti = null; // private Vector _itemList = new Vector(); Hashtable text = new Hashtable(); // Panel _buttonPanel = new Panel(); List _agletList = new List(0, false); boolean shrink = false; /* display options */ static final int ORDER_CREATIONTIME = 0; static final int ORDER_CLASSNAME = 1; // private int viewOrder = ORDER_CREATIONTIME; private boolean isAscent = true; private boolean isCompact = false; /* package */ LogWindow logWindow = new LogWindow(); /* * Tahiti event constants */ static final int TAHITI_EVENT = 10000; static final int CLONE = TAHITI_EVENT + 1; static final int CREATE = TAHITI_EVENT + 2; static final int DISPOSE = TAHITI_EVENT + 3; static final int DISPATCH = TAHITI_EVENT + 4; static final int RETRACT = TAHITI_EVENT + 5; static final int KILL = TAHITI_EVENT + 6; static final int DEACTIVATE = TAHITI_EVENT + 7; static final int ACTIVATE = TAHITI_EVENT + 8; static final int DIALOG = TAHITI_EVENT + 9; static final int GET_AGLETS = TAHITI_EVENT + 10; // static final int EXIT = TAHITI_EVENT + 15; static final int SHUTDOWN = TAHITI_EVENT + 16; static final int REBOOT = TAHITI_EVENT + 17; // static final int AGLET_INFO = TAHITI_EVENT + 20; static final int SHOW_LOG = TAHITI_EVENT + 21; static final int MEMORY_USAGE = TAHITI_EVENT + 22; static final int GC = TAHITI_EVENT + 23; static final int SHOW_THREADS = TAHITI_EVENT + 24; static final int SHOW_DEBUG = TAHITI_EVENT + 25; static final int SHOW_REFTABLE = TAHITI_EVENT + 26; static final int SHOW_JAVACON = TAHITI_EVENT + 27; // static final int PREFERENCE1 = TAHITI_EVENT + 30; static final int PREFERENCE2 = TAHITI_EVENT + 31; static final int PREFERENCE3 = TAHITI_EVENT + 32; static final int PREFERENCE4 = TAHITI_EVENT + 33; // static final int ABOUT_AGLETS = TAHITI_EVENT + 35; static final int ABOUT_TAHITI = TAHITI_EVENT + 36; // static final int SHRINK = TAHITI_EVENT + 40; // static final int TAHITI_LAST_EVENT = TAHITI_EVENT + 41; // class URLOpener implements ActionListener { private String url; URLOpener(String u) { url = u; } public void actionPerformed(ActionEvent ev) { showURL(url); } } ; class EventIssuer implements ActionListener { private int _type = 0; EventIssuer(int t) { _type = t; } public void actionPerformed(ActionEvent ev) { switch (_type) { case SHRINK: Button b = (Button)ev.getSource(); if (shrink) { shrink = false; b.setLabel("><"); showButtons(); updateProxyList(); _agletList.setVisible(true); restoreSize(); doLayout(); _buttonPanel.doLayout(); } else { b.setLabel("<>"); saveSize(); hideButtons(); _agletList.setVisible(false); setSize(350, getBounds().height - _agletList.getBounds().height); doLayout(); _buttonPanel.doLayout(); shrink = true; } break; case GC: System.gc(); break; case DIALOG: dialog(getSelectedProxy()); break; case SHOW_THREADS: showThreads(); break; case SHOW_DEBUG: com.ibm.awb.misc.Debug.list(System.err); case SHOW_REFTABLE: com.ibm.aglets.RemoteAgletRef.showRefTable(System.err); break; case GET_AGLETS: getAglets(); break; case ACTIVATE: activateAglet(getSelectedProxy()); break; case KILL: AgletProxy p = getSelectedProxy(); if (p != null) { try { AgletRuntime.getAgletRuntime().killAglet(p); } catch (Exception ex) { ex.printStackTrace(); } } break; } } } class DialogOpener implements ActionListener { private int _type = 0; DialogOpener(int type) { _type = type; } public void actionPerformed(ActionEvent ev) { final AgletProxy p = getSelectedProxy(); AccessController.doPrivileged(new PrivilegedAction() { public Object run() { TahitiDialog d = null; switch (_type) { case CREATE: d = CreateAgletDialog.getInstance(MainWindow.this); d.popupAtCenterOfParent(); break; case RETRACT: d = RetractAgletDialog.getInstance(MainWindow.this); d.popupAtCenterOfParent(); break; case DISPOSE: AgletProxy pp[] = new AgletProxy[1]; pp[0] = p; d = new DisposeAgletDialog(MainWindow.this, pp); d.popupAtCenterOfParent(); break; case CLONE: d = new CloneAgletDialog(MainWindow.this, p); d.popupAtCenterOfParent(); break; case DISPATCH: d = new DispatchAgletDialog(MainWindow.this, p); d.popupAtCenterOfParent(); break; case DEACTIVATE: d = new DeactivateAgletDialog(MainWindow.this, p); d.popupAtCenterOfParent(); break; case AGLET_INFO: d = new PropertiesDialog(MainWindow.this, getSelectedProxy()); d.popupAtCenterOfParent(); break; case MEMORY_USAGE: d = MemoryUsageDialog.getInstance(MainWindow.this); d.popupAtCenterOfParent(); break; case SHOW_LOG: logWindow.pack(); if (logWindow.getLocation().x == 0 && logWindow.getLocation().y == 0) { Dimension dim = getToolkit().getScreenSize(); Dimension size = logWindow.getSize(); logWindow .setLocation((dim.width - size.width) / 2, (dim.height - size.height) / 2); } logWindow.show(); break; case SHOW_JAVACON: if (com.ibm.awb.launcher.Agletsd.console != null) { com.ibm.awb.launcher.Agletsd.console.show(); } break; case PREFERENCE1: d = GeneralConfigDialog.getInstance(MainWindow.this); d.popupAtCenterOfParent(); break; case PREFERENCE2: d = NetworkConfigDialog.getInstance(MainWindow.this); d.popupAtCenterOfParent(); break; case PREFERENCE3: d = SecurityConfigDialog.getInstance(MainWindow.this); d.popupAtCenterOfParent(); break; case PREFERENCE4: d = ServerPrefsDialog.getInstance(MainWindow.this); d.popupAtCenterOfParent(); break; case ABOUT_TAHITI: Resource res = Resource.getResourceFor("tahiti"); ResourceBundle bundle = null; bundle = ResourceBundle.getBundle("tahiti"); d = TahitiDialog .message(MainWindow.this, bundle.getString("title.about_tahiti"), res.getString("tahiti.version") + "\n" + bundle .getString("message.copyright")); d.popupAtCenterOfParent(); break; case ABOUT_AGLETS: res = Resource.getResourceFor("aglets"); String msg = "Aglets Version : " + res.getString("aglets.version") + "\n" + "Aglets API : " + Aglet.MAJOR_VERSION + "." + Aglet.MINOR_VERSION + "\n" + "Aglet Transfer Format : " + res.getString("aglets.stream.version") + "\n" + "\n" + res.getString("aglets.copyright"); d = TahitiDialog.message(MainWindow.this, "About Aglets", msg); d.popupAtCenterOfParent(); break; case EXIT: d = ShutdownDialog.getInstance(MainWindow.this); d.popupAtCenterOfParent(); break; } return null; } }); } } // ------------------------------------------------------------------- // -- Message line // Size of message line.-- // private int _messageLineSize = 60; // The message line. // private TextField _messageLine = new TextField(_messageLineSize); public class TahitiEventHandler implements Runnable { int _type; AgletProxy _proxy; long _time; String _remoteURL; String _codebase; String _name; boolean _reload; TahitiEventHandler(int type, AgletProxy p) { _type = type; _proxy = p; } TahitiEventHandler(AgletProxy p, long time) { _type = DEACTIVATE; _proxy = p; _time = time; } TahitiEventHandler(AgletProxy p, String dest) { _type = DISPATCH; _proxy = p; _remoteURL = dest; } TahitiEventHandler(String codebase, String name, boolean reload) { _type = CREATE; _codebase = codebase; _name = name; _reload = reload; } public void run() { com.ibm.awb.misc.Debug.start(); com.ibm.awb.misc.Debug.check(); try { perform(); } catch (Error ex) { ex.printStackTrace(); TahitiDialog .message(MainWindow.this, "Error", ex.getClass() .getName() + "\n" + ex.getMessage()) .popupAtCenterOfParent(); } catch (Exception ex) { ex.printStackTrace(); TahitiDialog .message(MainWindow.this, "Exception", ex.getClass() .getName() + "\n" + ex.getMessage()) .popupAtCenterOfParent(); } finally { com.ibm.awb.misc.Debug.end(); } } private void perform() throws Exception { switch (_type) { case CLONE: _proxy.clone(); break; case DISPOSE: _proxy.dispose(); break; case CREATE: if (!"".equals(_codebase)) { while (_codebase.toLowerCase().startsWith("http://")
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -