📄 visitingaglet.java
字号:
/*
* @(#)VisitingAglet.java
*
* 03L7246 (c) Copyright IBM Corp. 1996, 1998
*
* The program is provided "as is" without any warranty express or
* implied, including the warranty of non-infringement and the implied
* warranties of merchantibility and fitness for a particular purpose.
* IBM will not be liable for any damages suffered by you as a result
* of using the Program. In no event will IBM be liable for any
* special, indirect or consequential damages or lost profits even if
* IBM has been advised of the possibility of their occurrence. IBM
* will not be liable for any third party claims against you.
*/
package examples.itinerary;
import com.ibm.aglet.*;
import com.ibm.aglet.system.*;
import com.ibm.aglet.util.*;
import com.ibm.agletx.util.*;
import com.ibm.agletx.patterns.Meeting;
import java.util.Vector;
import java.util.Enumeration;
import java.net.URL;
import java.awt.*;
import java.awt.event.*;
/**
* <tt>VisitingAglet</tt> illustrates how to use MeetingsItinerary.
* Remote stationary aglets are created afterwhich a mobile aglet
* meet with them to dispose them.
*
* @version 1.00 $Date: 1999/10/27 05:16:39 $
* @author Yariv Aridor
*/
public class VisitingAglet extends Aglet {
MeetingsItinerary itinerary;
Vector addresses = new Vector();
public void onCreation(Object ini) {
itinerary=new MeetingsItinerary(this);
}
public boolean handleMessage(Message msg) {
if (msg.sameKind("dialog")) {
Frame f = new VisitingFrame(this);
f.pack();
f.setVisible(true);
return true;
}
return false;
}
public void start() {
try {
itinerary.clear();
createStationaryAglets(itinerary);
itinerary.startTrip();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void createStationaryAglets(MeetingsItinerary itin) throws Exception {
String addr = null;
for (int i=0; i<addresses.size(); i++) {
try {
Meeting m = new Meeting(addr=(String)addresses.elementAt(i));
// temoporary since can not create a remote aglet with
// a user defined initial object
AgletProxy p = getAgletContext().createAglet(null,
"examples.itinerary.StationaryAglet",
m);
p.dispatch(new URL(addr));
itin.addMeetingTask(new AgletTask(m));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
class VisitingFrame extends Frame implements WindowListener,ActionListener{
VisitingAglet aglet;
List list = new List(10, false);
AddressChooser address = new AddressChooser(15);
VisitingFrame(VisitingAglet a) {
aglet = a;
addWindowListener(this);
setLayout(new BorderLayout());
add("Center", list);
Panel p = new Panel();
p.setLayout(new FlowLayout());
p.add(address);
Button ad = new Button("Add");
Button remove = new Button("Remove");
ad.addActionListener(this);
remove.addActionListener(this);
p.add(ad);
p.add(remove);
add("North", p);
p = new Panel();
p.setLayout(new FlowLayout());
Button start = new Button("Start!");
start.addActionListener(this);
p.add(start);
add("South", p);
update();
}
/**
* Handles the action event
* @param ae the event to be handled
*/
public void actionPerformed(ActionEvent ae){
if("Add".equals(ae.getActionCommand())){
aglet.addresses.addElement(address.getAddress());
update();
}else if("Remove".equals(ae.getActionCommand())){
int i = list.getSelectedIndex();
if (i>=0) {
aglet.addresses.removeElementAt(i);
list.delItem(i);
}
}else if("Start!".equals(ae.getActionCommand())){
aglet.start();
}
}
/**
* Handles the window event
* @param we the event to be handled
*/
public void windowClosing(WindowEvent we){
dispose();
}
public void windowOpened(WindowEvent we){
}
public void windowIconified(WindowEvent we){
}
public void windowDeiconified(WindowEvent we){
}
public void windowClosed(WindowEvent we){
}
public void windowActivated(WindowEvent we){
}
public void windowDeactivated(WindowEvent we){
}
private void update() {
list.removeAll();
Vector addrs = aglet.addresses;
int size = addrs.size();
for(int i = 0; i< size; i++) {
list.addItem((String)addrs.elementAt(i));
}
}
}
class AgletTask extends MeetingTask {
public AgletTask (Meeting meeting) {
super(meeting);
}
public void execute (SeqItinerary itin, Enumeration agletIDs) {
String list = "";
String id = "";
for (;agletIDs.hasMoreElements();) {
list += (AgletID)(agletIDs.nextElement()) + " ";
}
try {
id = itin.getOwnerAglet().getAgletID().toString();
} catch (Exception ex) {
//
}
System.out.println(">>VisitingAglet: [" + id + "] I met with [" + list + "]");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -