📄 mainwindow.java
字号:
&& _codebase.endsWith("/")) { _codebase = _codebase.substring(0, _codebase.length() - 1); } } URL url = !_codebase.equals("") ? new URL(_codebase) : null; if (_reload) { Tahiti.CONTEXT.clearCache(null); } Tahiti.CONTEXT.createAglet(url, _name, null); // itrptWin.waitForDisplay(); // itrptWin.dispose(); // update list break; case DISPATCH: // String key = _remoteURL + " " + // _proxy.getAgletClassName() + " " + // (new Date()).toString().substring(0, 20).trim(); // String aid_str = _proxy.getAgletID().toString(); _proxy.dispatch(new URL(_remoteURL)); // itrptWin.waitForDisplay(); // itrptWin.dispose(); break; case RETRACT: AgletInfo info = _proxy.getAgletInfo(); // System.out.println(info); Tahiti.CONTEXT.retractAglet(new URL(_proxy.getAddress()), info.getAgletID()); // itrptWin.waitForDisplay(); // itrptWin.dispose(); break; case DEACTIVATE: _proxy.deactivate(_time * 1000); break; case ACTIVATE: if (_proxy != null && _proxy.isValid() && _proxy.isActive() == false) { _proxy.activate(); } break; default: } } } /* * Constructs the instance of the main window for the * Tahiti Aglet viewer. */ MainWindow(Tahiti tahiti) { _tahiti = tahiti; Util.setFont(this); Util.setBackground(this); Util.setFixedFont(_agletList); TahitiItem.init(); _agletList.setBackground(Color.white); _agletList.setForeground(Color.black); // Makes the menu bar. setMenuBar(makeMenuBar()); // Creates the panels. GridBagLayout grid = new GridBagLayout(); GridBagConstraints cns = new GridBagConstraints(); setLayout(grid); cns.gridwidth = GridBagConstraints.REMAINDER; cns.fill = GridBagConstraints.NONE; cns.anchor = GridBagConstraints.WEST; cns.weightx = 1.0; cns.weighty = 0.0; Panel p = makeButtonPanel(); grid.setConstraints(p, cns); add(p); cns.weighty = 1.0; cns.fill = GridBagConstraints.BOTH; cns.anchor = GridBagConstraints.CENTER; grid.setConstraints(_agletList, cns); addListeners(); add(_agletList); Resource tahiti_res = Resource.getResourceFor("tahiti"); shrink = tahiti_res.getBoolean("tahiti.window.shrinked", false); if (shrink) { _agletList.setVisible(false); } cns.gridwidth = GridBagConstraints.REMAINDER; cns.weightx = 1.0; cns.weighty = 0.0; cns.fill = GridBagConstraints.HORIZONTAL; grid.setConstraints(_messageLine, cns); add(_messageLine); _messageLine.setText("Tahiti - The Aglet Viewer is Running..."); _messageLine.setBackground(Color.lightGray); _messageLine.setEditable(false); updateGUIState(); AgletRuntime runtime = AgletRuntime.getAgletRuntime(); String hosting = runtime.getServerAddress(); String ownerName = runtime.getOwnerName(); if (ownerName == null) { ownerName = "NO USER"; } Resource aglets_res = Resource.getResourceFor("aglets"); boolean bsecure = aglets_res.getBoolean("aglets.secure", true); Resource atp_res = Resource.getResourceFor("atp"); boolean brunning = true; if (atp_res != null) { brunning = atp_res.getBoolean("atp.server", false); } setTitle("Tahiti: The Aglet Viewer [" + hosting + " (" + ownerName + ")" + (brunning ? "" : " : NOT RUNNING") + " ]" + (bsecure ? "" : " - << UNSECURE MODE >>")); } public void actionPerformed(ActionEvent ev) { int selected[] = _agletList.getSelectedIndexes(); for (int i = 0; i < selected.length; i++) { AgletProxy p = ((TahitiItem)_itemList.elementAt(selected[i])) .getAgletProxy(); if (p.isState(Aglet.INACTIVE)) { activateAglet(p); } else if (p.isState(Aglet.ACTIVE)) { dialog(p); } } } public void activateAglet(AgletProxy p) { new Thread(new TahitiEventHandler(ACTIVATE, p)).start(); } private void addListeners() { addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { TahitiDialog dialog = ShutdownDialog.getInstance(MainWindow.this); dialog.popupAtCenterOfParent(); } }); _agletList.addItemListener(this); _agletList.addActionListener(this); } // Clears the message line. // private void clearMessage() { _messageLine.setText(""); } public void cloneAglet(AgletProxy p) { new Thread(new TahitiEventHandler(CLONE, p)).start(); } public void createAglet(String codebase, String name, boolean reload) { new Thread(new TahitiEventHandler(codebase, name, reload)).start(); } public void deactivateAglet(AgletProxy p, long time) { new Thread(new TahitiEventHandler(p, time)).start(); } void dialog(AgletProxy proxy) { try { proxy.sendAsyncMessage(new Message("dialog")); } catch (InvalidAgletException ex) { setMessage(ex.getMessage()); } } public void dispatchAglet(AgletProxy p, String dest) { new Thread(new TahitiEventHandler(p, dest)).start(); } public void disposeAglet(AgletProxy p) { new Thread(new TahitiEventHandler(DISPOSE, p)).start(); } /* * Retract aglets from an Aglet box */ void getAglets() { /* * try { * AgletBox.update(Tahiti.CONTEXT); * } catch (Exception e) { * setMessage("AgletBox: " + e.getMessage()); * } */ } // Returns an Aglet's item text line for the Aglet list. // /* * private String getItemText(AgletProxy proxy) { * StringBuffer buffer = new StringBuffer(); * try { * AgletInfo info = proxy.getAgletInfo(); * if (proxy.isValid() == false) { * return "InvalidAglet"; * } * if (proxy.isActive() == false) { * buffer.append("[deactivated]"); * } * buffer.append(new Date(info.getCreationTime())); * buffer.append(" " + info.getAgletClassName() + ' '); * String s = (String) text.get(proxy); * buffer.append(" " + (s == null ? " " : s)); * } catch (InvalidAgletException ex) { * return "InvalidAglet"; * } catch (RuntimeException ex) { * ex.printStackTrace(); * } finally { * } * return buffer.toString(); * } */ private String getItemText(TahitiItem tahitiItem) { StringBuffer buffer = new StringBuffer(); buffer.append(tahitiItem.getText()); AgletProxy proxy = tahitiItem.getAgletProxy(); String s = (String)text.get(proxy); buffer.append(" " + (s == null ? " " : s)); return buffer.toString(); } public Dimension getPreferredSize() { Resource res = Resource.getResourceFor("tahiti"); if (!shrink) { return new Dimension(res.getInteger("tahiti.window.width", 545), res.getInteger("tahiti.window.height", 350)); } else { return new Dimension(res.getInteger("tahiti.window.s_width", 545), res.getInteger("tahiti.window.s_height", 350)); } } AgletProxy[] getSelectedProxies() { int selected[] = _agletList.getSelectedIndexes(); AgletProxy p[] = new AgletProxy[selected.length]; for (int i = 0; i < p.length; i++) { p[i] = ((TahitiItem)_itemList.elementAt(selected[i])) .getAgletProxy(); } return p; /* * if (selected != -1) * return (AgletProxy)_proxyList.elementAt(selected); * else * return null; */ } AgletProxy getSelectedProxy() { int selected = _agletList.getSelectedIndex(); if (selected != -1) { return ((TahitiItem)_itemList.elementAt(selected)) .getAgletProxy(); } else { return null; } } void hideButtons() { _dialogButton.setVisible(false); _infoButton.setVisible(false); _disposeButton.setVisible(false); _cloneButton.setVisible(false); _dispatchButton.setVisible(false); } /* * synchronized void updateViewItems() { * for (int i = 0; i < _itemList.size(); i++) { * TahitiItem tahitiItem = (TahitiItem)_itemList.elementAt(i); * _agletList.replaceItem(getItemText(tahitiItem), i); * } * } */ synchronized void insertProxyToList(AgletProxy proxy) { if (shrink) { return; } TahitiItem tahitiItem = new TahitiItem(proxy); int index = -1; for (int i = 0; i < _itemList.size(); i++) { if (tahitiItem.compareTo((TahitiItem)_itemList.elementAt(i)) <= 0) { index = i; break; } } if (index >= 0) { _itemList.insertElementAt(tahitiItem, index); _agletList.add(getItemText(tahitiItem), index); } else { _itemList.addElement(tahitiItem); _agletList.add(getItemText(tahitiItem)); } // updateGUIState(); } public void itemStateChanged(ItemEvent ev) { updateGUIState(); if (TahitiItem.isNeedUpdate()) { updateProxyList(); } } // Builds the button panel. // @return the button panel. // private Panel makeButtonPanel() { _buttonPanel = new Panel(); _buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); // ADD LISTENER Button b = new Button("><"); b.addActionListener(new EventIssuer(SHRINK)); _buttonPanel.add(b); b = new Button(bundle.getString("button.create")); b.addActionListener(new DialogOpener(CREATE)); _buttonPanel.add(b); _dialogButton.setLabel(bundle.getString("button.dialog")); _dialogButton.addActionListener(new EventIssuer(DIALOG)); _buttonPanel.add(_dialogButton); _infoButton.setLabel(bundle.getString("button.info")); _infoButton.addActionListener(new DialogOpener(AGLET_INFO)); _buttonPanel.add(_infoButton); _disposeButton.setLabel(bundle.getString("button.dispose")); _disposeButton.addActionListener(new DialogOpener(DISPOSE)); _buttonPanel.add(_disposeButton); _cloneButton.setLabel(bundle.getString("button.clone")); _cloneButton.addActionListener(new DialogOpener(CLONE)); _buttonPanel.add(_cloneButton); _dispatchButton.setLabel(bundle.getString("button.dispatch")); _dispatchButton.addActionListener(new DialogOpener(DISPATCH)); _buttonPanel.add(_dispatchButton); b = new Button(bundle.getString("button.retract")); b.addActionListener(new DialogOpener(RETRACT)); _buttonPanel.add(b); return _buttonPanel; } // ------------------------------------------------------------------- // -- Menu bar and panel methods // Builds the menu bar. // private MenuBar makeMenuBar() { MenuBar menubar = new MenuBar(); // // Aglet Menu // Menu menu = new Menu(bundle.getString("menu.aglet")); MenuItem item = new MenuItem(bundle.getString("menuitem.create")); item.addActionListener(new DialogOpener(CREATE)); menu.add(item); _dialogMenuItem.setLabel(bundle.getString("menuitem.dialog")); _dialogMenuItem.addActionListener(new EventIssuer(DIALOG)); menu.add(_dialogMenuItem); _disposeMenuItem.setLabel(bundle.getString("menuitem.dispose")); _disposeMenuItem.addActionListener(new DialogOpener(DISPOSE)); menu.add(_disposeMenuItem); _cloneMenuItem.setLabel(bundle.getString("menuitem.clone")); _cloneMenuItem.addActionListener(new DialogOpener(CLONE)); menu.add(_cloneMenuItem); _infoMenuItem.setLabel(bundle.getString("menuitem.info")); _infoMenuItem.addActionListener(new DialogOpener(AGLET_INFO)); menu.add(_infoMenuItem); menu.addSeparator(); _killMenuItem.setLabel(bundle.getString("menuitem.kill")); _killMenuItem.addActionListener(new EventIssuer(KILL)); menu.add(_killMenuItem); menu.addSeparator(); item = new MenuItem(bundle.getString("menuitem.exit")); item.addActionListener(new DialogOpener(EXIT)); menu.add(item); menubar.add(menu); // // Mobility menu. // menu = new Menu(bundle.getString("menu.mobility")); _dispatchMenuItem.setLabel(bundle.getString("menuitem.dispatch")); _dispatchMenuItem.addActionListener(new DialogOpener(DISPATCH)); menu.add(_dispatchMenuItem); item = new MenuItem(bundle.getString("menuitem.retract")); item.addActionListener(new DialogOpener(RETRACT)); menu.add(item); _deactivateMenuItem.setLabel(bundle.getString("menuitem.deactivate")); _deactivateMenuItem.addActionListener(new DialogOpener(DEACTIVATE)); menu.add(_deactivateMenuItem); _activateMenuItem.setLabel(bundle.getString("menuitem.activate")); _activateMenuItem.addActionListener(new EventIssuer(ACTIVATE)); menu.add(_activateMenuItem);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -